81 lines
1.7 KiB
C
81 lines
1.7 KiB
C
#pragma once
|
|
|
|
#ifdef __cplusplus
|
|
extern "C" {
|
|
#endif
|
|
|
|
/* Includes ----------------------------------------------------------------- */
|
|
#include <cmsis_os2.h>
|
|
#include <stdbool.h>
|
|
|
|
#include "bsp\can.h"
|
|
#include "device\device.h"
|
|
|
|
/* Exported constants ------------------------------------------------------- */
|
|
|
|
#define CAN_TX_SICK_BUF_SIZE (8)
|
|
#define CAN_RX_SICK_BUF_SIZE (8)
|
|
|
|
#define CAN_TX_BUF_SIZE_MAX (8)
|
|
#define CAN_RX_BUF_SIZE_MAX (8)
|
|
/* Exported macro ----------------------------------------------------------- */
|
|
/* Exported types ----------------------------------------------------------- */
|
|
|
|
|
|
typedef enum {
|
|
CAN_SICK1_ID = 0x000,
|
|
CAN_SICK2_ID = 0x001,
|
|
CAN_SICK3_ID = 0x002,
|
|
CAN_SICK4_ID = 0x003,
|
|
} CAN_Sick_ID_t;
|
|
|
|
// /* sick反馈信息 */
|
|
typedef struct {
|
|
uint16_t distance;
|
|
uint16_t save0;
|
|
uint16_t save1;
|
|
uint16_t save2;
|
|
} CAN_Sick_Feedback_t;
|
|
|
|
typedef struct {
|
|
uint16_t sick[4];
|
|
} CAN_Sick_Output_t;
|
|
|
|
typedef struct {
|
|
CAN_Sick_Feedback_t as_array[4];
|
|
CAN_Sick_Output_t named;
|
|
} CAN_Sick_t;
|
|
|
|
typedef struct {
|
|
BSP_CAN_t sick;
|
|
BSP_CAN_t c_board;
|
|
} CAN_Params_t;
|
|
|
|
typedef struct {
|
|
uint32_t recive_flag;
|
|
CAN_Sick_t sick;
|
|
const CAN_Params_t *param;
|
|
struct {
|
|
uint32_t sick;
|
|
} mailbox;
|
|
osMessageQueueId_t msgq_raw;
|
|
} CAN_t;
|
|
|
|
typedef struct {
|
|
CAN_RxHeaderTypeDef rx_header;
|
|
uint8_t rx_data[CAN_RX_BUF_SIZE_MAX];
|
|
} CAN_RawRx_t;
|
|
|
|
typedef struct {
|
|
CAN_TxHeaderTypeDef tx_header;
|
|
uint8_t tx_data[CAN_TX_BUF_SIZE_MAX];
|
|
} CAN_RawTx_t;
|
|
|
|
// /* Exported functions prototypes -------------------------------------------- */
|
|
int8_t CAN_Init(CAN_t *can, const CAN_Params_t *param);
|
|
|
|
|
|
#ifdef __cplusplus
|
|
}
|
|
#endif
|