#include "factory.h" //the factory object containing all objects of our system static Factory theFactory; //all the getters LED* l1() { return &theFactory.l1_; } LED* l2() { return &theFactory.l2_; } LED* l3() { return &theFactory.l3_; } LED* l4() { return &theFactory.l4_; } LED* l5() { return &theFactory.l5_; } LED* l6() { return &theFactory.l6_; } LED* l7() { return &theFactory.l7_; } LED* l8() { return &theFactory.l8_; } WATCHDOG* WDcontroller(){ return &theFactory.WDcontroller_; } //initialize all objects void Factory_init() { LED_init(l1(), 1); LED_init(l2(), 2); LED_init(l3(), 3); LED_init(l4(), 4); LED_init(l5(), 5); LED_init(l6(), 6); LED_init(l7(), 7); LED_init(l8(), 8); LED_initHW(l1()); LED_initHW(l2()); LED_initHW(l3()); LED_initHW(l4()); LED_initHW(l5()); LED_initHW(l6()); LED_initHW(l7()); LED_initHW(l8()); CAN_init(); CAN_setSender(1); LED_off(l1()); // TODO init EPROM interface // TODO init watchdog with EPROM CST WATCHDOG_init(WDcontroller()); CAR_CST.CONTROL_ALIVE_TIME = 10; WATCHDOG_setTime(WDcontroller(), CAR_CST.CONTROL_ALIVE_TIME); } void foo(uint8_t a, uint8_t b, uint32_t c){ if(b){ LED_on(l1()); } else { LED_off(l1()); } CAN_Send(a, b, c); } //connect objects if required void Factory_build() { ECAN_SetRXBnInterruptHandler(CAN_newMsg); CAN_onReceiveCan(foo); WATCHDOG_onAlive(WDcontroller(), CM_controller_alive, NULL); } //start all state machines void Factory_start() { CAN_startBehaviour(); WATCHDOG_startBehaviour(WDcontroller()); }