car chassis
Dependencies: Servo mbed-rtos mbed
net.hpp
- Committer:
- mariob
- Date:
- 2015-10-11
- Revision:
- 3:bfc20ec72b15
- Parent:
- 2:7dfc8dd6aab3
File content as of revision 3:bfc20ec72b15:
#ifndef __NET_H__ #define __NET_H__ #include "common_types.h" #define CAN_FLAG_EMPTY 0x00 #define CAN_FLAG_RECEIVED 0x01 #define CAN_FLAG_SEND 0x02 #define CMD_ECHO 0x0A0A /************************************************** * MESSAGE IDs **************************************************/ #define CAN_CMD_BODY_ID 0xAA #define CAN_STS_BODY_ID 0xAB #define CAN_CMD_ENGINE_ID 0x0A #define CAN_CMD_TIME_ID 0xBB #define CAN_CMD_DIAG_ID 0x11 #define CAN_STS_DIAG_ID 0x10 #define CAN_CMD_CAMERA_ID 0x22 /************************************************** * PERIODs **************************************************/ #define PERIOD_60s (60000/CAN_THREAD_PERIOD) #define PERIOD_3s (3000/CAN_THREAD_PERIOD) #define PERIOD_1s (1000/CAN_THREAD_PERIOD) #define PERIOD_500ms (500/CAN_THREAD_PERIOD) #define PERIOD_400ms (400/CAN_THREAD_PERIOD) #define PERIOD_300ms (300/CAN_THREAD_PERIOD) #define PERIOD_200ms (200/CAN_THREAD_PERIOD) #define PERIOD_100ms (100/CAN_THREAD_PERIOD) #define CAN_CMD_BODY_PERIOD PERIOD_1s #define CAN_STS_BODY_PERIOD PERIOD_1s #define CAN_CMD_ENGINE_PERIOD PERIOD_500ms #define CAN_CMD_CAMERA_PERIOD PERIOD_1s #define CAN_MISSING_DETECTION PERIOD_3s #define CAN_MISSING_CMD_BODY_ID 0 #define CAN_MISSING_CMD_ENGINE_ID 1 #define CAN_MISSING_CMD_CAMERA_ID 2 #define CAN_MISSING_STS_BODY_ID 3 #define CAN_RX_PERIODIC_MSG 4 /************************************************** * MESSAGE SIZEs **************************************************/ #define CAN_CMD_PAYLOAD_BODY 4 #define CAN_STS_PAYLOAD_BODY 8 #define CAN_CMD_PAYLOAD_ENGINE 4 #define CAN_CMD_PAYLOAD_TIME 4 #define CAN_CMD_PAYLOAD_DIAG 8 #define CAN_STS_PAYLOAD_DIAG 4 #define CAN_CMD_PAYLOAD_CAMERA 2 /************************************************** * MESSAGE TYPEs **************************************************/ typedef union can_cmd_body_payload_s { uint8 buf[CAN_CMD_PAYLOAD_BODY]; struct { uint32 light_r:1; uint32 light_c:1; uint32 light_l:1; uint32 unused:29; } msg; } can_cmd_body_payload_t; typedef struct can_cmd_body_s { can_cmd_body_payload_t payload; uint8 flag; } can_cmd_body_t; typedef union can_sts_body_payload_s { uint8 buf[CAN_STS_PAYLOAD_BODY]; struct { uint32 hit_front:1; uint32 hit_rear:1; uint32 hit_left:1; uint32 hit_right:1; uint32 light_sens:1; uint32 unused:3; uint32 eye_back_l:8; uint32 eye_back_r:8; uint32 eye_front:16; } msg; } can_sts_body_payload_t; typedef struct can_sts_body_s { can_sts_body_payload_t payload; uint8 flag; } can_sts_body_t; typedef union can_cmd_engine_payload_s { uint8 buf[CAN_CMD_PAYLOAD_BODY]; struct { uint32 steering:8; uint32 power:8; uint32 direction:1; uint32 breaking:1; uint32 unused:14; } msg; } can_cmd_engine_payload_t; typedef struct can_cmd_engine_s { can_cmd_engine_payload_t payload; uint8 flag; } can_cmd_engine_t; typedef union can_cmd_time_payload_s { uint8 buf[CAN_CMD_PAYLOAD_TIME]; struct { uint32 time; } msg; } can_cmd_time_payload_t; typedef struct can_cmd_time_s { can_cmd_time_payload_t payload; uint8 flag; } can_cmd_time_t; typedef union can_cmd_diag_payload_s { uint8 buf[CAN_CMD_PAYLOAD_DIAG]; struct { uint32 cmd:16; uint32 opt:16; uint32 data; } msg; } can_cmd_diag_payload_t; typedef struct can_cmd_diag_s { can_cmd_diag_payload_t payload; uint8 flag; } can_cmd_diag_t; typedef union can_sts_diag_payload_s { uint8 buf[CAN_STS_PAYLOAD_DIAG]; struct { uint32 data; } msg; } can_sts_diag_payload_t; typedef struct can_sts_diag_time_s { can_sts_diag_payload_t payload; uint8 flag; } can_sts_diag_t; typedef union can_cmd_camera_payload_s { uint8 buf[CAN_CMD_PAYLOAD_CAMERA]; struct { uint16 x:7; uint16 y:7; uint16 mode:2; } msg; } can_cmd_camera_payload_t; typedef struct can_cmd_camera_s { can_cmd_camera_payload_t payload; uint8 flag; } can_cmd_camera_t; /************************************************** * MESSAGE BUFFERs **************************************************/ extern can_cmd_body_t can_cmd_body; extern can_sts_body_t can_sts_body; extern can_cmd_engine_t can_cmd_engine; extern can_cmd_time_t can_cmd_time; extern can_cmd_diag_t can_cmd_diag; extern can_sts_diag_t can_sts_diag; extern can_cmd_camera_t can_cmd_camera; #endif //__NET_H__