rusEFI
The most advanced open source ECU
controllers
can
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
can_msg_t
int32_t can_msg_t
Definition:
can_mocks.h:6
canmbx_t
uint32_t canmbx_t
Definition:
can_mocks.h:5
can_sysinterval_t
int32_t can_sysinterval_t
Definition:
can_mocks.h:7
CANRxFrame
Definition:
can_mocks.h:36
CANRxFrame::FMI
uint8_t FMI
Filter id.
Definition:
can_mocks.h:38
CANRxFrame::SID
uint32_t SID
Standard identifier.
Definition:
can_mocks.h:48
CANRxFrame::IDE
uint8_t IDE
Identifier type.
Definition:
can_mocks.h:44
CANRxFrame::EID
uint32_t EID
Extended identifier.
Definition:
can_mocks.h:51
CANRxFrame::TIME
uint16_t TIME
Time stamp.
Definition:
can_mocks.h:39
CANRxFrame::DLC
uint8_t DLC
Data length.
Definition:
can_mocks.h:42
CANRxFrame::RTR
uint8_t RTR
Frame type.
Definition:
can_mocks.h:43
CANTxFrame
Definition:
can_mocks.h:12
CANTxFrame::SID
uint32_t SID
Standard identifier.
Definition:
can_mocks.h:20
CANTxFrame::DLC
uint8_t DLC
Data length.
Definition:
can_mocks.h:14
CANTxFrame::EID
uint32_t EID
Extended identifier.
Definition:
can_mocks.h:23
CANTxFrame::RTR
uint8_t RTR
Frame type.
Definition:
can_mocks.h:15
CANTxFrame::IDE
uint8_t IDE
Identifier type.
Definition:
can_mocks.h:16
Generated on Fri May 17 2024 00:06:46 for rusEFI by
1.9.1