X-Git-Url: http://review.tizen.org/git/?a=blobdiff_plain;f=bt-api%2Fbt-rfcomm-client.c;h=315aa4b3ffeca0a3a8f71bd6b94b2505245213b9;hb=9c4b9ae7f88a280c709c77e96d9415cd2fa708b3;hp=a0f5aff48104259ec586a4d098b9467ca31756a1;hpb=723a97e54593d4a80802cad5fc3323af46848010;p=platform%2Fcore%2Fconnectivity%2Fbluetooth-frwk.git diff --git a/bt-api/bt-rfcomm-client.c b/bt-api/bt-rfcomm-client.c index a0f5aff..315aa4b 100644 --- a/bt-api/bt-rfcomm-client.c +++ b/bt-api/bt-rfcomm-client.c @@ -78,40 +78,38 @@ static void __client_connected_cb(rfcomm_cb_data_t *cb_data, static bool __rfcomm_record_tx_data(void) { - if (bluetooth_get_battery_monitor_state()) { - if (tx_data > 0) { - int ret = _bt_common_send_rfcomm_tx_details(tx_data); - if (ret == BLUETOOTH_ERROR_NONE) { - tx_data = 0; - return TRUE; - } else { - BT_ERR("RFCOMM tx data could not be registered"); - } + if (tx_data > 0) { + int ret = _bt_common_send_rfcomm_tx_details(tx_data); + if (ret == BLUETOOTH_ERROR_NONE) { + tx_data = 0; + return TRUE; + } else { + BT_ERR("RFCOMM tx data could not be registered"); } } tx_data = 0; tx_tag = 0; + return FALSE; } static bool __rfcomm_record_rx_data(void) { - if (bluetooth_get_battery_monitor_state()) { - if (rx_data) { - int ret = _bt_common_send_rfcomm_rx_details(rx_data); - if (ret == BLUETOOTH_ERROR_NONE) { - rx_data = 0; - return TRUE; - } else { - BT_ERR("RFCOMM rx data could not be registered"); - } + if (rx_data) { + int ret = _bt_common_send_rfcomm_rx_details(rx_data); + if (ret == BLUETOOTH_ERROR_NONE) { + rx_data = 0; + return TRUE; + } else { + BT_ERR("RFCOMM rx data could not be registered"); } } rx_data = 0; rx_tag = 0; - return FALSE; + + return FALSE; } static void __bt_free_cb_data(rfcomm_cb_data_t *cb_data) @@ -322,6 +320,10 @@ static void _bt_rfcomm_disconnect_conn_info(rfcomm_conn_info_t *conn_info, if (info->rfcomm_conns == NULL) rfcomm_cb_data_remove(info); + if (_bt_common_send_rfcomm_conn_info(RFCOMM_ROLE_CLIENT, + FALSE, disconn_info.socket_fd) != BLUETOOTH_ERROR_NONE) + BT_ERR("Fail to send the connection info"); + BT_DBG("-"); } @@ -366,7 +368,6 @@ static gboolean __client_data_received_cb(GIOChannel *chan, GIOCondition cond, GIOStatus status = G_IO_STATUS_NORMAL; GError *err = NULL; int fd; - BT_DBG("+"); retv_if(info == NULL, FALSE); fd = g_io_channel_unix_get_fd(chan); @@ -448,7 +449,6 @@ static gboolean __client_data_received_cb(GIOChannel *chan, GIOCondition cond, } g_free(buffer); - BT_DBG("-"); return TRUE; } @@ -479,6 +479,10 @@ static void __client_connected_cb(rfcomm_cb_data_t *cb_data, char *dev_address, conn_info.socket_fd = conn_list_info->fd; conn_info.server_id = -1; + if (_bt_common_send_rfcomm_conn_info(RFCOMM_ROLE_CLIENT, + TRUE, conn_info.socket_fd) != BLUETOOTH_ERROR_NONE) + BT_ERR("Fail to send the connection info"); + BT_DBG("Connection Result[%d] BT_ADDRESS[%s] UUID[%s] FD[%d]", result, conn_list_info->bt_addr, cb_data->uuid, conn_list_info->fd); _bt_common_event_cb(BLUETOOTH_EVENT_RFCOMM_CONNECTED, @@ -520,6 +524,22 @@ void _bt_rfcomm_client_disconnect_all(void) return; } +void _bt_rfcomm_client_reset_timer(void) +{ + if (rx_tag > 0) { + rx_tag = 0; + g_source_remove(rx_tag); + } + + if (tx_tag > 0) { + g_source_remove(tx_tag); + tx_tag = 0; + } + + rx_data = 0; + tx_data = 0; +} + int new_connection(const char *path, int fd, bluetooth_device_address_t *addr) { rfcomm_cb_data_t *info; @@ -1426,7 +1446,7 @@ BT_EXPORT_API int bluetooth_rfcomm_write(int fd, const char *buf, int length) BT_INFO("Adding rfcomm tx timeout function for battery monitor"); tx_tag = g_timeout_add_seconds(BATTERY_MONITOR_RFCOMM_INTERVAL, (GSourceFunc)__rfcomm_record_tx_data, NULL); } - tx_data += length; + tx_data += written; } return written; #else @@ -1436,7 +1456,7 @@ BT_EXPORT_API int bluetooth_rfcomm_write(int fd, const char *buf, int length) BT_INFO("Adding rfcomm tx timeout function for battery monitor"); tx_tag = g_timeout_add_seconds(BATTERY_MONITOR_RFCOMM_INTERVAL, (GSourceFunc)__rfcomm_record_tx_data, NULL); } - tx_data += length; + tx_data += written; } return result; #endif