Du kan inte välja fler än 25 ämnen Ämnen måste starta med en bokstav eller siffra, kan innehålla bindestreck ('-') och vara max 35 tecken långa.

59 lines
1.5KB

  1. #ifndef USBaudio_h_
  2. #define USBaudio_h_
  3. #include "usb_desc.h"
  4. #ifdef AUDIO_INTERFACE
  5. #ifdef __cplusplus
  6. extern "C" {
  7. #endif
  8. extern uint16_t usb_audio_receive_buffer[];
  9. extern uint16_t usb_audio_transmit_buffer[];
  10. extern void usb_audio_receive_callback(unsigned int len);
  11. extern unsigned int usb_audio_transmit_callback(void);
  12. extern uint32_t usb_audio_sync_feedback;
  13. #ifdef __cplusplus
  14. }
  15. #include "AudioStream.h"
  16. class AudioInputUSB : public AudioStream
  17. {
  18. public:
  19. AudioInputUSB(void) : AudioStream(0, NULL) { begin(); }
  20. virtual void update(void);
  21. void begin(void);
  22. friend void usb_audio_receive_callback(unsigned int len);
  23. private:
  24. static bool update_responsibility;
  25. static audio_block_t *incoming_left;
  26. static audio_block_t *incoming_right;
  27. static audio_block_t *ready_left;
  28. static audio_block_t *ready_right;
  29. static uint16_t incoming_count;
  30. static uint8_t receive_flag;
  31. };
  32. class AudioOutputUSB : public AudioStream
  33. {
  34. public:
  35. AudioOutputUSB(void) : AudioStream(2, inputQueueArray) { begin(); }
  36. virtual void update(void);
  37. void begin(void);
  38. friend unsigned int usb_audio_transmit_callback(void);
  39. private:
  40. static bool transmitting;
  41. static bool update_responsibility;
  42. static audio_block_t *left_1st;
  43. static audio_block_t *left_2nd;
  44. static audio_block_t *right_1st;
  45. static audio_block_t *right_2nd;
  46. static uint16_t offset_1st;
  47. static uint16_t outgoing_count;
  48. audio_block_t *inputQueueArray[2];
  49. };
  50. #endif // __cplusplus
  51. #endif // AUDIO_INTERFACE
  52. #endif // USBaudio_h_