#ifndef MISSION_STARTRACKER_DEFINITIONS_H_ #define MISSION_STARTRACKER_DEFINITIONS_H_ #include <fsfw/datapoollocal/StaticLocalDataSet.h> #include <fsfw/datapoollocal/LocalPoolVariable.h> #include <fsfw/devicehandlers/DeviceHandlerIF.h> #include "objects/systemObjectList.h" namespace StarTracker { /** This is the address of the star tracker */ static const uint8_t ADDRESS = 33; enum PoolIds: lp_id_t { STATUS, TICKS, TIME, MCU_TEMPERATURE, CMOS_TEMPERATURE }; static const DeviceCommandId_t REQ_TEMPERATURE = 25; static const uint32_t TEMPERATURE_SET_ID = REQ_TEMPERATURE; /** Max size of unencoded frame */ static const size_t MAX_FRAME_SIZE = 1200; static const uint8_t TEMPERATURE_SET_ENTRIES = 5; /** * @brief This dataset can be used to store the temperature of a reaction wheel. */ class TemperatureSet: public StaticLocalDataSet<TEMPERATURE_SET_ENTRIES> { public: TemperatureSet(HasLocalDataPoolIF* owner): StaticLocalDataSet(owner, TEMPERATURE_SET_ID) { } TemperatureSet(object_id_t objectId): StaticLocalDataSet(sid_t(objectId, TEMPERATURE_SET_ID)) { } lp_var_t<uint8_t> status = lp_var_t<uint8_t>(sid.objectId, PoolIds::STATUS, this); lp_var_t<uint32_t> ticks = lp_var_t<uint32_t>(sid.objectId, PoolIds::TICKS, this); /** Unix time in microseconds */ lp_var_t<uint64_t> time = lp_var_t<uint64_t>(sid.objectId, PoolIds::TIME, this); lp_var_t<float> mcuTemperature = lp_var_t<float>(sid.objectId, PoolIds::MCU_TEMPERATURE, this); lp_var_t<float> cmosTemperature = lp_var_t<float>(sid.objectId, PoolIds::CMOS_TEMPERATURE, this); }; } #endif /* MISSION_STARTRACKER_DEFINITIONS_H_ */