JongYong Park / Mbed 2 deprecated NUCLEO-F767_LIFI_4CH_os2_v2

Dependencies:   mbed

Committer:
pjr
Date:
Thu Apr 04 14:36:31 2019 +0900
Revision:
4:3ec60ea204c6
Parent:
2:e1fd30fce2f8
Child:
5:5fe30df87772
commit from local pc

Who changed what in which revision?

UserRevisionLine numberNew contents of line
JongYongPark 0:488aa8153e15 1 #include "driverLifiRx.h"
JongYongPark 0:488aa8153e15 2
JongYongPark 0:488aa8153e15 3
JongYongPark 0:488aa8153e15 4 //typedef enum LIFI_Tx_Rx_Mode LIFI_Tx_Rx_Mode;
JongYongPark 0:488aa8153e15 5 //Lifi_RxTx_Mode vlc_tx_rx_mode = LIFI_Tx_Mode;
JongYongPark 0:488aa8153e15 6 //int vlc_tx_rx_mode_bool = 0;
JongYongPark 0:488aa8153e15 7 //
JongYongPark 0:488aa8153e15 8 //// RX 는 ADC PIN을 3.3V 로 연결한다.
JongYongPark 0:488aa8153e15 9 //Lifi_RxTx_Mode is_board_vlc_rx_mode_enum()
JongYongPark 0:488aa8153e15 10 //{
JongYongPark 0:488aa8153e15 11 // float meas_r1;
JongYongPark 0:488aa8153e15 12 // float meas_v1;
JongYongPark 0:488aa8153e15 13 //
JongYongPark 0:488aa8153e15 14 // meas_r1 = adc_tx_rx_mode_select.read() ;
JongYongPark 0:488aa8153e15 15 // meas_v1 = meas_r1 * 3300;
JongYongPark 0:488aa8153e15 16 // if( ceil(meas_v1) > 1000 ) return LIFI_Tx_Mode;
JongYongPark 0:488aa8153e15 17 // else return Lifi_Rx_Mode;
JongYongPark 0:488aa8153e15 18 //}
JongYongPark 0:488aa8153e15 19
JongYongPark 0:488aa8153e15 20 // Pull up setting. RX - Connect to GND
JongYongPark 0:488aa8153e15 21 int Lifi_IsRxMode()
JongYongPark 0:488aa8153e15 22 {
JongYongPark 0:488aa8153e15 23 #define USE_MODE_SELECT_BY_ADC 0
JongYongPark 0:488aa8153e15 24 #if USE_MODE_SELECT_BY_ADC
JongYongPark 0:488aa8153e15 25 // 연결이 되지 않으면 기본으로 0 이다.
JongYongPark 0:488aa8153e15 26 // 따라서 ADC를 이용할 경우 3.3V와 연결하고나 저항을 이용해서 여러 입력값에 따른 모드를 선택할 수 있다.
JongYongPark 0:488aa8153e15 27 float meas_r1;
JongYongPark 0:488aa8153e15 28 float meas_v1;
JongYongPark 0:488aa8153e15 29
JongYongPark 0:488aa8153e15 30 meas_r1 = adc_tx_rx_mode_select.read() ;
JongYongPark 0:488aa8153e15 31 meas_v1 = meas_r1 * 3300;
JongYongPark 0:488aa8153e15 32 printf("meas_r1 = %f, meas_v1 = %f",meas_r1, meas_v1 );
JongYongPark 0:488aa8153e15 33 if( ceil(meas_v1) > 1000 ) return LIFI_Tx_Mode;
JongYongPark 0:488aa8153e15 34 else return Lifi_Rx_Mode;
JongYongPark 0:488aa8153e15 35
JongYongPark 0:488aa8153e15 36 #else
JongYongPark 0:488aa8153e15 37 int value=1;
JongYongPark 0:488aa8153e15 38 value = lifi_TxRx_ModePin.read();
JongYongPark 0:488aa8153e15 39 if( value == 0 ) {
JongYongPark 0:488aa8153e15 40 printf("RX mode (%d))", value);
JongYongPark 0:488aa8153e15 41 return 1;
JongYongPark 0:488aa8153e15 42 } else {
JongYongPark 0:488aa8153e15 43 printf("TX mode (%d))", value);
JongYongPark 0:488aa8153e15 44 return 0;
JongYongPark 0:488aa8153e15 45 }
JongYongPark 0:488aa8153e15 46 #endif
JongYongPark 0:488aa8153e15 47 }
JongYongPark 0:488aa8153e15 48
JongYongPark 0:488aa8153e15 49
JongYongPark 0:488aa8153e15 50 // https://forum.arduino.cc/index.php?topic=185158.0
JongYongPark 0:488aa8153e15 51 float LifiRx_GetLuxFromPdVoltage(float volt_mili)
JongYongPark 0:488aa8153e15 52 {
JongYongPark 0:488aa8153e15 53 #if 0
JongYongPark 0:488aa8153e15 54 float amps_mili = mili_volt / 10000.0; // across 10,000 Ohms
JongYongPark 0:488aa8153e15 55 float microamps = amps_mili * 1000;
JongYongPark 0:488aa8153e15 56 float lux = microamps * 2.0;
JongYongPark 0:488aa8153e15 57 return lux;
JongYongPark 0:488aa8153e15 58 #else
JongYongPark 0:488aa8153e15 59 return volt_mili / 5.0 ;
JongYongPark 0:488aa8153e15 60 #endif
JongYongPark 0:488aa8153e15 61 }
JongYongPark 0:488aa8153e15 62
JongYongPark 0:488aa8153e15 63 // https://code.google.com/archive/p/davidegironi/downloads
JongYongPark 0:488aa8153e15 64 /*
JongYongPark 0:488aa8153e15 65 * get lux from voltage
JongYongPark 0:488aa8153e15 66 */
JongYongPark 0:488aa8153e15 67 double LifiRx_GetLux_Temt6000(double vol)
JongYongPark 0:488aa8153e15 68 {
JongYongPark 0:488aa8153e15 69 //suppose we read the voltage from the emitter of temt6000, with a 10k pulldown resistor connected to gnd
JongYongPark 0:488aa8153e15 70 //V[V] = I[A]*R[ohm] = I[uA] * 1[A]/1000000[킕] * 10000[ohm] = I[uA] * 1[A]/1[uA] * 0.01[ohm]
JongYongPark 0:488aa8153e15 71 //1[uA] = V[V] / 0.01[ohm] = 100 * V[V/ohm]
JongYongPark 0:488aa8153e15 72 //the curve from datasheet seems y=2x+0, so lux = 2 * I[uA] = 2 * 100 * V[V/ohm]
JongYongPark 0:488aa8153e15 73 return 2*(100*vol);
JongYongPark 0:488aa8153e15 74 }
pjr 4:3ec60ea204c6 75 float meas_v1_max=0;
pjr 4:3ec60ea204c6 76 float meas_v1_min=3300;
pjr 4:3ec60ea204c6 77 float meas_v2_max=0;
pjr 4:3ec60ea204c6 78 float meas_v2_min=3300;
pjr 4:3ec60ea204c6 79 float meas_v3_max=0;
pjr 4:3ec60ea204c6 80 float meas_v3_min=3300;
pjr 4:3ec60ea204c6 81 float meas_v4_max=0;
pjr 4:3ec60ea204c6 82 float meas_v4_min=3300;
JongYongPark 0:488aa8153e15 83 void LifiRx_PdTunning()
JongYongPark 0:488aa8153e15 84 {
JongYongPark 0:488aa8153e15 85 float meas_r1;
JongYongPark 0:488aa8153e15 86 float meas_v1;
JongYongPark 0:488aa8153e15 87 float meas_r2;
JongYongPark 0:488aa8153e15 88 float meas_v2;
JongYongPark 0:488aa8153e15 89 float meas_r3;
JongYongPark 0:488aa8153e15 90 float meas_v3;
JongYongPark 0:488aa8153e15 91 float meas_r4;
JongYongPark 0:488aa8153e15 92 float meas_v4;
pjr 4:3ec60ea204c6 93 meas_v1_max=0;
pjr 4:3ec60ea204c6 94 meas_v1_min=3300;
pjr 4:3ec60ea204c6 95 meas_v2_max=0;
pjr 4:3ec60ea204c6 96 meas_v2_min=3300;
pjr 4:3ec60ea204c6 97 meas_v3_max=0;
pjr 4:3ec60ea204c6 98 meas_v3_min=3300;
pjr 4:3ec60ea204c6 99 meas_v4_max=0;
pjr 4:3ec60ea204c6 100 meas_v4_min=3300;
JongYongPark 0:488aa8153e15 101
JongYongPark 0:488aa8153e15 102 // note myvalues for "office light" (ca. 200 lux) and direct sunlight, clear day (ca 50000lux)
JongYongPark 0:488aa8153e15 103
JongYongPark 0:488aa8153e15 104
JongYongPark 0:488aa8153e15 105 // https://www.dfrobot.com/wiki/index.php/DFRobot_Ambient_Light_Sensor_SKU:DFR0026
JongYongPark 0:488aa8153e15 106 //Specification
JongYongPark 0:488aa8153e15 107 //Supply Voltage: 3.3V to 5V
JongYongPark 0:488aa8153e15 108 //Illumination range : 1 Lux to 6000 Lux
JongYongPark 0:488aa8153e15 109 //Responsive time : 15us
JongYongPark 0:488aa8153e15 110 //Interface: Analog
JongYongPark 0:488aa8153e15 111 //Size:22x30mm
JongYongPark 0:488aa8153e15 112
JongYongPark 0:488aa8153e15 113
JongYongPark 0:488aa8153e15 114
JongYongPark 0:488aa8153e15 115 printf("\n4 LifiRx_PdTunning \n");
JongYongPark 0:488aa8153e15 116 buttonInitSkipLoop();
JongYongPark 0:488aa8153e15 117 while(1) {
JongYongPark 0:488aa8153e15 118 if( buttonCanSkipLoop() ) return;
JongYongPark 0:488aa8153e15 119 meas_r1 = adc_1.read(); // Read the analog input value (value from 0.0 to 1.0 = full ADC conversion range)
JongYongPark 0:488aa8153e15 120 meas_v1 = meas_r1 * 3300; // Converts value in the 0V-3.3V range
JongYongPark 0:488aa8153e15 121 meas_r2 = adc_2.read(); // Read the analog input value (value from 0.0 to 1.0 = full ADC conversion range)
JongYongPark 0:488aa8153e15 122 meas_v2 = meas_r2 * 3300; // Converts value in the 0V-3.3V range
JongYongPark 0:488aa8153e15 123 meas_r3 = adc_3.read(); // Read the analog input value (value from 0.0 to 1.0 = full ADC conversion range)
JongYongPark 0:488aa8153e15 124 meas_v3 = meas_r3 * 3300; // Converts value in the 0V-3.3V range
JongYongPark 0:488aa8153e15 125 meas_r4 = adc_4.read(); // Read the analog input value (value from 0.0 to 1.0 = full ADC conversion range)
JongYongPark 0:488aa8153e15 126 meas_v4 = meas_r4 * 3300; // Converts value in the 0V-3.3V range
pjr 4:3ec60ea204c6 127 if( meas_v1_min > meas_v1 ) meas_v1_min = meas_v1;
pjr 4:3ec60ea204c6 128 if( meas_v1_max < meas_v1 ) meas_v1_max = meas_v1;
pjr 4:3ec60ea204c6 129 if( meas_v2_min > meas_v2 ) meas_v2_min = meas_v2;
pjr 4:3ec60ea204c6 130 if( meas_v2_max < meas_v2 ) meas_v2_max = meas_v2;
pjr 4:3ec60ea204c6 131 if( meas_v3_min > meas_v3 ) meas_v3_min = meas_v3;
pjr 4:3ec60ea204c6 132 if( meas_v3_max < meas_v3 ) meas_v3_max = meas_v3;
pjr 4:3ec60ea204c6 133 if( meas_v4_min > meas_v4 ) meas_v4_min = meas_v4;
pjr 4:3ec60ea204c6 134 if( meas_v4_max < meas_v4 ) meas_v4_max = meas_v4;
JongYongPark 0:488aa8153e15 135 // Display values
pjr 4:3ec60ea204c6 136 printf("measure 1 = %f = %4.0f mV = %5.0f uA = %5.0f lux delta = %5.0f \n", meas_r1, meas_v1, meas_v1/10.0, meas_v1/5.0, meas_v1_max - meas_v1_min);
pjr 4:3ec60ea204c6 137 printf("measure 2 = %f = %4.0f mV = %5.0f uA = %5.0f lux delta = %5.0f \n", meas_r2, meas_v2, meas_v2/10.0, meas_v2/5.0, meas_v2_max - meas_v2_min);
pjr 4:3ec60ea204c6 138 printf("measure 3 = %f = %4.0f mV = %5.0f uA = %5.0f lux delta = %5.0f \n", meas_r3, meas_v3, meas_v3/10.0, meas_v3/5.0, meas_v3_max - meas_v3_min);
pjr 4:3ec60ea204c6 139 printf("measure 4 = %f = %4.0f mV = %5.0f uA = %5.0f lux delta = %5.0f \n", meas_r4, meas_v4, meas_v4/10.0, meas_v4/5.0, meas_v4_max - meas_v4_min);
JongYongPark 0:488aa8153e15 140 printf("\033[4A");
JongYongPark 0:488aa8153e15 141 wait(0.1);
JongYongPark 0:488aa8153e15 142 }
JongYongPark 0:488aa8153e15 143 }
JongYongPark 0:488aa8153e15 144
JongYongPark 0:488aa8153e15 145 int LifiRx_AdcRead(int num)
JongYongPark 0:488aa8153e15 146 {
JongYongPark 0:488aa8153e15 147 //floor(x) - round down
JongYongPark 0:488aa8153e15 148 //ceil(x) - round up
JongYongPark 0:488aa8153e15 149
JongYongPark 0:488aa8153e15 150 float meas_r1;
JongYongPark 0:488aa8153e15 151 float meas_v1;
JongYongPark 0:488aa8153e15 152 float meas_r2;
JongYongPark 0:488aa8153e15 153 float meas_v2;
JongYongPark 0:488aa8153e15 154 float meas_r3;
JongYongPark 0:488aa8153e15 155 float meas_v3;
JongYongPark 0:488aa8153e15 156 float meas_r4;
JongYongPark 0:488aa8153e15 157 float meas_v4;
JongYongPark 0:488aa8153e15 158 float meas_r_average;
JongYongPark 0:488aa8153e15 159 float meas_v_average;
JongYongPark 0:488aa8153e15 160 int ret = 0;
JongYongPark 0:488aa8153e15 161 switch(num) {
JongYongPark 0:488aa8153e15 162 case LIFI_CHANNEL_1:
JongYongPark 0:488aa8153e15 163 meas_r1 = adc_1.read() ;
JongYongPark 0:488aa8153e15 164 meas_v1 = meas_r1 * 3300;
JongYongPark 0:488aa8153e15 165 ret = ceil(meas_v1);
JongYongPark 0:488aa8153e15 166 break;
JongYongPark 0:488aa8153e15 167 case LIFI_CHANNEL_2:
JongYongPark 0:488aa8153e15 168 meas_r2 = adc_2.read() ;
JongYongPark 0:488aa8153e15 169 meas_v2 = meas_r2 * 3300;
JongYongPark 0:488aa8153e15 170 ret = ceil(meas_v2);
JongYongPark 0:488aa8153e15 171 break;
JongYongPark 0:488aa8153e15 172 case LIFI_CHANNEL_3:
JongYongPark 0:488aa8153e15 173 meas_r3 = adc_3.read() ;
JongYongPark 0:488aa8153e15 174 meas_v3 = meas_r3 * 3300;
JongYongPark 0:488aa8153e15 175 ret = ceil(meas_v3);
JongYongPark 0:488aa8153e15 176 break;
JongYongPark 0:488aa8153e15 177 case LIFI_CHANNEL_4:
JongYongPark 0:488aa8153e15 178 meas_r4 = adc_4.read() ;
JongYongPark 0:488aa8153e15 179 meas_v4 = meas_r4 * 3300;
JongYongPark 0:488aa8153e15 180 ret = ceil(meas_v4);
JongYongPark 0:488aa8153e15 181 break;
JongYongPark 0:488aa8153e15 182 case LIFI_CHANNEL_ALL:
JongYongPark 0:488aa8153e15 183 default:
JongYongPark 0:488aa8153e15 184 meas_r1 = adc_1.read(); // Read the analog input value (value from 0.0 to 1.0 = full ADC conversion range)
JongYongPark 0:488aa8153e15 185 meas_v1 = meas_r1 * 3300; // Converts value in the 0V-3.3V range
JongYongPark 0:488aa8153e15 186 meas_r2 = adc_2.read(); // Read the analog input value (value from 0.0 to 1.0 = full ADC conversion range)
JongYongPark 0:488aa8153e15 187 meas_v2 = meas_r2 * 3300; // Converts value in the 0V-3.3V range
JongYongPark 0:488aa8153e15 188 meas_r3 = adc_3.read(); // Read the analog input value (value from 0.0 to 1.0 = full ADC conversion range)
JongYongPark 0:488aa8153e15 189 meas_v3 = meas_r3 * 3300; // Converts value in the 0V-3.3V range
JongYongPark 0:488aa8153e15 190 meas_r4 = adc_4.read(); // Read the analog input value (value from 0.0 to 1.0 = full ADC conversion range)
JongYongPark 0:488aa8153e15 191 meas_v4 = meas_r4 * 3300; // Converts value in the 0V-3.3V range
JongYongPark 0:488aa8153e15 192 meas_r_average = ( meas_r1 + meas_r2 + meas_r3 + meas_r4 ) / 4 ;
JongYongPark 0:488aa8153e15 193 meas_v_average = meas_r_average * 3300;
JongYongPark 0:488aa8153e15 194 ret = ceil(meas_v_average);
JongYongPark 0:488aa8153e15 195 break;
JongYongPark 0:488aa8153e15 196 }
JongYongPark 0:488aa8153e15 197 return ret;
JongYongPark 0:488aa8153e15 198 }
JongYongPark 0:488aa8153e15 199
JongYongPark 0:488aa8153e15 200 void LifiRx_Run()
JongYongPark 0:488aa8153e15 201 {
JongYongPark 0:488aa8153e15 202 printf("\n======== LifiRx_Run =========\n");
JongYongPark 0:488aa8153e15 203 #if USE_LOCAL_TICKER
JongYongPark 0:488aa8153e15 204 Ticker lifi_rx_timer;
JongYongPark 0:488aa8153e15 205 #endif
JongYongPark 0:488aa8153e15 206 // us_timestamp_t us_time;
JongYongPark 0:488aa8153e15 207
JongYongPark 0:488aa8153e15 208 LifiRx_Init();
JongYongPark 0:488aa8153e15 209 printf("Tx Symbol Feq=%f sec / %d us \n",LIFI_RX_SYMBOL_PERIOD_SEC,LIFI_RX_SYMBOL_PERIOD_US);
JongYongPark 0:488aa8153e15 210 printf("Rx Sample Feq=%f sec / %d us \n",LIFI_RX_SYMBOL_SAMPLE_PERIOD_SEC,LIFI_RX_SYMBOL_SAMPLE_PERIOD_US);
JongYongPark 0:488aa8153e15 211 printf("Rx Sample/Symbol=%d times / adc edge threshod=%d mV \n",LIFI_RX_SAMPLE_PER_SYMBOL,LIFI_RX_EDGE_THRESHOLD);
JongYongPark 0:488aa8153e15 212 printf("MIMO LIFI_MIMO_CHANNEL_NUM=%d / LIFI_ACTUAL_MAX_CHANNEL_NUM=%d \n",LIFI_MIMO_CHANNEL_NUM,LIFI_ACTUAL_MAX_CHANNEL_NUM);
JongYongPark 0:488aa8153e15 213 printf("Tx interval = %d sec \n",LIFI_DEMO_TX_PERIOD_SEC);
JongYongPark 0:488aa8153e15 214
JongYongPark 0:488aa8153e15 215 lifi_rx_timer.attach(&LifiRx_SampleSignalEdge, LIFI_RX_SYMBOL_SAMPLE_PERIOD_SEC);
JongYongPark 0:488aa8153e15 216 printf("1");
JongYongPark 0:488aa8153e15 217 // us_time = LIFI_RX_SYMBOL_SAMPLE_PERIOD_US;
JongYongPark 0:488aa8153e15 218 // lifi_rx_timer.attach_us(&LifiRx_SampleSignalEdge, us_time);
JongYongPark 0:488aa8153e15 219 //////// main loop ///////
JongYongPark 0:488aa8153e15 220 buttonInitSkipLoop();
JongYongPark 0:488aa8153e15 221 //printf("2");
JongYongPark 0:488aa8153e15 222 while(1) {
JongYongPark 0:488aa8153e15 223 //printf("3");
JongYongPark 0:488aa8153e15 224 if( buttonCanSkipLoop() ) return;
JongYongPark 0:488aa8153e15 225 LifiRx_LoopOOK();
JongYongPark 0:488aa8153e15 226 //printf("4");
pjr 4:3ec60ea204c6 227 //wait_ms(50);
JongYongPark 0:488aa8153e15 228 }
JongYongPark 0:488aa8153e15 229 }
JongYongPark 0:488aa8153e15 230
JongYongPark 0:488aa8153e15 231 //////////////
JongYongPark 0:488aa8153e15 232
pjr 4:3ec60ea204c6 233 #if USE_MBED_OS5
JongYongPark 0:488aa8153e15 234 // https://os.mbed.com/blog/entry/Simplify-your-code-with-mbed-events/
JongYongPark 0:488aa8153e15 235 // create an event queue
pjr 4:3ec60ea204c6 236 #if USE_LIFI_RX_CHECK_QUEUE
JongYongPark 0:488aa8153e15 237 EventQueue queue;
JongYongPark 1:502e5a0c14c3 238 EventQueue lifi_tx_check_queue(32 * EVENTS_EVENT_SIZE);
JongYongPark 1:502e5a0c14c3 239 #endif
JongYongPark 0:488aa8153e15 240
JongYongPark 0:488aa8153e15 241 void do_something() {
JongYongPark 0:488aa8153e15 242 // this now runs in the context of eventThread, instead of in the ISR
JongYongPark 0:488aa8153e15 243 //printf("!");
JongYongPark 0:488aa8153e15 244 LifiRx_SampleSignalEdge();
JongYongPark 0:488aa8153e15 245 }
JongYongPark 0:488aa8153e15 246
JongYongPark 0:488aa8153e15 247
JongYongPark 0:488aa8153e15 248
JongYongPark 0:488aa8153e15 249 void LifiRx_RunWithEventQueue()
JongYongPark 0:488aa8153e15 250 {
JongYongPark 0:488aa8153e15 251
JongYongPark 0:488aa8153e15 252 #if USE_LOCAL_TICKER
JongYongPark 0:488aa8153e15 253 Ticker lifi_rx_timer;
JongYongPark 0:488aa8153e15 254 #endif
JongYongPark 0:488aa8153e15 255
JongYongPark 0:488aa8153e15 256 // create a thread that'll run the event queue's dispatch function
JongYongPark 1:502e5a0c14c3 257 Thread eventThread(osPriorityHigh);
JongYongPark 1:502e5a0c14c3 258 //Thread eventThread;
JongYongPark 0:488aa8153e15 259 eventThread.start(callback(&queue, &EventQueue::dispatch_forever));
JongYongPark 0:488aa8153e15 260
pjr 4:3ec60ea204c6 261 #if (USE_MBED_OS5 && USE_LIFI_RX_CHECK_QUEUE)
JongYongPark 1:502e5a0c14c3 262 Thread lifiRxCheckThread(osPriorityNormal);
JongYongPark 1:502e5a0c14c3 263 lifiRxCheckThread.start(callback(&lifi_tx_check_queue, &EventQueue::dispatch_forever));
JongYongPark 1:502e5a0c14c3 264 #endif
JongYongPark 0:488aa8153e15 265
JongYongPark 0:488aa8153e15 266 printf("\n======== LifiRx_RunWithEventQueue =========\n");
JongYongPark 0:488aa8153e15 267 LifiRx_Init();
JongYongPark 0:488aa8153e15 268 printf("Tx Symbol Feq=%f sec / %d us \n",LIFI_RX_SYMBOL_PERIOD_SEC,LIFI_RX_SYMBOL_PERIOD_US);
JongYongPark 0:488aa8153e15 269 printf("Rx Sample Feq=%f sec / %d us \n",LIFI_RX_SYMBOL_SAMPLE_PERIOD_SEC,LIFI_RX_SYMBOL_SAMPLE_PERIOD_US);
JongYongPark 0:488aa8153e15 270 printf("Rx Sample/Symbol=%d times / adc edge threshod=%d mV \n",LIFI_RX_SAMPLE_PER_SYMBOL,LIFI_RX_EDGE_THRESHOLD);
JongYongPark 0:488aa8153e15 271 printf("MIMO LIFI_MIMO_CHANNEL_NUM=%d / LIFI_ACTUAL_MAX_CHANNEL_NUM=%d \n",LIFI_MIMO_CHANNEL_NUM,LIFI_ACTUAL_MAX_CHANNEL_NUM);
JongYongPark 0:488aa8153e15 272 printf("Tx interval = %d sec \n",LIFI_DEMO_TX_PERIOD_SEC);
JongYongPark 0:488aa8153e15 273
JongYongPark 0:488aa8153e15 274 lifi_rx_timer.attach(queue.event(&do_something), LIFI_RX_SYMBOL_SAMPLE_PERIOD_SEC);
JongYongPark 0:488aa8153e15 275 // us_time = LIFI_RX_SYMBOL_SAMPLE_PERIOD_US;
JongYongPark 0:488aa8153e15 276 // lifi_rx_timer.attach_us(&LifiRx_SampleSignalEdge, us_time);
JongYongPark 0:488aa8153e15 277 //////// main loop ///////
JongYongPark 0:488aa8153e15 278 buttonInitSkipLoop();
JongYongPark 0:488aa8153e15 279 //printf("2");
JongYongPark 0:488aa8153e15 280 while(1) {
JongYongPark 1:502e5a0c14c3 281 #if (USE_LIFI_RX_CHECK_QUEUE==0)
JongYongPark 0:488aa8153e15 282 //printf("3");
JongYongPark 0:488aa8153e15 283 if( buttonCanSkipLoop() ) return;
JongYongPark 0:488aa8153e15 284 LifiRx_LoopOOK();
JongYongPark 0:488aa8153e15 285 //printf("4");
JongYongPark 0:488aa8153e15 286 #endif
JongYongPark 0:488aa8153e15 287 wait_ms(50);
JongYongPark 2:e1fd30fce2f8 288 if( buttonCanSkipLoop() ) return;
JongYongPark 0:488aa8153e15 289 }
JongYongPark 0:488aa8153e15 290 }
JongYongPark 0:488aa8153e15 291
pjr 4:3ec60ea204c6 292 #endif