#ifndef MISSION_DEVICES_DEVICEDEFINITIONS_TESTDEVICEDEFINITIONS_H_ #define MISSION_DEVICES_DEVICEDEFINITIONS_TESTDEVICEDEFINITIONS_H_ #include #include #include namespace testdevice { enum ParameterUniqueIds: uint8_t { TEST_UINT32_0, TEST_INT32_1, TEST_FLOAT_VEC3_2, PERIODIC_PRINT_ENABLED, CHANGING_DATASETS }; enum DeviceIndex: uint32_t { DEVICE_0, DEVICE_1 }; /** Normal mode command. This ID is also used to access the set variable via the housekeeping service */ static constexpr DeviceCommandId_t TEST_NORMAL_MODE_CMD = 0; //! Test completion reply static constexpr DeviceCommandId_t TEST_COMMAND_0 = 1; //! Test data reply static constexpr DeviceCommandId_t TEST_COMMAND_1 = 2; /** * Can be used to trigger a notification to the demo controller. For DEVICE_0, only notifications * messages will be generated while for DEVICE_1, snapshot messages will be generated. * * DEVICE_0 VAR: Sets the set variable 0 above a treshold (200) to trigger a variable * notification. * DEVICE_0 SET: Sets the vector mean values above a treshold (mean larger than 20) to trigger a * set notification. * * DEVICE_1 VAR: Sets the set variable 0 below a treshold (less than 50 but not 0) to trigger a * variable snapshot. * DEVICE_1 SET: Sets the set vector mean values below a treshold (mean smaller than -20) to * trigger a set snapshot message. */ static constexpr DeviceCommandId_t TEST_NOTIF_SNAPSHOT_VAR = 3; static constexpr DeviceCommandId_t TEST_NOTIF_SNAPSHOT_SET = 4; /** * Can be used to trigger a snapshot message to the demo controller. * Depending on the device index, a notification will be triggered for different set variables. * * DEVICE_0: Sets the set variable 0 below a treshold (below 50 but not 0) to trigger * a variable snapshot * DEVICE_1: Sets the vector mean values below a treshold (mean less than -20) to trigger a * set snapshot */ static constexpr DeviceCommandId_t TEST_SNAPSHOT = 5; //! Generates a random value for variable 1 of the dataset. static constexpr DeviceCommandId_t GENERATE_SET_VAR_1_RNG_VALUE = 6; /** * These parameters are sent back with the command ID as a data reply */ static constexpr uint16_t COMMAND_1_PARAM1 = 0xBAB0; //!< param1, 2 bytes //! param2, 8 bytes static constexpr uint64_t COMMAND_1_PARAM2 = 0x000000524F42494E; static constexpr size_t TEST_COMMAND_0_SIZE = sizeof(TEST_COMMAND_0); static constexpr size_t TEST_COMMAND_1_SIZE = sizeof(TEST_COMMAND_1) + sizeof(COMMAND_1_PARAM1) + sizeof(COMMAND_1_PARAM2); enum PoolIds: lp_id_t { TEST_UINT8_ID = 0, TEST_UINT32_ID = 1, TEST_FLOAT_VEC_3_ID = 2 }; static constexpr uint8_t TEST_SET_ID = TEST_NORMAL_MODE_CMD; static const sid_t TEST_SET_DEV_0_SID = sid_t(objects::TEST_DEVICE_HANDLER_0, TEST_SET_ID); static const sid_t TEST_SET_DEV_1_SID = sid_t(objects::TEST_DEVICE_HANDLER_1, TEST_SET_ID); class TestDataSet: public StaticLocalDataSet<3> { public: TestDataSet(HasLocalDataPoolIF* owner): StaticLocalDataSet(owner, TEST_SET_ID) {} TestDataSet(object_id_t owner): StaticLocalDataSet(sid_t(owner, TEST_SET_ID)) {} lp_var_t testUint8Var = lp_var_t( gp_id_t(this->getCreatorObjectId(), PoolIds::TEST_UINT8_ID), this); lp_var_t testUint32Var = lp_var_t( gp_id_t(this->getCreatorObjectId(), PoolIds::TEST_UINT32_ID), this); lp_vec_t testFloat3Vec = lp_vec_t( gp_id_t(this->getCreatorObjectId(), PoolIds::TEST_FLOAT_VEC_3_ID), this); }; } #endif /* MISSION_DEVICES_DEVICEDEFINITIONS_TESTDEVICEDEFINITIONS_H_ */