JunMo Hong / Mbed 2 deprecated cubebite_rnd_SPSGRFC433

Dependencies:   mbed

Fork of HelloWorld_IDS01A4 by ST

Revision:
12:5e20115bd13b
Parent:
11:f8396aa48de6
Child:
13:d802c6ed2e75
--- a/main.cpp	Fri Jan 12 04:57:19 2018 +0000
+++ b/main.cpp	Wed Jan 17 02:26:47 2018 +0000
@@ -19,6 +19,8 @@
 //*************************************************************************************
 #include "mbed.h"
 #include "SimpleSpirit1.h"
+
+#include <fstream>  // library that contains file input/output functions
 //*************************************************************************************
 
 
@@ -64,6 +66,7 @@
 /* 180108 cubebite HJM : F401re borad Init code */
 //static SimpleSpirit1 &myspirit = SimpleSpirit1::CreateInstance(PA_7, PA_6, PA_5, PC_7, PB_6, PA_10);    //F401re borad
 static SimpleSpirit1 &myspirit = SimpleSpirit1::CreateInstance(PA_7, PA_6, PA_5, PA_0, PB_6, PA_10);    //F401re borad, IRQ Testing, GPIO 3 -> IRQ
+static SimpleSpirit1 &myspirit = SimpleSpirit1::CreateInstance2(PA_7, PA_6, PA_5, PA_0, PB_6, PA_10);    //F401re borad, IRQ Testing, GPIO 3 -> IRQ
 #endif
 
 
@@ -74,6 +77,7 @@
 /* 180108 cubebite HJM : F746zg borad Init code */
 //static SimpleSpirit1 &myspirit = SimpleSpirit1::CreateInstance(PB_5, PB_4, PB_3, PD_14, PD_5, PD_6);    //F746zg borad
 static SimpleSpirit1 &myspirit = SimpleSpirit1::CreateInstance(PB_5, PB_4, PB_3, PA_3, PD_5, PD_6);    //F746zg borad, IRQ Testing, GPIO 3 -> IRQ
+static SimpleSpirit1 &myspirit2 = SimpleSpirit1::CreateInstance2(PB_5, PB_4, PB_3, PA_3, PD_5, PD_6);    //F746zg borad, IRQ Testing, GPIO 3 -> IRQ
 #endif
 //*************************************************************************************
 
@@ -82,7 +86,8 @@
 //Global variable : LEDs and user buttons by board
 //*************************************************************************************
 #ifdef  CUBEBITE_BOARD_F401RE
-static DigitalOut TestLED(D5);         /* LED of IDS01A4/5 */
+//180116 HJM : 그 전날 뻗어서 혹시 이쪽 LED 병렬회선을 사용하다가 오류가 났을 수도 있을 것 같다는 의심을 하게 됨. 주석처리하고 다시 테스트 하기로 함.
+//static DigitalOut TestLED(D5);         /* LED of IDS01A4/5 */
 #endif
 
 #ifdef  CUBEBITE_BOARD_F746ZG
@@ -135,14 +140,14 @@
 #endif
 
 
-
 /* Test : RF Speed Test */
 #ifdef  CUBEBITE_RF_SPEED_TEST_SEND_ON
 static clock_t clockRfSpeedTestStart, clockRfSpeedTestEnd;
-static float fRfSpeedTestResult;
+static float fRfSpeedTestResultTime;
 
 static bool bIsSendFirstClockFunctionStarted = false;
 static bool bIsSetSendFlag = false;
+
 #endif
 
 #ifdef  CUBEBITE_RF_SPEED_TEST_RECV_ON
@@ -206,6 +211,12 @@
 }
 
 
+static void set_ack_send_data_flag(void)
+{  
+#ifdef  CUBEBITE_RF_SPEED_TEST_RECV_ON
+    bIsAckSended = 1;
+#endif
+}
 
 
 
@@ -307,10 +318,13 @@
     ret = strcmp((const char *)read_buf, (const char *)send_buf);
     if (0 == ret)
     {        
-        printf("read, send buf collect!!\n");
+        set_ack_send_data_flag();
+//        printf("read, send buf collect!!\n");
         TestLED = !TestLED;     /* Toggle LED at the receiver */
 //        bIsAckSended = true;
+        
         //746zg 보드
+        /*
         int iRet = myspirit.send(send_ack_buf, curr_ack_len);
         if (iRet == RADIO_TX_OK)
         {
@@ -336,7 +350,7 @@
             printf("ACK : [RADIO_TX_NOACK]\n");
         #endif
         }    
-                        
+        */              
     }
 #endif
 
@@ -346,6 +360,7 @@
     {
         clockRfSpeedTestEnd = clock();
     } 
+//    printf("[DEBUG]recv -> %s\n", read_buf);
 #endif    
 
 
@@ -395,8 +410,10 @@
  */
 int main() 
 {  
+#ifdef  CUBEBITE_RF_SPEED_TEST_RECV_ON
     /* LED off */
-    TestLED = 0;                  
+    TestLED = 0;                
+#endif  
     /* 180108 cubebite HJM : function return value print */
     int iRet = 0;
 
@@ -454,9 +471,16 @@
         int16SpiritPartNum = 0;
 #endif    
 
+
+
+
         /* low power in idle condition., waiting for an event */
         __WFE(); 
     
+    
+    
+    
+    
 #ifdef  CUBEBITE_RF_GPIO_0_TEST    
         //180108 HJM : For spiritFunctionalState(), testing code
         
@@ -478,45 +502,49 @@
 #endif
     
 #ifdef  CUBEBITE_RF_SPEED_TEST_SEND_ON 
-        if (true == bIsSetSendFlag)
-        {
+    //180112 HJM : Ack 응답 올 때 까지의 Timeout.
+//            wait(0.5);  //100ms, 정상 동작, .       ( 테스트)
+            wait(0.1);  //100ms, 정상 동작, 송신 쪽 오류 O.       (1일 테스트)
+//            wait(0.08);  //100ms, 정상 동작, 오류 X.    (5분 테스트)
+//            wait(0.07);  //70ms, 
+//            wait(0.06); //60ms, 정상 동작, 송신 쪽 오류 O, (1시간 테스트)
+//            wait(0.05);  // 50ms, 정상 동작, 오류 X.   (13분 테스트)
+//            wait(0.03);  // 30ms, 정상 동작, ??? 오류 O.      (1시간 테스트)
+//            wait(0.02);  // 20ms, 정상 동작, 수신 쪽 오류 O.   (2분 테스트)
+//            wait(0.01);  // 10ms, 정상 동작, 수신 쪽 오류 O.   (1분 테스트)
+//            wait(0.008);    // 8ms, 정상 동작, 하지만 0.01 이 최대 속도값으로 보임.
+//            wait(0.005);  // 5ms, 정상 동작, 하지만 0.01 이 최대 속도값으로 보임, 하지만 Nothing to read 오류가 많이 뜸.    (20분 테스트)
+//            wait(0.00001);  // 0.01ms, 비 정상 동작.   (30분 테스트)
             set_send_data_flag();    
-            bIsSetSendFlag = false;
-        }
 #endif
     
         if(rx_done_flag) 
         {
             rx_done_flag = false; 
             read_rcvd_data();
-            printf("recvedd.\n");            
+//            printf("recvedd.\n");            
 #ifdef  CUBEBITE_RF_SPEED_TEST_SEND_ON                
             if (true == bIsSendFirstClockFunctionStarted)
             {
-                fRfSpeedTestResult = (float)(clockRfSpeedTestEnd - clockRfSpeedTestStart)/CLOCKS_PER_SEC;
-                printf("\n Clock Rf Speed Test : [%.9f(sec)] \n", fRfSpeedTestResult);      
+                fRfSpeedTestResultTime = (float)(clockRfSpeedTestEnd - clockRfSpeedTestStart)/CLOCKS_PER_SEC;
+                //180115 HJM : .csv 형식으로 출력하여 데이터를 도식화 하기위해 log 수정,
+                //((putty출력中)시,분,초,)송신위치,수신위치,대략거리(m),송신딜레이(sec),송신데이터양(byte),속도(sec)
+//                printf("Clock Rf Speed Test : [%.9f(sec)] \n", fRfSpeedTestResultTime);
+//                printf(",hjm(keyboard-right),hjm(keyboard-left),1,0.1,28,%.9f\n", fRfSpeedTestResultTime);    //1차, 2시간 테스트
+                printf(",hjm(keyboard-left),mars(tv-desk),10,0.1,28,%.9f\n", fRfSpeedTestResultTime);                                                    //2차
                 
-                bIsSendFirstClockFunctionStarted = false;
+                
+                bIsSendFirstClockFunctionStarted = false;                
             }
 #endif
         }
         
         else if (send_data_flag)
         { 
-#ifdef  CUBEBITE_RF_SPEED_TEST_SEND_ON        
-    //180112 HJM : Ack 응답 올 때 까지의 Timeout.
-//            wait(0.1);  //100ms, 정상 동작, 오류 없음.    (5분 테스트)
-//            wait(0.06); //60ms, 정상 동작, 오류 없음.       (5분 테스트)
-            wait(0.05);  // 50ms, 정상 동작, 오류 없음.     (10분 테스트)
-//            wait(0.01);  // 10ms, 정상 동작.
-//            wait(0.008);    // 8ms, 정상 동작, 하지만 0.01 이 최대 속도값으로 보임.
-//            wait(0.005);  // 5ms, 정상 동작, 하지만 0.01 이 최대 속도값으로 보임, 하지만 Nothing to read 오류가 많이 뜸.    (20분 테스트)
-//            wait(0.00001);  // 0.01ms, 비 정상 동작.   (30분 테스트)
-#endif
-                         
+
             send_data_flag = false;
             send_data();
-            printf("sended.\n");
+//            printf("sended.\n");
 
         }
     
@@ -528,11 +556,12 @@
     
 #ifdef  CUBEBITE_RF_SPEED_TEST_RECV_ON 
 //180112 HJM 오후 1시, 현재 사용 안하는 중, recv 쪽에서 strcmp로 보낸 데이터와 받은 데이터 비교 후, send 를 바로 하는 코드로 바꿨음.
+//180116 HJM 오전 9시, 그 전날도 뻗고, OK 신호를 제대로 받지를 않아서 recv 쪽 ok send 보내는 쪽을 의심, 다시 바꾸기로함.
         else if (true == bIsAckSended)
         {
             bIsAckSended = false;
             ack_send_data();
-            printf("recv sended.\n"); 
+//            printf("recv sended.\n"); 
         }
 #endif
     }