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

Dependencies:   mbed

Committer:
mariob
Date:
Mon Aug 31 22:27:29 2015 +0000
Revision:
1:8446a0d14877
Parent:
0:8097eeede645
program which tests the CAR project (concerning the CAN comunication)

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 1:8446a0d14877 10 #define CAN_THREAD_PERIOD 100 //ms
mariob 1:8446a0d14877 11
mariob 1:8446a0d14877 12
mariob 1:8446a0d14877 13
mariob 1:8446a0d14877 14 #define CMD_ECHO 0x0A0A
mariob 0:8097eeede645 15
mariob 0:8097eeede645 16 /**************************************************
mariob 0:8097eeede645 17 * GLOBAL DEFINES
mariob 0:8097eeede645 18 **************************************************/
mariob 0:8097eeede645 19 #define CAN_CMD_BODY_ID 0xAA
mariob 0:8097eeede645 20 #define CAN_STS_BODY_ID 0xAB
mariob 0:8097eeede645 21 #define CAN_CMD_ENGINE_ID 0x0A
mariob 0:8097eeede645 22 #define CAN_CMD_TIME_ID 0xBB
mariob 0:8097eeede645 23 #define CAN_CMD_DRIVER_ID 0x11
mariob 0:8097eeede645 24 #define CAN_STS_DRIVER_ID 0x10
mariob 0:8097eeede645 25
mariob 1:8446a0d14877 26 #define PERIOD_3s (3000/CAN_THREAD_PERIOD)
mariob 1:8446a0d14877 27 #define PERIOD_1s (1000/CAN_THREAD_PERIOD)
mariob 1:8446a0d14877 28 #define PERIOD_500ms (500/CAN_THREAD_PERIOD)
mariob 1:8446a0d14877 29 #define PERIOD_400ms (400/CAN_THREAD_PERIOD)
mariob 1:8446a0d14877 30 #define PERIOD_300ms (300/CAN_THREAD_PERIOD)
mariob 1:8446a0d14877 31 #define PERIOD_200ms (200/CAN_THREAD_PERIOD)
mariob 1:8446a0d14877 32 #define PERIOD_100ms (100/CAN_THREAD_PERIOD)
mariob 0:8097eeede645 33
mariob 1:8446a0d14877 34 #define CAN_STS_BODY_PERIOD PERIOD_1s
mariob 1:8446a0d14877 35
mariob 1:8446a0d14877 36
mariob 1:8446a0d14877 37 #define CAN_MISSING_DETECTION PERIOD_3s
mariob 1:8446a0d14877 38
mariob 1:8446a0d14877 39 #define CAN_MISSING_BODY_ID 0
mariob 1:8446a0d14877 40 #define CAN_MISSING_ENGINE_ID 1
mariob 1:8446a0d14877 41 #define CAN_MISSING_TIME_ID 2
mariob 1:8446a0d14877 42
mariob 1:8446a0d14877 43 #define CAN_RX_PERIODIC_MSG 3
mariob 0:8097eeede645 44
mariob 0:8097eeede645 45 /**************************************************
mariob 0:8097eeede645 46 * GLOBAL TYPES
mariob 0:8097eeede645 47 **************************************************/
mariob 0:8097eeede645 48 #define CAN_CMD_PAYLOAD_BODY 4
mariob 0:8097eeede645 49 #define CAN_STS_PAYLOAD_BODY 8
mariob 0:8097eeede645 50 #define CAN_CMD_PAYLOAD_ENGINE 4
mariob 0:8097eeede645 51 #define CAN_CMD_PAYLOAD_TIME 4
mariob 0:8097eeede645 52 #define CAN_CMD_PAYLOAD_DRIVER 8
mariob 0:8097eeede645 53 #define CAN_STS_PAYLOAD_DRIVER 4
mariob 0:8097eeede645 54
mariob 0:8097eeede645 55 typedef union can_cmd_body_payload_s {
mariob 0:8097eeede645 56 uint8 buf[CAN_CMD_PAYLOAD_BODY];
mariob 0:8097eeede645 57 struct {
mariob 0:8097eeede645 58 uint32 light_r:1;
mariob 0:8097eeede645 59 uint32 light_c:1;
mariob 0:8097eeede645 60 uint32 light_l:1;
mariob 0:8097eeede645 61 uint32 unused:29;
mariob 0:8097eeede645 62 } msg;
mariob 0:8097eeede645 63 } can_cmd_body_payload_t;
mariob 0:8097eeede645 64 typedef struct can_cmd_body_s {
mariob 0:8097eeede645 65 can_cmd_body_payload_t payload;
mariob 0:8097eeede645 66 uint8 flag;
mariob 0:8097eeede645 67 } can_cmd_body_t;
mariob 0:8097eeede645 68
mariob 0:8097eeede645 69 typedef union can_sts_body_payload_s {
mariob 0:8097eeede645 70 uint8 buf[CAN_STS_PAYLOAD_BODY];
mariob 0:8097eeede645 71 struct {
mariob 0:8097eeede645 72 uint32 hit_front:1;
mariob 0:8097eeede645 73 uint32 hit_rear:1;
mariob 0:8097eeede645 74 uint32 hit_left:1;
mariob 0:8097eeede645 75 uint32 hit_right:1;
mariob 0:8097eeede645 76 uint32 light_sens:1;
mariob 0:8097eeede645 77 uint32 unused:3;
mariob 0:8097eeede645 78 uint32 eye_back_l:8;
mariob 0:8097eeede645 79 uint32 eye_back_r:8;
mariob 0:8097eeede645 80 uint32 eye_front:16;
mariob 0:8097eeede645 81 } msg;
mariob 0:8097eeede645 82 } can_sts_body_payload_t;
mariob 0:8097eeede645 83 typedef struct can_sts_body_s {
mariob 0:8097eeede645 84 can_sts_body_payload_t payload;
mariob 0:8097eeede645 85 uint8 flag;
mariob 0:8097eeede645 86 } can_sts_body_t;
mariob 0:8097eeede645 87
mariob 0:8097eeede645 88 typedef union can_cmd_engine_payload_s {
mariob 0:8097eeede645 89 uint8 buf[CAN_CMD_PAYLOAD_BODY];
mariob 0:8097eeede645 90 struct {
mariob 0:8097eeede645 91 uint32 steering:8;
mariob 0:8097eeede645 92 uint32 power:8;
mariob 0:8097eeede645 93 uint32 direction:1;
mariob 0:8097eeede645 94 uint32 breaking:1;
mariob 0:8097eeede645 95 uint32 unused:14;
mariob 0:8097eeede645 96 } msg;
mariob 0:8097eeede645 97 } can_cmd_engine_payload_t;
mariob 0:8097eeede645 98 typedef struct can_cmd_engine_s {
mariob 0:8097eeede645 99 can_cmd_engine_payload_t payload;
mariob 0:8097eeede645 100 uint8 flag;
mariob 0:8097eeede645 101 } can_cmd_engine_t;
mariob 0:8097eeede645 102
mariob 0:8097eeede645 103 typedef union can_cmd_time_payload_s {
mariob 0:8097eeede645 104 uint8 buf[CAN_CMD_PAYLOAD_TIME];
mariob 0:8097eeede645 105 struct {
mariob 0:8097eeede645 106 uint32 time;
mariob 0:8097eeede645 107 } msg;
mariob 0:8097eeede645 108 } can_cmd_time_payload_t;
mariob 0:8097eeede645 109 typedef struct can_cmd_time_s {
mariob 0:8097eeede645 110 can_cmd_time_payload_t payload;
mariob 0:8097eeede645 111 uint8 flag;
mariob 0:8097eeede645 112 } can_cmd_time_t;
mariob 0:8097eeede645 113
mariob 0:8097eeede645 114 typedef union can_cmd_driver_payload_s {
mariob 0:8097eeede645 115 uint8 buf[CAN_CMD_PAYLOAD_DRIVER];
mariob 0:8097eeede645 116 struct {
mariob 0:8097eeede645 117 uint32 cmd:16;
mariob 0:8097eeede645 118 uint32 opt:16;
mariob 0:8097eeede645 119 uint32 data;
mariob 0:8097eeede645 120 } msg;
mariob 0:8097eeede645 121 } can_cmd_driver_payload_t;
mariob 1:8446a0d14877 122 typedef struct can_cmd_driver_s {
mariob 0:8097eeede645 123 can_cmd_driver_payload_t payload;
mariob 0:8097eeede645 124 uint8 flag;
mariob 0:8097eeede645 125 } can_cmd_driver_t;
mariob 0:8097eeede645 126
mariob 0:8097eeede645 127 typedef union can_sts_driver_payload_s {
mariob 0:8097eeede645 128 uint8 buf[CAN_STS_PAYLOAD_DRIVER];
mariob 0:8097eeede645 129 struct {
mariob 0:8097eeede645 130 uint32 data;
mariob 0:8097eeede645 131 } msg;
mariob 0:8097eeede645 132 } can_sts_driver_payload_t;
mariob 0:8097eeede645 133 typedef struct can_sts_driver_time_s {
mariob 0:8097eeede645 134 can_sts_driver_payload_t payload;
mariob 0:8097eeede645 135 uint8 flag;
mariob 0:8097eeede645 136 } can_sts_driver_t;
mariob 0:8097eeede645 137
mariob 0:8097eeede645 138 /**************************************************
mariob 0:8097eeede645 139 * DATA STRUCTURES
mariob 0:8097eeede645 140 **************************************************/
mariob 1:8446a0d14877 141
mariob 0:8097eeede645 142
mariob 0:8097eeede645 143 #endif //__NET_H__