From: koushik.girijala Date: Thu, 25 Feb 2016 11:21:36 +0000 (+0530) Subject: Fix for Tizen EDR issues X-Git-Tag: 1.2.0+RC1~629 X-Git-Url: http://review.tizen.org/git/?a=commitdiff_plain;h=78f724e885179adb9a8ce2c5be59e2f83192ad35;p=platform%2Fupstream%2Fiotivity.git Fix for Tizen EDR issues Blocked Server from doing device discovery Handled Data send result handlig for socket disconnect case Change-Id: I5ce49c218f9a4947875b385196ade80909cf371c Signed-off-by: koushik.girijala Reviewed-on: https://gerrit.iotivity.org/gerrit/5203 Tested-by: jenkins-iotivity Reviewed-by: Habib Virji --- diff --git a/resource/csdk/connectivity/inc/caedrinterface.h b/resource/csdk/connectivity/inc/caedrinterface.h index 68569b1..92de500 100644 --- a/resource/csdk/connectivity/inc/caedrinterface.h +++ b/resource/csdk/connectivity/inc/caedrinterface.h @@ -293,6 +293,13 @@ CAResult_t CAEDRClientSendMulticastData(const uint8_t *data, */ CAResult_t CAEDRGetBondedDeviceList(); +#ifdef __TIZEN__ +/** + * This function starts device discovery. + */ +CAResult_t CAEDRStartDeviceDiscovery(void); +#endif + #ifdef __cplusplus } /* extern "C" */ #endif diff --git a/resource/csdk/connectivity/src/bt_edr_adapter/caedradapter.c b/resource/csdk/connectivity/src/bt_edr_adapter/caedradapter.c index 752e893..956ddd4 100644 --- a/resource/csdk/connectivity/src/bt_edr_adapter/caedradapter.c +++ b/resource/csdk/connectivity/src/bt_edr_adapter/caedradapter.c @@ -263,6 +263,15 @@ CAResult_t CAStopEDRListeningServer() CAResult_t CAStartEDRDiscoveryServer() { +#ifdef __TIZEN__ + // Start device discovery + CAResult_t result = CAEDRStartDeviceDiscovery(); + if(CA_STATUS_OK != result) + { + OIC_LOG(DEBUG, EDR_ADAPTER_TAG, "Failed to Start Device discovery"); + } +#endif + return CAStartServer(); } diff --git a/resource/csdk/connectivity/src/bt_edr_adapter/tizen/caedrclient.c b/resource/csdk/connectivity/src/bt_edr_adapter/tizen/caedrclient.c index 3abdfa1..e24e2ae 100644 --- a/resource/csdk/connectivity/src/bt_edr_adapter/tizen/caedrclient.c +++ b/resource/csdk/connectivity/src/bt_edr_adapter/tizen/caedrclient.c @@ -78,6 +78,11 @@ static u_arraylist_t *g_multicastDataList = NULL; static ca_mutex g_multicastDataListMutex = NULL; /** + * To Store Adapter Mode information + */ +static bool g_isDiscoveryServer = false; + +/** * This function creates mutex. */ static CAResult_t CAEDRManagerInitializeMutex(void); @@ -93,11 +98,6 @@ static void CAEDRManagerTerminateMutex(void); static void CAEDRDataRecvCallback(bt_socket_received_data_s *data, void *userData); /** - * This function starts device discovery. - */ -static CAResult_t CAEDRStartDeviceDiscovery(void); - -/** * This function stops any ongoing service sevice search. */ static CAResult_t CAEDRStopServiceSearch(void); @@ -417,7 +417,6 @@ CAResult_t CAEDRStartDeviceDiscovery(void) { OIC_LOG(DEBUG, EDR_ADAPTER_TAG, "IN"); - bool isDiscoveryStarted = false; // Check the device discovery state @@ -441,6 +440,8 @@ CAResult_t CAEDRStartDeviceDiscovery(void) } } + g_isDiscoveryServer = true; + OIC_LOG(DEBUG, EDR_ADAPTER_TAG, "OUT"); return CA_STATUS_OK; } @@ -526,14 +527,6 @@ CAResult_t CAEDRClientSetCallbacks(void) bt_socket_set_connection_state_changed_cb(CAEDRSocketConnectionStateCallback, NULL); bt_socket_set_data_received_cb(CAEDRDataRecvCallback, NULL); - // Start device discovery - CAResult_t result = CAEDRStartDeviceDiscovery(); - if(CA_STATUS_OK != result) - { - OIC_LOG(DEBUG, EDR_ADAPTER_TAG, "Failed to Start Device discovery"); - return CA_STATUS_FAILED; - } - OIC_LOG(DEBUG, EDR_ADAPTER_TAG, "OUT"); return CA_STATUS_OK; } @@ -838,35 +831,38 @@ CAResult_t CAEDRClientSendMulticastData(const uint8_t *data, ca_mutex_unlock(g_edrDeviceListMutex); - // Start the device Discovery. - result = CAEDRStartDeviceDiscovery(); - if (CA_STATUS_OK == result) + if(g_isDiscoveryServer) { - OIC_LOG(INFO, EDR_ADAPTER_TAG, "Add the data to the multicast data list"); - - EDRData *multicastData = (EDRData *)OICCalloc(1, sizeof(EDRData)); - if (NULL == multicastData) + // Start the device Discovery. + result = CAEDRStartDeviceDiscovery(); + if (CA_STATUS_OK == result) { - OIC_LOG(ERROR, EDR_ADAPTER_TAG, "Malloc failed"); - goto exit; - } - multicastData->data = OICCalloc(1, dataLength); - if (NULL == multicastData->data) - { - OIC_LOG(ERROR, EDR_ADAPTER_TAG, "Malloc failed"); - goto exit; - } - memcpy(multicastData->data, data, dataLength); - multicastData->dataLength = dataLength; + OIC_LOG(INFO, EDR_ADAPTER_TAG, "Add the data to the multicast data list"); - // Add the data to pending multicast data list. - ca_mutex_lock(g_multicastDataListMutex); - if (NULL == g_multicastDataList) - { - g_multicastDataList = u_arraylist_create(); + EDRData *multicastData = (EDRData *)OICCalloc(1, sizeof(EDRData)); + if (NULL == multicastData) + { + OIC_LOG(ERROR, EDR_ADAPTER_TAG, "Malloc failed"); + goto exit; + } + multicastData->data = OICCalloc(1, dataLength); + if (NULL == multicastData->data) + { + OIC_LOG(ERROR, EDR_ADAPTER_TAG, "Malloc failed"); + goto exit; + } + memcpy(multicastData->data, data, dataLength); + multicastData->dataLength = dataLength; + + // Add the data to pending multicast data list. + ca_mutex_lock(g_multicastDataListMutex); + if (NULL == g_multicastDataList) + { + g_multicastDataList = u_arraylist_create(); + } + u_arraylist_add(g_multicastDataList, (void *)multicastData); + ca_mutex_unlock(g_multicastDataListMutex); } - u_arraylist_add(g_multicastDataList, (void *)multicastData); - ca_mutex_unlock(g_multicastDataListMutex); } exit: diff --git a/resource/csdk/connectivity/src/bt_edr_adapter/tizen/caedrendpoint.c b/resource/csdk/connectivity/src/bt_edr_adapter/tizen/caedrendpoint.c index c7156e6..78af3ff 100644 --- a/resource/csdk/connectivity/src/bt_edr_adapter/tizen/caedrendpoint.c +++ b/resource/csdk/connectivity/src/bt_edr_adapter/tizen/caedrendpoint.c @@ -47,6 +47,11 @@ CAResult_t CAEDRSendData(int serverFD, const void *data, uint32_t dataLength) OIC_LOG_V(ERROR, EDR_ADAPTER_TAG, "sending data failed!, soketid [%d]", serverFD); return CA_SOCKET_OPERATION_FAILED; } + else if (dataLen == 0) + { + OIC_LOG_V(ERROR, EDR_ADAPTER_TAG, "soketid [%d] may be disconnected?", serverFD); + return CA_SOCKET_OPERATION_FAILED; + } OIC_LOG(DEBUG, EDR_ADAPTER_TAG, "OUT"); return CA_STATUS_OK;