Merge branch 'mueller/master' of https://egit.irs.uni-stuttgart.de/eive/eive-obsw into mueller/master
This commit is contained in:
@ -6,9 +6,9 @@
|
||||
|
||||
#include "OBSWConfig.h"
|
||||
|
||||
SusHandler::SusHandler(object_id_t objectId, object_id_t comIF, CookieIF *comCookie,
|
||||
SusHandler::SusHandler(object_id_t objectId, uint8_t susIdx, object_id_t comIF, CookieIF *comCookie,
|
||||
LinuxLibgpioIF *gpioComIF, gpioId_t chipSelectId)
|
||||
: DeviceHandlerBase(objectId, comIF, comCookie), divider(5), dataset(this) {}
|
||||
: DeviceHandlerBase(objectId, comIF, comCookie), divider(5), dataset(this), susIdx(susIdx) {}
|
||||
|
||||
SusHandler::~SusHandler() {}
|
||||
|
||||
@ -102,7 +102,8 @@ ReturnValue_t SusHandler::buildCommandFromCommand(DeviceCommandId_t deviceComman
|
||||
}
|
||||
case (SUS::START_INT_TIMED_CONVERSIONS): {
|
||||
std::memset(cmdBuffer, 0, sizeof(cmdBuffer));
|
||||
cmdBuffer[0] = SUS::CONVERSION;
|
||||
cmdBuffer[0] = max1227::buildResetByte(true);
|
||||
cmdBuffer[1] = SUS::CONVERSION;
|
||||
rawPacket = cmdBuffer;
|
||||
rawPacketLen = 2;
|
||||
break;
|
||||
@ -116,13 +117,12 @@ ReturnValue_t SusHandler::buildCommandFromCommand(DeviceCommandId_t deviceComman
|
||||
case (SUS::READ_EXT_TIMED_CONVERSIONS): {
|
||||
std::memset(cmdBuffer, 0, sizeof(cmdBuffer));
|
||||
rawPacket = cmdBuffer;
|
||||
for (uint8_t idx = 0; idx < 1; idx++) {
|
||||
for (uint8_t idx = 0; idx < 6; idx++) {
|
||||
cmdBuffer[idx * 2] = buildConvByte(ScanModes::N_ONCE, idx, false);
|
||||
cmdBuffer[idx * 2 + 1] = 0;
|
||||
}
|
||||
cmdBuffer[2] = 0x00;
|
||||
// cmdBuffer[12] = 0x00;
|
||||
rawPacketLen = 3; // SUS::SIZE_READ_EXT_CONVERSIONS;
|
||||
cmdBuffer[12] = 0x00;
|
||||
rawPacketLen = SUS::SIZE_READ_EXT_CONVERSIONS;
|
||||
break;
|
||||
}
|
||||
case (SUS::READ_EXT_TIMED_TEMPS): {
|
||||
@ -168,7 +168,8 @@ ReturnValue_t SusHandler::interpretDeviceReply(DeviceCommandId_t id, const uint8
|
||||
}
|
||||
case SUS::READ_INT_TIMED_CONVERSIONS: {
|
||||
PoolReadGuard readSet(&dataset);
|
||||
dataset.temperatureCelcius = (*(packet) << 8 | *(packet + 1)) * 0.125;
|
||||
|
||||
dataset.temperatureCelcius = static_cast<int16_t>((packet[0] << 8) | packet[1]) * 0.125;
|
||||
dataset.ain0 = (*(packet + 2) << 8 | *(packet + 3));
|
||||
dataset.ain1 = (*(packet + 4) << 8 | *(packet + 5));
|
||||
dataset.ain2 = (*(packet + 6) << 8 | *(packet + 7));
|
||||
@ -195,7 +196,8 @@ ReturnValue_t SusHandler::interpretDeviceReply(DeviceCommandId_t id, const uint8
|
||||
}
|
||||
case (SUS::READ_EXT_TIMED_TEMPS): {
|
||||
PoolReadGuard readSet(&dataset);
|
||||
dataset.temperatureCelcius = (packet[23] << 8) | packet[24];
|
||||
dataset.temperatureCelcius =
|
||||
static_cast<int16_t>(((packet[23] & 0x0f) << 8) | packet[24]) * 0.125;
|
||||
comState = ComStates::EXT_CLOCKED_CONVERSIONS;
|
||||
break;
|
||||
}
|
||||
@ -226,14 +228,15 @@ void SusHandler::setToGoToNormalMode(bool enable) { this->goToNormalModeImmediat
|
||||
void SusHandler::printDataset() {
|
||||
#if OBSW_VERBOSE_LEVEL >= 1 && OBSW_DEBUG_SUS == 1
|
||||
if (divider.checkAndIncrement()) {
|
||||
sif::info << "SUS Object ID 0x" << std::hex << this->getObjectId() << ":" << std::endl;
|
||||
sif::info << "Temperature: " << dataset.temperatureCelcius << " C" << std::endl;
|
||||
sif::info << "AIN0: " << std::dec << dataset.ain0 << std::endl;
|
||||
sif::info << "AIN1: " << std::dec << dataset.ain1 << std::endl;
|
||||
sif::info << "AIN2: " << std::dec << dataset.ain2 << std::endl;
|
||||
sif::info << "AIN3: " << std::dec << dataset.ain3 << std::endl;
|
||||
sif::info << "AIN4: " << std::dec << dataset.ain4 << std::endl;
|
||||
sif::info << "AIN5: " << std::dec << dataset.ain5 << std::endl;
|
||||
sif::info << "SUS " << std::setw(2) << std::dec << static_cast<int>(susIdx) << " ID " << std::hex
|
||||
<< "0x" << this->getObjectId() << " [" << std::hex << std::setw(3);
|
||||
sif::info << dataset.ain0 << ",";
|
||||
sif::info << dataset.ain1 << ",";
|
||||
sif::info << dataset.ain2 << ",";
|
||||
sif::info << dataset.ain3 << ",";
|
||||
sif::info << dataset.ain4 << ",";
|
||||
sif::info << dataset.ain5 << "] ";
|
||||
sif::info << "T[C] " << dataset.temperatureCelcius << " C" << std::endl;
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
@ -28,7 +28,7 @@ class SusHandler : public DeviceHandlerBase {
|
||||
|
||||
static const uint8_t FIRST_WRITE = 7;
|
||||
|
||||
SusHandler(object_id_t objectId, object_id_t comIF, CookieIF* comCookie,
|
||||
SusHandler(object_id_t objectId, uint8_t susIdx, object_id_t comIF, CookieIF* comCookie,
|
||||
LinuxLibgpioIF* gpioComIF, gpioId_t chipSelectId);
|
||||
virtual ~SusHandler();
|
||||
|
||||
@ -77,8 +77,9 @@ class SusHandler : public DeviceHandlerBase {
|
||||
SUS::SusDataset dataset;
|
||||
// Read temperature in each alternating communication step when using
|
||||
// externally clocked mode
|
||||
ClkModes clkMode = ClkModes::EXT_CLOCKED;
|
||||
ClkModes clkMode = ClkModes::INT_CLOCKED;
|
||||
|
||||
uint8_t susIdx = 0;
|
||||
uint8_t cmdBuffer[SUS::MAX_CMD_SIZE];
|
||||
ComStates comState = ComStates::IDLE;
|
||||
|
||||
|
Reference in New Issue
Block a user