diff --git a/306-controller_interface.X/app/drive.c b/306-controller_interface.X/app/drive.c index fdbba80..7cf4373 100644 --- a/306-controller_interface.X/app/drive.c +++ b/306-controller_interface.X/app/drive.c @@ -13,7 +13,7 @@ void DRIVE_init(DRIVE* me){ me->state = STDR_INIT; - ALIVE_init(&me->myChecker); + ALIVE_init(&me->myChecker, 2); ALIVE_onSetup(&me->myChecker, CM_DRIVE_SETUP, &ALWAYSTRUE); ALIVE_onWait(&me->myChecker, DRIVE_emitStart, me); ALIVE_onDead(&me->myChecker, DRIVE_emitStop, me); diff --git a/306-controller_interface.X/app/factory/factory.c b/306-controller_interface.X/app/factory/factory.c index 90c46aa..7980383 100644 --- a/306-controller_interface.X/app/factory/factory.c +++ b/306-controller_interface.X/app/factory/factory.c @@ -5,24 +5,6 @@ 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_; } @@ -30,10 +12,6 @@ LED* l8() { return &theFactory.l8_; } -BLINKER* b1() { - return &theFactory.b1_; -} - ALIVE* ALcontroller(){ return &theFactory.ALcontroller_; } @@ -53,36 +31,20 @@ STEERING* 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_init(ALcontroller(), 6); ALIVE_setAliveTime(ALcontroller(), KART_CST.CONTROL_ALIVE_TIME); - ALIVE_init(ALjoy()); + ALIVE_init(ALjoy(), 1); DRIVE_init(drive()); STEERING_init(steering()); } @@ -94,19 +56,16 @@ void Factory_build() { 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()); + //ALIVE_onBorn(ALjoy(), LED_on, l1()); + //ALIVE_onDead(ALjoy(), LED_off, l1()); - DRIVE_onRun(drive(), LED_on, l2()); - DRIVE_onDead(drive(), LED_off, l2()); + //DRIVE_onRun(drive(), LED_on, l2()); + //DRIVE_onDead(drive(), LED_off, l2()); - STEERING_onRun(steering(), LED_on, l3()); - STEERING_onDead(steering(), LED_off, l3()); + //STEERING_onRun(steering(), LED_on, l3()); + //STEERING_onDead(steering(), LED_off, l3()); } diff --git a/306-controller_interface.X/app/factory/factory.h b/306-controller_interface.X/app/factory/factory.h index fd3b51f..f486e95 100644 --- a/306-controller_interface.X/app/factory/factory.h +++ b/306-controller_interface.X/app/factory/factory.h @@ -25,17 +25,9 @@ typedef struct { - LED l1_; - LED l2_; - LED l3_; - LED l4_; - LED l5_; - LED l6_; LED l7_; LED l8_; - BLINKER b1_; - ALIVE ALcontroller_; ALIVE ALjoy_; DRIVE drive_; @@ -49,17 +41,9 @@ void Factory_build(); void Factory_start(); //these are global getters for our objects -LED* l1(); -LED* l2(); -LED* l3(); -LED* l4(); -LED* l5(); -LED* l6(); LED* l7(); LED* l8(); -BLINKER* b1(); - ALIVE* ALcontroller(); ALIVE* ALjoy(); DRIVE* drive(); diff --git a/306-controller_interface.X/app/steering.c b/306-controller_interface.X/app/steering.c index ab7ec23..74fa712 100644 --- a/306-controller_interface.X/app/steering.c +++ b/306-controller_interface.X/app/steering.c @@ -12,7 +12,7 @@ void STEERING_init(STEERING* me){ me->state = STST_INIT; - ALIVE_init(&me->myChecker); + ALIVE_init(&me->myChecker, 3); ALIVE_onSetup(&me->myChecker, CM_STEERING_SETUP, &ALWAYSFALSE); ALIVE_onWait(&me->myChecker, STEERING_emitStart, me); ALIVE_onDead(&me->myChecker, STEERING_emitStop, me); diff --git a/306-controller_interface.X/middleware/alive.c b/306-controller_interface.X/middleware/alive.c index 1565dd3..57999f7 100644 --- a/306-controller_interface.X/middleware/alive.c +++ b/306-controller_interface.X/middleware/alive.c @@ -7,7 +7,7 @@ #include "alive.h" -void ALIVE_init(ALIVE* me){ +void ALIVE_init(ALIVE* me, uint8_t led){ me->state = STAL_INIT; me->isAlive = false; me->checker = false; @@ -20,14 +20,23 @@ void ALIVE_init(ALIVE* me){ me->dead.f = NULL; me->alive.f = NULL; me->break_cb.f = NULL; + LED_init(&me->debugLed, led); + LED_initHW(&me->debugLed); + BLINKER_init(&me->debugBlinker); + BLINKER_setTimeOn(&me->debugBlinker, 50); + BLINKER_setTimeOff(&me->debugBlinker, 50); + BLINKER_onOn(&me->debugBlinker, LED_on, &me->debugLed); + BLINKER_onOff(&me->debugBlinker, LED_off, &me->debugLed); } void ALIVE_startBehaviourChecker(ALIVE* me){ - POST(me, &ALIVE_processEvent, evALinitChecker, 0, 0); + BLINKER_startBehaviour(&me->debugBlinker); + POST(me, &ALIVE_processEvent, evALinitChecker, 10, 0); } void ALIVE_startBehaviourSender(ALIVE* me){ - POST(me, &ALIVE_processEvent, evALinitSender, 0, 0); + BLINKER_startBehaviour(&me->debugBlinker); + POST(me, &ALIVE_processEvent, evALinitSender, 10, 0); } bool ALIVE_processEvent(Event* ev) { @@ -39,6 +48,7 @@ bool ALIVE_processEvent(Event* ev) { switch (me->state) { // onState case STAL_INIT: + LED_on(&me->debugLed); if (ev->id == evALinitChecker) { me->state = STAL_SETUP; } @@ -125,12 +135,14 @@ bool ALIVE_processEvent(Event* ev) { break; case STAL_WAIT: + BLINKER_endBlink(&me->debugBlinker); break; case STAL_DEAD: break; case STAL_ALIVE: + BLINKER_endBlink(&me->debugBlinker); break; case STAL_BREAK: @@ -155,6 +167,8 @@ bool ALIVE_processEvent(Event* ev) { break; case STAL_WAIT: + LED_off(&me->debugLed); + BLINKER_emitBlink(&me->debugBlinker, 0); if (me->wait.f != NULL) { me->wait.f(me->wait.p); } @@ -167,6 +181,8 @@ bool ALIVE_processEvent(Event* ev) { break; case STAL_ALIVE: + LED_off(&me->debugLed); + BLINKER_emitBlink(&me->debugBlinker, 0); me->sender = true; break; diff --git a/306-controller_interface.X/middleware/alive.h b/306-controller_interface.X/middleware/alive.h index 06bc9da..fe33c0c 100644 --- a/306-controller_interface.X/middleware/alive.h +++ b/306-controller_interface.X/middleware/alive.h @@ -8,6 +8,8 @@ #define ALIVE_H #include "../xf/xf.h" +#include "../board/led/led.h" +#include "../middleware/blinker.h" typedef enum { STAL_INIT = 20, @@ -37,6 +39,8 @@ typedef struct { typedef struct { ALIVE_STATES state; + LED debugLed; + BLINKER debugBlinker; bool isAlive; bool checker; bool sender; @@ -54,7 +58,7 @@ typedef struct { * Initialize the ALIVE * @param me the ALIVE itself */ -void ALIVE_init(ALIVE* me); +void ALIVE_init(ALIVE* me, uint8_t led); /** * Start the ALIVE state machine for checker part