xref: /btstack/src/classic/hid_host.h (revision 63bf37cdf290a24499821ad093bb095cca27d8e2)
1*63bf37cdSMilanka Ringwald /*
2*63bf37cdSMilanka Ringwald  * Copyright (C) 2020 BlueKitchen GmbH
3*63bf37cdSMilanka Ringwald  *
4*63bf37cdSMilanka Ringwald  * Redistribution and use in source and binary forms, with or without
5*63bf37cdSMilanka Ringwald  * modification, are permitted provided that the following conditions
6*63bf37cdSMilanka Ringwald  * are met:
7*63bf37cdSMilanka Ringwald  *
8*63bf37cdSMilanka Ringwald  * 1. Redistributions of source code must retain the above copyright
9*63bf37cdSMilanka Ringwald  *    notice, this list of conditions and the following disclaimer.
10*63bf37cdSMilanka Ringwald  * 2. Redistributions in binary form must reproduce the above copyright
11*63bf37cdSMilanka Ringwald  *    notice, this list of conditions and the following disclaimer in the
12*63bf37cdSMilanka Ringwald  *    documentation and/or other materials provided with the distribution.
13*63bf37cdSMilanka Ringwald  * 3. Neither the name of the copyright holders nor the names of
14*63bf37cdSMilanka Ringwald  *    contributors may be used to endorse or promote products derived
15*63bf37cdSMilanka Ringwald  *    from this software without specific prior written permission.
16*63bf37cdSMilanka Ringwald  * 4. Any redistribution, use, or modification is done solely for
17*63bf37cdSMilanka Ringwald  *    personal benefit and not for any commercial purpose or for
18*63bf37cdSMilanka Ringwald  *    monetary gain.
19*63bf37cdSMilanka Ringwald  *
20*63bf37cdSMilanka Ringwald  * THIS SOFTWARE IS PROVIDED BY BLUEKITCHEN GMBH AND CONTRIBUTORS
21*63bf37cdSMilanka Ringwald  * ``AS IS'' AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
22*63bf37cdSMilanka Ringwald  * LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS
23*63bf37cdSMilanka Ringwald  * FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL MATTHIAS
24*63bf37cdSMilanka Ringwald  * RINGWALD OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT,
25*63bf37cdSMilanka Ringwald  * INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING,
26*63bf37cdSMilanka Ringwald  * BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS
27*63bf37cdSMilanka Ringwald  * OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED
28*63bf37cdSMilanka Ringwald  * AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
29*63bf37cdSMilanka Ringwald  * OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF
30*63bf37cdSMilanka Ringwald  * THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
31*63bf37cdSMilanka Ringwald  * SUCH DAMAGE.
32*63bf37cdSMilanka Ringwald  *
33*63bf37cdSMilanka Ringwald  * Please inquire about commercial licensing options at
34*63bf37cdSMilanka Ringwald  * [email protected]
35*63bf37cdSMilanka Ringwald  *
36*63bf37cdSMilanka Ringwald  */
37*63bf37cdSMilanka Ringwald 
38*63bf37cdSMilanka Ringwald #ifndef HID_HOST_H
39*63bf37cdSMilanka Ringwald #define HID_HOST_H
40*63bf37cdSMilanka Ringwald 
41*63bf37cdSMilanka Ringwald #include <stdint.h>
42*63bf37cdSMilanka Ringwald #include "btstack_defines.h"
43*63bf37cdSMilanka Ringwald #include "bluetooth.h"
44*63bf37cdSMilanka Ringwald #include "btstack_hid_parser.h"
45*63bf37cdSMilanka Ringwald #include "classic/hid.h"
46*63bf37cdSMilanka Ringwald 
47*63bf37cdSMilanka Ringwald #if defined __cplusplus
48*63bf37cdSMilanka Ringwald extern "C" {
49*63bf37cdSMilanka Ringwald #endif
50*63bf37cdSMilanka Ringwald 
51*63bf37cdSMilanka Ringwald /* API_START */
52*63bf37cdSMilanka Ringwald /**
53*63bf37cdSMilanka Ringwald  * @brief Set up HID Host
54*63bf37cdSMilanka Ringwald  * @param boot_protocol_mode_supported
55*63bf37cdSMilanka Ringwald  * @param hid_descriptor_storage
56*63bf37cdSMilanka Ringwald  * @param hid_descriptor_storage_len
57*63bf37cdSMilanka Ringwald  */
58*63bf37cdSMilanka Ringwald void hid_host_init(const uint8_t * hid_descriptor_storage, uint16_t hid_descriptor_storage_len);
59*63bf37cdSMilanka Ringwald 
60*63bf37cdSMilanka Ringwald /**
61*63bf37cdSMilanka Ringwald  * @brief Register callback for the HID Device Host.
62*63bf37cdSMilanka Ringwald  * @param callback
63*63bf37cdSMilanka Ringwald  */
64*63bf37cdSMilanka Ringwald void hid_host_register_packet_handler(btstack_packet_handler_t callback);
65*63bf37cdSMilanka Ringwald 
66*63bf37cdSMilanka Ringwald /*
67*63bf37cdSMilanka Ringwald  * @brief Create HID connection to HID Host
68*63bf37cdSMilanka Ringwald  * @param addr
69*63bf37cdSMilanka Ringwald  * @param hid_cid to use for other commands
70*63bf37cdSMilanka Ringwald  * @result status
71*63bf37cdSMilanka Ringwald  */
72*63bf37cdSMilanka Ringwald uint8_t hid_host_connect(bd_addr_t addr, hid_protocol_mode_t protocol_mode, uint16_t * hid_cid);
73*63bf37cdSMilanka Ringwald 
74*63bf37cdSMilanka Ringwald /*
75*63bf37cdSMilanka Ringwald  * @brief Disconnect from HID Host
76*63bf37cdSMilanka Ringwald  * @param hid_cid
77*63bf37cdSMilanka Ringwald  */
78*63bf37cdSMilanka Ringwald void hid_host_disconnect(uint16_t hid_cid);
79*63bf37cdSMilanka Ringwald 
80*63bf37cdSMilanka Ringwald /**
81*63bf37cdSMilanka Ringwald  * @brief Request can send now event to send HID Report
82*63bf37cdSMilanka Ringwald  * Generates an HID_SUBEVENT_CAN_SEND_NOW subevent
83*63bf37cdSMilanka Ringwald  * @param hid_cid
84*63bf37cdSMilanka Ringwald  */
85*63bf37cdSMilanka Ringwald void hid_host_request_can_send_now_event(uint16_t hid_cid);
86*63bf37cdSMilanka Ringwald 
87*63bf37cdSMilanka Ringwald /**
88*63bf37cdSMilanka Ringwald  * @brief Send HID message on interrupt channel
89*63bf37cdSMilanka Ringwald  * @param hid_cid
90*63bf37cdSMilanka Ringwald  */
91*63bf37cdSMilanka Ringwald void hid_host_send_interrupt_message(uint16_t hid_cid, const uint8_t * message, uint16_t message_len);
92*63bf37cdSMilanka Ringwald 
93*63bf37cdSMilanka Ringwald /**
94*63bf37cdSMilanka Ringwald  * @brief Send HID message on control channel
95*63bf37cdSMilanka Ringwald  * @param hid_cid
96*63bf37cdSMilanka Ringwald  */
97*63bf37cdSMilanka Ringwald void hid_host_send_control_message(uint16_t hid_cid, const uint8_t * message, uint16_t message_len);
98*63bf37cdSMilanka Ringwald 
99*63bf37cdSMilanka Ringwald 
100*63bf37cdSMilanka Ringwald 
101*63bf37cdSMilanka Ringwald /* API_END */
102*63bf37cdSMilanka Ringwald 
103*63bf37cdSMilanka Ringwald 
104*63bf37cdSMilanka Ringwald #if defined __cplusplus
105*63bf37cdSMilanka Ringwald }
106*63bf37cdSMilanka Ringwald #endif
107*63bf37cdSMilanka Ringwald 
108*63bf37cdSMilanka Ringwald #endif
109