arduino-audio-tools
Loading...
Searching...
No Matches
RadioHeadStream.h
Go to the documentation of this file.
1#pragma once
3#include "RHGenericDriver.h" // https://www.airspayce.com/mikem/arduino/RadioHead/
4
5namespace audio_tools {
6
19class ReadioHeadStream : public Stream {
20 public:
22
23 void setDriver(RHGenericDriver& driver) { p_driver = &driver; }
24
25 bool begin() {
26 if (p_driver == nullptr) return false;
27 p_driver->setMode(mode == RX_MODE ? RHGenericDriver::RHMode::RHModeRx
28 : RHGenericDriver::RHMode::RHModeTx);
29 return p_driver->init();
30 }
31
32 void end() { p_driver->setMode(RHGenericDriver::RHMode::RHModeSleep); }
33
34 int available() override {
35 if (mode == TX_MODE) return 0;
36 return p_driver->available() ? p_driver->maxMessageLength() : 0;
37 }
38
39 size_t readBytes(uint8_t* data, size_t len) override {
40 if (mode == TX_MODE) return 0;
41 int open = len;
42 int processed = 0;
43 while (open > 0) {
45 if (av == 0) break;
46 p_driver->recv(data + processed, &av);
47 open -= av;
48 processed += av;
49 }
50 return processed;
51 }
52
53 int availableForWrite() override {
54 if (mode == RX_MODE) return 0;
55 return p_driver->maxMessageLength();
56 }
57
58 size_t write(const uint8_t* data, size_t len) override {
59 if (mode == RX_MODE) return 0;
60 int open = len;
61 int processed = 0;
62 while (open > 0) {
63 int av = available();
64 if (av == 0) break;
65 p_driver->send(data + processed, av);
66 open -= av;
67 processed += av;
68 }
69 return processed;
70 }
71
72 protected:
75};
76
77} // namespace audio_tools
Definition Arduino.h:136
Arduino Stream which is using the RadioHead library to send and receive data. We use the river API di...
Definition RadioHeadStream.h:19
size_t readBytes(uint8_t *data, size_t len) override
Definition RadioHeadStream.h:39
bool begin()
Definition RadioHeadStream.h:25
int available() override
Definition RadioHeadStream.h:34
size_t write(const uint8_t *data, size_t len) override
Definition RadioHeadStream.h:58
int availableForWrite() override
Definition RadioHeadStream.h:53
void end()
Definition RadioHeadStream.h:32
RxTxMode mode
Definition RadioHeadStream.h:74
void setDriver(RHGenericDriver &driver)
Definition RadioHeadStream.h:23
ReadioHeadStream(RHGenericDriver &driver)
Definition RadioHeadStream.h:21
RHGenericDriver * p_driver
Definition RadioHeadStream.h:73
RxTxMode
The Microcontroller is the Audio Source (TX_MODE) or Audio Sink (RX_MODE). RXTX_MODE is Source and Si...
Definition AudioTypes.h:26
@ TX_MODE
Definition AudioTypes.h:26
@ RX_MODE
Definition AudioTypes.h:26
Generic Implementation of sound input and output for desktop environments using portaudio.
Definition AudioCodecsBase.h:10
size_t writeData(Print *p_out, T *data, int samples, int maxSamples=512)
Definition AudioTypes.h:508