#include <sys/types.h>\r
#include <string.h>\r
\r
+#include "debug_print.h"\r
#include "spi.h"\r
#include "ad_ring.h"\r
#include "conf.h"\r
gps = &(ad->gps);\r
\r
if (*ptr++ != SPI_HEAD_CHAR) return -1;\r
+ // Response Code\r
+ ad->rescode = *ptr++;\r
+ // Response Data\r
+ memcpy(ad->resdata, ptr, SPI_RESDATA_LEN);\r
+ ptr += SPI_RESDATA_LEN;\r
// GPS\r
gps->tow = *((int32_t*)ptr); ptr += 4;\r
gps->tacc = *((int32_t*)ptr); ptr += 4;\r
}\r
}\r
// Checksum\r
+ memcpy(&(ad->checksum), ptr, SPI_CHECKSUM_LEN);\r
\r
// gps->struct tm\r
ad->t.tm_year = gps->year - 1900;\r
}\r
void* thread_rcv(void* pParam)\r
{\r
- while(1) {\r
- fd_set fds;\r
- char buf[SPI_DATA_LEN+256];\r
- int i;\r
-// int ch;\r
- int fd_spi;\r
- AdData ad, *ad_ptr;\r
\r
+ fd_set fds;\r
+ char buf[SPI_DATA_LEN+256];\r
+ int i;\r
+ int fd_spi;\r
+ AdData ad, *ad_ptr;\r
+#if 0\r
+char cmd[SPI_CMD_LEN];\r
+char c;\r
+c=0;\r
+#endif\r
+ // spiドライバのリングバッファクリア\r
+ spi_buf_clear();\r
+ // spi送信コマンド長セット\r
+ spi_tx_len_set(SPI_CMD_LEN);\r
+\r
+ while(1) {\r
fd_spi = spi_get_fd();\r
// select の準備\r
FD_ZERO(&fds);\r
i = select(fd_spi + 1, &fds, NULL, NULL, NULL); // 読みselect\r
if(i <= 0) syslog(LOG_ERR, "%s: select returned with signal or error. ret=%d\n", __FUNCTION__, i);\r
if(FD_ISSET(fd_spi, &fds)) {\r
+#if 0\r
+// SPI送信データセット\r
+memset(cmd, 0, SPI_CMD_LEN);\r
+cmd[0] = SPI_HEAD_CHAR;\r
+cmd[1] = 1;\r
+cmd[2] = 2;\r
+cmd[3] = c++;\r
+spi_tx_set(cmd);\r
+#endif\r
// 受信した\r
i = spi_dnum_get();\r
-//printf("thread_rcv(): wakeup dnum=%d rcv_len=%d\n", i, spi_rcvd_len_get());\r
+//PDEBUG("thread_rcv(): wakeup dnum=%d rcv_len=%d\n", i, spi_rcvd_len_get());\r
while(i-- > 0) {\r
memset(&ad, 0, sizeof(ad));\r
// データ取得\r
ad.freq = conf_freq_get();\r
// 平均 仮コード 要変更\r
do_avg(AD_SAMPLE, &ad);\r
-#if 0\r
-printf("%04d/%02d/%02d %02d:%02d:%02d.%09ld,%6lums,%6luns,%02X",\r
- ad.t.year, ad.t.month, ad.t.day, ad.t.hour, ad.t.min, ad.t.sec, ad.t.nano,\r
- ad.t.tow, ad.t.tacc, ad.t.valid);\r
+#if 1\r
+int ch;\r
+PDEBUG("%04d/%02d/%02d %02d:%02d:%02d.%09ld,%6lums,%6luns,%02X",\r
+ ad.gps.year, ad.gps.month, ad.gps.day, ad.gps.hour, ad.gps.min, ad.gps.sec, ad.gps.nano,\r
+ ad.gps.tow, ad.gps.tacc, ad.gps.valid);\r
for(ch = 0; ch < AD_CHNUM; ch++) {\r
- printf(",%+7ld", ad.data1sec[ch]);\r
+ PDEBUG(",%+7ld", ad.data1sec[ch]);\r
}\r
-printf("\r\n");\r
+PDEBUG("\r\n");\r
+#endif\r
+#if 0\r
for(ch = 0; ch < AD_CHNUM; ch++) {\r
- printf(",%+7ld", ad.data[ch][0]);\r
+ PDEBUG(",%+7ld", ad.data[ch][0]);\r
}\r
-printf("\r\n");\r
+PDEBUG("\r\n");\r
for(ch = 0; ch < AD_CHNUM; ch++) {\r
- printf(",%+7ld", ad.data[ch][49]);\r
+ PDEBUG(",%+7ld", ad.data[ch][49]);\r
}\r
-printf("\r\n");\r
+PDEBUG("\r\n");\r
#endif\r
// ADリングバッファに書き込み\r
ad_ptr = ad_ring_get(ad_ring_write_get());\r