Advertisement
Guest User

Untitled

a guest
Jun 29th, 2015
261
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.00 KB | None | 0 0
  1. /*
  2. * CAN ID parsing
  3. */
  4. const uint32_t id = can_frame.id & CanFrame::MaskExtID;
  5. transfer_id_ = uint8_t(bitunpack<0, 3>(id));
  6. last_frame_ = bitunpack<3, 1>(id) != 0;
  7. // TT-specific fields skipped
  8. transfer_priority_ = TransferPriority(bitunpack<27, 2>(id));
  9.  
  10. if (transfer_priority_ == TransferPriorityService)
  11. {
  12. frame_index_ = uint_fast8_t(bitunpack<4, 6>(id));
  13. src_node_id_ = uint8_t(bitunpack<10, 7>(id));
  14. data_type_id_ = uint16_t(bitunpack<17, 9>(id));
  15. // RequestNotResponse
  16. transfer_type_ = (bitunpack<26, 1>(id) == 1U) ? TransferTypeServiceRequest : TransferTypeServiceResponse;
  17. }
  18. else
  19. {
  20. frame_index_ = uint_fast8_t(bitunpack<4, 4>(id));
  21. // BroadcastNotUnicast
  22. transfer_type_ = (bitunpack<8, 1>(id) == 1U) ? TransferTypeMessageBroadcast : TransferTypeMessageUnicast;
  23. src_node_id_ = uint8_t(bitunpack<9, 7>(id));
  24. data_type_id_ = uint16_t(bitunpack<16, 11>(id));
  25. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement