]> git.donarmstrong.com Git - qmk_firmware.git/blob - tmk_core/protocol/lufa/outputselect.c
Generate API docs from source code comments (#2491)
[qmk_firmware.git] / tmk_core / protocol / lufa / outputselect.c
1 /*
2 Copyright 2017 Priyadi Iman Nurcahyo
3 This program is free software: you can redistribute it and/or modify
4 it under the terms of the GNU General Public License as published by
5 the Free Software Foundation, either version 2 of the License, or
6 (at your option) any later version.
7 This program is distributed in the hope that it will be useful,
8 but WITHOUT ANY WARRANTY; without even the implied warranty of
9 MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
10 GNU General Public License for more details.
11 You should have received a copy of the GNU General Public License
12 along with this program.  If not, see <http://www.gnu.org/licenses/>.
13 */
14
15 #include "lufa.h"
16 #include "outputselect.h"
17 #ifdef MODULE_ADAFRUIT_BLE
18     #include "adafruit_ble.h"
19 #endif
20
21 uint8_t desired_output = OUTPUT_DEFAULT;
22
23 /** \brief Set Output
24  *
25  * FIXME: Needs doc
26  */
27 void set_output(uint8_t output) {
28     set_output_user(output);
29     desired_output = output;
30 }
31
32 /** \brief Set Output User
33  *
34  * FIXME: Needs doc
35  */
36 __attribute__((weak))
37 void set_output_user(uint8_t output) {
38 }
39
40 /** \brief Auto Detect Output
41  *
42  * FIXME: Needs doc
43  */
44 uint8_t auto_detect_output(void) {
45     if (USB_DeviceState == DEVICE_STATE_Configured) {
46         return OUTPUT_USB;
47     }
48
49 #ifdef MODULE_ADAFRUIT_BLE
50     if (adafruit_ble_is_connected()) {
51         return OUTPUT_BLUETOOTH;
52     }
53 #endif
54
55 #ifdef BLUETOOTH_ENABLE
56     return OUTPUT_BLUETOOTH; // should check if BT is connected here
57 #endif
58
59     return OUTPUT_NONE;
60 }
61
62 /** \brief Where To Send
63  *
64  * FIXME: Needs doc
65  */
66 uint8_t where_to_send(void) {
67     if (desired_output == OUTPUT_AUTO) {
68         return auto_detect_output();
69     }
70     return desired_output;
71 }
72