Skip to content

File syn_canopen_mgr.c

FileList > proto > syn_canopen_mgr.c

Go to the source code of this file

Implementation of CANopen CiA 302 Manager, SDO Client & NMT Master.

  • #include "syn_canopen_mgr.h"
  • #include "../util/syn_assert.h"
  • #include "../util/syn_pack.h"
  • #include <string.h>

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.

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.c