diff options
author | Matthias P. Braendli <matthias.braendli@mpb.li> | 2016-10-03 21:29:29 +0200 |
---|---|---|
committer | Matthias P. Braendli <matthias.braendli@mpb.li> | 2016-10-03 21:29:29 +0200 |
commit | 3342f01f9a0e6f1effc7a698208a072d4a120ff8 (patch) | |
tree | 4d9d84a370ba96a629a661548bb5d8a7e20b5679 | |
parent | daa2a0a54bd4dc6ea8cef43a5c1d0271cbcc71e7 (diff) | |
download | dabmux-3342f01f9a0e6f1effc7a698208a072d4a120ff8.tar.gz dabmux-3342f01f9a0e6f1effc7a698208a072d4a120ff8.tar.bz2 dabmux-3342f01f9a0e6f1effc7a698208a072d4a120ff8.zip |
Fix byte order in FIG0/6 structures
-rw-r--r-- | src/fig/FIG0_6.cpp | 5 | ||||
-rw-r--r-- | src/fig/FIG0structs.h | 23 |
2 files changed, 18 insertions, 10 deletions
diff --git a/src/fig/FIG0_6.cpp b/src/fig/FIG0_6.cpp index 20fe78b..7c09078 100644 --- a/src/fig/FIG0_6.cpp +++ b/src/fig/FIG0_6.cpp @@ -87,7 +87,7 @@ FillStatus FIG0_6::fill(uint8_t *buf, size_t max_size) fig0_6->LA = linkageSetFIG0_6->active; fig0_6->SH = linkageSetFIG0_6->hard; fig0_6->ILS = ILS; - fig0_6->LSN = linkageSetFIG0_6->lsn; + fig0_6->setLSN(linkageSetFIG0_6->lsn); fig0->Length += sizeof(struct FIGtype0_6); buf += sizeof(struct FIGtype0_6); @@ -125,7 +125,6 @@ FillStatus FIG0_6::fill(uint8_t *buf, size_t max_size) buf += headersize; remaining -= headersize; - // TODO insert key service first const std::string keyserviceuid = linkageSetFIG0_6->keyservice; const auto& keyservice = std::find_if( ensemble->services.begin(), @@ -208,6 +207,8 @@ void FIG0_6::update() { linkageSubsets.clear(); + // TODO check if AMSS and DRM have to be put into a single subset + for (const auto& linkageset : m_rti->ensemble->linkagesets) { const auto lsn = linkageset->data.lsn; diff --git a/src/fig/FIG0structs.h b/src/fig/FIG0structs.h index 4b9b7e0..3b9bfbf 100644 --- a/src/fig/FIG0structs.h +++ b/src/fig/FIG0structs.h @@ -153,11 +153,18 @@ struct FIGtype0_5_short { } PACKED; struct FIGtype0_6 { - uint16_t IdListFlag:1; - uint16_t LA:1; // Linkage actuator - uint16_t SH:1; // 0=Soft link / 1=Hard link - uint16_t ILS:1; // 0=national / 1=international - uint16_t LSN:12; // Linkage Set Number + uint8_t LSN_high:4; // Linkage Set Number + uint8_t ILS:1; // 0=national / 1=international + uint8_t SH:1; // 0=Soft link / 1=Hard link + uint8_t LA:1; // Linkage actuator + uint8_t IdListFlag:1; // Marks the presence of the list + + uint8_t LSN_low; // Linkage Set Number + + void setLSN(uint16_t LSN) { + LSN_high = LSN >> 8; + LSN_low = LSN & 0xff; + } } PACKED; #define FIG0_6_IDLQ_DAB 0x0 @@ -165,10 +172,10 @@ struct FIGtype0_6 { #define FIG0_6_IDLQ_DRM_AMSS 0x3 struct FIGtype0_6_header { - uint8_t rfu:1; // must be 0 - uint8_t IdLQ:2; // Identifier List Qualifier, see above defines - uint8_t rfa:1; // must be 0 uint8_t num_ids:4; // number of Ids to follow in the list + uint8_t rfa:1; // must be 0 + uint8_t IdLQ:2; // Identifier List Qualifier, see above defines + uint8_t rfu:1; // must be 0 } PACKED; struct FIGtype0_8_short { |