outputselect.c 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556
  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. #include "lufa.h"
  15. #include "outputselect.h"
  16. #ifdef MODULE_ADAFRUIT_BLE
  17. #include "adafruit_ble.h"
  18. #endif
  19. uint8_t desired_output = OUTPUT_DEFAULT;
  20. void set_output(uint8_t output) {
  21. set_output_user(output);
  22. desired_output = output;
  23. }
  24. __attribute__((weak))
  25. void set_output_user(uint8_t output) {
  26. }
  27. uint8_t auto_detect_output(void) {
  28. if (USB_DeviceState == DEVICE_STATE_Configured) {
  29. return OUTPUT_USB;
  30. }
  31. #ifdef MODULE_ADAFRUIT_BLE
  32. if (adafruit_ble_is_connected()) {
  33. return OUTPUT_BLUETOOTH;
  34. }
  35. #endif
  36. #ifdef BLUETOOTH_ENABLE
  37. return OUTPUT_BLUETOOTH; // should check if BT is connected here
  38. #endif
  39. return OUTPUT_NONE;
  40. }
  41. uint8_t where_to_send(void) {
  42. if (desired_output == OUTPUT_AUTO) {
  43. return auto_detect_output();
  44. }
  45. return desired_output;
  46. }