From d89a0cfbdee3f592cc807165df4958cbb05542ce Mon Sep 17 00:00:00 2001 From: KemoNine Date: Sun, 13 Sep 2020 02:01:25 -0400 Subject: [PATCH] Finalize implementation of sd card formatter --- .../sd_card_formatter/sd_card_formatter.ino | 235 +++++++++--------- .../sd_card_formatter/sd_card_formatter.prj | Bin 6244 -> 6760 bytes .../sd_card_formatter_GSLC.h | 23 +- 3 files changed, 136 insertions(+), 122 deletions(-) diff --git a/hardware/sd_card_formatter/sd_card_formatter.ino b/hardware/sd_card_formatter/sd_card_formatter.ino index 210df58..53583dc 100644 --- a/hardware/sd_card_formatter/sd_card_formatter.ino +++ b/hardware/sd_card_formatter/sd_card_formatter.ino @@ -69,13 +69,55 @@ bool popupOnScreen = false; void handlerKeyboard(); void handlerBatteryLevel(); void eraseAndFormatCard(); +void sdError(char*); + +// SD Card related +#define USE_SDIO 0 +const uint8_t chipSelect = 5; +#define SPI_SPEED SD_SCK_MHZ(50) +#include +#include "src/SdFat/SdFat.h" +#include "src/SdFat/sdios.h" +#if USE_SDIO +// Use faster SdioCardEX +SdioCardEX card; +// SdioCard card; +#else // USE_SDIO +Sd2Card card; +#endif // USE_SDIO +uint32_t cardSizeBlocks; +uint32_t cardCapacityMB; +// cache for SD block +cache_t cache; +// MBR information +uint8_t partType; +uint32_t relSector; +uint32_t partSize; +// Fake disk geometry +uint8_t numberOfHeads; +uint8_t sectorsPerTrack; +// FAT parameters +uint16_t reservedSectors; +uint8_t sectorsPerCluster; +uint32_t fatStart; +uint32_t fatSize; +uint32_t dataStart; +// constants for file system structure +uint16_t const BU16 = 128; +uint16_t const BU32 = 8192; +// strings needed in file system structures +char noName[] = "NO NAME "; +char fat16str[] = "FAT16 "; +char fat32str[] = "FAT32 "; // Save some element references for direct access // gslc_tsElemRef* m_pElemBatteryLevel= NULL; +gslc_tsElemRef* m_pElemBtFmt = NULL; gslc_tsElemRef* m_pElemBtSDNo = NULL; gslc_tsElemRef* m_pElemBtSDYes = NULL; gslc_tsElemRef* m_pElemSDInfo = NULL; +gslc_tsElemRef* m_pElemSDStatus = NULL; gslc_tsElemRef* m_pElemStatusText = NULL; // @@ -112,11 +154,14 @@ bool CbBtnCommon(void* pvGui,void *pvElemRef,gslc_teTouch eTouch,int16_t nX,int1 case E_ELEM_SD_YES: gslc_PopupHide(&m_gui); popupOnScreen = false; - gslc_ElemXTextboxReset(&m_gui, m_pElemSDInfo); - gslc_ElemXTextboxAdd(&m_gui, m_pElemSDInfo, "Formatting SD Card\n"); + gslc_ElemXTextboxReset(&m_gui, m_pElemSDStatus); + gslc_ElemSetVisible(&m_gui, m_pElemBtFmt, false); + gslc_ElemSetVisible(&m_gui, m_pElemSDInfo, false); + gslc_ElemSetVisible(&m_gui, m_pElemSDStatus, true); + gslc_ElemXTextboxAdd(&m_gui, m_pElemSDStatus, "Formatting SD Card\n"); gslc_Update(&m_gui); eraseAndFormatCard(); - gslc_ElemXTextboxAdd(&m_gui, m_pElemSDInfo, "Formatting Complete\n"); + gslc_ElemXTextboxAdd(&m_gui, m_pElemSDStatus, "Formatting Complete\n"); gslc_Update(&m_gui); break; //