Skip to content

File syn_canopen_mgr.h

FileList > proto > syn_canopen_mgr.h

Go to the source code of this file

CANopen CiA 302 Network Manager, SDO Client & NMT Master. More...

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

Classes

Type Name
struct SYN_CANOpenManager
CANopen Manager Master State Handle.
struct SYN_CANOpenNodeMonitor
Remote Node Heartbeat Monitor Entry.
struct SYN_CANOpenSDOClient
SDO Client Transaction Handle.

Public Types

Type Name
enum SYN_SDOClientState
SDO Client Transfer States.

Public Functions

Type Name
void syn_canopen_mgr_build_nmt (SYN_CAN_Frame * frame, uint8_t target_node, uint8_t nmt_cmd)
Build an NMT Master command frame.
void syn_canopen_mgr_init (SYN_CANOpenManager * mgr)
Initialize CANopen Manager master instance.
void syn_canopen_mgr_process_frame (SYN_CANOpenManager * mgr, const SYN_CAN_Frame * frame)
Process an incoming CAN frame for Manager processing (Heartbeats, SDO responses).
SYN_Status syn_canopen_mgr_sdo_read_init (SYN_CANOpenManager * mgr, SYN_CAN_Frame * frame, uint8_t node_id, uint16_t index, uint8_t subindex)
Initiate an SDO Read request to a remote slave node.
SYN_Status syn_canopen_mgr_sdo_write_init (SYN_CANOpenManager * mgr, SYN_CAN_Frame * frame, uint8_t node_id, uint16_t index, uint8_t subindex, const void * data, size_t len)
Initiate an SDO Write request to a remote slave node.
void syn_canopen_mgr_step (SYN_CANOpenManager * mgr, uint16_t delta_ms)
Advance CANopen Manager periodic timer ticks.

Detailed Description

Provides a lightweight, non-blocking CANopen master engine capable of transmitting NMT node control commands, executing expedited/segmented SDO reads & writes to remote slave nodes, and monitoring network heartbeats.

Public Types Documentation

enum SYN_SDOClientState

SDO Client Transfer States.

enum SYN_SDOClientState {
    SYN_SDO_CLIENT_STATE_IDLE = 0,
    SYN_SDO_CLIENT_STATE_WAIT_READ,
    SYN_SDO_CLIENT_STATE_WAIT_WRITE,
    SYN_SDO_CLIENT_STATE_SUCCESS,
    SYN_SDO_CLIENT_STATE_ERROR
};


Public Functions Documentation

function syn_canopen_mgr_build_nmt

Build an NMT Master command frame.

void syn_canopen_mgr_build_nmt (
    SYN_CAN_Frame * frame,
    uint8_t target_node,
    uint8_t nmt_cmd
) 

Parameters:

  • frame Output CAN frame buffer.
  • target_node Target node ID (1..127 or 0 for broadcast).
  • nmt_cmd Command (SYN_CANOPEN_NMT_CMD_*).

function syn_canopen_mgr_init

Initialize CANopen Manager master instance.

void syn_canopen_mgr_init (
    SYN_CANOpenManager * mgr
) 

Parameters:

  • mgr Pointer to manager handle.

function syn_canopen_mgr_process_frame

Process an incoming CAN frame for Manager processing (Heartbeats, SDO responses).

void syn_canopen_mgr_process_frame (
    SYN_CANOpenManager * mgr,
    const SYN_CAN_Frame * frame
) 

Parameters:

  • mgr Pointer to manager handle.
  • frame Incoming CAN frame.

function syn_canopen_mgr_sdo_read_init

Initiate an SDO Read request to a remote slave node.

SYN_Status syn_canopen_mgr_sdo_read_init (
    SYN_CANOpenManager * mgr,
    SYN_CAN_Frame * frame,
    uint8_t node_id,
    uint16_t index,
    uint8_t subindex
) 

Parameters:

  • mgr Pointer to manager handle.
  • frame Output CAN request frame buffer.
  • node_id Target slave Node-ID.
  • index Target Object Dictionary Index.
  • subindex Target Object Dictionary Subindex.

Returns:

SYN_OK if initiated, SYN_BUSY if SDO client is busy.


function syn_canopen_mgr_sdo_write_init

Initiate an SDO Write request to a remote slave node.

SYN_Status syn_canopen_mgr_sdo_write_init (
    SYN_CANOpenManager * mgr,
    SYN_CAN_Frame * frame,
    uint8_t node_id,
    uint16_t index,
    uint8_t subindex,
    const void * data,
    size_t len
) 

Parameters:

  • mgr Pointer to manager handle.
  • frame Output CAN request frame buffer.
  • node_id Target slave Node-ID.
  • index Target Object Dictionary Index.
  • subindex Target Object Dictionary Subindex.
  • data Pointer to payload bytes to write.
  • len Data length (1..4 bytes for expedited write).

Returns:

SYN_OK if initiated, SYN_BUSY if busy.


function syn_canopen_mgr_step

Advance CANopen Manager periodic timer ticks.

void syn_canopen_mgr_step (
    SYN_CANOpenManager * mgr,
    uint16_t delta_ms
) 

Parameters:

  • mgr Pointer to manager handle.
  • delta_ms Milliseconds elapsed since last call.


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