#include "factory.h" //the factory object containing all objects of our system static Factory theFactory; //all the getters LED* l() { return &theFactory.l_; } Button* b() { return &theFactory.b_; } ButtonSM* bsm() { return &theFactory.bsm_; } BLControl* blc() { return &theFactory.blc_; } //initialize all objects void Factory_init() { LED_init(l(),LID); LED_initHW(l()); Button_init(b(),BID, true); Button_initHW(b()); ButtonSM_init(bsm(),b()); BLControl_init(blc()); CANINTERFACE_init(); ; } void foo(uint32_t a, uint32_t b){ } //connect objects if required void Factory_build() { ButtonSM_setObserver(bsm(), blc(), &BLControl_onButton); ECAN_SetRXBnInterruptHandler(CANINTERFACE_newMsg); CANINTERFACE_onProcessCan(foo); } //start all state machines void Factory_start() { ButtonSM_startBehaviour(bsm()); }