return written;
}
-BT_EXPORT_API int bluetooth_hid_device_send_rc_key_event(const char *remote_addr,
- hid_send_rc_key_event_t send_event)
+BT_EXPORT_API int bluetooth_hid_device_send_custom_event(const char *remote_addr,
+ unsigned char btcode, unsigned char report_id,
+ const char *data, unsigned int data_len)
{
int result;
int written = 0;
int socket_fd;
hid_connected_device_info_t *info = NULL;
+ char *send_event = NULL;
+
+ BT_CHECK_PARAMETER(remote_addr, return);
+ BT_CHECK_PARAMETER(data, return);
switch (privilege_token_send_key) {
case 0:
- result = _bt_check_privilege(BT_BLUEZ_SERVICE, BT_HID_DEVICE_SEND_KEY_EVENT);
+ result = _bt_check_privilege(BT_CHECK_PRIVILEGE, BT_HID_DEVICE_SEND_CUSTOM_EVENT);
if (result == BLUETOOTH_ERROR_NONE) {
privilege_token_send_key = 1; /* Have a permission */
else
socket_fd = info->ctrl_fd;
- written = write(socket_fd, &send_event, sizeof(send_event));
+ send_event = (char*)g_malloc0(data_len + 2);
+ if (send_event == NULL)
+ return BLUETOOTH_ERROR_OUT_OF_MEMORY;
+
+ send_event[0] = (char)btcode;
+ send_event[1] = (char)report_id;
+ memcpy(send_event + 2, data, data_len);
+
+ written = write(socket_fd, send_event, data_len + 2);
+
+ g_free(send_event);
+
return written;
}
case BT_HID_DEVICE_SEND_MOUSE_EVENT:
case BT_HID_DEVICE_SEND_KEY_EVENT:
case BT_HID_DEVICE_SEND_REPLY_TO_REPORT:
+ case BT_HID_DEVICE_SEND_CUSTOM_EVENT:
case BT_CONNECT_LE:
case BT_DISCONNECT_LE:
unsigned char key[8];
} hid_send_key_event_t;
-typedef struct {
- unsigned char btcode;
- unsigned char rep_id;
- unsigned short key[3];
-} hid_send_rc_key_event_t;
-
typedef void (*hid_cb_func_ptr)(int, hid_event_param_t *, void *);
typedef struct {
hid_send_key_event_t send_event);
/**
- * @fn int bluetooth_hid_device_send_rc_key_event(
- * const char *remote_addr, hid_send_rc_key_event_t send_event)
+ * @fn int bluetooth_hid_device_send_custom_event(const char *remote_addr,
+ * unsigned char btcode, unsigned char report_id,
+ * const char *data, unsigned int data_len)
*
* @brief write the event data on the socket.
*
*
* @exception None
* @param[in] remote_addr device address of remote device.
- * @param[in] send_event This indicates the event data to send to remote device.
+ * @param[in] btcode The btcode
+ * @param[in] report_id The report id
+ * @param[in] data This indicates the event data to send to remote device.
+ * @param[in] data_len The length of the data
* @remark None
*/
-int bluetooth_hid_device_send_rc_key_event(const char *remote_addr,
- hid_send_rc_key_event_t send_event);
+int bluetooth_hid_device_send_custom_event(const char *remote_addr,
+ unsigned char btcode, unsigned char report_id,
+ const char *data, unsigned int data_len);
+
/**
* @fn int bluetooth_hid_device_reply_to_report(const char *remote_addr,
* bt_hid_header_type_t htype,
BT_HID_DEVICE_DISCONNECT,
BT_HID_DEVICE_SEND_MOUSE_EVENT,
BT_HID_DEVICE_SEND_KEY_EVENT,
+ BT_HID_DEVICE_SEND_CUSTOM_EVENT,
BT_HID_DEVICE_SEND_REPLY_TO_REPORT,
BT_HID_ENABLE_BARCODE_FEATURE,
BT_NETWORK_ACTIVATE = BT_FUNC_NETWORK_BASE,