FireBirdLib - Topfield TMS PVR TAP Programming Library
FlashTimerEncode.c
Go to the documentation of this file.
1#include <string.h>
2#include "FBLib_flash.h"
3
4static bool FlashTimerEncode_ST_TMSS(TYPE_Timer_TMSS *Data, tFlashTimer *TimerInfo)
5{
7
8 memset(Data, 0, sizeof(TYPE_Timer_TMSS));
9
10 Data->TimerInfo.TunerIndex = TimerInfo->TunerIndex;
11 Data->TimerInfo.RecMode = TimerInfo->RecMode;
12 Data->TimerInfo.DemuxPath = TimerInfo->DemuxPath;
13 Data->TimerInfo.ManualRec = TimerInfo->ManualRec;
14 Data->TimerInfo.unused1 = TimerInfo->unused1;
15 Data->TimerInfo.SatIndex = TimerInfo->SatIndex;
16 Data->TimerInfo.ServiceType = TimerInfo->ServiceType;
17 Data->TimerInfo.ReservationType = TimerInfo->ReservationType;
18 Data->TimerInfo.unused2 = TimerInfo->unused2;
19 Data->TimerInfo.ServiceID = TimerInfo->ServiceID;
20 Data->TimerInfo.Duration = TimerInfo->Duration;
21 Data->TimerInfo.unused3 = TimerInfo->unused3;
22 strncpy(Data->TimerInfo.FileName, TimerInfo->FileName, 130);
23 Data->TimerInfo.StartTime = TimerInfo->StartTime;
24 Data->TimerInfo.EndTime = TimerInfo->EndTime;
25 Data->TimerInfo.PMTPID = TimerInfo->PMTPID;
26 Data->TimerInfo.isRec = TimerInfo->isRec;
27 Data->TimerInfo.NameSet = TimerInfo->NameSet;
28 Data->TimerInfo.unused4 = TimerInfo->unused4;
29 Data->TimerInfo.EPGMarker = TimerInfo->EPGMarker;
30 Data->TimerInfo.unused5 = TimerInfo->unused5;
31 Data->TimerInfo.unknown1 = TimerInfo->unknown1;
32 Data->TimerInfo.EventID1 = TimerInfo->EventID1;
33 Data->TimerInfo.EventID2 = TimerInfo->EventID2;
34 Data->TimerInfo.ServiceIndex = TimerInfo->ServiceIndex;
35 memcpy(Data->TimerInfo.unused8, TimerInfo->unused8, sizeof(Data->TimerInfo.unused8));
36 Data->TimerInfo.IceTV = TimerInfo->IceTV;
37 memcpy(Data->TimerInfo.unused9, TimerInfo->unused9, sizeof(Data->TimerInfo.unused9));
38
39 Data->TpInfo.SatIdx = TimerInfo->TpInfo.SatIndex;
40 Data->TpInfo.Polar = TimerInfo->TpInfo.Polarisation;
41 Data->TpInfo.ModulationSystem = TimerInfo->TpInfo.ModSystem;
42 Data->TpInfo.ModulationType = TimerInfo->TpInfo.Modulation;
43 Data->TpInfo.FECMode = TimerInfo->TpInfo.FEC;
44 Data->TpInfo.Pilot = TimerInfo->TpInfo.Pilot;
45 Data->TpInfo.Frequency = TimerInfo->TpInfo.Frequency;
46 Data->TpInfo.SymbolRate = TimerInfo->TpInfo.SymbolRate;
47 Data->TpInfo.TSID = TimerInfo->TpInfo.TSID;
48 Data->TpInfo.AllowTimeSync = TimerInfo->TpInfo.ClockSync;
49 Data->TpInfo.OriginalNetworkID = TimerInfo->TpInfo.OriginalNetworkID;
50 Data->TpInfo.TPMode = TimerInfo->TpInfo.unused1;
51 Data->TpInfo.unused2 = TimerInfo->TpInfo.unused2;
52 Data->TpInfo.unused3 = TimerInfo->TpInfo.unused3;
53 Data->TpInfo.unused4 = TimerInfo->TpInfo.unused4;
54
55 TRACEEXIT();
56 return TRUE;
57}
58
59static bool FlashTimerEncode_ST_TMST(TYPE_Timer_TMST *Data, tFlashTimer *TimerInfo)
60{
61 TRACEENTER();
62
63 memset(Data, 0, sizeof(TYPE_Timer_TMST));
64
65 Data->TimerInfo.TunerIndex = TimerInfo->TunerIndex;
66 Data->TimerInfo.RecMode = TimerInfo->RecMode;
67 Data->TimerInfo.DemuxPath = TimerInfo->DemuxPath;
68 Data->TimerInfo.ManualRec = TimerInfo->ManualRec;
69 Data->TimerInfo.unused1 = TimerInfo->unused1;
70 Data->TimerInfo.SatIndex = TimerInfo->SatIndex;
71 Data->TimerInfo.ServiceType = TimerInfo->ServiceType;
72 Data->TimerInfo.ReservationType = TimerInfo->ReservationType;
73 Data->TimerInfo.unused2 = TimerInfo->unused2;
74 Data->TimerInfo.ServiceID = TimerInfo->ServiceID;
75 Data->TimerInfo.Duration = TimerInfo->Duration;
76 Data->TimerInfo.unused3 = TimerInfo->unused3;
77 strncpy(Data->TimerInfo.FileName, TimerInfo->FileName, 130);
78 Data->TimerInfo.StartTime = TimerInfo->StartTime;
79 Data->TimerInfo.EndTime = TimerInfo->EndTime;
80 Data->TimerInfo.PMTPID = TimerInfo->PMTPID;
81 Data->TimerInfo.isRec = TimerInfo->isRec;
82 Data->TimerInfo.NameSet = TimerInfo->NameSet;
83 Data->TimerInfo.unused4 = TimerInfo->unused4;
84 Data->TimerInfo.EPGMarker = TimerInfo->EPGMarker;
85 Data->TimerInfo.unused5 = TimerInfo->unused5;
86 Data->TimerInfo.unknown1 = TimerInfo->unknown1;
87 Data->TimerInfo.EventID1 = TimerInfo->EventID1;
88 Data->TimerInfo.EventID2 = TimerInfo->EventID2;
89 Data->TimerInfo.ServiceIndex = TimerInfo->ServiceIndex;
90 memcpy(Data->TimerInfo.unused8, TimerInfo->unused8, sizeof(Data->TimerInfo.unused8));
91 Data->TimerInfo.IceTV = TimerInfo->IceTV;
92 memcpy(Data->TimerInfo.unused9, TimerInfo->unused9, sizeof(Data->TimerInfo.unused9));
93 memcpy(Data->unused10, TimerInfo->unused10, sizeof(Data->unused10));
94
95 Data->TpInfo.SatIdx = TimerInfo->TpInfo.SatIndex;
96 Data->TpInfo.ChannelNr = TimerInfo->TpInfo.ChannelNr;
97 Data->TpInfo.Bandwidth = TimerInfo->TpInfo.Bandwidth;
98 Data->TpInfo.Frequency = TimerInfo->TpInfo.Frequency;
99 Data->TpInfo.TSID = TimerInfo->TpInfo.TSID;
100 Data->TpInfo.LPHP = TimerInfo->TpInfo.LPHP;
101 Data->TpInfo.OriginalNetworkID = TimerInfo->TpInfo.OriginalNetworkID;
102 Data->TpInfo.NetworkID = TimerInfo->TpInfo.NetworkID;
103 Data->TpInfo.unused1 = TimerInfo->TpInfo.unused1;
104 Data->TpInfo.unused2 = TimerInfo->TpInfo.unused2;
105
106 TRACEEXIT();
107 return TRUE;
108}
109
110static bool FlashTimerEncode_ST_TMST200(TYPE_Timer_TMST200 *Data, tFlashTimer *TimerInfo)
111{
112 TRACEENTER();
113
114 memset(Data, 0, sizeof(TYPE_Timer_TMST200));
115
116 Data->TimerInfo.TunerIndex = TimerInfo->TunerIndex;
117 Data->TimerInfo.RecMode = TimerInfo->RecMode;
118 Data->TimerInfo.DemuxPath = TimerInfo->DemuxPath;
119 Data->TimerInfo.ManualRec = TimerInfo->ManualRec;
120 Data->TimerInfo.unused1 = TimerInfo->unused1;
121 Data->TimerInfo.SatIndex = TimerInfo->SatIndex;
122 Data->TimerInfo.ServiceType = TimerInfo->ServiceType;
123 Data->TimerInfo.ReservationType = TimerInfo->ReservationType;
124 Data->TimerInfo.unused2 = TimerInfo->unused2;
125 Data->TimerInfo.ServiceID = TimerInfo->ServiceID;
126 Data->TimerInfo.Duration = TimerInfo->Duration;
127 Data->TimerInfo.unused3 = TimerInfo->unused3;
128 strncpy(Data->TimerInfo.FileName, TimerInfo->FileName, 130);
129 Data->TimerInfo.StartTime = TimerInfo->StartTime;
130 Data->TimerInfo.EndTime = TimerInfo->EndTime;
131 Data->TimerInfo.PMTPID = TimerInfo->PMTPID;
132 Data->TimerInfo.isRec = TimerInfo->isRec;
133 Data->TimerInfo.NameSet = TimerInfo->NameSet;
134 Data->TimerInfo.unused4 = TimerInfo->unused4;
135 Data->TimerInfo.EPGMarker = TimerInfo->EPGMarker;
136 Data->TimerInfo.unused5 = TimerInfo->unused5;
137 Data->TimerInfo.unknown1 = TimerInfo->unknown1;
138 Data->TimerInfo.EventID1 = TimerInfo->EventID1;
139 Data->TimerInfo.EventID2 = TimerInfo->EventID2;
140 Data->TimerInfo.ServiceIndex = TimerInfo->ServiceIndex;
141 memcpy(Data->TimerInfo.unused8, TimerInfo->unused8, sizeof(Data->TimerInfo.unused8));
142 Data->TimerInfo.IceTV = TimerInfo->IceTV;
143 memcpy(Data->TimerInfo.unused9, TimerInfo->unused9, sizeof(Data->TimerInfo.unused9));
144
145 Data->TpInfo.SatIdx = TimerInfo->TpInfo.SatIndex;
146 Data->TpInfo.ChannelNr = TimerInfo->TpInfo.ChannelNr;
147 Data->TpInfo.Bandwidth = TimerInfo->TpInfo.Bandwidth;
148 Data->TpInfo.Frequency = TimerInfo->TpInfo.Frequency;
149 Data->TpInfo.TSID = TimerInfo->TpInfo.TSID;
150 Data->TpInfo.LPHP = TimerInfo->TpInfo.LPHP;
151 Data->TpInfo.OriginalNetworkID = TimerInfo->TpInfo.OriginalNetworkID;
152 Data->TpInfo.NetworkID = TimerInfo->TpInfo.NetworkID;
153 Data->TpInfo.unused1 = TimerInfo->TpInfo.unused1;
154 Data->TpInfo.unused2 = TimerInfo->TpInfo.unused2;
155
156 TRACEEXIT();
157 return TRUE;
158}
159
160static bool FlashTimerEncode_ST_TMST360(TYPE_Timer_TMST360 *Data, tFlashTimer *TimerInfo)
161{
162 TRACEENTER();
163
164 memset(Data, 0, sizeof(TYPE_Timer_TMST360));
165
166 Data->TimerInfo.TunerIndex = TimerInfo->TunerIndex;
167 Data->TimerInfo.RecMode = TimerInfo->RecMode;
168 Data->TimerInfo.DemuxPath = TimerInfo->DemuxPath;
169 Data->TimerInfo.ManualRec = TimerInfo->ManualRec;
170 Data->TimerInfo.unused1 = TimerInfo->unused1;
171 Data->TimerInfo.SatIndex = TimerInfo->SatIndex;
172 Data->TimerInfo.ServiceType = TimerInfo->ServiceType;
173 Data->TimerInfo.ReservationType = TimerInfo->ReservationType;
174 Data->TimerInfo.unused2 = TimerInfo->unused2;
175 Data->TimerInfo.ServiceID = TimerInfo->ServiceID;
176 Data->TimerInfo.Duration = TimerInfo->Duration;
177 Data->TimerInfo.unused3 = TimerInfo->unused3;
178 strncpy(Data->TimerInfo.FileName, TimerInfo->FileName, 130);
179 Data->TimerInfo.StartTime = TimerInfo->StartTime;
180 Data->TimerInfo.EndTime = TimerInfo->EndTime;
181 Data->TimerInfo.PMTPID = TimerInfo->PMTPID;
182 Data->TimerInfo.isRec = TimerInfo->isRec;
183 Data->TimerInfo.NameSet = TimerInfo->NameSet;
184 Data->TimerInfo.unused4 = TimerInfo->unused4;
185 Data->TimerInfo.EPGMarker = TimerInfo->EPGMarker;
186 Data->TimerInfo.unused5 = TimerInfo->unused5;
187 Data->TimerInfo.unknown1 = TimerInfo->unknown1;
188 Data->TimerInfo.EventID1 = TimerInfo->EventID1;
189 Data->TimerInfo.EventID2 = TimerInfo->EventID2;
190 Data->TimerInfo.ServiceIndex = TimerInfo->ServiceIndex;
191 memcpy(Data->TimerInfo.unused8, TimerInfo->unused8, sizeof(Data->TimerInfo.unused8));
192 Data->TimerInfo.IceTV = TimerInfo->IceTV;
193 memcpy(Data->TimerInfo.unused9, TimerInfo->unused9, sizeof(Data->TimerInfo.unused9));
194 memcpy(Data->unused10, TimerInfo->unused10, sizeof(Data->unused10));
195
196 Data->rs_timestamp1 = TimerInfo->rs_timestamp1;
197
198 memcpy(Data->rs_episodeCRID, TimerInfo->rs_episodeCRID, sizeof(TimerInfo->rs_episodeCRID));
199 memcpy(Data->rs_seriesCRID, TimerInfo->rs_seriesCRID, sizeof(TimerInfo->rs_episodeCRID));
200
201 Data->rs_unknown1 = TimerInfo->rs_unknown1;
202 Data->rs_unknown2 = TimerInfo->rs_unknown2;
203 Data->rs_timestamp2 = TimerInfo->rs_timestamp2;
204 Data->rs_unknown3 = TimerInfo->rs_unknown3;
205 Data->rs_unknown4 = TimerInfo->rs_unknown4;
206
207 Data->TpInfo.SatIdx = TimerInfo->TpInfo.SatIndex;
208 Data->TpInfo.ChannelNr = TimerInfo->TpInfo.ChannelNr;
209 Data->TpInfo.Bandwidth = TimerInfo->TpInfo.Bandwidth;
210 Data->TpInfo.Frequency = TimerInfo->TpInfo.Frequency;
211 Data->TpInfo.TSID = TimerInfo->TpInfo.TSID;
212 Data->TpInfo.LPHP = TimerInfo->TpInfo.LPHP;
213 Data->TpInfo.OriginalNetworkID = TimerInfo->TpInfo.OriginalNetworkID;
214 Data->TpInfo.NetworkID = TimerInfo->TpInfo.NetworkID;
215 Data->TpInfo.unused1 = TimerInfo->TpInfo.unused1;
216 Data->TpInfo.unused2 = TimerInfo->TpInfo.unused2;
217
218 TRACEEXIT();
219 return TRUE;
220}
221
222static bool FlashTimerEncode_ST_TMSC(TYPE_Timer_TMSC *Data, tFlashTimer *TimerInfo)
223{
224 TRACEENTER();
225
226 memset(Data, 0, sizeof(TYPE_Timer_TMSC));
227
228 Data->TimerInfo.TunerIndex = TimerInfo->TunerIndex;
229 Data->TimerInfo.RecMode = TimerInfo->RecMode;
230 Data->TimerInfo.DemuxPath = TimerInfo->DemuxPath;
231 Data->TimerInfo.ManualRec = TimerInfo->ManualRec;
232 Data->TimerInfo.unused1 = TimerInfo->unused1;
233 Data->TimerInfo.SatIndex = TimerInfo->SatIndex;
234 Data->TimerInfo.ServiceType = TimerInfo->ServiceType;
235 Data->TimerInfo.ReservationType = TimerInfo->ReservationType;
236 Data->TimerInfo.unused2 = TimerInfo->unused2;
237 Data->TimerInfo.ServiceID = TimerInfo->ServiceID;
238 Data->TimerInfo.Duration = TimerInfo->Duration;
239 Data->TimerInfo.unused3 = TimerInfo->unused3;
240 strncpy(Data->TimerInfo.FileName, TimerInfo->FileName, 130);
241 Data->TimerInfo.StartTime = TimerInfo->StartTime;
242 Data->TimerInfo.EndTime = TimerInfo->EndTime;
243 Data->TimerInfo.PMTPID = TimerInfo->PMTPID;
244 Data->TimerInfo.isRec = TimerInfo->isRec;
245 Data->TimerInfo.NameSet = TimerInfo->NameSet;
246 Data->TimerInfo.unused4 = TimerInfo->unused4;
247 Data->TimerInfo.EPGMarker = TimerInfo->EPGMarker;
248 Data->TimerInfo.unused5 = TimerInfo->unused5;
249 Data->TimerInfo.unknown1 = TimerInfo->unknown1;
250 Data->TimerInfo.EventID1 = TimerInfo->EventID1;
251 Data->TimerInfo.EventID2 = TimerInfo->EventID2;
252 Data->TimerInfo.ServiceIndex = TimerInfo->ServiceIndex;
253 memcpy(Data->TimerInfo.unused8, TimerInfo->unused8, sizeof(Data->TimerInfo.unused8));
254 Data->TimerInfo.IceTV = TimerInfo->IceTV;
255 memcpy(Data->TimerInfo.unused9, TimerInfo->unused9, sizeof(Data->TimerInfo.unused9));
256
257 Data->TpInfo.Frequency = TimerInfo->TpInfo.Frequency;
258 Data->TpInfo.SymbolRate = TimerInfo->TpInfo.SymbolRate;
259 Data->TpInfo.TSID = TimerInfo->TpInfo.TSID;
260 Data->TpInfo.OriginalNetworkID = TimerInfo->TpInfo.OriginalNetworkID;
261 Data->TpInfo.ModulationType = TimerInfo->TpInfo.Modulation;
262 Data->TpInfo.unused1 = TimerInfo->TpInfo.unused1;
263
264 TRACEEXIT();
265 return TRUE;
266}
267
268bool FlashTimerEncode(void *Data, tFlashTimer *TimerInfo)
269{
270 bool ret;
271
272 TRACEENTER();
273
274 if(!Data || !TimerInfo)
275 {
276 TRACEEXIT();
277 return FALSE;
278 }
279
280 ret = FALSE;
281 switch(GetSystemType())
282 {
283 //Unknown and old 5k/6k systems are not supported
284 case ST_UNKNOWN:
285 case ST_S:
286 case ST_ST:
287 case ST_T:
288 case ST_C:
289 case ST_CT:
290 case ST_T5700:
291 case ST_T5800:
292 case ST_TF7k7HDPVR: break;
293
294 case ST_TMSS:
295 {
296 ret = FlashTimerEncode_ST_TMSS(Data, TimerInfo);
297 break;
298 }
299
300 case ST_TMST:
301 {
302 //Depending on the firmware, some Australian machines use the sat structures (200 bytes)
303 if(FlashTimerStructSize() == 200)
304 ret = FlashTimerEncode_ST_TMST200(Data, TimerInfo);
305 else if(FlashTimerStructSize() == 360)
306 ret = FlashTimerEncode_ST_TMST360(Data, TimerInfo);
307 else
308 ret = FlashTimerEncode_ST_TMST(Data, TimerInfo);
309
310 break;
311 }
312
313 case ST_TMSC:
314 {
315 ret = FlashTimerEncode_ST_TMSC(Data, TimerInfo);
316 break;
317 }
318
319 case ST_NRTYPES: break;
320 }
321
322 TRACEEXIT();
323 return ret;
324}
325
326
327bool FlashTimerSetInfo(int TimerIndex, tFlashTimer *TimerInfo)
328{
329 TRACEENTER();
330
331 bool ret;
332
333 //TimerIndex out of range
334 if((TimerIndex < 0) || (TimerIndex >= TAP_Timer_GetTotalNum()))
335 {
336 TRACEEXIT();
337 return FALSE;
338 }
339
340 //TimerInfo is NULL
341 if(!TimerInfo)
342 {
343 TRACEEXIT();
344 return FALSE;
345 }
346
347 ret = FALSE;
348 switch(GetSystemType())
349 {
350 //Unknown and old 5k/6k systems are not supported
351 case ST_UNKNOWN:
352 case ST_S:
353 case ST_ST:
354 case ST_T:
355 case ST_C:
356 case ST_CT:
357 case ST_T5700:
358 case ST_T5800:
359 case ST_TF7k7HDPVR: break;
360
361 case ST_TMSS:
362 {
363 TYPE_Timer_TMSS *p;
364
365 p = (TYPE_Timer_TMSS*)(FIS_vFlashBlockTimer());
366 if(p)
367 {
368 p = p + TimerIndex;
369 ret = FlashTimerEncode(p, TimerInfo);
370 }
371 break;
372 }
373
374 case ST_TMST:
375 {
376 //Depending on the firmware, some Australian machines use the sat structures (200 bytes)
377 if(FlashTimerStructSize() == 200)
378 {
379 TYPE_Timer_TMST200 *p;
380
381 p = (TYPE_Timer_TMST200*)(FIS_vFlashBlockTimer());
382 if(p)
383 {
384 p = p + TimerIndex;
385 ret = FlashTimerEncode(p, TimerInfo);
386 }
387 break;
388 }
389 else if(FlashTimerStructSize() == 360)
390 {
391 TYPE_Timer_TMST360 *p;
392
393 p = (TYPE_Timer_TMST360*)(FIS_vFlashBlockTimer());
394 if(p)
395 {
396 p = p + TimerIndex;
397 ret = FlashTimerEncode(p, TimerInfo);
398 }
399 break;
400 }
401 else
402 {
403 TYPE_Timer_TMST *p;
404
405 p = (TYPE_Timer_TMST*)(FIS_vFlashBlockTimer());
406 if(p)
407 {
408 p = p + TimerIndex;
409 ret = FlashTimerEncode(p, TimerInfo);
410 }
411 break;
412 }
413 }
414
415 case ST_TMSC:
416 {
417 TYPE_Timer_TMSC *p;
418
419 p = (TYPE_Timer_TMSC*)(FIS_vFlashBlockTimer());
420 if(p)
421 {
422 p = p + TimerIndex;
423 ret = FlashTimerEncode(p, TimerInfo);
424 }
425 break;
426 }
427
428 case ST_NRTYPES: break;
429 }
430
431 TRACEEXIT();
432 return ret;
433}
dword FIS_vFlashBlockTimer(void)
bool FlashTimerEncode(void *Data, tFlashTimer *TimerInfo)
bool FlashTimerSetInfo(int TimerIndex, tFlashTimer *TimerInfo)
int FlashTimerStructSize(void)
SYSTEM_TYPE GetSystemType(void)
Definition: GetSystemType.c:3
#define TRACEEXIT()
Definition: libFireBird.h:1244
#define TRACEENTER()
Definition: libFireBird.h:1243
@ ST_CT
Definition: libFireBird.h:77
@ ST_T
Definition: libFireBird.h:69
@ ST_TMSC
Definition: libFireBird.h:74
@ ST_UNKNOWN
Definition: libFireBird.h:67
@ ST_T5700
Definition: libFireBird.h:71
@ ST_TMST
Definition: libFireBird.h:73
@ ST_T5800
Definition: libFireBird.h:75
@ ST_TMSS
Definition: libFireBird.h:72
@ ST_ST
Definition: libFireBird.h:76
@ ST_NRTYPES
Definition: libFireBird.h:79
@ ST_TF7k7HDPVR
Definition: libFireBird.h:78
@ ST_S
Definition: libFireBird.h:68
@ ST_C
Definition: libFireBird.h:70
dword StartTime
Definition: libFireBird.h:1674
byte unused9[13]
Definition: libFireBird.h:1688
char rs_episodeCRID[64]
Definition: libFireBird.h:1691
dword rs_unknown4
Definition: libFireBird.h:1697
dword rs_timestamp1
Definition: libFireBird.h:1690
dword rs_unknown2
Definition: libFireBird.h:1694
dword EventID1
Definition: libFireBird.h:1683
char rs_seriesCRID[64]
Definition: libFireBird.h:1692
dword EventID2
Definition: libFireBird.h:1684
dword unknown1
Definition: libFireBird.h:1682
byte ServiceType
Definition: libFireBird.h:1667
tFlashTransponderTable TpInfo
Definition: libFireBird.h:1699
byte ReservationType
Definition: libFireBird.h:1668
byte unused8[8]
Definition: libFireBird.h:1686
word ServiceIndex
Definition: libFireBird.h:1685
dword rs_unknown3
Definition: libFireBird.h:1696
char FileName[131]
Definition: libFireBird.h:1673
byte unused10[8]
Definition: libFireBird.h:1689
dword rs_timestamp2
Definition: libFireBird.h:1695
dword rs_unknown1
Definition: libFireBird.h:1693