[FL-3933] Pipe (#3996)

* feat: FuriThread stdin
* ci: fix f18
* feat: stdio callback context
* feat: FuriPipe
* POTENTIALLY EXPLOSIVE pipe welding
* fix: non-explosive welding
* Revert welding
* docs: furi_pipe
* feat: pipe event loop integration
* update f18 sdk
* f18
* docs: make doxygen happy
* fix: event loop not triggering when pipe attached to stdio
* fix: partial stdout in pipe
* allow simultaneous in and out subscription in event loop
* refactor: move pipe out of furi and decouple from event loop
* chore: api versioning
* Bump api versions
* refactor: rename pipe_set_pipe_broken_callback
* Toolbox: add missing pragma once

Co-authored-by: あく <alleteam@gmail.com>
This commit is contained in:
Anna Antonenko
2024-12-24 05:58:27 +04:00
committed by GitHub
parent 519b89665f
commit 5fd423951b
9 changed files with 752 additions and 2 deletions

View File

@@ -54,6 +54,11 @@ bool furi_stream_set_trigger_level(FuriStreamBuffer* stream_buffer, size_t trigg
pdTRUE;
}
size_t furi_stream_get_trigger_level(FuriStreamBuffer* stream_buffer) {
furi_check(stream_buffer);
return ((StaticStreamBuffer_t*)stream_buffer)->xTriggerLevelBytes;
}
size_t furi_stream_buffer_send(
FuriStreamBuffer* stream_buffer,
const void* data,

View File

@@ -54,6 +54,17 @@ void furi_stream_buffer_free(FuriStreamBuffer* stream_buffer);
*/
bool furi_stream_set_trigger_level(FuriStreamBuffer* stream_buffer, size_t trigger_level);
/**
* @brief Get trigger level for stream buffer.
* A stream buffer's trigger level is the number of bytes that must be in the
* stream buffer before a task that is blocked on the stream buffer to
* wait for data is moved out of the blocked state.
*
* @param stream_buffer The stream buffer instance
* @return The trigger level for the stream buffer
*/
size_t furi_stream_get_trigger_level(FuriStreamBuffer* stream_buffer);
/**
* @brief Sends bytes to a stream buffer. The bytes are copied into the stream buffer.
* Wakes up task waiting for data to become available if called from ISR.