int main() { ble.init(); ble.onDisconnection(disconnectionCallback); ble.onDataWritten(onDataWritten); ble.accumulateAdvertisingPayload(GapAdvertisingData::BREDR_NOT_SUPPORTED); ble.accumulateAdvertisingPayload(GapAdvertisingData::SHORTENED_LOCAL_NAME, (const uint8_t *)deviceName, strlen(deviceName)); ble.setAdvertisingType(GapAdvertisingParams::ADV_CONNECTABLE_UNDIRECTED); ble.setAdvertisingInterval(160); /* 100ms; in multiples of 0.625ms. */ ble.startAdvertising(); GattCharacteristic toggleCharacteristic(0x2222, &relayState, sizeof(relayState), sizeof(relayState), GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_WRITE); GattCharacteristic *charTable[] = {&toggleCharacteristic}; GattService toggleService(0x2220, charTable, sizeof(charTable) / sizeof(GattCharacteristic *)); ble.addService(toggleService); while (true) { if (rxPayloadUpdated) { relayPIN = rxPayload[0]; rxPayloadUpdated = false; } ble.waitForEvent(); } }
/** * Constructor for the UARTService. * @param _ble an instance of BLEDevice * @param rxBufferSize the size of the rxBuffer * @param txBufferSize the size of the txBuffer * * @note defaults to 20 */ MicroBitUARTService::MicroBitUARTService(BLEDevice &_ble, uint8_t rxBufferSize, uint8_t txBufferSize) : ble(_ble) { rxBufferSize += 1; txBufferSize += 1; txBuffer = (uint8_t *)malloc(txBufferSize); rxBuffer = (uint8_t *)malloc(rxBufferSize); rxBufferHead = 0; rxBufferTail = 0; this->rxBufferSize = rxBufferSize; txBufferHead = 0; txBufferTail = 0; this->txBufferSize = txBufferSize; GattCharacteristic rxCharacteristic(UARTServiceRXCharacteristicUUID, rxBuffer, 1, rxBufferSize, GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_WRITE | GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_WRITE_WITHOUT_RESPONSE); txCharacteristic = new GattCharacteristic(UARTServiceTXCharacteristicUUID, txBuffer, 1, txBufferSize, GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_INDICATE); GattCharacteristic *charTable[] = {txCharacteristic, &rxCharacteristic}; GattService uartService(UARTServiceUUID, charTable, sizeof(charTable) / sizeof(GattCharacteristic *)); _ble.addService(uartService); this->rxCharacteristicHandle = rxCharacteristic.getValueAttribute().getHandle(); _ble.gattServer().onDataWritten(this, &MicroBitUARTService::onDataWritten); _ble.gattServer().onConfirmationReceived(on_confirmation); }
int main(void) { led1 = 1; DEBUG("Initialising the nRF51822\n\r"); ble.init(); // Initialise the BLE radio /* Register callbacks */ ble.onDisconnection(disconnectionCallback); ble.onDataWritten(writeCharCallback); //uart = new UARTService(ble); /* Setup Advertising */ ble.accumulateAdvertisingPayload(GapAdvertisingData::BREDR_NOT_SUPPORTED | GapAdvertisingData::LE_GENERAL_DISCOVERABLE); ble.setAdvertisingType(GapAdvertisingParams::ADV_CONNECTABLE_UNDIRECTED); ble.accumulateAdvertisingPayload(GapAdvertisingData::SHORTENED_LOCAL_NAME, (const uint8_t *)"BLE NOTIF", sizeof("BLE NOTIF") - 1); ble.accumulateAdvertisingPayload(GapAdvertisingData::COMPLETE_LIST_16BIT_SERVICE_IDS, (uint8_t *)uuid16_list, sizeof(uuid16_list)); ble.setAdvertisingInterval(1600); // 1000ms; in multiples of 0.625ms. ble.addService(customService); ble.startAdvertising(); while (true) { ble.waitForEvent(); } }
int main(){ //pc.wait(1); gatt_characteristics[CHARACTERISTIC_LED] = new GattCharacteristic( nRF51_GATT_CHAR_LED, &gatt_char_value[CHARACTERISTIC_LED], 1, 1, GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_READ | GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_WRITE | GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_WRITE_WITHOUT_RESPONSE); gatt_service = new GattService(nRF51_GATT_SERVICE, gatt_characteristics, CHARACTERISTIC_COUNT); //Initialize BLE Device ble.init(); ble.setDeviceName((uint8_t *)DEVICE_NAME); // configure our advertising type, payload and interval00 ble.accumulateAdvertisingPayload( GapAdvertisingData::BREDR_NOT_SUPPORTED | GapAdvertisingData::LE_GENERAL_DISCOVERABLE); ble.accumulateAdvertisingPayload( GapAdvertisingData::COMPLETE_LOCAL_NAME, (uint8_t *)DEVICE_NAME, sizeof(DEVICE_NAME)); ble.setAdvertisingType(GapAdvertisingParams::ADV_CONNECTABLE_UNDIRECTED); ble.setAdvertisingInterval(160); // 100ms /* led1.write(1); led3.write(1); led2.write(1); led4.write(1); */ for(int i=0; i<10; i++) pc.printf("Hello World\n"); ble.onConnection((Gap::ConnectionEventCallback_t)connectionCallback); ble.onDisconnection(disconnectionCallback); ble.gattServer().onDataWritten(onDataWritten); ble.addService(*gatt_service); ble.startAdvertising(); /* Adding below for scanning */ ble.setScanParams(500 /* scan interval */, 200 /* scan window */); ble.startScan(advertisementCallback); /**END OF PART FOR SCANNING**/ for (;;) { ble.waitForEvent(); } }