File syn_ymodem.c¶
FileList > proto > syn_ymodem.c
Go to the source code of this file
YMODEM / XMODEM-1K serial file transfer receiver implementation.
#include "../util/syn_assert.h"#include "../util/syn_crc.h"#include "syn_ymodem.h"#include <stdio.h>#include <stdlib.h>#include <string.h>
Public Functions¶
| Type | Name |
|---|---|
| SYN_YMODEM_Status | syn_ymodem_receive (SYN_YMODEM_Receiver * rx) Execute a YMODEM receive session. |
| void | syn_ymodem_receiver_init (SYN_YMODEM_Receiver * rx, SYN_YMODEM_PutChar putchar_fn, SYN_YMODEM_GetChar getchar_fn, SYN_YMODEM_EventCallback event_fn, void * ctx) Initialize a YMODEM receiver instance. |
Public Static Functions¶
| Type | Name |
|---|---|
| void | ymodem_parse_block0 (SYN_YMODEM_Receiver * rx, const uint8_t * payload, size_t payload_len) Parse Block 0 payload extracting filename and ASCII file size. |
| int | ymodem_read_packet (SYN_YMODEM_Receiver * rx, uint8_t header_byte, size_t * out_payload_len) Read and validate a framed YMODEM packet. |
| int | ymodem_recv_byte (SYN_YMODEM_Receiver * rx, uint32_t timeout_ms) Helper to receive a single byte via user callback. |
| void | ymodem_send_byte (SYN_YMODEM_Receiver * rx, uint8_t b) Helper to transmit a single byte via user callback. |
Macros¶
| Type | Name |
|---|---|
| define | SYN_YMODEM_RECV_TIMEOUT_MS 1000USingle byte receive timeout in milliseconds. |
Public Functions Documentation¶
function syn_ymodem_receive¶
Execute a YMODEM receive session.
Runs the YMODEM handshake, processes Block 0 header, accepts data packets, verifies CRCs, and invokes event callbacks until all files in the batch are transferred or an unrecoverable error occurs.
Parameters:
rxReceiver context.
Returns:
SYN_YMODEM_OK on successful session completion, or error code (<0).
function syn_ymodem_receiver_init¶
Initialize a YMODEM receiver instance.
void syn_ymodem_receiver_init (
SYN_YMODEM_Receiver * rx,
SYN_YMODEM_PutChar putchar_fn,
SYN_YMODEM_GetChar getchar_fn,
SYN_YMODEM_EventCallback event_fn,
void * ctx
)
Parameters:
rxReceiver context.putchar_fnSerial TX function.getchar_fnSerial RX function with timeout.event_fnEvent callback handler.ctxUser context pointer.
Public Static Functions Documentation¶
function ymodem_parse_block0¶
Parse Block 0 payload extracting filename and ASCII file size.
static void ymodem_parse_block0 (
SYN_YMODEM_Receiver * rx,
const uint8_t * payload,
size_t payload_len
)
Parameters:
rxReceiver context.payloadBlock 0 payload buffer.payload_lenBlock payload length in bytes.
function ymodem_read_packet¶
Read and validate a framed YMODEM packet.
static int ymodem_read_packet (
SYN_YMODEM_Receiver * rx,
uint8_t header_byte,
size_t * out_payload_len
)
Parameters:
rxReceiver context.header_bytePacket header byte (SOH or STX).out_payload_lenOutput pointer for payload byte count.
Returns:
Sequence number (0-255) on success, or negative status error code.
function ymodem_recv_byte¶
Helper to receive a single byte via user callback.
Parameters:
rxReceiver context.timeout_msTimeout in milliseconds.
Returns:
Received byte value (0-255) or negative on timeout/error.
function ymodem_send_byte¶
Helper to transmit a single byte via user callback.
Parameters:
rxReceiver context.bByte value to transmit.
Macro Definition Documentation¶
define SYN_YMODEM_RECV_TIMEOUT_MS¶
Single byte receive timeout in milliseconds.
The documentation for this class was generated from the following file src/syntropic/proto/syn_ymodem.c