From 5d0394ec83a626be5e2af988d93be564a6bbe4c9 Mon Sep 17 00:00:00 2001 From: Taejin Woo Date: Wed, 25 May 2016 12:44:08 +0900 Subject: [PATCH] Move HID APIs header related with HID device role into bluetooth. Change-Id: If8d5248b250ab7c598f2399f1ce1ef23fd8840a7 Signed-off-by: Taejin Woo --- include/mobile/bluetooth_internal.h | 11 +- include/mobile/bluetooth_type.h | 57 -------- include/mobile/bluetooth_type_internal.h | 58 +++++++++ include/tv/bluetooth_internal.h | 11 +- include/tv/bluetooth_type.h | 58 --------- include/tv/bluetooth_type_internal.h | 59 +++++++++ include/wearable/bluetooth.h | 215 ++++++++++++++++++++++++++++++- include/wearable/bluetooth_internal.h | 197 ---------------------------- include/wearable/bluetooth_type.h | 126 +++++++++++++----- src/bluetooth-hid.c | 25 +++- test/bt_unit_test.c | 16 +-- 11 files changed, 466 insertions(+), 367 deletions(-) diff --git a/include/mobile/bluetooth_internal.h b/include/mobile/bluetooth_internal.h index ed6ce93..b028b0f 100644 --- a/include/mobile/bluetooth_internal.h +++ b/include/mobile/bluetooth_internal.h @@ -2619,7 +2619,7 @@ int bt_hid_device_deactivate(void); /** * @ingroup CAPI_NETWORK_BLUETOOTH_HID_MODULE - * @brief Initiates HID device Connection with device role + * @brief Initiates HID device Connection with device role, asynchronously. * @since_tizen 2.3.1 * @privlevel platform * @privilege %http://tizen.org/privilege/bluetooth.admin @@ -2638,6 +2638,7 @@ int bt_hid_device_deactivate(void); * @retval #BT_ERROR_ALREADY_DONE Already connected * * @pre The Bluetooth service must be initialized with bt_initialize(). + * @pre The local device must be bonded with the remote device by bt_device_create_bond(). * @see bt_initialize() * @see bt_hid_device_activate() */ @@ -2645,7 +2646,7 @@ int bt_hid_device_connect(const char *remote_address); /** * @ingroup CAPI_NETWORK_BLUETOOTH_HID_MODULE - * @brief Disconnects the connection with HID Host device. + * @brief Disconnects the connection with HID Host device, asynchronously. * @since_tizen 2.3.1 * @privlevel platform * @privilege %http://tizen.org/privilege/bluetooth.admin @@ -2744,8 +2745,8 @@ int bt_hid_device_unset_data_received_cb(void); * @privilege %http://tizen.org/privilege/bluetooth.admin * * @param[in] remote_address device address of remote device. - * @param[in] htype Header type to be there in response - * @param[in] ptype Parameter type to be there in response. + * @param[in] header_type Header type to be there in response + * @param[in] param_type Parameter type to be there in response. * @param[in] data Data to be present in data payload of response. * @param[in] data_len The length of the response data * @retval #BT_ERROR_NONE Successful @@ -2758,7 +2759,7 @@ int bt_hid_device_unset_data_received_cb(void); * @see bt_hid_device_connection_state_changed_cb() */ int bt_hid_device_reply_to_report(const char *remote_address, - bluetooth_hid_header_type_t htype, bluetooth_hid_param_type_t ptype, + bt_hid_header_type_e header_type, bt_hid_param_type_e param_type, const char *data, unsigned int data_len); /** diff --git a/include/mobile/bluetooth_type.h b/include/mobile/bluetooth_type.h index ccddfb7..178c1bf 100644 --- a/include/mobile/bluetooth_type.h +++ b/include/mobile/bluetooth_type.h @@ -1736,63 +1736,6 @@ typedef void (*bt_nap_connection_state_changed_cb) (bool connected, const char * */ typedef void (*bt_panu_connection_state_changed_cb) (int result, bool connected, const char *remote_address, bt_panu_service_type_e type, void *user_data); -/* HID device related type */ -typedef struct { - unsigned char btcode; - unsigned char rep_id; - unsigned char button; - signed char axis_x; - signed char axis_y; - signed char axis_z; -} bt_hid_mouse_data_s; - -typedef struct { - unsigned char btcode; - unsigned char rep_id; - unsigned char modify; - unsigned char key[8]; -} bt_hid_key_data_s; - -typedef enum { - BT_HID_HEADER_HANDSHAKE, - BT_HID_HEADER_HID_CONTROL, - BT_HID_HEADER_GET_REPORT, - BT_HID_HEADER_SET_REPORT, - BT_HID_HEADER_GET_PROTOCOL, - BT_HID_HEADER_SET_PROTOCOL, - BT_HID_HEADER_DATA, - BT_HID_HEADER_UNKNOWN -} bluetooth_hid_header_type_t; - -typedef enum { - BT_HID_PARAM_DATA_RTYPE_INPUT, - BT_HID_PARAM_DATA_RTYPE_OUTPUT -} bluetooth_hid_param_type_t; - -typedef enum { - BT_HID_HANDSHAKE_SUCCESSFUL = 0x00, /**< Handshake error code none */ - BT_HID_HANDSHAKE_NOT_READY, /**< Handshake error code Not Ready */ - BT_HID_HANDSHAKE_ERR_INVALID_REPORT_ID, /**< Handshake error code send invalid report id */ - BT_HID_HANDSHAKE_ERR_UNSUPPORTED_REQUEST, /**< Handshake error code request unsupported request */ - BT_HID_HANDSHAKE_ERR_INVALID_PARAMETER, /**< Handshake error code received invalid parameter */ - BT_HID_HANDSHAKE_ERR_UNKNOWN = 0x0e, /**< unknown error */ - BT_HID_HANDSHAKE_ERR_FATAL /**< Fatal error */ -} bluetooth_hid_handshake_type_t; - -typedef struct { - const char *address; - bluetooth_hid_header_type_t type; - bluetooth_hid_param_type_t param; - int data_size; /**< The length of the received data */ - const char *data; /**< The received data */ -} bt_hid_device_received_data_s; - -typedef void (*bt_hid_device_connection_state_changed_cb) (int result, - bool connected, const char *remote_address, void *user_data); - -typedef void (*bt_hid_device_data_received_cb)(const bt_hid_device_received_data_s *data, void *user_data); -/* HID device related type */ - #ifdef __cplusplus } #endif /* __cplusplus */ diff --git a/include/mobile/bluetooth_type_internal.h b/include/mobile/bluetooth_type_internal.h index 3c59412..4284fe6 100644 --- a/include/mobile/bluetooth_type_internal.h +++ b/include/mobile/bluetooth_type_internal.h @@ -339,6 +339,64 @@ typedef struct { char **uuids; } bt_dpm_uuids_list_s; +/* HID device related type */ +typedef struct { + unsigned char btcode; + unsigned char rep_id; + unsigned char button; + signed char axis_x; + signed char axis_y; + signed char padding; +} bt_hid_mouse_data_s; + +typedef struct { + unsigned char btcode; + unsigned char rep_id; + unsigned char modifier; + unsigned char key[8]; +} bt_hid_key_data_s; + +typedef enum { + BT_HID_HEADER_HANDSHAKE, + BT_HID_HEADER_HID_CONTROL, + BT_HID_HEADER_GET_REPORT, + BT_HID_HEADER_SET_REPORT, + BT_HID_HEADER_GET_PROTOCOL, + BT_HID_HEADER_SET_PROTOCOL, + BT_HID_HEADER_DATA, + BT_HID_HEADER_UNKNOWN +} bt_hid_header_type_e; + +typedef enum { + BT_HID_PARAM_DATA_RTYPE_INPUT, + BT_HID_PARAM_DATA_RTYPE_OUTPUT +} bt_hid_param_type_e; + +typedef enum { + BT_HID_HANDSHAKE_SUCCESSFUL = 0x00, /**< Handshake error code none */ + BT_HID_HANDSHAKE_NOT_READY, /**< Handshake error code Not Ready */ + BT_HID_HANDSHAKE_ERR_INVALID_REPORT_ID, /**< Handshake error code send invalid report id */ + BT_HID_HANDSHAKE_ERR_UNSUPPORTED_REQUEST, /**< Handshake error code request unsupported request */ + BT_HID_HANDSHAKE_ERR_INVALID_PARAMETER, /**< Handshake error code received invalid parameter */ + BT_HID_HANDSHAKE_ERR_UNKNOWN = 0x0e, /**< unknown error */ + BT_HID_HANDSHAKE_ERR_FATAL /**< Fatal error */ +} bt_hid_handshake_type_e; + +typedef struct { + const char *address; + bt_hid_header_type_e header_type; + bt_hid_param_type_e param_type; + int data_size; /**< The length of the received data */ + const char *data; /**< The received data */ +} bt_hid_device_received_data_s; + +typedef void (*bt_hid_device_connection_state_changed_cb) (int result, + bool connected, const char *remote_address, void *user_data); + +typedef void (*bt_hid_device_data_received_cb)(const bt_hid_device_received_data_s *data, void *user_data); +/* HID device related type */ + + /** * @} */ diff --git a/include/tv/bluetooth_internal.h b/include/tv/bluetooth_internal.h index cedf9dc..acf8fe8 100644 --- a/include/tv/bluetooth_internal.h +++ b/include/tv/bluetooth_internal.h @@ -2620,7 +2620,7 @@ int bt_hid_device_deactivate(void); /** * @ingroup CAPI_NETWORK_BLUETOOTH_HID_MODULE - * @brief Initiates HID device Connection with device role + * @brief Initiates HID device Connection with device role, asynchronously. * @since_tizen 2.3.1 * @privlevel platform * @privilege %http://tizen.org/privilege/bluetooth.admin @@ -2639,6 +2639,7 @@ int bt_hid_device_deactivate(void); * @retval #BT_ERROR_ALREADY_DONE Already connected * * @pre The Bluetooth service must be initialized with bt_initialize(). + * @pre The local device must be bonded with the remote device by bt_device_create_bond(). * @see bt_initialize() * @see bt_hid_device_activate() */ @@ -2646,7 +2647,7 @@ int bt_hid_device_connect(const char *remote_address); /** * @ingroup CAPI_NETWORK_BLUETOOTH_HID_MODULE - * @brief Disconnects the connection with HID Host device. + * @brief Disconnects the connection with HID Host device, asynchronously. * @since_tizen 2.3.1 * @privlevel platform * @privilege %http://tizen.org/privilege/bluetooth.admin @@ -2745,8 +2746,8 @@ int bt_hid_device_unset_data_received_cb(void); * @privilege %http://tizen.org/privilege/bluetooth.admin * * @param[in] remote_address device address of remote device. - * @param[in] htype Header type to be there in response - * @param[in] ptype Parameter type to be there in response. + * @param[in] header_type Header type to be there in response + * @param[in] param_type Parameter type to be there in response. * @param[in] data Data to be present in data payload of response. * @param[in] data_len The length of the response data * @retval #BT_ERROR_NONE Successful @@ -2759,7 +2760,7 @@ int bt_hid_device_unset_data_received_cb(void); * @see bt_hid_device_connection_state_changed_cb() */ int bt_hid_device_reply_to_report(const char *remote_address, - bluetooth_hid_header_type_t htype, bluetooth_hid_param_type_t ptype, + bt_hid_header_type_e header_type, bt_hid_param_type_e param_type, const char *data, unsigned int data_len); /** diff --git a/include/tv/bluetooth_type.h b/include/tv/bluetooth_type.h index 9da5a01..81771ed 100644 --- a/include/tv/bluetooth_type.h +++ b/include/tv/bluetooth_type.h @@ -1738,64 +1738,6 @@ typedef void (*bt_nap_connection_state_changed_cb) (bool connected, const char * */ typedef void (*bt_panu_connection_state_changed_cb) (int result, bool connected, const char *remote_address, bt_panu_service_type_e type, void *user_data); -/* HID device related type */ -typedef struct { - unsigned char btcode; - unsigned char rep_id; - unsigned char button; - signed char axis_x; - signed char axis_y; - signed char axis_z; -} bt_hid_mouse_data_s; - -typedef struct { - unsigned char btcode; - unsigned char rep_id; - unsigned char modify; - unsigned char key[8]; -} bt_hid_key_data_s; - -typedef enum { - BT_HID_HEADER_HANDSHAKE, - BT_HID_HEADER_HID_CONTROL, - BT_HID_HEADER_GET_REPORT, - BT_HID_HEADER_SET_REPORT, - BT_HID_HEADER_GET_PROTOCOL, - BT_HID_HEADER_SET_PROTOCOL, - BT_HID_HEADER_DATA, - BT_HID_HEADER_UNKNOWN -} bluetooth_hid_header_type_t; - -typedef enum { - BT_HID_PARAM_DATA_RTYPE_INPUT, - BT_HID_PARAM_DATA_RTYPE_OUTPUT -} bluetooth_hid_param_type_t; - -typedef enum { - BT_HID_HANDSHAKE_SUCCESSFUL = 0x00, /**< Handshake error code none */ - BT_HID_HANDSHAKE_NOT_READY, /**< Handshake error code Not Ready */ - BT_HID_HANDSHAKE_ERR_INVALID_REPORT_ID, /**< Handshake error code send invalid report id */ - BT_HID_HANDSHAKE_ERR_UNSUPPORTED_REQUEST, /**< Handshake error code request unsupported request */ - BT_HID_HANDSHAKE_ERR_INVALID_PARAMETER, /**< Handshake error code received invalid parameter */ - BT_HID_HANDSHAKE_ERR_UNKNOWN = 0x0e, /**< unknown error */ - BT_HID_HANDSHAKE_ERR_FATAL /**< Fatal error */ -} bluetooth_hid_handshake_type_t; - -typedef struct { - const char *address; - bluetooth_hid_header_type_t type; - bluetooth_hid_param_type_t param; - int data_size; /**< The length of the received data */ - const char *data; /**< The received data */ -} bt_hid_device_received_data_s; - -typedef void (*bt_hid_device_connection_state_changed_cb) (int result, - bool connected, const char *remote_address, - void *user_data); - -typedef void (*bt_hid_device_data_received_cb)(const bt_hid_device_received_data_s *data, void *user_data); -/* HID device related type */ - #ifdef __cplusplus } #endif /* __cplusplus */ diff --git a/include/tv/bluetooth_type_internal.h b/include/tv/bluetooth_type_internal.h index 85159c4..56e122b 100644 --- a/include/tv/bluetooth_type_internal.h +++ b/include/tv/bluetooth_type_internal.h @@ -339,6 +339,65 @@ typedef struct { char **uuids; } bt_dpm_uuids_list_s; +/* HID device related type */ +typedef struct { + unsigned char btcode; + unsigned char rep_id; + unsigned char button; + signed char axis_x; + signed char axis_y; + signed char axis_z; +} bt_hid_mouse_data_s; + +typedef struct { + unsigned char btcode; + unsigned char rep_id; + unsigned char modify; + unsigned char key[8]; +} bt_hid_key_data_s; + +typedef enum { + BT_HID_HEADER_HANDSHAKE, + BT_HID_HEADER_HID_CONTROL, + BT_HID_HEADER_GET_REPORT, + BT_HID_HEADER_SET_REPORT, + BT_HID_HEADER_GET_PROTOCOL, + BT_HID_HEADER_SET_PROTOCOL, + BT_HID_HEADER_DATA, + BT_HID_HEADER_UNKNOWN +} bt_hid_header_type_e; + +typedef enum { + BT_HID_PARAM_DATA_RTYPE_INPUT, + BT_HID_PARAM_DATA_RTYPE_OUTPUT +} bt_hid_param_type_e; + +typedef enum { + BT_HID_HANDSHAKE_SUCCESSFUL = 0x00, /**< Handshake error code none */ + BT_HID_HANDSHAKE_NOT_READY, /**< Handshake error code Not Ready */ + BT_HID_HANDSHAKE_ERR_INVALID_REPORT_ID, /**< Handshake error code send invalid report id */ + BT_HID_HANDSHAKE_ERR_UNSUPPORTED_REQUEST, /**< Handshake error code request unsupported request */ + BT_HID_HANDSHAKE_ERR_INVALID_PARAMETER, /**< Handshake error code received invalid parameter */ + BT_HID_HANDSHAKE_ERR_UNKNOWN = 0x0e, /**< unknown error */ + BT_HID_HANDSHAKE_ERR_FATAL /**< Fatal error */ +} bluetooth_hid_handshake_type_e; + +typedef struct { + const char *address; + bt_hid_header_type_e type; + bt_hid_param_type_e param; + int data_size; /**< The length of the received data */ + const char *data; /**< The received data */ +} bt_hid_device_received_data_s; + +typedef void (*bt_hid_device_connection_state_changed_cb) (int result, + bool connected, const char *remote_address, + void *user_data); + +typedef void (*bt_hid_device_data_received_cb)(const bt_hid_device_received_data_s *data, void *user_data); +/* HID device related type */ + + /** * @} */ diff --git a/include/wearable/bluetooth.h b/include/wearable/bluetooth.h index 1bb867b..15d3b19 100644 --- a/include/wearable/bluetooth.h +++ b/include/wearable/bluetooth.h @@ -2211,7 +2211,7 @@ int bt_opp_client_push_files(const char *remote_address, bt_opp_client_push_resp int bt_opp_client_cancel_push(void); /** - * @ingroup CAPI_NETWORK_BLUETOOTH_HID_MODULE + * @ingroup CAPI_NETWORK_BLUETOOTH_HID_HOST_MODULE * @brief Initializes the Bluetooth HID(Human Interface Device) Host. * @since_tizen 2.3.1 * @remarks This function must be called before Bluetooth HID Host starts. \n @@ -2233,7 +2233,7 @@ int bt_opp_client_cancel_push(void); int bt_hid_host_initialize(bt_hid_host_connection_state_changed_cb connection_cb, void *user_data); /** - * @ingroup CAPI_NETWORK_BLUETOOTH_HID_MODULE + * @ingroup CAPI_NETWORK_BLUETOOTH_HID_HOST_MODULE * @brief Deinitializes the Bluetooth HID(Human Interface Device) Host. * @since_tizen 2.3.1 * @return 0 on success, otherwise a negative error value. @@ -2248,7 +2248,7 @@ int bt_hid_host_initialize(bt_hid_host_connection_state_changed_cb connection_cb int bt_hid_host_deinitialize(void); /** - * @ingroup CAPI_NETWORK_BLUETOOTH_HID_MODULE + * @ingroup CAPI_NETWORK_BLUETOOTH_HID_HOST_MODULE * @brief Connects the remote device with the HID(Human Interface Device) service, asynchronously. * @since_tizen 2.3.1 * @privlevel public @@ -2272,7 +2272,7 @@ int bt_hid_host_deinitialize(void); int bt_hid_host_connect(const char *remote_address); /** - * @ingroup CAPI_NETWORK_BLUETOOTH_HID_MODULE + * @ingroup CAPI_NETWORK_BLUETOOTH_HID_HOST_MODULE * @brief Disconnects the remote device with the HID(Human Interface Device) service, asynchronously. * @since_tizen 2.3.1 * @privlevel public @@ -2296,6 +2296,213 @@ int bt_hid_host_connect(const char *remote_address); int bt_hid_host_disconnect(const char *remote_address); /** + * @ingroup CAPI_NETWORK_BLUETOOTH_HID_DEVICE_MODULE + * @brief Activates the Bluetooth HID Device role. + * @since_tizen 3.0 + * @privlevel pubilc + * @privilege %http://tizen.org/privilege/bluetooth + * + * @remarks This function must be called to register HID UUID. + * Only then a remote device is able to identify this one as a HID device. + * + * @param[in] callback The callback called when the connection state is changed + * @param[in] user_data The user data to be passed to the callback function + * @return 0 on success, otherwise a negative error value. + * @retval #BT_ERROR_NONE Successful + * @retval #BT_ERROR_NOT_INITIALIZED Not initialized + * @retval #BT_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #BT_ERROR_NOT_ENABLED Not enabled + * @retval #BT_ERROR_NOW_IN_PROGRESS Already activated + * @retval #BT_ERROR_OPERATION_FAILED Operation failed + * @retval #BT_ERROR_PERMISSION_DENIED Permission denied + * @retval #BT_ERROR_NOT_SUPPORTED Not supported + * + * @pre The Bluetooth service must be initialized with bt_initialize(). + * @see bt_initialize() + * @see bt_hid_device_deactivate() + */ +int bt_hid_device_activate(bt_hid_device_connection_state_changed_cb callback, void *user_data); + +/** + * @ingroup CAPI_NETWORK_BLUETOOTH_HID_DEVICE_MODULE + * @brief Deactivates the Bluetooth HID Device role. + * @since_tizen 3.0 + * @privlevel pubilc + * @privilege %http://tizen.org/privilege/bluetooth + * + * @remarks This function must be called to deregister the HID UUID. + * + * @return 0 on success, otherwise a negative error value. + * @retval #BT_ERROR_NONE Successful + * @retval #BT_ERROR_NOT_INITIALIZED Not initialized + * @retval #BT_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #BT_ERROR_NOT_ENABLED Not enabled + * @retval #BT_ERROR_NOT_IN_PROGRESS Not activated + * @retval #BT_ERROR_OPERATION_FAILED Operation failed + * @retval #BT_ERROR_PERMISSION_DENIED Permission denied + * @retval #BT_ERROR_NOT_SUPPORTED Not supported + * + * @pre The Bluetooth service must be initialized with bt_initialize(). + * @see bt_initialize() + * @see bt_hid_device_activate() + */ +int bt_hid_device_deactivate(void); + +/** + * @ingroup CAPI_NETWORK_BLUETOOTH_HID_DEVICE_MODULE + * @brief Initiates the HID device connection with the Device role, asynchronously. + * @since_tizen 3.0 + * @privlevel pubilc + * @privilege %http://tizen.org/privilege/bluetooth + * + * @remarks This function must be called to Initiate the HID device role connection. + * + * @param[in] remote_address The remote device's address. + + * @return 0 on success, otherwise a negative error value. + * @retval #BT_ERROR_NONE Successful + * @retval #BT_ERROR_NOT_INITIALIZED Not initialized + * @retval #BT_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #BT_ERROR_NOT_ENABLED Not enabled + * @retval #BT_ERROR_NOT_IN_PROGRESS Not activated + * @retval #BT_ERROR_OPERATION_FAILED Operation failed + * @retval #BT_ERROR_PERMISSION_DENIED Permission denied + * @retval #BT_ERROR_ALREADY_DONE Already connected + * @retval #BT_ERROR_NOT_SUPPORTED Not supported + * + * @pre The Bluetooth service must be initialized with bt_initialize(). + * @pre The local device must be bonded with the remote device by bt_device_create_bond(). + * @see bt_initialize() + * @see bt_hid_device_activate() + */ +int bt_hid_device_connect(const char *remote_address); + +/** + * @ingroup CAPI_NETWORK_BLUETOOTH_HID_DEVICE_MODULE + * @brief Disconnects from the HID Host device, asynchronously. + * @since_tizen 3.0 + * @privlevel pubilc + * @privilege %http://tizen.org/privilege/bluetooth + * + * @param[in] remote_address The remote device's address. + * @return 0 on success, otherwise a negative error value. + * @retval #BT_ERROR_NONE Successful + * @retval #BT_ERROR_NOT_INITIALIZED Not initialized + * @retval #BT_ERROR_NOT_ENABLED Not enabled + * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED Remote device is not connected + * @retval #BT_ERROR_OPERATION_FAILED Operation failed + * @retval #BT_ERROR_PERMISSION_DENIED Permission denied + * @retval #BT_ERROR_NOT_SUPPORTED Not supported + * + * @pre The Bluetooth service must be initialized with bt_initialize(). + * @see bt_initialize() + * @see bt_hid_device_connection_state_changed_cb() + */ +int bt_hid_device_disconnect(const char *remote_address); + +/** + * @ingroup CAPI_NETWORK_BLUETOOTH_HID_DEVICE_MODULE + * @brief Sends the mouse event data to the remote device. + * @since_tizen 3.0 + * @privlevel pubilc + * @privilege %http://tizen.org/privilege/bluetooth + * + * @param[in] remote_address The remote device's address. + * @param[in] mouse_data The mouse data to be passed to the remote device. + * @return 0 on success, otherwise a negative error value. + * @retval #BT_ERROR_NONE Successful + * @retval #BT_ERROR_NOT_INITIALIZED Not initialized + * @retval #BT_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #BT_ERROR_OPERATION_FAILED Operation failed + * @retval #BT_ERROR_PERMISSION_DENIED Permission denied + * @retval #BT_ERROR_NOT_SUPPORTED Not supported + * + * @pre The HID connection must be established. + * @see bt_hid_device_connection_state_changed_cb() + */ +int bt_hid_device_send_mouse_event(const char *remote_address, + const bt_hid_mouse_data_s *mouse_data); + +/** + * @ingroup CAPI_NETWORK_BLUETOOTH_HID_DEVICE_MODULE + * @brief Sends the keyboard event data to the remote device. + * @since_tizen 3.0 + * @privlevel pubilc + * @privilege %http://tizen.org/privilege/bluetooth + * + * @param[in] remote_address The remote device's address. + * @param[in] key_data The key data to be passed to the remote device + * @return 0 on success, otherwise a negative error value. + * @retval #BT_ERROR_NONE Successful + * @retval #BT_ERROR_NOT_INITIALIZED Not initialized + * @retval #BT_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #BT_ERROR_OPERATION_FAILED Operation failed + * @retval #BT_ERROR_PERMISSION_DENIED Permission denied + * @retval #BT_ERROR_NOT_SUPPORTED Not supported + * + * @pre The HID connection must be established. + * @see bt_hid_device_connection_state_changed_cb() + */ +int bt_hid_device_send_key_event(const char *remote_address, + const bt_hid_key_data_s *key_data); + +/** + * @ingroup CAPI_NETWORK_BLUETOOTH_HID_DEVICE_MODULE + * @brief Sets the callback called when the device receives data from the HID Host. + * @since_tizen 3.0 + * + * @param[in] callback The callback function to be set when data is received. + * @param[in] user_data The user data to be passed to the callback. + * @retval #BT_ERROR_NONE Successful + * @retval #BT_ERROR_NOT_INITIALIZED Not initialized + * @retval #BT_ERROR_INVALID_PARAMETER Invalid parameter + * @retval #BT_ERROR_NOT_SUPPORTED Not supported + * + * @see bt_hid_device_connection_state_changed_cb() + */ +int bt_hid_device_set_data_received_cb(bt_hid_device_data_received_cb callback, void *user_data); + +/** + * @ingroup CAPI_NETWORK_BLUETOOTH_HID_DEVICE_MODULE + * @brief Unsets the data received callback. + * @since_tizen 3.0 + * + * @retval #BT_ERROR_NONE Successful + * @retval #BT_ERROR_NOT_INITIALIZED Not initialized + * @retval #BT_ERROR_NOT_SUPPORTED Not supported + * + * @see bt_hid_device_connection_state_changed_cb() + */ +int bt_hid_device_unset_data_received_cb(void); + +/** + * @ingroup CAPI_NETWORK_BLUETOOTH_HID_DEVICE_MODULE + * @brief Responds to reports from the HID Host. + * @since_tizen 3.0 + * @privlevel pubilc + * @privilege %http://tizen.org/privilege/bluetooth + * + * @param[in] remote_address The remote device's address. + * @param[in] header_type The response header type + * @param[in] param_type The response parameter type + * @param[in] data The response data + * @param[in] data_len The length of the response data + * @retval #BT_ERROR_NONE Successful + * @retval #BT_ERROR_NOT_INITIALIZED Not initialized + * @retval #BT_ERROR_NOT_ENABLED Not enabled + * @retval #BT_ERROR_OPERATION_FAILED Operation failed + * @retval #BT_ERROR_PERMISSION_DENIED Permission denied + * @retval #BT_ERROR_NOT_SUPPORTED Not supported + * + * @pre The HID connection must be established. + * @see bt_hid_device_connection_state_changed_cb() + */ +int bt_hid_device_reply_to_report(const char *remote_address, + bt_hid_header_type_e header_type, + bt_hid_param_type_e param_type, + const char *data, unsigned int data_len); + +/** * @ingroup CAPI_NETWORK_BLUETOOTH_AUDIO_MODULE * @brief Initializes the Bluetooth profiles related with audio. * @since_tizen 2.3.1 diff --git a/include/wearable/bluetooth_internal.h b/include/wearable/bluetooth_internal.h index 8815bf3..5eef0e4 100644 --- a/include/wearable/bluetooth_internal.h +++ b/include/wearable/bluetooth_internal.h @@ -2912,203 +2912,6 @@ int bt_device_le_conn_update(const char *device_address, const bt_le_conn_update_s *parameters); /** - * @ingroup CAPI_NETWORK_BLUETOOTH_HID_MODULE - * @brief Registers the method for HID Device role - * @since_tizen 2.3.1 - * @privlevel platform - * @privilege %http://tizen.org/privilege/bluetooth.admin - * - * @remarks This function must be called to register HID UUID - * then only remote device could be able identify this one as HID device - * - * @param[in] callback The callback called when the connection state is changed - * @param[in] user_data The user data to be passed to the callback function - * @return 0 on success, otherwise a negative error value. - * @retval #BT_ERROR_NONE Successful - * @retval #BT_ERROR_NOT_INITIALIZED Not initialized - * @retval #BT_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #BT_ERROR_NOT_ENABLED Not enabled - * @retval #BT_ERROR_NOW_IN_PROGRESS Already activated - * @retval #BT_ERROR_OPERATION_FAILED Operation failed - * @retval #BT_ERROR_PERMISSION_DENIED Permission denied - * @retval #BT_ERROR_NOT_SUPPORTED Not supported - * - * @pre The Bluetooth service must be initialized with bt_initialize(). - * @see bt_initialize() - * @see bt_hid_device_deactivate() - */ -int bt_hid_device_activate(bt_hid_device_connection_state_changed_cb callback, void *user_data); - -/** - * @ingroup CAPI_NETWORK_BLUETOOTH_HID_MODULE - * @brief Unregisters the method for HID Device role - * @since_tizen 2.3.1 - * @privlevel platform - * @privilege %http://tizen.org/privilege/bluetooth.admin - * - * @remarks This function must be called to deregister HID UUID - * - * @param[in] socket_fd on which uuid need to be deregistered. - * @return 0 on success, otherwise a negative error value. - * @retval #BT_ERROR_NONE Successful - * @retval #BT_ERROR_NOT_INITIALIZED Not initialized - * @retval #BT_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #BT_ERROR_NOT_ENABLED Not enabled - * @retval #BT_ERROR_NOT_IN_PROGRESS Not activated - * @retval #BT_ERROR_OPERATION_FAILED Operation failed - * @retval #BT_ERROR_PERMISSION_DENIED Permission denied - * - * @pre The Bluetooth service must be initialized with bt_initialize(). - * @see bt_initialize() - * @see bt_hid_device_activate() - */ -int bt_hid_device_deactivate(void); - -/** - * @ingroup CAPI_NETWORK_BLUETOOTH_HID_MODULE - * @brief Initiates HID device Connection with device role - * @since_tizen 2.3.1 - * @privlevel platform - * @privilege %http://tizen.org/privilege/bluetooth.admin - * - * @remarks This function must be called to Initiate Hid device role connection - * - * @param[in] remote_address device address of remote device. - * @return 0 on success, otherwise a negative error value. - * @retval #BT_ERROR_NONE Successful - * @retval #BT_ERROR_NOT_INITIALIZED Not initialized - * @retval #BT_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #BT_ERROR_NOT_ENABLED Not enabled - * @retval #BT_ERROR_NOT_IN_PROGRESS Not activated - * @retval #BT_ERROR_OPERATION_FAILED Operation failed - * @retval #BT_ERROR_PERMISSION_DENIED Permission denied - * @retval #BT_ERROR_ALREADY_DONE Already connected - * - * @pre The Bluetooth service must be initialized with bt_initialize(). - * @see bt_initialize() - * @see bt_hid_device_activate() - */ -int bt_hid_device_connect(const char *remote_address); - -/** - * @ingroup CAPI_NETWORK_BLUETOOTH_HID_MODULE - * @brief Disconnects the connection with HID Host device. - * @since_tizen 2.3.1 - * @privlevel platform - * @privilege %http://tizen.org/privilege/bluetooth.admin - * - * @param[in] remote_address device address of remote device. - * @return 0 on success, otherwise a negative error value. - * @retval #BT_ERROR_NONE Successful - * @retval #BT_ERROR_NOT_INITIALIZED Not initialized - * @retval #BT_ERROR_NOT_ENABLED Not enabled - * @retval #BT_ERROR_REMOTE_DEVICE_NOT_CONNECTED Remote device is not connected - * @retval #BT_ERROR_OPERATION_FAILED Operation failed - * @retval #BT_ERROR_PERMISSION_DENIED Permission denied - * - * @pre The Bluetooth service must be initialized with bt_initialize(). - * @see bt_initialize() - * @see bt_hid_device_connection_state_changed_cb() - */ -int bt_hid_device_disconnect(const char *remote_address); - -/** - * @ingroup CAPI_NETWORK_BLUETOOTH_HID_MODULE - * @brief Sends the mouse event data. - * @since_tizen 2.3.1 - * @privlevel platform - * @privilege %http://tizen.org/privilege/bluetooth.admin - * - * @param[in] remote_address device address of remote device. - * @param[in] mouse_data mouse data that need to be passed to remote device - * @return 0 on success, otherwise a negative error value. - * @retval #BT_ERROR_NONE Successful - * @retval #BT_ERROR_NOT_INITIALIZED Not initialized - * @retval #BT_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #BT_ERROR_OPERATION_FAILED Operation failed - * @retval #BT_ERROR_PERMISSION_DENIED Permission denied - * - * @pre The HID connection must be established. - * @see bt_hid_device_connection_state_changed_cb() - */ -int bt_hid_device_send_mouse_event(const char *remote_address, - const bt_hid_mouse_data_s *mouse_data); - -/** - * @ingroup CAPI_NETWORK_BLUETOOTH_HID_MODULE - * @brief Sends the keyboard event data. - * @since_tizen 2.3.1 - * @privlevel platform - * @privilege %http://tizen.org/privilege/bluetooth.admin - * - * @param[in] remote_address device address of remote device. - * @param[in] key_data key data the need to be passed to remote device - * @return 0 on success, otherwise a negative error value. - * @retval #BT_ERROR_NONE Successful - * @retval #BT_ERROR_NOT_INITIALIZED Not initialized - * @retval #BT_ERROR_INVALID_PARAMETER Invalid parameter - * @retval #BT_ERROR_OPERATION_FAILED Operation failed - * @retval #BT_ERROR_PERMISSION_DENIED Permission denied - * - * @pre The HID connection must be established. - * @see bt_hid_device_connection_state_changed_cb() - */ -int bt_hid_device_send_key_event(const char *remote_address, - const bt_hid_key_data_s *key_data); - -/** - * @ingroup CAPI_NETWORK_BLUETOOTH_HID_MODULE - * @brief Sets the callback when device gets some data from HID Host. - * @since_tizen 2.3.1 - * - * @param[in] callback callback function to be set when data is received. - * @param[in] user_data data from application which will be provided in callback. - * @retval #BT_ERROR_NONE Successful - * @retval #BT_ERROR_NOT_INITIALIZED Not initialized - * @retval #BT_ERROR_INVALID_PARAMETER Invalid parameter - * - * @see bt_hid_device_connection_state_changed_cb() - */ -int bt_hid_device_set_data_received_cb(bt_hid_device_data_received_cb callback, void *user_data); - -/** - * @ingroup CAPI_NETWORK_BLUETOOTH_HID_MODULE - * @brief Unsets the callback when device gets some data from HID Host. - * @since_tizen 2.3.1 - * - * @retval #BT_ERROR_NONE Successful - * @retval #BT_ERROR_NOT_INITIALIZED Not initialized - * - * @see bt_hid_device_connection_state_changed_cb() - */ -int bt_hid_device_unset_data_received_cb(void); - -/** - * @ingroup CAPI_NETWORK_BLUETOOTH_HID_MODULE - * @brief Responds to the reports from HID Host. - * @since_tizen 2.3.1 - * @privlevel platform - * @privilege %http://tizen.org/privilege/bluetooth.admin - * - * @param[in] remote_address device address of remote device. - * @param[in] htype Header type to be there in response - * @param[in] ptype Parameter type to be there in response. - * @param[in] data Data to be present in data payload of response. - * @param[in] data_len The length of the response data - * @retval #BT_ERROR_NONE Successful - * @retval #BT_ERROR_NOT_INITIALIZED Not initialized - * @retval #BT_ERROR_NOT_ENABLED Not enabled - * @retval #BT_ERROR_OPERATION_FAILED Operation failed - * @retval #BT_ERROR_PERMISSION_DENIED Permission denied - * - * @pre The HID connection must be established. - * @see bt_hid_device_connection_state_changed_cb() - */ -int bt_hid_device_reply_to_report(const char *remote_address, - bluetooth_hid_header_type_t htype, bluetooth_hid_param_type_t ptype, - const char *data, unsigned int data_len); - -/** * @ingroup CAPI_NETWORK_BLUETOOTH_DPM_MODULE * @brief Sets Restriction for BT mode(BT allowed or not). * @since_tizen 3.0 diff --git a/include/wearable/bluetooth_type.h b/include/wearable/bluetooth_type.h index c7538f9..e9f7285 100644 --- a/include/wearable/bluetooth_type.h +++ b/include/wearable/bluetooth_type.h @@ -1447,7 +1447,7 @@ typedef void (*bt_avrcp_shuffle_mode_changed_cb) (bt_avrcp_shuffle_mode_e shuffl typedef void (*bt_avrcp_scan_mode_changed_cb) (bt_avrcp_scan_mode_e scan, void *user_data); /** - * @ingroup CAPI_NETWORK_BLUETOOTH_HID_MODULE + * @ingroup CAPI_NETWORK_BLUETOOTH_HID_HOST_MODULE * @brief Called when the connection state is changed. * @since_tizen 2.3.1 * @@ -1611,39 +1611,76 @@ typedef void (*bt_nap_connection_state_changed_cb) (bool connected, const char * */ typedef void (*bt_panu_connection_state_changed_cb) (int result, bool connected, const char *remote_address, bt_panu_service_type_e type, void *user_data); -/* HID device related type */ +/** + * @ingroup CAPI_NETWORK_BLUETOOTH_HID_DEVICE_MODULE + * @brief Enumerations of the Bluetooth HID mouse's button. + * @since_tizen 3.0 + */ +typedef enum { + BT_HID_MOUSE_BUTTON_NONE = 0x00, /**buttons != BT_HID_MOUSE_BUTTON_LEFT || + mouse_data->buttons != BT_HID_MOUSE_BUTTON_RIGHT || + mouse_data->buttons != BT_HID_MOUSE_BUTTON_MIDDLE) { + return BT_ERROR_INVALID_PARAMETER; + } + + if (mouse_data->axis_x > 127 || mouse_data->axis_x < -128) { + BT_ERR("Exceed range of axis_x"); + return -1; + } else if (mouse_data->axis_y > 127 || mouse_data->axis_y < -128) { + BT_ERR("Exceed range of axis_y"); + return -1; + } else if (mouse_data->padding > 127 || mouse_data->padding < -128) { + BT_ERR("Exceed range of padding"); + return -1; + } + ret = bluetooth_hid_device_send_mouse_event(remote_address, *(hid_send_mouse_event_t *)mouse_data); if (ret <= 0) { @@ -290,8 +307,8 @@ int bt_hid_device_send_key_event(const char *remote_address, } int bt_hid_device_reply_to_report(const char *remote_address, - bluetooth_hid_header_type_t htype, - bluetooth_hid_param_type_t ptype, + bt_hid_header_type_e header_type, + bt_hid_param_type_e param_type, const char *data, unsigned int data_len) { int ret; @@ -299,8 +316,8 @@ int bt_hid_device_reply_to_report(const char *remote_address, BT_CHECK_INIT_STATUS(); BT_CHECK_INPUT_PARAMETER(remote_address); - ret = bluetooth_hid_device_reply_to_report(remote_address, htype, - ptype, data, data_len); + ret = bluetooth_hid_device_reply_to_report(remote_address, header_type, + param_type, data, data_len); if (ret <= 0) { if (ret == -1) { /* write fail case */ diff --git a/test/bt_unit_test.c b/test/bt_unit_test.c index 363c128..8ad5844 100644 --- a/test/bt_unit_test.c +++ b/test/bt_unit_test.c @@ -1653,10 +1653,10 @@ static void __bt_hid_device_data_received_cb(const bt_hid_device_received_data_s return; } TC_PRT("Address: %s", data->address); - TC_PRT("Type: %d", data->type); - TC_PRT("Param: %d", data->param); + TC_PRT("Type: %d", data->header_type); + TC_PRT("Param_type: %d", data->param_type); - switch (data->type) { + switch (data->header_type) { case BT_HID_HEADER_HANDSHAKE: TC_PRT("HANDSHAKE data"); break; @@ -1672,7 +1672,7 @@ static void __bt_hid_device_data_received_cb(const bt_hid_device_received_data_s /* Will send character 'a' */ char pressedkey[8] = { 4, 0, 0, 0, 0, 0, 0, 0 }; memcpy(send_data.key, pressedkey, 8); - send_data.modify = 0; + send_data.modifier = 0; if (data->data[1] == 0x02) { ret = bt_hid_device_reply_to_report(remote_addr, BT_HID_HEADER_GET_REPORT, @@ -1719,7 +1719,7 @@ static void __bt_hid_device_data_received_cb(const bt_hid_device_received_data_s break; } - switch (data->param) { + switch (data->param_type) { case BT_HID_PARAM_DATA_RTYPE_INPUT: TC_PRT("Input Report"); break; @@ -7263,8 +7263,8 @@ int test_input_callback(void *data) bt_hid_mouse_data_s send_data; int i; - send_data.button = 1; - send_data.axis_z = 0x00; + send_data.buttons = 1; + send_data.padding = BT_HID_MOUSE_BUTTON_LEFT; send_data.axis_x = 10; send_data.axis_y = 0; @@ -7339,7 +7339,7 @@ int test_input_callback(void *data) char pressedkey[8] = { 4, 0, 0, 0, 0, 0, 0, 0 }; char pressedkey1[8] = { 0, 0, 0, 0, 0, 0, 0, 0 }; memcpy(send_data.key, pressedkey, 8); - send_data.modify = 0; + send_data.modifier = 0; ret = bt_hid_device_send_key_event( remote_addr, &send_data); TC_PRT("returns %d\n", ret); -- 2.7.4