работает в паре с micro:bit мигалкой

Dependencies:   mbed BLE_API nRF51822

Программа для управляющего устройства на nRF51822. Используется одна Button1 для включения\выключения светодиода на устройстве приемнике.

Revision:
12:1cd9fd69a4f4
Parent:
11:023d96b0e427
Child:
13:7b6d69a11fb5
--- a/main.cpp	Tue Jan 12 10:49:03 2016 +0000
+++ b/main.cpp	Sat Dec 14 07:01:45 2019 +0000
@@ -20,10 +20,12 @@
 #include "ble/DiscoveredService.h"
 
 DigitalOut alivenessLED(LED1, 1);
+Serial pc(USBTX, USBRX);
 
 bool                     triggerLedCharacteristic = false;
 DiscoveredCharacteristic ledCharacteristic;
 
+BLE        ble;
 Ticker ticker;
 
 void periodicCallback(void) {
@@ -31,9 +33,9 @@
 }
 
 void advertisementCallback(const Gap::AdvertisementCallbackParams_t *params) {
-    if (params->peerAddr[0] != 0x37) { /* !ALERT! Alter this filter to suit your device. */
+/*    if (params->peerAddr[0] != 0x37) { // !ALERT! Alter this filter to suit your device.
         return;
-    }
+    }*/
     printf("adv peerAddr[%02x %02x %02x %02x %02x %02x] rssi %d, isScanResponse %u, AdvertisementType %u\r\n",
            params->peerAddr[5], params->peerAddr[4], params->peerAddr[3], params->peerAddr[2], params->peerAddr[1], params->peerAddr[0],
            params->rssi, params->isScanResponse, params->type);
@@ -73,29 +75,40 @@
     }
 }
 
+//Вызывается событием "onDataRead"
 void triggerToggledWrite(const GattReadCallbackParams *response) {
     if (response->handle == ledCharacteristic.getValueHandle()) {
-#if DUMP_READ_DATA
+//#if DUMP_READ_DATA
         printf("triggerToggledWrite: handle %u, offset %u, len %u\r\n", response->handle, response->offset, response->len);
         for (unsigned index = 0; index < response->len; index++) {
             printf("%c[%02x]", response->data[index], response->data[index]);
         }
         printf("\r\n");
-#endif
-
+//#endif
+//пишем в характеристику 0х00 или 0х01, т.е. моргаем диодом дистанционно
         uint8_t toggledValue = response->data[0] ^ 0x1;
         ledCharacteristic.write(1, &toggledValue);
+        printf("onDataRead\r\ntoggledValue: %02x\r\n", toggledValue);
     }
 }
 
+//Вызывается событием "onDataWrite"
 void triggerRead(const GattWriteCallbackParams *response) {
     if (response->handle == ledCharacteristic.getValueHandle()) {
         ledCharacteristic.read();
+        printf("onDataWrite\r\n");
     }
 }
+/*
+void disconnectionCallback(const Gap::DisconnectionCallbackParams_t *params) {Gap::Handle_t handle, Gap::DisconnectionReason_t reason
+    printf("disconnected\r\n");
+}*/
 
 void disconnectionCallback(const Gap::DisconnectionCallbackParams_t *params) {
+//    BLE&        ble   = params->ble;
     printf("disconnected\r\n");
+    pc.printf("Rescan\r\n");
+    ble.gap().startScan(advertisementCallback);
 }
 
 /**
@@ -136,6 +149,9 @@
 }
 
 int main(void) {
+    pc.baud(9600);
+    printf("--- Start!!! ---\r\n");
+    
     ticker.attach(periodicCallback, 1);
 
     BLE &ble = BLE::Instance();