rusEFI
The most advanced open source ECU
can_mocks.h
Go to the documentation of this file.
1 #pragma once
2 
3 // This corresponds to ChibiOS/os/hal/ports/STM32/LLD/CANv1/hal_can_lld.h
4 
5 typedef uint32_t canmbx_t;
6 typedef int32_t can_msg_t;
7 typedef int32_t can_sysinterval_t;
8 
9 #define CAN_MSG_OK (can_msg_t)0
10 #define CAN_MSG_TIMEOUT (can_msg_t)-1
11 
12 typedef struct {
13  struct {
14  uint8_t DLC:4; /**< @brief Data length. */
15  uint8_t RTR:1; /**< @brief Frame type. */
16  uint8_t IDE:1; /**< @brief Identifier type. */
17  };
18  union {
19  struct {
20  uint32_t SID:11; /**< @brief Standard identifier.*/
21  };
22  struct {
23  uint32_t EID:29; /**< @brief Extended identifier.*/
24  };
25  };
26  union {
27  uint8_t data8[8]; /**< @brief Frame data. */
28  uint16_t data16[4]; /**< @brief Frame data. */
29  uint32_t data32[2]; /**< @brief Frame data. */
30  uint64_t data64[1]; /**< @brief Frame data. */
31  };
32 } CANTxFrame;
33 
34 // Unfortunately we cannot utilize the common base class for CANTxFrame and CANRxFrame,
35 // because FMI and TIME fields come first, and we don't want to affect the fields order.
36 typedef struct {
37  struct {
38  uint8_t FMI; /**< @brief Filter id. */
39  uint16_t TIME; /**< @brief Time stamp. */
40  };
41  struct {
42  uint8_t DLC:4; /**< @brief Data length. */
43  uint8_t RTR:1; /**< @brief Frame type. */
44  uint8_t IDE:1; /**< @brief Identifier type. */
45  };
46  union {
47  struct {
48  uint32_t SID:11; /**< @brief Standard identifier.*/
49  };
50  struct {
51  uint32_t EID:29; /**< @brief Extended identifier.*/
52  };
53  };
54  union {
55  uint8_t data8[8]; /**< @brief Frame data. */
56  uint16_t data16[4]; /**< @brief Frame data. */
57  uint32_t data32[2]; /**< @brief Frame data. */
58  uint64_t data64[1]; /**< @brief Frame data. */
59  };
60 } CANRxFrame;
61 
62 #define CAN_IDE_STD 0 /**< @brief Standard id. */
63 #define CAN_IDE_EXT 1 /**< @brief Extended id. */
64 
65 #define CAN_RTR_DATA 0 /**< @brief Data frame. */
66 #define CAN_RTR_REMOTE 1 /**< @brief Remote frame. */
67 
68 #define CAN_ANY_MAILBOX 0U
int32_t can_msg_t
Definition: can_mocks.h:6
uint32_t canmbx_t
Definition: can_mocks.h:5
int32_t can_sysinterval_t
Definition: can_mocks.h:7
uint8_t FMI
Filter id.
Definition: can_mocks.h:38
uint32_t SID
Standard identifier.
Definition: can_mocks.h:48
uint8_t IDE
Identifier type.
Definition: can_mocks.h:44
uint32_t EID
Extended identifier.
Definition: can_mocks.h:51
uint16_t TIME
Time stamp.
Definition: can_mocks.h:39
uint8_t DLC
Data length.
Definition: can_mocks.h:42
uint8_t RTR
Frame type.
Definition: can_mocks.h:43
uint32_t SID
Standard identifier.
Definition: can_mocks.h:20
uint8_t DLC
Data length.
Definition: can_mocks.h:14
uint32_t EID
Extended identifier.
Definition: can_mocks.h:23
uint8_t RTR
Frame type.
Definition: can_mocks.h:15
uint8_t IDE
Identifier type.
Definition: can_mocks.h:16