From 863e2c6b5aadf4fc8afbabd754f03e37a65011fd Mon Sep 17 00:00:00 2001 From: "matthias.ringwald@gmail.com" Date: Sun, 26 Jan 2014 10:11:44 +0000 Subject: [PATCH] try to enable notification/indication --- example/libusb/ble_peripheral.c | 24 ++++++++++++++++-------- example/libusb/profile.gatt | 8 ++++---- 2 files changed, 20 insertions(+), 12 deletions(-) diff --git a/example/libusb/ble_peripheral.c b/example/libusb/ble_peripheral.c index 770c51844..ee90a28b9 100644 --- a/example/libusb/ble_peripheral.c +++ b/example/libusb/ble_peripheral.c @@ -100,6 +100,7 @@ static timer_source_t heartbeat; static uint8_t counter = 0; static int update_client = 0; static int client_configuration = 0; +static uint16_t client_configuration_handle; static uint16_t handle = 0; @@ -220,22 +221,29 @@ static uint16_t att_read_callback(uint16_t handle, uint16_t offset, uint8_t * bu // write requests static int att_write_callback(uint16_t handle, uint16_t transaction_mode, uint16_t offset, uint8_t *buffer, uint16_t buffer_size, signature_t * signature){ printf("WRITE Callback, handle %04x\n", handle); + + switch(handle){ + case 0x0012: + case 0x0015: + case 0x002a: + case 0x002d: + client_configuration = buffer[0]; + client_configuration_handle = handle; + printf("Client Configuration set to %u for handle %04x\n", client_configuration, handle); + return 1; + default: + break; + } + printf("Value: "); hexdump(buffer, buffer_size); + if (buffer_size > ATT_VALUE_MAX_LEN){ buffer_size = ATT_VALUE_MAX_LEN; } memcpy(att_value, buffer, buffer_size); att_value_len = buffer_size; - switch(handle){ - case 0x0010: - client_configuration = buffer[0]; - printf("Client Configuration set to %u\n", client_configuration); - break; - default: - break; - } return 1; } diff --git a/example/libusb/profile.gatt b/example/libusb/profile.gatt index 1fe5e79c0..e86ec67de 100644 --- a/example/libusb/profile.gatt +++ b/example/libusb/profile.gatt @@ -44,8 +44,8 @@ PRIMARY_SERVICE, F000 INCLUDE_SERVICE, FFF4 // Characteristics 16 and 128 bit with different authoriztion/authentication/encryption requirements and read/write flags // - no requirements -CHARACTERISTIC, F100, READ | WRITE | DYNAMIC, -CHARACTERISTIC, 0000F101-0000-1000-8000-00805F9B34FB, READ | WRITE | DYNAMIC, +CHARACTERISTIC, F100, READ | WRITE | DYNAMIC | CLIENT_CONFIGURATION, +CHARACTERISTIC, 0000F101-0000-1000-8000-00805F9B34FB, READ | WRITE | DYNAMIC | CLIENT_CONFIGURATION, // - neither read nor writable CHARACTERISTIC, F102, DYNAMIC, CHARACTERISTIC, 0000F103-0000-1000-8000-00805F9B34FB, DYNAMIC, @@ -64,8 +64,8 @@ PRIMARY_SERVICE, 0000F001-0000-1000-8000-00805F9B34FB INCLUDE_SERVICE, FFF4 // Characteristics 16 and 128 bit with different authoriztion/authentication/encryption requirements and read/write flags // - no requirements -CHARACTERISTIC, F200, READ | WRITE | DYNAMIC, -CHARACTERISTIC, 0000F201-0000-1000-8000-00805F9B34FB, READ | WRITE | DYNAMIC, +CHARACTERISTIC, F200, READ | WRITE | DYNAMIC | CLIENT_CONFIGURATION, +CHARACTERISTIC, 0000F201-0000-1000-8000-00805F9B34FB, READ | WRITE | DYNAMIC | CLIENT_CONFIGURATION, // - neither read nor writable CHARACTERISTIC, F202, DYNAMIC, CHARACTERISTIC, 0000F203-0000-1000-8000-00805F9B34FB, DYNAMIC,