\r
#include "spi.h"\r
#include "ad_ring.h"\r
+#include "conf.h"\r
\r
/*\r
Little Endian\r
*/\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
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