From d2c7a19ac144d510f9dde0f14f452ddd8f143ed3 Mon Sep 17 00:00:00 2001 From: Josh Stewart Date: Mon, 18 Sep 2023 10:12:02 +1000 Subject: [PATCH] Allow SD card formatting through TS Native interface --- speeduino/comms.cpp | 13 ++++++++++++- speeduino/comms_sd.h | 6 ++++-- 2 files changed, 16 insertions(+), 3 deletions(-) diff --git a/speeduino/comms.cpp b/speeduino/comms.cpp index 58b5ece4..b4d8f16f 100644 --- a/speeduino/comms.cpp +++ b/speeduino/comms.cpp @@ -946,7 +946,18 @@ void processSerialCommand(void) SDcurrentDirChunk = word(serialPayload[7], serialPayload[8]); sendReturnCodeMsg(SERIAL_RC_OK); } - else if((SD_arg1 == SD_WRITE_SEC_ARG1) && (SD_arg2 == SD_WRITE_SEC_ARG2)) + else if((SD_arg1 == SD_WRITE_READ_SEC_ARG1) && (SD_arg2 == SD_WRITE_READ_SEC_ARG2)) + { + //Read sector Init? Unsure what this is meant to do however it is sent at the beginning of a Card Format request and requires an OK response + //Provided the sector being requested is x0 x0 x0 x0, we treat this as a SD Card format request + if( (serialPayload[7] == 0) && (serialPayload[8] == 0) && (serialPayload[9] == 0) && (serialPayload[10] == 0) ) + { + //SD Card format request + formatExFat(); + } + sendReturnCodeMsg(SERIAL_RC_OK); + } + else if((SD_arg1 == SD_WRITE_WRITE_SEC_ARG1) && (SD_arg2 == SD_WRITE_WRITE_SEC_ARG2)) { //SD write sector command } diff --git a/speeduino/comms_sd.h b/speeduino/comms_sd.h index 5111dd7f..15d716e2 100644 --- a/speeduino/comms_sd.h +++ b/speeduino/comms_sd.h @@ -23,8 +23,10 @@ #define SD_WRITE_DO_ARG2 0x0001 #define SD_WRITE_DIR_ARG1 0x0001 #define SD_WRITE_DIR_ARG2 0x0002 -#define SD_WRITE_SEC_ARG1 0x0003 -#define SD_WRITE_SEC_ARG2 0x0204 +#define SD_WRITE_READ_SEC_ARG1 0x0002 +#define SD_WRITE_READ_SEC_ARG2 0x0004 +#define SD_WRITE_WRITE_SEC_ARG1 0x0003 +#define SD_WRITE_WRITE_SEC_ARG2 0x0204 #define SD_WRITE_COMP_ARG1 0x0005 #define SD_WRITE_COMP_ARG2 0x0008 #define SD_ERASEFILE_ARG1 0x0006