CAN CoreX 2.3.1
Table-driven CAN, CAN FD, ISO-TP, network simulation, and bus monitoring library
Loading...
Searching...
No Matches
can_corex_utils.h
Go to the documentation of this file.
1/*
2 * This Source Code Form is subject to the terms of the Mozilla Public
3 * License, v. 2.0. If a copy of the MPL was not distributed with this
4 * file, You can obtain one at http://mozilla.org/MPL/2.0/.
5 *
6 * Author: Adrian Pietrzak
7 * GitHub: https://github.com/AdrianPietrzak1998
8 * Created: May 18, 2026
9 */
10
11#ifndef CAN_COREX_CAN_COREX_UTILS_H_
12#define CAN_COREX_CAN_COREX_UTILS_H_
13
14#include "can_corex.h"
15#include <stddef.h>
16#include <stdint.h>
17
18#ifdef __cplusplus
19extern "C"
20{
21#endif
22
32
44
51#define CCX_SLCAN_CLASSIC_MAX_LINE_LEN 28U
52
69
81 CCX_UTILS_Status_t CCX_SLCAN_Format(const CCX_message_t *msg, char *out, size_t out_size);
82
94 CCX_UTILS_Status_t CCX_BytesToHex(const uint8_t *bytes, size_t byte_count, char *out, size_t out_size);
95
108 CCX_UTILS_Status_t CCX_HexToBytes(const char *hex, size_t hex_len, uint8_t *out, size_t out_size,
109 size_t *bytes_written);
110
132 uint8_t CCX_EncodeLinearU8_Clamped(double physical, double factor, double offset);
133 uint16_t CCX_EncodeLinearU16_Clamped(double physical, double factor, double offset);
134 uint32_t CCX_EncodeLinearU32_Clamped(double physical, double factor, double offset);
135 uint64_t CCX_EncodeLinearU64_Clamped(double physical, double factor, double offset);
136
137 int8_t CCX_EncodeLinearS8_Clamped(double physical, double factor, double offset);
138 int16_t CCX_EncodeLinearS16_Clamped(double physical, double factor, double offset);
139 int32_t CCX_EncodeLinearS32_Clamped(double physical, double factor, double offset);
140 int64_t CCX_EncodeLinearS64_Clamped(double physical, double factor, double offset);
141
142 double CCX_DecodeLinearU8(uint8_t raw, double factor, double offset);
143 double CCX_DecodeLinearU16(uint16_t raw, double factor, double offset);
144 double CCX_DecodeLinearU32(uint32_t raw, double factor, double offset);
145 double CCX_DecodeLinearU64(uint64_t raw, double factor, double offset);
146
147 double CCX_DecodeLinearS8(int8_t raw, double factor, double offset);
148 double CCX_DecodeLinearS16(int16_t raw, double factor, double offset);
149 double CCX_DecodeLinearS32(int32_t raw, double factor, double offset);
150 double CCX_DecodeLinearS64(int64_t raw, double factor, double offset);
152
164 uint8_t CCX_EncodeLinearU8F_Clamped(float physical, float factor, float offset);
165 uint16_t CCX_EncodeLinearU16F_Clamped(float physical, float factor, float offset);
166 uint32_t CCX_EncodeLinearU32F_Clamped(float physical, float factor, float offset);
167 uint64_t CCX_EncodeLinearU64F_Clamped(float physical, float factor, float offset);
168
169 int8_t CCX_EncodeLinearS8F_Clamped(float physical, float factor, float offset);
170 int16_t CCX_EncodeLinearS16F_Clamped(float physical, float factor, float offset);
171 int32_t CCX_EncodeLinearS32F_Clamped(float physical, float factor, float offset);
172 int64_t CCX_EncodeLinearS64F_Clamped(float physical, float factor, float offset);
173
174 float CCX_DecodeLinearU8F(uint8_t raw, float factor, float offset);
175 float CCX_DecodeLinearU16F(uint16_t raw, float factor, float offset);
176 float CCX_DecodeLinearU32F(uint32_t raw, float factor, float offset);
177 float CCX_DecodeLinearU64F(uint64_t raw, float factor, float offset);
178
179 float CCX_DecodeLinearS8F(int8_t raw, float factor, float offset);
180 float CCX_DecodeLinearS16F(int16_t raw, float factor, float offset);
181 float CCX_DecodeLinearS32F(int32_t raw, float factor, float offset);
182 float CCX_DecodeLinearS64F(int64_t raw, float factor, float offset);
184
186
187#ifdef __cplusplus
188}
189#endif
190
191#endif /* CAN_COREX_CAN_COREX_UTILS_H_ */
Core CAN CoreX public API.
CCX_UTILS_Status_t CCX_SLCAN_Parse(const char *line, CCX_message_t *msg)
Parse a classic SLCAN data-frame line into a CAN CoreX message.
CCX_UTILS_Status_t CCX_HexToBytes(const char *hex, size_t hex_len, uint8_t *out, size_t out_size, size_t *bytes_written)
Convert a hex string to bytes.
CCX_UTILS_Status_t
Status values returned by CAN CoreX utility helpers.
Definition can_corex_utils.h:37
CCX_UTILS_Status_t CCX_SLCAN_Format(const CCX_message_t *msg, char *out, size_t out_size)
Format a CAN CoreX classic CAN message as an SLCAN data-frame line.
CCX_UTILS_Status_t CCX_BytesToHex(const uint8_t *bytes, size_t byte_count, char *out, size_t out_size)
Convert bytes to an uppercase hex string.
@ CCX_UTILS_OK
Operation completed successfully.
Definition can_corex_utils.h:38
@ CCX_UTILS_WRONG_ARG
Input format or numeric argument was invalid.
Definition can_corex_utils.h:40
@ CCX_UTILS_UNSUPPORTED
The input uses a feature intentionally not supported by this helper.
Definition can_corex_utils.h:42
@ CCX_UTILS_BUFFER_TOO_SMALL
Caller-provided output buffer is too small.
Definition can_corex_utils.h:41
@ CCX_UTILS_NULL_PTR
A required pointer argument was NULL.
Definition can_corex_utils.h:39
Structure representing a CAN message.
Definition can_corex.h:336