31 #define ASCII_SOH 0x01
32 #define ASCII_STX 0x02
33 #define ASCII_ETX 0x03
34 #define ASCII_EOT 0x04
35 #define ASCII_ENQ 0x05
36 #define ASCII_ACK 0x06
38 #define ASCII_TAB 0x09
41 #define ASCII_XON 0x11
42 #define ASCII_XOFF 0x13
43 #define ASCII_NAK 0x15
44 #define ASCII_EOF 0x1A
45 #define ASCII_CAN 0x18
47 #define ASCII_ESC 0x1B
48 #define ASCII_DEL 0x7F
49 #define ASCII_EOL "\r\n"
51 #ifndef RX_BUFFER_SIZE
52 #define RX_BUFFER_SIZE 1024
55 #ifndef TX_BUFFER_SIZE
56 #define TX_BUFFER_SIZE 512
59 #ifndef BLOCK_TX_BUFFER_SIZE
60 #define BLOCK_TX_BUFFER_SIZE 256
65 #define BAUD_RATE 115200
69 #ifndef SERIAL_NO_DATA
70 #define SERIAL_NO_DATA -1
73 #define BUFNEXT(ptr, buffer) ((ptr + 1) & (sizeof(buffer.data) - 1))
74 #define BUFCOUNT(head, tail, size) ((head >= tail) ? (head - tail) : (size - tail + head))
361 void debug_write (
const char *s);
362 void debug_writeln (
const char *s);
363 bool debug_stream_init (
void);
uint8_t instance
Definition: stream.c:407
uint32_t baud_rate
Definition: stream.c:408
bool(* enqueue_realtime_command_ptr)(char c)
Pointer to function for extracting real-time commands from the input stream and enqueue them for proc...
Definition: stream.h:133
void(* stream_write_n_ptr)(const char *s, uint16_t len)
Pointer to function for writing a n character long string to the output stream.
Definition: stream.h:120
bool stream_connected(void)
Definition: stream.c:174
void stream_disconnect(const io_stream_t *stream)
Definition: stream.c:429
uint16_t(* get_stream_buffer_count_ptr)(void)
Pointer to function for getting number of characters available or free in a stream buffer.
Definition: stream.h:102
bool(* stream_is_connected_ptr)(void)
Pointer to function for getting stream connected status.
Definition: stream.h:97
void(* stream_write_ptr)(const char *s)
Pointer to function for writing a null terminated string to the output stream.
Definition: stream.h:114
bool stream_enumerate_streams(stream_enumerate_callback_ptr callback)
Definition: stream.c:81
bool(* stream_enumerate_callback_ptr)(io_stream_properties_t const *properties)
Definition: stream.h:262
bool stream_mpg_check_enable(char c)
Definition: stream.c:457
void stream_mpg_set_mode(void *data)
Definition: stream.c:452
bool stream_enqueue_realtime_command(char c)
Definition: stream.c:162
bool stream_tx_blocking(void)
Definition: stream.c:102
bool(* stream_write_char_ptr)(const char c)
Pointer to function for writing a single character to the output stream.
Definition: stream.h:126
io_stream_t const * stream_open_instance(uint8_t instance, uint32_t baud_rate, stream_write_char_ptr rx_handler, const char *description)
Definition: stream.c:435
void(* cancel_read_buffer_ptr)(void)
Pointer to function for flushing the input buffer and inserting an ASCII_CAN character.
Definition: stream.h:171
void stream_register_streams(io_stream_details_t *details)
Definition: stream.c:73
io_stream_flags_t stream_get_flags(io_stream_t stream)
Definition: stream.c:365
bool stream_mpg_enable(bool on)
Function for enabling/disabling input from a secondary input stream.
Definition: stream.c:512
#define RX_BUFFER_SIZE
Definition: stream.h:52
int16_t stream_get_null(void)
Dummy function for reading data from a virtual empty input buffer.
Definition: stream.c:112
bool stream_connect_instance(uint8_t instance, uint32_t baud_rate)
Definition: stream.c:420
const io_stream_t * stream_null_init(uint32_t baud_rate)
Definition: stream.c:619
bool stream_connect(const io_stream_t *stream)
Definition: stream.c:396
bool(* enqueue_realtime_command2_ptr)(char c)
Optional, but recommended, pointer to function for enqueueing realtime command characters.
Definition: stream.h:144
bool stream_mpg_register(const io_stream_t *stream, bool rx_only, stream_write_char_ptr write_char)
Definition: stream.c:470
void(* flush_stream_buffer_ptr)(void)
Pointer to function for flushing a stream buffer.
Definition: stream.h:164
#define TX_BUFFER_SIZE
Definition: stream.h:56
bool stream_set_description(const io_stream_t *stream, const char *description)
Definition: stream.c:384
bool(* set_baud_rate_ptr)(uint32_t baud_rate)
Pointer to function for setting the stream baud rate.
Definition: stream.h:161
struct io_stream_details io_stream_details_t
const io_stream_t *(* stream_claim_ptr)(uint32_t baud_rate)
Definition: stream.h:253
bool stream_rx_suspend(stream_rx_buffer_t *rxbuffer, bool suspend)
Function for blocking reads from or restoring an input buffer.
Definition: stream.c:134
int16_t(* stream_read_ptr)(void)
Pointer to function for reading a single character from a input stream.
Definition: stream.h:107
#define BLOCK_TX_BUFFER_SIZE
Definition: stream.h:60
bool stream_buffer_all(char c)
Definition: stream.c:157
bool(* disable_rx_stream_ptr)(bool disable)
Pointer to function for disabling/enabling stream input.
Definition: stream.h:202
enqueue_realtime_command_ptr(* set_enqueue_rt_handler_ptr)(enqueue_realtime_command_ptr handler)
Pointer to function for setting the enqueue realtime commands handler.
Definition: stream.h:154
stream_type_t
Definition: stream.h:82
@ StreamType_Bluetooth
Definition: stream.h:85
@ StreamType_Telnet
Definition: stream.h:86
@ StreamType_SDCard
Definition: stream.h:88
@ StreamType_MPG
Definition: stream.h:84
@ StreamType_WebSocket
Definition: stream.h:87
@ StreamType_File
Definition: stream.h:89
@ StreamType_Null
Definition: stream.h:91
@ StreamType_Serial
Definition: stream.h:83
@ StreamType_Redirected
Definition: stream.h:90
bool(* suspend_read_ptr)(bool await)
Pointer to function for blocking reads from and restoring a input buffer.
Definition: stream.h:191
const io_stream_t * stream_get_base(void)
Definition: stream.c:360
struct io_stream_details * next
Definition: stream.h:267
io_stream_properties_t * streams
Definition: stream.h:266
uint8_t n_streams
Definition: stream.h:265
uint8_t instance
Instance of stream type, starts from 0.
Definition: stream.h:257
stream_type_t type
Type of stream.
Definition: stream.h:256
stream_claim_ptr claim
Definition: stream.h:259
io_stream_flags_t flags
Definition: stream.h:258
Properties and handlers for stream I/O.
Definition: stream.h:229
uint8_t instance
Instance of stream type, starts from 0.
Definition: stream.h:231
flush_stream_buffer_ptr reset_read_buffer
Handler for flushing the input buffer.
Definition: stream.h:240
stream_write_char_ptr write_char
Handler for writing a single character to current stream only.
Definition: stream.h:237
set_enqueue_rt_handler_ptr set_enqueue_rt_handler
Handler for setting the enqueue realtime command character handler.
Definition: stream.h:242
stream_write_ptr write
Handler for writing string to current output stream only.
Definition: stream.h:235
enqueue_realtime_command2_ptr enqueue_rt_command
(Optional) handler for enqueueing a realtime command character.
Definition: stream.h:238
io_stream_state_t state
Optional status flags such as connected status.
Definition: stream.h:232
get_stream_buffer_count_ptr get_rx_buffer_count
Optional handler for getting number of characters in the input buffer.
Definition: stream.h:246
stream_type_t type
Type of stream.
Definition: stream.h:230
stream_write_n_ptr write_n
Optional handler for writing n characters to current output stream only. Required for Modbus support.
Definition: stream.h:244
get_stream_buffer_count_ptr get_tx_buffer_count
Optional handler for getting number of characters in the output buffer(s). Count shall include any un...
Definition: stream.h:247
disable_rx_stream_ptr disable_rx
Optional handler for disabling/enabling a stream. Recommended?
Definition: stream.h:245
set_baud_rate_ptr set_baud_rate
Optional handler for setting the stream baud rate. Required for Modbus support, recommended for Bluet...
Definition: stream.h:249
stream_is_connected_ptr is_connected
Handler for getting stream connected status.
Definition: stream.h:233
cancel_read_buffer_ptr cancel_read_buffer
Handler for flushing the input buffer and inserting an ASCII_CAN character.
Definition: stream.h:241
stream_write_ptr write_all
Handler for writing string to all active output streams.
Definition: stream.h:236
vfs_file_t * file
File handle, non-null if streaming from a file.
Definition: stream.h:250
stream_read_ptr read
Handler for reading a single character from the input stream.
Definition: stream.h:239
flush_stream_buffer_ptr reset_write_buffer
Optional handler for flushing the output buffer. Any transmit FIFO shall be flushed as well....
Definition: stream.h:248
get_stream_buffer_count_ptr get_rx_buffer_free
Handler for getting number of free characters in the input buffer.
Definition: stream.h:234
suspend_read_ptr suspend_read
Optional handler for saving away and restoring the current input buffer.
Definition: stream.h:243
bool use_tx2data
Definition: stream.h:299
uint_fast16_t length
Definition: stream.h:296
uint_fast16_t max_length
Definition: stream.h:297
char * s
Definition: stream.h:298
uint_fast16_t length
Definition: stream.h:288
uint_fast16_t max_length
Definition: stream.h:289
char * s
Definition: stream.h:290
bool overflow
Definition: stream.h:276
volatile uint_fast16_t head
Definition: stream.h:273
volatile bool rts_state
Definition: stream.h:275
bool backup
Definition: stream.h:277
volatile uint_fast16_t tail
Definition: stream.h:274
volatile uint_fast16_t head
Definition: stream.h:282
volatile uint_fast16_t tail
Definition: stream.h:283
uint8_t can_set_baud
Definition: stream.h:210
uint8_t claimed
Definition: stream.h:209
uint8_t value
Definition: stream.h:205
uint8_t rx_only
Definition: stream.h:211
uint8_t connected
deprecated
Definition: stream.h:207
uint8_t modbus_ready
Definition: stream.h:212
uint8_t rts_handshake
Definition: stream.h:213
uint8_t claimable
Definition: stream.h:208
uint8_t unused
Definition: stream.h:214
uint8_t is_usb
Definition: stream.h:223
uint8_t value
Definition: stream.h:219
uint8_t webui_connected
Definition: stream.h:222
uint8_t connected
Definition: stream.h:221
uint8_t unused
Definition: stream.h:224