JongYong Park / Mbed 2 deprecated NUCLEO-F767_LIFI_4CH_os2_v2

Dependencies:   mbed

Committer:
pjr
Date:
Thu Apr 04 14:48:04 2019 +0900
Revision:
5:5fe30df87772
Parent:
4:3ec60ea204c6
Parent:
3:ae1f53883bc0
Child:
21:82b5759f5047
merge

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 }
JongYongPark 3:ae1f53883bc0 75
JongYongPark 3:ae1f53883bc0 76 float meas_v1_max=0;
JongYongPark 3:ae1f53883bc0 77 float meas_v1_min=3300;
JongYongPark 3:ae1f53883bc0 78 float meas_v2_max=0;
JongYongPark 3:ae1f53883bc0 79 float meas_v2_min=3300;
JongYongPark 3:ae1f53883bc0 80 float meas_v3_max=0;
JongYongPark 3:ae1f53883bc0 81 float meas_v3_min=3300;
JongYongPark 3:ae1f53883bc0 82 float meas_v4_max=0;
JongYongPark 3:ae1f53883bc0 83 float meas_v4_min=3300;
JongYongPark 3:ae1f53883bc0 84
JongYongPark 0:488aa8153e15 85 void LifiRx_PdTunning()
JongYongPark 0:488aa8153e15 86 {
JongYongPark 0:488aa8153e15 87 float meas_r1;
JongYongPark 0:488aa8153e15 88 float meas_v1;
JongYongPark 0:488aa8153e15 89 float meas_r2;
JongYongPark 0:488aa8153e15 90 float meas_v2;
JongYongPark 0:488aa8153e15 91 float meas_r3;
JongYongPark 0:488aa8153e15 92 float meas_v3;
JongYongPark 0:488aa8153e15 93 float meas_r4;
JongYongPark 0:488aa8153e15 94 float meas_v4;
JongYongPark 0:488aa8153e15 95
JongYongPark 3:ae1f53883bc0 96 meas_v1_max=0;
JongYongPark 3:ae1f53883bc0 97 meas_v1_min=3300;
JongYongPark 3:ae1f53883bc0 98 meas_v2_max=0;
JongYongPark 3:ae1f53883bc0 99 meas_v2_min=3300;
JongYongPark 3:ae1f53883bc0 100 meas_v3_max=0;
JongYongPark 3:ae1f53883bc0 101 meas_v3_min=3300;
JongYongPark 3:ae1f53883bc0 102 meas_v4_max=0;
JongYongPark 3:ae1f53883bc0 103 meas_v4_min=3300;
JongYongPark 3:ae1f53883bc0 104
JongYongPark 0:488aa8153e15 105 // note myvalues for "office light" (ca. 200 lux) and direct sunlight, clear day (ca 50000lux)
JongYongPark 0:488aa8153e15 106
JongYongPark 0:488aa8153e15 107
JongYongPark 0:488aa8153e15 108 // https://www.dfrobot.com/wiki/index.php/DFRobot_Ambient_Light_Sensor_SKU:DFR0026
JongYongPark 0:488aa8153e15 109 //Specification
JongYongPark 0:488aa8153e15 110 //Supply Voltage: 3.3V to 5V
JongYongPark 0:488aa8153e15 111 //Illumination range : 1 Lux to 6000 Lux
JongYongPark 0:488aa8153e15 112 //Responsive time : 15us
JongYongPark 0:488aa8153e15 113 //Interface: Analog
JongYongPark 0:488aa8153e15 114 //Size:22x30mm
JongYongPark 0:488aa8153e15 115
JongYongPark 0:488aa8153e15 116
JongYongPark 0:488aa8153e15 117
JongYongPark 0:488aa8153e15 118 printf("\n4 LifiRx_PdTunning \n");
JongYongPark 0:488aa8153e15 119 buttonInitSkipLoop();
JongYongPark 0:488aa8153e15 120 while(1) {
JongYongPark 0:488aa8153e15 121 if( buttonCanSkipLoop() ) return;
JongYongPark 0:488aa8153e15 122 meas_r1 = adc_1.read(); // Read the analog input value (value from 0.0 to 1.0 = full ADC conversion range)
JongYongPark 0:488aa8153e15 123 meas_v1 = meas_r1 * 3300; // Converts value in the 0V-3.3V range
JongYongPark 0:488aa8153e15 124 meas_r2 = adc_2.read(); // Read the analog input value (value from 0.0 to 1.0 = full ADC conversion range)
JongYongPark 0:488aa8153e15 125 meas_v2 = meas_r2 * 3300; // Converts value in the 0V-3.3V range
JongYongPark 0:488aa8153e15 126 meas_r3 = adc_3.read(); // Read the analog input value (value from 0.0 to 1.0 = full ADC conversion range)
JongYongPark 0:488aa8153e15 127 meas_v3 = meas_r3 * 3300; // Converts value in the 0V-3.3V range
JongYongPark 0:488aa8153e15 128 meas_r4 = adc_4.read(); // Read the analog input value (value from 0.0 to 1.0 = full ADC conversion range)
JongYongPark 0:488aa8153e15 129 meas_v4 = meas_r4 * 3300; // Converts value in the 0V-3.3V range
JongYongPark 3:ae1f53883bc0 130
JongYongPark 3:ae1f53883bc0 131 if( meas_v1_min > meas_v1 ) meas_v1_min = meas_v1;
JongYongPark 3:ae1f53883bc0 132 if( meas_v1_max < meas_v1 ) meas_v1_max = meas_v1;
JongYongPark 3:ae1f53883bc0 133 if( meas_v2_min > meas_v2 ) meas_v2_min = meas_v2;
JongYongPark 3:ae1f53883bc0 134 if( meas_v2_max < meas_v2 ) meas_v2_max = meas_v2;
JongYongPark 3:ae1f53883bc0 135 if( meas_v3_min > meas_v3 ) meas_v3_min = meas_v3;
JongYongPark 3:ae1f53883bc0 136 if( meas_v3_max < meas_v3 ) meas_v3_max = meas_v3;
JongYongPark 3:ae1f53883bc0 137 if( meas_v4_min > meas_v4 ) meas_v4_min = meas_v4;
JongYongPark 3:ae1f53883bc0 138 if( meas_v4_max < meas_v4 ) meas_v4_max = meas_v4;
JongYongPark 3:ae1f53883bc0 139
JongYongPark 0:488aa8153e15 140 // Display values
JongYongPark 3:ae1f53883bc0 141 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);
JongYongPark 3:ae1f53883bc0 142 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);
JongYongPark 3:ae1f53883bc0 143 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);
JongYongPark 3:ae1f53883bc0 144 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 145 printf("\033[4A");
JongYongPark 0:488aa8153e15 146 wait(0.1);
JongYongPark 0:488aa8153e15 147 }
JongYongPark 0:488aa8153e15 148 }
JongYongPark 0:488aa8153e15 149
JongYongPark 3:ae1f53883bc0 150
JongYongPark 0:488aa8153e15 151 int LifiRx_AdcRead(int num)
JongYongPark 0:488aa8153e15 152 {
JongYongPark 0:488aa8153e15 153 //floor(x) - round down
JongYongPark 0:488aa8153e15 154 //ceil(x) - round up
JongYongPark 0:488aa8153e15 155
JongYongPark 0:488aa8153e15 156 float meas_r1;
JongYongPark 0:488aa8153e15 157 float meas_v1;
JongYongPark 0:488aa8153e15 158 float meas_r2;
JongYongPark 0:488aa8153e15 159 float meas_v2;
JongYongPark 0:488aa8153e15 160 float meas_r3;
JongYongPark 0:488aa8153e15 161 float meas_v3;
JongYongPark 0:488aa8153e15 162 float meas_r4;
JongYongPark 0:488aa8153e15 163 float meas_v4;
JongYongPark 0:488aa8153e15 164 float meas_r_average;
JongYongPark 0:488aa8153e15 165 float meas_v_average;
JongYongPark 0:488aa8153e15 166 int ret = 0;
JongYongPark 0:488aa8153e15 167 switch(num) {
JongYongPark 0:488aa8153e15 168 case LIFI_CHANNEL_1:
JongYongPark 0:488aa8153e15 169 meas_r1 = adc_1.read() ;
JongYongPark 0:488aa8153e15 170 meas_v1 = meas_r1 * 3300;
JongYongPark 0:488aa8153e15 171 ret = ceil(meas_v1);
JongYongPark 0:488aa8153e15 172 break;
JongYongPark 0:488aa8153e15 173 case LIFI_CHANNEL_2:
JongYongPark 0:488aa8153e15 174 meas_r2 = adc_2.read() ;
JongYongPark 0:488aa8153e15 175 meas_v2 = meas_r2 * 3300;
JongYongPark 0:488aa8153e15 176 ret = ceil(meas_v2);
JongYongPark 0:488aa8153e15 177 break;
JongYongPark 0:488aa8153e15 178 case LIFI_CHANNEL_3:
JongYongPark 0:488aa8153e15 179 meas_r3 = adc_3.read() ;
JongYongPark 0:488aa8153e15 180 meas_v3 = meas_r3 * 3300;
JongYongPark 0:488aa8153e15 181 ret = ceil(meas_v3);
JongYongPark 0:488aa8153e15 182 break;
JongYongPark 0:488aa8153e15 183 case LIFI_CHANNEL_4:
JongYongPark 0:488aa8153e15 184 meas_r4 = adc_4.read() ;
JongYongPark 0:488aa8153e15 185 meas_v4 = meas_r4 * 3300;
JongYongPark 0:488aa8153e15 186 ret = ceil(meas_v4);
JongYongPark 0:488aa8153e15 187 break;
JongYongPark 0:488aa8153e15 188 case LIFI_CHANNEL_ALL:
JongYongPark 0:488aa8153e15 189 default:
JongYongPark 0:488aa8153e15 190 meas_r1 = adc_1.read(); // Read the analog input value (value from 0.0 to 1.0 = full ADC conversion range)
JongYongPark 0:488aa8153e15 191 meas_v1 = meas_r1 * 3300; // Converts value in the 0V-3.3V range
JongYongPark 0:488aa8153e15 192 meas_r2 = adc_2.read(); // Read the analog input value (value from 0.0 to 1.0 = full ADC conversion range)
JongYongPark 0:488aa8153e15 193 meas_v2 = meas_r2 * 3300; // Converts value in the 0V-3.3V range
JongYongPark 0:488aa8153e15 194 meas_r3 = adc_3.read(); // Read the analog input value (value from 0.0 to 1.0 = full ADC conversion range)
JongYongPark 0:488aa8153e15 195 meas_v3 = meas_r3 * 3300; // Converts value in the 0V-3.3V range
JongYongPark 0:488aa8153e15 196 meas_r4 = adc_4.read(); // Read the analog input value (value from 0.0 to 1.0 = full ADC conversion range)
JongYongPark 0:488aa8153e15 197 meas_v4 = meas_r4 * 3300; // Converts value in the 0V-3.3V range
JongYongPark 0:488aa8153e15 198 meas_r_average = ( meas_r1 + meas_r2 + meas_r3 + meas_r4 ) / 4 ;
JongYongPark 0:488aa8153e15 199 meas_v_average = meas_r_average * 3300;
JongYongPark 0:488aa8153e15 200 ret = ceil(meas_v_average);
JongYongPark 0:488aa8153e15 201 break;
JongYongPark 0:488aa8153e15 202 }
JongYongPark 0:488aa8153e15 203 return ret;
JongYongPark 0:488aa8153e15 204 }
JongYongPark 0:488aa8153e15 205
JongYongPark 0:488aa8153e15 206 void LifiRx_Run()
JongYongPark 0:488aa8153e15 207 {
JongYongPark 0:488aa8153e15 208 printf("\n======== LifiRx_Run =========\n");
JongYongPark 0:488aa8153e15 209 #if USE_LOCAL_TICKER
JongYongPark 0:488aa8153e15 210 Ticker lifi_rx_timer;
JongYongPark 0:488aa8153e15 211 #endif
JongYongPark 0:488aa8153e15 212 // us_timestamp_t us_time;
JongYongPark 0:488aa8153e15 213
JongYongPark 0:488aa8153e15 214 LifiRx_Init();
JongYongPark 0:488aa8153e15 215 printf("Tx Symbol Feq=%f sec / %d us \n",LIFI_RX_SYMBOL_PERIOD_SEC,LIFI_RX_SYMBOL_PERIOD_US);
JongYongPark 0:488aa8153e15 216 printf("Rx Sample Feq=%f sec / %d us \n",LIFI_RX_SYMBOL_SAMPLE_PERIOD_SEC,LIFI_RX_SYMBOL_SAMPLE_PERIOD_US);
JongYongPark 0:488aa8153e15 217 printf("Rx Sample/Symbol=%d times / adc edge threshod=%d mV \n",LIFI_RX_SAMPLE_PER_SYMBOL,LIFI_RX_EDGE_THRESHOLD);
JongYongPark 0:488aa8153e15 218 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 219 printf("Tx interval = %d sec \n",LIFI_DEMO_TX_PERIOD_SEC);
JongYongPark 0:488aa8153e15 220
JongYongPark 0:488aa8153e15 221 lifi_rx_timer.attach(&LifiRx_SampleSignalEdge, LIFI_RX_SYMBOL_SAMPLE_PERIOD_SEC);
JongYongPark 0:488aa8153e15 222 printf("1");
JongYongPark 0:488aa8153e15 223 // us_time = LIFI_RX_SYMBOL_SAMPLE_PERIOD_US;
JongYongPark 0:488aa8153e15 224 // lifi_rx_timer.attach_us(&LifiRx_SampleSignalEdge, us_time);
JongYongPark 0:488aa8153e15 225 //////// main loop ///////
JongYongPark 0:488aa8153e15 226 buttonInitSkipLoop();
JongYongPark 0:488aa8153e15 227 //printf("2");
JongYongPark 0:488aa8153e15 228 while(1) {
JongYongPark 0:488aa8153e15 229 //printf("3");
JongYongPark 0:488aa8153e15 230 if( buttonCanSkipLoop() ) return;
JongYongPark 0:488aa8153e15 231 LifiRx_LoopOOK();
JongYongPark 0:488aa8153e15 232 //printf("4");
JongYongPark 3:ae1f53883bc0 233 //wait_ms(50);
JongYongPark 3:ae1f53883bc0 234
JongYongPark 0:488aa8153e15 235 }
JongYongPark 0:488aa8153e15 236 }
JongYongPark 0:488aa8153e15 237
JongYongPark 0:488aa8153e15 238 //////////////
JongYongPark 0:488aa8153e15 239
JongYongPark 3:ae1f53883bc0 240 #if USE_MBED_OS5
JongYongPark 0:488aa8153e15 241 // https://os.mbed.com/blog/entry/Simplify-your-code-with-mbed-events/
JongYongPark 0:488aa8153e15 242 // create an event queue
JongYongPark 3:ae1f53883bc0 243 #if USE_LIFI_RX_CHECK_QUEUE
JongYongPark 0:488aa8153e15 244 EventQueue queue;
JongYongPark 1:502e5a0c14c3 245 EventQueue lifi_tx_check_queue(32 * EVENTS_EVENT_SIZE);
JongYongPark 1:502e5a0c14c3 246 #endif
JongYongPark 0:488aa8153e15 247
JongYongPark 0:488aa8153e15 248 void do_something() {
JongYongPark 0:488aa8153e15 249 // this now runs in the context of eventThread, instead of in the ISR
JongYongPark 0:488aa8153e15 250 //printf("!");
JongYongPark 0:488aa8153e15 251 LifiRx_SampleSignalEdge();
JongYongPark 0:488aa8153e15 252 }
JongYongPark 0:488aa8153e15 253
JongYongPark 0:488aa8153e15 254
JongYongPark 0:488aa8153e15 255
JongYongPark 0:488aa8153e15 256 void LifiRx_RunWithEventQueue()
JongYongPark 0:488aa8153e15 257 {
JongYongPark 0:488aa8153e15 258
JongYongPark 0:488aa8153e15 259 #if USE_LOCAL_TICKER
JongYongPark 0:488aa8153e15 260 Ticker lifi_rx_timer;
JongYongPark 0:488aa8153e15 261 #endif
JongYongPark 0:488aa8153e15 262
JongYongPark 0:488aa8153e15 263 // create a thread that'll run the event queue's dispatch function
JongYongPark 1:502e5a0c14c3 264 Thread eventThread(osPriorityHigh);
JongYongPark 1:502e5a0c14c3 265 //Thread eventThread;
JongYongPark 0:488aa8153e15 266 eventThread.start(callback(&queue, &EventQueue::dispatch_forever));
JongYongPark 0:488aa8153e15 267
JongYongPark 3:ae1f53883bc0 268 #if (USE_MBED_OS5 && USE_LIFI_RX_CHECK_QUEUE)
JongYongPark 1:502e5a0c14c3 269 Thread lifiRxCheckThread(osPriorityNormal);
JongYongPark 1:502e5a0c14c3 270 lifiRxCheckThread.start(callback(&lifi_tx_check_queue, &EventQueue::dispatch_forever));
JongYongPark 1:502e5a0c14c3 271 #endif
JongYongPark 0:488aa8153e15 272
JongYongPark 0:488aa8153e15 273 printf("\n======== LifiRx_RunWithEventQueue =========\n");
JongYongPark 0:488aa8153e15 274 LifiRx_Init();
JongYongPark 0:488aa8153e15 275 printf("Tx Symbol Feq=%f sec / %d us \n",LIFI_RX_SYMBOL_PERIOD_SEC,LIFI_RX_SYMBOL_PERIOD_US);
JongYongPark 0:488aa8153e15 276 printf("Rx Sample Feq=%f sec / %d us \n",LIFI_RX_SYMBOL_SAMPLE_PERIOD_SEC,LIFI_RX_SYMBOL_SAMPLE_PERIOD_US);
JongYongPark 0:488aa8153e15 277 printf("Rx Sample/Symbol=%d times / adc edge threshod=%d mV \n",LIFI_RX_SAMPLE_PER_SYMBOL,LIFI_RX_EDGE_THRESHOLD);
JongYongPark 0:488aa8153e15 278 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 279 printf("Tx interval = %d sec \n",LIFI_DEMO_TX_PERIOD_SEC);
JongYongPark 0:488aa8153e15 280
JongYongPark 0:488aa8153e15 281 lifi_rx_timer.attach(queue.event(&do_something), LIFI_RX_SYMBOL_SAMPLE_PERIOD_SEC);
JongYongPark 0:488aa8153e15 282 // us_time = LIFI_RX_SYMBOL_SAMPLE_PERIOD_US;
JongYongPark 0:488aa8153e15 283 // lifi_rx_timer.attach_us(&LifiRx_SampleSignalEdge, us_time);
JongYongPark 0:488aa8153e15 284 //////// main loop ///////
JongYongPark 0:488aa8153e15 285 buttonInitSkipLoop();
JongYongPark 0:488aa8153e15 286 //printf("2");
JongYongPark 0:488aa8153e15 287 while(1) {
JongYongPark 1:502e5a0c14c3 288 #if (USE_LIFI_RX_CHECK_QUEUE==0)
JongYongPark 0:488aa8153e15 289 //printf("3");
JongYongPark 0:488aa8153e15 290 if( buttonCanSkipLoop() ) return;
JongYongPark 0:488aa8153e15 291 LifiRx_LoopOOK();
JongYongPark 0:488aa8153e15 292 //printf("4");
JongYongPark 0:488aa8153e15 293 #endif
JongYongPark 0:488aa8153e15 294 wait_ms(50);
JongYongPark 2:e1fd30fce2f8 295 if( buttonCanSkipLoop() ) return;
JongYongPark 0:488aa8153e15 296 }
JongYongPark 0:488aa8153e15 297 }
JongYongPark 0:488aa8153e15 298
JongYongPark 3:ae1f53883bc0 299 #endif