arduino-audio-tools
All Classes Namespaces Files Functions Variables Typedefs Enumerations Friends Modules Pages
RadioHeadStream.h
1#pragma once
2#include "AudioTools/CoreAudio/BaseStream.h"
3#include "RHGenericDriver.h"
4
5namespace audio_tools {
6
14class ReadioHeadStream : public Stream {
15 public:
16 ReadioHeadStream(RHGenericDriver &driver) { setDriver(driver); }
17
18 void setDriver(RHGenericDriver &driver) { p_driver = &driver; }
19
20 bool begin() {
21 if (p_driver == nullptr) return false;
22 p_driver->setMode(mode == RX_MODE ? RHGenericDriver::RHMode::RHModeRx
23 : RHGenericDriver::RHMode::RHModeTx);
24 return p_driver->init();
25 }
26
27 void end() { p_driver->setMode(RHGenericDriver::RHMode::RHModeSleep); }
28
29 int available() override {
30 if (mode == TX_MODE) return 0;
31 return p_driver->available() ? p_driver->maxMessageLength() : 0;
32 }
33
34 size_t readBytes(uint8_t *data, size_t len) override {
35 if (mode == TX_MODE) return 0;
36 int open = len;
37 int processed = 0;
38 while (open > 0) {
39 uint8_t av = available();
40 if (av == 0) break;
41 p_driver->recv(data + processed, &av);
42 open -= av;
43 processed += av;
44 }
45 return processed;
46 }
47
48 int availableForWrite() override {
49 if (mode == RX_MODE) return 0;
50 return p_driver->maxMessageLength();
51 }
52
53 size_t write(const uint8_t *data, size_t len) override {
54 if (mode == RX_MODE) return 0;
55 int open = len;
56 int processed = 0;
57 while (open > 0) {
58 int av = available();
59 if (av == 0) break;
60 p_driver->send(data + processed, av);
61 open -= av;
62 processed += av;
63 }
64 return processed;
65 }
66
67 protected:
68 RHGenericDriver *p_driver = nullptr;
69 RxTxMode mode;
70};
71
72} // namespace audio_tools
Arduino Stream which is using the RadioHead library to send and receive data. We use the river API di...
Definition RadioHeadStream.h:14
Definition NoArduino.h:142
RxTxMode
The Microcontroller is the Audio Source (TX_MODE) or Audio Sink (RX_MODE). RXTX_MODE is Source and Si...
Definition AudioTypes.h:28
Generic Implementation of sound input and output for desktop environments using portaudio.
Definition AudioCodecsBase.h:10