X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=resource%2Fcsdk%2Fconnectivity%2Fsrc%2Fbt_le_adapter%2Ftizen%2Fcableclient.c;h=1fba87b299b1fe88e8c0f70d4ec818081976f8cf;hb=8c01dff2c5bc5496f7dc1632c498943ec6ecb015;hp=30199faab5b55ff21bad5a809361451444904bd8;hpb=935fdb9b67b6c10d007e652e9e2e028fd6ccfe09;p=platform%2Fupstream%2Fiotivity.git diff --git a/resource/csdk/connectivity/src/bt_le_adapter/tizen/cableclient.c b/resource/csdk/connectivity/src/bt_le_adapter/tizen/cableclient.c index 30199fa..1fba87b 100644 --- a/resource/csdk/connectivity/src/bt_le_adapter/tizen/cableclient.c +++ b/resource/csdk/connectivity/src/bt_le_adapter/tizen/cableclient.c @@ -34,7 +34,7 @@ #include "uarraylist.h" #include "caqueueingthread.h" #include "caadapterutils.h" -#include "camsgparser.h" +#include "cafragmentation.h" #include "oic_string.h" #include "oic_malloc.h" @@ -116,6 +116,12 @@ static ca_mutex g_bleClientThreadPoolMutex = NULL; static CABLEClientDataReceivedCallback g_bleClientDataReceivedCallback = NULL; /** + * @var g_clientErrorCallback + * @brief callback to update the error to le adapter + */ +static CABLEErrorHandleCallback g_clientErrorCallback; + +/** * @var g_eventLoop * @brief gmainLoop to manage the threads to receive the callback from the platfrom. */ @@ -289,8 +295,7 @@ bool CABleGattCharacteristicsDiscoveredCb(int result, VERIFY_NON_NULL_RET(stTemp, TZ_BLE_CLIENT_TAG, "calloc failed!", false); - size_t len = strlen(bdAddress); - stTemp->address = (char *)OICMalloc(sizeof(char) * (len + 1)); + stTemp->address = OICStrdup(bdAddress); if (NULL == stTemp->address) { OIC_LOG(ERROR, TZ_BLE_CLIENT_TAG , "Malloc failed!"); @@ -298,7 +303,6 @@ bool CABleGattCharacteristicsDiscoveredCb(int result, return false; } - strncpy(stTemp->address, bdAddress, len + 1); bt_gatt_clone_attribute_handle(&(stTemp->serviceInfo), characteristic); ca_mutex_lock(g_bleClientThreadPoolMutex); @@ -338,6 +342,12 @@ bool CABleGattCharacteristicsDiscoveredCb(int result, return false; } } + else + { + OICFree(uuid); + OIC_LOG(ERROR, TZ_BLE_CLIENT_TAG , "service_uuid characteristics is UNKNOWN"); + return false; + } OIC_LOG(DEBUG, TZ_BLE_CLIENT_TAG, "OUT"); return true; @@ -376,9 +386,8 @@ bool CABleGattPrimaryServiceCb(bt_gatt_attribute_h service, int index, int count VERIFY_NON_NULL_RET(stTemp, TZ_BLE_CLIENT_TAG, "Calloc Failed", false); char *bdAddress = (char *)userData; - size_t len = strlen(bdAddress); - stTemp->address = (char *)OICMalloc(sizeof(char) * (len + 1)); + stTemp->address = OICStrdup(bdAddress); if (NULL == stTemp->address) { OIC_LOG(ERROR, TZ_BLE_CLIENT_TAG , "Malloc failed!"); @@ -386,8 +395,6 @@ bool CABleGattPrimaryServiceCb(bt_gatt_attribute_h service, int index, int count return false; } - strncpy(stTemp->address, bdAddress, len + 1); - BLEServiceInfo *bleServiceInfo = NULL; result = CACreateBLEServiceInfo(bdAddress, service, &bleServiceInfo); @@ -567,12 +574,8 @@ void CABtAdapterLeDeviceDiscoveryStateChangedCb(int result, CAResult_t res = CAVerifyOICServiceByUUID(discoveryInfo->service_uuid[i]); if (CA_STATUS_OK == res) { - - size_t len = strlen(discoveryInfo->remote_address); - - char *addr = (char *)OICMalloc(sizeof(char) * (len + 1)); + char *addr = OICStrdup(discoveryInfo->remote_address); VERIFY_NON_NULL_VOID(addr, TZ_BLE_CLIENT_TAG, "Malloc failed"); - strncpy(addr, discoveryInfo->remote_address, len + 1); OIC_LOG_V(DEBUG, TZ_BLE_CLIENT_TAG, "Trying to do Gatt connection to [%s]", addr); @@ -637,7 +640,7 @@ void CAPrintDiscoveryInformation(const bt_adapter_le_device_discovery_info_s *di OIC_LOG(DEBUG, TZ_BLE_CLIENT_TAG, "OUT"); } -void CASetBleClientThreadPoolHandle(ca_thread_pool_t handle) +void CASetLEClientThreadPoolHandle(ca_thread_pool_t handle) { OIC_LOG(DEBUG, TZ_BLE_CLIENT_TAG, "IN"); @@ -648,7 +651,7 @@ void CASetBleClientThreadPoolHandle(ca_thread_pool_t handle) OIC_LOG(DEBUG, TZ_BLE_CLIENT_TAG, "OUT"); } -void CASetBLEReqRespClientCallback(CABLEClientDataReceivedCallback callback) +void CASetLEReqRespClientCallback(CABLEClientDataReceivedCallback callback) { OIC_LOG(DEBUG, TZ_BLE_CLIENT_TAG, "IN"); @@ -661,7 +664,13 @@ void CASetBLEReqRespClientCallback(CABLEClientDataReceivedCallback callback) OIC_LOG(DEBUG, TZ_BLE_CLIENT_TAG, "OUT"); } -CAResult_t CAStartBLEGattClient() + +void CASetBLEClientErrorHandleCallback(CABLEErrorHandleCallback callback) +{ + g_clientErrorCallback = callback; +} + +CAResult_t CAStartLEGattClient() { OIC_LOG(DEBUG, TZ_BLE_CLIENT_TAG, "IN"); @@ -716,7 +725,7 @@ void CAStartBleGattClientThread(void *data) { OIC_LOG(ERROR, TZ_BLE_CLIENT_TAG, "CABleSetScanParameter Failed"); ca_mutex_unlock(g_bleClientStateMutex); - CATerminateBLEGattClient(); + CATerminateLEGattClient(); return; } @@ -725,7 +734,7 @@ void CAStartBleGattClientThread(void *data) { OIC_LOG(ERROR, TZ_BLE_CLIENT_TAG, "CABleGattSetCallbacks Failed"); ca_mutex_unlock(g_bleClientStateMutex); - CATerminateBLEGattClient(); + CATerminateLEGattClient(); return; } @@ -736,7 +745,7 @@ void CAStartBleGattClientThread(void *data) { OIC_LOG(ERROR, TZ_BLE_CLIENT_TAG, "bt_adapter_le_start_device_discovery Failed"); ca_mutex_unlock(g_bleClientStateMutex); - CATerminateBLEGattClient(); + CATerminateLEGattClient(); return; } @@ -757,7 +766,7 @@ void CAStartBleGattClientThread(void *data) OIC_LOG(DEBUG, TZ_BLE_CLIENT_TAG, "OUT"); } -void CAStopBLEGattClient() +void CAStopLEGattClient() { OIC_LOG(DEBUG, TZ_BLE_CLIENT_TAG, "IN"); @@ -802,7 +811,7 @@ void CAStopBLEGattClient() OIC_LOG(DEBUG, TZ_BLE_CLIENT_TAG, "OUT"); } -void CATerminateBLEGattClient() +void CATerminateLEGattClient() { OIC_LOG(DEBUG, TZ_BLE_CLIENT_TAG, "IN"); ca_mutex_lock(g_bleClientStateMutex); @@ -1192,12 +1201,9 @@ CAResult_t CABleGattDiscoverServices(const char *remoteAddress) VERIFY_NON_NULL_RET(remoteAddress, TZ_BLE_CLIENT_TAG, "remote address is NULL", CA_STATUS_FAILED); - size_t len = strlen(remoteAddress); - char *addr = (char *)OICMalloc(sizeof(char) * (len + 1)); + char *addr = OICStrdup(remoteAddress); VERIFY_NON_NULL_RET(addr, TZ_BLE_CLIENT_TAG, "Malloc failed", CA_STATUS_FAILED); - strncpy(addr, remoteAddress, len + 1); - int32_t ret = bt_gatt_foreach_primary_services(remoteAddress, CABleGattPrimaryServiceCb, (void *)addr); // addr memory will be free in callback. if (BT_ERROR_NONE != ret) @@ -1250,15 +1256,12 @@ CAResult_t CABleGattDiscoverCharacteristics(bt_gatt_attribute_h service, { OIC_LOG(DEBUG, TZ_BLE_CLIENT_TAG, "IN"); - VERIFY_NON_NULL_RET(service, NULL, "service is NULL", CA_STATUS_FAILED); - - VERIFY_NON_NULL_RET(remoteAddress, NULL, "remoteAddress is NULL", CA_STATUS_FAILED); + VERIFY_NON_NULL_RET(service, TZ_BLE_CLIENT_TAG, "service is NULL", CA_STATUS_FAILED); - size_t len = strlen(remoteAddress); + VERIFY_NON_NULL_RET(remoteAddress, TZ_BLE_CLIENT_TAG, "remoteAddress is NULL", CA_STATUS_FAILED); - char *addr = (char *)OICMalloc(sizeof(char) * (len + 1)); + char *addr = OICStrdup(remoteAddress); VERIFY_NON_NULL_RET(addr, TZ_BLE_CLIENT_TAG, "Malloc failed", CA_STATUS_FAILED); - strncpy(addr, remoteAddress, len + 1); int32_t ret = bt_gatt_discover_characteristics(service, CABleGattCharacteristicsDiscoveredCb, (void *)addr); // addr will be freed in callback. @@ -1304,7 +1307,7 @@ CAResult_t CABleGattDiscoverDescriptor(bt_gatt_attribute_h service, const char * { OIC_LOG(DEBUG, TZ_BLE_CLIENT_TAG, "IN"); - VERIFY_NON_NULL_RET(service, NULL, "service is NULL", CA_STATUS_FAILED); + VERIFY_NON_NULL_RET(service, TZ_BLE_CLIENT_TAG, "service is NULL", CA_STATUS_FAILED); int ret = bt_gatt_discover_characteristic_descriptor(service, CABleGattDescriptorDiscoveredCb, NULL); @@ -1396,7 +1399,7 @@ CAResult_t CAUpdateCharacteristicsToGattServer(const char *remoteAddress, { OIC_LOG(DEBUG, TZ_BLE_CLIENT_TAG, "IN"); - VERIFY_NON_NULL(data, NULL, "data is NULL"); + VERIFY_NON_NULL(data, TZ_BLE_CLIENT_TAG, "data is NULL"); if (0 >= dataLen) { @@ -1411,7 +1414,7 @@ CAResult_t CAUpdateCharacteristicsToGattServer(const char *remoteAddress, ca_mutex_lock(g_bleServiceListMutex); if ( LE_UNICAST == type) { - VERIFY_NON_NULL(remoteAddress, NULL, "remoteAddress is NULL"); + VERIFY_NON_NULL(remoteAddress, TZ_BLE_CLIENT_TAG, "remoteAddress is NULL"); ret = CAGetBLEServiceInfo(g_bLEServiceList, remoteAddress, &bleServiceInfo); } @@ -1427,7 +1430,7 @@ CAResult_t CAUpdateCharacteristicsToGattServer(const char *remoteAddress, return CA_STATUS_FAILED; } - VERIFY_NON_NULL(bleServiceInfo, NULL, "bleServiceInfo is NULL"); + VERIFY_NON_NULL(bleServiceInfo, TZ_BLE_CLIENT_TAG, "bleServiceInfo is NULL"); OIC_LOG_V(DEBUG, TZ_BLE_CLIENT_TAG, "Updating the data of length [%d] to [%s] ", dataLen, bleServiceInfo->bdAddress); @@ -1458,7 +1461,7 @@ CAResult_t CAUpdateCharacteristicsToAllGattServers(const char *data, { OIC_LOG(DEBUG, TZ_BLE_CLIENT_TAG, "IN"); - VERIFY_NON_NULL(data, NULL, "data is NULL"); + VERIFY_NON_NULL(data, TZ_BLE_CLIENT_TAG, "data is NULL"); if (0 >= dataLen) { @@ -1473,12 +1476,14 @@ CAResult_t CAUpdateCharacteristicsToAllGattServers(const char *data, /*remoteAddress will be NULL. Since we have to send to all destinations. pos will be used for getting remote address. */ - int32_t ret = CAUpdateCharacteristicsToGattServer(NULL, data, dataLen, LE_MULTICAST, pos); + CAResult_t ret = CAUpdateCharacteristicsToGattServer(NULL, data, dataLen, LE_MULTICAST, pos); if (CA_STATUS_OK != ret) { OIC_LOG_V(ERROR, TZ_BLE_CLIENT_TAG, "CAUpdateCharacteristicsToGattServer Failed with return val [%d] ", ret); + g_clientErrorCallback(NULL, data, dataLen, ret); + continue; } }