#ifndef MISSION_DEVICES_DEVICEDEFINITIONS_RWDEFINITIONS_H_ #define MISSION_DEVICES_DEVICEDEFINITIONS_RWDEFINITIONS_H_ #include #include #include #include "objects/systemObjectList.h" namespace RwDefinitions { static const uint32_t SPI_REPLY_DELAY = 70000; //us enum PoolIds: lp_id_t { TEMPERATURE_C, CURR_SPEED, REFERENCE_SPEED, STATE, CLC_MODE }; static const DeviceCommandId_t GET_RW_STATUS = 4; static const DeviceCommandId_t SET_SPEED = 6; static const DeviceCommandId_t GET_TEMPERATURE = 8; static const uint32_t TEMPERATURE_SET_ID = GET_TEMPERATURE; static const uint32_t STATUS_SET_ID = GET_RW_STATUS; static const size_t SIZE_GET_RW_STATUS = 14; static const size_t SIZE_SET_SPEED_REPLY = 4; static const size_t SIZE_GET_TEMPERATURE_REPLY = 8; /** Max size when requesting telemetry */ static const size_t SIZE_GET_TELEMETRY_REPLY = 83; /** Set speed command has maximum size */ static const size_t MAX_CMD_SIZE = 9; static const size_t MAX_REPLY_SIZE = SIZE_GET_TELEMETRY_REPLY; static const uint8_t TEMPERATURE_SET_ENTRIES = 1; static const uint8_t STATUS_SET_ENTRIES = 4; /** * @brief This dataset can be used to store the temperature of a reaction wheel. */ class TemperatureSet: public StaticLocalDataSet { public: TemperatureSet(HasLocalDataPoolIF* owner): StaticLocalDataSet(owner, TEMPERATURE_SET_ID) { } TemperatureSet(object_id_t objectId): StaticLocalDataSet(sid_t(objectId, TEMPERATURE_SET_ID)) { } lp_var_t temperatureCelcius = lp_var_t(sid.objectId, PoolIds::TEMPERATURE_C, this); }; /** * @brief This dataset can be used to store the reaction wheel status. */ class StatusSet: public StaticLocalDataSet { public: StatusSet(HasLocalDataPoolIF* owner): StaticLocalDataSet(owner, STATUS_SET_ID) { } StatusSet(object_id_t objectId): StaticLocalDataSet(sid_t(objectId, STATUS_SET_ID)) { } lp_var_t currSpeed = lp_var_t(sid.objectId, PoolIds::CURR_SPEED, this); lp_var_t referenceSpeed = lp_var_t(sid.objectId, PoolIds::REFERENCE_SPEED, this); lp_var_t state = lp_var_t(sid.objectId, PoolIds::STATE, this); lp_var_t clcMode = lp_var_t(sid.objectId, PoolIds::CLC_MODE, this); }; } #endif /* MISSION_DEVICES_DEVICEDEFINITIONS_RWDEFINITIONS_H_ */