BTstack.cpp (24b3c62931f131de8243230463f3536778ba1e63) BTstack.cpp (5611a760af48d1ce1beea59c7908be73bd2393f1)
1/**
2 * Arduino Wrapper for BTstack
3 */
4
5#include <Arduino.h>
6#include <SPI.h>
7
8#ifdef __AVR__

--- 141 unchanged lines hidden (view full) ---

150 if (bleDeviceDisconnectedCallback) {
151 handle = READ_BT_16(packet, 3);
152 BLEDevice device(handle);
153 (*bleDeviceDisconnectedCallback)(&device);
154 }
155 le_peripheral_todos |= SET_ADVERTISEMENT_ENABLED;
156 break;
157
1/**
2 * Arduino Wrapper for BTstack
3 */
4
5#include <Arduino.h>
6#include <SPI.h>
7
8#ifdef __AVR__

--- 141 unchanged lines hidden (view full) ---

150 if (bleDeviceDisconnectedCallback) {
151 handle = READ_BT_16(packet, 3);
152 BLEDevice device(handle);
153 (*bleDeviceDisconnectedCallback)(&device);
154 }
155 le_peripheral_todos |= SET_ADVERTISEMENT_ENABLED;
156 break;
157
158 case GAP_LE_ADVERTISING_REPORT: {
158 case GAP_LE_EVENT_ADVERTISING_REPORT: {
159 if (bleAdvertismentCallback) {
160 BLEAdvertisement advertisement(packet);
161 (*bleAdvertismentCallback)(&advertisement);
162 }
163 break;
164 }
165
166 case HCI_EVENT_COMMAND_COMPLETE:

--- 50 unchanged lines hidden (view full) ---

217 characteristic->uuid16 = READ_NET_32(characteristic->uuid128, 0);
218 }
219}
220
221static void gatt_client_callback(uint8_t packet_type, uint8_t * packet, uint16_t size){
222
223 // if (hci) event is not 4-byte aligned, event->handle causes crash
224 // workaround: check event type, assuming GATT event types are contagious
159 if (bleAdvertismentCallback) {
160 BLEAdvertisement advertisement(packet);
161 (*bleAdvertismentCallback)(&advertisement);
162 }
163 break;
164 }
165
166 case HCI_EVENT_COMMAND_COMPLETE:

--- 50 unchanged lines hidden (view full) ---

217 characteristic->uuid16 = READ_NET_32(characteristic->uuid128, 0);
218 }
219}
220
221static void gatt_client_callback(uint8_t packet_type, uint8_t * packet, uint16_t size){
222
223 // if (hci) event is not 4-byte aligned, event->handle causes crash
224 // workaround: check event type, assuming GATT event types are contagious
225 if (packet[0] < GATT_QUERY_COMPLETE) return;
226 if (packet[0] > GATT_MTU) return;
225 if (packet[0] < GATT_EVENT_QUERY_COMPLETE) return;
226 if (packet[0] > GATT_EVENT_MTU) return;
227
228 uint16_t con_handle = READ_BT_16(packet, 2);
229 uint8_t status;
230 uint8_t * value;
231 uint16_t value_handle;
232 uint16_t value_length;
233
234 BLEDevice device(con_handle);
235 switch(packet[0]){
227
228 uint16_t con_handle = READ_BT_16(packet, 2);
229 uint8_t status;
230 uint8_t * value;
231 uint16_t value_handle;
232 uint16_t value_length;
233
234 BLEDevice device(con_handle);
235 switch(packet[0]){
236 case GATT_SERVICE_QUERY_RESULT:
236 case GATT_EVENT_SERVICE_QUERY_RESULT:
237 if (gattServiceDiscoveredCallback) {
238 le_service_t service;
239 extract_service(&service, packet);
240 BLEService bleService(service);
241 (*gattServiceDiscoveredCallback)(BLE_STATUS_OK, &device, &bleService);
242 }
243 break;
237 if (gattServiceDiscoveredCallback) {
238 le_service_t service;
239 extract_service(&service, packet);
240 BLEService bleService(service);
241 (*gattServiceDiscoveredCallback)(BLE_STATUS_OK, &device, &bleService);
242 }
243 break;
244 case GATT_CHARACTERISTIC_QUERY_RESULT:
244 case GATT_EVENT_CHARACTERISTIC_QUERY_RESULT:
245 if (gattCharacteristicDiscoveredCallback){
246 le_characteristic_t characteristic;
247 extract_characteristic(&characteristic, packet);
248 BLECharacteristic bleCharacteristic(characteristic);
249 (*gattCharacteristicDiscoveredCallback)(BLE_STATUS_OK, &device, &bleCharacteristic);
250 }
251 break;
245 if (gattCharacteristicDiscoveredCallback){
246 le_characteristic_t characteristic;
247 extract_characteristic(&characteristic, packet);
248 BLECharacteristic bleCharacteristic(characteristic);
249 (*gattCharacteristicDiscoveredCallback)(BLE_STATUS_OK, &device, &bleCharacteristic);
250 }
251 break;
252 case GATT_QUERY_COMPLETE:
252 case GATT_EVENT_QUERY_COMPLETE:
253 status = READ_BT_16(packet, 4);
254 switch (gattAction){
255 case gattActionWrite:
256 if (gattCharacteristicWrittenCallback) gattCharacteristicWrittenCallback(status ? BLE_STATUS_OTHER_ERROR : BLE_STATUS_OK, &device);
257 break;
258 case gattActionSubscribe:
259 if (gattCharacteristicSubscribedCallback) gattCharacteristicSubscribedCallback(status ? BLE_STATUS_OTHER_ERROR : BLE_STATUS_OK, &device);
260 break;

--- 5 unchanged lines hidden (view full) ---

266 break;
267 case gattActionCharacteristicQuery:
268 if (gattCharacteristicDiscoveredCallback) gattCharacteristicDiscoveredCallback(BLE_STATUS_DONE, &device, NULL);
269 break;
270 default:
271 break;
272 };
273 break;
253 status = READ_BT_16(packet, 4);
254 switch (gattAction){
255 case gattActionWrite:
256 if (gattCharacteristicWrittenCallback) gattCharacteristicWrittenCallback(status ? BLE_STATUS_OTHER_ERROR : BLE_STATUS_OK, &device);
257 break;
258 case gattActionSubscribe:
259 if (gattCharacteristicSubscribedCallback) gattCharacteristicSubscribedCallback(status ? BLE_STATUS_OTHER_ERROR : BLE_STATUS_OK, &device);
260 break;

--- 5 unchanged lines hidden (view full) ---

266 break;
267 case gattActionCharacteristicQuery:
268 if (gattCharacteristicDiscoveredCallback) gattCharacteristicDiscoveredCallback(BLE_STATUS_DONE, &device, NULL);
269 break;
270 default:
271 break;
272 };
273 break;
274 case GATT_NOTIFICATION:
274 case GATT_EVENT_NOTIFICATION:
275 if (gattCharacteristicNotificationCallback) {
276 value_handle = READ_BT_16(packet, 4);
277 value_length = READ_BT_16(packet, 6);
278 value = &packet[8];
279 (*gattCharacteristicNotificationCallback)(&device, value_handle, value, value_length);
280 }
281 break;
275 if (gattCharacteristicNotificationCallback) {
276 value_handle = READ_BT_16(packet, 4);
277 value_length = READ_BT_16(packet, 6);
278 value = &packet[8];
279 (*gattCharacteristicNotificationCallback)(&device, value_handle, value, value_length);
280 }
281 break;
282 case GATT_INDICATION:
282 case GATT_EVENT_INDICATION:
283 if (gattCharacteristicIndicationCallback) {
284 value_handle = READ_BT_16(packet, 4);
285 value_length = READ_BT_16(packet, 6);
286 value = &packet[8];
287 (*gattCharacteristicIndicationCallback)(&device, value_handle, value, value_length);
288 }
289 break;
283 if (gattCharacteristicIndicationCallback) {
284 value_handle = READ_BT_16(packet, 4);
285 value_length = READ_BT_16(packet, 6);
286 value = &packet[8];
287 (*gattCharacteristicIndicationCallback)(&device, value_handle, value, value_length);
288 }
289 break;
290 case GATT_CHARACTERISTIC_VALUE_QUERY_RESULT:
290 case GATT_EVENT_CHARACTERISTIC_VALUE_QUERY_RESULT:
291 if (gattCharacteristicReadCallback) {
292 value_handle = READ_BT_16(packet, 4);
293 value_length = READ_BT_16(packet, 6);
294 value = &packet[8];
295 (*gattCharacteristicReadCallback)(BLE_STATUS_OK, &device, value, value_length);
296 }
297 break;
298 default:

--- 575 unchanged lines hidden ---
291 if (gattCharacteristicReadCallback) {
292 value_handle = READ_BT_16(packet, 4);
293 value_length = READ_BT_16(packet, 6);
294 value = &packet[8];
295 (*gattCharacteristicReadCallback)(BLE_STATUS_OK, &device, value, value_length);
296 }
297 break;
298 default:

--- 575 unchanged lines hidden ---