30 #include "temu-c/Support/Objsys.h" 
   63 temu_canIsExtendedFrame(temu_CanFrame *Frame)
 
   65   return (Frame
->Flags >> 29) & 1;
 
   68 temu_canIsRemoteTransmissionRequest(temu_CanFrame *Frame)
 
   70   return (Frame
->Flags >> 30) & 1;
 
   75 temu_canSetAck(temu_CanFrame *Frame)
 
   80 static inline uint32_t
 
   81 temu_canGetAck(temu_CanFrame *Frame)
 
   83   return (Frame
->Flags >> 31) & 1;
 
   87 static inline uint32_t
 
   88 temu_canGetIdent(temu_CanFrame *Frame)
 
   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);
 
  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);
 
  116   if (Length && !RTR) {
 
  117     memcpy(Frame->Data, Data, Length > 8 ? 8 : Length);
 
  121 static inline uint32_t
 
  122 temu_canBitsForFrame(temu_CanFrame *Frame)
 
  124   if (temu_canIsExtendedFrame(Frame)) {
 
  126     if (temu_canIsRemoteTransmissionRequest(Frame)) {
 
  130     return 1 + 11 + 1 + 1 + 18 + 1 + 2 + 4 + 15 + 1 + 1 + 1 + 7 + DataLen;
 
  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" 
  154 TEMU_IFACE_REFERENCE_TYPE(temu_CanDev);
 
  155 TEMU_IFACE_REFERENCE_TYPE(temu_CanBus);
 
  160   void (*
receive)(
void *Dev, temu_CanFrame *Frame);
 
  164   void (*
connect)(
void *Bus, temu_CanDevIfaceRef Dev);
 
  167   void (*
send)(
void *Bus, 
void *Sender, temu_CanFrame *Frame);
 
  183   void (*
setFilter)(
void *Bus, temu_CanDevIfaceRef Dev, 
int FilterID,
 
  184                     uint32_t Mask, uint32_t Code);