finish devleop can interface not yet tested
This commit is contained in:
		
							
								
								
									
										99
									
								
								306-controller_interface.X/middleware/can_interface.h
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										99
									
								
								306-controller_interface.X/middleware/can_interface.h
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,99 @@ | ||||
| /** | ||||
|  * @author R<>mi Heredero | ||||
|  * @version 1.0.0 | ||||
|  * @date August 2023 | ||||
|  * @file can_interface.h | ||||
|  */ | ||||
| #ifndef CAN_H | ||||
| #define CAN_H | ||||
|  | ||||
| #include "../xf/xf.h" | ||||
|  | ||||
| typedef enum { | ||||
|     STCA_INIT, | ||||
|     STCA_PROCESS | ||||
| } CAN_STATES; | ||||
|  | ||||
| typedef enum { | ||||
|     evCAinit = 10, // TODO change this number (< 256) | ||||
|     evCAnewMsg, | ||||
|     evCAsend | ||||
| } CAN_EVENTS; | ||||
|  | ||||
| typedef void (*CAN_CALLBACK)(uint8_t, uint8_t, uint32_t); | ||||
|  | ||||
| typedef struct { | ||||
|     CAN_STATES state; | ||||
|     uint8_t sender; | ||||
|     CAN_CALLBACK receiveCan; | ||||
| } CAN; | ||||
|  | ||||
| CAN CAN_myself; | ||||
|  | ||||
| /** | ||||
|  * Initialize the CAN | ||||
|  * @param me the CAN itself | ||||
|  */ | ||||
| void CAN_init(); | ||||
|  | ||||
| /** | ||||
|  * Start the CAN state machine | ||||
|  */ | ||||
| void CAN_startBehaviour(); | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * Process the event | ||||
|  * @param ev the event to process | ||||
|  * @return true if the event is processed | ||||
|  */ | ||||
| bool CAN_processEvent(Event* ev); | ||||
|  | ||||
| /************* | ||||
|  * Callbacks * | ||||
|  *************/ | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * Set the callback function to call when the CAN is entering state read | ||||
|  * @param f the function to call | ||||
|  */ | ||||
| void CAN_onReceiveCan(CAN_CALLBACK f); | ||||
|  | ||||
| /************ | ||||
|  * EMITTERS * | ||||
|  ************/ | ||||
|  | ||||
| /** | ||||
|  * Handler for receiving new can message during. | ||||
|  * This function is done during interrupt | ||||
|  */ | ||||
| void CAN_newMsg(); | ||||
|       | ||||
| /** | ||||
|  * Put a new can message on the queue | ||||
|  * @param idRecipient id for the recipient | ||||
|  * @param idMsg id for the message | ||||
|  * @param data 4 bytes of data to send | ||||
|  */ | ||||
| void CAN_Send(uint8_t idRecipient, uint8_t idMsg, uint32_t data); | ||||
|  | ||||
| /*********** | ||||
|  * SETTERS * | ||||
|  ***********/ | ||||
|  | ||||
| /** | ||||
|  * Set the sender of this firmware | ||||
|  * @param idSender id of the sender | ||||
|  * 1 CONTROL | ||||
|  * 2 JOYSTICK | ||||
|  * 3 DISPLAY | ||||
|  * 4 DRIVE | ||||
|  * 5 STEERING | ||||
|  * 6 SUPPLY | ||||
|  * 7 UNDEFINED YET | ||||
|  * 0 BROADCAST/DEBUG | ||||
|  */ | ||||
| void CAN_setSender(uint8_t idSender); | ||||
|  | ||||
| #endif | ||||
		Reference in New Issue
	
	Block a user