SatCat5
stream_buffer.h
1 // Copyright 2024-2025 The Aerospace Corporation.
3 // This file is a part of SatCat5, licensed under CERN-OHL-W v2 or later.
5 // PacketBuffer to StreamBuffer adapter.
6 
7 #pragma once
8 
9 extern "C"{
10  #include <FreeRTOS.h>
11  #include <stream_buffer.h>
12  #include <semphr.h>
13 };
14 
15 #include <satcat5/io_writeable.h>
16 #include <satcat5/io_readable.h>
17 #include <satcat5/pkt_buffer.h>
18 
19 namespace satcat5 {
20  namespace freertos {
28  , protected satcat5::io::EventListener {
29  public:
32  explicit StreamBuffer(
33  u8* txbuff,
34  unsigned txbytes,
35  StreamBufferHandle_t* stream_buff_handle,
36  SemaphoreHandle_t* stream_buff_semphr);
37 
38  private:
39  // Event Handler
41 
42  // Transmit Data
44 
45  // Stream Buffer & Semaphore
46  StreamBufferHandle_t* const m_handle;
47  SemaphoreHandle_t* const m_semphr;
48 
49  // Status
50  BaseType_t m_status;
51  };
52  } // namespace freertos
53 } // namespace satcat5
PacketBuffer to StreamBuffer adapter.
Definition: stream_buffer.h:28
void data_rcvd(satcat5::io::Readable *src)
The data_rcvd() callback is polled whenever data is available.
StreamBuffer(u8 *txbuff, unsigned txbytes, StreamBufferHandle_t *stream_buff_handle, SemaphoreHandle_t *stream_buff_semphr)
Constructor requires a working buffer, plus handles for the FreeRTOS StreamBuffer and Semaphore.
Event-handler interface for newly received data.
Definition: io_readable.h:43
The PacketBuffer class is a wrapper for a circular buffer, with optional logic to support retention o...
Definition: pkt_buffer.h:66
Abstract API for reading byte-streams and packets.
Definition: io_readable.h:68
Wrapper class for forwarding writes to another object.
Definition: io_writeable.h:218
"Readable" I/O interface core definitions
"Writeable" I/O interface core definitions