From 49a439a4491a75d6fb57485165433582a69129e6 Mon Sep 17 00:00:00 2001 From: Naresh Nayak Date: Fri, 28 Jun 2024 11:50:53 +0000 Subject: [PATCH] First version for uC setup. Signed-off-by: Naresh Nayak --- examples/aaf/aaf-listener.c | 1 - examples/aaf/aaf-talker.c | 1 - examples/crf/crf-listener.c | 1 - examples/crf/crf-talker.c | 1 - examples/cvf/cvf-listener.c | 1 - examples/cvf/cvf-talker.c | 1 - include/avtp/CommonHeader.h | 50 +++++++++++++++++++++++++++++++++++-- meson.build | 1 - src/avtp/CommonHeader.c | 21 ++++++++++++++++ unit/test-aaf.c | 3 ++- unit/test-avtp.c | 2 +- unit/test-crf.c | 3 ++- unit/test-cvf.c | 3 ++- unit/test-rvf.c | 3 ++- 14 files changed, 78 insertions(+), 14 deletions(-) diff --git a/examples/aaf/aaf-listener.c b/examples/aaf/aaf-listener.c index a8541b7..74b7355 100644 --- a/examples/aaf/aaf-listener.c +++ b/examples/aaf/aaf-listener.c @@ -69,7 +69,6 @@ #include #include -#include "avtp.h" #include "avtp/aaf/PcmStream.h" #include "common.h" #include "avtp/CommonHeader.h" diff --git a/examples/aaf/aaf-talker.c b/examples/aaf/aaf-talker.c index 0b59859..19ee08f 100644 --- a/examples/aaf/aaf-talker.c +++ b/examples/aaf/aaf-talker.c @@ -64,7 +64,6 @@ #include #include -#include "avtp.h" #include "avtp/aaf/PcmStream.h" #include "common.h" #include "avtp/CommonHeader.h" diff --git a/examples/crf/crf-listener.c b/examples/crf/crf-listener.c index 83d70f2..951bfe9 100644 --- a/examples/crf/crf-listener.c +++ b/examples/crf/crf-listener.c @@ -99,7 +99,6 @@ #include #include -#include "avtp.h" #include "avtp/Crf.h" #include "avtp/aaf/PcmStream.h" #include "common.h" diff --git a/examples/crf/crf-talker.c b/examples/crf/crf-talker.c index 8b47257..75ee047 100644 --- a/examples/crf/crf-talker.c +++ b/examples/crf/crf-talker.c @@ -62,7 +62,6 @@ #include #include -#include "avtp.h" #include "avtp/Crf.h" #include "common.h" #include "avtp/CommonHeader.h" diff --git a/examples/cvf/cvf-listener.c b/examples/cvf/cvf-listener.c index 735a82d..c86ab89 100644 --- a/examples/cvf/cvf-listener.c +++ b/examples/cvf/cvf-listener.c @@ -72,7 +72,6 @@ #include #include -#include "avtp.h" #include "avtp/cvf/Cvf.h" #include "avtp/cvf/H264.h" #include "avtp/CommonHeader.h" diff --git a/examples/cvf/cvf-talker.c b/examples/cvf/cvf-talker.c index f89141d..4fd9bfe 100644 --- a/examples/cvf/cvf-talker.c +++ b/examples/cvf/cvf-talker.c @@ -75,7 +75,6 @@ #include #include -#include "avtp.h" #include "avtp/cvf/Cvf.h" #include "avtp/cvf/H264.h" #include "common.h" diff --git a/include/avtp/CommonHeader.h b/include/avtp/CommonHeader.h index 4d68402..54ff590 100644 --- a/include/avtp/CommonHeader.h +++ b/include/avtp/CommonHeader.h @@ -51,7 +51,7 @@ typedef struct { * Enumeration over all IEEE 1722 header fields. The naming convention used is * AVTP__FIELD_. */ -typedef enum { +typedef enum Avtp_CommonHeaderField{ /* Common AVTP header fields */ AVTP_COMMON_HEADER_FIELD_SUBTYPE = 0, AVTP_COMMON_HEADER_FIELD_H, @@ -104,4 +104,50 @@ int Avtp_CommonHeader_GetField(Avtp_CommonHeader_t* avtp_pdu, Avtp_CommonHeaderF * @returns This function returns 0 if the data field was successfully set in * the 1722 AVTP PDU. */ -int Avtp_CommonHeader_SetField(Avtp_CommonHeader_t* avtp_pdu, Avtp_CommonHeaderField_t field, uint64_t value); \ No newline at end of file +int Avtp_CommonHeader_SetField(Avtp_CommonHeader_t* avtp_pdu, Avtp_CommonHeaderField_t field, uint64_t value); + +/****************************************************************************** + * Legacy API (deprecated) + *****************************************************************************/ + +struct avtp_common_pdu { + uint32_t subtype_data; + uint8_t pdu_specific[0]; +} __attribute__ ((__packed__)); + +struct avtp_stream_pdu { + uint32_t subtype_data; + uint64_t stream_id; + uint32_t avtp_time; + uint32_t format_specific; + uint32_t packet_info; + uint8_t avtp_payload[0]; +} __attribute__ ((__packed__)); + +#define AVTP_FIELD_SUBTYPE (AVTP_COMMON_HEADER_FIELD_SUBTYPE) +#define AVTP_FIELD_VERSION (AVTP_COMMON_HEADER_FIELD_VERSION) +#define AVTP_FIELD_MAX (AVTP_COMMON_HEADER_FIELD_MAX) + +/* Get value from Common AVTPDU field. + * @pdu: Pointer to PDU struct. + * @field: PDU field to be retrieved. + * @val: Pointer to variable which the retrieved value should be saved. + * + * Returns: + * 0: Success. + * -EINVAL: If any argument is invalid. + */ +int avtp_pdu_get(const struct avtp_common_pdu *pdu, Avtp_CommonHeaderField_t field, + uint32_t *val); + +/* Set value from Common AVTPDU field. + * @pdu: Pointer to PDU struct. + * @field: PDU field to be set. + * @val: Value to be set. + * + * Returns: + * 0: Success. + * -EINVAL: If any argument is invalid. + */ +int avtp_pdu_set(struct avtp_common_pdu *pdu, Avtp_CommonHeaderField_t field, + uint32_t val); \ No newline at end of file diff --git a/meson.build b/meson.build index 0270748..9bb2350 100644 --- a/meson.build +++ b/meson.build @@ -9,7 +9,6 @@ project( avtp_lib = library( 'open1722', [ - 'src/avtp.c', 'src/avtp/Utils.c', 'src/avtp/acf/Ntscf.c', 'src/avtp/acf/Tscf.c', diff --git a/src/avtp/CommonHeader.c b/src/avtp/CommonHeader.c index 4389556..1cd6e97 100644 --- a/src/avtp/CommonHeader.c +++ b/src/avtp/CommonHeader.c @@ -52,3 +52,24 @@ int Avtp_CommonHeader_SetField(Avtp_CommonHeader_t* avtp_pdu, Avtp_CommonHeaderF { return Avtp_SetField(Avtp_CommonHeaderFieldDesc, AVTP_COMMON_HEADER_FIELD_MAX, (uint8_t*)avtp_pdu, (uint8_t)field, value); } + +/****************************************************************************** + * Legacy API + *****************************************************************************/ +int avtp_pdu_get(const struct avtp_common_pdu *pdu, Avtp_CommonHeaderField_t field, + uint32_t *val) +{ + uint64_t temp; + int ret; + ret = Avtp_CommonHeader_GetField((Avtp_CommonHeader_t*) pdu, field, &temp); + if (val == NULL) return -EINVAL; + + *val = (uint32_t)temp; + return ret; +} + +int avtp_pdu_set(struct avtp_common_pdu *pdu, Avtp_CommonHeaderField_t field, + uint32_t value) +{ + return Avtp_CommonHeader_SetField((Avtp_CommonHeader_t*) pdu, field, value); +} \ No newline at end of file diff --git a/unit/test-aaf.c b/unit/test-aaf.c index b9879a0..ec5dd8a 100644 --- a/unit/test-aaf.c +++ b/unit/test-aaf.c @@ -30,8 +30,9 @@ #include #include #include +#include -#include "avtp.h" +#include "avtp/CommonHeader.h" #include "avtp/aaf/PcmStream.h" static void aaf_get_field_null_pdu(void **state) diff --git a/unit/test-avtp.c b/unit/test-avtp.c index ac295d7..107e9d8 100644 --- a/unit/test-avtp.c +++ b/unit/test-avtp.c @@ -30,8 +30,8 @@ #include #include #include +#include -#include "avtp.h" #include "avtp/CommonHeader.h" static void get_field_null_pdu(void **state) diff --git a/unit/test-crf.c b/unit/test-crf.c index e83ff72..f6eaa70 100644 --- a/unit/test-crf.c +++ b/unit/test-crf.c @@ -31,8 +31,9 @@ #include #include #include +#include -#include "avtp.h" +#include "avtp/CommonHeader.h" #include "avtp/Crf.h" static void crf_get_field_null_pdu(void **state) diff --git a/unit/test-cvf.c b/unit/test-cvf.c index e7c6af5..68b7f45 100644 --- a/unit/test-cvf.c +++ b/unit/test-cvf.c @@ -33,8 +33,9 @@ #include #include #include +#include -#include "avtp.h" +#include "avtp/CommonHeader.h" #include "avtp/cvf/Cvf.h" #include "avtp/cvf/H264.h" diff --git a/unit/test-rvf.c b/unit/test-rvf.c index 5b53d06..1d342b0 100644 --- a/unit/test-rvf.c +++ b/unit/test-rvf.c @@ -34,8 +34,9 @@ #include #include #include +#include -#include "avtp.h" +#include "avtp/CommonHeader.h" #include "avtp/Rvf.h" static void rvf_get_field_null_pdu(void **state)