From fc6f6daa2eb13d170e98f04415169ff4e11ce1cd Mon Sep 17 00:00:00 2001 From: Amit KS Date: Tue, 18 Sep 2018 17:07:33 +0530 Subject: [PATCH] Added API to disable starting advertisement automatically And Advertisement data can be set just before starting - Review Comment fixed Change-Id: Ia82e648ae5ebf138a4311c83a0ed8d259d7b6e80 Signed-off-by: Amit KS --- resource/csdk/connectivity/api/cacommon.h | 4 ++-- resource/csdk/connectivity/api/cautilinterface.h | 24 ++++++++++++++++++++++ .../src/bt_le_adapter/tizen/caleserver.h | 4 ++-- .../src/bt_le_adapter/tizen/caleserver_mcd.c | 15 +++++++------- 4 files changed, 36 insertions(+), 11 deletions(-) diff --git a/resource/csdk/connectivity/api/cacommon.h b/resource/csdk/connectivity/api/cacommon.h index 19bbc82..3145bdd 100755 --- a/resource/csdk/connectivity/api/cacommon.h +++ b/resource/csdk/connectivity/api/cacommon.h @@ -701,9 +701,9 @@ typedef void (*CANetworkMonitorCallback)(const CAEndpoint_t *info, CANetworkStat * Callback function type for editing bluetooth advertisement data before starting bluetooth advertisement. * param[in] max_data_size Maximal size of advertisement data array * param[out] data Advertisement data array - * param[out] real_data_size Real size of advertisement data array + * param[out] data_size Actual Data size of advertisement data array */ -typedef void (*CAAdvertisementDataGetterCB)(int max_data_size, char *data, int *real_data_size); +typedef void (*CAAdvertisementDataGetterCB)(int max_data_size, char *data, int *data_size); #ifdef __cplusplus } /* extern "C" */ diff --git a/resource/csdk/connectivity/api/cautilinterface.h b/resource/csdk/connectivity/api/cautilinterface.h index 84d5c37..324ce53 100644 --- a/resource/csdk/connectivity/api/cautilinterface.h +++ b/resource/csdk/connectivity/api/cautilinterface.h @@ -135,12 +135,36 @@ uint16_t CAGetAssignedPortNumber(CATransportAdapter_t adapter, CATransportFlags_ //custom advertisement data setting #if defined(__TIZEN__) && defined(LE_ADAPTER) && defined(BLE_CUSTOM_ADVERTISE) +/** + * Sets Custom Advertisement Data. + * @param[in] data Advertisment Data buffer. + * @param[in] length Length of buffer. + * + * @return ::CA_STATUS_OK or ::CA_STATUS_FAILED or ::CA_STATUS_INVALID_PARAM + */ CAResult_t CASetAdvertisementData(const char* data, int length); +/** + * Set function that will be called before starting advertising. + * Provided data and length will be used to set advertisement data. + * @param[in] getter Custom advertisement data getter callback. + * + */ void CASetAdvertisementDataGetter(CAAdvertisementDataGetterCB getter); +/** + * set if advertising should be started automatically. + * By default advertising is automatically started. + * @param[in] autoAdvertisement true for automatic start + */ void CASetAutoAdvertisement(bool autoAdvertisement); +/** + * Scan and set data for custom bluetooth advertisement. + * @param[in] data Array with custom bluetooth advertisement data. + * @param[in] length Length of data array. + * @return ::CA_STATUS_OK or ::CA_STATUS_FAILED or ::CA_STATUS_INVALID_PARAM + */ CAResult_t CASetScanResponseData(const char* data, int length); #endif diff --git a/resource/csdk/connectivity/src/bt_le_adapter/tizen/caleserver.h b/resource/csdk/connectivity/src/bt_le_adapter/tizen/caleserver.h index 6e54522..bc96a97 100644 --- a/resource/csdk/connectivity/src/bt_le_adapter/tizen/caleserver.h +++ b/resource/csdk/connectivity/src/bt_le_adapter/tizen/caleserver.h @@ -54,11 +54,11 @@ CAResult_t CAsetServerAdvertisementData(const char *data, int length); void CAsetServerAdvertisementDataGetter(CAAdvertisementDataGetterCB getter); /** - * Used to set auto advertisement feature on and off. + * Used to Start/Stop auto advertisement feature. * * @param[in] auto_advertisement Boolean flag to turn auto advertisement feature on and off. */ -void CAsetServerAutoAdvertisement(bool auto_advertisement); +void CAsetServerAutoAdvertisement(bool autoAdvertisement); /** * Used to Start Server send response data diff --git a/resource/csdk/connectivity/src/bt_le_adapter/tizen/caleserver_mcd.c b/resource/csdk/connectivity/src/bt_le_adapter/tizen/caleserver_mcd.c index 0fe64b8..cf81f37 100644 --- a/resource/csdk/connectivity/src/bt_le_adapter/tizen/caleserver_mcd.c +++ b/resource/csdk/connectivity/src/bt_le_adapter/tizen/caleserver_mcd.c @@ -147,10 +147,10 @@ static char *custom_scanrsp_data = NULL; static int custom_scanrsp_data_length = 0; /** - * Maximum lenght of BLE advertisement packet data size is acctually 24 bytes, + * Maximum length of BLE advertisement packet data size is acctually 24 bytes, * but for safety reason 1 additional byte is allocated. */ -const int max_ble_advertisement_packet_data_size = 25; +const int g_leAdvPacketDataSizeMax = 25; CAResult_t CAsetServerAdvertisementData(const char *data, int length) @@ -193,12 +193,12 @@ void CAsetServerAdvertisementDataGetter(CAAdvertisementDataGetterCB getter) OIC_LOG(DEBUG, TAG, "OUT"); } -void CAsetServerAutoAdvertisement(bool auto_advertisement) +void CAsetServerAutoAdvertisement(bool autoAdvertisement) { OIC_LOG(DEBUG, TAG, "IN"); oc_mutex_lock(g_leServerStateMutex); - g_leServerAutoAdvertisement = auto_advertisement; + g_leServerAutoAdvertisement = autoAdvertisement; oc_mutex_unlock(g_leServerStateMutex); OIC_LOG(DEBUG, TAG, "OUT"); @@ -409,8 +409,8 @@ CAResult_t CALEStartAdvertise() if(g_leServerAdvertisementDataGetter) { int length; - data = (char*) malloc(max_ble_advertisement_packet_data_size); - g_leServerAdvertisementDataGetter(max_ble_advertisement_packet_data_size, data, &length); + data = (char*) malloc(g_leAdvPacketDataSizeMax); + g_leServerAdvertisementDataGetter(g_leAdvPacketDataSizeMax, data, &length); if(!data || length <= 0) { OIC_LOG(WARNING, TAG, "Invalid data. Custom advertisement data will not be set."); @@ -428,7 +428,8 @@ CAResult_t CALEStartAdvertise() } //This array is freed here because it's used in CALEStartAdvertiseImpl() method (freeing earlier causes bluetooth to crash) - free(data); + if(data) + free(data); OIC_LOG(DEBUG, TAG, "OUT"); return res; } -- 2.7.4