bluetooth.h (2161B)
1 /* 2 * Copyright 2022 3 * 4 * This program is free software: you can redistribute it and/or modify 5 * it under the terms of the GNU General Public License as published by 6 * the Free Software Foundation, either version 2 of the License, or 7 * (at your option) any later version. 8 * 9 * This program is distributed in the hope that it will be useful, 10 * but WITHOUT ANY WARRANTY; without even the implied warranty of 11 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 12 * GNU General Public License for more details. 13 * 14 * You should have received a copy of the GNU General Public License 15 * along with this program. If not, see <http://www.gnu.org/licenses/>. 16 */ 17 18 #pragma once 19 20 #include <stdint.h> 21 #include "report.h" 22 23 /** 24 * \brief Initialize the Bluetooth system. 25 */ 26 void bluetooth_init(void); 27 28 /** 29 * \brief Perform housekeeping tasks. 30 */ 31 void bluetooth_task(void); 32 33 /** 34 * \brief Detects if Bluetooth is connected. 35 * 36 * \return `true` if connected, `false` otherwise. 37 */ 38 bool bluetooth_is_connected(void); 39 40 /** 41 * \brief Detects if `bluetooth_send_nkro` should be used over `bluetooth_send_keyboard`. 42 */ 43 bool bluetooth_can_send_nkro(void); 44 45 /** 46 * \brief Get current LED state. 47 */ 48 uint8_t bluetooth_keyboard_leds(void); 49 50 /** 51 * \brief Send a keyboard report. 52 * 53 * \param report The keyboard report to send. 54 */ 55 void bluetooth_send_keyboard(report_keyboard_t *report); 56 57 /** 58 * \brief Send a nkro report. 59 * 60 * \param report The nkro report to send. 61 */ 62 void bluetooth_send_nkro(report_nkro_t *report); 63 64 /** 65 * \brief Send a mouse report. 66 * 67 * \param report The mouse report to send. 68 */ 69 void bluetooth_send_mouse(report_mouse_t *report); 70 71 /** 72 * \brief Send a consumer usage. 73 * 74 * \param usage The consumer usage to send. 75 */ 76 void bluetooth_send_consumer(uint16_t usage); 77 78 /** 79 * \brief Send a system usage. 80 * 81 * \param usage The system usage to send. 82 */ 83 void bluetooth_send_system(uint16_t usage); 84 85 /** 86 * \brief Send a raw_hid packet. 87 * 88 * \param data A pointer to the buffer to be sent. Always 32 bytes in length. 89 * \param length The length of the buffer. Always 32. 90 */ 91 void bluetooth_send_raw_hid(uint8_t *data, uint8_t length);