Skip to content

File syn_smbus.c

FileList > proto > syn_smbus.c

Go to the source code of this file

SMBus Protocol Engine implementation.

  • #include "syn_smbus.h"
  • #include <string.h>

Public Functions

Type Name
uint8_t syn_smbus_calc_pec (uint8_t init_crc, const uint8_t * data, size_t len)
Calculate SMBus Packet Error Checking (PEC) CRC-8 byte. Polynomial: x^8 + x^2 + x + 1 (0x07), Initial value: 0x00.
SYN_Status syn_smbus_decode_packet (SYN_SMBUS_Packet * pkt, const uint8_t * rx_buf, size_t rx_len, SYN_SMBUS_Protocol proto, bool has_pec)
Decode an SMBus byte stream into an SMBus packet structure.
SYN_Status syn_smbus_encode_packet (const SYN_SMBUS_Packet * pkt, uint8_t * tx_buf, size_t buf_size, size_t * out_len)
Encode an SMBus packet into a byte stream for transmission.

Public Functions Documentation

function syn_smbus_calc_pec

Calculate SMBus Packet Error Checking (PEC) CRC-8 byte. Polynomial: x^8 + x^2 + x + 1 (0x07), Initial value: 0x00.

uint8_t syn_smbus_calc_pec (
    uint8_t init_crc,
    const uint8_t * data,
    size_t len
) 

Parameters:

  • init_crc Running CRC value (0x00 for fresh calculation).
  • data Pointer to data buffer.
  • len Data length in bytes.

Returns:

Computed PEC byte.


function syn_smbus_decode_packet

Decode an SMBus byte stream into an SMBus packet structure.

SYN_Status syn_smbus_decode_packet (
    SYN_SMBUS_Packet * pkt,
    const uint8_t * rx_buf,
    size_t rx_len,
    SYN_SMBUS_Protocol proto,
    bool has_pec
) 

Parameters:

  • pkt Pointer to destination packet structure.
  • rx_buf Input buffer containing received bytes.
  • rx_len Length of received byte stream.
  • proto Protocol format expected.
  • has_pec True if PEC byte is appended at end of rx_buf.

Returns:

SYN_OK on success, SYN_ERR_INVALID_CHECKSUM if PEC mismatch, or SYN_ERR_INVALID_PARAM.


function syn_smbus_encode_packet

Encode an SMBus packet into a byte stream for transmission.

SYN_Status syn_smbus_encode_packet (
    const SYN_SMBUS_Packet * pkt,
    uint8_t * tx_buf,
    size_t buf_size,
    size_t * out_len
) 

Parameters:

  • pkt Pointer to packet structure.
  • tx_buf Output buffer.
  • buf_size Size of output buffer.
  • out_len Pointer to receive encoded byte count.

Returns:

SYN_OK on success, or error status.



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