DVBCore  20.3.0
DVBCore Documentation
dba.h
Go to the documentation of this file.
1 /*******************************************************************************
2  * Copyright © 2014 The DTVKit Open Software Foundation Ltd (www.dtvkit.org)
3  * Copyright © 2013 Ocean Blue Software Ltd
4  *
5  * This file is part of a DTVKit Software Component
6  * You are permitted to copy, modify or distribute this file subject to the terms
7  * of the DTVKit 1.0 Licence which can be found in licence.txt or at www.dtvkit.org
8  *
9  * THIS CODE AND INFORMATION ARE PROVIDED "AS IS" WITHOUT WARRANTY OF ANY KIND,
10  * EITHER EXPRESSED OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE IMPLIED WARRANTIES
11  * OF MERCHANTABILITY AND/OR FITNESS FOR A PARTICULAR PURPOSE.
12  *
13  * If you or your organisation is not a member of DTVKit then you have access
14  * to this source code outside of the terms of the licence agreement
15  * and you are expected to delete this and any associated files immediately.
16  * Further information on DTVKit, membership and terms can be found at www.dtvkit.org
17  *******************************************************************************/
25 /* Pre-processor mechanism so multiple inclusions don't cause compilation error */
26 
27 #ifndef _DBA_H
28 #define _DBA_H
29 
30 #include "techtype.h"
31 
32 //---Constant and macro definitions for public use-----------------------------
33 
34 /* Field IDs MUST be unique but need not be contiguous within records range 0x0000 to 0xffff
35  * some fields are used in more than one record spare IDs are left for future expansion. */
36 
37 /* Fields common to more than one record type */
38 #define DBA_FIELD_PARENT 0x0100
39 #define DBA_FIELD_REC_NAME 0x0101
40 #define DBA_FIELD_ORIG_NET_ID 0x0102
41 #define DBA_FIELD_NET_ID 0x0103
42 #define DBA_FIELD_TRANSPORT_ID 0x0104
43 #define DBA_FIELD_SERVICE_ID 0x0105
44 #define DBA_FIELD_VERSION 0x0106
45 
46 /* Fields in LNB records */
47 #define DBA_FIELD_LNB_TYPE 0x0202
48 #define DBA_FIELD_LNB_22K 0x0203
49 #define DBA_FIELD_LNB_12V 0x0204
50 #define DBA_FIELD_LNB_PULSEPOSN 0x0205
51 #define DBA_FIELD_LNB_DISPOSN 0x0206
52 #define DBA_FIELD_LNB_DISTONE 0x0207
53 #define DBA_FIELD_LNB_DISCSWITCH 0x0208
54 #define DBA_FIELD_LNB_DISUSWITCH 0x0209
55 #define DBA_FIELD_LNB_DISSMATV 0x020a
56 #define DBA_FIELD_LNB_DISREPEAT 0x020b
57 #define DBA_FIELD_LNB_UNICABLEFREQ 0x020c
58 #define DBA_FIELD_LNB_UNICABLECHAN 0x020d
59 #define DBA_FIELD_LNB_POWER 0x020e
60 #define DBA_FIELD_LNB_NAME 0x020f
61 
62 /* Fields in satellite records */
63 #define DBA_FIELD_SAT_DISH 0x0300
64 #define DBA_FIELD_SAT_LONGWE 0x0301
65 #define DBA_FIELD_SAT_LONGPOS 0x0302
66 
67 /* Fields in network records */
68 #define DBA_FIELD_PROFILE_TYPE 0x0401
69 #define DBA_FIELD_PROFILE_CAM_ID 0x0402
70 #define DBA_FIELD_PROFILE_NAME 0x0403
71 #define DBA_FIELD_OPERATOR_SEARCH 0x0404
72 #define DBA_FIELD_OP_SEARCH_DATE 0x0405
73 #define DBA_FIELD_OP_SEARCH_TIME 0x0406
74 
75 /* Fields common to transport records */
76 #define DBA_FIELD_TRAN_FREQ 0x0500
77 #define DBA_FIELD_TRAN_SRATE 0x0501
78 #define DBA_FIELD_TRAN_SIGNAL_STRENGTH 0x0502
79 #define DBA_FIELD_TRAN_SIGNAL_QUALITY 0x0503
80 
81 /* Fields in satellite transport records */
82 #define DBA_FIELD_STRAN_POL 0x0600
83 #define DBA_FIELD_STRAN_FEC 0x0601
84 #define DBA_FIELD_STRAN_DVBS2 0x0602
85 #define DBA_FIELD_STRAN_MODULATION 0x0603
86 
87 /* Fields in terrestrial transport records */
88 #define DBA_FIELD_TTRAN_MODE 0x0700
89 #define DBA_FIELD_TTRAN_TERR_TYPE 0x0701
90 #define DBA_FIELD_TTRAN_PLP_ID 0x0702
91 #define DBA_FIELD_TTRAN_BWIDTH 0x0703
92 
93 /* Fields in cable transport records */
94 #define DBA_FIELD_CTRAN_MODE 0x0800
95 
96 /* Fields common to service records */
97 #define DBA_FIELD_SERV_ID 0x0900
98 #define DBA_FIELD_SERV_TYPE 0x0901
99 #define DBA_FIELD_SERV_LCN 0x0902
100 #define DBA_FIELD_SERV_REQ_LCN 0x0903
101 #define DBA_FIELD_SERV_HIDDEN 0x0904
102 #define DBA_FIELD_SERV_SELECTABLE 0x0905
103 #define DBA_FIELD_SERV_LOCKED 0x0906
104 #define DBA_FIELD_SERV_SCHED_DISABLED 0x0907
105 #define DBA_FIELD_SERV_NOWNEXT_DISABLED 0x0908
106 #define DBA_FIELD_SERV_FAV_GROUPS 0x0909
107 #define DBA_FIELD_SERV_FREESAT_ID 0x090a
108 #define DBA_FIELD_SERV_REGION_ID 0x090b
109 #define DBA_FIELD_SERV_LCN_EDITABLE 0x090c
110 #define DBA_FIELD_SERV_DELETED 0x090d
111 
112 /* Fields in timer records */
113 #define DBA_FIELD_TIMER_HANDLE 0x0a00
114 #define DBA_FIELD_TIMER_STARTTIME 0x0a01
115 #define DBA_FIELD_TIMER_DURATION 0x0a02
116 #define DBA_FIELD_TIMER_TYPE 0x0a03
117 #define DBA_FIELD_TIMER_FREQUENCY 0x0a04
118 #define DBA_FIELD_TIMER_RAMPVOLUME 0x0a05
119 #define DBA_FIELD_TIMER_EVENTID 0x0a06
120 #define DBA_FIELD_TIMER_NOTIFY_TIME 0x0a07
121 #define DBA_FIELD_TIMER_CRID 0x0a08
122 #define DBA_FIELD_TIMER_DISKID 0x0a09
123 #define DBA_FIELD_TIMER_OTHERCRID 0x0a0a
124 #define DBA_FIELD_TIMER_MISSED 0x0a0b
125 #define DBA_FIELD_TIMER_EVENT_TRIGGERED 0x0a0c
126 #define DBA_FIELD_TIMER_ADDITIONAL_INFO 0x0a0d
127 #define DBA_FIELD_TIMER_START_PADDING 0x0a0e
128 #define DBA_FIELD_TIMER_END_PADDING 0x0a0f
129 #define DBA_FIELD_TIMER_DO_NOT_DELETE 0x0a10
130 
131 /* Fields in CRID records */
132 #define DBA_FIELD_CRID_EIT_DATE 0x0b00
133 #define DBA_FIELD_CRID_SERIES 0x0b01
134 #define DBA_FIELD_CRID_RECOMMENDED 0x0b02
135 #define DBA_FIELD_CRID_DO_NOT_DELETE 0x0b03
136 
137 /* Fields in favourite lists and favourite services */
138 #define DBA_FIELD_FAVLIST_ID 0x0c00
139 #define DBA_FIELD_FAVLIST_INDEX 0x0c01
140 #define DBA_FIELD_FAVLIST_USER_DATA 0x0c02
141 
142 /* Fields used to store event information */
143 #define DBA_FIELD_EVENT_STARTTIME 0x0d00
144 #define DBA_FIELD_EVENT_DURATION 0x0d01
145 #define DBA_FIELD_EVENT_ID 0x0d02
146 #define DBA_FIELD_EVENT_CONTENT 0x0d03
147 #define DBA_FIELD_EVENT_AGE_RATING 0x0d04
148 #define DBA_FIELD_EVENT_SCRAMBLED 0x0d05
149 #define DBA_FIELD_EVENT_SUBTITLES 0x0d06
150 #define DBA_FIELD_EVENT_AUDIO_DESC 0x0d07
151 #define DBA_FIELD_EVENT_FREE_TO_AIR 0x0d08
152 #define DBA_FIELD_EVENT_DO_NOT_SCRAMBLE 0x0d09
153 #define DBA_FIELD_EVENT_NAME 0x0d0a
154 #define DBA_FIELD_EVENT_DESCRIPTION 0x0d0b
155 #define DBA_FIELD_EVENT_EXTENDED_DESC 0x0d0c
156 #define DBA_FIELD_EVENT_GUIDANCE 0x0d0d
157 #define DBA_FIELD_EVENT_CONTENT_DATA 0x0d0e
158 
159 /* Fields in LNB band records */
160 #define DBA_FIELD_BAND_POLARITY 0x0e00
161 #define DBA_FIELD_BAND_MIN_FREQUENCY 0x0e01
162 #define DBA_FIELD_BAND_MAX_FREQUENCY 0x0e02
163 #define DBA_FIELD_BAND_LOCAL_OSC_FREQUENCY 0x0e03
164 #define DBA_FIELD_BAND_LNB_VOLTAGE 0x0e04
165 #define DBA_FIELD_BAND_22_KHZ 0x0e05
166 
167 
168 //---Enumerations for public use-----------------------------------------------
169 
170 /* Set of record types supported by the database, though not all types may be supported
171  * by all database implementations */
172 typedef enum
173 {
174  DBA_RECORD_LNB = 0,
175  DBA_RECORD_SATELLITE,
176  DBA_RECORD_NETWORK,
177  DBA_RECORD_SAT_TRANSPORT,
178  DBA_RECORD_TERR_TRANSPORT,
179  DBA_RECORD_CAB_TRANSPORT,
180  DBA_RECORD_SERVICE,
181  DBA_RECORD_TIMER,
182  DBA_RECORD_CRID,
183  DBA_RECORD_FAV_LIST,
184  DBA_RECORD_FAV_SERV,
185  DBA_RECORD_LNB_BAND,
186  DBA_RECORD_CICAM_TIMER,
187  /*DBA_RECORD_EVENT,*/
188  DBA_NUM_RECORDS /* This must be the last value in the enum */
189 } E_DBA_RECORDS;
190 
191 
192 //---Global type defs for public use-------------------------------------------
193 
194 //---Global Function prototypes for public use---------------------------------
195 
200 BOOLEAN DBA_Initialise(void);
201 
206 void DBA_Terminate(void);
207 
217 BOOLEAN DBA_LoadDatabase(U8BIT *pathname);
218 
224 BOOLEAN DBA_SaveDatabase(void);
225 
232 BOOLEAN DBA_ClearDatabase(void);
233 
242 BOOLEAN DBA_BackupDatabase(U8BIT *pathname);
243 
248 BOOLEAN DBA_CanRestoreDatabase(void);
249 
254 BOOLEAN DBA_RestoreDatabase(void);
255 
260 void DBA_EraseBackupDatabase(void);
261 
267 BOOLEAN DBA_ExportToXML(U8BIT *xml_pathname);
268 
276 BOOLEAN DBA_ImportFromXML(U8BIT *xml_pathname);
277 
281 void DBA_LockDatabase(void);
282 
286 void DBA_UnlockDatabase(void);
287 
292 U8BIT* DBA_DatabaseVersion(void);
293 
300 U32BIT DBA_DatabaseFileSize(U32BIT *max_size);
301 
309 void* DBA_CreateRecord(U32BIT record_id, void *parent);
310 
316 void DBA_DestroyRecord(void *record);
317 
328 void* DBA_FindRecord(U32BIT record_id, void *parent, void *last_rec);
329 
335 void DBA_SetRecordParent(void *record, void *parent);
336 
342 void* DBA_GetRecordParent(void *record);
343 
350 void DBA_SaveRecord(void *record);
351 
360 BOOLEAN DBA_SetFieldValue(void *record, U32BIT field_id, U32BIT value);
361 
373 BOOLEAN DBA_SetFieldString(void *record, U32BIT field_id, U8BIT *string, U16BIT num_bytes);
374 
387 BOOLEAN DBA_SetFieldLangString(void *record, U32BIT field_id, U32BIT lang_code, U8BIT *string,
388  U16BIT num_bytes);
389 
400 BOOLEAN DBA_SetFieldData(void *record, U32BIT field_id, U8BIT *data, U16BIT num_bytes);
401 
410 BOOLEAN DBA_GetFieldValue(void *record, U32BIT field_id, U32BIT *value);
411 
423 BOOLEAN DBA_GetFieldString(void *record, U32BIT field_id, U8BIT **string, U16BIT *num_bytes);
424 
437 BOOLEAN DBA_GetFieldLangString(void *record, U32BIT field_id, U32BIT lang_code, U8BIT **string,
438  U16BIT *num_bytes);
439 
451 BOOLEAN DBA_GetFieldData(void *record, U32BIT field_id, U8BIT **data, U16BIT *num_bytes);
452 
458 U32BIT DBA_DataBlockSize(U32BIT data_block_id);
459 
467 U32BIT DBA_DataBlockRead(U32BIT data_block_id, U8BIT *data, U32BIT max_num_bytes);
468 
476 BOOLEAN DBA_DataBlockWrite(U32BIT data_block_id, U8BIT *data, U32BIT num_bytes);
477 
478 #endif /* _DBA_H */
479 
BOOLEAN DBA_GetFieldData(void *record, U32BIT field_id, U8BIT **data, U16BIT *num_bytes)
Gets the data of a record's field. The function will fail if the record doesn't exist, the record doesn't include the given field, or the field isn't a data field. The pointer to the data returned will be to the data held by the database, so the data must not be changed.
Definition: dba_nvm.c:1488
void * DBA_FindRecord(U32BIT record_id, void *parent, void *last_rec)
Finds the next record, of the given type, that comes after last_rec. last_rec must be the same type o...
Definition: dba_nvm.c:1055
BOOLEAN DBA_RestoreDatabase(void)
Restores the working database from a previously made backup copy.
Definition: dba_nvm.c:789
U8BIT * DBA_DatabaseVersion(void)
Returns a version string representing the working database.
Definition: dba_nvm.c:887
void DBA_SaveRecord(void *record)
Forces a record to be saved to non-volatile storage. Depending on the implementation, this function may not do anything if the data is updated to non-volatile storage as any records and/or fields are created or updated.
Definition: dba_nvm.c:1157
void DBA_DestroyRecord(void *record)
Destroys the given record, removing it from the database and freeing any memory associated with it...
Definition: dba_nvm.c:1013
BOOLEAN DBA_GetFieldString(void *record, U32BIT field_id, U8BIT **string, U16BIT *num_bytes)
Gets the string value of a record's field. The function will fail if the record doesn't exist...
Definition: dba_nvm.c:1400
BOOLEAN DBA_SetFieldData(void *record, U32BIT field_id, U8BIT *data, U16BIT num_bytes)
Set a variable amount of data of a record's field. The function will fail if the record doesn't exist...
Definition: dba_nvm.c:1318
BOOLEAN DBA_SetFieldLangString(void *record, U32BIT field_id, U32BIT lang_code, U8BIT *string, U16BIT num_bytes)
Set the string value of a record's field. The function will fail if the record doesn't exist...
Definition: dba_nvm.c:1291
void DBA_SetRecordParent(void *record, void *parent)
Set of change the parent of the given record.
Definition: dba_nvm.c:1080
BOOLEAN DBA_SetFieldValue(void *record, U32BIT field_id, U32BIT value)
Set the value of a record's field. The function will fail if the record doesn't exist, the record doesn't include the given field, or the field isn't a value field.
Definition: dba_nvm.c:1175
void DBA_LockDatabase(void)
Locks the database to prevent access from other threads or processes.
Definition: dba_nvm.c:866
U32BIT DBA_DataBlockSize(U32BIT data_block_id)
Returns the number of bytes available for the given data block.
Definition: dba_nvm.c:1508
void * DBA_CreateRecord(U32BIT record_id, void *parent)
Creates a new record of the given type, adding it to the database as a child of the given parent reco...
Definition: dba_nvm.c:940
BOOLEAN DBA_BackupDatabase(U8BIT *pathname)
Creates a backup copy of the working database. Whether the backup database is saved to non-volatile s...
Definition: dba_nvm.c:723
BOOLEAN DBA_GetFieldValue(void *record, U32BIT field_id, U32BIT *value)
Gets the value of a record's field. The function will fail if the record doesn't exist, the record doesn't include the given field, or the field isn't a value field.
Definition: dba_nvm.c:1341
BOOLEAN DBA_GetFieldLangString(void *record, U32BIT field_id, U32BIT lang_code, U8BIT **string, U16BIT *num_bytes)
Gets the string value of a record's field. The function will fail if the record doesn't exist...
Definition: dba_nvm.c:1460
BOOLEAN DBA_DataBlockWrite(U32BIT data_block_id, U8BIT *data, U32BIT num_bytes)
Writes a block of data into the database from the given buffer.
Definition: dba_nvm.c:1560
BOOLEAN DBA_LoadDatabase(U8BIT *pathname)
Reads a database from non-volatile storage, creating any structures in memory that will be required t...
Definition: dba_nvm.c:541
BOOLEAN DBA_SetFieldString(void *record, U32BIT field_id, U8BIT *string, U16BIT num_bytes)
Set the string value of a record's field. The function will fail if the record doesn't exist...
Definition: dba_nvm.c:1227
U32BIT DBA_DataBlockRead(U32BIT data_block_id, U8BIT *data, U32BIT max_num_bytes)
Read a block of data from the database into the given buffer.
Definition: dba_nvm.c:1528
System Wide Global Technical Data Type Definitions.
void DBA_EraseBackupDatabase(void)
Erases the backup copy of the database. If data was stored in non-volatile storage then this should b...
Definition: dba_nvm.c:822
BOOLEAN DBA_ClearDatabase(void)
Clears the working database of all records. Following this call, it should still be possible to acces...
Definition: dba_nvm.c:694
void * DBA_GetRecordParent(void *record)
Returns the handle to the parent of the given record.
Definition: dba_nvm.c:1129
void DBA_Terminate(void)
Releases any resources acquired by initialisation and clears any currently loaded database...
Definition: dba_nvm.c:508
void DBA_UnlockDatabase(void)
Unlocks the database to allow other threads or processes to access it.
Definition: dba_nvm.c:876
U32BIT DBA_DatabaseFileSize(U32BIT *max_size)
Returns the size in bytes of the database as stored in non-volatile storage.
Definition: dba_nvm.c:915
BOOLEAN DBA_ImportFromXML(U8BIT *xml_pathname)
Imports records from the given XML file into the working database. If a record already exists in the ...
Definition: dba_nvm.c:855
BOOLEAN DBA_Initialise(void)
Performs any initialisation required prior to the database being loaded.
Definition: dba_nvm.c:482
BOOLEAN DBA_CanRestoreDatabase(void)
Checks whether the working database can be restored from a backup copy.
Definition: dba_nvm.c:766
BOOLEAN DBA_SaveDatabase(void)
Saves any changes made to the working database to non-volatile storage. If saving to a file...
Definition: dba_nvm.c:667
BOOLEAN DBA_ExportToXML(U8BIT *xml_pathname)
Export the working database to an XML file.
Definition: dba_nvm.c:840