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
main.cpp@11:f8396aa48de6, 2018-01-12 (annotated)
- Committer:
- jmhong
- Date:
- Fri Jan 12 04:57:19 2018 +0000
- Revision:
- 11:f8396aa48de6
- Parent:
- 10:cc81b87e005e
- Child:
- 12:5e20115bd13b
180112_RF Speed Test_HJM : commit test, export test
Who changed what in which revision?
| User | Revision | Line number | New contents of line |
|---|---|---|---|
| rosarium | 0:2ddc0583bcec | 1 | /** |
| rosarium | 0:2ddc0583bcec | 2 | ****************************************************************************** |
| rosarium | 0:2ddc0583bcec | 3 | * @file main.cpp |
| jmhong | 11:f8396aa48de6 | 4 | * @author JMHong, Cubebite |
| rosarium | 0:2ddc0583bcec | 5 | * @version V1.0.0 |
| jmhong | 11:f8396aa48de6 | 6 | * @date June 19th, 2018 |
| rosarium | 4:cae1fa054b86 | 7 | * @brief mbed test application for the STMicroelectronics X-NUCLEO-IDB01A4/5 |
| jmhong | 11:f8396aa48de6 | 8 | * Spirit1 Module(SPSGRFC-433) |
| rosarium | 0:2ddc0583bcec | 9 | ****************************************************************************** |
| rosarium | 0:2ddc0583bcec | 10 | * @attention |
| rosarium | 0:2ddc0583bcec | 11 | * |
| jmhong | 11:f8396aa48de6 | 12 | * <h2><center>© COPYRIGHT(c) 2018 Cubebite</center></h2> |
| rosarium | 0:2ddc0583bcec | 13 | * |
| rosarium | 0:2ddc0583bcec | 14 | ****************************************************************************** |
| rosarium | 0:2ddc0583bcec | 15 | */ |
| rosarium | 0:2ddc0583bcec | 16 | |
| jmhong | 11:f8396aa48de6 | 17 | //************************************************************************************* |
| jmhong | 11:f8396aa48de6 | 18 | //Include |
| jmhong | 11:f8396aa48de6 | 19 | //************************************************************************************* |
| rosarium | 0:2ddc0583bcec | 20 | #include "mbed.h" |
| rosarium | 0:2ddc0583bcec | 21 | #include "SimpleSpirit1.h" |
| jmhong | 11:f8396aa48de6 | 22 | //************************************************************************************* |
| rosarium | 0:2ddc0583bcec | 23 | |
| jmhong | 11:f8396aa48de6 | 24 | |
| jmhong | 11:f8396aa48de6 | 25 | //************************************************************************************* |
| jmhong | 11:f8396aa48de6 | 26 | //Define : Debug |
| jmhong | 11:f8396aa48de6 | 27 | //************************************************************************************* |
| jmhong | 10:cc81b87e005e | 28 | /* 180108 cubebite HJM : SimpleSpirit1 Debug define */ |
| jmhong | 10:cc81b87e005e | 29 | #define NDEBUG |
| jmhong | 10:cc81b87e005e | 30 | #define HEAVY_DEBUG |
| jmhong | 10:cc81b87e005e | 31 | |
| jmhong | 10:cc81b87e005e | 32 | |
| jmhong | 10:cc81b87e005e | 33 | /* 180108 cubebite HJM : cubebite Debug define */ |
| jmhong | 11:f8396aa48de6 | 34 | //#define CUBEBITE_DEBUG |
| jmhong | 11:f8396aa48de6 | 35 | //************************************************************************************* |
| jmhong | 10:cc81b87e005e | 36 | |
| jmhong | 10:cc81b87e005e | 37 | |
| jmhong | 11:f8396aa48de6 | 38 | //************************************************************************************* |
| jmhong | 11:f8396aa48de6 | 39 | //Define : Test, Compile |
| jmhong | 11:f8396aa48de6 | 40 | //************************************************************************************* |
| jmhong | 11:f8396aa48de6 | 41 | /* 180108 cubebite HJM : cubebite Testing define, 1개씩만 켜야 함. */ |
| jmhong | 11:f8396aa48de6 | 42 | //#define CUBEBITE_RF_USER_BUTTON_SEND_TEST |
| jmhong | 10:cc81b87e005e | 43 | //#define CUBEBITE_RF_DEVICE_PARTNUMBER_TEST |
| jmhong | 10:cc81b87e005e | 44 | //#define CUBEBITE_RF_GPIO_0_TEST |
| jmhong | 11:f8396aa48de6 | 45 | #define CUBEBITE_RF_SPEED_TEST_SEND_ON |
| jmhong | 11:f8396aa48de6 | 46 | //#define CUBEBITE_RF_SPEED_TEST_RECV_ON |
| jmhong | 10:cc81b87e005e | 47 | |
| jmhong | 10:cc81b87e005e | 48 | |
| jmhong | 11:f8396aa48de6 | 49 | /* 180109 cubebite HJM : cubebite Compile define, 1개씩만 켜야 함. */ |
| jmhong | 10:cc81b87e005e | 50 | //#define CUBEBITE_BOARD_F746ZG |
| jmhong | 10:cc81b87e005e | 51 | #define CUBEBITE_BOARD_F401RE |
| jmhong | 11:f8396aa48de6 | 52 | //************************************************************************************* |
| jmhong | 10:cc81b87e005e | 53 | |
| jmhong | 10:cc81b87e005e | 54 | |
| jmhong | 11:f8396aa48de6 | 55 | //************************************************************************************* |
| jmhong | 11:f8396aa48de6 | 56 | //Global variable : Create an instance by board |
| jmhong | 11:f8396aa48de6 | 57 | //************************************************************************************* |
| jmhong | 10:cc81b87e005e | 58 | /* 180108 cubebite HJM : orignal code, backup */ |
| jmhong | 10:cc81b87e005e | 59 | //static SimpleSpirit1 &myspirit = SimpleSpirit1::CreateInstance(D11, D12, D3, D9, D10, D2); /* (SPI_CLK) = (D13:PA5:resistorR7 --> D3:PB3:resistorR4)*/ |
| jmhong | 10:cc81b87e005e | 60 | |
| jmhong | 10:cc81b87e005e | 61 | #ifdef CUBEBITE_BOARD_F401RE |
| jmhong | 10:cc81b87e005e | 62 | /* 180108 cubebite HJM : F401re borad, AnalogIn PIN Info, A0(PA_0) A1(PA_1) A2(PA_4) A3(PB_0) A4(PC_1) A5(PC_0) */ |
| jmhong | 10:cc81b87e005e | 63 | /* RF Module 과 상관 관계 => A0(PA_0)[SPI GPIO 3] A1(PA_1)[CSN] A2(PA_4)[SPI1 GPIO 2] A3(PB_0)[SPI1 GPIO 1] A4(PC_1)[SPI1_GPIO 0] */ |
| jmhong | 10:cc81b87e005e | 64 | /* 180108 cubebite HJM : F401re borad Init code */ |
| jmhong | 10:cc81b87e005e | 65 | //static SimpleSpirit1 &myspirit = SimpleSpirit1::CreateInstance(PA_7, PA_6, PA_5, PC_7, PB_6, PA_10); //F401re borad |
| jmhong | 10:cc81b87e005e | 66 | static SimpleSpirit1 &myspirit = SimpleSpirit1::CreateInstance(PA_7, PA_6, PA_5, PA_0, PB_6, PA_10); //F401re borad, IRQ Testing, GPIO 3 -> IRQ |
| jmhong | 10:cc81b87e005e | 67 | #endif |
| jmhong | 10:cc81b87e005e | 68 | |
| jmhong | 10:cc81b87e005e | 69 | |
| jmhong | 10:cc81b87e005e | 70 | |
| jmhong | 10:cc81b87e005e | 71 | #ifdef CUBEBITE_BOARD_F746ZG |
| jmhong | 10:cc81b87e005e | 72 | /* 180108 cubebite HJM : F746zg borad, AnalogIn PIN Info, A0(PA_3) A1(PC_0) A2(PC_3) A3(PF_3) A4(PF_5) A5(PF_10) */ |
| jmhong | 10:cc81b87e005e | 73 | /* RF Module 과 상관 관계 => A0(PA_3)[SPI GPIO 3] A1(PC_0)[CSN] A2(PC_3)[SPI1 GPIO 2] A3(PF_3)[SPI1 GPIO 1] A4(PF_5)[SPI1_GPIO 0] */ |
| jmhong | 10:cc81b87e005e | 74 | /* 180108 cubebite HJM : F746zg borad Init code */ |
| jmhong | 10:cc81b87e005e | 75 | //static SimpleSpirit1 &myspirit = SimpleSpirit1::CreateInstance(PB_5, PB_4, PB_3, PD_14, PD_5, PD_6); //F746zg borad |
| jmhong | 10:cc81b87e005e | 76 | static SimpleSpirit1 &myspirit = SimpleSpirit1::CreateInstance(PB_5, PB_4, PB_3, PA_3, PD_5, PD_6); //F746zg borad, IRQ Testing, GPIO 3 -> IRQ |
| jmhong | 10:cc81b87e005e | 77 | #endif |
| jmhong | 11:f8396aa48de6 | 78 | //************************************************************************************* |
| jmhong | 11:f8396aa48de6 | 79 | |
| jmhong | 11:f8396aa48de6 | 80 | |
| jmhong | 11:f8396aa48de6 | 81 | //************************************************************************************* |
| jmhong | 11:f8396aa48de6 | 82 | //Global variable : LEDs and user buttons by board |
| jmhong | 11:f8396aa48de6 | 83 | //************************************************************************************* |
| jmhong | 11:f8396aa48de6 | 84 | #ifdef CUBEBITE_BOARD_F401RE |
| jmhong | 11:f8396aa48de6 | 85 | static DigitalOut TestLED(D5); /* LED of IDS01A4/5 */ |
| jmhong | 11:f8396aa48de6 | 86 | #endif |
| jmhong | 10:cc81b87e005e | 87 | |
| jmhong | 10:cc81b87e005e | 88 | #ifdef CUBEBITE_BOARD_F746ZG |
| jmhong | 11:f8396aa48de6 | 89 | static DigitalOut TestLED(PB_0); /* LED of IDS01A4/5 */ |
| jmhong | 11:f8396aa48de6 | 90 | #endif |
| jmhong | 11:f8396aa48de6 | 91 | |
| jmhong | 11:f8396aa48de6 | 92 | #ifdef CUBEBITE_RF_USER_BUTTON_SEND_TEST |
| jmhong | 11:f8396aa48de6 | 93 | static InterruptIn event(USER_BUTTON); /* Interrupt event to give userinterface to send pkt. */ |
| jmhong | 11:f8396aa48de6 | 94 | #endif |
| jmhong | 11:f8396aa48de6 | 95 | //************************************************************************************* |
| jmhong | 11:f8396aa48de6 | 96 | |
| jmhong | 11:f8396aa48de6 | 97 | |
| jmhong | 11:f8396aa48de6 | 98 | //************************************************************************************* |
| jmhong | 11:f8396aa48de6 | 99 | //Global variable : Rf Send, read Buffer |
| jmhong | 11:f8396aa48de6 | 100 | //************************************************************************************* |
| jmhong | 11:f8396aa48de6 | 101 | /* 180108 cubebite HJM : send testing, orignal code */ |
| jmhong | 11:f8396aa48de6 | 102 | #define TEST_STR_LEN (32) |
| jmhong | 11:f8396aa48de6 | 103 | static uint8_t send_buf[TEST_STR_LEN] ={'S','P','I','R','I','T','1',' ','H','E','L','L','O',' ','W','O','R','L','D',' ','P','2','P',' ','D','E','M','O'}; |
| jmhong | 11:f8396aa48de6 | 104 | static uint8_t read_buf[TEST_STR_LEN] ={'0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0','0'}; |
| jmhong | 11:f8396aa48de6 | 105 | //************************************************************************************* |
| jmhong | 11:f8396aa48de6 | 106 | |
| jmhong | 11:f8396aa48de6 | 107 | |
| jmhong | 11:f8396aa48de6 | 108 | //************************************************************************************* |
| jmhong | 11:f8396aa48de6 | 109 | //Global variable : tx, rx Flag |
| jmhong | 11:f8396aa48de6 | 110 | //************************************************************************************* |
| jmhong | 11:f8396aa48de6 | 111 | static volatile bool rx_done_flag = false; |
| jmhong | 11:f8396aa48de6 | 112 | static volatile bool tx_done_flag = false; |
| jmhong | 11:f8396aa48de6 | 113 | static volatile bool send_data_flag = false; |
| jmhong | 11:f8396aa48de6 | 114 | //************************************************************************************* |
| jmhong | 11:f8396aa48de6 | 115 | |
| jmhong | 11:f8396aa48de6 | 116 | |
| jmhong | 11:f8396aa48de6 | 117 | //************************************************************************************* |
| jmhong | 11:f8396aa48de6 | 118 | //Global variable : Testing |
| jmhong | 11:f8396aa48de6 | 119 | //************************************************************************************* |
| jmhong | 11:f8396aa48de6 | 120 | /* Test : GPIO 0 */ |
| jmhong | 11:f8396aa48de6 | 121 | #ifdef CUBEBITE_RF_GPIO_0_TEST |
| jmhong | 11:f8396aa48de6 | 122 | #ifdef CUBEBITE_BOARD_F401RE |
| jmhong | 11:f8396aa48de6 | 123 | /* 180108 cubebite HJM : F401re borad, PC_1 == RF_MODULE_GPIO 0, Testing code */ |
| jmhong | 11:f8396aa48de6 | 124 | static DigitalIn RF_GPIO_0_INPUT(PC_1); //F401re borad |
| jmhong | 11:f8396aa48de6 | 125 | //static DigitalIn RF_GPIO_3_INPUT(PA_0); //F401re borad, 사용시, send 정상 동작 안함, Spirit1 IRQ 핀이랑 같이 물려있기 때문 |
| jmhong | 10:cc81b87e005e | 126 | #endif |
| jmhong | 10:cc81b87e005e | 127 | #endif |
| jmhong | 10:cc81b87e005e | 128 | |
| jmhong | 11:f8396aa48de6 | 129 | #ifdef CUBEBITE_RF_GPIO_0_TEST |
| jmhong | 11:f8396aa48de6 | 130 | #ifdef CUBEBITE_BOARD_F746ZG |
| jmhong | 11:f8396aa48de6 | 131 | /* 180108 cubebite HJM : F746zg borad, PC_1 == RF_MODULE_GPIO 0, Testing code */ |
| jmhong | 11:f8396aa48de6 | 132 | static DigitalIn RF_GPIO_0_INPUT(PF_5); //F746zg borad |
| jmhong | 10:cc81b87e005e | 133 | //static DigitalIn RF_GPIO_3_INPUT(PA_3); //F746zg borad, 사용시, send 정상 동작 안함, Spirit1 IRQ 핀이랑 같이 물려있기 때문 |
| jmhong | 11:f8396aa48de6 | 134 | #endif |
| jmhong | 11:f8396aa48de6 | 135 | #endif |
| jmhong | 11:f8396aa48de6 | 136 | |
| jmhong | 11:f8396aa48de6 | 137 | |
| jmhong | 11:f8396aa48de6 | 138 | |
| jmhong | 11:f8396aa48de6 | 139 | /* Test : RF Speed Test */ |
| jmhong | 11:f8396aa48de6 | 140 | #ifdef CUBEBITE_RF_SPEED_TEST_SEND_ON |
| jmhong | 11:f8396aa48de6 | 141 | static clock_t clockRfSpeedTestStart, clockRfSpeedTestEnd; |
| jmhong | 11:f8396aa48de6 | 142 | static float fRfSpeedTestResult; |
| jmhong | 11:f8396aa48de6 | 143 | |
| jmhong | 11:f8396aa48de6 | 144 | static bool bIsSendFirstClockFunctionStarted = false; |
| jmhong | 11:f8396aa48de6 | 145 | static bool bIsSetSendFlag = false; |
| jmhong | 11:f8396aa48de6 | 146 | #endif |
| jmhong | 11:f8396aa48de6 | 147 | |
| jmhong | 11:f8396aa48de6 | 148 | #ifdef CUBEBITE_RF_SPEED_TEST_RECV_ON |
| jmhong | 11:f8396aa48de6 | 149 | #define TEST_ACK_STR_LEN (6) |
| jmhong | 11:f8396aa48de6 | 150 | static uint8_t send_ack_buf[TEST_ACK_STR_LEN] ={'O','K'}; |
| jmhong | 11:f8396aa48de6 | 151 | size_t curr_ack_len = strlen((const char*)send_ack_buf) + 1; |
| jmhong | 11:f8396aa48de6 | 152 | |
| jmhong | 11:f8396aa48de6 | 153 | static bool bIsAckSended = false; |
| jmhong | 11:f8396aa48de6 | 154 | #endif |
| jmhong | 11:f8396aa48de6 | 155 | //************************************************************************************* |
| jmhong | 10:cc81b87e005e | 156 | |
| jmhong | 10:cc81b87e005e | 157 | |
| jmhong | 10:cc81b87e005e | 158 | |
| jmhong | 10:cc81b87e005e | 159 | |
| rosarium | 0:2ddc0583bcec | 160 | |
| jmhong | 11:f8396aa48de6 | 161 | |
| jmhong | 11:f8396aa48de6 | 162 | |
| jmhong | 11:f8396aa48de6 | 163 | |
| rosarium | 0:2ddc0583bcec | 164 | |
| jmhong | 11:f8396aa48de6 | 165 | |
| jmhong | 11:f8396aa48de6 | 166 | |
| jmhong | 11:f8396aa48de6 | 167 | |
| jmhong | 11:f8396aa48de6 | 168 | |
| rosarium | 0:2ddc0583bcec | 169 | |
| jmhong | 10:cc81b87e005e | 170 | |
| jmhong | 10:cc81b87e005e | 171 | |
| rosarium | 1:cf2e2f85bf8d | 172 | /** |
| rosarium | 1:cf2e2f85bf8d | 173 | * @brief callback_func |
| rosarium | 1:cf2e2f85bf8d | 174 | * @param callback event |
| rosarium | 1:cf2e2f85bf8d | 175 | * @retval None. |
| rosarium | 1:cf2e2f85bf8d | 176 | */ |
| rosarium | 0:2ddc0583bcec | 177 | static void callback_func(int event) |
| rosarium | 0:2ddc0583bcec | 178 | { |
| jmhong | 11:f8396aa48de6 | 179 | #ifdef CUBEBITE_DEBUG |
| jmhong | 11:f8396aa48de6 | 180 | printf("[CUBEBITE] callback_func(int event) \n"); |
| jmhong | 11:f8396aa48de6 | 181 | #endif |
| jmhong | 11:f8396aa48de6 | 182 | |
| jmhong | 11:f8396aa48de6 | 183 | |
| jmhong | 10:cc81b87e005e | 184 | |
| jmhong | 11:f8396aa48de6 | 185 | if(event == SimpleSpirit1::RX_DONE) |
| jmhong | 11:f8396aa48de6 | 186 | { |
| jmhong | 11:f8396aa48de6 | 187 | rx_done_flag = 1; |
| jmhong | 11:f8396aa48de6 | 188 | } |
| jmhong | 11:f8396aa48de6 | 189 | else if (event == SimpleSpirit1::TX_DONE) |
| jmhong | 11:f8396aa48de6 | 190 | { |
| jmhong | 11:f8396aa48de6 | 191 | tx_done_flag = 1; |
| jmhong | 11:f8396aa48de6 | 192 | } |
| rosarium | 0:2ddc0583bcec | 193 | } |
| rosarium | 0:2ddc0583bcec | 194 | |
| jmhong | 11:f8396aa48de6 | 195 | |
| jmhong | 11:f8396aa48de6 | 196 | |
| jmhong | 11:f8396aa48de6 | 197 | |
| rosarium | 4:cae1fa054b86 | 198 | /** |
| rosarium | 4:cae1fa054b86 | 199 | * @brief set_send_data_flag |
| rosarium | 4:cae1fa054b86 | 200 | * @param None |
| rosarium | 4:cae1fa054b86 | 201 | * @retval None |
| rosarium | 4:cae1fa054b86 | 202 | */ |
| wobetz | 5:a65ed26b0f98 | 203 | static void set_send_data_flag(void) |
| rosarium | 4:cae1fa054b86 | 204 | { |
| jmhong | 11:f8396aa48de6 | 205 | send_data_flag = 1 ; |
| rosarium | 4:cae1fa054b86 | 206 | } |
| rosarium | 1:cf2e2f85bf8d | 207 | |
| jmhong | 11:f8396aa48de6 | 208 | |
| jmhong | 11:f8396aa48de6 | 209 | |
| jmhong | 11:f8396aa48de6 | 210 | |
| jmhong | 11:f8396aa48de6 | 211 | |
| jmhong | 11:f8396aa48de6 | 212 | |
| rosarium | 1:cf2e2f85bf8d | 213 | /** |
| rosarium | 1:cf2e2f85bf8d | 214 | * @brief send_data |
| rosarium | 1:cf2e2f85bf8d | 215 | * @param None |
| rosarium | 1:cf2e2f85bf8d | 216 | * @retval None |
| rosarium | 1:cf2e2f85bf8d | 217 | */ |
| wobetz | 5:a65ed26b0f98 | 218 | static void send_data(void) |
| wobetz | 5:a65ed26b0f98 | 219 | { |
| jmhong | 11:f8396aa48de6 | 220 | #ifdef CUBEBITE_DEBUG |
| jmhong | 11:f8396aa48de6 | 221 | printf("[CUBEBITE] send_data() 호출 됨.\n"); |
| jmhong | 11:f8396aa48de6 | 222 | printf("[CUBEBITE] myspirit, is_receiving()\t......"); |
| jmhong | 11:f8396aa48de6 | 223 | #endif |
| jmhong | 11:f8396aa48de6 | 224 | while(myspirit.is_receiving()); /* wait for ongoing RX ends 180110 HJM 아마 이 전에 보내던 거 마저 다 보내려고 하는 거 같다. */ |
| jmhong | 11:f8396aa48de6 | 225 | #ifdef CUBEBITE_DEBUG |
| jmhong | 11:f8396aa48de6 | 226 | printf("OK\n"); |
| jmhong | 11:f8396aa48de6 | 227 | #endif |
| jmhong | 11:f8396aa48de6 | 228 | |
| jmhong | 11:f8396aa48de6 | 229 | |
| jmhong | 11:f8396aa48de6 | 230 | size_t curr_len = strlen((const char*)send_buf) + 1; |
| jmhong | 10:cc81b87e005e | 231 | int iRet = 0; |
| jmhong | 11:f8396aa48de6 | 232 | |
| jmhong | 11:f8396aa48de6 | 233 | |
| jmhong | 11:f8396aa48de6 | 234 | #ifdef CUBEBITE_DEBUG |
| jmhong | 11:f8396aa48de6 | 235 | printf("[CUBEBITE] myspirit, send()\t......"); |
| jmhong | 11:f8396aa48de6 | 236 | #endif |
| jmhong | 11:f8396aa48de6 | 237 | iRet = myspirit.send(send_buf, curr_len); |
| jmhong | 10:cc81b87e005e | 238 | if (iRet == RADIO_TX_OK) |
| jmhong | 10:cc81b87e005e | 239 | { |
| jmhong | 11:f8396aa48de6 | 240 | #ifdef CUBEBITE_DEBUG |
| jmhong | 11:f8396aa48de6 | 241 | printf("[RADIO_TX_OK]\n"); |
| jmhong | 11:f8396aa48de6 | 242 | #endif |
| jmhong | 11:f8396aa48de6 | 243 | |
| jmhong | 11:f8396aa48de6 | 244 | #ifdef CUBEBITE_RF_SPEED_TEST_SEND_ON |
| jmhong | 11:f8396aa48de6 | 245 | #ifdef CUBEBITE_BOARD_F401RE |
| jmhong | 11:f8396aa48de6 | 246 | if (false == bIsSendFirstClockFunctionStarted) |
| jmhong | 11:f8396aa48de6 | 247 | { |
| jmhong | 11:f8396aa48de6 | 248 | clockRfSpeedTestStart = clock(); |
| jmhong | 11:f8396aa48de6 | 249 | bIsSendFirstClockFunctionStarted = true; |
| jmhong | 11:f8396aa48de6 | 250 | } |
| jmhong | 11:f8396aa48de6 | 251 | #endif |
| jmhong | 11:f8396aa48de6 | 252 | #endif |
| jmhong | 10:cc81b87e005e | 253 | } |
| jmhong | 10:cc81b87e005e | 254 | else if (iRet == RADIO_TX_ERR) |
| jmhong | 10:cc81b87e005e | 255 | { |
| jmhong | 11:f8396aa48de6 | 256 | #ifdef CUBEBITE_DEBUG |
| jmhong | 10:cc81b87e005e | 257 | printf("[RADIO_TX_ERR]\n"); |
| jmhong | 11:f8396aa48de6 | 258 | #endif |
| jmhong | 10:cc81b87e005e | 259 | } |
| jmhong | 10:cc81b87e005e | 260 | else if (iRet == RADIO_TX_COLLISION) |
| jmhong | 10:cc81b87e005e | 261 | { |
| jmhong | 11:f8396aa48de6 | 262 | #ifdef CUBEBITE_DEBUG |
| jmhong | 10:cc81b87e005e | 263 | printf("[RADIO_TX_COLLISION]\n"); |
| jmhong | 11:f8396aa48de6 | 264 | #endif |
| jmhong | 10:cc81b87e005e | 265 | } |
| jmhong | 10:cc81b87e005e | 266 | else if (iRet == RADIO_TX_NOACK) |
| jmhong | 10:cc81b87e005e | 267 | { |
| jmhong | 11:f8396aa48de6 | 268 | #ifdef CUBEBITE_DEBUG |
| jmhong | 10:cc81b87e005e | 269 | printf("[RADIO_TX_NOACK]\n"); |
| jmhong | 11:f8396aa48de6 | 270 | #endif |
| jmhong | 10:cc81b87e005e | 271 | } |
| jmhong | 10:cc81b87e005e | 272 | |
| jmhong | 11:f8396aa48de6 | 273 | #ifdef CUBEBITE_DEBUG |
| jmhong | 11:f8396aa48de6 | 274 | printf("[CUBEBITE] send_data() 호출 끝.\n"); |
| jmhong | 11:f8396aa48de6 | 275 | #endif |
| rosarium | 0:2ddc0583bcec | 276 | } |
| rosarium | 4:cae1fa054b86 | 277 | |
| jmhong | 11:f8396aa48de6 | 278 | |
| jmhong | 11:f8396aa48de6 | 279 | |
| jmhong | 11:f8396aa48de6 | 280 | |
| jmhong | 11:f8396aa48de6 | 281 | |
| jmhong | 11:f8396aa48de6 | 282 | |
| jmhong | 11:f8396aa48de6 | 283 | |
| jmhong | 11:f8396aa48de6 | 284 | |
| jmhong | 11:f8396aa48de6 | 285 | |
| jmhong | 11:f8396aa48de6 | 286 | |
| rosarium | 4:cae1fa054b86 | 287 | /** |
| rosarium | 4:cae1fa054b86 | 288 | * @brief read_rcvd_data |
| rosarium | 4:cae1fa054b86 | 289 | * @param None |
| rosarium | 4:cae1fa054b86 | 290 | * @retval None |
| rosarium | 4:cae1fa054b86 | 291 | */ |
| wobetz | 5:a65ed26b0f98 | 292 | static void read_rcvd_data(void) |
| rosarium | 4:cae1fa054b86 | 293 | { |
| jmhong | 11:f8396aa48de6 | 294 | #ifdef CUBEBITE_DEBUG |
| jmhong | 11:f8396aa48de6 | 295 | printf("[CUBEBITE] read_rcvd_data() 호출 됨. \n"); |
| jmhong | 11:f8396aa48de6 | 296 | #endif |
| rosarium | 4:cae1fa054b86 | 297 | |
| jmhong | 11:f8396aa48de6 | 298 | for(unsigned int flush_count = 0; flush_count < TEST_STR_LEN; flush_count++) read_buf[flush_count] = 0 ;/* clear the read buffer */ |
| jmhong | 11:f8396aa48de6 | 299 | |
| jmhong | 11:f8396aa48de6 | 300 | int ret = myspirit.read(read_buf, sizeof(read_buf)); |
| jmhong | 11:f8396aa48de6 | 301 | if (ret == 0) |
| jmhong | 11:f8396aa48de6 | 302 | { |
| jmhong | 11:f8396aa48de6 | 303 | printf("[CUBEBITE] Read() Error : Nothing to read\n"); |
| rosarium | 4:cae1fa054b86 | 304 | return; |
| jmhong | 11:f8396aa48de6 | 305 | } |
| jmhong | 11:f8396aa48de6 | 306 | #ifdef CUBEBITE_RF_SPEED_TEST_RECV_ON |
| jmhong | 11:f8396aa48de6 | 307 | ret = strcmp((const char *)read_buf, (const char *)send_buf); |
| jmhong | 11:f8396aa48de6 | 308 | if (0 == ret) |
| jmhong | 11:f8396aa48de6 | 309 | { |
| jmhong | 11:f8396aa48de6 | 310 | printf("read, send buf collect!!\n"); |
| jmhong | 11:f8396aa48de6 | 311 | TestLED = !TestLED; /* Toggle LED at the receiver */ |
| jmhong | 11:f8396aa48de6 | 312 | // bIsAckSended = true; |
| jmhong | 11:f8396aa48de6 | 313 | //746zg 보드 |
| jmhong | 11:f8396aa48de6 | 314 | int iRet = myspirit.send(send_ack_buf, curr_ack_len); |
| jmhong | 11:f8396aa48de6 | 315 | if (iRet == RADIO_TX_OK) |
| jmhong | 11:f8396aa48de6 | 316 | { |
| jmhong | 11:f8396aa48de6 | 317 | #ifdef CUBEBITE_DEBUG |
| jmhong | 11:f8396aa48de6 | 318 | printf("ACK : [RADIO_TX_OK]\n"); |
| jmhong | 11:f8396aa48de6 | 319 | #endif |
| jmhong | 11:f8396aa48de6 | 320 | } |
| jmhong | 11:f8396aa48de6 | 321 | else if (iRet == RADIO_TX_ERR) |
| jmhong | 11:f8396aa48de6 | 322 | { |
| jmhong | 11:f8396aa48de6 | 323 | #ifdef CUBEBITE_DEBUG |
| jmhong | 11:f8396aa48de6 | 324 | printf("ACK : [RADIO_TX_ERR]\n"); |
| jmhong | 11:f8396aa48de6 | 325 | #endif |
| jmhong | 11:f8396aa48de6 | 326 | } |
| jmhong | 11:f8396aa48de6 | 327 | else if (iRet == RADIO_TX_COLLISION) |
| jmhong | 11:f8396aa48de6 | 328 | { |
| jmhong | 11:f8396aa48de6 | 329 | #ifdef CUBEBITE_DEBUG |
| jmhong | 11:f8396aa48de6 | 330 | printf("ACK : [RADIO_TX_COLLISION]\n"); |
| jmhong | 11:f8396aa48de6 | 331 | #endif |
| jmhong | 11:f8396aa48de6 | 332 | } |
| jmhong | 11:f8396aa48de6 | 333 | else if (iRet == RADIO_TX_NOACK) |
| jmhong | 11:f8396aa48de6 | 334 | { |
| jmhong | 11:f8396aa48de6 | 335 | #ifdef CUBEBITE_DEBUG |
| jmhong | 11:f8396aa48de6 | 336 | printf("ACK : [RADIO_TX_NOACK]\n"); |
| jmhong | 11:f8396aa48de6 | 337 | #endif |
| jmhong | 11:f8396aa48de6 | 338 | } |
| jmhong | 11:f8396aa48de6 | 339 | |
| jmhong | 11:f8396aa48de6 | 340 | } |
| jmhong | 11:f8396aa48de6 | 341 | #endif |
| jmhong | 11:f8396aa48de6 | 342 | |
| jmhong | 11:f8396aa48de6 | 343 | #ifdef CUBEBITE_RF_SPEED_TEST_SEND_ON |
| jmhong | 11:f8396aa48de6 | 344 | //401re 보드 |
| jmhong | 11:f8396aa48de6 | 345 | if (true == bIsSendFirstClockFunctionStarted) |
| jmhong | 11:f8396aa48de6 | 346 | { |
| jmhong | 11:f8396aa48de6 | 347 | clockRfSpeedTestEnd = clock(); |
| jmhong | 11:f8396aa48de6 | 348 | } |
| jmhong | 11:f8396aa48de6 | 349 | #endif |
| jmhong | 11:f8396aa48de6 | 350 | |
| jmhong | 11:f8396aa48de6 | 351 | |
| jmhong | 11:f8396aa48de6 | 352 | #ifdef CUBEBITE_DEBUG |
| jmhong | 11:f8396aa48de6 | 353 | printf("[CUBEBITE] read_rcvd_data() 호출 끝. \n"); |
| jmhong | 11:f8396aa48de6 | 354 | #endif |
| rosarium | 4:cae1fa054b86 | 355 | } |
| rosarium | 4:cae1fa054b86 | 356 | |
| jmhong | 11:f8396aa48de6 | 357 | static void ack_send_data(void) |
| jmhong | 11:f8396aa48de6 | 358 | { |
| jmhong | 11:f8396aa48de6 | 359 | #ifdef CUBEBITE_RF_SPEED_TEST_RECV_ON |
| jmhong | 11:f8396aa48de6 | 360 | //746zg 보드 |
| jmhong | 11:f8396aa48de6 | 361 | int iRet = myspirit.send(send_ack_buf, curr_ack_len); |
| jmhong | 11:f8396aa48de6 | 362 | if (iRet == RADIO_TX_OK) |
| jmhong | 11:f8396aa48de6 | 363 | { |
| jmhong | 11:f8396aa48de6 | 364 | #ifdef CUBEBITE_DEBUG |
| jmhong | 11:f8396aa48de6 | 365 | printf("ACK : [RADIO_TX_OK]\n"); |
| jmhong | 11:f8396aa48de6 | 366 | #endif |
| jmhong | 11:f8396aa48de6 | 367 | } |
| jmhong | 11:f8396aa48de6 | 368 | else if (iRet == RADIO_TX_ERR) |
| jmhong | 11:f8396aa48de6 | 369 | { |
| jmhong | 11:f8396aa48de6 | 370 | #ifdef CUBEBITE_DEBUG |
| jmhong | 11:f8396aa48de6 | 371 | printf("ACK : [RADIO_TX_ERR]\n"); |
| jmhong | 11:f8396aa48de6 | 372 | #endif |
| jmhong | 11:f8396aa48de6 | 373 | } |
| jmhong | 11:f8396aa48de6 | 374 | else if (iRet == RADIO_TX_COLLISION) |
| jmhong | 11:f8396aa48de6 | 375 | { |
| jmhong | 11:f8396aa48de6 | 376 | #ifdef CUBEBITE_DEBUG |
| jmhong | 11:f8396aa48de6 | 377 | printf("ACK : [RADIO_TX_COLLISION]\n"); |
| jmhong | 11:f8396aa48de6 | 378 | #endif |
| jmhong | 11:f8396aa48de6 | 379 | } |
| jmhong | 11:f8396aa48de6 | 380 | else if (iRet == RADIO_TX_NOACK) |
| jmhong | 11:f8396aa48de6 | 381 | { |
| jmhong | 11:f8396aa48de6 | 382 | #ifdef CUBEBITE_DEBUG |
| jmhong | 11:f8396aa48de6 | 383 | printf("ACK : [RADIO_TX_NOACK]\n"); |
| jmhong | 11:f8396aa48de6 | 384 | #endif |
| jmhong | 11:f8396aa48de6 | 385 | } |
| jmhong | 11:f8396aa48de6 | 386 | #endif |
| jmhong | 11:f8396aa48de6 | 387 | } |
| jmhong | 11:f8396aa48de6 | 388 | |
| jmhong | 11:f8396aa48de6 | 389 | |
| rosarium | 4:cae1fa054b86 | 390 | |
| rosarium | 1:cf2e2f85bf8d | 391 | /** |
| rosarium | 1:cf2e2f85bf8d | 392 | * @brief main routine |
| rosarium | 1:cf2e2f85bf8d | 393 | * @param None |
| rosarium | 1:cf2e2f85bf8d | 394 | * @retval int |
| rosarium | 1:cf2e2f85bf8d | 395 | */ |
| rosarium | 0:2ddc0583bcec | 396 | int main() |
| rosarium | 1:cf2e2f85bf8d | 397 | { |
| jmhong | 11:f8396aa48de6 | 398 | /* LED off */ |
| jmhong | 11:f8396aa48de6 | 399 | TestLED = 0; |
| jmhong | 10:cc81b87e005e | 400 | /* 180108 cubebite HJM : function return value print */ |
| jmhong | 10:cc81b87e005e | 401 | int iRet = 0; |
| jmhong | 11:f8396aa48de6 | 402 | |
| jmhong | 11:f8396aa48de6 | 403 | #ifdef CUBEBITE_RF_GPIO_0_TEST |
| jmhong | 10:cc81b87e005e | 404 | /* 180108 cubebite HJM : GPIO 0, init code */ |
| jmhong | 10:cc81b87e005e | 405 | SGpioInit gpioIRQ={ |
| jmhong | 10:cc81b87e005e | 406 | SPIRIT_GPIO_0, |
| jmhong | 10:cc81b87e005e | 407 | SPIRIT_GPIO_MODE_DIGITAL_OUTPUT_LP, |
| jmhong | 10:cc81b87e005e | 408 | SPIRIT_GPIO_DIG_OUT_IRQ |
| jmhong | 10:cc81b87e005e | 409 | }; |
| jmhong | 10:cc81b87e005e | 410 | SpiritGpioInit(&gpioIRQ); |
| jmhong | 10:cc81b87e005e | 411 | |
| jmhong | 10:cc81b87e005e | 412 | /* 180108 cubebite HJM : GPIO 0, For spiritFunctionalState(), Testing code */ |
| jmhong | 10:cc81b87e005e | 413 | SpiritFunctionalState spiritFunctionalState={ |
| jmhong | 10:cc81b87e005e | 414 | S_DISABLE |
| jmhong | 10:cc81b87e005e | 415 | }; |
| jmhong | 10:cc81b87e005e | 416 | #endif |
| jmhong | 10:cc81b87e005e | 417 | |
| jmhong | 10:cc81b87e005e | 418 | /* 180108 cubebite HJM : spirit module, init code */ |
| jmhong | 10:cc81b87e005e | 419 | printf("[CUBEBITE] myspirit, attach_irq_callback()\t......"); |
| jmhong | 10:cc81b87e005e | 420 | myspirit.attach_irq_callback(callback_func); |
| jmhong | 10:cc81b87e005e | 421 | printf("OK\n"); |
| jmhong | 10:cc81b87e005e | 422 | |
| jmhong | 10:cc81b87e005e | 423 | printf("[CUBEBITE] myspirit, on()\t......"); |
| jmhong | 10:cc81b87e005e | 424 | iRet = myspirit.on(); |
| jmhong | 10:cc81b87e005e | 425 | if ( 0 == iRet ) |
| jmhong | 10:cc81b87e005e | 426 | { |
| jmhong | 10:cc81b87e005e | 427 | printf("OK\n"); |
| jmhong | 10:cc81b87e005e | 428 | } |
| jmhong | 10:cc81b87e005e | 429 | else |
| jmhong | 10:cc81b87e005e | 430 | { |
| jmhong | 10:cc81b87e005e | 431 | printf("ERROR\n"); |
| jmhong | 10:cc81b87e005e | 432 | } |
| jmhong | 11:f8396aa48de6 | 433 | #ifdef CUBEBITE_DEBUG |
| jmhong | 11:f8396aa48de6 | 434 | printf("[CUBEBITE] CUBEBITE_DEBUG ON. \n"); |
| jmhong | 11:f8396aa48de6 | 435 | #endif |
| jmhong | 10:cc81b87e005e | 436 | |
| jmhong | 10:cc81b87e005e | 437 | |
| jmhong | 11:f8396aa48de6 | 438 | #ifdef CUBEBITE_RF_USER_BUTTON_SEND_TEST |
| jmhong | 11:f8396aa48de6 | 439 | event.rise(&set_send_data_flag); /*User button interrupt trigger to set send data flag */ |
| jmhong | 11:f8396aa48de6 | 440 | #endif |
| jmhong | 11:f8396aa48de6 | 441 | |
| jmhong | 10:cc81b87e005e | 442 | |
| jmhong | 10:cc81b87e005e | 443 | #ifdef CUBEBITE_RF_DEVICE_PARTNUMBER_TEST |
| jmhong | 10:cc81b87e005e | 444 | uint16_t int16SpiritPartNum = 0; |
| jmhong | 10:cc81b87e005e | 445 | #endif |
| jmhong | 11:f8396aa48de6 | 446 | while(1) |
| jmhong | 11:f8396aa48de6 | 447 | { |
| jmhong | 10:cc81b87e005e | 448 | #ifdef CUBEBITE_RF_DEVICE_PARTNUMBER_TEST |
| jmhong | 11:f8396aa48de6 | 449 | printf("[CUBEBITE][devicePartNumber] SpiritGeneralGetDevicePartNumber()\t......"); |
| jmhong | 11:f8396aa48de6 | 450 | |
| jmhong | 11:f8396aa48de6 | 451 | int16SpiritPartNum = SpiritGeneralGetDevicePartNumber(); |
| jmhong | 11:f8396aa48de6 | 452 | printf("OK => "); |
| jmhong | 11:f8396aa48de6 | 453 | printf("int16SpiritPartNum value : [0x%04X]\n", int16SpiritPartNum); |
| jmhong | 11:f8396aa48de6 | 454 | int16SpiritPartNum = 0; |
| jmhong | 10:cc81b87e005e | 455 | #endif |
| jmhong | 10:cc81b87e005e | 456 | |
| jmhong | 11:f8396aa48de6 | 457 | /* low power in idle condition., waiting for an event */ |
| jmhong | 11:f8396aa48de6 | 458 | __WFE(); |
| jmhong | 10:cc81b87e005e | 459 | |
| jmhong | 10:cc81b87e005e | 460 | #ifdef CUBEBITE_RF_GPIO_0_TEST |
| jmhong | 11:f8396aa48de6 | 461 | //180108 HJM : For spiritFunctionalState(), testing code |
| jmhong | 11:f8396aa48de6 | 462 | |
| jmhong | 11:f8396aa48de6 | 463 | if (S_ENABLE == spiritFunctionalState) |
| jmhong | 11:f8396aa48de6 | 464 | { |
| jmhong | 11:f8396aa48de6 | 465 | spiritFunctionalState = S_DISABLE; |
| jmhong | 11:f8396aa48de6 | 466 | } |
| jmhong | 11:f8396aa48de6 | 467 | else |
| jmhong | 11:f8396aa48de6 | 468 | { |
| jmhong | 11:f8396aa48de6 | 469 | spiritFunctionalState = S_ENABLE; |
| jmhong | 11:f8396aa48de6 | 470 | } |
| jmhong | 11:f8396aa48de6 | 471 | |
| jmhong | 11:f8396aa48de6 | 472 | /* 180108 cubebite HJM : GPIO 0, For, spiritFunctionalState() => Enables or Disables the output of temperature sensor on SPIRIT GPIO_0. */ |
| jmhong | 11:f8396aa48de6 | 473 | SpiritGpioTemperatureSensor(spiritFunctionalState); |
| jmhong | 11:f8396aa48de6 | 474 | |
| jmhong | 11:f8396aa48de6 | 475 | /* 180108 cubebite HJM : RF_GPIO_0_INPUT pin value print */ |
| jmhong | 11:f8396aa48de6 | 476 | printf("****** RF GPIO_0 Status Testing => [%d] ******\n", (int)RF_GPIO_0_INPUT); |
| jmhong | 11:f8396aa48de6 | 477 | wait(1); |
| jmhong | 11:f8396aa48de6 | 478 | #endif |
| jmhong | 10:cc81b87e005e | 479 | |
| jmhong | 11:f8396aa48de6 | 480 | #ifdef CUBEBITE_RF_SPEED_TEST_SEND_ON |
| jmhong | 11:f8396aa48de6 | 481 | if (true == bIsSetSendFlag) |
| jmhong | 11:f8396aa48de6 | 482 | { |
| jmhong | 11:f8396aa48de6 | 483 | set_send_data_flag(); |
| jmhong | 11:f8396aa48de6 | 484 | bIsSetSendFlag = false; |
| jmhong | 11:f8396aa48de6 | 485 | } |
| jmhong | 10:cc81b87e005e | 486 | #endif |
| jmhong | 10:cc81b87e005e | 487 | |
| jmhong | 11:f8396aa48de6 | 488 | if(rx_done_flag) |
| jmhong | 11:f8396aa48de6 | 489 | { |
| jmhong | 11:f8396aa48de6 | 490 | rx_done_flag = false; |
| jmhong | 11:f8396aa48de6 | 491 | read_rcvd_data(); |
| jmhong | 11:f8396aa48de6 | 492 | printf("recvedd.\n"); |
| jmhong | 11:f8396aa48de6 | 493 | #ifdef CUBEBITE_RF_SPEED_TEST_SEND_ON |
| jmhong | 11:f8396aa48de6 | 494 | if (true == bIsSendFirstClockFunctionStarted) |
| jmhong | 11:f8396aa48de6 | 495 | { |
| jmhong | 11:f8396aa48de6 | 496 | fRfSpeedTestResult = (float)(clockRfSpeedTestEnd - clockRfSpeedTestStart)/CLOCKS_PER_SEC; |
| jmhong | 11:f8396aa48de6 | 497 | printf("\n Clock Rf Speed Test : [%.9f(sec)] \n", fRfSpeedTestResult); |
| jmhong | 11:f8396aa48de6 | 498 | |
| jmhong | 11:f8396aa48de6 | 499 | bIsSendFirstClockFunctionStarted = false; |
| jmhong | 11:f8396aa48de6 | 500 | } |
| jmhong | 11:f8396aa48de6 | 501 | #endif |
| jmhong | 11:f8396aa48de6 | 502 | } |
| jmhong | 11:f8396aa48de6 | 503 | |
| jmhong | 11:f8396aa48de6 | 504 | else if (send_data_flag) |
| jmhong | 11:f8396aa48de6 | 505 | { |
| jmhong | 11:f8396aa48de6 | 506 | #ifdef CUBEBITE_RF_SPEED_TEST_SEND_ON |
| jmhong | 11:f8396aa48de6 | 507 | //180112 HJM : Ack 응답 올 때 까지의 Timeout. |
| jmhong | 11:f8396aa48de6 | 508 | // wait(0.1); //100ms, 정상 동작, 오류 없음. (5분 테스트) |
| jmhong | 11:f8396aa48de6 | 509 | // wait(0.06); //60ms, 정상 동작, 오류 없음. (5분 테스트) |
| jmhong | 11:f8396aa48de6 | 510 | wait(0.05); // 50ms, 정상 동작, 오류 없음. (10분 테스트) |
| jmhong | 11:f8396aa48de6 | 511 | // wait(0.01); // 10ms, 정상 동작. |
| jmhong | 11:f8396aa48de6 | 512 | // wait(0.008); // 8ms, 정상 동작, 하지만 0.01 이 최대 속도값으로 보임. |
| jmhong | 11:f8396aa48de6 | 513 | // wait(0.005); // 5ms, 정상 동작, 하지만 0.01 이 최대 속도값으로 보임, 하지만 Nothing to read 오류가 많이 뜸. (20분 테스트) |
| jmhong | 11:f8396aa48de6 | 514 | // wait(0.00001); // 0.01ms, 비 정상 동작. (30분 테스트) |
| jmhong | 11:f8396aa48de6 | 515 | #endif |
| jmhong | 11:f8396aa48de6 | 516 | |
| jmhong | 11:f8396aa48de6 | 517 | send_data_flag = false; |
| jmhong | 11:f8396aa48de6 | 518 | send_data(); |
| jmhong | 11:f8396aa48de6 | 519 | printf("sended.\n"); |
| jmhong | 11:f8396aa48de6 | 520 | |
| jmhong | 11:f8396aa48de6 | 521 | } |
| jmhong | 10:cc81b87e005e | 522 | |
| jmhong | 11:f8396aa48de6 | 523 | else if (tx_done_flag) |
| jmhong | 11:f8396aa48de6 | 524 | { |
| jmhong | 11:f8396aa48de6 | 525 | tx_done_flag = false; |
| jmhong | 11:f8396aa48de6 | 526 | // printf("\n***Packet sent ***\nSent string ='%s' (len=%d)\n", send_buf, strlen((const char*)send_buf) + 1); |
| jmhong | 11:f8396aa48de6 | 527 | } |
| jmhong | 10:cc81b87e005e | 528 | |
| jmhong | 11:f8396aa48de6 | 529 | #ifdef CUBEBITE_RF_SPEED_TEST_RECV_ON |
| jmhong | 11:f8396aa48de6 | 530 | //180112 HJM 오후 1시, 현재 사용 안하는 중, recv 쪽에서 strcmp로 보낸 데이터와 받은 데이터 비교 후, send 를 바로 하는 코드로 바꿨음. |
| jmhong | 11:f8396aa48de6 | 531 | else if (true == bIsAckSended) |
| jmhong | 11:f8396aa48de6 | 532 | { |
| jmhong | 11:f8396aa48de6 | 533 | bIsAckSended = false; |
| jmhong | 11:f8396aa48de6 | 534 | ack_send_data(); |
| jmhong | 11:f8396aa48de6 | 535 | printf("recv sended.\n"); |
| jmhong | 11:f8396aa48de6 | 536 | } |
| jmhong | 11:f8396aa48de6 | 537 | #endif |
| rosarium | 4:cae1fa054b86 | 538 | } |
| wobetz | 5:a65ed26b0f98 | 539 | /* unreachable */ |
| wobetz | 5:a65ed26b0f98 | 540 | // myspirit.off(); |
| wobetz | 5:a65ed26b0f98 | 541 | // return 0; |
| rosarium | 0:2ddc0583bcec | 542 | } |
