done
This commit is contained in:
@ -52,6 +52,26 @@ void ImtqPollingTask::handleMeasureStep() {
|
||||
ImtqRepliesDefault replies(replyBuf.data());
|
||||
// If some startup handling is added later, set configured after it was done once.
|
||||
if (performStartup) {
|
||||
// Set integration time for the MGM.
|
||||
cmdBuf[0] = imtq::CC::SET_PARAM;
|
||||
size_t dummy = 0;
|
||||
SerializeAdapter::serialize(&imtq::param::INTEGRATION_TIME_SELECT, cmdBuf.data() + 1, &dummy,
|
||||
cmdBuf.size(), SerializeIF::Endianness::LITTLE);
|
||||
cmdBuf[3] = currentRequest.integrationTimeSel;
|
||||
ReturnValue_t result = performI2cFullRequest(replyBuf.data(), 5);
|
||||
if (result != returnvalue::OK) {
|
||||
comStatus = imtq::STARTUP_CFG_ERROR;
|
||||
}
|
||||
if (replyBuf[0] != imtq::CC::SET_PARAM) {
|
||||
sif::error << "ImtqPollingTask: First byte of reply not equal to sent CC" << std::endl;
|
||||
comStatus = imtq::STARTUP_CFG_ERROR;
|
||||
}
|
||||
if (replyBuf[4] != currentRequest.integrationTimeSel) {
|
||||
sif::error << "ImtqPollingTask: Integration time confiuration failed" << std::endl;
|
||||
comStatus = imtq::STARTUP_CFG_ERROR;
|
||||
}
|
||||
currentIntegrationTimeMs =
|
||||
imtq::integrationTimeFromSelectValue(currentRequest.integrationTimeSel);
|
||||
performStartup = false;
|
||||
}
|
||||
replies.setConfigured();
|
||||
|
@ -36,16 +36,11 @@ class ImtqPollingTask : public SystemObject,
|
||||
address_t i2cAddr = 0;
|
||||
uint32_t currentIntegrationTimeMs = 10;
|
||||
// Required in addition to integration time, otherwise old data might be read.
|
||||
static constexpr uint32_t MGM_READ_BUFFER_TIME_MS = 6;
|
||||
static constexpr uint32_t MGM_READ_BUFFER_TIME_MS = 4;
|
||||
bool ignoreNextActuateRequest = false;
|
||||
bool performStartup = false;
|
||||
|
||||
imtq::Request currentRequest{};
|
||||
// int16_t dipoles[3] = {};
|
||||
// uint16_t torqueDuration = 0;
|
||||
// imtq::RequestType currentRequest = imtq::RequestType::MEASURE_NO_ACTUATION;
|
||||
// imtq::SpecialRequest specialRequest = imtq::SpecialRequest::NONE;
|
||||
// acs::SimpleSensorMode mode = acs::SimpleSensorMode::OFF;
|
||||
|
||||
std::array<uint8_t, 32> cmdBuf;
|
||||
std::array<uint8_t, 524> replyBuf;
|
||||
|
Reference in New Issue
Block a user