-
Notifications
You must be signed in to change notification settings - Fork 2
/
globdefs.h
519 lines (397 loc) · 13.3 KB
/
globdefs.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
483
484
485
486
487
488
489
490
491
492
493
494
495
496
497
498
499
500
501
502
503
504
505
506
507
508
509
510
511
512
513
514
515
516
517
518
519
#ifndef _GLOBDEFS_H
#define _GLOBDEFS_H
#include <signal.h>
#include <stdint.h>
#include <time.h>
#define SEC_IN_HOUR 3600
/* Âêëþ÷åíèÿ äëÿ 504 áëåêôèíà, íå 506!!!! */
#ifndef _WIN32 /* Embedded platform */
#include <adi_types.h>
#include <services_types.h>
#include <sys/exception.h>
#include <cdefBF504f.h>
#include <defBF504f.h>
#include <ccblkfn.h>
#include <float.h>
#include "config.h"
typedef char c8;
#else /* windows */
#include <windows.h>
#include <tchar.h>
#ifndef u8
#define u8 unsigned char
#endif
#ifndef s8
#define s8 char
#endif
#ifndef c8
#define c8 char
#endif
#ifndef u16
#define u16 unsigned short
#endif
#ifndef s16
#define s16 short
#endif
#ifndef i32
#define i32 int
#endif
#ifndef u32
#define u32 unsigned long
#endif
#ifndef s32
#define s32 long
#endif
#ifndef u64
#define u64 uint64_t
#endif
#ifndef s64
#define s64 int64_t
#endif
/* Äëèííîå âðåìÿ */
#ifndef time64
#define time64 int64_t
#endif
#endif
#ifndef u64
#define u64 uint64_t
#endif
#ifndef s64
#define s64 int64_t
#endif
/* Äëèííîå âðåìÿ */
#ifndef time64
#define time64 int64_t
#endif
#ifndef _WIN32 /* Embedded platform */
/* long double íå ïîääåðæûâàåöà - â ëèíóêñå ìîæåò òàêîãî íå áûòü! */
#ifndef f32
#define f32 float32_t
#endif
#ifndef bool
#define bool u8
#endif
#ifdef true
#define true 1
#endif
#ifdef false
#define false 0
#endif
#else
/* long double íå ïîääåðæûâàåöà */
#ifndef f32
#define f32 float
#endif
#endif
#ifndef IDEF
#define IDEF static inline
#endif
/* Íà ýòîò àäðåñ áóäåò îòâå÷àòü íàøå óñòðîéñòâî */
#define BROADCAST_ADDR 0xff
/* Ñêîëüêî ïàêåòîâ â ïà÷êå */
#define NUM_ADS1282_PACK 20
#define ADC_CHAN 4 /* ÷èñëî êàíàëîâ */
#define MAGIC 0x4b495245
/*******************************************************************************
* Ñîñòîÿíèå óñòðîéñòâ äëÿ îïèñàíèÿ State machine
*******************************************************************************/
typedef enum {
DEV_POWER_ON_STATE = 0,
DEV_CHOOSE_MODE_STATE = 1,
DEV_INIT_STATE,
DEV_TUNE_WITHOUT_GPS_STATE, /*Çàïóñê òàéìåðà ÁÅÇ GPS */
DEV_GET_3DFIX_STATE,
DEV_TUNE_Q19_STATE, /* Ïåðâè÷íàÿ íàñòðîéêà êâàðöà 19 ÌÃö */
DEV_SLEEP_AND_DIVE_STATE, /* Ïîãðóæåíèå è ñîí ïåðåä íà÷àëîì ðàáîòû */
DEV_WAKEUP_STATE,
DEV_REG_STATE,
DEV_FINISH_REG_STATE,
DEV_WAIT_GPS_STATE,
DEV_HALT_STATE,
DEV_COMMAND_MODE_STATE,
DEV_POWER_OFF_STATE,
DEV_EMERGENCY_WAIT_STATE, /* àâàðèéíîå îæèäàíèå */
DEV_ERROR_STATE = -1 /* Àâàðèÿ */
} DEV_STATE_ENUM;
/*******************************************************************************
* Òèïû ïîäêëþ÷åíûõ ìîäåìîâ
*******************************************************************************/
typedef enum {
GNS110_NOT_MODEM = 0,
GNS110_MODEM_OLD, //1
GNS110_MODEM_AM3, //2
GNS110_MODEM_BENTHOS, //3
} GNS110_MODEM_TYPE;
/**
* Ïàðàìåòðû çàïóñêà ïðèáîðà
* Â ýòèõ ñòðóêòóðàõ çàïèñûâàþòñÿ ïàðàìåòðû òàéìåðîâ
* ñîîòâåòñòâóåò òàêîé çàïèñè:
* 16.10.12 17.15.22 // Âðåìÿ íà÷àëà ðåãèñòðàöèè
* 17.10.12 08.15.20 // Âðåìÿ îêîí÷àíèÿ ðåãèñòðàöèè
* 18.10.12 11.17.00 // Âðåìÿ âñïëûòèÿ, âêëþ÷àåò 5 ìèí. âðåìåíè ïåðåæèãà
* ....
*/
#pragma pack(4)
typedef struct {
/* Ôàéëû ðåãèñòðàöèè */
u32 gns110_pos; /* Ïîçèöèÿ óñòàíîâêè */
char gns110_dir_name[18]; /* Íàçâàíèå äèðåêòîðèè äëÿ âñåõ ôàéëîâ */
u8 gns110_file_len; /* Ðàçìåð ôàéëà äàííûõ â ÷àñàõ */
bool gns110_const_reg_flag; /* Ïîñòîÿííàÿ ðåãèñòðàöèÿ */
/* Ìîäåì */
s32 gns110_modem_rtc_time; /* Âðåìÿ ÷àñîâ ìîäåìà */
s32 gns110_modem_alarm_time; /* àâàðèéíîå âðåìÿ âñïëûòèÿ îò ìîäåìà */
s32 gns110_modem_type; /* Òèï ìîäåìà */
u16 gns110_modem_num; /* Íîìåð ìîäåìà */
u16 gns110_modem_burn_len_sec; /* Äëèòåëüíîñòü ïåðåæèãà ïðîâîëîêè â ñåêóíäàõ îò ìîäåìà */
u8 gns110_modem_h0_time;
u8 gns110_modem_m0_time;
u8 gns110_modem_h1_time;
u8 gns110_modem_m1_time;
/* Âðåìåíà */
s32 gns110_wakeup_time; /* âðåìÿ íà÷àëà ïîäñòðîéêè ïåðåä ðåãèñòðàöèåé */
s32 gns110_start_time; /* âðåìÿ íà÷àëà ðåãèñòðàöèè */
s32 gns110_finish_time; /* âðåìÿ îêîí÷àíèÿ ðåãèñòðàöèè */
s32 gns110_burn_on_time; /* Âðåìÿ íà÷àëà ïåðåæèãà ïðîâîëêè */
s32 gns110_burn_off_time; /* Âðåìÿ îêîí÷àíèÿ ïåðåæèãà ïðîâîëêè */
s32 gns110_gps_time; /* âðåìÿ âêëþ÷åíèÿ gps ïîñëå âðåìåíè âñïëûòèÿ */
/* ÀÖÏ */
f32 gns110_adc_flt_freq; /* ×àñòîòà ñðåçà ôèëüòðà HPF */
u16 gns110_adc_freq; /* ×àñòîòà ÀÖÏ */
u8 gns110_adc_pga; /* Óñèëåíèå ÀÖÏ */
u8 gns110_adc_bitmap; /* êàêèå êàíàëû ÀÖÏ èñïîëüçóþòñÿ */
u8 gns110_adc_consum; /* ýíåðãîïîòðåáëåíèå ÀÖÏ ñþäà */
u8 gns110_adc_bytes; /* ×èñëî áàéò â ñëîâå äàííûõ */
u8 rsvd[2];
} GNS110_PARAM_STRUCT;
/* Ñòðóêòóðà, îïèñûâàþùàÿ âðåìÿ, èñïðàâèì c8 íà u8 - âðåìÿ íå ì.á. îòðèöàòåëüíûì */
#pragma pack(1)
typedef struct {
u8 sec;
u8 min;
u8 hour;
u8 week; /* äåíü íåäåëè...íå èñïîëüçóåöà */
u8 day;
u8 month; /* 1 - 12 */
#define mon month
u16 year;
} TIME_DATE;
#define TIME_LEN 8 /* Áàéò */
/**
* Ýòîé ñòðóêòóðû íåòó â çàãîëîâêàõ
*/
#pragma pack(4)
struct timespec {
time_t tv_sec; /* Ñåêóíäû */
long tv_nsec; /* Íàíîñåêóíäû */
};
/**
* Â ýòó ñòóêòóðó ïèøåòñÿ ìèíóòíûé çàãîëîâîê ïðè çàïèñè íà SD êàðòó (pack ïî 1 áàéòó!)
*/
#if defined ENABLE_NEW_SIVY
/* Â íîâîì ñèâè ïàêîâàòü ïî 4 áàéòà */
#pragma pack(4)
typedef struct {
c8 DataHeader[12]; /* Çàãîëîâîê äàííûõ SeismicDat0\0 */
c8 HeaderSize; /* Ðàçìåð çàãîëîâêà - 80 áàéò */
u8 ConfigWord; /* Êîíôèãóðàöèÿ */
c8 ChannelBitMap; /* Âêëþ÷åííûå êàíàëû: 1 êàíàë âêëþ÷åí */
c8 SampleBytes; /* ×èñëî áàéò ñëîâå äàííûõ */
u32 BlockSamples; /* Ðàçìåð 1 ìèíóòíîãî áëîêà â áàéòàõ */
s64 SampleTime; /* Âðåìÿ ìèíóòíîãî ñàìïëà: íàíîñåêóíäû âðåìåíè UNIX */
s64 GPSTime; /* Âðåìÿ ñèíõðîíèçàöèè: íàíîñåêóíäû âðåìåíè UNIX */
s64 Drift; /* Äðèôò îò òî÷íûõ ÷àñîâ GPS: íàíîñåêóíäû */
u32 rsvd0; /* Ðåçåðâ. Íå èñïîëüçóåòñÿ */
/* Ïàðàìåòðû ñðåäû: òåìïåðàòóðà, íàïðÿæåíèÿ è ïð */
u16 u_pow; /* Íàïðÿæåíèå ïèòàíèÿ, U mv */
u16 i_pow; /* Òîê ïèòàíèÿ, U ma */
u16 u_mod; /* Íàïðÿæåíèå ìîäåìà, U mv */
u16 i_mod; /* Òîê ìîäåìà, U ma */
s16 t_reg; /* Òåìïåðàòóðà ðåãèñòðàòîðà, äåñÿòûå äîëè ãðàäóñà: 245 ~ 24.5 */
s16 t_sp; /* Òåìïåðàòóðà âíåøíåé ïëàòû, äåñÿòûå äîëè ãðàäóñà: 278 ~ 27.8 */
u32 p_reg; /* Äàâëåíèå âíóòðè ñôåðû êÏà */
/* Ïîëîæåíèå ïðèáîðà â ïðîñòðàíñòâå (ñî çíàêîì) */
s32 lat; /* øèðîòà (+ ~N, - S): 55417872 ~ 5541.7872N */
s32 lon; /* äîëãîòà(+ ~E, - W): -37213760 ~ 3721.3760W */
s16 pitch; /* êðåí, äåñÿòûå äîëè ãðàäóñà: 12 ~ 1.2 */
s16 roll; /* íàêëîí, äåñÿòûå äîëè ãðàäóñà 2 ~ 0.2 */
s16 head; /* àçèìóò, äåñÿòûå äîëè ãðàäóñà 2487 ~ 248.7 */
u16 rsvd1; /* Ðåçåðâ äëÿ âûðàâíèâàíèÿ */
} ADC_HEADER;
#else
#pragma pack(1)
typedef struct {
c8 DataHeader[12]; /* Çàãîëîâîê äàííûõ SeismicData\0 */
c8 HeaderSize; /* Ðàçìåð çàãîëîâêà - 80 áàéò */
c8 ConfigWord;
c8 ChannelBitMap;
u16 BlockSamples;
c8 SampleBytes;
TIME_DATE SampleTime; /* Ìèíóòíîå âðåìÿ ñàìïëà */
u16 Bat;
u16 Temp;
u8 Rev; /* Ðåâèçèÿ = 2 âñåãäà */
u16 Board;
u8 NumberSV;
s16 Drift;
TIME_DATE SedisTime; /* Íå èñïîëüçóåòñÿ ïîêà */
TIME_DATE GPSTime; /* Âðåìÿ ñèíõðîíèçàöèè */
union {
struct {
u8 rsvd0;
bool comp; /* êîìïàñ */
c8 pos[23]; /* Ïîçèöèÿ (êîîðäèíàòû) */
c8 rsvd1[3];
} coord; /* êîîðäèíàòû */
u32 dword[7]; /* Äàííûå */
} params;
} ADC_HEADER;
#endif
//////////////////////////////////////////////////////////////////////////////////////////
// Íà îòïðàâëåíèå
//////////////////////////////////////////////////////////////////////////////////////////
/**
* Ïàêåò äàííûõ íà îòïðàâëåíèå - 20 èçìåðåíèé àêñåëåðîìåòðà - 240 áàéò, óïàêîâàí íà 1!!!
*/
#pragma pack(1)
typedef struct {
u8 len; /* Äëèíà ïàêåòà áåç êîíòðîëüíîé ñóììû */
u8 adc; /* Íîìåð ðàáîòàþùèõ ÀÖÏ - ÷åòûðå áèòà ïîäðÿä */
u16 msec; /* Ìèëëèñåêóíäà ïåðâîãî èçìåðåíèÿ */
u32 sec; /* UNIX TIME ïåðâîãî èçìåðåíèÿ */
struct { /* 3-õ áàéòíûé ïàêåò (* 4) */
unsigned x:24;
unsigned y:24;
unsigned z:24;
unsigned h:24;
} data[NUM_ADS1282_PACK];
u16 rsvd; /* Âûðàâíèâàíèå */
u16 crc16; /* Êîíòðîëüíàÿ ñóììà ïàêåòà */
} ADS1282_PACK_STRUCT;
/**
* Ñòàòóñ è îøèáêè óñòðîéñòâ íà îòïðàâëåíèå 64 áàéò. Êîðîòêèé ñòàòóñ ïîñûëàåòñÿ ïðè îøèáêå (òîëüêî 2 áàéòà + 1 len + 2 CRC16)
*/
#pragma pack(4)
typedef struct {
u8 len; /* 1....Äëèíà ïàêåòà áåç êîíòðîëüíîé ñóììû */
u8 st_main; /* 2....ãëàâíûé: íåò âðåìåíè, íåò êîíñòàíò, îøèáêà â êîìàíäå, íåò ôàéëà, íåèñïðàâåí, ïåðåïîëíåíèå ïàìÿòè, îñòàíîâëåí, ðåæèì ðàáîòû */
u8 st_test0; /* 3....Ñàìîòåñòèðîâàíèå è îøèáêè: 0 - ÷àñîâ, 1 - äàò÷èê T&P, 2 - Àêñåëåð/ êîìïàñ, 3 - ìîäåì, 4 - GPS, 5 - EEPROM, 6 - êàðòà SD, 7 - flash */
u8 st_test1; /* 4....Ðàçëè÷íûå óñòðîñòâà */
u8 st_reset; /* 5....Ïðè÷èíà ñáðîñà */
u8 st_adc; /* 6....Ðåçåðâ - ïèøåì çäåñü îøèáêè ÀÖÏ */
s16 temper0; /* 7-8..Òåìïåðàòóðà îò âíåøíåãî øíóðà * 10 */
s32 st_tim4[2]; /* 9-16..Çíà÷åíèÿ òàéìåðà 4 âî âðåìÿ òåñòà ãåíåðàòîðîâ. Min è Ìàõ. çäåñü ïèøåì âðåìÿ è äðèôò */
s32 st_tim3[2]; /* 17-24..Çíà÷åíèÿ òàéìåðà 3 âî âðåìÿ òåñòà ãåíåðàòîðîâ. Min è Ìàõ */
#define gns_rtc st_tim4[0]
#define gns_time st_tim4[1]
#define gns_drift st_tim3[0]
u32 eeprom; /* 25-28..Ñòàòóñ EEPROM - äàííûå ïî îäíîìó áèòó */
s16 am_power_volt; /* 29-30..Íà 1 íîãå-ñðàçó 4 êàíàëà íàïðÿæåíèÿ */
s16 burn_ext_volt; /* 31-32 */
s16 burn_volt; /* 33-34 */
s16 regpwr_volt; /* 35-36 */
s16 iam_sense; /* 37-38.. 3 êàíàëà òîêà */
s16 ireg_sense; /* 39-40 */
s16 iburn_sense; /* 41-42 */
s16 temper1; /* 43-44..Òåìïåðàòóðà * 10 */
u32 press; /* 45-48..Äàâëåíèå êÏà */
s16 pitch; /* 49-50..Êðåí */
s16 roll; /* 51-52..Íàêëîí */
s16 head; /* 53-54.. Àçèìóò */
u16 ports; /* 55-56 ..âêëþ÷åííûå ðåëå è ïîðòû */
u32 quartz; /* 57-60 ðåçåðâ - 4 áàéòà */
u8 cclk; /* 61-62..×àñòîòû â MHz - 2 áàéòà */
u8 sclk;
u16 crc16; /* 63-64..Êîíòðîëüíàÿ ñóììà ïàêåòà */
} DEV_STATUS_STRUCT;
/**
* Âðåìÿ ðàáîòû ïðèáîðà íà îòïðàâëåíèå
*/
#pragma pack(1)
typedef struct {
u8 len; /* ×èñëî áàéò */
u32 time_work; /* Âðåìÿ ðàáîòû â ðåæèìå ñáîðà äàííûõ */
u32 time_cmd; /* Âðåìÿ ðàáîòû â êîìàíäíîì ðåæèìå */
u32 time_modem; /* Âðåìÿ ðàáîòû ìîäåìà */
u16 crc16; /* CRC16 */
} DEV_WORK_TIME_STRUCT;
/* Èìÿ è àäðåñ */
#pragma pack(4)
typedef struct {
u8 len; /* Äëèíà */
u8 ver; /* Âåðñèÿ ÏÎ: 1, 2, 3, 4 èòä */
u16 rev; /* Ðåâèçèÿ ÏÎ 0, 1, 2 èòä */
u32 time; /* Âðåìÿ êîìïèëÿöèè */
u16 addr; /* Àäðåñ ïëàòû */
u16 crc16;
} DEV_ADDR_STRUCT;
/**
* Ñ÷åò÷èêè îáìåíîâ ïî ÓÀÐÒ
*/
typedef struct {
int rx_pack; /* Ïðèíÿòûå ïàêåòû */
int tx_pack; /* ïåðåäàííûå ïàêåòû */
int rx_cmd_err; /* Îøèáêà â êîìàíäå */
int rx_stat_err; /* Îøèáêè íàáåãàíèÿ, êàäðà (áåç ñòîïîâ) è ïð */
int rx_crc_err; /* Îøèáêè êîíòðîëüíîé ñóììû */
} DEV_UART_COUNTS;
/* Îïèñûâàåò êîãäà ñëó÷èëñÿ òàéìàóò êàðòû è ïðî÷èå îøèáêè */
typedef struct {
u32 cmd_error;
u32 read_timeout;
u32 write_timeout;
u32 any_error;
} SD_CARD_ERROR_STRUCT;
/**
* Óïðàâëåíèå Óàðòàìè
*/
typedef struct {
int baud; /*Ñêîðîñòü îáìåíà ïîðòà */
void (*rx_call_back_func) (u8); /* Óêàçàòåëü íà ôóíêöûþ ÷òåíèÿ */
void (*tx_call_back_func) (void); /* Óêàçàòåëü íà ôóíêöûþ çàïèñè */
bool is_open; /* Åñëè îòêðûò */
} DEV_UART_STRUCT;
#define MODEM_BUF_LEN 64 /* Âïîëíå äîñòàòî÷íî */
/**
* Âíåøíÿÿ êîìàíäà ïðèøëà ñ UART
*/
#pragma pack (4)
typedef struct {
u8 cmd;
u8 len;
u8 rsvd0[2];
union {
c8 cPar[MODEM_BUF_LEN];
u16 wPar[MODEM_BUF_LEN/2];
u32 lPar[MODEM_BUF_LEN/4];
f32 fPar[MODEM_BUF_LEN/4];
} u;
} DEV_UART_CMD;
/* Ñòðîêè â ëîã ôàéëå */
#define INFO_NUM_STR 0
#define POS_NUM_STR 1
#define BEGIN_REG_NUM_STR 2
#define END_REG_NUM_STR 3
#define BEGIN_BURN_NUM_STR 4
#define BURN_LEN_NUM_STR 5
#define POPUP_LEN_NUM_STR 6
#define MODEM_NUM_NUM_STR 7
#define ALARM_TIME_NUM_STR 8
#define DAY_TIME_NUM_STR 9
#define ADC_FREQ_NUM_STR 10
#define ADC_CONSUM_NUM_STR 11
#define ADC_PGA_NUM_STR 12
#define MODEM_TYPE_NUM_STR 13
#define ADC_BITMAP_NUM_STR 14
#define FILE_LEN_NUM_STR 15
#define FLT_FREQ_NUM_STR 16
#define CONST_REG_NUM_STR 17
#define RELE_GPS_BIT (1 << 0)
#define RELE_MODEM_BIT (1 << 1)
#define RELE_BURN_BIT (1 << 2)
#define RELE_ANALOG_POWER_BIT (1 << 3)
#define RELE_DEBUG_MODULE_BIT (1 << 4)
#define RELE_MODEM_MODULE_BIT (1 << 5)
#define RELE_USB_BIT (1 << 6)
#define RELE_WUSB_BIT (1 << 7)
#endif /* globdefs.h */