From 5d413601532384b552a996aa566bf92db0e643c7 Mon Sep 17 00:00:00 2001 From: Adriaan Niess Date: Fri, 23 Aug 2024 22:35:05 +0200 Subject: [PATCH] Update GetField API for ACF CAN Brief Signed-off-by: Adriaan Niess --- include/avtp/acf/CanBrief.h | 12 +++----- src/avtp/acf/CanBrief.c | 56 +++++++++++++------------------------ 2 files changed, 24 insertions(+), 44 deletions(-) diff --git a/include/avtp/acf/CanBrief.h b/include/avtp/acf/CanBrief.h index 619bf1e..6f8861f 100644 --- a/include/avtp/acf/CanBrief.h +++ b/include/avtp/acf/CanBrief.h @@ -74,18 +74,16 @@ typedef enum { * * @param pdu Pointer to the first bit of a 1722 ACF Abbreviated CAN PDU. */ -int Avtp_CanBrief_Init(Avtp_CanBrief_t* can_pdu); +void Avtp_CanBrief_Init(Avtp_CanBrief_t* can_pdu); /** * Returns the value of an an ACF Abbreviated CAN PDU field as specified in the IEEE 1722 Specification. * * @param pdu Pointer to the first bit of an 1722 ACF Abbreviated CAN PDU. * @param field Specifies the position of the data field to be read - * @param value Pointer to location to store the value. - * @returns This function returns 0 if the data field was successfully read from - * the 1722 ACF Abbreviated CAN PDU. + * @returns Field of CAN Brief PDU. */ -int Avtp_CanBrief_GetField(Avtp_CanBrief_t* can_pdu, Avtp_CanBriefFields_t field, uint64_t* value); +uint64_t Avtp_CanBrief_GetField(Avtp_CanBrief_t* can_pdu, Avtp_CanBriefFields_t field); /** * Sets the value of an an ACF Abbreviated CAN PDU field as specified in the IEEE 1722 Specification. @@ -93,10 +91,8 @@ int Avtp_CanBrief_GetField(Avtp_CanBrief_t* can_pdu, Avtp_CanBriefFields_t field * @param pdu Pointer to the first bit of an 1722 ACF Abbreviated CAN PDU. * @param field Specifies the position of the data field to be read * @param value Pointer to location to store the value. - * @returns This function returns 0 if the data field was successfully set in - * the 1722 ACF Abbreviated CAN PDU. */ -int Avtp_CanBrief_SetField(Avtp_CanBrief_t* can_pdu, Avtp_CanBriefFields_t field, uint64_t value); +void Avtp_CanBrief_SetField(Avtp_CanBrief_t* can_pdu, Avtp_CanBriefFields_t field, uint64_t value); /** * Copies the payload data into the ACF CAN Brief frame. This function will also set the diff --git a/src/avtp/acf/CanBrief.c b/src/avtp/acf/CanBrief.c index ac899a9..725b961 100644 --- a/src/avtp/acf/CanBrief.c +++ b/src/avtp/acf/CanBrief.c @@ -55,56 +55,42 @@ static const Avtp_FieldDescriptor_t Avtp_CanBriefFieldDesc[AVTP_CAN_BRIEF_FIELD_ [AVTP_CAN_BRIEF_FIELD_CAN_IDENTIFIER] = { .quadlet = 1, .offset = 3, .bits = 29 }, }; -int Avtp_CanBrief_Init(Avtp_CanBrief_t* can_pdu) +void Avtp_CanBrief_Init(Avtp_CanBrief_t* can_pdu) { - if(!can_pdu) { - return -EINVAL; + if(can_pdu == NULL) { + memset(can_pdu, 0, sizeof(Avtp_CanBrief_t)); + Avtp_CanBrief_SetField(can_pdu, AVTP_CAN_BRIEF_FIELD_ACF_MSG_TYPE, AVTP_ACF_TYPE_CAN_BRIEF); } - - memset(can_pdu, 0, sizeof(Avtp_CanBrief_t)); - Avtp_CanBrief_SetField(can_pdu, AVTP_CAN_BRIEF_FIELD_ACF_MSG_TYPE, AVTP_ACF_TYPE_CAN_BRIEF); - - return 0; } -int Avtp_CanBrief_GetField(Avtp_CanBrief_t* can_pdu, Avtp_CanBriefFields_t field, uint64_t* value) +uint64_t Avtp_CanBrief_GetField(Avtp_CanBrief_t* can_pdu, Avtp_CanBriefFields_t field) { - return Avtp_GetField(Avtp_CanBriefFieldDesc, AVTP_CAN_BRIEF_FIELD_MAX, (uint8_t *) can_pdu, (uint8_t) field, value); + return Avtp_GetField(Avtp_CanBriefFieldDesc, AVTP_CAN_BRIEF_FIELD_MAX, (uint8_t *) can_pdu, (uint8_t) field); } -int Avtp_CanBrief_SetField(Avtp_CanBrief_t* can_pdu, Avtp_CanBriefFields_t field, uint64_t value) +void Avtp_CanBrief_SetField(Avtp_CanBrief_t* can_pdu, Avtp_CanBriefFields_t field, uint64_t value) { - return Avtp_SetField(Avtp_CanBriefFieldDesc, AVTP_CAN_BRIEF_FIELD_MAX, (uint8_t *) can_pdu, (uint8_t) field, value); + Avtp_SetField(Avtp_CanBriefFieldDesc, AVTP_CAN_BRIEF_FIELD_MAX, (uint8_t *) can_pdu, (uint8_t) field, value); } int Avtp_CanBrief_SetPayload(Avtp_CanBrief_t* can_pdu, uint32_t frame_id , uint8_t* payload, - uint16_t payload_length, Avtp_CanVariant_t can_variant) { - - int ret = 0; - int eff; - + uint16_t payload_length, Avtp_CanVariant_t can_variant) +{ // Copy the payload into the CAN PDU memcpy(can_pdu->payload, payload, payload_length); // Set the Frame ID and CAN variant - eff = frame_id > 0x7ff? 1 : 0; - ret = Avtp_CanBrief_SetField(can_pdu, AVTP_CAN_BRIEF_FIELD_EFF, eff); - if (ret) return ret; - ret = Avtp_CanBrief_SetField(can_pdu, AVTP_CAN_BRIEF_FIELD_CAN_IDENTIFIER, frame_id); - if (ret) return ret; - ret = Avtp_CanBrief_SetField(can_pdu, AVTP_CAN_BRIEF_FIELD_FDF, (uint8_t) can_variant); - if (ret) return ret; + int eff = frame_id > 0x7ff? 1 : 0; + Avtp_CanBrief_SetField(can_pdu, AVTP_CAN_BRIEF_FIELD_EFF, eff); + Avtp_CanBrief_SetField(can_pdu, AVTP_CAN_BRIEF_FIELD_CAN_IDENTIFIER, frame_id); + Avtp_CanBrief_SetField(can_pdu, AVTP_CAN_BRIEF_FIELD_FDF, (uint8_t) can_variant); // Finalize the AVTP CAN Frame - ret = Avtp_CanBrief_Finalize(can_pdu, payload_length); - - return ret; - + return Avtp_CanBrief_Finalize(can_pdu, payload_length); } -int Avtp_CanBrief_Finalize(Avtp_CanBrief_t* can_pdu, uint16_t payload_length) { - - int ret = 0; +int Avtp_CanBrief_Finalize(Avtp_CanBrief_t* can_pdu, uint16_t payload_length) +{ uint8_t padSize; uint32_t avtpCanLength = AVTP_CAN_BRIEF_HEADER_LEN + payload_length; @@ -116,11 +102,9 @@ int Avtp_CanBrief_Finalize(Avtp_CanBrief_t* can_pdu, uint16_t payload_length) { } // Set the length and padding fields - ret = Avtp_CanBrief_SetField(can_pdu, AVTP_CAN_BRIEF_FIELD_ACF_MSG_LENGTH, - (uint64_t) avtpCanLength/AVTP_QUADLET_SIZE); - if (ret) return ret; - ret = Avtp_CanBrief_SetField(can_pdu, AVTP_CAN_BRIEF_FIELD_PAD, padSize); - if (ret) return ret; + Avtp_CanBrief_SetField(can_pdu, AVTP_CAN_BRIEF_FIELD_ACF_MSG_LENGTH, + (uint64_t)avtpCanLength/AVTP_QUADLET_SIZE); + Avtp_CanBrief_SetField(can_pdu, AVTP_CAN_BRIEF_FIELD_PAD, padSize); return avtpCanLength; }