#include "camutex.h"
#include "caqueueingthread.h"
#include "caadapterutils.h"
-#include "camsgparser.h"
+#include "cafragmentation.h"
#include "cableutil.h"
#include "oic_string.h"
#include "oic_malloc.h"
#define TZ_BLE_SERVER_TAG "TZ_BLE_GATT_SERVER"
/**
- * @def CA_BLE_SERVICE_UUID
- * @brief UUID of OIC service. This UUID is common across all platform for LE transport.
- */
-#define CA_BLE_SERVICE_UUID "713D0000-503E-4C75-BA94-3148F18D941E"
-
-/**
* @def CA_BLE_INITIAL_BUF_SIZE
* @brief Initial buffer size for Gatt Server.
*/
static CABLEServerDataReceivedCallback g_bleServerDataReceivedCallback = NULL;
/**
+ * @var g_serverErrorCallback
+ * @brief callback to update the error to le adapter
+ */
+static CABLEErrorHandleCallback g_serverErrorCallback;
+
+/**
* @var g_isBleGattServerStarted
* @brief Boolean variable to keep the state of the GATTServer
*/
OIC_LOG(DEBUG, TZ_BLE_SERVER_TAG, "OUT");
}
-CAResult_t CAStartBleGattServer()
+CAResult_t CAStartLEGattServer()
{
OIC_LOG(DEBUG, TZ_BLE_SERVER_TAG, "IN");
{
OIC_LOG(ERROR, TZ_BLE_SERVER_TAG, "Gatt Server is already running");
ca_mutex_unlock(g_bleServerStateMutex);
- CATerminateBleGattServer();
+ CATerminateLEGattServer();
return;
}
{
OIC_LOG(ERROR, TZ_BLE_SERVER_TAG, "_bt_gatt_init_service failed");
ca_mutex_unlock(g_bleServerStateMutex);
- CATerminateBleGattServer();
+ CATerminateLEGattServer();
return;
}
sleep(5); // Sleep is must because of the platform issue.
- char *serviceUUID = CA_BLE_SERVICE_UUID;
+ char *serviceUUID = OIC_BLE_SERVICE_ID;
ret = CAAddNewBleServiceInGattServer(serviceUUID);
if (CA_STATUS_OK != ret )
{
OIC_LOG(ERROR, TZ_BLE_SERVER_TAG, "CAAddNewBleServiceInGattServer failed");
ca_mutex_unlock(g_bleServerStateMutex);
- CATerminateBleGattServer();
+ CATerminateLEGattServer();
return;
}
{
OIC_LOG(ERROR, TZ_BLE_SERVER_TAG, "CAAddNewCharacteristicsToGattServer failed");
ca_mutex_unlock(g_bleServerStateMutex);
- CATerminateBleGattServer();
+ CATerminateLEGattServer();
return;
}
{
OIC_LOG(ERROR, TZ_BLE_SERVER_TAG, "CAAddNewCharacteristicsToGattServer failed");
ca_mutex_unlock(g_bleServerStateMutex);
- CATerminateBleGattServer();
+ CATerminateLEGattServer();
return;
}
{
OIC_LOG(ERROR, TZ_BLE_SERVER_TAG, "CARegisterBleServicewithGattServer failed");
ca_mutex_unlock(g_bleServerStateMutex);
- CATerminateBleGattServer();
+ CATerminateLEGattServer();
return;
}
{
OIC_LOG(ERROR, TZ_BLE_SERVER_TAG, "g_hAdvertiser is NULL");
ca_mutex_unlock(g_bleServerStateMutex);
- CATerminateBleGattServer();
+ CATerminateLEGattServer();
return;
}
OIC_LOG_V(DEBUG, TZ_BLE_SERVER_TAG, "bt_adapter_le_start_advertising failed with ret [%d] ",
res);
ca_mutex_unlock(g_bleServerStateMutex);
- CATerminateBleGattServer();
+ CATerminateLEGattServer();
return;
}
OIC_LOG(DEBUG, TZ_BLE_SERVER_TAG, "OUT");
}
-CAResult_t CAStopBleGattServer()
+CAResult_t CAStopLEGattServer()
{
OIC_LOG(DEBUG, TZ_BLE_SERVER_TAG, "IN");
return CA_STATUS_OK;
}
-void CATerminateBleGattServer()
+void CATerminateLEGattServer()
{
OIC_LOG(DEBUG, TZ_BLE_SERVER_TAG, "IN");
return CA_STATUS_OK;
}
-void CASetBleServerThreadPoolHandle(ca_thread_pool_t handle)
+void CASetLEServerThreadPoolHandle(ca_thread_pool_t handle)
{
OIC_LOG(DEBUG, TZ_BLE_SERVER_TAG, "IN");
ca_mutex_lock(g_bleServerThreadPoolMutex);
{
OIC_LOG(DEBUG, TZ_BLE_SERVER_TAG, "IN");
- VERIFY_NON_NULL(serviceUUID, NULL, "Param serviceUUID is NULL");
+ VERIFY_NON_NULL(serviceUUID, TZ_BLE_SERVER_TAG, "Param serviceUUID is NULL");
OIC_LOG_V(DEBUG, TZ_BLE_SERVER_TAG, "service uuid %s", serviceUUID);
{
OIC_LOG(DEBUG, TZ_BLE_SERVER_TAG, "IN");
- VERIFY_NON_NULL(svcPath, NULL, "Param svcPath is NULL");
+ VERIFY_NON_NULL(svcPath, TZ_BLE_SERVER_TAG, "Param svcPath is NULL");
int ret = bt_gatt_remove_service(svcPath);
OIC_LOG_V(DEBUG, TZ_BLE_SERVER_TAG, "charPath = [%s] charValue = [%s] len [%d]", charPath,
charValue, charValueLen);
- char *data = (char *)OICMalloc(sizeof(char) * charValueLen);
+ char *data = (char *)OICMalloc(sizeof(char) * charValueLen + 1);
if (NULL == data)
{
OIC_LOG(ERROR, TZ_BLE_SERVER_TAG, "Malloc failed!");
return;
}
- strncpy(data, (char *)charValue, charValueLen);
+ OICStrcpy(data, charValueLen + 1, charValue);
ca_mutex_lock(g_bleReqRespCbMutex);
if (NULL == g_bleServerDataReceivedCallback)
{
OIC_LOG(DEBUG, TZ_BLE_SERVER_TAG, "IN");
- VERIFY_NON_NULL(svcPath, NULL, "Param svcPath is NULL");
+ VERIFY_NON_NULL(svcPath, TZ_BLE_SERVER_TAG, "Param svcPath is NULL");
OIC_LOG_V(DEBUG, TZ_BLE_SERVER_TAG, "svcPath:%s", svcPath);
{
OIC_LOG(DEBUG, TZ_BLE_SERVER_TAG, "IN");
- VERIFY_NON_NULL(charValue, NULL, "Param charValue is NULL");
+ VERIFY_NON_NULL(charValue, TZ_BLE_SERVER_TAG, "Param charValue is NULL");
- VERIFY_NON_NULL(address, NULL, "Param address is NULL");
+ VERIFY_NON_NULL(address, TZ_BLE_SERVER_TAG, "Param address is NULL");
OIC_LOG_V(DEBUG, TZ_BLE_SERVER_TAG, "Client's Unicast address for sending data [%s]", address);
return CA_STATUS_FAILED;
}
- char *data = (char *) OICMalloc(sizeof(char) * (charValueLen + 1));
+ char *data = (char *) OICCalloc(sizeof(char), (charValueLen + 1));
if (NULL == data)
{
OIC_LOG(ERROR, TZ_BLE_SERVER_TAG, "malloc failed!");
ca_mutex_unlock(g_bleCharacteristicMutex);
return CA_STATUS_FAILED;
}
- memset(data, 0x0, (charValueLen + 1));
- strncpy(data, charValue, charValueLen);
+ OICStrcpy(data, charValueLen + 1, charValue);
OIC_LOG_V(DEBUG, TZ_BLE_SERVER_TAG, "updating characteristics char [%s] data [%s] dataLen [%d]",
(const char *)g_gattReadCharPath, data, charValueLen);
return CA_STATUS_OK;
}
-CAResult_t CAUpdateCharacteristicsToAllGattClients(const char *charValue,
- const uint32_t charValueLen)
+CAResult_t CAUpdateCharacteristicsToAllGattClients(const char *charValue, uint32_t charValueLen)
{
OIC_LOG(DEBUG, TZ_BLE_SERVER_TAG, "IN");
- VERIFY_NON_NULL(charValue, NULL, "Param charValue is NULL");
+ VERIFY_NON_NULL(charValue, TZ_BLE_SERVER_TAG, "Param charValue is NULL");
ca_mutex_lock(g_bleCharacteristicMutex);
return CA_STATUS_FAILED;
}
- strncpy(data, charValue, charValueLen + 1);
+ OICStrcpy(data, charValueLen + 1, charValue);
OIC_LOG_V(DEBUG, TZ_BLE_SERVER_TAG, "updating characteristics char [%s] data [%s] dataLen [%d]",
(const char *)g_gattReadCharPath, data, charValueLen);
return CA_STATUS_OK;
}
-void CASetBLEReqRespServerCallback(CABLEServerDataReceivedCallback callback)
+void CASetLEReqRespServerCallback(CABLEServerDataReceivedCallback callback)
{
OIC_LOG(DEBUG, TZ_BLE_SERVER_TAG, "IN");
OIC_LOG(DEBUG, TZ_BLE_SERVER_TAG, "OUT");
}
+
+void CASetBLEServerErrorHandleCallback(CABLEErrorHandleCallback callback)
+{
+ g_serverErrorCallback = callback;
+}