Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- * CAN ID parsing
- */
- const uint32_t id = can_frame.id & CanFrame::MaskExtID;
- transfer_id_ = uint8_t(bitunpack<0, 3>(id));
- last_frame_ = bitunpack<3, 1>(id) != 0;
- // TT-specific fields skipped
- transfer_priority_ = TransferPriority(bitunpack<27, 2>(id));
- if (transfer_priority_ == TransferPriorityService)
- {
- frame_index_ = uint_fast8_t(bitunpack<4, 6>(id));
- src_node_id_ = uint8_t(bitunpack<10, 7>(id));
- data_type_id_ = uint16_t(bitunpack<17, 9>(id));
- // RequestNotResponse
- transfer_type_ = (bitunpack<26, 1>(id) == 1U) ? TransferTypeServiceRequest : TransferTypeServiceResponse;
- }
- else
- {
- frame_index_ = uint_fast8_t(bitunpack<4, 4>(id));
- // BroadcastNotUnicast
- transfer_type_ = (bitunpack<8, 1>(id) == 1U) ? TransferTypeMessageBroadcast : TransferTypeMessageUnicast;
- src_node_id_ = uint8_t(bitunpack<9, 7>(id));
- data_type_id_ = uint16_t(bitunpack<16, 11>(id));
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement