car chassis
Dependencies: Servo mbed-rtos mbed
net.hpp
- Committer:
- mariob
- Date:
- 2015-10-13
- Revision:
- 4:7fa7f78cbb92
- Parent:
- 3:bfc20ec72b15
File content as of revision 4:7fa7f78cbb92:
#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__
Mario Bambagini