Skip to content

File syn_smbus.h

FileList > proto > syn_smbus.h

Go to the source code of this file

SMBus (System Management Bus 1.1 / 2.0 / 3.0) Protocol Engine. More...

  • #include "../common/syn_defs.h"
  • #include <stdbool.h>
  • #include <stddef.h>
  • #include <stdint.h>

Classes

Type Name
struct SYN_SMBUS_Packet

Public Types

Type Name
enum SYN_SMBUS_Protocol

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.

Macros

Type Name
define SYN_SMBUS_ADDR_ALERT_RESPONSE 0x0C
define SYN_SMBUS_ADDR_DEFAULT 0x61
define SYN_SMBUS_ADDR_SMART_BATTERY 0x16
define SYN_SMBUS_ADDR_SMART_BATTERY_CHARGER 0x12
define SYN_SMBUS_ADDR_SMART_BATTERY_SELECT 0x13
define SYN_SMBUS_BLOCK_MAX_LEN 32
define SYN_SMBUS_BUF_MAX_LEN 260

Detailed Description

Provides non-blocking SMBus packet encoding, decoding, Packet Error Checking (PEC) CRC-8 calculations, transaction protocol builders, and ARP/alert definitions.

Public Types Documentation

enum SYN_SMBUS_Protocol

enum SYN_SMBUS_Protocol {
    SYN_SMBUS_PROTO_QUICK_READ = 0,
    SYN_SMBUS_PROTO_QUICK_WRITE,
    SYN_SMBUS_PROTO_SEND_BYTE,
    SYN_SMBUS_PROTO_RECEIVE_BYTE,
    SYN_SMBUS_PROTO_WRITE_BYTE,
    SYN_SMBUS_PROTO_READ_BYTE,
    SYN_SMBUS_PROTO_WRITE_WORD,
    SYN_SMBUS_PROTO_READ_WORD,
    SYN_SMBUS_PROTO_WRITE_BLOCK,
    SYN_SMBUS_PROTO_READ_BLOCK,
    SYN_SMBUS_PROTO_PROCESS_CALL,
    SYN_SMBUS_PROTO_BLOCK_PROCESS_CALL
};

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.


Macro Definition Documentation

define SYN_SMBUS_ADDR_ALERT_RESPONSE

#define SYN_SMBUS_ADDR_ALERT_RESPONSE `0x0C`

Alert Response Address (ARA)


define SYN_SMBUS_ADDR_DEFAULT

#define SYN_SMBUS_ADDR_DEFAULT `0x61`

SMBus Default Device Address (ARP)


define SYN_SMBUS_ADDR_SMART_BATTERY

#define SYN_SMBUS_ADDR_SMART_BATTERY `0x16`

Smart Battery Data


define SYN_SMBUS_ADDR_SMART_BATTERY_CHARGER

#define SYN_SMBUS_ADDR_SMART_BATTERY_CHARGER `0x12`

Smart Battery Charger


define SYN_SMBUS_ADDR_SMART_BATTERY_SELECT

#define SYN_SMBUS_ADDR_SMART_BATTERY_SELECT `0x13`

Smart Battery Selector


define SYN_SMBUS_BLOCK_MAX_LEN

#define SYN_SMBUS_BLOCK_MAX_LEN `32`

SMBus 2.0 default block payload max length


define SYN_SMBUS_BUF_MAX_LEN

#define SYN_SMBUS_BUF_MAX_LEN `260`

Buffer payload max length for extended frames



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