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.