rusEFI
The most advanced open source ECU
Loading...
Searching...
No Matches
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
5typedef uint32_t canmbx_t;
6typedef int32_t can_msg_t;
7typedef 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
12typedef 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 };
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.
36typedef 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 };
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