diff options
Diffstat (limited to 'src/fig/FIG0.cpp')
-rw-r--r-- | src/fig/FIG0.cpp | 42 |
1 files changed, 30 insertions, 12 deletions
diff --git a/src/fig/FIG0.cpp b/src/fig/FIG0.cpp index 458116e..f738a46 100644 --- a/src/fig/FIG0.cpp +++ b/src/fig/FIG0.cpp @@ -32,10 +32,13 @@ //=========== FIG 0/0 =========== -size_t FIG0_0::fill(uint8_t *buf, size_t max_size) +FillStatus FIG0_0::fill(uint8_t *buf, size_t max_size) { + FillStatus fs; + if (max_size < 6) { - return 0; + fs.num_bytes_written = 0; + return fs; } FIGtype0_0 *fig0_0; @@ -54,7 +57,9 @@ size_t FIG0_0::fill(uint8_t *buf, size_t max_size) fig0_0->CIFcnt_hight = (m_rti->currentFrame / 250) % 20; fig0_0->CIFcnt_low = (m_rti->currentFrame % 250); - return 6; + fs.complete_fig_transmitted = true; + fs.num_bytes_written = 6; + return fs; } @@ -66,8 +71,9 @@ FIG0_1::FIG0_1(FIGRuntimeInformation *rti) : { } -size_t FIG0_1::fill(uint8_t *buf, size_t max_size) +FillStatus FIG0_1::fill(uint8_t *buf, size_t max_size) { + FillStatus fs; size_t remaining = max_size; if (not m_initialised) { @@ -75,7 +81,7 @@ size_t FIG0_1::fill(uint8_t *buf, size_t max_size) } if (max_size < 6) { - return 0; + return fs; } auto ensemble = m_rti->ensemble; @@ -96,6 +102,7 @@ size_t FIG0_1::fill(uint8_t *buf, size_t max_size) // space in the FIG0/1 if (subchannelFIG0_1 == ensemble->subchannels.end()) { subchannelFIG0_1 = ensemble->subchannels.begin(); + fs.complete_fig_transmitted = true; } for (; subchannelFIG0_1 != ensemble->subchannels.end(); @@ -152,7 +159,8 @@ size_t FIG0_1::fill(uint8_t *buf, size_t max_size) } } - return max_size - remaining; + fs.num_bytes_written = max_size - remaining; + return fs; } @@ -164,8 +172,9 @@ FIG0_2::FIG0_2(FIGRuntimeInformation *rti) : { } -size_t FIG0_2::fill(uint8_t *buf, size_t max_size) +FillStatus FIG0_2::fill(uint8_t *buf, size_t max_size) { + FillStatus fs; FIGtype0_2 *fig0_2 = NULL; int cur = 0; ssize_t remaining = max_size; @@ -180,6 +189,7 @@ size_t FIG0_2::fill(uint8_t *buf, size_t max_size) // space if (serviceFIG0_2 == ensemble->services.end()) { serviceFIG0_2 = ensemble->services.begin(); + fs.complete_fig_transmitted = true; } for (; serviceFIG0_2 != ensemble->services.end(); @@ -316,7 +326,8 @@ size_t FIG0_2::fill(uint8_t *buf, size_t max_size) ++curCpnt; } } - return max_size - remaining; + fs.num_bytes_written = max_size - remaining; + return fs; } @@ -327,8 +338,9 @@ FIG0_3::FIG0_3(FIGRuntimeInformation *rti) : { } -size_t FIG0_3::fill(uint8_t *buf, size_t max_size) +FillStatus FIG0_3::fill(uint8_t *buf, size_t max_size) { + FillStatus fs; ssize_t remaining = max_size; auto ensemble = m_rti->ensemble; @@ -398,7 +410,9 @@ size_t FIG0_3::fill(uint8_t *buf, size_t max_size) } } - return max_size - remaining; + fs.num_bytes_written = max_size - remaining; + fs.complete_fig_transmitted = true; + return fs; } //=========== FIG 0/17 =========== @@ -409,8 +423,9 @@ FIG0_17::FIG0_17(FIGRuntimeInformation *rti) : { } -size_t FIG0_17::fill(uint8_t *buf, size_t max_size) +FillStatus FIG0_17::fill(uint8_t *buf, size_t max_size) { + FillStatus fs; ssize_t remaining = max_size; if (not m_initialised) { @@ -423,7 +438,9 @@ size_t FIG0_17::fill(uint8_t *buf, size_t max_size) if (serviceFIG0_17 == ensemble->services.end()) { serviceFIG0_17 = ensemble->services.begin(); + fs.complete_fig_transmitted = true; } + for (; serviceFIG0_17 != ensemble->services.end(); ++serviceFIG0_17) { @@ -478,6 +495,7 @@ size_t FIG0_17::fill(uint8_t *buf, size_t max_size) } } - return max_size - remaining; + fs.num_bytes_written = max_size - remaining; + return fs; } |