65 return (Frame->
Flags >> 29) & 1;
70 return (Frame->
Flags >> 30) & 1;
77 Frame->
Flags |= (1 << 31);
80 static inline uint32_t
83 return (Frame->
Flags >> 31) & 1;
87 static inline uint32_t
90 if (temu_canIsExtendedFrame(Frame)) {
91 return Frame->
Flags & 0x1fffffff;
93 return (Frame->
Flags >> 18) & 0x7ff;
98 temu_canMakeBasicFrame(
temu_CanFrame *Frame, uint32_t Ident, uint32_t RTR,
99 uint32_t Length, uint8_t *Data)
101 Frame->
Flags = (Ident << 18) | (RTR << 30);
102 Frame->
Length = (uint8_t)Length;
104 if (Length && !RTR) {
105 memcpy(Frame->
Data, Data, Length > 8 ? 8 : Length);
110 temu_canMakeExtFrame(
temu_CanFrame *Frame, uint32_t Ident, uint32_t RTR,
111 uint32_t Length, uint8_t *Data)
113 Frame->
Flags = Ident | (RTR << 30) | (1 << 29);
114 Frame->
Length = (uint8_t)Length;
116 if (Length && !RTR) {
117 memcpy(Frame->
Data, Data, Length > 8 ? 8 : Length);
121 static inline uint32_t
124 if (temu_canIsExtendedFrame(Frame)) {
125 uint32_t DataLen = (Frame->
Length > 8 ? 8 : Frame->
Length) * 8;
126 if (temu_canIsRemoteTransmissionRequest(Frame)) {
130 return 1 + 11 + 1 + 1 + 18 + 1 + 2 + 4 + 15 + 1 + 1 + 1 + 7 + DataLen;
133 uint32_t DataLen = (Frame->
Length > 8 ? 8 : Frame->
Length) * 8;
134 if (temu_canIsRemoteTransmissionRequest(Frame)) {
137 return 1 + 11 + 1 + 1 + 1 + 4 + 15 + 1 + 1 + 1 + 7 + DataLen;
151 #define TEMU_CAN_DEV_IFACE_TYPE "CanDevIface" 152 #define TEMU_CAN_BUS_IFACE_TYPE "CanBusIface" 164 void (*
connect)(
void *Bus, temu_CanDevIfaceRef Dev);
183 void (*
setFilter)(
void *Bus, temu_CanDevIfaceRef Dev,
int FilterID,
184 uint32_t Mask, uint32_t Code);
void(* disconnected)(void *Dev)
Definition: Can.h:159
uint8_t Error
Definition: Can.h:59
void(* connect)(void *Bus, temu_CanDevIfaceRef Dev)
Definition: Can.h:164
void(* connected)(void *Dev, temu_CanBusIfaceRef Bus)
Definition: Can.h:158
uint8_t Data[8]
Definition: Can.h:56
void(* receive)(void *Dev, temu_CanFrame *Frame)
Definition: Can.h:160
uint64_t SentBits
Definition: Can.h:143
uint64_t LastReportSentBits
Definition: Can.h:142
void(* enableSendEvents)(void *Bus)
Definition: Can.h:168
uint32_t Flags
Definition: Can.h:57
void(* send)(void *Bus, void *Sender, temu_CanFrame *Frame)
Definition: Can.h:167
void(* reportStats)(void *Bus)
Definition: Can.h:170
uint8_t Length
Definition: Can.h:58
void(* disconnect)(void *Bus, temu_CanDevIfaceRef Dev)
Definition: Can.h:165
void(* setFilter)(void *Bus, temu_CanDevIfaceRef Dev, int FilterID, uint32_t Mask, uint32_t Code)
Definition: Can.h:183
void(* disableSendEvents)(void *Bus)
Definition: Can.h:169
TEMU_IFACE_REFERENCE_TYPE(temu_CanDev)