From b75305d1d3ffde53b5016323564b3e7701073500 Mon Sep 17 00:00:00 2001 From: David Rebbe Date: Mon, 9 Dec 2024 10:47:15 -0500 Subject: [PATCH] added icsneo_can_message_set_extended, icsneo_can_message_set_canfd, and icsneo_can_message_set_baudrate_switch --- api/icsneo/icsneo.cpp | 48 +++++++++++++++++++++++++++++++++++++++++ include/icsneo/icsneo.h | 34 +++++++++++++++++++++++++++-- 2 files changed, 80 insertions(+), 2 deletions(-) diff --git a/api/icsneo/icsneo.cpp b/api/icsneo/icsneo.cpp index 315260b..4a806e5 100644 --- a/api/icsneo/icsneo.cpp +++ b/api/icsneo/icsneo.cpp @@ -700,6 +700,22 @@ ICSNEO_API icsneo_error_t icsneo_can_message_is_extended(icsneo_device_t* device return icsneo_error_success; } +ICSNEO_API icsneo_error_t icsneo_can_message_set_extended(icsneo_device_t* device, icsneo_message_t* message, bool value) { + if (!device || !message) { + return icsneo_error_invalid_parameters; + } + // TODO: Check if device is valid + // TODO: Check if message is valid + auto* const can_message = dynamic_cast(message->message.get()); + if (!can_message) { + return icsneo_error_invalid_type; + } + + can_message->isExtended = value; + + return icsneo_error_success; +} + ICSNEO_API icsneo_error_t icsneo_can_message_is_canfd(icsneo_device_t* device, icsneo_message_t* message, bool* value) { if (!device || !message || !value) { return icsneo_error_invalid_parameters; @@ -716,6 +732,22 @@ ICSNEO_API icsneo_error_t icsneo_can_message_is_canfd(icsneo_device_t* device, i return icsneo_error_success; } +ICSNEO_API icsneo_error_t icsneo_can_message_set_canfd(icsneo_device_t* device, icsneo_message_t* message, bool value) { + if (!device || !message) { + return icsneo_error_invalid_parameters; + } + // TODO: Check if device is valid + // TODO: Check if message is valid + auto* const can_message = dynamic_cast(message->message.get()); + if (!can_message) { + return icsneo_error_invalid_type; + } + + can_message->isCANFD = value; + + return icsneo_error_success; +} + ICSNEO_API icsneo_error_t icsneo_can_message_get_baudrate_switch(icsneo_device_t* device, icsneo_message_t* message, bool* value) { if (!device || !message || !value) { return icsneo_error_invalid_parameters; @@ -732,6 +764,22 @@ ICSNEO_API icsneo_error_t icsneo_can_message_get_baudrate_switch(icsneo_device_t return icsneo_error_success; } +ICSNEO_API icsneo_error_t icsneo_can_message_set_baudrate_switch(icsneo_device_t* device, icsneo_message_t* message, bool value) { + if (!device || !message) { + return icsneo_error_invalid_parameters; + } + // TODO: Check if device is valid + // TODO: Check if message is valid + auto* const can_message = dynamic_cast(message->message.get()); + if (!can_message) { + return icsneo_error_invalid_type; + } + + can_message->baudrateSwitch = value; + + return icsneo_error_success; +} + ICSNEO_API icsneo_error_t icsneo_can_message_get_error_state_indicator(icsneo_device_t* device, icsneo_message_t* message, bool* value) { if (!device || !message || !value) { return icsneo_error_invalid_parameters; diff --git a/include/icsneo/icsneo.h b/include/icsneo/icsneo.h index d42ec01..47391cb 100644 --- a/include/icsneo/icsneo.h +++ b/include/icsneo/icsneo.h @@ -489,6 +489,16 @@ ICSNEO_API icsneo_error_t icsneo_can_message_set_remote(icsneo_device_t* device, */ ICSNEO_API icsneo_error_t icsneo_can_message_is_extended(icsneo_device_t* device, icsneo_message_t* message, bool* value); +/** @brief Set the extended status of a CAN message + * + * @param[in] icsneo_device_t* device The device to check against. + * @param[in] icsneo_message_t* message The message to modify. + * @param[out] bool value Extended status to set. + * + * @return icsneo_error_t icsneo_error_success if successful, icsneo_error_invalid_parameters otherwise. +*/ +ICSNEO_API icsneo_error_t icsneo_can_message_set_extended(icsneo_device_t* device, icsneo_message_t* message, bool value); + /** @brief Get the CANFD status of a CAN message * * @param[in] icsneo_device_t* device The device to check against. @@ -499,16 +509,36 @@ ICSNEO_API icsneo_error_t icsneo_can_message_is_extended(icsneo_device_t* device */ ICSNEO_API icsneo_error_t icsneo_can_message_is_canfd(icsneo_device_t* device, icsneo_message_t* message, bool* value); -/** @brief Get the baudrate switch status of a CAN message +/** @brief Set the CANFD status of a CAN message + * + * @param[in] icsneo_device_t* device The device to check against. + * @param[in] icsneo_message_t* message The message to modify. + * @param[out] bool value CANFD status to set. + * + * @return icsneo_error_t icsneo_error_success if successful, icsneo_error_invalid_parameters otherwise. +*/ +ICSNEO_API icsneo_error_t icsneo_can_message_set_canfd(icsneo_device_t* device, icsneo_message_t* message, bool value); + +/** @brief Get the baudrate switch status (BRS) of a CAN message * * @param[in] icsneo_device_t* device The device to check against. * @param[in] icsneo_message_t* message The message to check. - * @param[out] bool* value Pointer to a uint32_t to copy the baudrate switch status into. + * @param[out] bool* value Pointer to a uint32_t to copy the baudrate switch (BRS) status into. * * @return icsneo_error_t icsneo_error_success if successful, icsneo_error_invalid_parameters otherwise. */ ICSNEO_API icsneo_error_t icsneo_can_message_get_baudrate_switch(icsneo_device_t* device, icsneo_message_t* message, bool* value); +/** @brief Set the baudrate switch status (BRS) of a CAN message + * + * @param[in] icsneo_device_t* device The device to check against. + * @param[in] icsneo_message_t* message The message to modify. + * @param[out] bool value baudrate switch status (BRS) to set. + * + * @return icsneo_error_t icsneo_error_success if successful, icsneo_error_invalid_parameters otherwise. +*/ +ICSNEO_API icsneo_error_t icsneo_can_message_set_baudrate_switch(icsneo_device_t* device, icsneo_message_t* message, bool value); + /** @brief Get the error state indicator status of a CAN message * * @param[in] icsneo_device_t* device The device to check against.