OpenLcbCLib 1.0 Alpha
OpenSource C Library to create OpenLcb/Lcc Nodes
Loading...
Searching...
No Matches
can_utilities.h
Go to the documentation of this file.
1
35#ifndef __DRIVERS_CANBUS_CAN_UTILITIES__
36#define __DRIVERS_CANBUS_CAN_UTILITIES__
37
38#include <stdbool.h>
39#include <stdint.h>
40
41#include "can_types.h"
42
43#ifdef __cplusplus
44extern "C" {
45#endif /* __cplusplus */
46
48 extern void CanUtilities_clear_can_message(can_msg_t *can_msg);
49
70 can_msg_t *can_msg,
71 uint32_t identifier,
72 uint8_t payload_size,
73 uint8_t byte1,
74 uint8_t byte2,
75 uint8_t byte3,
76 uint8_t byte4,
77 uint8_t byte5,
78 uint8_t byte6,
79 uint8_t byte7,
80 uint8_t byte8);
81
96 extern uint8_t CanUtilities_copy_node_id_to_payload(can_msg_t *can_msg, uint64_t node_id, uint8_t start_offset);
97
113 extern uint8_t CanUtilities_copy_openlcb_payload_to_can_payload(openlcb_msg_t *openlcb_msg, can_msg_t *can_msg, uint16_t openlcb_start_index, uint8_t can_start_index);
114
131 extern uint8_t CanUtilities_append_can_payload_to_openlcb_payload(openlcb_msg_t *openlcb_msg, can_msg_t *can_msg, uint8_t can_start_index);
132
143 extern uint8_t CanUtilities_copy_64_bit_to_can_message(can_msg_t *can_msg, uint64_t data);
144
156 extern uint8_t CanUtilities_copy_can_message(can_msg_t *can_msg_source, can_msg_t *can_msg_target);
157
168
179
193
207
218 extern uint8_t CanUtilities_count_nulls_in_payloads(openlcb_msg_t *openlcb_msg, can_msg_t *can_msg);
219
231 extern bool CanUtilities_is_openlcb_message(can_msg_t *can_msg);
232
233#ifdef __cplusplus
234}
235#endif /* __cplusplus */
236
237#endif /* __DRIVERS_CANBUS_CAN_UTILITIES__ */
Type definitions and constants for the CAN transport layer.
uint8_t CanUtilities_copy_node_id_to_payload(can_msg_t *can_msg, uint64_t node_id, uint8_t start_offset)
Copies a 48-bit node_id_t into 6 payload bytes starting at start_offset.
Definition can_utilities.c:119
uint8_t CanUtilities_append_can_payload_to_openlcb_payload(openlcb_msg_t *openlcb_msg, can_msg_t *can_msg, uint8_t can_start_index)
Appends CAN payload bytes to the end of an openlcb_msg_t payload.
Definition can_utilities.c:215
uint8_t CanUtilities_copy_openlcb_payload_to_can_payload(openlcb_msg_t *openlcb_msg, can_msg_t *can_msg, uint16_t openlcb_start_index, uint8_t can_start_index)
Copies payload bytes from an openlcb_msg_t into a can_msg_t.
Definition can_utilities.c:161
void CanUtilities_load_can_message(can_msg_t *can_msg, uint32_t identifier, uint8_t payload_size, uint8_t byte1, uint8_t byte2, uint8_t byte3, uint8_t byte4, uint8_t byte5, uint8_t byte6, uint8_t byte7, uint8_t byte8)
Loads identifier, payload size, and all 8 data bytes into a can_msg_t.
Definition can_utilities.c:74
node_id_t CanUtilities_extract_can_payload_as_node_id(can_msg_t *can_msg)
Reads payload bytes 0-5 and returns them as a 48-bit node_id_t (big-endian).
Definition can_utilities.c:304
uint16_t CanUtilities_extract_dest_alias_from_can_message(can_msg_t *can_msg)
Returns the 12-bit destination alias from the appropriate location in a can_msg_t.
Definition can_utilities.c:349
uint8_t CanUtilities_copy_can_message(can_msg_t *can_msg_source, can_msg_t *can_msg_target)
Copies identifier and valid payload bytes from source to target can_msg_t.
Definition can_utilities.c:277
uint8_t CanUtilities_count_nulls_in_payloads(openlcb_msg_t *openlcb_msg, can_msg_t *can_msg)
Counts NULL (0x00) bytes across both an openlcb_msg_t and a can_msg_t payload.
Definition can_utilities.c:466
void CanUtilities_clear_can_message(can_msg_t *can_msg)
Clears identifier, payload_count, and all payload bytes in a can_msg_t.
Definition can_utilities.c:51
bool CanUtilities_is_openlcb_message(can_msg_t *can_msg)
Returns true if the CAN frame carries an OpenLCB message (bit 27 set).
Definition can_utilities.c:473
uint8_t CanUtilities_copy_64_bit_to_can_message(can_msg_t *can_msg, uint64_t data)
Copies a 64-bit value into all 8 payload bytes of a can_msg_t (big-endian).
Definition can_utilities.c:250
uint16_t CanUtilities_convert_can_mti_to_openlcb_mti(can_msg_t *can_msg)
Converts the CAN frame MTI bits to the corresponding 16-bit OpenLCB MTI.
Definition can_utilities.c:396
uint16_t CanUtilities_extract_source_alias_from_can_identifier(can_msg_t *can_msg)
Returns the 12-bit source alias from bits 0-11 of the CAN identifier.
Definition can_utilities.c:327
uint64_t node_id_t
48-bit Node ID stored in a 64-bit type (upper 16 bits unused).
Definition openlcb_types.h:359
Definition can_types.h:118
Core OpenLCB message structure.
Definition openlcb_types.h:480

Copyright (c) 2026 Jim Kueneman all rights reserved. See the License