arduino-audio-tools
Loading...
Searching...
No Matches
RadioHeadStream.h
Go to the documentation of this file.
1#pragma once
3#include "RHGenericDriver.h"
4
5namespace audio_tools {
6
14class ReadioHeadStream : public Stream {
15 public:
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) {
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:
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
size_t readBytes(uint8_t *data, size_t len) override
Definition RadioHeadStream.h:34
bool begin()
Definition RadioHeadStream.h:20
int available() override
Definition RadioHeadStream.h:29
size_t write(const uint8_t *data, size_t len) override
Definition RadioHeadStream.h:53
int availableForWrite() override
Definition RadioHeadStream.h:48
void end()
Definition RadioHeadStream.h:27
RxTxMode mode
Definition RadioHeadStream.h:69
void setDriver(RHGenericDriver &driver)
Definition RadioHeadStream.h:18
ReadioHeadStream(RHGenericDriver &driver)
Definition RadioHeadStream.h:16
RHGenericDriver * p_driver
Definition RadioHeadStream.h:68
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:30
@ TX_MODE
Definition AudioTypes.h:30
@ RX_MODE
Definition AudioTypes.h:30
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:512