работает в паре с micro:bit мигалкой
Dependencies: mbed BLE_API nRF51822
Программа для управляющего устройства на nRF51822. Используется одна Button1 для включения\выключения светодиода на устройстве приемнике.
Diff: main.cpp
- Revision:
- 12:1cd9fd69a4f4
- Parent:
- 11:023d96b0e427
- Child:
- 13:7b6d69a11fb5
diff -r 023d96b0e427 -r 1cd9fd69a4f4 main.cpp --- 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();