|
|
|
@ -43,25 +43,25 @@ ReturnValue_t SusHandler::buildNormalDeviceCommand(DeviceCommandId_t *id) {
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
case (ComStates::WRITE_SETUP): {
|
|
|
|
|
*id = SUS::WRITE_SETUP;
|
|
|
|
|
*id = susMax1227::WRITE_SETUP;
|
|
|
|
|
return buildCommandFromCommand(*id, nullptr, 0);
|
|
|
|
|
}
|
|
|
|
|
case (ComStates::EXT_CLOCKED_CONVERSIONS): {
|
|
|
|
|
*id = SUS::READ_EXT_TIMED_CONVERSIONS;
|
|
|
|
|
*id = susMax1227::READ_EXT_TIMED_CONVERSIONS;
|
|
|
|
|
return buildCommandFromCommand(*id, nullptr, 0);
|
|
|
|
|
}
|
|
|
|
|
case (ComStates::START_INT_CLOCKED_CONVERSIONS): {
|
|
|
|
|
*id = SUS::START_INT_TIMED_CONVERSIONS;
|
|
|
|
|
*id = susMax1227::START_INT_TIMED_CONVERSIONS;
|
|
|
|
|
comState = ComStates::READ_INT_CLOCKED_CONVERSIONS;
|
|
|
|
|
return buildCommandFromCommand(*id, nullptr, 0);
|
|
|
|
|
}
|
|
|
|
|
case (ComStates::READ_INT_CLOCKED_CONVERSIONS): {
|
|
|
|
|
*id = SUS::READ_INT_TIMED_CONVERSIONS;
|
|
|
|
|
*id = susMax1227::READ_INT_TIMED_CONVERSIONS;
|
|
|
|
|
comState = ComStates::START_INT_CLOCKED_CONVERSIONS;
|
|
|
|
|
return buildCommandFromCommand(*id, nullptr, 0);
|
|
|
|
|
}
|
|
|
|
|
case (ComStates::EXT_CLOCKED_TEMP): {
|
|
|
|
|
*id = SUS::READ_EXT_TIMED_TEMPS;
|
|
|
|
|
*id = susMax1227::READ_EXT_TIMED_TEMPS;
|
|
|
|
|
return buildCommandFromCommand(*id, nullptr, 0);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
@ -70,7 +70,7 @@ ReturnValue_t SusHandler::buildNormalDeviceCommand(DeviceCommandId_t *id) {
|
|
|
|
|
|
|
|
|
|
ReturnValue_t SusHandler::buildTransitionDeviceCommand(DeviceCommandId_t *id) {
|
|
|
|
|
if (comState == ComStates::WRITE_SETUP) {
|
|
|
|
|
*id = SUS::WRITE_SETUP;
|
|
|
|
|
*id = susMax1227::WRITE_SETUP;
|
|
|
|
|
return buildCommandFromCommand(*id, nullptr, 0);
|
|
|
|
|
}
|
|
|
|
|
return NOTHING_TO_SEND;
|
|
|
|
@ -81,32 +81,32 @@ ReturnValue_t SusHandler::buildCommandFromCommand(DeviceCommandId_t deviceComman
|
|
|
|
|
size_t commandDataLen) {
|
|
|
|
|
using namespace max1227;
|
|
|
|
|
switch (deviceCommand) {
|
|
|
|
|
case (SUS::WRITE_SETUP): {
|
|
|
|
|
case (susMax1227::WRITE_SETUP): {
|
|
|
|
|
if (clkMode == ClkModes::INT_CLOCKED) {
|
|
|
|
|
cmdBuffer[0] = SUS::SETUP_INT_CLOKED;
|
|
|
|
|
cmdBuffer[0] = susMax1227::SETUP_INT_CLOKED;
|
|
|
|
|
} else {
|
|
|
|
|
cmdBuffer[0] = SUS::SETUP_EXT_CLOCKED;
|
|
|
|
|
cmdBuffer[0] = susMax1227::SETUP_EXT_CLOCKED;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
rawPacket = cmdBuffer;
|
|
|
|
|
rawPacketLen = 1;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
case (SUS::START_INT_TIMED_CONVERSIONS): {
|
|
|
|
|
case (susMax1227::START_INT_TIMED_CONVERSIONS): {
|
|
|
|
|
std::memset(cmdBuffer, 0, sizeof(cmdBuffer));
|
|
|
|
|
cmdBuffer[0] = max1227::buildResetByte(true);
|
|
|
|
|
cmdBuffer[1] = SUS::CONVERSION;
|
|
|
|
|
cmdBuffer[1] = susMax1227::CONVERSION;
|
|
|
|
|
rawPacket = cmdBuffer;
|
|
|
|
|
rawPacketLen = 2;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
case (SUS::READ_INT_TIMED_CONVERSIONS): {
|
|
|
|
|
case (susMax1227::READ_INT_TIMED_CONVERSIONS): {
|
|
|
|
|
std::memset(cmdBuffer, 0, sizeof(cmdBuffer));
|
|
|
|
|
rawPacket = cmdBuffer;
|
|
|
|
|
rawPacketLen = SUS::SIZE_READ_INT_CONVERSIONS;
|
|
|
|
|
rawPacketLen = susMax1227::SIZE_READ_INT_CONVERSIONS;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
case (SUS::READ_EXT_TIMED_CONVERSIONS): {
|
|
|
|
|
case (susMax1227::READ_EXT_TIMED_CONVERSIONS): {
|
|
|
|
|
std::memset(cmdBuffer, 0, sizeof(cmdBuffer));
|
|
|
|
|
rawPacket = cmdBuffer;
|
|
|
|
|
for (uint8_t idx = 0; idx < 6; idx++) {
|
|
|
|
@ -114,10 +114,10 @@ ReturnValue_t SusHandler::buildCommandFromCommand(DeviceCommandId_t deviceComman
|
|
|
|
|
cmdBuffer[idx * 2 + 1] = 0;
|
|
|
|
|
}
|
|
|
|
|
cmdBuffer[12] = 0x00;
|
|
|
|
|
rawPacketLen = SUS::SIZE_READ_EXT_CONVERSIONS;
|
|
|
|
|
rawPacketLen = susMax1227::SIZE_READ_EXT_CONVERSIONS;
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
case (SUS::READ_EXT_TIMED_TEMPS): {
|
|
|
|
|
case (susMax1227::READ_EXT_TIMED_TEMPS): {
|
|
|
|
|
cmdBuffer[0] = buildConvByte(ScanModes::N_ONCE, 0, true);
|
|
|
|
|
std::memset(cmdBuffer + 1, 0, 24);
|
|
|
|
|
rawPacket = cmdBuffer;
|
|
|
|
@ -131,13 +131,13 @@ ReturnValue_t SusHandler::buildCommandFromCommand(DeviceCommandId_t deviceComman
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
void SusHandler::fillCommandAndReplyMap() {
|
|
|
|
|
insertInCommandAndReplyMap(SUS::WRITE_SETUP, 1);
|
|
|
|
|
insertInCommandAndReplyMap(SUS::START_INT_TIMED_CONVERSIONS, 1);
|
|
|
|
|
insertInCommandAndReplyMap(SUS::READ_INT_TIMED_CONVERSIONS, 1, &dataset,
|
|
|
|
|
SUS::SIZE_READ_INT_CONVERSIONS);
|
|
|
|
|
insertInCommandAndReplyMap(SUS::READ_EXT_TIMED_CONVERSIONS, 1, &dataset,
|
|
|
|
|
SUS::SIZE_READ_EXT_CONVERSIONS);
|
|
|
|
|
insertInCommandAndReplyMap(SUS::READ_EXT_TIMED_TEMPS, 1);
|
|
|
|
|
insertInCommandAndReplyMap(susMax1227::WRITE_SETUP, 1);
|
|
|
|
|
insertInCommandAndReplyMap(susMax1227::START_INT_TIMED_CONVERSIONS, 1);
|
|
|
|
|
insertInCommandAndReplyMap(susMax1227::READ_INT_TIMED_CONVERSIONS, 1, &dataset,
|
|
|
|
|
susMax1227::SIZE_READ_INT_CONVERSIONS);
|
|
|
|
|
insertInCommandAndReplyMap(susMax1227::READ_EXT_TIMED_CONVERSIONS, 1, &dataset,
|
|
|
|
|
susMax1227::SIZE_READ_EXT_CONVERSIONS);
|
|
|
|
|
insertInCommandAndReplyMap(susMax1227::READ_EXT_TIMED_TEMPS, 1);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
ReturnValue_t SusHandler::scanForReply(const uint8_t *start, size_t remainingSize,
|
|
|
|
@ -149,16 +149,16 @@ ReturnValue_t SusHandler::scanForReply(const uint8_t *start, size_t remainingSiz
|
|
|
|
|
|
|
|
|
|
ReturnValue_t SusHandler::interpretDeviceReply(DeviceCommandId_t id, const uint8_t *packet) {
|
|
|
|
|
switch (id) {
|
|
|
|
|
case SUS::WRITE_SETUP: {
|
|
|
|
|
case susMax1227::WRITE_SETUP: {
|
|
|
|
|
if (getMode() == _MODE_START_UP) {
|
|
|
|
|
commandExecuted = true;
|
|
|
|
|
}
|
|
|
|
|
return returnvalue::OK;
|
|
|
|
|
}
|
|
|
|
|
case SUS::START_INT_TIMED_CONVERSIONS: {
|
|
|
|
|
case susMax1227::START_INT_TIMED_CONVERSIONS: {
|
|
|
|
|
return returnvalue::OK;
|
|
|
|
|
}
|
|
|
|
|
case SUS::READ_INT_TIMED_CONVERSIONS: {
|
|
|
|
|
case susMax1227::READ_INT_TIMED_CONVERSIONS: {
|
|
|
|
|
PoolReadGuard readSet(&dataset);
|
|
|
|
|
dataset.temperatureCelcius = max1227::getTemperature(((packet[0] & 0x0f) << 8) | packet[1]);
|
|
|
|
|
for (uint8_t idx = 0; idx < 6; idx++) {
|
|
|
|
@ -168,7 +168,7 @@ ReturnValue_t SusHandler::interpretDeviceReply(DeviceCommandId_t id, const uint8
|
|
|
|
|
printDataset();
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
case (SUS::READ_EXT_TIMED_CONVERSIONS): {
|
|
|
|
|
case (susMax1227::READ_EXT_TIMED_CONVERSIONS): {
|
|
|
|
|
PoolReadGuard readSet(&dataset);
|
|
|
|
|
for (uint8_t idx = 0; idx < 6; idx++) {
|
|
|
|
|
dataset.channels[idx] = packet[idx * 2 + 1] << 8 | packet[idx * 2 + 2];
|
|
|
|
@ -181,7 +181,7 @@ ReturnValue_t SusHandler::interpretDeviceReply(DeviceCommandId_t id, const uint8
|
|
|
|
|
printDataset();
|
|
|
|
|
break;
|
|
|
|
|
}
|
|
|
|
|
case (SUS::READ_EXT_TIMED_TEMPS): {
|
|
|
|
|
case (susMax1227::READ_EXT_TIMED_TEMPS): {
|
|
|
|
|
PoolReadGuard readSet(&dataset);
|
|
|
|
|
dataset.temperatureCelcius = max1227::getTemperature(((packet[23] & 0x0f) << 8) | packet[24]);
|
|
|
|
|
dataset.temperatureCelcius.setValid(true);
|
|
|
|
@ -200,8 +200,8 @@ uint32_t SusHandler::getTransitionDelayMs(Mode_t modeFrom, Mode_t modeTo) { retu
|
|
|
|
|
|
|
|
|
|
ReturnValue_t SusHandler::initializeLocalDataPool(localpool::DataPool &localDataPoolMap,
|
|
|
|
|
LocalDataPoolManager &poolManager) {
|
|
|
|
|
localDataPoolMap.emplace(SUS::TEMPERATURE_C, &tempC);
|
|
|
|
|
localDataPoolMap.emplace(SUS::CHANNEL_VEC, &channelVec);
|
|
|
|
|
localDataPoolMap.emplace(susMax1227::TEMPERATURE_C, &tempC);
|
|
|
|
|
localDataPoolMap.emplace(susMax1227::CHANNEL_VEC, &channelVec);
|
|
|
|
|
poolManager.subscribeForDiagPeriodicPacket(
|
|
|
|
|
subdp::DiagnosticsHkPeriodicParams(dataset.getSid(), false, 5.0));
|
|
|
|
|
return returnvalue::OK;
|
|
|
|
|