#ifndef LINUX_DEVICES_DEVICEDEFINITIONS_PAYLOADPCDUDEFINITIONS_H_ #define LINUX_DEVICES_DEVICEDEFINITIONS_PAYLOADPCDUDEFINITIONS_H_ #include #include #include #include "mission/devices/max1227.h" namespace plpcdu { using namespace max1227; enum PlPcduPoolIds : uint32_t { CHANNEL_VEC = 0, TEMP = 1 }; static constexpr size_t MAX_ADC_REPLY_SIZE = 64; static constexpr DeviceCommandId_t READ_CMD = 0; static constexpr DeviceCommandId_t SETUP_CMD = 1; static constexpr DeviceCommandId_t READ_TEMP = 2; static constexpr DeviceCommandId_t READ_WITH_TEMP = 3; static constexpr Submode_t NORMAL_ADC_ONLY = 0; static constexpr Submode_t NORMAL_ALL_ON = 1; // 12 ADC values * 2 + trailing zero static constexpr size_t ADC_REPLY_SIZE = 25; // Conversion byte + 24 * zero static constexpr size_t TEMP_REPLY_SIZE = 25; static constexpr uint8_t SETUP_BYTE = max1227::buildSetupByte(ClkSel::EXT_CONV_EXT_TIMED, RefSel::INT_REF_NO_WAKEUP, DiffSel::NONE_0); static constexpr uint32_t ADC_SET_ID = READ_CMD; static constexpr uint8_t CHANNELS_NUM = 12; static constexpr uint8_t CHANNEL_N = CHANNELS_NUM - 1; // Store temperature as well static constexpr size_t DATASET_ENTRIES = CHANNELS_NUM + 1; class PlPcduAdcSet : public StaticLocalDataSet { public: PlPcduAdcSet(HasLocalDataPoolIF* owner) : StaticLocalDataSet(owner, ADC_SET_ID) {} PlPcduAdcSet(object_id_t objectId) : StaticLocalDataSet(sid_t(objectId, ADC_SET_ID)) {} lp_vec_t channels = lp_vec_t(sid.objectId, CHANNEL_VEC, this); lp_var_t tempC = lp_var_t(sid.objectId, TEMP, this); }; } // namespace plpcdu #endif /* LINUX_DEVICES_DEVICEDEFINITIONS_PAYLOADPCDUDEFINITIONS_H_ */