Previous version which works for my stm32f401 Nucleo board
Fork of X_NUCLEO_IDB0XA1 by
Diff: BlueNRGGattServer.cpp
- Revision:
- 104:dfde0e42edf1
- Parent:
- 103:12684d94c3a6
- Child:
- 105:332f93cd06b7
- Child:
- 112:6dc0ad44750d
--- a/BlueNRGGattServer.cpp Mon Jul 27 11:39:32 2015 +0200 +++ b/BlueNRGGattServer.cpp Mon Jul 27 13:51:00 2015 +0200 @@ -309,7 +309,7 @@ ret = aci_gatt_update_char_value(bleCharHanldeMap.find(charHandle)->second, charHandle, 0, len, buffer); if (ret != BLE_STATUS_SUCCESS){ - DEBUG("Error while updating characteristic.\n\r") ; + DEBUG("Error while updating characteristic (ret=0x%x).\n\r", ret) ; return BLE_ERROR_PARAM_OUT_OF_RANGE ; //Not correct Error Value //FIXME: Define Error values equivalent to BlueNRG Error Codes. } @@ -319,6 +319,7 @@ GattCharacteristic *p_char = BlueNRGGattServer::getInstance().getCharacteristicFromHandle(charHandle); if(p_char->getProperties() & (GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_NOTIFY | GattCharacteristic::BLE_GATT_CHAR_PROPERTIES_INDICATE)) { + DEBUG("Generate event after updating\n\r"); BlueNRGGattServer::getInstance().handleEvent(GattServerEvents::GATT_EVENT_DATA_SENT, charHandle); } @@ -387,38 +388,32 @@ { GattCharacteristic *p_char = NULL; int i; - uint16_t handle; + uint16_t handle, handle_1; - //DEBUG("BlueNRGGattServer::getCharacteristicFromHandle()>>Attribute Handle received 0x%x\n\r",attrHandle); + DEBUG("BlueNRGGattServer::getCharacteristicFromHandle()>>Attribute Handle received %d\n\r",attrHandle); for(i=0; i<characteristicCount; i++) { handle = p_characteristics[i]->getValueAttribute().getHandle(); - //DEBUG("Found p_characteristics[%d] handle=%u Properties 0x%x\n\r", i, handle, p_characteristics[i]->getProperties()); - /* + DEBUG("handle(%d)=%d\n\r", i, handle); if(i==characteristicCount-1)//Last Characteristic check { - if(attrHandle>=bleCharacteristicHandles[handle]) + if(attrHandle>=handle) { p_char = p_characteristics[i]; - DEBUG("Found Characteristic Properties 0x%x\n\r",p_char->getProperties()); + DEBUG("Found Characteristic Properties 0x%x (handle=%d)\n\r",p_char->getProperties(), handle); break; } } else { + handle_1 = p_characteristics[i+1]->getValueAttribute().getHandle(); //Testing if attribute handle is between two Characteristic Handles - if(attrHandle>=bleCharacteristicHandles[handle] && attrHandle<bleCharacteristicHandles[handle+1]) + if(attrHandle>=handle && attrHandle<handle_1) { p_char = p_characteristics[i]; - DEBUG("Found Characteristic Properties 0x%x\n\r",p_char->getProperties()); + DEBUG("Found Characteristic Properties 0x%x (handle=%d handle_1=%d)\n\r",p_char->getProperties(), handle, handle_1); break; } else continue; } - */ - if(attrHandle == handle+1) { - p_char = p_characteristics[i]; - DEBUG("Found Characteristic Properties 0x%x\n\r",p_char->getProperties()); - break; - } } return p_char;