#include "imtqHelpers.h" uint16_t imtq::integrationTimeFromSelectValue(uint8_t value) { switch (value) { case (0): return 2; case (1): return 3; case (2): return 6; case (3): return 10; case (4): return 20; case (5): return 40; case (6): return 80; default: return 10; } } size_t imtq::getReplySize(CC::CC cc, size_t* optSecondSize) { switch (cc) { // Software reset is a bit special and can also cause a I2C NAK because // the device might be reset at that moment. Otherwise, 2 bytes should be returned case (CC::CC::SOFTWARE_RESET): { if (optSecondSize != nullptr) { *optSecondSize = 0; } return 2; } case (CC::CC::START_ACTUATION_DIPOLE): case (CC::CC::SELF_TEST_CMD): case (CC::CC::START_MTM_MEASUREMENT): { return 2; } case (CC::CC::GET_SYSTEM_STATE): { return 9; } case (CC::CC::GET_RAW_MTM_MEASUREMENT): case (CC::CC::GET_CAL_MTM_MEASUREMENT): { return 15; } case (CC::CC::GET_COIL_CURRENT): case (CC::CC::GET_COMMANDED_DIPOLE): case (CC::CC::GET_COIL_TEMPERATURES): { return 8; } case (CC::CC::GET_SELF_TEST_RESULT): { // Can also be 360 for the all axes self-test! if (optSecondSize != nullptr) { *optSecondSize = 360; } return 120; } case (CC::CC::GET_RAW_HK_DATA): case (CC::CC::GET_ENG_HK_DATA): { return 24; } case (CC::CC::GET_PARAM): { return imtq::replySize::MAX_SET_GET_PARAM_LEN; } default: { return 0; } } return 0; }