#include "bt-service-hidhost.h"
#include "bt-service-rfcomm.h"
#include "bt-service-hdp.h"
+#include "bt-service-tds.h"
/*Obex*/
#include "bt-service-obex-server.h"
__bt_service_get_parameters(in_param1,
&address, sizeof(bluetooth_device_address_t));
- result = _bt_audio_connect(BT_AUDIO_A2DP, &address);
+ result = _bt_audio_is_profile_connection_in_progress(BT_AV_CONNECT, &address);
+
+ if (result == BLUETOOTH_ERROR_NONE)
+ result = _bt_audio_connect(BT_AUDIO_A2DP, &address);
if (result != BLUETOOTH_ERROR_NONE) {
+ BT_ERR("AV Connect Request has failed to execute");
char addr[BT_ADDRESS_STRING_SIZE];
_bt_convert_addr_type_to_string(addr, address.addr);
g_array_append_vals(*out_param1, addr, BT_ADDRESS_STRING_SIZE);
__bt_service_get_parameters(in_param1,
&address, sizeof(bluetooth_device_address_t));
- result = _bt_audio_connect(BT_AUDIO_ALL, &address);
+ result = _bt_audio_is_profile_connection_in_progress(BT_AUDIO_CONNECT, &address);
+
+ if (result == BLUETOOTH_ERROR_NONE)
+ result = _bt_audio_connect(BT_AUDIO_ALL, &address);
if (result != BLUETOOTH_ERROR_NONE) {
+ BT_ERR("Audio All Connect Request has failed to execute");
char addr[BT_ADDRESS_STRING_SIZE];
_bt_convert_addr_type_to_string(addr, address.addr);
g_array_append_vals(*out_param1, addr, BT_ADDRESS_STRING_SIZE);
__bt_service_get_parameters(in_param1,
&address, sizeof(bluetooth_device_address_t));
- result = _bt_audio_connect(BT_AUDIO_HSP, &address);
+ result = _bt_audio_is_profile_connection_in_progress(BT_AG_CONNECT, &address);
+
+ if (result == BLUETOOTH_ERROR_NONE)
+ result = _bt_audio_connect(BT_AUDIO_HSP, &address);
if (result != BLUETOOTH_ERROR_NONE) {
+ BT_ERR("AG Connect Request has failed to execute");
char addr[BT_ADDRESS_STRING_SIZE];
_bt_convert_addr_type_to_string(addr, address.addr);
g_array_append_vals(*out_param1, addr, BT_ADDRESS_STRING_SIZE);
__bt_service_get_parameters(in_param1,
&address, sizeof(bluetooth_device_address_t));
- result = _bt_audio_connect(BT_AUDIO_A2DP_SOURCE, &address);
+ result = _bt_audio_is_profile_connection_in_progress(BT_AV_SOURCE_CONNECT,
+ &address);
+
+ if (result == BLUETOOTH_ERROR_NONE)
+ result = _bt_audio_connect(BT_AUDIO_A2DP_SOURCE, &address);
+
if (result != BLUETOOTH_ERROR_NONE) {
+ BT_ERR("A2DP Source Connect Request has failed to execute");
char addr[BT_ADDRESS_STRING_SIZE];
_bt_convert_addr_type_to_string(addr, address.addr);
g_array_append_vals(*out_param1, addr, BT_ADDRESS_STRING_SIZE);
__bt_service_get_parameters(in_param1,
&address, sizeof(bluetooth_device_address_t));
- result = _bt_hf_connect(&address);
+ result = _bt_audio_is_profile_connection_in_progress(BT_HF_CONNECT,
+ &address);
+
+ if (result == BLUETOOTH_ERROR_NONE)
+ result = _bt_hf_connect(&address);
+
if (result != BLUETOOTH_ERROR_NONE) {
+ BT_ERR("HF Connect Request has failed to execute");
char addr[BT_ADDRESS_STRING_SIZE];
_bt_convert_addr_type_to_string(addr, address.addr);
g_array_append_vals(*out_param1, addr, BT_ADDRESS_STRING_SIZE);
__bt_service_get_parameters(in_param1,
&address, sizeof(bluetooth_device_address_t));
- result = _bt_audio_connect(BT_AVRCP_TARGET, &address);
+ result = _bt_audio_is_profile_connection_in_progress(BT_AVRCP_TARGET_CONNECT,
+ &address);
+
+ if (result == BLUETOOTH_ERROR_NONE)
+ result = _bt_audio_connect(BT_AVRCP_TARGET, &address);
+
if (result != BLUETOOTH_ERROR_NONE) {
+ BT_ERR("AVRCP Target Connect Request has failed to execute");
char addr[BT_ADDRESS_STRING_SIZE];
_bt_convert_addr_type_to_string(addr, address.addr);
g_array_append_vals(*out_param1, addr, BT_ADDRESS_STRING_SIZE);
__bt_service_get_parameters(in_param1,
&address, sizeof(bluetooth_device_address_t));
- result = _bt_audio_connect(BT_AVRCP, &address);
+ result = _bt_audio_is_profile_connection_in_progress(BT_AVRCP_CONTROL_CONNECT,
+ &address);
+
+ if (result == BLUETOOTH_ERROR_NONE)
+ result = _bt_audio_connect(BT_AVRCP, &address);
+
if (result != BLUETOOTH_ERROR_NONE) {
+ BT_ERR("AVRCP Control Connect Request has failed to execute");
char addr[BT_ADDRESS_STRING_SIZE];
_bt_convert_addr_type_to_string(addr, address.addr);
g_array_append_vals(*out_param1, addr, BT_ADDRESS_STRING_SIZE);
__bt_service_get_parameters(in_param4, &use_reserved_slot,
sizeof(gboolean));
- BT_DBG("bluetooth_advertising_params_t [%f %f %d %d %d]",
+ BT_DBG("bluetooth_advertising_params_t [%d %d %d %d %d]",
adv_params.interval_min, adv_params.interval_max,
adv_params.filter_policy, adv_params.type, adv_params.tx_power_level);
result = _bt_set_custom_advertising(app, *adv_handle,
break;
}
+ case BT_TDS_PROVIDER_REGISTER: {
+ char *sender = NULL;
+
+ sender = (char *)g_dbus_method_invocation_get_sender(context);
+ result = _bt_tds_provider_register(sender);
+
+ break;
+ }
+
+ case BT_TDS_PROVIDER_UNREGISTER: {
+ char *sender = NULL;
+
+ sender = (char *)g_dbus_method_invocation_get_sender(context);
+ result = _bt_tds_provider_unregister(sender);
+
+ break;
+ }
+
+ case BT_TDS_PROVIDER_SET_MANUF_DATA: {
+ char *sender = NULL;
+ unsigned int length = 0;
+ bluetooth_advertising_data_t manuf_data;
+
+ __bt_service_get_parameters(in_param1,
+ &length, sizeof(unsigned int));
+ __bt_service_get_parameters(in_param2,
+ &manuf_data, sizeof(bluetooth_advertising_data_t));
+ sender = (char *)g_dbus_method_invocation_get_sender(context);
+
+ result = _bt_tds_provider_set_manuf_data(sender, manuf_data.data, length);
+ break;
+ }
+
+ case BT_TDS_PROVIDER_CREATE: {
+ char *sender = NULL;
+ unsigned int tds_handle = 0;
+ int transport;
+
+ __bt_service_get_parameters(in_param1,
+ &tds_handle, sizeof(unsigned int));
+ __bt_service_get_parameters(in_param2,
+ &transport, sizeof(int));
+ sender = (char *)g_dbus_method_invocation_get_sender(context);
+ result = _bt_tds_provider_transport_create(sender, transport, tds_handle);
+
+ break;
+ }
+
+ case BT_TDS_PROVIDER_DESTROY: {
+ char *sender = NULL;
+ unsigned int tds_handle = 0;
+
+ __bt_service_get_parameters(in_param1,
+ &tds_handle, sizeof(unsigned int));
+ sender = (char *)g_dbus_method_invocation_get_sender(context);
+ result = _bt_tds_provider_transport_remove(sender, tds_handle);
+
+ break;
+ }
+
+ case BT_TDS_PROVIDER_SET_TRANSPORT_DATA: {
+ char *sender = NULL;
+ unsigned int tds_handle = 0;
+ int transport_state = 0;
+ bluetooth_tds_data_t tds_data;
+
+ __bt_service_get_parameters(in_param1,
+ &tds_handle, sizeof(unsigned int));
+ __bt_service_get_parameters(in_param2,
+ &transport_state, sizeof(int));
+ __bt_service_get_parameters(in_param3,
+ &tds_data, sizeof(bluetooth_tds_data_t));
+ sender = (char *)g_dbus_method_invocation_get_sender(context);
+
+ result = _bt_tds_provider_set_transport_data(sender, tds_handle,
+ transport_state, tds_data.data, tds_data.length);
+ break;
+ }
+
+ case BT_TDS_SEND_ACTIVATION_RESPONSE: {
+ bluetooth_device_address_t address = { {0} };
+ bluetooth_tds_data_t tds_data;
+ char *sender = NULL;
+ unsigned int tds_handle = 0;
+ int response;
+
+ __bt_service_get_parameters(in_param1,
+ &tds_handle, sizeof(unsigned int));
+ __bt_service_get_parameters(in_param2,
+ &response, sizeof(int));
+ __bt_service_get_parameters(in_param3, &address,
+ sizeof(bluetooth_device_address_t));
+ __bt_service_get_parameters(in_param4,
+ &tds_data, sizeof(bluetooth_tds_data_t));
+ sender = (char *)g_dbus_method_invocation_get_sender(context);
+
+ result = _bt_tds_provider_send_activation_response(sender, tds_handle,
+ &address, response, tds_data.data, tds_data.length);
+ break;
+ }
+
case BT_MESH_INIT:
sender = (char*)g_dbus_method_invocation_get_sender(context);
BT_INFO("Mesh: Init by [%s]", sender);
__bt_service_get_parameters(in_param1,
&node, sizeof(bluetooth_mesh_node_t));
network_name = (const char *)g_variant_get_data(in_param2);
+
BT_INFO("MESH: Network name [%s]", network_name);
param3 = g_array_new(TRUE, TRUE, sizeof(gchar));
/* Save invocation */
if (result == BLUETOOTH_ERROR_NONE) {
network = g_malloc0(sizeof(bluetooth_mesh_network_t));
- g_strlcpy(network->token.token, token, strlen(token));
- g_strlcpy(network->app_cred, requester_unique_creds, strlen(requester_unique_creds));
+ g_strlcpy(network->token.token, token,
+ BLUETOOTH_MESH_NETWORK_TOKEN_STRING_LENGTH + 1);
+ g_strlcpy(network->app_cred, requester_unique_creds,
+ sizeof(network->app_cred));
sender = (char*)g_dbus_method_invocation_get_sender(context);
_bt_save_invocation_context(context, result, sender,
sender, &network);
break;
}
+ case BT_MESH_NETWORK_JOIN: {
+ bluetooth_mesh_node_t node;
+ GSList *model_list = NULL;
+ int total_models = 0;
+ GArray *param2;
+ int i = 0;
+
+ memset(&node, 0x00, sizeof(bluetooth_mesh_node_t));
+ sender = (char*)g_dbus_method_invocation_get_sender(context);
+
+ __bt_service_get_parameters(in_param1,
+ &node, sizeof(bluetooth_mesh_node_t));
+
+ param2 = g_array_new(TRUE, TRUE, sizeof(gchar));
+ __bt_fill_garray_from_variant(in_param2, param2);
+
+ total_models = (param2->len) / sizeof(bluetooth_mesh_model_t);
+ for (i = 0; i < total_models; i++) {
+ bluetooth_mesh_model_t *info = NULL;
+ bluetooth_mesh_model_t *mod = NULL;
+ info = &g_array_index(param2,
+ bluetooth_mesh_model_t, i);
+ mod = g_memdup(info, sizeof(bluetooth_mesh_model_t));
+
+ if (mod)
+ model_list = g_slist_append(model_list,
+ (gpointer)mod);
+ }
+
+ BT_INFO("MESH: Network Join bt-service");
+ //result = BLUETOOTH_ERROR_NONE;
+ result = _bt_mesh_network_join(requester_unique_creds,
+ sender, &node, model_list);
+ if (result != BLUETOOTH_ERROR_NONE) {
+ g_array_append_vals(*out_param1, &node, sizeof(bluetooth_mesh_node_t));
+ BT_ERR("Mesh: Mesh Join Network schedule failed");
+ g_slist_free_full(model_list, g_free);
+ }
+
+ BT_INFO("return of _bt_mesh_network_join : [%d]", result);
+ break;
+ }
+ case BT_MESH_CANCEL_JOIN: {
+ bluetooth_mesh_node_info_t node;
+ memset(&node, 0x00, sizeof(bluetooth_mesh_node_info_t));
+
+ __bt_service_get_parameters(in_param1,
+ &node, sizeof(bluetooth_mesh_node_info_t));
+
+ BT_INFO("Mesh: Cancel Join request");
+ result = _bt_mesh_cancel_join(requester_unique_creds,
+ sender, &node);
+ if (result != BLUETOOTH_ERROR_NONE) {
+ g_array_append_vals(*out_param1,
+ &node, sizeof(bluetooth_mesh_node_t));
+ }
+ break;
+ }
case BT_MESH_NETWORK_SCAN: {
bluetooth_mesh_network_t network;
bluetooth_mesh_scan_param_t param;
case BT_STOP_LE_DISCOVERY:
case BT_SET_SCAN_PARAMETERS:
case BT_SET_SCAN_TYPE:
+ case BT_UPDATE_LE_CONNECTION_MODE:
case BT_BOND_DEVICE:
case BT_CANCEL_BONDING:
case BT_HID_ENABLE_BARCODE_FEATURE:
- case BT_AVRCP_CONTROL_GET_PROPERTY:
- case BT_AVRCP_GET_TRACK_INFO:
case BT_AVRCP_TRANSPORT_SET_PROPERTY:
case BT_AVRCP_HANDLE_CONTROL_TO_DEST:
case BT_SET_LE_PRIVACY:
case BT_SET_LE_STATIC_RANDOM_ADDRESS:
case BT_LE_CONN_UPDATE:
- case BT_UPDATE_LE_CONNECTION_MODE:
case BT_GET_DEVICE_IDA:
case BT_LE_READ_MAXIMUM_DATA_LENGTH:
case BT_LE_WRITE_HOST_SUGGESTED_DATA_LENGTH:
case BT_MESH_NETWORK_DESTROY:
case BT_MESH_NETWORK_LOAD:
case BT_MESH_NETWORK_UNLOAD:
+ case BT_MESH_NETWORK_JOIN:
+ case BT_MESH_CANCEL_JOIN:
case BT_MESH_NETWORK_SCAN:
case BT_MESH_NETWORK_CANCEL_SCAN:
case BT_MESH_NETWORK_SET_CAPABILITIES:
case BT_OBEX_SERVER_DEALLOCATE:
case BT_OBEX_SERVER_IS_ACTIVATED:
case BT_OPP_GET_TRANSFER_PROGRESS:
+ case BT_AVRCP_CONTROL_GET_PROPERTY:
+ case BT_AVRCP_GET_TRACK_INFO:
/* Non-privilege control */
break;
default:
/* Mesh App Termination */
_bt_check_mesh_app_termination(name);
+
+ /* Stop the Transport Discovery service */
+ _bt_tds_stop_by_terminated_process(name);
}
static void __bt_service_bus_acquired_handler(GDBusConnection *connection,