CAResult_t CAEDRClientSetCallbacks(void) { OIC_LOG(DEBUG, EDR_ADAPTER_TAG, "IN"); // Register for discovery and rfcomm socket connection callbacks bt_adapter_set_device_discovery_state_changed_cb(CAEDRDeviceDiscoveryCallback, NULL); bt_device_set_service_searched_cb(CAEDRServiceSearchedCallback, NULL); 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; }
int rhtf_initialize_bluetooth(const char *device_name) { // Initialize bluetooth and get adapter state __COMMON_FUNC_ENTER__; int ret; ret = bt_initialize(); if(ret != BT_ERROR_NONE) { MIN_LOG("Unknown exception is occured in bt_initialize(): %x", ret); return -1; } ret = bt_adapter_get_state(&gBtState); if(ret != BT_ERROR_NONE) { MIN_LOG("Unknown exception is occured in bt_adapter_get_state(): %x", ret); return -2; } // Enable bluetooth device manually if(gBtState == BT_ADAPTER_DISABLED) { MIN_LOG("[%s] bluetooth is not enabled.", __FUNCTION__); return -3; } else { MIN_LOG("[%s] BT was already enabled.", __FUNCTION__); } // Set adapter's name if(gBtState == BT_ADAPTER_ENABLED) { char *name = NULL; ret = bt_adapter_get_name(&name); if(name == NULL) { MIN_LOG("NULL name exception is occured in bt_adapter_get_name(): %x", ret); return -5; } if(strncmp(name, device_name, strlen(name)) != 0) { if(bt_adapter_set_name(device_name) != BT_ERROR_NONE) { if (NULL != name) free(name); MIN_LOG("Unknown exception is occured in bt_adapter_set_name : %x", ret); return -6; } } free(name); } else { MIN_LOG("Bluetooth is not enabled"); return -7; } /* No need to visualize the device when connecting as a client // Set visibility as BT_ADAPTER_VISIBILITY_MODE_GENERAL_DISCOVERABLE if(bt_adapter_get_visibility(&gVisibilityMode, NULL) != BT_ERROR_NONE) { LOGE("[%s] bt_adapter_get_visibility() failed.", __FUNCTION__); return -11; } if(gVisibilityMode != BT_ADAPTER_VISIBILITY_MODE_GENERAL_DISCOVERABLE) { if(bt_adapter_set_visibility(BT_ADAPTER_VISIBILITY_MODE_GENERAL_DISCOVERABLE, 0) != BT_ERROR_NONE) { LOGE("[%s] bt_adapter_set_visibility() failed.", __FUNCTION__); return -12; } gVisibilityMode = BT_ADAPTER_VISIBILITY_MODE_GENERAL_DISCOVERABLE; } else { LOGI("[%s] Visibility mode was already set as BT_ADAPTER_VISIBILITY_MODE_GENERAL_DISCOVERABLE.", __FUNCTION__); } */ // Connecting socket as a client ret = bt_socket_set_connection_state_changed_cb(rhtf_socket_connection_state_changed_cb, NULL); if(ret != BT_ERROR_NONE) { MIN_LOG("Unknown exception is occured in bt_socket_set_connection_state_changed_cb(): %x", ret); __COMMON_FUNC_EXIT__; return -9; } ret = bt_socket_set_data_received_cb(rhtf_received_data_cb, NULL); if(ret != BT_ERROR_NONE) { MIN_LOG("Unknown exception is occured in bt_socket_set_data_received_cb(): %x", ret); __COMMON_FUNC_EXIT__; return -10; } __COMMON_FUNC_EXIT__; return 0; }