From 1dc0870af1e3b0981d7b7a409906c3878fe6bbe2 Mon Sep 17 00:00:00 2001 From: Donuts Diaz Date: Fri, 29 Nov 2024 17:05:32 -0600 Subject: [PATCH] feat: functions created to get storaged DTC --- Canbus_app/app_user.h | 2 +- Canbus_app/libraries/uds_library.c | 18 ++++++++++++++++++ Canbus_app/libraries/uds_library.h | 3 +++ Canbus_app/scenes/UDSOptions/DTCstorage.c | 1 + 4 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 Canbus_app/scenes/UDSOptions/DTCstorage.c diff --git a/Canbus_app/app_user.h b/Canbus_app/app_user.h index efb84d8..ec5d02f 100644 --- a/Canbus_app/app_user.h +++ b/Canbus_app/app_user.h @@ -31,7 +31,7 @@ #define MESSAGE_ERROR 0xF0 -#define UDS_REQUEST_ID_DEFAULT 0x7df +#define UDS_REQUEST_ID_DEFAULT 0x7e1 #define UDS_RESPONSE_ID_DEFAULT 0x7e9 typedef enum { diff --git a/Canbus_app/libraries/uds_library.c b/Canbus_app/libraries/uds_library.c index 05f7e40..0738c07 100644 --- a/Canbus_app/libraries/uds_library.c +++ b/Canbus_app/libraries/uds_library.c @@ -329,3 +329,21 @@ bool uds_reset_ecu(UDS_SERVICE* uds_instance, type_ecu_reset type) { return true; } + +// Get Storaged DTC +bool uds_get_storaged_dtc(UDS_SERVICE* uds_instance, char* codes[]) { + uint8_t data[3] = {0x19, 0x1, 0x4}; + + CANFRAME frame_to_send = {0}; + CANFRAME frame_to_received = {0}; + + if(!uds_multi_frame_request( + uds_instance, data, COUNT_OF(data), &frame_to_send, 1, &frame_to_received)) + return false; + + if(frame_to_received.buffer[1] != 0x59) return false; + + UNUSED(codes); + + return true; +} diff --git a/Canbus_app/libraries/uds_library.h b/Canbus_app/libraries/uds_library.h index 6e9aec9..d94a3ac 100644 --- a/Canbus_app/libraries/uds_library.h +++ b/Canbus_app/libraries/uds_library.h @@ -64,6 +64,9 @@ bool uds_set_diagnostic_session(UDS_SERVICE* uds_instance, diagnostic_session se // Reset the ECU bool uds_reset_ecu(UDS_SERVICE* uds_instance, type_ecu_reset type); +// Get ECU Storage Data Troubles Codes +bool uds_get_storaged_dtc(UDS_SERVICE* uds_instance, FuriString* text); + // Free uds void free_uds(UDS_SERVICE* uds_instance); diff --git a/Canbus_app/scenes/UDSOptions/DTCstorage.c b/Canbus_app/scenes/UDSOptions/DTCstorage.c new file mode 100644 index 0000000..febfc06 --- /dev/null +++ b/Canbus_app/scenes/UDSOptions/DTCstorage.c @@ -0,0 +1 @@ +#include "../../app_user.h" \ No newline at end of file