RedBear Nano using PWM control RGB LED Demo

Dependencies:   BLE_API ChainableLED mbed nRF51822

Fork of BLENano_RGB_Demo by Jackson Lv

Committer:
Jackson_lv
Date:
Wed Apr 27 09:59:06 2016 +0000
Revision:
4:8aff33cbc2cd
Parent:
1:e7dc9b3590dd
Child:
3:12ee9ad6d00c
BLE NANO RGB demo with DAP board

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Jackson_lv 0:fdf9102c0736 1 /*
Jackson_lv 0:fdf9102c0736 2
Jackson_lv 0:fdf9102c0736 3 Copyright (c) 2012-2014 RedBearLab
Jackson_lv 0:fdf9102c0736 4
Jackson_lv 0:fdf9102c0736 5 Permission is hereby granted, free of charge, to any person obtaining a copy of this software
Jackson_lv 0:fdf9102c0736 6 and associated documentation files (the "Software"), to deal in the Software without restriction,
Jackson_lv 0:fdf9102c0736 7 including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense,
Jackson_lv 0:fdf9102c0736 8 and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so,
Jackson_lv 0:fdf9102c0736 9 subject to the following conditions:
Jackson_lv 0:fdf9102c0736 10 The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software.
Jackson_lv 0:fdf9102c0736 11
Jackson_lv 0:fdf9102c0736 12 THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED,
Jackson_lv 0:fdf9102c0736 13 INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR
Jackson_lv 0:fdf9102c0736 14 PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE
Jackson_lv 0:fdf9102c0736 15 FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE,
Jackson_lv 0:fdf9102c0736 16 ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
Jackson_lv 0:fdf9102c0736 17
Jackson_lv 0:fdf9102c0736 18 */
Jackson_lv 0:fdf9102c0736 19
Jackson_lv 0:fdf9102c0736 20 #include "mbed.h"
Jackson_lv 0:fdf9102c0736 21 #include "ble/BLE.h"
Jackson_lv 0:fdf9102c0736 22 #include "ChainableLED.h"
Jackson_lv 0:fdf9102c0736 23
Jackson_lv 0:fdf9102c0736 24 /******************************************************
Jackson_lv 0:fdf9102c0736 25 * Macros
Jackson_lv 0:fdf9102c0736 26 ******************************************************/
Jackson_lv 0:fdf9102c0736 27 #define BLE_UUID_TXRX_SERVICE 0x0000 /**< The UUID of the Nordic UART Service. */
Jackson_lv 0:fdf9102c0736 28 #define BLE_UUID_TX_CHARACTERISTIC 0x0002 /**< The UUID of the TX Characteristic. */
Jackson_lv 0:fdf9102c0736 29 #define BLE_UUIDS_RX_CHARACTERISTIC 0x0003 /**< The UUID of the RX Characteristic. */
Jackson_lv 0:fdf9102c0736 30
Jackson_lv 0:fdf9102c0736 31 #define TXRX_BUF_LEN 5
Jackson_lv 0:fdf9102c0736 32
Jackson_lv 0:fdf9102c0736 33 #define LOCAL_NAME "RGB-L"
Jackson_lv 0:fdf9102c0736 34 #define BUTTON_PIN P0_8//D3
Jackson_lv 0:fdf9102c0736 35 #define DEVICE_ID 0xFF
Jackson_lv 0:fdf9102c0736 36 #define LIGHT_PIN P0_5//A3
Jackson_lv 0:fdf9102c0736 37 #define VOL_PIN P0_4//A4
Jackson_lv 0:fdf9102c0736 38
Jackson_lv 0:fdf9102c0736 39 /******************************************************
Jackson_lv 0:fdf9102c0736 40 * Variable Definitions
Jackson_lv 0:fdf9102c0736 41 ******************************************************/
Jackson_lv 0:fdf9102c0736 42
Jackson_lv 0:fdf9102c0736 43 InterruptIn button(BUTTON_PIN);
Jackson_lv 0:fdf9102c0736 44
Jackson_lv 0:fdf9102c0736 45 BLEDevice ble;
Jackson_lv 0:fdf9102c0736 46
Jackson_lv 0:fdf9102c0736 47 ChainableLED leds(P0_11, P0_9, P0_10,1);
Jackson_lv 0:fdf9102c0736 48
Jackson_lv 0:fdf9102c0736 49 AnalogIn light_sen(LIGHT_PIN);
Jackson_lv 0:fdf9102c0736 50 AnalogIn vin(VOL_PIN);
Jackson_lv 0:fdf9102c0736 51
Jackson_lv 0:fdf9102c0736 52 DigitalOut myled(P0_19);
Jackson_lv 0:fdf9102c0736 53
Jackson_lv 0:fdf9102c0736 54 static uint8_t rgb_data[5]={0xA5,0xFF,0xFF, 0xFF, 0xFF};
Jackson_lv 0:fdf9102c0736 55 static unsigned char rgb_status=0;
Jackson_lv 0:fdf9102c0736 56
Jackson_lv 0:fdf9102c0736 57 static uint8_t light_flag = 0;
Jackson_lv 0:fdf9102c0736 58
Jackson_lv 0:fdf9102c0736 59 // The Nordic UART Service
Jackson_lv 0:fdf9102c0736 60 static const uint8_t uart_base_uuid[] = {0x5A, 0x2D, 0x3B, 0xF8, 0xF0, 0xBC, 0x11, 0xE5, 0x9C, 0xE9, 0x5E, 0x55, 0x17, 0x50, 0x7E, 0x66};
Jackson_lv 0:fdf9102c0736 61 static const uint8_t uart_tx_uuid[] = {0x5A, 0x2D, 0x40, 0xEE, 0xF0, 0xBC, 0x11, 0xE5, 0x9C, 0xE9, 0x5E, 0x55, 0x17, 0x50, 0x7E, 0x66};
Jackson_lv 0:fdf9102c0736 62 static const uint8_t uart_rx_uuid[] = {0x5A, 0x2D, 0x42, 0x9C, 0xF0, 0xBC, 0x11, 0xE5, 0x9C, 0xE9, 0x5E, 0x55, 0x17, 0x50, 0x7E, 0x66};
Jackson_lv 0:fdf9102c0736 63 static const uint8_t uart_light_uuid[] = {0x5A, 0x2D, 0x43, 0x78, 0xF0, 0xBC, 0x11, 0xE5, 0x9C, 0xE9, 0x5E, 0x55, 0x17, 0x50, 0x7E, 0x66};
Jackson_lv 0:fdf9102c0736 64 static const uint8_t uart_base_uuid_rev[] = {0x66, 0x7E, 0x50, 0x17, 0x55, 0x5E, 0xE9, 0x9C, 0xE5, 0x11, 0xBC, 0xF0, 0xF8, 0x3B, 0x2D, 0x5A};
Jackson_lv 0:fdf9102c0736 65
Jackson_lv 0:fdf9102c0736 66
Jackson_lv 0:fdf9102c0736 67 uint8_t txPayload[TXRX_BUF_LEN] = {0,0,0,0,0};
Jackson_lv 0:fdf9102c0736 68 uint8_t rxPayload[TXRX_BUF_LEN] = {0,0,0,0,0};
Jackson_lv 0:fdf9102c0736 69 uint8_t lightPayload[TXRX_BUF_LEN] = {0,0,0,0,0};
Jackson_lv 0:fdf9102c0736 70 uint8_t vinPayload[TXRX_BUF_LEN] = {0,0,0,0,0};
Jackson_lv 0:fdf9102c0736 71
Jackson_lv 0:fdf9102c0736 72
Jackson_lv 0:fdf9102c0736 73 GattCharacteristic txCharacteristic (uart_tx_uuid, txPayload, 1, TXRX_BUF_LEN, GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_WRITE | GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_WRITE_WITHOUT_RESPONSE );
Jackson_lv 0:fdf9102c0736 74
Jackson_lv 0:fdf9102c0736 75 GattCharacteristic rxCharacteristic (uart_rx_uuid, rxPayload, 1, TXRX_BUF_LEN, GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NOTIFY | GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_READ);
Jackson_lv 0:fdf9102c0736 76
Jackson_lv 0:fdf9102c0736 77 GattCharacteristic lightCharacteristic (uart_light_uuid, lightPayload, 1, TXRX_BUF_LEN, GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NOTIFY| GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_READ);
Jackson_lv 0:fdf9102c0736 78
Jackson_lv 0:fdf9102c0736 79 GattCharacteristic batCharacteristic (0x2A19, vinPayload, 1, TXRX_BUF_LEN, GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NOTIFY|GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_READ);
Jackson_lv 0:fdf9102c0736 80
Jackson_lv 0:fdf9102c0736 81 GattCharacteristic *uartChars[] = {&txCharacteristic, &rxCharacteristic,&lightCharacteristic,&batCharacteristic};
Jackson_lv 0:fdf9102c0736 82
Jackson_lv 0:fdf9102c0736 83 GattService uartService(uart_base_uuid, uartChars, sizeof(uartChars) / sizeof(GattCharacteristic *));
Jackson_lv 0:fdf9102c0736 84
Jackson_lv 0:fdf9102c0736 85
Jackson_lv 0:fdf9102c0736 86
Jackson_lv 0:fdf9102c0736 87 /******************************************************
Jackson_lv 0:fdf9102c0736 88 * Function Definitions
Jackson_lv 0:fdf9102c0736 89 ******************************************************/
Jackson_lv 0:fdf9102c0736 90
Jackson_lv 0:fdf9102c0736 91 static void connectCallBack(const Gap::ConnectionCallbackParams_t *params)
Jackson_lv 0:fdf9102c0736 92 {
Jackson_lv 1:e7dc9b3590dd 93 leds.setColorRGB(0, 0XFF, 0XFF, 0XFF);
Jackson_lv 0:fdf9102c0736 94 }
Jackson_lv 0:fdf9102c0736 95
Jackson_lv 0:fdf9102c0736 96
Jackson_lv 0:fdf9102c0736 97 void disconnectionCallBack(const Gap::DisconnectionCallbackParams_t *params)
Jackson_lv 0:fdf9102c0736 98 {
Jackson_lv 1:e7dc9b3590dd 99 leds.setColorRGB(0, 0, 0, 0);
Jackson_lv 0:fdf9102c0736 100 ble.gap().startAdvertising();
Jackson_lv 0:fdf9102c0736 101 }
Jackson_lv 0:fdf9102c0736 102
Jackson_lv 0:fdf9102c0736 103 void timeoutCallBack()
Jackson_lv 0:fdf9102c0736 104 {
Jackson_lv 0:fdf9102c0736 105
Jackson_lv 0:fdf9102c0736 106 }
Jackson_lv 0:fdf9102c0736 107
Jackson_lv 0:fdf9102c0736 108
Jackson_lv 0:fdf9102c0736 109
Jackson_lv 0:fdf9102c0736 110 // GATT call back handle
Jackson_lv 0:fdf9102c0736 111 void writtenHandle(const GattWriteCallbackParams *Handler)
Jackson_lv 0:fdf9102c0736 112 {
Jackson_lv 0:fdf9102c0736 113 uint8_t buf[TXRX_BUF_LEN];
Jackson_lv 0:fdf9102c0736 114 uint16_t bytesRead;
Jackson_lv 0:fdf9102c0736 115
Jackson_lv 0:fdf9102c0736 116 //pc.printf("Write Handle : \n");
Jackson_lv 0:fdf9102c0736 117
Jackson_lv 0:fdf9102c0736 118 if (Handler->handle == txCharacteristic.getValueAttribute().getHandle())
Jackson_lv 0:fdf9102c0736 119 {
Jackson_lv 0:fdf9102c0736 120 ble.readCharacteristicValue(txCharacteristic.getValueAttribute().getHandle(), buf, &bytesRead);
Jackson_lv 0:fdf9102c0736 121 memset(txPayload, 0, TXRX_BUF_LEN);
Jackson_lv 0:fdf9102c0736 122 memcpy(txPayload, buf, TXRX_BUF_LEN);
Jackson_lv 0:fdf9102c0736 123
Jackson_lv 0:fdf9102c0736 124 if( (buf[2] != 0x00) || (buf[3] != 0x00) || (buf[4] != 0x00) )
Jackson_lv 0:fdf9102c0736 125 {
Jackson_lv 0:fdf9102c0736 126 rgb_status = 1;
Jackson_lv 0:fdf9102c0736 127 leds.setColorRGB(0, buf[2], buf[3], buf[4]);
Jackson_lv 0:fdf9102c0736 128 rgb_data[0] = 0xA5;
Jackson_lv 0:fdf9102c0736 129 rgb_data[1] = 0xff;
Jackson_lv 0:fdf9102c0736 130 rgb_data[2] = buf[2];
Jackson_lv 0:fdf9102c0736 131 rgb_data[3] = buf[3];
Jackson_lv 0:fdf9102c0736 132 rgb_data[4] = buf[4];
Jackson_lv 0:fdf9102c0736 133 ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), buf, 5, true);
Jackson_lv 0:fdf9102c0736 134 }
Jackson_lv 0:fdf9102c0736 135 else
Jackson_lv 0:fdf9102c0736 136 {
Jackson_lv 0:fdf9102c0736 137 rgb_status = 0;
Jackson_lv 0:fdf9102c0736 138 leds.setColorRGB(0, 0, 0, 0);
Jackson_lv 0:fdf9102c0736 139 ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), buf, 5, true);
Jackson_lv 0:fdf9102c0736 140 }
Jackson_lv 0:fdf9102c0736 141 }
Jackson_lv 0:fdf9102c0736 142 }
Jackson_lv 0:fdf9102c0736 143
Jackson_lv 0:fdf9102c0736 144 //switch on/off the rgb led and notify the value
Jackson_lv 0:fdf9102c0736 145 void button_handle()
Jackson_lv 0:fdf9102c0736 146 {
Jackson_lv 0:fdf9102c0736 147 uint8_t buf[5];
Jackson_lv 0:fdf9102c0736 148 buf[0] = 0xA5;
Jackson_lv 0:fdf9102c0736 149 buf[1] = 0xff;
Jackson_lv 0:fdf9102c0736 150 if(rgb_status == 0)
Jackson_lv 0:fdf9102c0736 151 {
Jackson_lv 0:fdf9102c0736 152 rgb_status = 1;
Jackson_lv 0:fdf9102c0736 153 leds.setColorRGB(0, rgb_data[2], rgb_data[3], rgb_data[4]);
Jackson_lv 0:fdf9102c0736 154 buf[2] = rgb_data[2];
Jackson_lv 0:fdf9102c0736 155 buf[3] = rgb_data[3];
Jackson_lv 0:fdf9102c0736 156 buf[4] = rgb_data[4];
Jackson_lv 0:fdf9102c0736 157 }
Jackson_lv 0:fdf9102c0736 158 else
Jackson_lv 0:fdf9102c0736 159 {
Jackson_lv 0:fdf9102c0736 160 rgb_status = 0;
Jackson_lv 0:fdf9102c0736 161 leds.setColorRGB(0, 0, 0, 0);
Jackson_lv 0:fdf9102c0736 162 buf[2] = 0x00;
Jackson_lv 0:fdf9102c0736 163 buf[3] = 0x00;
Jackson_lv 0:fdf9102c0736 164 buf[4] = 0x00;
Jackson_lv 0:fdf9102c0736 165 }
Jackson_lv 0:fdf9102c0736 166 ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), buf, 5);
Jackson_lv 0:fdf9102c0736 167
Jackson_lv 0:fdf9102c0736 168 }
Jackson_lv 0:fdf9102c0736 169
Jackson_lv 0:fdf9102c0736 170 //check the light value and battery value
Jackson_lv 0:fdf9102c0736 171 void m_status_check_handle(void)
Jackson_lv 0:fdf9102c0736 172 {
Jackson_lv 0:fdf9102c0736 173 uint16_t light_value, vin_val=0;
Jackson_lv 0:fdf9102c0736 174 uint8_t light_buf[2] = {0,0};
Jackson_lv 0:fdf9102c0736 175
Jackson_lv 0:fdf9102c0736 176 uint8_t vin_buf[2] = {0,0};
Jackson_lv 0:fdf9102c0736 177
Jackson_lv 0:fdf9102c0736 178 light_value = light_sen.read_u16();
Jackson_lv 0:fdf9102c0736 179
Jackson_lv 0:fdf9102c0736 180 light_buf[0] = (light_value&0xFF00)>>8;
Jackson_lv 0:fdf9102c0736 181 light_buf[1] = light_value&0x00FF;
Jackson_lv 0:fdf9102c0736 182
Jackson_lv 0:fdf9102c0736 183 vin_val = vin.read_u16();
Jackson_lv 0:fdf9102c0736 184
Jackson_lv 0:fdf9102c0736 185 vin_buf[0] = (vin_val&0xFF00)>>8;
Jackson_lv 0:fdf9102c0736 186 vin_buf[1] = vin_val&0x00FF;
Jackson_lv 0:fdf9102c0736 187
Jackson_lv 0:fdf9102c0736 188
Jackson_lv 0:fdf9102c0736 189 ble.updateCharacteristicValue(batCharacteristic.getValueAttribute().getHandle(),vin_buf , 2,true);
Jackson_lv 0:fdf9102c0736 190 if(vin_val<0x230)
Jackson_lv 0:fdf9102c0736 191 {
Jackson_lv 0:fdf9102c0736 192 ble.updateCharacteristicValue(batCharacteristic.getValueAttribute().getHandle(),vin_buf , 2);
Jackson_lv 0:fdf9102c0736 193 }
Jackson_lv 0:fdf9102c0736 194 //trigger value is 0x100,you can change it base your environment
Jackson_lv 0:fdf9102c0736 195 if((light_value<0x100)&&(light_flag==0))
Jackson_lv 0:fdf9102c0736 196 {
Jackson_lv 0:fdf9102c0736 197 ble.updateCharacteristicValue(lightCharacteristic.getValueAttribute().getHandle(),light_buf , 2);
Jackson_lv 0:fdf9102c0736 198 light_flag = 1;
Jackson_lv 0:fdf9102c0736 199 }
Jackson_lv 0:fdf9102c0736 200 if((light_value>0x100)&&(light_flag==1))
Jackson_lv 0:fdf9102c0736 201 {
Jackson_lv 0:fdf9102c0736 202 ble.updateCharacteristicValue(lightCharacteristic.getValueAttribute().getHandle(),light_buf , 2);
Jackson_lv 0:fdf9102c0736 203 light_flag = 0;
Jackson_lv 0:fdf9102c0736 204 }
Jackson_lv 0:fdf9102c0736 205
Jackson_lv 0:fdf9102c0736 206 }
Jackson_lv 0:fdf9102c0736 207
Jackson_lv 0:fdf9102c0736 208 int main() {
Jackson_lv 0:fdf9102c0736 209
Jackson_lv 0:fdf9102c0736 210
Jackson_lv 0:fdf9102c0736 211 uint8_t buf[5] = {0xA5,0xFF,0x00, 0x00, 0x00};
Jackson_lv 0:fdf9102c0736 212
Jackson_lv 0:fdf9102c0736 213 rgb_status = 0;
Jackson_lv 0:fdf9102c0736 214 leds.setColorRGB(0, 0, 0, 0);
Jackson_lv 0:fdf9102c0736 215
Jackson_lv 0:fdf9102c0736 216 button.mode(PullUp);
Jackson_lv 0:fdf9102c0736 217 button.fall(&button_handle);
Jackson_lv 0:fdf9102c0736 218 Ticker ticker;
Jackson_lv 0:fdf9102c0736 219 ticker.attach_us(m_status_check_handle, 200000);
Jackson_lv 0:fdf9102c0736 220
Jackson_lv 0:fdf9102c0736 221 ble.init();
Jackson_lv 0:fdf9102c0736 222
Jackson_lv 0:fdf9102c0736 223 ble.onConnection(connectCallBack);
Jackson_lv 0:fdf9102c0736 224 ble.onDisconnection(disconnectionCallBack);
Jackson_lv 0:fdf9102c0736 225 ble.onDataWritten(writtenHandle);
Jackson_lv 0:fdf9102c0736 226
Jackson_lv 0:fdf9102c0736 227
Jackson_lv 0:fdf9102c0736 228 // setup adv_data and srp_data
Jackson_lv 0:fdf9102c0736 229 ble.accumulateAdvertisingPayload(GapAdvertisingData::BREDR_NOT_SUPPORTED | GapAdvertisingData::LE_GENERAL_DISCOVERABLE);
Jackson_lv 0:fdf9102c0736 230
Jackson_lv 0:fdf9102c0736 231 ble.accumulateAdvertisingPayload(GapAdvertisingData::SHORTENED_LOCAL_NAME,
Jackson_lv 0:fdf9102c0736 232 (const uint8_t *)LOCAL_NAME, sizeof(LOCAL_NAME) - 1);
Jackson_lv 0:fdf9102c0736 233 ble.accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LIST_128BIT_SERVICE_IDS,
Jackson_lv 0:fdf9102c0736 234 (const uint8_t *)uart_base_uuid_rev, sizeof(uart_base_uuid_rev));
Jackson_lv 0:fdf9102c0736 235
Jackson_lv 0:fdf9102c0736 236 // add service
Jackson_lv 0:fdf9102c0736 237 ble.addService(uartService);
Jackson_lv 0:fdf9102c0736 238 // set device name
Jackson_lv 0:fdf9102c0736 239 ble.setDeviceName((const uint8_t *)LOCAL_NAME);
Jackson_lv 0:fdf9102c0736 240 // set appearance
Jackson_lv 0:fdf9102c0736 241 //ble.setAppearance(BLE_APPEARANCE_UNKNOWN);
Jackson_lv 0:fdf9102c0736 242 // set tx power,valid values are -40, -20, -16, -12, -8, -4, 0, 4
Jackson_lv 0:fdf9102c0736 243 ble.setTxPower(4);
Jackson_lv 0:fdf9102c0736 244 // set adv_type
Jackson_lv 0:fdf9102c0736 245 ble.setAdvertisingType(GapAdvertisingParams::ADV_CONNECTABLE_UNDIRECTED);
Jackson_lv 0:fdf9102c0736 246 // set adv_interval, 100ms in multiples of 0.625ms.
Jackson_lv 0:fdf9102c0736 247 ble.setAdvertisingInterval(160);
Jackson_lv 0:fdf9102c0736 248 // set adv_timeout, in seconds
Jackson_lv 0:fdf9102c0736 249 ble.setAdvertisingTimeout(0);
Jackson_lv 0:fdf9102c0736 250 // ger BLE stack version
Jackson_lv 0:fdf9102c0736 251 //pc.printf( ble.getVersion() );
Jackson_lv 0:fdf9102c0736 252 // set RGB default status
Jackson_lv 0:fdf9102c0736 253 ble.updateCharacteristicValue(rxCharacteristic.getValueAttribute().getHandle(), buf, 5, true);
Jackson_lv 0:fdf9102c0736 254 // start advertising
Jackson_lv 0:fdf9102c0736 255 ble.startAdvertising();
Jackson_lv 0:fdf9102c0736 256
Jackson_lv 0:fdf9102c0736 257 memset(rgb_data, 0xFF, 5);
Jackson_lv 0:fdf9102c0736 258 myled = 1;
Jackson_lv 0:fdf9102c0736 259
Jackson_lv 0:fdf9102c0736 260 while(1)
Jackson_lv 0:fdf9102c0736 261 {
Jackson_lv 0:fdf9102c0736 262
Jackson_lv 0:fdf9102c0736 263 ble.waitForEvent();
Jackson_lv 0:fdf9102c0736 264
Jackson_lv 0:fdf9102c0736 265 }
Jackson_lv 0:fdf9102c0736 266
Jackson_lv 0:fdf9102c0736 267
Jackson_lv 0:fdf9102c0736 268 }
Jackson_lv 0:fdf9102c0736 269
Jackson_lv 0:fdf9102c0736 270
Jackson_lv 0:fdf9102c0736 271
Jackson_lv 0:fdf9102c0736 272
Jackson_lv 0:fdf9102c0736 273
Jackson_lv 0:fdf9102c0736 274
Jackson_lv 0:fdf9102c0736 275
Jackson_lv 0:fdf9102c0736 276
Jackson_lv 0:fdf9102c0736 277
Jackson_lv 0:fdf9102c0736 278
Jackson_lv 0:fdf9102c0736 279
Jackson_lv 0:fdf9102c0736 280
Jackson_lv 0:fdf9102c0736 281
Jackson_lv 0:fdf9102c0736 282
Jackson_lv 0:fdf9102c0736 283
Jackson_lv 0:fdf9102c0736 284
Jackson_lv 0:fdf9102c0736 285
Jackson_lv 0:fdf9102c0736 286
Jackson_lv 0:fdf9102c0736 287
Jackson_lv 0:fdf9102c0736 288
Jackson_lv 0:fdf9102c0736 289
Jackson_lv 0:fdf9102c0736 290
Jackson_lv 0:fdf9102c0736 291
Jackson_lv 0:fdf9102c0736 292
Jackson_lv 0:fdf9102c0736 293
Jackson_lv 0:fdf9102c0736 294
Jackson_lv 0:fdf9102c0736 295
Jackson_lv 0:fdf9102c0736 296
Jackson_lv 0:fdf9102c0736 297
Jackson_lv 0:fdf9102c0736 298
Jackson_lv 0:fdf9102c0736 299