OSDN Git Service

conf.c
[scilog/scilog.git] / thread_rcv.c
index 75e2403..1c54492 100644 (file)
@@ -9,6 +9,7 @@
 \r
 #include "spi.h"\r
 #include "ad_ring.h"\r
+#include "conf.h"\r
 \r
 /*\r
        Little Endian\r
@@ -80,8 +81,22 @@ static int decode(char *buf, AdData *ad)
 */\r
 static void do_avg(int freq, AdData *ad)\r
 {\r
-// 仮コード\r
-       memcpy(ad->avg, ad->data, AD_CHNUM*AD_SAMPLE*AD_BYTES);\r
+       int     ch, i, j;\r
+       long    add;\r
+       int     avg_freq;\r
+       int     avg_num;\r
+       \r
+       avg_freq = conf_freq_get();\r
+       avg_num = AD_SAMPLE/avg_freq;\r
+       for(ch = 0; ch < AD_CHNUM; ch++) {\r
+               for(i = 0; i < avg_freq; i++) {\r
+                       add = 0;\r
+                       for(j = 0; j < avg_num; j++) {\r
+                               add += ad->data[ch][i*avg_num + j];\r
+                       }\r
+                       ad->avg[ch][i] = add / avg_num;\r
+               }\r
+       }\r
 }\r
 void* thread_rcv(void* pParam)\r
 {\r
@@ -106,13 +121,12 @@ void* thread_rcv(void* pParam)
                        i = spi_dnum_get();\r
 //printf("thread_rcv(): wakeup dnum=%d rcv_len=%d\n", i, spi_rcvd_len_get());\r
                        while(i-- > 0) {\r
-                               // バッファ書き込み位置get\r
-//                             d = ring_get(ring_write_get());\r
-//                             ring_zero();\r
+                               memset(&ad, 0, sizeof(ad));\r
                                // データ取得\r
                                spi_rx_get(buf);\r
                                // デコード\r
                                decode(buf, &ad);\r
+                               ad.freq = conf_freq_get();\r
                                // 平均 仮コード 要変更\r
                                do_avg(AD_SAMPLE, &ad);\r
 #if 0\r