vkweigher.WeigherCalib_req.c 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  1. #define CANARD_DSDLC_INTERNAL
  2. #include <vkweigher.WeigherCalib_req.h>
  3. #include <vkweigher.WeigherCalib_res.h>
  4. #include <string.h>
  5. #ifdef CANARD_DSDLC_TEST_BUILD
  6. #include <test_helpers.h>
  7. #endif
  8. uint32_t vkweigher_WeigherCalibRequest_encode(struct vkweigher_WeigherCalibRequest* msg, uint8_t* buffer
  9. #if CANARD_ENABLE_TAO_OPTION
  10. , bool tao
  11. #endif
  12. ) {
  13. uint32_t bit_ofs = 0;
  14. memset(buffer, 0, VKWEIGHER_WEIGHERCALIB_REQUEST_MAX_SIZE);
  15. _vkweigher_WeigherCalibRequest_encode(buffer, &bit_ofs, msg,
  16. #if CANARD_ENABLE_TAO_OPTION
  17. tao
  18. #else
  19. true
  20. #endif
  21. );
  22. return ((bit_ofs+7)/8);
  23. }
  24. /*
  25. return true if the decode is invalid
  26. */
  27. bool vkweigher_WeigherCalibRequest_decode(const CanardRxTransfer* transfer, struct vkweigher_WeigherCalibRequest* msg) {
  28. #if CANARD_ENABLE_TAO_OPTION
  29. if (transfer->tao && (transfer->payload_len > VKWEIGHER_WEIGHERCALIB_REQUEST_MAX_SIZE)) {
  30. return true; /* invalid payload length */
  31. }
  32. #endif
  33. uint32_t bit_ofs = 0;
  34. if (_vkweigher_WeigherCalibRequest_decode(transfer, &bit_ofs, msg,
  35. #if CANARD_ENABLE_TAO_OPTION
  36. transfer->tao
  37. #else
  38. true
  39. #endif
  40. )) {
  41. return true; /* invalid payload */
  42. }
  43. const uint32_t byte_len = (bit_ofs+7U)/8U;
  44. #if CANARD_ENABLE_TAO_OPTION
  45. // if this could be CANFD then the dlc could indicating more bytes than
  46. // we actually have
  47. if (!transfer->tao) {
  48. return byte_len > transfer->payload_len;
  49. }
  50. #endif
  51. return byte_len != transfer->payload_len;
  52. }
  53. #ifdef CANARD_DSDLC_TEST_BUILD
  54. struct vkweigher_WeigherCalibRequest sample_vkweigher_WeigherCalibRequest_msg(void) {
  55. struct vkweigher_WeigherCalibRequest msg;
  56. msg.weight = (uint32_t)random_bitlen_unsigned_val(32);
  57. return msg;
  58. }
  59. #endif