Apply tizen 3.0 based product patchsets
[platform/core/connectivity/bluetooth-frwk.git] / bt-api / bt-hid-device.c
index 52cc967..23942fa 100644 (file)
@@ -454,6 +454,28 @@ static gboolean __received_cb(GIOChannel *chan, GIOCondition cond,
                        break;
                }
 
+               case BT_HID_TRANS_GET_IDLE:{
+                       BT_INFO("Get_IDLE");
+                       data.type = HTYPE_TRANS_GET_IDLE;
+                       data.param = PTYPE_DATA_RTYPE_INPUT;
+                       data.buffer_size = len;
+                       data.buffer = (char *) malloc(sizeof(char) * len);
+                       if (data.buffer)
+                               memcpy(data.buffer, buffer, len);
+                       break;
+               }
+
+               case BT_HID_TRANS_SET_IDLE:{
+                       BT_INFO("Set_IDLE");
+                       data.type = HTYPE_TRANS_SET_IDLE;
+                       data.param = PTYPE_DATA_RTYPE_INPUT;
+                       data.buffer_size = len;
+                       data.buffer = (char *) malloc(sizeof(char) * len);
+                       if (data.buffer)
+                               memcpy(data.buffer, buffer, len);
+                       break;
+               }
+
                default: {
                        BT_INFO("unsupported HIDP control message");
                        BT_ERR("Send Handshake Message");
@@ -610,6 +632,8 @@ BT_EXPORT_API int bluetooth_hid_device_activate(void)
        bt_register_profile_info_t profile_info;
        int result = BLUETOOTH_ERROR_NONE;
 
+       BT_CHECK_ENABLED(return);
+
        if (_bt_check_privilege(BT_CHECK_PRIVILEGE, BT_HID_DEVICE_ACTIVATE)
                 == BLUETOOTH_ERROR_PERMISSION_DEINED) {
                BT_ERR("Don't have a privilege to use this API");
@@ -642,6 +666,8 @@ BT_EXPORT_API int bluetooth_hid_device_activate(void)
 
 BT_EXPORT_API int bluetooth_hid_device_deactivate(void)
 {
+       BT_CHECK_ENABLED(return);
+
        if (_bt_check_privilege(BT_CHECK_PRIVILEGE, BT_HID_DEVICE_DEACTIVATE)
                 == BLUETOOTH_ERROR_PERMISSION_DEINED) {
                BT_ERR("Don't have a privilege to use this API");
@@ -666,6 +692,8 @@ BT_EXPORT_API int bluetooth_hid_device_connect(const char *remote_addr)
        BT_DBG("+");
        BT_CHECK_PARAMETER(remote_addr, return);
 
+       BT_CHECK_ENABLED(return);
+
        info = __find_hid_info_with_address(remote_addr);
        if (info) {
                BT_ERR("Connection Already Exists");
@@ -687,6 +715,8 @@ BT_EXPORT_API int bluetooth_hid_device_disconnect(const char *remote_addr)
 {
        BT_CHECK_PARAMETER(remote_addr, return);
 
+       BT_CHECK_ENABLED(return);
+
        if (_bt_check_privilege(BT_CHECK_PRIVILEGE, BT_HID_DEVICE_DISCONNECT)
                 == BLUETOOTH_ERROR_PERMISSION_DEINED) {
                BT_ERR("Don't have a privilege to use this API");
@@ -874,7 +904,7 @@ BT_EXPORT_API int bluetooth_hid_device_reply_to_report(const char *remote_addr,
 {
        int result;
        struct reports output_report = { 0 };
-       int bytes = 0;
+       int bytes = BLUETOOTH_ERROR_INTERNAL;
        hid_connected_device_info_t *info = NULL;
        info = __find_hid_info_with_address(remote_addr);
        if (info == NULL) {
@@ -955,6 +985,26 @@ BT_EXPORT_API int bluetooth_hid_device_reply_to_report(const char *remote_addr,
                BT_DBG("Bytes Written %d", bytes);
                break;
        }
+
+       case HTYPE_TRANS_GET_IDLE: {
+               BT_DBG("Replying to Get_IDLE");
+               output_report.type = BT_HID_TRANS_DATA | BT_HID_DATA_RTYPE_OUTPUT;
+               output_report.rep_data[0] = data[0];
+               bytes = write(info->intr_fd, &output_report, 2);
+               BT_DBG("Bytes Written %d", bytes);
+               break;
+       }
+
+       case HTYPE_TRANS_SET_IDLE: {
+               BT_DBG("Reply to Set_IDLE");
+               output_report.type = BT_HID_TRANS_DATA | BT_HID_DATA_RTYPE_INPUT;
+               memcpy(output_report.rep_data, data, data_len);
+               bytes = write(info->ctrl_fd, &output_report,
+                               sizeof(output_report));
+               BT_DBG("Bytes Written %d", bytes);
+               break;
+       }
+
        default:
                break;
                }