program which tests the CAR project (concerning the CAN bus)

Dependencies:   mbed

Committer:
mariob
Date:
Sun Aug 02 12:55:55 2015 +0000
Revision:
0:8097eeede645
Child:
1:8446a0d14877
first commit: ECU tester

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mariob 0:8097eeede645 1 #ifndef __NET_H__
mariob 0:8097eeede645 2 #define __NET_H__
mariob 0:8097eeede645 3
mariob 0:8097eeede645 4 #include "common_types.h"
mariob 0:8097eeede645 5
mariob 0:8097eeede645 6 #define CAN_FLAG_EMPTY 0x00
mariob 0:8097eeede645 7 #define CAN_FLAG_RECEIVED 0x01
mariob 0:8097eeede645 8 #define CAN_FLAG_SEND 0x02
mariob 0:8097eeede645 9
mariob 0:8097eeede645 10
mariob 0:8097eeede645 11 /**************************************************
mariob 0:8097eeede645 12 * GLOBAL DEFINES
mariob 0:8097eeede645 13 **************************************************/
mariob 0:8097eeede645 14 #define CAN_CMD_BODY_ID 0xAA
mariob 0:8097eeede645 15 #define CAN_STS_BODY_ID 0xAB
mariob 0:8097eeede645 16 #define CAN_CMD_ENGINE_ID 0x0A
mariob 0:8097eeede645 17 #define CAN_CMD_TIME_ID 0xBB
mariob 0:8097eeede645 18 #define CAN_CMD_DRIVER_ID 0x11
mariob 0:8097eeede645 19 #define CAN_STS_DRIVER_ID 0x10
mariob 0:8097eeede645 20
mariob 0:8097eeede645 21 #define PERIOD_1s 10
mariob 0:8097eeede645 22 #define PERIOD_500ms 5
mariob 0:8097eeede645 23
mariob 0:8097eeede645 24 #define CAN_STS_BODY_PERIOD PERIOD_500ms
mariob 0:8097eeede645 25
mariob 0:8097eeede645 26 /**************************************************
mariob 0:8097eeede645 27 * GLOBAL TYPES
mariob 0:8097eeede645 28 **************************************************/
mariob 0:8097eeede645 29 #define CAN_CMD_PAYLOAD_BODY 4
mariob 0:8097eeede645 30 #define CAN_STS_PAYLOAD_BODY 8
mariob 0:8097eeede645 31 #define CAN_CMD_PAYLOAD_ENGINE 4
mariob 0:8097eeede645 32 #define CAN_CMD_PAYLOAD_TIME 4
mariob 0:8097eeede645 33 #define CAN_CMD_PAYLOAD_DRIVER 8
mariob 0:8097eeede645 34 #define CAN_STS_PAYLOAD_DRIVER 4
mariob 0:8097eeede645 35
mariob 0:8097eeede645 36 typedef union can_cmd_body_payload_s {
mariob 0:8097eeede645 37 uint8 buf[CAN_CMD_PAYLOAD_BODY];
mariob 0:8097eeede645 38 struct {
mariob 0:8097eeede645 39 uint32 light_r:1;
mariob 0:8097eeede645 40 uint32 light_c:1;
mariob 0:8097eeede645 41 uint32 light_l:1;
mariob 0:8097eeede645 42 uint32 unused:29;
mariob 0:8097eeede645 43 } msg;
mariob 0:8097eeede645 44 } can_cmd_body_payload_t;
mariob 0:8097eeede645 45 typedef struct can_cmd_body_s {
mariob 0:8097eeede645 46 can_cmd_body_payload_t payload;
mariob 0:8097eeede645 47 uint8 flag;
mariob 0:8097eeede645 48 } can_cmd_body_t;
mariob 0:8097eeede645 49
mariob 0:8097eeede645 50 typedef union can_sts_body_payload_s {
mariob 0:8097eeede645 51 uint8 buf[CAN_STS_PAYLOAD_BODY];
mariob 0:8097eeede645 52 struct {
mariob 0:8097eeede645 53 uint32 hit_front:1;
mariob 0:8097eeede645 54 uint32 hit_rear:1;
mariob 0:8097eeede645 55 uint32 hit_left:1;
mariob 0:8097eeede645 56 uint32 hit_right:1;
mariob 0:8097eeede645 57 uint32 light_sens:1;
mariob 0:8097eeede645 58 uint32 unused:3;
mariob 0:8097eeede645 59 uint32 eye_back_l:8;
mariob 0:8097eeede645 60 uint32 eye_back_r:8;
mariob 0:8097eeede645 61 uint32 eye_front:16;
mariob 0:8097eeede645 62 } msg;
mariob 0:8097eeede645 63 } can_sts_body_payload_t;
mariob 0:8097eeede645 64 typedef struct can_sts_body_s {
mariob 0:8097eeede645 65 can_sts_body_payload_t payload;
mariob 0:8097eeede645 66 uint8 flag;
mariob 0:8097eeede645 67 } can_sts_body_t;
mariob 0:8097eeede645 68
mariob 0:8097eeede645 69 typedef union can_cmd_engine_payload_s {
mariob 0:8097eeede645 70 uint8 buf[CAN_CMD_PAYLOAD_BODY];
mariob 0:8097eeede645 71 struct {
mariob 0:8097eeede645 72 uint32 steering:8;
mariob 0:8097eeede645 73 uint32 power:8;
mariob 0:8097eeede645 74 uint32 direction:1;
mariob 0:8097eeede645 75 uint32 breaking:1;
mariob 0:8097eeede645 76 uint32 unused:14;
mariob 0:8097eeede645 77 } msg;
mariob 0:8097eeede645 78 } can_cmd_engine_payload_t;
mariob 0:8097eeede645 79 typedef struct can_cmd_engine_s {
mariob 0:8097eeede645 80 can_cmd_engine_payload_t payload;
mariob 0:8097eeede645 81 uint8 flag;
mariob 0:8097eeede645 82 } can_cmd_engine_t;
mariob 0:8097eeede645 83
mariob 0:8097eeede645 84 typedef union can_cmd_time_payload_s {
mariob 0:8097eeede645 85 uint8 buf[CAN_CMD_PAYLOAD_TIME];
mariob 0:8097eeede645 86 struct {
mariob 0:8097eeede645 87 uint32 time;
mariob 0:8097eeede645 88 } msg;
mariob 0:8097eeede645 89 } can_cmd_time_payload_t;
mariob 0:8097eeede645 90 typedef struct can_cmd_time_s {
mariob 0:8097eeede645 91 can_cmd_time_payload_t payload;
mariob 0:8097eeede645 92 uint8 flag;
mariob 0:8097eeede645 93 } can_cmd_time_t;
mariob 0:8097eeede645 94
mariob 0:8097eeede645 95 typedef union can_cmd_driver_payload_s {
mariob 0:8097eeede645 96 uint8 buf[CAN_CMD_PAYLOAD_DRIVER];
mariob 0:8097eeede645 97 struct {
mariob 0:8097eeede645 98 uint32 cmd:16;
mariob 0:8097eeede645 99 uint32 opt:16;
mariob 0:8097eeede645 100 uint32 data;
mariob 0:8097eeede645 101 } msg;
mariob 0:8097eeede645 102 } can_cmd_driver_payload_t;
mariob 0:8097eeede645 103 typedef struct can_driver_time_s {
mariob 0:8097eeede645 104 can_cmd_driver_payload_t payload;
mariob 0:8097eeede645 105 uint8 flag;
mariob 0:8097eeede645 106 } can_cmd_driver_t;
mariob 0:8097eeede645 107
mariob 0:8097eeede645 108 typedef union can_sts_driver_payload_s {
mariob 0:8097eeede645 109 uint8 buf[CAN_STS_PAYLOAD_DRIVER];
mariob 0:8097eeede645 110 struct {
mariob 0:8097eeede645 111 uint32 data;
mariob 0:8097eeede645 112 } msg;
mariob 0:8097eeede645 113 } can_sts_driver_payload_t;
mariob 0:8097eeede645 114 typedef struct can_sts_driver_time_s {
mariob 0:8097eeede645 115 can_sts_driver_payload_t payload;
mariob 0:8097eeede645 116 uint8 flag;
mariob 0:8097eeede645 117 } can_sts_driver_t;
mariob 0:8097eeede645 118
mariob 0:8097eeede645 119 /**************************************************
mariob 0:8097eeede645 120 * DATA STRUCTURES
mariob 0:8097eeede645 121 **************************************************/
mariob 0:8097eeede645 122 void init_can(CAN *device);
mariob 0:8097eeede645 123
mariob 0:8097eeede645 124 #endif //__NET_H__