micro:bitにRCBControllerを接続するサンプルプログラム。 接続が不安定。micro:bitの電源入り切りやリセットSW押下を何度か試せば接続できるかも。

Dependencies:   microbit

Fork of BLE_GATT_Example by Bluetooth Low Energy

Revision:
7:f6814152873c
Parent:
6:97b22b5bfbb8
Child:
8:60ede963dfe2
--- a/main.cpp	Sat Feb 14 15:49:47 2015 +0000
+++ b/main.cpp	Mon Mar 09 15:25:43 2015 +0000
@@ -9,8 +9,8 @@
 // LED object
 DigitalOut led(LED1);
 
-const static char     DEVICE_NAME[]        = "MyDeviceName"; // change this
-static const uint16_t uuid16_list[]        = {0xFF}; //Custom UUID, FF is reserved for development
+const static char     DEVICE_NAME[]        = "ChangeMe!!"; // change this
+static const uint16_t uuid16_list[]        = {0xFFFF}; //Custom UUID, FF is reserved for development
 
 // Set Up Characteristics
 static uint8_t readValue[1] = {0x00};
@@ -33,30 +33,34 @@
     ble.startAdvertising(); // restart advertising
 }
 
-// This function is called whenever someone writes something to the writeCharacteristic
+// handle writes to writeCharacteristic
 void writeCharCallback(const GattCharacteristicWriteCBParams *params)
 {
     led = params->data[0];
     printf("LED Written To, value=%x",params->data[0]);
     // TODO: update the readChar value to match write char, or better yet give it an english value
+    // TODO: update with info from here : http://developer.mbed.org/forum/team-63-Bluetooth-Low-Energy-community/topic/5502/
 }
 
 int
 main(void)
 {
-    led = 0;    // turn LED off
+    led = 1;    // turn LED off
     ble.init();
     ble.onDisconnection(disconnectionCallback);
     ble.onDataWritten(writeCharCallback); //TODO: this is not correct, figure out correct syntax
 
     /* setup advertising */
-    ble.accumulateAdvertisingPayload(GapAdvertisingData::BREDR_NOT_SUPPORTED);
-    ble.setAdvertisingType(GapAdvertisingParams::ADV_CONNECTABLE_UNDIRECTED);
+    ble.accumulateAdvertisingPayload(GapAdvertisingData::BREDR_NOT_SUPPORTED | GapAdvertisingData::LE_GENERAL_DISCOVERABLE); // BLE only, no classic BT
+    ble.setAdvertisingType(GapAdvertisingParams::ADV_CONNECTABLE_UNDIRECTED); // advertising type
+    ble.accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LOCAL_NAME, (uint8_t *)DEVICE_NAME, sizeof(DEVICE_NAME)); // add name
+    ble.accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LIST_16BIT_SERVICE_IDS, (uint8_t *)uuid16_list, sizeof(uuid16_list)); // UUID's broadcast in advertising packet
     ble.setAdvertisingInterval(160); /* 100ms; in multiples of 0.625ms. */
-    ble.startAdvertising(); // start advertising
+    
 
     ble.addService(customService); // Add our custom service to device
 
+    ble.startAdvertising(); // start advertising
     while (true) {
         ble.waitForEvent(); //Save power
     }