You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

72 lines
1.6 KiB

  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. /** \brief Set Output
  21. *
  22. * FIXME: Needs doc
  23. */
  24. void set_output(uint8_t output) {
  25. set_output_user(output);
  26. desired_output = output;
  27. }
  28. /** \brief Set Output User
  29. *
  30. * FIXME: Needs doc
  31. */
  32. __attribute__((weak))
  33. void set_output_user(uint8_t output) {
  34. }
  35. /** \brief Auto Detect Output
  36. *
  37. * FIXME: Needs doc
  38. */
  39. uint8_t auto_detect_output(void) {
  40. if (USB_DeviceState == DEVICE_STATE_Configured) {
  41. return OUTPUT_USB;
  42. }
  43. #ifdef MODULE_ADAFRUIT_BLE
  44. if (adafruit_ble_is_connected()) {
  45. return OUTPUT_BLUETOOTH;
  46. }
  47. #endif
  48. #ifdef BLUETOOTH_ENABLE
  49. return OUTPUT_BLUETOOTH; // should check if BT is connected here
  50. #endif
  51. return OUTPUT_NONE;
  52. }
  53. /** \brief Where To Send
  54. *
  55. * FIXME: Needs doc
  56. */
  57. uint8_t where_to_send(void) {
  58. if (desired_output == OUTPUT_AUTO) {
  59. return auto_detect_output();
  60. }
  61. return desired_output;
  62. }