GIOStatus status = G_IO_STATUS_NORMAL;
GError *err = NULL;
int fd;
- BT_DBG("");
+ BT_DBG("+");
retv_if(info == NULL, FALSE);
fd = g_io_channel_unix_get_fd(chan);
result, &data_r,
event_info->cb, event_info->user_data);
+ if (bluetooth_get_battery_monitor_state()) {
+ int ret = _bt_common_send_rfcomm_rx_details(&data_r);
+ if (ret != BLUETOOTH_ERROR_NONE)
+ BT_ERR("RFCOMM received data details not sent to battery monitor frwk");
+ }
+
g_free(buffer);
+ BT_DBG("-");
return TRUE;
}
int id, object_id;
char *path;
- if (_bt_check_privilege(BT_BLUEZ_SERVICE, BT_RFCOMM_CLIENT_CONNECT)
+ if (_bt_check_privilege(BT_CHECK_PRIVILEGE, BT_RFCOMM_CLIENT_CONNECT)
== BLUETOOTH_ERROR_PERMISSION_DEINED) {
BT_ERR("Don't have a privilege to use this API");
return BLUETOOTH_ERROR_PERMISSION_DEINED;
/* In now, we only support to connecty using UUID */
connect_type = BT_RFCOMM_UUID;
- if (_bt_check_privilege(BT_BLUEZ_SERVICE, BT_RFCOMM_CLIENT_CONNECT)
+ if (_bt_check_privilege(BT_CHECK_PRIVILEGE, BT_RFCOMM_CLIENT_CONNECT)
== BLUETOOTH_ERROR_PERMISSION_DEINED) {
BT_ERR("Don't have a privilege to use this API");
return BLUETOOTH_ERROR_PERMISSION_DEINED;
BT_CHECK_ENABLED(return);
- if (_bt_check_privilege(BT_BLUEZ_SERVICE, BT_RFCOMM_SOCKET_DISCONNECT)
+ if (_bt_check_privilege(BT_CHECK_PRIVILEGE, BT_RFCOMM_SOCKET_DISCONNECT)
== BLUETOOTH_ERROR_PERMISSION_DEINED) {
BT_ERR("Don't have a privilege to use this API");
return BLUETOOTH_ERROR_PERMISSION_DEINED;
BT_CHECK_ENABLED(return);
retv_if(socket_fd < 0, BLUETOOTH_ERROR_INVALID_PARAM);
- if (_bt_check_privilege(BT_BLUEZ_SERVICE, BT_RFCOMM_SOCKET_DISCONNECT)
+ if (_bt_check_privilege(BT_CHECK_PRIVILEGE, BT_RFCOMM_SOCKET_DISCONNECT)
== BLUETOOTH_ERROR_PERMISSION_DEINED) {
BT_ERR("Don't have a privilege to use this API");
return BLUETOOTH_ERROR_PERMISSION_DEINED;
#else
static int __write_all(int fd, const char *buf, int len)
{
- int sent = 0;
+ int sent = 0, try = 0;
BT_DBG("+");
while (len > 0) {
written = write(fd, buf, len);
BT_DBG("written: %d", written);
if (written < 0) {
- if (errno == EINTR || errno == EAGAIN)
- continue;
+ if (errno == EINTR || errno == EAGAIN) {
+ try++;
+ if (try <= 49)
+ continue;
+ }
return -1;
}
len -= written;
buf += written;
sent += written;
+ try = 0;
}
BT_DBG("-");
retv_if(length <= 0, BLUETOOTH_ERROR_INVALID_PARAM);
-#ifdef TIZEN_FEATURE_BT_DPM
- if (_bt_check_dpm(BT_DPM_SPP, NULL) == BT_DPM_RESTRICTED ||
- _bt_check_dpm(BT_DPM_HF_ONLY, NULL) == BT_DPM_RESTRICTED) {
- BT_ERR("Not allow to write RFCOMM data");
- return BLUETOOTH_ERROR_DEVICE_POLICY_RESTRICTION;
- }
-#endif
-
switch (privilege_token) {
case 0:
- result = _bt_check_privilege(BT_BLUEZ_SERVICE, BT_RFCOMM_SOCKET_WRITE);
+ result = _bt_check_privilege(BT_CHECK_PRIVILEGE, BT_RFCOMM_SOCKET_WRITE);
if (result == BLUETOOTH_ERROR_NONE) {
privilege_token = 1; /* Have a permission */
return BLUETOOTH_ERROR_INTERNAL;
}
+ if (bluetooth_get_battery_monitor_state()) {
+ int ret = _bt_common_send_rfcomm_tx_details(length);
+ if (ret != BLUETOOTH_ERROR_NONE)
+ BT_ERR("RFCOMM tx data could not be sent");
+ }
+
#ifdef TIZEN_FEATURE_BT_RFCOMM_DIRECT
written = write(fd, buf, length);
/*BT_DBG("Length %d, written = %d, balance(%d)",