No changes
Fork of nRF51822 by
Diff: source/nRF5xGattServer.cpp
- Revision:
- 561:613dbbdeed27
- Parent:
- 553:2a413611e569
- Child:
- 563:9c4b96f7be8d
diff -r f6e25408c913 -r 613dbbdeed27 source/nRF5xGattServer.cpp --- a/source/nRF5xGattServer.cpp Mon Jan 11 10:19:14 2016 +0000 +++ b/source/nRF5xGattServer.cpp Mon Jan 11 10:19:15 2016 +0000 @@ -23,8 +23,10 @@ #include "nRF5xGap.h" nRF5xGattServer &nRF5xGattServer::getInstance(void) { - static nRF5xGattServer m_instance; - return m_instance; + if (gattServerInstance == NULL) { + gattServerInstance = new nRF5xGattServer(); + } + return (nRF5xGattServer &) *gattServerInstance; } /**************************************************************************/ @@ -312,6 +314,33 @@ /**************************************************************************/ /*! + @brief Clear nRF5xGattServer's state. + + @returns ble_error_t + + @retval BLE_ERROR_NONE + Everything executed properly +*/ +/**************************************************************************/ +ble_error_t nRF5xGattServer::cleanup(void) +{ + /* Clear all state that is from the parent, including private members */ + if (GattServer::cleanup() != BLE_ERROR_NONE) { + return BLE_ERROR_INVALID_STATE; + } + + /* Clear derived class members */ + memset(p_characteristics, 0, sizeof(p_characteristics)); + memset(p_descriptors, 0, sizeof(p_descriptors)); + memset(nrfCharacteristicHandles, 0, sizeof(ble_gatts_char_handles_t)); + memset(nrfDescriptorHandles, 0, sizeof(nrfDescriptorHandles)); + descriptorCount = 0; + + return BLE_ERROR_NONE; +} + +/**************************************************************************/ +/*! @brief Callback handler for events getting pushed up from the SD */ /**************************************************************************/