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.

70 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 "outputselect.h"
  15. #include "usb_util.h"
  16. #ifdef BLUETOOTH_BLUEFRUIT_LE
  17. # include "bluefruit_le.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)) void set_output_user(uint8_t output) {}
  33. /** \brief Auto Detect Output
  34. *
  35. * FIXME: Needs doc
  36. */
  37. uint8_t auto_detect_output(void) {
  38. if (usb_connected_state()) {
  39. return OUTPUT_USB;
  40. }
  41. #ifdef BLUETOOTH_BLUEFRUIT_LE
  42. if (bluefruit_le_is_connected()) {
  43. return OUTPUT_BLUETOOTH;
  44. }
  45. #endif
  46. #ifdef BLUETOOTH_ENABLE
  47. return OUTPUT_BLUETOOTH; // should check if BT is connected here
  48. #endif
  49. return OUTPUT_NONE;
  50. }
  51. /** \brief Where To Send
  52. *
  53. * FIXME: Needs doc
  54. */
  55. uint8_t where_to_send(void) {
  56. if (desired_output == OUTPUT_AUTO) {
  57. return auto_detect_output();
  58. }
  59. return desired_output;
  60. }