#ifndef MISSION_ASSEMBLIES_TESTASSEMBLY_H_ #define MISSION_ASSEMBLIES_TESTASSEMBLY_H_ #include #include "../devices/TestDeviceHandler.h" class TestAssembly: public AssemblyBase { public: TestAssembly(object_id_t objectId, object_id_t parentId); virtual ~TestAssembly(); ReturnValue_t initialize() override; enum submodes: Submode_t{ SINGLE = 0, DUAL = 1 }; protected: /** * Command children to reach [mode,submode] combination * Can be done by setting #commandsOutstanding correctly, * or using executeTable() * @param mode * @param submode * @return * - @c RETURN_OK if ok * - @c NEED_SECOND_STEP if children need to be commanded again */ ReturnValue_t commandChildren(Mode_t mode, Submode_t submode) override; /** * Check whether desired assembly mode was achieved by checking the modes * or/and health states of child device handlers. * The assembly template class will also call this function if a health * or mode change of a child device handler was detected. * @param wantedMode * @param wantedSubmode * @return */ ReturnValue_t isModeCombinationValid(Mode_t mode, Submode_t submode) override; ReturnValue_t checkChildrenStateOn(Mode_t wantedMode, Submode_t wantedSubmode) override; private: FixedArrayList commandTable; TestDevice* handler0 = nullptr; TestDevice* handler1 = nullptr; bool isDeviceAvailable(object_id_t object); }; #endif /* MISSION_ASSEMBLIES_TESTASSEMBLY_H_ */