Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
Fork of HelloWorld_IDS01A4 by
Diff: main.cpp
- 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
}
