hid_device.c (b56e8b561bce450f5cd8828749be22a67c2bd9ec) | hid_device.c (6c8af51cd8ad0a0d53fc3934daf633474c3bec06) |
---|---|
1/* 2 * Copyright (C) 2014 BlueKitchen GmbH 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions 6 * are met: 7 * 8 * 1. Redistributions of source code must retain the above copyright --- 133 unchanged lines hidden (view full) --- 142 143static hid_device_t * hid_device_get_instance_for_hid_cid(uint16_t hid_cid){ 144 if (hid_device_singleton.cid == hid_cid){ 145 return &hid_device_singleton; 146 } 147 return NULL; 148} 149 | 1/* 2 * Copyright (C) 2014 BlueKitchen GmbH 3 * 4 * Redistribution and use in source and binary forms, with or without 5 * modification, are permitted provided that the following conditions 6 * are met: 7 * 8 * 1. Redistributions of source code must retain the above copyright --- 133 unchanged lines hidden (view full) --- 142 143static hid_device_t * hid_device_get_instance_for_hid_cid(uint16_t hid_cid){ 144 if (hid_device_singleton.cid == hid_cid){ 145 return &hid_device_singleton; 146 } 147 return NULL; 148} 149 |
150static void hid_device_setup_instance(hid_device_t *hid_device, const uint8_t *bd_addr) { 151 (void)memcpy(hid_device->bd_addr, bd_addr, 6); 152 hid_device->cid = hid_device_get_next_cid(); 153 // reset state 154 hid_device->protocol_mode = HID_PROTOCOL_MODE_REPORT; 155 hid_device->con_handle = HCI_CON_HANDLE_INVALID; 156 hid_device->incoming = 0; 157 hid_device->connected = 0; 158 hid_device->control_cid = 0; 159 hid_device->interrupt_cid = 0; 160} 161 |
|
150static hid_device_t * hid_device_provide_instance_for_bd_addr(bd_addr_t bd_addr){ 151 if (!hid_device_singleton.cid){ | 162static hid_device_t * hid_device_provide_instance_for_bd_addr(bd_addr_t bd_addr){ 163 if (!hid_device_singleton.cid){ |
152 (void)memcpy(hid_device_singleton.bd_addr, bd_addr, 6); 153 hid_device_singleton.cid = hid_device_get_next_cid(); 154 hid_device_singleton.protocol_mode = HID_PROTOCOL_MODE_REPORT; 155 hid_device_singleton.con_handle = HCI_CON_HANDLE_INVALID; | 164 hid_device_setup_instance(&hid_device_singleton, bd_addr); |
156 } 157 return &hid_device_singleton; 158} 159 160static hid_device_t * hid_device_create_instance(void){ 161 162 return &hid_device_singleton; 163} --- 761 unchanged lines hidden (view full) --- 925 * @result status 926 */ 927uint8_t hid_device_connect(bd_addr_t addr, uint16_t * hid_cid){ 928 hid_device_t * hid_device = hid_device_create_instance(); 929 if (!hid_device){ 930 log_error("hid_device_connect: could not create a hid device instace"); 931 return BTSTACK_MEMORY_ALLOC_FAILED; 932 } | 165 } 166 return &hid_device_singleton; 167} 168 169static hid_device_t * hid_device_create_instance(void){ 170 171 return &hid_device_singleton; 172} --- 761 unchanged lines hidden (view full) --- 934 * @result status 935 */ 936uint8_t hid_device_connect(bd_addr_t addr, uint16_t * hid_cid){ 937 hid_device_t * hid_device = hid_device_create_instance(); 938 if (!hid_device){ 939 log_error("hid_device_connect: could not create a hid device instace"); 940 return BTSTACK_MEMORY_ALLOC_FAILED; 941 } |
933 // assign hic_cid 934 *hid_cid = hid_device_get_next_cid(); | |
935 | 942 |
936 // store address 937 (void)memcpy(hid_device->bd_addr, addr, 6); | 943 // setup instance 944 hid_device_setup_instance(hid_device, addr); 945 *hid_cid = hid_device->cid; |
938 | 946 |
939 // reset state 940 hid_device->cid = *hid_cid; 941 hid_device->incoming = 0; 942 hid_device->connected = 0; 943 hid_device->control_cid = 0; 944 hid_device->interrupt_cid = 0; 945 hid_device->con_handle = HCI_CON_HANDLE_INVALID; 946 | |
947 // create l2cap control using fixed HID L2CAP PSM 948 log_info("Create outgoing HID Control"); 949 uint8_t status = l2cap_create_channel(packet_handler, hid_device->bd_addr, PSM_HID_CONTROL, 48, &hid_device->control_cid); 950 return status; 951} 952 953/* 954 * @brief Disconnect from HID Host --- 50 unchanged lines hidden --- | 947 // create l2cap control using fixed HID L2CAP PSM 948 log_info("Create outgoing HID Control"); 949 uint8_t status = l2cap_create_channel(packet_handler, hid_device->bd_addr, PSM_HID_CONTROL, 48, &hid_device->control_cid); 950 return status; 951} 952 953/* 954 * @brief Disconnect from HID Host --- 50 unchanged lines hidden --- |