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.
driverLifiTx.cpp@21:82b5759f5047, 2019-04-09 (annotated)
- Committer:
- JongYongPark
- Date:
- Tue Apr 09 09:11:24 2019 +0000
- Revision:
- 21:82b5759f5047
- Parent:
- 0:488aa8153e15
- Child:
- 30:75cb79acdcff
- Child:
- 34:d704131107dd
working version
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
JongYongPark | 0:488aa8153e15 | 1 | #include "driverLifiTx.h" |
JongYongPark | 0:488aa8153e15 | 2 | |
JongYongPark | 0:488aa8153e15 | 3 | void LifiTx_LedBlink(int num) |
JongYongPark | 0:488aa8153e15 | 4 | { |
JongYongPark | 0:488aa8153e15 | 5 | switch(num) { |
JongYongPark | 0:488aa8153e15 | 6 | case LIFI_CHANNEL_1: |
JongYongPark | 0:488aa8153e15 | 7 | led_1 = ! led_1; |
JongYongPark | 0:488aa8153e15 | 8 | break; |
JongYongPark | 0:488aa8153e15 | 9 | case LIFI_CHANNEL_2: |
JongYongPark | 0:488aa8153e15 | 10 | led_2 = ! led_2; |
JongYongPark | 0:488aa8153e15 | 11 | break; |
JongYongPark | 0:488aa8153e15 | 12 | case LIFI_CHANNEL_3: |
JongYongPark | 0:488aa8153e15 | 13 | led_3 = ! led_3; |
JongYongPark | 0:488aa8153e15 | 14 | break; |
JongYongPark | 0:488aa8153e15 | 15 | case LIFI_CHANNEL_4: |
JongYongPark | 0:488aa8153e15 | 16 | led_4 = ! led_4; |
JongYongPark | 0:488aa8153e15 | 17 | break; |
JongYongPark | 0:488aa8153e15 | 18 | default: |
JongYongPark | 0:488aa8153e15 | 19 | led_1 = ! led_1; |
JongYongPark | 0:488aa8153e15 | 20 | led_2 = ! led_2; |
JongYongPark | 0:488aa8153e15 | 21 | led_3 = ! led_3; |
JongYongPark | 0:488aa8153e15 | 22 | led_4 = ! led_4; |
JongYongPark | 0:488aa8153e15 | 23 | break; |
JongYongPark | 0:488aa8153e15 | 24 | } |
JongYongPark | 0:488aa8153e15 | 25 | } |
JongYongPark | 21:82b5759f5047 | 26 | |
JongYongPark | 21:82b5759f5047 | 27 | void LifiTx_DebugLedOn(){ |
JongYongPark | 21:82b5759f5047 | 28 | led_tx_debug = 1; |
JongYongPark | 21:82b5759f5047 | 29 | } |
JongYongPark | 21:82b5759f5047 | 30 | void LifiTx_DebugLedOff(){ |
JongYongPark | 21:82b5759f5047 | 31 | led_tx_debug = 0; |
JongYongPark | 21:82b5759f5047 | 32 | } |
JongYongPark | 0:488aa8153e15 | 33 | void LifiTx_LedOn(int num) |
JongYongPark | 0:488aa8153e15 | 34 | { |
JongYongPark | 0:488aa8153e15 | 35 | switch(num) { |
JongYongPark | 0:488aa8153e15 | 36 | case LIFI_CHANNEL_1: |
JongYongPark | 0:488aa8153e15 | 37 | led_1 = 1; |
JongYongPark | 0:488aa8153e15 | 38 | break; |
JongYongPark | 0:488aa8153e15 | 39 | case LIFI_CHANNEL_2: |
JongYongPark | 0:488aa8153e15 | 40 | led_2 = 1; |
JongYongPark | 0:488aa8153e15 | 41 | break; |
JongYongPark | 0:488aa8153e15 | 42 | case LIFI_CHANNEL_3: |
JongYongPark | 0:488aa8153e15 | 43 | led_3 = 1; |
JongYongPark | 0:488aa8153e15 | 44 | break; |
JongYongPark | 0:488aa8153e15 | 45 | case LIFI_CHANNEL_4: |
JongYongPark | 0:488aa8153e15 | 46 | led_4 = 1; |
JongYongPark | 0:488aa8153e15 | 47 | break; |
JongYongPark | 0:488aa8153e15 | 48 | case LIFI_CHANNEL_ALL: |
JongYongPark | 0:488aa8153e15 | 49 | default: |
JongYongPark | 0:488aa8153e15 | 50 | led_1 = 1; |
JongYongPark | 0:488aa8153e15 | 51 | led_2 = 1; |
JongYongPark | 0:488aa8153e15 | 52 | led_3 = 1; |
JongYongPark | 0:488aa8153e15 | 53 | led_4 = 1; |
JongYongPark | 0:488aa8153e15 | 54 | break; |
JongYongPark | 0:488aa8153e15 | 55 | } |
JongYongPark | 0:488aa8153e15 | 56 | } |
JongYongPark | 0:488aa8153e15 | 57 | |
JongYongPark | 0:488aa8153e15 | 58 | void LifiTx_LedOff(int num) |
JongYongPark | 0:488aa8153e15 | 59 | { |
JongYongPark | 0:488aa8153e15 | 60 | switch(num) { |
JongYongPark | 0:488aa8153e15 | 61 | case LIFI_CHANNEL_1: |
JongYongPark | 0:488aa8153e15 | 62 | led_1 = 0; |
JongYongPark | 0:488aa8153e15 | 63 | break; |
JongYongPark | 0:488aa8153e15 | 64 | case LIFI_CHANNEL_2: |
JongYongPark | 0:488aa8153e15 | 65 | led_2 = 0; |
JongYongPark | 0:488aa8153e15 | 66 | break; |
JongYongPark | 0:488aa8153e15 | 67 | case LIFI_CHANNEL_3: |
JongYongPark | 0:488aa8153e15 | 68 | led_3 = 0; |
JongYongPark | 0:488aa8153e15 | 69 | break; |
JongYongPark | 0:488aa8153e15 | 70 | case LIFI_CHANNEL_4: |
JongYongPark | 0:488aa8153e15 | 71 | led_4 = 0; |
JongYongPark | 0:488aa8153e15 | 72 | break; |
JongYongPark | 0:488aa8153e15 | 73 | case LIFI_CHANNEL_ALL: |
JongYongPark | 0:488aa8153e15 | 74 | default: |
JongYongPark | 0:488aa8153e15 | 75 | led_1 = 0; |
JongYongPark | 0:488aa8153e15 | 76 | led_2 = 0; |
JongYongPark | 0:488aa8153e15 | 77 | led_3 = 0; |
JongYongPark | 0:488aa8153e15 | 78 | led_4 = 0; |
JongYongPark | 0:488aa8153e15 | 79 | break; |
JongYongPark | 0:488aa8153e15 | 80 | } |
JongYongPark | 0:488aa8153e15 | 81 | } |
JongYongPark | 0:488aa8153e15 | 82 | |
JongYongPark | 0:488aa8153e15 | 83 | void LifiTx_LedTuning() |
JongYongPark | 0:488aa8153e15 | 84 | { |
JongYongPark | 0:488aa8153e15 | 85 | printf("\n ====== LifiTx_LedTuning === Press Long key to skip this function == \n"); |
JongYongPark | 0:488aa8153e15 | 86 | LifiTx_LedOff(LIFI_CHANNEL_ALL); |
JongYongPark | 0:488aa8153e15 | 87 | |
JongYongPark | 0:488aa8153e15 | 88 | printf("\n => Turn On All LED \n"); |
JongYongPark | 0:488aa8153e15 | 89 | LifiTx_LedOn(LIFI_CHANNEL_ALL); |
JongYongPark | 0:488aa8153e15 | 90 | buttonInitSkipLoop(); |
JongYongPark | 0:488aa8153e15 | 91 | while(1) { |
JongYongPark | 0:488aa8153e15 | 92 | if( buttonCanSkipLoop() ) break; |
JongYongPark | 0:488aa8153e15 | 93 | if( buttonCanSkipSuperLoop() ) return; |
JongYongPark | 0:488aa8153e15 | 94 | wait(1); |
JongYongPark | 0:488aa8153e15 | 95 | } |
JongYongPark | 0:488aa8153e15 | 96 | printf("\n => Turn Off All LED \n"); |
JongYongPark | 0:488aa8153e15 | 97 | LifiTx_LedOff(LIFI_CHANNEL_ALL); |
JongYongPark | 0:488aa8153e15 | 98 | buttonInitSkipLoop(); |
JongYongPark | 0:488aa8153e15 | 99 | while(1) { |
JongYongPark | 0:488aa8153e15 | 100 | if( buttonCanSkipLoop() ) break; |
JongYongPark | 0:488aa8153e15 | 101 | if( buttonCanSkipSuperLoop() ) return; |
JongYongPark | 0:488aa8153e15 | 102 | wait(1); |
JongYongPark | 0:488aa8153e15 | 103 | } |
JongYongPark | 0:488aa8153e15 | 104 | printf("\n => Turn On - 1 LED \n"); |
JongYongPark | 0:488aa8153e15 | 105 | LifiTx_LedOn(LIFI_CHANNEL_1); |
JongYongPark | 0:488aa8153e15 | 106 | buttonInitSkipLoop(); |
JongYongPark | 0:488aa8153e15 | 107 | while(1) { |
JongYongPark | 0:488aa8153e15 | 108 | if( buttonCanSkipLoop() ) break; |
JongYongPark | 0:488aa8153e15 | 109 | if( buttonCanSkipSuperLoop() ) return; |
JongYongPark | 0:488aa8153e15 | 110 | wait(1); |
JongYongPark | 0:488aa8153e15 | 111 | } |
JongYongPark | 0:488aa8153e15 | 112 | printf("\n => Turn On - 2 LED \n"); |
JongYongPark | 0:488aa8153e15 | 113 | LifiTx_LedOn(LIFI_CHANNEL_2); |
JongYongPark | 0:488aa8153e15 | 114 | buttonInitSkipLoop(); |
JongYongPark | 0:488aa8153e15 | 115 | while(1) { |
JongYongPark | 0:488aa8153e15 | 116 | if( buttonCanSkipLoop() ) break; |
JongYongPark | 0:488aa8153e15 | 117 | if( buttonCanSkipSuperLoop() ) return; |
JongYongPark | 0:488aa8153e15 | 118 | wait(1); |
JongYongPark | 0:488aa8153e15 | 119 | } |
JongYongPark | 0:488aa8153e15 | 120 | printf("\n => Turn On - 3 LED \n"); |
JongYongPark | 0:488aa8153e15 | 121 | LifiTx_LedOn(LIFI_CHANNEL_3); |
JongYongPark | 0:488aa8153e15 | 122 | buttonInitSkipLoop(); |
JongYongPark | 0:488aa8153e15 | 123 | while(1) { |
JongYongPark | 0:488aa8153e15 | 124 | if( buttonCanSkipLoop() ) break; |
JongYongPark | 0:488aa8153e15 | 125 | if( buttonCanSkipSuperLoop() ) return; |
JongYongPark | 0:488aa8153e15 | 126 | wait(1); |
JongYongPark | 0:488aa8153e15 | 127 | } |
JongYongPark | 0:488aa8153e15 | 128 | printf("\n => Turn On - 4 LED \n"); |
JongYongPark | 0:488aa8153e15 | 129 | LifiTx_LedOn(LIFI_CHANNEL_4); |
JongYongPark | 0:488aa8153e15 | 130 | buttonInitSkipLoop(); |
JongYongPark | 0:488aa8153e15 | 131 | while(1) { |
JongYongPark | 0:488aa8153e15 | 132 | if( buttonCanSkipLoop() ) break; |
JongYongPark | 0:488aa8153e15 | 133 | if( buttonCanSkipSuperLoop() ) return; |
JongYongPark | 0:488aa8153e15 | 134 | wait(1); |
JongYongPark | 0:488aa8153e15 | 135 | } |
JongYongPark | 0:488aa8153e15 | 136 | printf("\n => Turn Off All LED \n"); |
JongYongPark | 0:488aa8153e15 | 137 | LifiTx_LedOff(LIFI_CHANNEL_ALL); |
JongYongPark | 0:488aa8153e15 | 138 | } |
JongYongPark | 0:488aa8153e15 | 139 | |
JongYongPark | 0:488aa8153e15 | 140 | void LifiTx_Run() |
JongYongPark | 0:488aa8153e15 | 141 | { |
JongYongPark | 0:488aa8153e15 | 142 | #if USE_LOCAL_TICKER |
JongYongPark | 0:488aa8153e15 | 143 | Ticker lifi_tx_timer; |
JongYongPark | 0:488aa8153e15 | 144 | #endif |
JongYongPark | 0:488aa8153e15 | 145 | |
JongYongPark | 0:488aa8153e15 | 146 | printf("\n======== LifiTx_Run =========\n"); |
JongYongPark | 0:488aa8153e15 | 147 | // us_timestamp_t us_time; |
JongYongPark | 0:488aa8153e15 | 148 | |
JongYongPark | 0:488aa8153e15 | 149 | LifiTx_Init(); |
JongYongPark | 0:488aa8153e15 | 150 | printf("Tx Symbol Feq=%f sec / %d us \n",LIFI_RX_SYMBOL_PERIOD_SEC,LIFI_RX_SYMBOL_PERIOD_US); |
JongYongPark | 0:488aa8153e15 | 151 | printf("Rx Sample Feq=%f sec / %d us \n",LIFI_RX_SYMBOL_SAMPLE_PERIOD_SEC,LIFI_RX_SYMBOL_SAMPLE_PERIOD_US); |
JongYongPark | 0:488aa8153e15 | 152 | printf("Rx Sample/Symbol=%d times / adc edge threshod=%d mV \n",LIFI_RX_SAMPLE_PER_SYMBOL,LIFI_RX_EDGE_THRESHOLD); |
JongYongPark | 0:488aa8153e15 | 153 | 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 | 154 | printf("Tx interval = %d sec \n",LIFI_DEMO_TX_PERIOD_SEC); |
JongYongPark | 0:488aa8153e15 | 155 | |
JongYongPark | 0:488aa8153e15 | 156 | lifi_tx_timer.attach(&LifiTx_OokEmitHalfBit, LIFI_RX_SYMBOL_PERIOD_SEC); |
JongYongPark | 0:488aa8153e15 | 157 | |
JongYongPark | 0:488aa8153e15 | 158 | //printf("TimerFeq=%f us \n",); |
JongYongPark | 0:488aa8153e15 | 159 | //us_time = LIFI_RX_SYMBOL_PERIOD_US; |
JongYongPark | 0:488aa8153e15 | 160 | //lifi_tx_timer.attach_us(&LifiTx_OokEmitHalfBit, us_time); |
JongYongPark | 0:488aa8153e15 | 161 | //////// main loop /////// |
JongYongPark | 0:488aa8153e15 | 162 | buttonInitSkipLoop(); |
JongYongPark | 0:488aa8153e15 | 163 | while(1) { |
JongYongPark | 0:488aa8153e15 | 164 | if( buttonCanSkipLoop() ) return; |
JongYongPark | 0:488aa8153e15 | 165 | LifiTx_SendHelloMsg(); |
JongYongPark | 0:488aa8153e15 | 166 | wait(LIFI_DEMO_TX_PERIOD_SEC); |
JongYongPark | 0:488aa8153e15 | 167 | if(LifiTx_IsBusy()) wait(1); |
JongYongPark | 0:488aa8153e15 | 168 | if(LifiTx_IsBusy()) wait(1); |
JongYongPark | 0:488aa8153e15 | 169 | if(LifiTx_IsBusy()) wait(1); |
JongYongPark | 0:488aa8153e15 | 170 | } |
JongYongPark | 0:488aa8153e15 | 171 | } |