WIP can sender - template done
This commit is contained in:
		| @@ -7,34 +7,56 @@ | ||||
|  | ||||
| #include "can_sender.h" | ||||
|  | ||||
| void CAN_SENDER_init(CAN_SENDER* me){ | ||||
| void CANSENDER_init(CANSENDER* me){ | ||||
|     me->state = STCS_INIT; | ||||
|     me->sendingTime = 1; | ||||
|     me->wait.f = NULL; | ||||
|     me->send.f = NULL; | ||||
| } | ||||
|  | ||||
| void CAN_SENDER_startBehaviour(CAN_SENDER* me){ | ||||
|     POST(me, &CAN_SENDER_processEvent, evCSinit, 0, 0); | ||||
| void CANSENDER_startBehaviour(CANSENDER* me){ | ||||
|     POST(me, &CANSENDER_processEvent, evCSinit, 0, 0); | ||||
| } | ||||
|  | ||||
| bool CAN_SENDER_processEvent(Event* ev) { | ||||
| bool CANSENDER_processEvent(Event* ev) { | ||||
|     bool processed = false; | ||||
|     CAN_SENDER* me = (CAN_SENDER*)Event_getTarget(ev); | ||||
|     CAN_SENDER_STATES oldState = me->state; | ||||
|     CANSENDER* me = (CANSENDER*)Event_getTarget(ev); | ||||
|     CANSENDER_STATES oldState = me->state; | ||||
|     evIDT evid = Event_getId(ev); | ||||
|     uint64_t data = Event_getData(ev); | ||||
|      | ||||
|     switch (me->state) {        // onState | ||||
|         case STCS_INIT: | ||||
|             if (ev->id == evCSinit) { | ||||
|                  | ||||
|                 CANSENDER.state = STCS_WAIT; | ||||
|             } | ||||
|             break; | ||||
|          | ||||
|         case STCS_WAIT: | ||||
|             if (ev->id == evCSsend) { | ||||
|                 CANSENDER.state = STCS_SEND; | ||||
|             } | ||||
|             break; | ||||
|          | ||||
|         case STCS_SEND: | ||||
|             if (ev->id == evCSdone) { | ||||
|                 CANSENDER.state = STCS_WAIT; | ||||
|             } | ||||
|              | ||||
|             uCAN_MSG canMsg; | ||||
|             canMsg.frame.data0 = (uint8_t) data; | ||||
|             data = data >> 8; | ||||
|             canMsg.frame.data1 = (uint8_t) data; | ||||
|             data = data >> 8; | ||||
|             canMsg.frame.data2 = (uint8_t) data; | ||||
|             data = data >> 8; | ||||
|             canMsg.frame.data3 = (uint8_t) data; | ||||
|             data = data >> 8; | ||||
|             canMsg.frame.id = (uint32_t) data; | ||||
|             CAN_transmit(&canMsg); | ||||
|              | ||||
|             CANSENDER_emitDone(me, 0); | ||||
|              | ||||
|             break; | ||||
|     } | ||||
|  | ||||
| @@ -76,12 +98,12 @@ bool CAN_SENDER_processEvent(Event* ev) { | ||||
|  * Callbacks * | ||||
|  *************/ | ||||
|  | ||||
| void CAN_SENDER_onWait(CAN_SENDER* me, CAN_SENDER_CALLBACK_FUNCTION f, void* p) { | ||||
| void CANSENDER_onWait(CANSENDER* me, CANSENDER_CALLBACK_FUNCTION f, void* p) { | ||||
|     me->wait.f = f; | ||||
|     me->wait.p = p; | ||||
| } | ||||
|  | ||||
| void CAN_SENDER_onSend(CAN_SENDER* me, CAN_SENDER_CALLBACK_FUNCTION f, void* p) { | ||||
| void CANSENDER_onSend(CANSENDER* me, CANSENDER_CALLBACK_FUNCTION f, void* p) { | ||||
|     me->send.f = f; | ||||
|     me->send.p = p; | ||||
| } | ||||
| @@ -90,18 +112,20 @@ void CAN_SENDER_onSend(CAN_SENDER* me, CAN_SENDER_CALLBACK_FUNCTION f, void* p) | ||||
|  * EMITTERS * | ||||
|  ************/ | ||||
|  | ||||
| void CAN_SENDER_emitSend(CAN_SENDER* me, uint16_t t) { | ||||
|     POST(me, &CAN_SENDER_processEvent, evCSsend, t, 0); | ||||
| void CANSENDER_emitSend(CANSENDER* me, uint16_t t) { | ||||
|     POST(me, &CANSENDER_processEvent, evCSsend, t, 0); | ||||
| } | ||||
|  | ||||
| void CAN_SENDER_emitDone(CAN_SENDER* me, uint16_t t) { | ||||
|     POST(me, &CAN_SENDER_processEvent, evCSdone, t, 0); | ||||
| void CANSENDER_emitDone(CANSENDER* me, uint16_t t) { | ||||
|     POST(me, &CANSENDER_processEvent, evCSdone, t, 0); | ||||
| } | ||||
|  | ||||
| CANSENDER_sendCanMsg(CANSENDER* me, uint8_t id, uint32_t data) | ||||
|  | ||||
| /*********** | ||||
|  * SETTERS * | ||||
|  ***********/ | ||||
|  | ||||
| void CAN_SENDER_setSendingTime(CAN_SENDER* me, uint8_t v) { | ||||
| void CANSENDER_setSendingTime(CANSENDER* me, uint8_t v) { | ||||
|     me->sendingTime = v; | ||||
| } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user