OSDN Git Service

1sec and high smpling file record add.
[scilog/scilog.git] / ad_ring.h
1 #if     !defined(__AVG_RING_H__)
2 #define __AVG_RING_H__
3
4 #include <time.h>
5
6 // リングバッファサイズ 個数
7 #define AD_RING_NUM     (60 * 5)
8
9 #define AD_CHNUM        6       // AD CH数
10 #define AD_SAMPLE       50      // AD ICの出力レート [Hz]
11 #define AD_BYTES        3       // AD 1sample dataのバイト数
12
13 // NAV-TIMEUTCパケットのデータ格納
14 typedef struct {
15     unsigned long   tow;    // ms GPS Millisecond Time of Week
16     unsigned long   tacc;   // ns Time Accuracy Estimate
17     long   nano;            // ns Nanoseconds of second, range -1e9 .. 1e9 (UTC)
18     unsigned int    year;   //  UTC
19     unsigned char   month;      // 
20     unsigned char   day;
21     unsigned char   hour;
22     unsigned char   min;
23     unsigned char   sec;
24     unsigned char   valid;  // Validity Flags
25                             //  bit0 validTOW 1 = Valid Time of Week
26                             //  bit1 validWKN 1 = Valid Week Number
27                             //  bit2 validUTC 1 = Valid UTC (Leap Seconds already known)
28 } UbloxNavTimeUtc;
29
30 // リングバッファのデータタイプ
31 typedef struct {
32         UbloxNavTimeUtc gps;                    // GPSタイムスタンプ SPIで受信
33         struct tm t;                                    // タイムスタンプ struct tmの月は(0〜11)なので注意 年は1900からのオフセット
34         long data1sec[AD_CHNUM];                // 1sec平均値 SPIで受信
35         long data[AD_CHNUM][AD_SAMPLE]; // AD_SAMPLE[Hz]の生データ SPIで受信
36         long avg[AD_CHNUM][AD_SAMPLE];  // 平均後データ
37 } AdData;
38
39
40
41 int ad_ring_init(void);
42
43 void ad_ring_clear_sec(void);
44 void ad_ring_clear_high(void);
45 void ad_ring_clear_latest(void);
46
47 int ad_ring_read_get_sec(void);
48 void ad_ring_read_set_sec(int i);
49 void ad_ring_read_plus_sec(void);
50 int ad_ring_num_get_sec(void);
51
52 int ad_ring_read_get_high(void);
53 void ad_ring_read_set_high(int i);
54 void ad_ring_read_plus_high(void);
55 int ad_ring_num_get_high(void);
56
57 int ad_ring_write_get(void);
58 void ad_ring_write_plus(void);
59 int ad_ring_latest_get(void);
60 void ad_ring_latest_set(int i);
61 AdData* ad_ring_get(int ptr);
62 void ad_ring_set(AdData *data);
63 int ad_ring_full(void);
64
65 #ifdef  CUNIT
66         #include <CUnit/CUnit.h>
67         void ad_ring_test(CU_pSuite test_suite);
68 #endif
69
70 #endif