Skip to content

File syn_n2k.c

FileList > proto > syn_n2k.c

Go to the source code of this file

NMEA 2000 Marine CAN Protocol Stack implementation.

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

Public Functions

Type Name
SYN_Status syn_n2k_decode_battery (const SYN_CAN_Frame * frame, SYN_N2K_BatteryStatus * battery)
Decode PGN 127508 (Battery Status) from an 8-byte CAN frame.
SYN_Status syn_n2k_decode_cog_sog_rapid (const SYN_CAN_Frame * frame, SYN_N2K_CogSogRapid * cog_sog)
Decode PGN 129026 (COG & SOG, Rapid Update) from an 8-byte CAN frame.
SYN_Status syn_n2k_decode_dc_detailed (const SYN_CAN_Frame * frame, SYN_N2K_DcDetailedStatus * dc)
Decode PGN 127506 (DC Detailed Status) from an 8-byte CAN frame.
SYN_Status syn_n2k_decode_environment (const SYN_CAN_Frame * frame, SYN_N2K_EnvParams * env)
Decode PGN 130310 (Environmental Parameters) from an 8-byte CAN frame.
SYN_Status syn_n2k_decode_heading (const SYN_CAN_Frame * frame, SYN_N2K_VesselHeading * heading)
Decode PGN 127250 (Vessel Heading) from an 8-byte CAN frame.
SYN_Status syn_n2k_decode_position_rapid (const SYN_CAN_Frame * frame, SYN_N2K_PositionRapid * pos)
Decode PGN 129025 (Position, Rapid Update) from an 8-byte CAN frame.
SYN_Status syn_n2k_encode_battery (uint8_t sa, const SYN_N2K_BatteryStatus * battery, SYN_CAN_Frame * frame)
Encode PGN 127508 (Battery Status) into an 8-byte CAN frame.
SYN_Status syn_n2k_encode_cog_sog_rapid (uint8_t sa, const SYN_N2K_CogSogRapid * cog_sog, SYN_CAN_Frame * frame)
Encode PGN 129026 (COG & SOG, Rapid Update) into an 8-byte CAN frame.
SYN_Status syn_n2k_encode_dc_detailed (uint8_t sa, const SYN_N2K_DcDetailedStatus * dc, SYN_CAN_Frame * frame)
Encode PGN 127506 (DC Detailed Status) into an 8-byte CAN frame.
SYN_Status syn_n2k_encode_environment (uint8_t sa, const SYN_N2K_EnvParams * env, SYN_CAN_Frame * frame)
Encode PGN 130310 (Environmental Parameters) into an 8-byte CAN frame.
SYN_Status syn_n2k_encode_heading (uint8_t sa, const SYN_N2K_VesselHeading * heading, SYN_CAN_Frame * frame)
Encode PGN 127250 (Vessel Heading) into an 8-byte CAN frame.
SYN_Status syn_n2k_encode_position_rapid (uint8_t sa, const SYN_N2K_PositionRapid * pos, SYN_CAN_Frame * frame)
Encode PGN 129025 (Position, Rapid Update) into an 8-byte CAN frame.
SYN_Status syn_n2k_fastpacket_process (SYN_N2K_FastPacketRx * rx, const SYN_CAN_Frame * frame, uint32_t target_pgn, const uint8_t ** out_payload, size_t * out_len)
Process an incoming CAN frame in the Fast-Packet multi-frame RX reassembler.

Public Functions Documentation

function syn_n2k_decode_battery

Decode PGN 127508 (Battery Status) from an 8-byte CAN frame.

SYN_Status syn_n2k_decode_battery (
    const SYN_CAN_Frame * frame,
    SYN_N2K_BatteryStatus * battery
) 

Parameters:

  • frame Source CAN frame.
  • battery Output Battery status structure.

Returns:

SYN_OK on success.


function syn_n2k_decode_cog_sog_rapid

Decode PGN 129026 (COG & SOG, Rapid Update) from an 8-byte CAN frame.

SYN_Status syn_n2k_decode_cog_sog_rapid (
    const SYN_CAN_Frame * frame,
    SYN_N2K_CogSogRapid * cog_sog
) 

Parameters:

  • frame Source CAN frame.
  • cog_sog Output COG & SOG structure.

Returns:

SYN_OK on success.


function syn_n2k_decode_dc_detailed

Decode PGN 127506 (DC Detailed Status) from an 8-byte CAN frame.

SYN_Status syn_n2k_decode_dc_detailed (
    const SYN_CAN_Frame * frame,
    SYN_N2K_DcDetailedStatus * dc
) 

Parameters:

  • frame Source CAN frame.
  • dc Output DC detailed status structure.

Returns:

SYN_OK on success.


function syn_n2k_decode_environment

Decode PGN 130310 (Environmental Parameters) from an 8-byte CAN frame.

SYN_Status syn_n2k_decode_environment (
    const SYN_CAN_Frame * frame,
    SYN_N2K_EnvParams * env
) 

Parameters:

  • frame Source CAN frame.
  • env Output Environmental parameters structure.

Returns:

SYN_OK on success.


function syn_n2k_decode_heading

Decode PGN 127250 (Vessel Heading) from an 8-byte CAN frame.

SYN_Status syn_n2k_decode_heading (
    const SYN_CAN_Frame * frame,
    SYN_N2K_VesselHeading * heading
) 

Parameters:

  • frame Source CAN frame.
  • heading Output Heading structure.

Returns:

SYN_OK on success.


function syn_n2k_decode_position_rapid

Decode PGN 129025 (Position, Rapid Update) from an 8-byte CAN frame.

SYN_Status syn_n2k_decode_position_rapid (
    const SYN_CAN_Frame * frame,
    SYN_N2K_PositionRapid * pos
) 

Parameters:

  • frame Source CAN frame.
  • pos Output Position structure.

Returns:

SYN_OK on success.


function syn_n2k_encode_battery

Encode PGN 127508 (Battery Status) into an 8-byte CAN frame.

SYN_Status syn_n2k_encode_battery (
    uint8_t sa,
    const SYN_N2K_BatteryStatus * battery,
    SYN_CAN_Frame * frame
) 

Parameters:

  • sa Source address.
  • battery Battery status structure.
  • frame Output CAN frame.

Returns:

SYN_OK on success.


function syn_n2k_encode_cog_sog_rapid

Encode PGN 129026 (COG & SOG, Rapid Update) into an 8-byte CAN frame.

SYN_Status syn_n2k_encode_cog_sog_rapid (
    uint8_t sa,
    const SYN_N2K_CogSogRapid * cog_sog,
    SYN_CAN_Frame * frame
) 

Parameters:

  • sa Source address.
  • cog_sog COG & SOG structure.
  • frame Output CAN frame.

Returns:

SYN_OK on success.


function syn_n2k_encode_dc_detailed

Encode PGN 127506 (DC Detailed Status) into an 8-byte CAN frame.

SYN_Status syn_n2k_encode_dc_detailed (
    uint8_t sa,
    const SYN_N2K_DcDetailedStatus * dc,
    SYN_CAN_Frame * frame
) 

Parameters:

  • sa Source address.
  • dc DC detailed status structure.
  • frame Output CAN frame.

Returns:

SYN_OK on success.


function syn_n2k_encode_environment

Encode PGN 130310 (Environmental Parameters) into an 8-byte CAN frame.

SYN_Status syn_n2k_encode_environment (
    uint8_t sa,
    const SYN_N2K_EnvParams * env,
    SYN_CAN_Frame * frame
) 

Parameters:

  • sa Source address.
  • env Environmental parameters structure.
  • frame Output CAN frame.

Returns:

SYN_OK on success.


function syn_n2k_encode_heading

Encode PGN 127250 (Vessel Heading) into an 8-byte CAN frame.

SYN_Status syn_n2k_encode_heading (
    uint8_t sa,
    const SYN_N2K_VesselHeading * heading,
    SYN_CAN_Frame * frame
) 

Parameters:

  • sa Source address.
  • heading Heading structure.
  • frame Output CAN frame.

Returns:

SYN_OK on success.


function syn_n2k_encode_position_rapid

Encode PGN 129025 (Position, Rapid Update) into an 8-byte CAN frame.

SYN_Status syn_n2k_encode_position_rapid (
    uint8_t sa,
    const SYN_N2K_PositionRapid * pos,
    SYN_CAN_Frame * frame
) 

Parameters:

  • sa Source address.
  • pos Position structure (Lat/Lon in 1e-7 degrees).
  • frame Output CAN frame.

Returns:

SYN_OK on success.


function syn_n2k_fastpacket_process

Process an incoming CAN frame in the Fast-Packet multi-frame RX reassembler.

SYN_Status syn_n2k_fastpacket_process (
    SYN_N2K_FastPacketRx * rx,
    const SYN_CAN_Frame * frame,
    uint32_t target_pgn,
    const uint8_t ** out_payload,
    size_t * out_len
) 

Parameters:

  • rx Fast-Packet RX state context.
  • frame Incoming CAN frame.
  • target_pgn Expected target PGN for the Fast-Packet message.
  • out_payload Output pointer receiving reassembled payload buffer.
  • out_len Output length of payload in bytes.

Returns:

SYN_OK if payload complete, or SYN_BUSY if Fast-Packet frames are still pending.



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