#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_; } BLINKER* b1() { return &theFactory.b1_; } ALIVE* ALcontroller(){ return &theFactory.ALcontroller_; } ALIVE* ALjoy(){ return &theFactory.ALjoy_; } DRIVE* drive(){ return &theFactory.drive_; } STEERING* steering(){ return &theFactory.steering_; } //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()); BLINKER_init(b1()); CAN_init(); CAN_setSender(1); LED_off(l1()); MEM_init(); ALIVE_init(ALcontroller()); ALIVE_setAliveTime(ALcontroller(), KART_CST.CONTROL_ALIVE_TIME); ALIVE_init(ALjoy()); DRIVE_init(drive()); STEERING_init(steering()); } //connect objects if required void Factory_build() { ECAN_SetRXBnInterruptHandler(CAN_newMsg); CAN_onReceiveCan(CM_processIncome); ALIVE_onAlive(ALcontroller(), CM_CONTROLLER_ALIVE, NULL); //BLINKER_onOn(b1(), LED_on, l6()); //BLINKER_onOff(b1(), LED_off, l6()); ALIVE_onSetup(ALjoy(), CM_JOY_SETUP, NULL); ALIVE_setAliveTime(ALjoy(), KART_CST.JOYSTICK_ALIVE_TIME); ALIVE_onBorn(ALjoy(), LED_on, l1()); ALIVE_onDead(ALjoy(), LED_off, l1()); DRIVE_onRun(drive(), LED_on, l2()); DRIVE_onDead(drive(), LED_off, l2()); STEERING_onRun(steering(), LED_on, l3()); STEERING_onDead(steering(), LED_off, l3()); } //start all state machines void Factory_start() { CAN_startBehaviour(); DRIVE_startBehaviour(drive()); STEERING_startBehaviour(steering()); ALIVE_startBehaviourSender(ALcontroller()); ALIVE_startBehaviourChecker(ALjoy()); ALIVE_emitBorn(ALjoy(), 100, 0); ALIVE_emitReady(ALjoy(), 200, 0); }