1
0
mirror of https://github.com/JvanKatwijk/qt-dab.git synced 2025-10-06 08:12:40 +02:00
Files
SDR-DAB_Qt-DAB/sources/frontend/fib-config.h

155 lines
4.0 KiB
C
Raw Normal View History

2025-03-19 12:32:08 +01:00
#
/*
* Copyright (C) 2015 .. 2025
* Jan van Katwijk (J.vanKatwijk@gmail.com)
* Lazy Chair Computing
*
* This file is part of the Qt-DAB
*
* Qt-DAB is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
* the Free Software Foundation; either version 2 of the License, or
* (at your option) any later version.
*
* Qt-DAB is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU General Public License for more details.
*
* You should have received a copy of the GNU General Public License
* along with Qt-DAB; if not, write to the Free Software
* Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
*/
#pragma once
//
// Implementation of the FIG database
#include <stdint.h>
#include <vector>
class fibConfig {
public:
fibConfig ();
~fibConfig ();
// The tables cannot made private (unless set functions for
// all structs and components are made)
// Most components are a direct translation of the
// FIG
// SId is a small optimization, not really needed
// of service components
typedef struct {
uint32_t SId;
std::vector<int> comps;
uint16_t announcing;
} SId_struct;
//
// Subchannel is filled by FIG0/1
typedef struct {
bool inUse; // will be removed after handling eti
uint16_t subChId;
int32_t Length;
int32_t startAddr;
bool shortForm;
int32_t protLevel;
int32_t bitRate;
int16_t FEC_scheme;
2025-07-25 16:18:31 +02:00
uint8_t compLanguage;
2025-03-19 12:32:08 +01:00
} subChannel;
// service components filled by FIG0/2
// The "C" stands for Common
typedef struct {
uint32_t SId;
2025-07-14 17:25:42 +02:00
uint16_t SCId;
2025-03-19 12:32:08 +01:00
uint8_t subChId;
uint8_t TMid;
int compNr;
uint8_t ASCTy;
uint8_t PS_flag;
} serviceComp_C;
//
// additional component information for packet data,
// the "P" stands for Packet, FIG0/3
typedef struct {
uint16_t SCId;
uint8_t CAOrg_flag;
uint8_t DG_flag;
uint8_t DSCTy;
uint8_t subChId;
uint16_t packetAddress;
} serviceComp_P;
//
// some more general component information
// the "G" stands for General, FIG0/8
typedef struct {
uint32_t SId;
uint8_t LS_flag;
uint8_t SCIds;
uint8_t subChId;
uint16_t SCId;
} serviceComp_G;
//
// Data for the service components Language
// FIG0/5
typedef struct {
uint8_t LS_flag;
uint8_t subChId;
uint16_t SCId;
uint8_t language;
} SC_language;
//
2025-03-29 10:51:10 +01:00
// Data for the apptype of packet components FIG0/13
2025-03-19 12:32:08 +01:00
typedef struct {
uint32_t SId;
uint8_t SCIds;
uint16_t Apptype;
} AppType;
//
2025-03-29 10:51:10 +01:00
// Data for the program type FIG0/17
2025-03-19 12:32:08 +01:00
typedef struct {
uint32_t SId;
uint8_t typeCode;
} programType;
//
2025-03-29 10:51:10 +01:00
// data for the announcement support FIG0/18
2025-03-19 12:32:08 +01:00
typedef struct {
uint16_t SId;
uint16_t asuFlags;
uint8_t clusterId;
} FIG18_cluster;
//
// for each type a table
std::vector<SId_struct> SId_table;
std::vector<subChannel> subChannel_table; // FIG0/1
std::vector<serviceComp_C> SC_C_table; // FIG0/2
std::vector<serviceComp_P> SC_P_table; // FIG0/3
std::vector<serviceComp_G> SC_G_table; // FIG0/8
std::vector<SC_language> language_table; // FIG0/5
std::vector<AppType> AppType_table; // FIG0/13
std::vector<programType> programType_table; // FIG017
std::vector<FIG18_cluster> announcement_table; // FIG0/18
2025-04-01 19:25:23 +02:00
int32_t dateTime [8];
2025-03-19 12:32:08 +01:00
void reset ();
int serviceIdOf (int index);
int SCIdsOf (int index);
int subChannelOf (int index);
int dabTypeOf (int index);
int languageOf (int index);
int appTypeOf (int index);
int FEC_schemeOf (int index);
int packetAddressOf (int index);
int DSCTy (int index);
int DG_flag (int index);
int findIndex_SC_P_Table (uint16_t SCId);
int findIndex_subChannel_table (uint8_t subChId);
int findIndex_languageTable (uint8_t key_1, uint16_t key_2);
int findIndexApptype_table (uint32_t SId, uint8_t SCIds);
bool compIsKnown (serviceComp_C &newComp);
2025-05-06 16:26:16 +02:00
int freeSpace ();
2025-03-19 12:32:08 +01:00
};