/* * DeviceHandler.cpp * * Last Modify: 20/09/2021 * Author: Marco Modè * */ #include #include #include #include #include #include #include //#include ArduinoDH::ArduinoDH(object_id_t objectId, object_id_t comIF, CookieIF *cookie) : DeviceHandlerBase(objectId, comIF, cookie) { mode = _MODE_START_UP; } ArduinoDH::~ArduinoDH() {} void ArduinoDH::doStartUp() { std::cout<<"Arduino device -> Switching-ON"< Switching-OFF"< id {{*foundId, len}}; //*foundId = id; // check validity if (len == *foundLen){ // start character: '[' if (*start == 91 ){ // fourth character: 'S' (First variable is the char [ChStr]) if (*(start + 3) == 83) { // first channel must be channel 1 (SPCChNumber: 1) if (*(start + 9) == 1) { return APERIODIC_REPLY; } else { return DeviceHandlerIF::LENGTH_MISSMATCH; } } else { return DeviceHandlerIF::LENGTH_MISSMATCH; } } else { return DeviceHandlerIF::LENGTH_MISSMATCH; } } else { return IGNORE_REPLY_DATA; } } ReturnValue_t ArduinoDH::interpretDeviceReply(DeviceCommandId_t id, const uint8_t *packet) { DataSet ArduinoDataSet; //sif::debug<<"DEBUG_DH: interprete for reply"< "); } else if (k == 1 || k == 4 || k == 7 || k == 10 || k == 13) { printf("\n\nY ==> "); } else { printf("\n\nZ ==> "); } printf("\nStart: %7s", Ornt_ch.start_string); printf("\nTyp: %u", Ornt_ch.Typ); printf("\nSPCChNumber: %u", Ornt_ch.SPCChNumber); printf("\nValue_Cnt: %u", Ornt_ch.Value_Cnt); for (int i = 0; i < 9; i++) { printf("\nMeasurement number: %d", i); printf("\nValue: %f", Ornt_ch.Value[i]); printf("\nTimestamp: %u", Ornt_ch.Timestamp[i]); } printf("\nEnd: %7s", Ornt_ch.end_string); vecOrnt.emplace_back(Ornt_ch); }//*/ std::cout << "\n\nEnd reading data.\n" << std::endl; // The data are here written to the data pool where they would be available to be used for other objects /*PoolVector TempValueVec(datapool::Temperature_value, &ArduinoDataSet, PoolVariableIF::VAR_WRITE); for (int i = 0; i < 36; i++) { memcpy(&TempValueVec[i], &vecTemp[i].temperature, 4); } ArduinoDataSet.commit(PoolVariableIF::VALID);*/ /*PoolVector TempTimeVec(datapool::Temperature_Timestamp, &ArduinoDataSet, PoolVariableIF::VAR_WRITE); for (int i = 0; i < 36; i++) { memcpy(&TempTimeVec[i], &vecTemp[i].Timestamp, 4); } ArduinoDataSet.commit(PoolVariableIF::VALID); sif::debug<<"\nDEBUG_DHi: End of copy to datapool"< EnvValueVec(datapool::Environmental_value, &ArduinoDataSet, PoolVariableIF::VAR_WRITE); for (int j = 0; j < 9; j++) { memcpy(&EnvValueVec[j], &vecEnv[j].Value, 4); } ArduinoDataSet.commit(PoolVariableIF::VALID); PoolVector EnvTimeVec(datapool::Environmental_Timestamp, &ArduinoDataSet, PoolVariableIF::VAR_WRITE); for (int j = 0; j < 9; j++) { memcpy(&EnvTimeVec[j], &vecEnv[j].Timestamp, 4); } ArduinoDataSet.commit(PoolVariableIF::VALID); sif::debug<<"\nDEBUG_DHj: End of copy to datapool"< AccValueVec(datapool::Accelerometer_value, &ArduinoDataSet, PoolVariableIF::VAR_WRITE); for (int k = 0; k < 15; k++) { memcpy(&AccValueVec[k], &vecOrnt[k].Value, 36); } ArduinoDataSet.commit(PoolVariableIF::VALID); sif::debug<<"\nDEBUG_DHk1: End of copy to datapool"< AccTimeVec(datapool::Accelerometer_Timestamp, &ArduinoDataSet, PoolVariableIF::VAR_WRITE); for (int k = 0; k < 15; k++) { memcpy(&AccTimeVec[k], &vecOrnt[k].Timestamp, 36); } ArduinoDataSet.commit(PoolVariableIF::VALID); sif::debug<<"\nDEBUG_DHk2: End of copy to datapool"<