Open Model Railroad Network (OpenMRN)
Loading...
Searching...
No Matches
CanDefs.cxx
Go to the documentation of this file.
1
34#include "openlcb/CanDefs.hxx"
35
36namespace openlcb
37{
38
44{
45 switch (get_can_frame_type(can_id))
46 {
47 default:
48 return Defs::MTI_NONE;
50 return (Defs::MTI)get_mti(can_id);
52 /* fall through */
54 /* fall through */
56 /* fall through */
58 return Defs::MTI_DATAGRAM;
59 case STREAM_DATA:
61 }
62}
63
70{
71 return ((src << SRC_SHIFT ) & SRC_MASK) +
72 ((mti << MTI_SHIFT ) & MTI_MASK) +
73 ((1 << CAN_FRAME_TYPE_SHIFT) ) +
74 ((1 << FRAME_TYPE_SHIFT ) ) +
75 ((1 << PRIORITY_SHIFT ) );
76}
77
78}; /* namespace openlcb */
uint16_t NodeAlias
Alias to a 48-bit NMRAnet Node ID type.
static CanFrameType get_can_frame_type(uint32_t can_id)
Get the CAN frame type field value of the CAN ID.
Definition CanDefs.hxx:181
static uint32_t can_identifier(Defs::MTI mti, NodeAlias src)
Get the CAN identifier from an NMRAnet mti and source alias.
Definition CanDefs.cxx:69
static CanMTI get_mti(uint32_t can_id)
Get the MTI field value of the CAN ID.
Definition CanDefs.hxx:163
@ DATAGRAM_MIDDLE_FRAME
middle frame of multi-frame datagram
Definition CanDefs.hxx:103
@ DATAGRAM_FINAL_FRAME
last frame of multi-frame datagram
Definition CanDefs.hxx:104
@ DATAGRAM_FIRST_FRAME
first frame of multi-frame datagram
Definition CanDefs.hxx:102
@ GLOBAL_ADDRESSED
most CAN frame types fall in this category
Definition CanDefs.hxx:100
@ STREAM_DATA
stream data frame
Definition CanDefs.hxx:105
@ DATAGRAM_ONE_FRAME
a single frame datagram
Definition CanDefs.hxx:101
static Defs::MTI nmranet_mti(uint32_t can_id)
Get the NMRAnet MTI from a can identifier.
Definition CanDefs.cxx:43
@ SRC_MASK
mask for source field of CAN ID
Definition CanDefs.hxx:62
@ FRAME_TYPE_SHIFT
shift for frame type field of CAN ID
Definition CanDefs.hxx:75
@ MTI_MASK
mask for MTI field of CAN ID
Definition CanDefs.hxx:63
@ CAN_FRAME_TYPE_SHIFT
shift for can frame type field of CAN ID
Definition CanDefs.hxx:74
@ PRIORITY_SHIFT
shift for priority field of CAN ID
Definition CanDefs.hxx:76
@ MTI_SHIFT
shift for MTI field of CAN ID
Definition CanDefs.hxx:72
@ SRC_SHIFT
shift for source field of CAN ID
Definition CanDefs.hxx:71
MTI
Known Message type indicators.
@ MTI_NONE
invalid MTI
@ MTI_STREAM_DATA
stream data
@ MTI_DATAGRAM
datagram