Skip to content

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 1000U
Single byte receive timeout in milliseconds.

Public Functions Documentation

function syn_ymodem_receive

Execute a YMODEM receive session.

SYN_YMODEM_Status syn_ymodem_receive (
    SYN_YMODEM_Receiver * rx
) 

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:

  • rx Receiver 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:

  • rx Receiver context.
  • putchar_fn Serial TX function.
  • getchar_fn Serial RX function with timeout.
  • event_fn Event callback handler.
  • ctx User 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:

  • rx Receiver context.
  • payload Block 0 payload buffer.
  • payload_len Block 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:

  • rx Receiver context.
  • header_byte Packet header byte (SOH or STX).
  • out_payload_len Output 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.

static int ymodem_recv_byte (
    SYN_YMODEM_Receiver * rx,
    uint32_t timeout_ms
) 

Parameters:

  • rx Receiver context.
  • timeout_ms Timeout 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.

static void ymodem_send_byte (
    SYN_YMODEM_Receiver * rx,
    uint8_t b
) 

Parameters:

  • rx Receiver context.
  • b Byte value to transmit.

Macro Definition Documentation

define SYN_YMODEM_RECV_TIMEOUT_MS

Single byte receive timeout in milliseconds.

#define SYN_YMODEM_RECV_TIMEOUT_MS `1000U`



The documentation for this class was generated from the following file src/syntropic/proto/syn_ymodem.c