1 #if !defined(__AVG_RING_H__)
9 #define AD_RING_NUM (60 * 5)
11 #define AD_CHNUM 6 // AD CH数
12 #define AD_SAMPLE 50 // AD ICの出力レート [Hz]
13 #define AD_BYTES 3 // AD 1sample dataのバイト数
15 // NAV-TIMEUTCパケットのデータ格納
17 unsigned long tow; // ms GPS Millisecond Time of Week
18 unsigned long tacc; // ns Time Accuracy Estimate
19 long nano; // ns Nanoseconds of second, range -1e9 .. 1e9 (UTC)
20 unsigned int year; // UTC
21 unsigned char month; //
26 unsigned char valid; // Validity Flags
27 // bit0 validTOW 1 = Valid Time of Week
28 // bit1 validWKN 1 = Valid Week Number
29 // bit2 validUTC 1 = Valid UTC (Leap Seconds already known)
34 char rescode; // コマンドに対する返答 ACK/NAK/NUL
35 char resdata[SPI_RESDATA_LEN]; // コマンドに対する返答データ
36 UbloxNavTimeUtc gps; // GPSタイムスタンプ SPIで受信
37 struct tm t; // タイムスタンプ struct tmの月は(0〜11)なので注意 年は1900からのオフセット
39 int32_t data1sec[AD_CHNUM]; // 1sec平均値 SPIで受信
40 int32_t data[AD_CHNUM][AD_SAMPLE]; // AD_SAMPLE[Hz]の生データ SPIで受信
41 int32_t avg[AD_CHNUM][AD_SAMPLE]; // 平均後データ
42 unsigned int checksum; // SPI受信データのchecksumフィールド
47 int ad_ring_init(void);
49 void ad_ring_clear_sec(void);
50 void ad_ring_clear_high(void);
51 void ad_ring_clear_latest(void);
53 int ad_ring_read_get_sec(void);
54 void ad_ring_read_set_sec(int i);
55 void ad_ring_read_plus_sec(void);
56 int ad_ring_num_get_sec(void);
58 int ad_ring_read_get_high(void);
59 void ad_ring_read_set_high(int i);
60 void ad_ring_read_plus_high(void);
61 int ad_ring_num_get_high(void);
63 int ad_ring_write_get(void);
64 void ad_ring_write_plus(void);
65 int ad_ring_latest_get(void);
66 void ad_ring_latest_set(int i);
67 AdData* ad_ring_get(int ptr);
68 void ad_ring_set(AdData *data);
69 int ad_ring_full(void);
72 #include <CUnit/CUnit.h>
73 void ad_ring_test(CU_pSuite test_suite);