qmk_firmware

QMK firmware for my keyboards (Corne, Sweep Ferris) and trackball (Ploopy Adept)
Log | Files | Refs | Submodules | LICENSE

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);