Finalize sd card info screen

This commit is contained in:
KemoNine 2020-09-13 02:25:03 -04:00
parent aac97581a7
commit 5b9b5e130e
3 changed files with 54 additions and 89 deletions

View file

@ -93,8 +93,6 @@ void sdCardInfo();
// Save some element references for direct access
//<Save_References !Start!>
gslc_tsElemRef* m_pElemBatteryLevel= NULL;
gslc_tsElemRef* m_pElemBtSDNo = NULL;
gslc_tsElemRef* m_pElemBtSDYes = NULL;
gslc_tsElemRef* m_pElemRd1152 = NULL;
gslc_tsElemRef* m_pElemRd96 = NULL;
gslc_tsElemRef* m_pElemRdUART0 = NULL;
@ -126,18 +124,6 @@ bool CbBtnCommon(void* pvGui,void *pvElemRef,gslc_teTouch eTouch,int16_t nX,int1
// From the element's ID we can determine which button was pressed.
switch (pElem->nId) {
//<Button Enums !Start!>
case E_ELEM_BTN_SD_FMT:
gslc_PopupShow(&m_gui, E_PG_SD_CONFIRM, false);
popupOnScreen = true;
break;
case E_ELEM_SD_NO:
gslc_PopupHide(&m_gui);
popupOnScreen = false;
break;
case E_ELEM_SD_YES:
gslc_PopupHide(&m_gui);
popupOnScreen = false;
break;
//<Button Enums !End!>
default:
break;
@ -177,6 +163,9 @@ bool CbKbdPoll(void* pvGui, int16_t* pnPinInd, int16_t* pnPinVal) {
return true;
}
// ------------------------------------------------
// Setup
// ------------------------------------------------
void setup() {
Serial.begin(115200);
@ -269,7 +258,9 @@ void processRingBuffer() {
gslc_ElemXTextboxAdd(&m_gui, m_pElemText, textForDisplay);
}
// Keyboard handler
// ------------------------------------------------
// Keyboard Handler
// ------------------------------------------------
void handlerKeyboard() {
// Don't do anything if there are no key presses to process
if (keyboard.keyCount() == 0) {
@ -348,7 +339,9 @@ void handlerKeyboard() {
}
}
// Measure battery level and change NeoPixel accordingly
// ------------------------------------------------
// Battery level handler
// ------------------------------------------------
void handlerBatteryLevel() {
measuredVBat = analogRead(VBATPIN);
measuredVBat *= 2; // we divided by 2, so multiply back
@ -383,6 +376,9 @@ void handlerBatteryLevel() {
pixels_board.show();
}
// ------------------------------------------------
// SD Card Info
// ------------------------------------------------
void sdCardInfo() {
// Clear text box
gslc_ElemXTextboxReset(&m_gui, m_pElemSDInfo);
@ -398,16 +394,39 @@ void sdCardInfo() {
snprintf(textForDisplay, 64, "Free Space (MB): N/A\n (Performance Issues)\n");
gslc_ElemXTextboxAdd(&m_gui, m_pElemSDInfo, textForDisplay);
// Total size
float size = 0.000512*SD.card()->cardSize();
snprintf(textForDisplay, 64, "Total Space (MB): %.2f\n", size);
uint32_t cardSizeBlocks = SD.card()->cardSize();
uint32_t cardCapacityMB = (cardSizeBlocks + 2047)/2048;
snprintf(textForDisplay, 64, "Card Size: %.0fMb\n", 1.048576*cardCapacityMB);
gslc_ElemXTextboxAdd(&m_gui, m_pElemSDInfo, textForDisplay);
// Blocks Per Cluster
snprintf(textForDisplay, 64, "Blocks Per Cluster: %d\n", int(SD.vol()->blocksPerCluster()));
gslc_ElemXTextboxAdd(&m_gui, m_pElemSDInfo, textForDisplay);
// Cluster Count
snprintf(textForDisplay, 64, "Cluster Count: %d\n", SD.vol()->clusterCount());
gslc_ElemXTextboxAdd(&m_gui, m_pElemSDInfo, textForDisplay);
char* type;
switch (SD.card()->type()) {
case SD_CARD_TYPE_SD1:
type = "SD1";
break;
case SD_CARD_TYPE_SD2:
type = "SD2";
break;
case SD_CARD_TYPE_SDHC:
if (cardSizeBlocks < 70000000) {
type = "SDHC";
} else {
type = "SDXC";
}
break;
default:
type = "Unknown";
}
snprintf(textForDisplay, 64, "Type: %s\n", type);
gslc_ElemXTextboxAdd(&m_gui, m_pElemSDInfo, textForDisplay);
cid_t cid;
SD.card()->readCID(&cid);
snprintf(textForDisplay, 64, "Serial Number: %x\n", cid.psn);
gslc_ElemXTextboxAdd(&m_gui, m_pElemSDInfo, textForDisplay);
snprintf(textForDisplay, 64, "Manufacturing date: %04d-%02d\n", (2000 + cid.mdt_year_low + 10 * cid.mdt_year_high), int(cid.mdt_month));
gslc_ElemXTextboxAdd(&m_gui, m_pElemSDInfo, textForDisplay);
gslc_Update(&m_gui);
}

Binary file not shown.

View file

@ -35,9 +35,6 @@
#error Project tab->Target Platform should be tft_espi
#endif
#include <Adafruit_GFX.h>
#include "src/guislice/NotoMono10pt7b.h"
#include "src/guislice/NotoMono12pt7b.h"
#include "src/guislice/NotoMono16pt7b.h"
#include "src/guislice/NotoMono8pt7b.h"
//<Fonts !End!>
@ -51,17 +48,14 @@
// Enumerations for pages, elements, fonts, images
// ------------------------------------------------
//<Enum !Start!>
enum {E_PG_BASE,E_PG_MAIN,E_CONF_RPI,E_SD_CARD,E_PG_SD_CONFIRM};
enum {E_ELEM_BATT_LEVEL,E_ELEM_BOX1,E_ELEM_BTN_SD_FMT,E_ELEM_RD96
,E_ELEM_RD_1152,E_ELEM_RD_UART0,E_ELEM_RD_UART5,E_ELEM_SD_NO
,E_ELEM_SD_YES,E_ELEM_STATUS,E_ELEM_TEXT,E_ELEM_TEXT14
,E_ELEM_TEXT15,E_ELEM_TEXT3,E_ELEM_TEXT4,E_ELEM_TX96
,E_ELEM_TX_1152,E_ELEM_TX_SD_INFO,E_ELEM_TX_UART1,E_ELEM_TX_UART5
,E_STATUS_LINE};
enum {E_PG_BASE,E_PG_MAIN,E_CONF_RPI,E_SD_CARD};
enum {E_ELEM_BATT_LEVEL,E_ELEM_RD96,E_ELEM_RD_1152,E_ELEM_RD_UART0
,E_ELEM_RD_UART5,E_ELEM_STATUS,E_ELEM_TEXT,E_ELEM_TEXT3
,E_ELEM_TEXT4,E_ELEM_TX96,E_ELEM_TX_1152,E_ELEM_TX_SD_INFO
,E_ELEM_TX_UART1,E_ELEM_TX_UART5,E_STATUS_LINE};
enum {E_GRP_SPD,E_GRP_UART};
// Must use separate enum for fonts with MAX_FONT at end to use gslc_FontSet.
enum {E_AO_NOTOMONO10PT7B,E_AO_NOTOMONO12PT7B,E_AO_NOTOMONO16PT7B
,E_AO_NOTOMONO8PT7B,MAX_FONT};
enum {E_AO_NOTOMONO8PT7B,MAX_FONT};
//<Enum !End!>
// ------------------------------------------------
@ -72,7 +66,7 @@ enum {E_AO_NOTOMONO10PT7B,E_AO_NOTOMONO12PT7B,E_AO_NOTOMONO16PT7B
// Define the maximum number of elements and pages
// ------------------------------------------------
//<ElementDefines !Start!>
#define MAX_PAGE 5
#define MAX_PAGE 4
#define MAX_ELEM_PG_BASE 3 // # Elems total on page
#define MAX_ELEM_PG_BASE_RAM MAX_ELEM_PG_BASE // # Elems in RAM
@ -83,11 +77,8 @@ enum {E_AO_NOTOMONO10PT7B,E_AO_NOTOMONO12PT7B,E_AO_NOTOMONO16PT7B
#define MAX_ELEM_CONF_RPI 10 // # Elems total on page
#define MAX_ELEM_CONF_RPI_RAM MAX_ELEM_CONF_RPI // # Elems in RAM
#define MAX_ELEM_SD_CARD 2 // # Elems total on page
#define MAX_ELEM_SD_CARD 1 // # Elems total on page
#define MAX_ELEM_SD_CARD_RAM MAX_ELEM_SD_CARD // # Elems in RAM
#define MAX_ELEM_PG_SD_CONFIRM 5 // # Elems total on page
#define MAX_ELEM_PG_SD_CONFIRM_RAM MAX_ELEM_PG_SD_CONFIRM // # Elems in RAM
//<ElementDefines !End!>
// ------------------------------------------------
@ -107,8 +98,6 @@ gslc_tsElem m_asPage2Elem[MAX_ELEM_CONF_RPI_RAM];
gslc_tsElemRef m_asPage2ElemRef[MAX_ELEM_CONF_RPI];
gslc_tsElem m_asPage3Elem[MAX_ELEM_SD_CARD_RAM];
gslc_tsElemRef m_asPage3ElemRef[MAX_ELEM_SD_CARD];
gslc_tsElem m_asPopup1Elem[MAX_ELEM_PG_SD_CONFIRM_RAM];
gslc_tsElemRef m_asPopup1ElemRef[MAX_ELEM_PG_SD_CONFIRM];
gslc_tsXProgress m_sXBarGauge2;
gslc_tsXTextbox m_sTextbox1;
char m_acTextboxBuf1[952]; // NRows=17 NCols=56
@ -117,7 +106,7 @@ gslc_tsXCheckbox m_asXRadio2;
gslc_tsXCheckbox m_asXRadio3;
gslc_tsXCheckbox m_asXRadio4;
gslc_tsXTextbox m_sTextbox2;
char m_acTextboxBuf2[224]; // NRows=8 NCols=28
char m_acTextboxBuf2[696]; // NRows=12 NCols=58
#define MAX_STR 100
@ -130,8 +119,6 @@ char m_acTextboxBuf2[224]; // NRows=8 NCols=28
// Element References for direct access
//<Extern_References !Start!>
extern gslc_tsElemRef* m_pElemBatteryLevel;
extern gslc_tsElemRef* m_pElemBtSDNo;
extern gslc_tsElemRef* m_pElemBtSDYes;
extern gslc_tsElemRef* m_pElemRd1152;
extern gslc_tsElemRef* m_pElemRd96;
extern gslc_tsElemRef* m_pElemRdUART0;
@ -171,9 +158,6 @@ void InitGUIslice_gen()
// Load Fonts
// ------------------------------------------------
//<Load_Fonts !Start!>
if (!gslc_FontSet(&m_gui,E_AO_NOTOMONO10PT7B,GSLC_FONTREF_PTR,&NotoMono10pt7b,1)) { return; }
if (!gslc_FontSet(&m_gui,E_AO_NOTOMONO12PT7B,GSLC_FONTREF_PTR,&NotoMono12pt7b,1)) { return; }
if (!gslc_FontSet(&m_gui,E_AO_NOTOMONO16PT7B,GSLC_FONTREF_PTR,&NotoMono16pt7b,1)) { return; }
if (!gslc_FontSet(&m_gui,E_AO_NOTOMONO8PT7B,GSLC_FONTREF_PTR,&NotoMono8pt7b,1)) { return; }
//<Load_Fonts !End!>
@ -182,7 +166,6 @@ void InitGUIslice_gen()
gslc_PageAdd(&m_gui,E_PG_MAIN,m_asPage1Elem,MAX_ELEM_PG_MAIN_RAM,m_asPage1ElemRef,MAX_ELEM_PG_MAIN);
gslc_PageAdd(&m_gui,E_CONF_RPI,m_asPage2Elem,MAX_ELEM_CONF_RPI_RAM,m_asPage2ElemRef,MAX_ELEM_CONF_RPI);
gslc_PageAdd(&m_gui,E_SD_CARD,m_asPage3Elem,MAX_ELEM_SD_CARD_RAM,m_asPage3ElemRef,MAX_ELEM_SD_CARD);
gslc_PageAdd(&m_gui,E_PG_SD_CONFIRM,m_asPopup1Elem,MAX_ELEM_PG_SD_CONFIRM_RAM,m_asPopup1ElemRef,MAX_ELEM_PG_SD_CONFIRM);
// Now mark E_PG_BASE as a "base" page which means that it's elements
// are always visible. This is useful for common page elements.
@ -292,49 +275,12 @@ void InitGUIslice_gen()
// Create textbox
pElemRef = gslc_ElemXTextboxCreate(&m_gui,E_ELEM_TX_SD_INFO,E_SD_CARD,&m_sTextbox2,
(gslc_tsRect){3,30,313,150},E_AO_NOTOMONO8PT7B,
(char*)&m_acTextboxBuf2,8,28);
gslc_ElemXTextboxWrapSet(&m_gui,pElemRef,false);
(gslc_tsRect){3,30,323,200},E_AO_NOTOMONO8PT7B,
(char*)&m_acTextboxBuf2,12,58);
gslc_ElemXTextboxWrapSet(&m_gui,pElemRef,true);
gslc_ElemSetTxtCol(&m_gui,pElemRef,GSLC_COL_GRAY_LT3);
gslc_ElemSetCol(&m_gui,pElemRef,GSLC_COL_GRAY,GSLC_COL_BLACK,GSLC_COL_BLACK);
m_pElemSDInfo = pElemRef;
// create E_ELEM_BTN_SD_FMT button with text label
pElemRef = gslc_ElemCreateBtnTxt(&m_gui,E_ELEM_BTN_SD_FMT,E_SD_CARD,
(gslc_tsRect){110,190,100,40},(char*)"FORMAT?",0,E_AO_NOTOMONO8PT7B,&CbBtnCommon);
gslc_ElemSetCol(&m_gui,pElemRef,GSLC_COL_RED_DK1,GSLC_COL_GRAY,GSLC_COL_RED_DK1);
// -----------------------------------
// PAGE: E_PG_SD_CONFIRM
// Create E_ELEM_BOX1 box
pElemRef = gslc_ElemCreateBox(&m_gui,E_ELEM_BOX1,E_PG_SD_CONFIRM,(gslc_tsRect){0,0,320,240});
gslc_ElemSetCol(&m_gui,pElemRef,GSLC_COL_BLACK,GSLC_COL_BLACK,GSLC_COL_BLACK);
// Create E_ELEM_TEXT14 text label
pElemRef = gslc_ElemCreateTxt(&m_gui,E_ELEM_TEXT14,E_PG_SD_CONFIRM,(gslc_tsRect){0,30,320,42},
(char*)"Format SD Card?",0,E_AO_NOTOMONO16PT7B);
gslc_ElemSetTxtAlign(&m_gui,pElemRef,GSLC_ALIGN_MID_MID);
gslc_ElemSetTxtCol(&m_gui,pElemRef,GSLC_COL_RED_LT1);
// Create E_ELEM_TEXT15 text label
pElemRef = gslc_ElemCreateTxt(&m_gui,E_ELEM_TEXT15,E_PG_SD_CONFIRM,(gslc_tsRect){0,90,320,32},
(char*)"This will ERASE it!",0,E_AO_NOTOMONO12PT7B);
gslc_ElemSetTxtAlign(&m_gui,pElemRef,GSLC_ALIGN_MID_MID);
gslc_ElemSetTxtCol(&m_gui,pElemRef,GSLC_COL_RED_LT4);
// create E_ELEM_SD_NO button with text label
pElemRef = gslc_ElemCreateBtnTxt(&m_gui,E_ELEM_SD_NO,E_PG_SD_CONFIRM,
(gslc_tsRect){50,160,80,40},(char*)"No",0,E_AO_NOTOMONO10PT7B,&CbBtnCommon);
gslc_ElemSetCol(&m_gui,pElemRef,GSLC_COL_BLUE_LT2,GSLC_COL_GRAY,GSLC_COL_BLUE_LT2);
m_pElemBtSDNo = pElemRef;
// create E_ELEM_SD_YES button with text label
pElemRef = gslc_ElemCreateBtnTxt(&m_gui,E_ELEM_SD_YES,E_PG_SD_CONFIRM,
(gslc_tsRect){170,160,80,40},(char*)"Yes",0,E_AO_NOTOMONO10PT7B,&CbBtnCommon);
gslc_ElemSetCol(&m_gui,pElemRef,GSLC_COL_RED_LT1,GSLC_COL_GRAY,GSLC_COL_RED_LT1);
m_pElemBtSDYes = pElemRef;
//<InitGUI !End!>
//<Startup !Start!>