DVBCore  17.9.0
Open Source DVB Engine
 All Data Structures Files Functions Typedefs Macros Pages
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_LEVEL 0x0502
79 
80 /* Fields in satellite transport records */
81 #define DBA_FIELD_STRAN_POL 0x0600
82 #define DBA_FIELD_STRAN_FEC 0x0601
83 #define DBA_FIELD_STRAN_DVBS2 0x0602
84 #define DBA_FIELD_STRAN_MODULATION 0x0603
85 
86 /* Fields in terrestrial transport records */
87 #define DBA_FIELD_TTRAN_MODE 0x0700
88 #define DBA_FIELD_TTRAN_TERR_TYPE 0x0701
89 #define DBA_FIELD_TTRAN_PLP_ID 0x0702
90 #define DBA_FIELD_TTRAN_BWIDTH 0x0703
91 
92 /* Fields in cable transport records */
93 #define DBA_FIELD_CTRAN_MODE 0x0800
94 
95 /* Fields common to service records */
96 #define DBA_FIELD_SERV_ID 0x0900
97 #define DBA_FIELD_SERV_TYPE 0x0901
98 #define DBA_FIELD_SERV_LCN 0x0902
99 #define DBA_FIELD_SERV_REQ_LCN 0x0903
100 #define DBA_FIELD_SERV_HIDDEN 0x0904
101 #define DBA_FIELD_SERV_SELECTABLE 0x0905
102 #define DBA_FIELD_SERV_LOCKED 0x0906
103 #define DBA_FIELD_SERV_SCHED_DISABLED 0x0907
104 #define DBA_FIELD_SERV_NOWNEXT_DISABLED 0x0908
105 #define DBA_FIELD_SERV_FAV_GROUPS 0x0909
106 #define DBA_FIELD_SERV_FREESAT_ID 0x090a
107 #define DBA_FIELD_SERV_REGION_ID 0x090b
108 #define DBA_FIELD_SERV_LCN_EDITABLE 0x090c
109 
110 /* Fields in timer records */
111 #define DBA_FIELD_TIMER_HANDLE 0x0a00
112 #define DBA_FIELD_TIMER_STARTTIME 0x0a01
113 #define DBA_FIELD_TIMER_DURATION 0x0a02
114 #define DBA_FIELD_TIMER_TYPE 0x0a03
115 #define DBA_FIELD_TIMER_FREQUENCY 0x0a04
116 #define DBA_FIELD_TIMER_RAMPVOLUME 0x0a05
117 #define DBA_FIELD_TIMER_EVENTID 0x0a06
118 #define DBA_FIELD_TIMER_NOTIFY_TIME 0x0a07
119 #define DBA_FIELD_TIMER_CRID 0x0a08
120 #define DBA_FIELD_TIMER_DISKID 0x0a09
121 #define DBA_FIELD_TIMER_OTHERCRID 0x0a0a
122 #define DBA_FIELD_TIMER_MISSED 0x0a0b
123 #define DBA_FIELD_TIMER_EVENT_TRIGGERED 0x0a0c
124 #define DBA_FIELD_TIMER_ADDITIONAL_INFO 0x0a0d
125 #define DBA_FIELD_TIMER_START_PADDING 0x0a0e
126 #define DBA_FIELD_TIMER_END_PADDING 0x0a0f
127 
128 /* Fields in CRID records */
129 #define DBA_FIELD_CRID_EIT_DATE 0x0b00
130 #define DBA_FIELD_CRID_SERIES 0x0b01
131 #define DBA_FIELD_CRID_RECOMMENDED 0x0b02
132 #define DBA_FIELD_CRID_RADIO_SERVICE 0x0b03
133 
134 /* Fields in favourite lists and favourite services */
135 #define DBA_FIELD_FAVLIST_ID 0x0c00
136 #define DBA_FIELD_FAVLIST_INDEX 0x0c01
137 #define DBA_FIELD_FAVLIST_USER_DATA 0x0c02
138 
139 /* Fields used to store event information */
140 #define DBA_FIELD_EVENT_STARTTIME 0x0d00
141 #define DBA_FIELD_EVENT_DURATION 0x0d01
142 #define DBA_FIELD_EVENT_ID 0x0d02
143 #define DBA_FIELD_EVENT_CONTENT 0x0d03
144 #define DBA_FIELD_EVENT_AGE_RATING 0x0d04
145 #define DBA_FIELD_EVENT_SCRAMBLED 0x0d05
146 #define DBA_FIELD_EVENT_SUBTITLES 0x0d06
147 #define DBA_FIELD_EVENT_AUDIO_DESC 0x0d07
148 #define DBA_FIELD_EVENT_FREE_TO_AIR 0x0d08
149 #define DBA_FIELD_EVENT_DO_NOT_SCRAMBLE 0x0d09
150 #define DBA_FIELD_EVENT_NAME 0x0d0a
151 #define DBA_FIELD_EVENT_DESCRIPTION 0x0d0b
152 #define DBA_FIELD_EVENT_EXTENDED_DESC 0x0d0c
153 #define DBA_FIELD_EVENT_GUIDANCE 0x0d0d
154 #define DBA_FIELD_EVENT_CONTENT_DATA 0x0d0e
155 
156 /* Fields in LNB band records */
157 #define DBA_FIELD_BAND_POLARITY 0x0e00
158 #define DBA_FIELD_BAND_MIN_FREQUENCY 0x0e01
159 #define DBA_FIELD_BAND_MAX_FREQUENCY 0x0e02
160 #define DBA_FIELD_BAND_LOCAL_OSC_FREQUENCY 0x0e03
161 #define DBA_FIELD_BAND_LNB_VOLTAGE 0x0e04
162 #define DBA_FIELD_BAND_22_KHZ 0x0e05
163 
164 
165 //---Enumerations for public use-----------------------------------------------
166 
167 /* Set of record types supported by the database, though not all types may be supported
168  * by all database implementations */
169 typedef enum
170 {
171  DBA_RECORD_LNB = 0,
172  DBA_RECORD_SATELLITE,
173  DBA_RECORD_NETWORK,
174  DBA_RECORD_SAT_TRANSPORT,
175  DBA_RECORD_TERR_TRANSPORT,
176  DBA_RECORD_CAB_TRANSPORT,
177  DBA_RECORD_SERVICE,
178  DBA_RECORD_TIMER,
179  DBA_RECORD_CRID,
180  DBA_RECORD_FAV_LIST,
181  DBA_RECORD_FAV_SERV,
182  DBA_RECORD_LNB_BAND,
183  DBA_RECORD_CICAM_TIMER,
184  /*DBA_RECORD_EVENT,*/
185  DBA_NUM_RECORDS /* This must be the last value in the enum */
186 } E_DBA_RECORDS;
187 
188 
189 //---Global type defs for public use-------------------------------------------
190 
191 //---Global Function prototypes for public use---------------------------------
192 
197 BOOLEAN DBA_Initialise(void);
198 
203 void DBA_Terminate(void);
204 
214 BOOLEAN DBA_LoadDatabase(U8BIT *pathname);
215 
221 BOOLEAN DBA_SaveDatabase(void);
222 
229 BOOLEAN DBA_ClearDatabase(void);
230 
239 BOOLEAN DBA_BackupDatabase(U8BIT *pathname);
240 
245 BOOLEAN DBA_CanRestoreDatabase(void);
246 
251 BOOLEAN DBA_RestoreDatabase(void);
252 
257 void DBA_EraseBackupDatabase(void);
258 
264 BOOLEAN DBA_ExportToXML(U8BIT *xml_pathname);
265 
273 BOOLEAN DBA_ImportFromXML(U8BIT *xml_pathname);
274 
278 void DBA_LockDatabase(void);
279 
283 void DBA_UnlockDatabase(void);
284 
289 U8BIT* DBA_DatabaseVersion(void);
290 
297 U32BIT DBA_DatabaseFileSize(U32BIT *max_size);
298 
306 void* DBA_CreateRecord(U32BIT record_id, void *parent);
307 
313 void DBA_DestroyRecord(void *record);
314 
325 void* DBA_FindRecord(U32BIT record_id, void *parent, void *last_rec);
326 
332 void DBA_SetRecordParent(void *record, void *parent);
333 
339 void* DBA_GetRecordParent(void *record);
340 
347 void DBA_SaveRecord(void *record);
348 
357 BOOLEAN DBA_SetFieldValue(void *record, U32BIT field_id, U32BIT value);
358 
370 BOOLEAN DBA_SetFieldString(void *record, U16BIT field_id, U8BIT *string, U16BIT num_bytes);
371 
384 BOOLEAN DBA_SetFieldLangString(void *record, U32BIT field_id, U32BIT lang_code, U8BIT *string,
385  U16BIT num_bytes);
386 
397 BOOLEAN DBA_SetFieldData(void *record, U32BIT field_id, U8BIT *data, U16BIT num_bytes);
398 
407 BOOLEAN DBA_GetFieldValue(void *record, U32BIT field_id, U32BIT *value);
408 
420 BOOLEAN DBA_GetFieldString(void *record, U32BIT field_id, U8BIT **string, U16BIT *num_bytes);
421 
434 BOOLEAN DBA_GetFieldLangString(void *record, U32BIT field_id, U32BIT lang_code, U8BIT **string,
435  U16BIT *num_bytes);
436 
448 BOOLEAN DBA_GetFieldData(void *record, U32BIT field_id, U8BIT **data, U16BIT *num_bytes);
449 
455 U32BIT DBA_DataBlockSize(U32BIT data_block_id);
456 
464 U32BIT DBA_DataBlockRead(U32BIT data_block_id, U8BIT *data, U32BIT max_num_bytes);
465 
473 BOOLEAN DBA_DataBlockWrite(U32BIT data_block_id, U8BIT *data, U32BIT num_bytes);
474 
475 #endif /* _DBA_H */
476 
BOOLEAN DBA_SetFieldString(void *record, U16BIT 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:1224
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:1485
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:1052
BOOLEAN DBA_RestoreDatabase(void)
Restores the working database from a previously made backup copy.
Definition: dba_nvm.c:788
U8BIT * DBA_DatabaseVersion(void)
Returns a version string representing the working database.
Definition: dba_nvm.c:884
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:1154
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:1010
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:1397
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:1315
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:1288
void DBA_SetRecordParent(void *record, void *parent)
Set of change the parent of the given record.
Definition: dba_nvm.c:1077
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:1172
void DBA_LockDatabase(void)
Locks the database to prevent access from other threads or processes.
Definition: dba_nvm.c:863
U32BIT DBA_DataBlockSize(U32BIT data_block_id)
Returns the number of bytes available for the given data block.
Definition: dba_nvm.c:1505
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:937
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:722
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:1338
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:1457
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:1557
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:540
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:1525
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:821
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:693
void * DBA_GetRecordParent(void *record)
Returns the handle to the parent of the given record.
Definition: dba_nvm.c:1126
void DBA_Terminate(void)
Releases any resources acquired by initialisation and clears any currently loaded database...
Definition: dba_nvm.c:507
void DBA_UnlockDatabase(void)
Unlocks the database to allow other threads or processes to access it.
Definition: dba_nvm.c:873
U32BIT DBA_DatabaseFileSize(U32BIT *max_size)
Returns the size in bytes of the database as stored in non-volatile storage.
Definition: dba_nvm.c:912
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:853
BOOLEAN DBA_Initialise(void)
Performs any initialisation required prior to the database being loaded.
Definition: dba_nvm.c:481
BOOLEAN DBA_CanRestoreDatabase(void)
Checks whether the working database can be restored from a backup copy.
Definition: dba_nvm.c:765
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:666
BOOLEAN DBA_ExportToXML(U8BIT *xml_pathname)
Export the working database to an XML file.
Definition: dba_nvm.c:839