sdcard menu
This commit is contained in:
@@ -1,6 +1,7 @@
|
|||||||
#ifndef BOARD320_240_CPP
|
#ifndef BOARD320_240_CPP
|
||||||
#define BOARD320_240_CPP
|
#define BOARD320_240_CPP
|
||||||
|
|
||||||
|
#include <SD.h>
|
||||||
#include <analogWrite.h>
|
#include <analogWrite.h>
|
||||||
#include <TFT_eSPI.h>
|
#include <TFT_eSPI.h>
|
||||||
#include <WiFi.h>
|
#include <WiFi.h>
|
||||||
@@ -856,7 +857,8 @@ WL_CONNECTION_LOST: suffix = "CONNECTION_LOST"; break;
|
|||||||
WL_DISCONNECTED: suffix = "DISCONNECTED"; break;
|
WL_DISCONNECTED: suffix = "DISCONNECTED"; break;
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case MENU_GPRS: sprintf(tmpStr1, "[%s] %s", (liveData->settings.gprsEnabled == 1) ? "on" : "off", liveData->settings.gprsApn); suffix = tmpStr1; break;
|
case MENU_GPRS: sprintf(tmpStr1, "[%s] %s", (liveData->settings.gprsEnabled == 1) ? "[on]" : "[off]", liveData->settings.gprsApn); suffix = tmpStr1; break;
|
||||||
|
case MENU_SDCARD: sprintf(tmpStr1, "[%s]", (liveData->params.sdcardRecording) ? "RECORDING" : (liveData->settings.sdcardEnabled == 1) ? "on" : "off"); suffix = tmpStr1; break;
|
||||||
case MENU_SCREEN_ROTATION: suffix = (liveData->settings.displayRotation == 1) ? "[vertical]" : "[normal]"; break;
|
case MENU_SCREEN_ROTATION: suffix = (liveData->settings.displayRotation == 1) ? "[vertical]" : "[normal]"; break;
|
||||||
case MENU_DEFAULT_SCREEN: sprintf(tmpStr1, "[%d]", liveData->settings.defaultScreen); suffix = tmpStr1; break;
|
case MENU_DEFAULT_SCREEN: sprintf(tmpStr1, "[%d]", liveData->settings.defaultScreen); suffix = tmpStr1; break;
|
||||||
case MENU_SCREEN_BRIGHTNESS: sprintf(tmpStr1, "[%d%%]", liveData->settings.lcdBrightness); suffix = (liveData->settings.lcdBrightness == 0) ? "[auto]" : tmpStr1; break;
|
case MENU_SCREEN_BRIGHTNESS: sprintf(tmpStr1, "[%d%%]", liveData->settings.lcdBrightness); suffix = (liveData->settings.lcdBrightness == 0) ? "[auto]" : tmpStr1; break;
|
||||||
@@ -864,7 +866,12 @@ WL_DISCONNECTED: suffix = "DISCONNECTED"; break;
|
|||||||
case MENU_HEADLIGHTS_REMINDER: suffix = (liveData->settings.headlightsReminder == 1) ? "[on]" : "[off]"; break;
|
case MENU_HEADLIGHTS_REMINDER: suffix = (liveData->settings.headlightsReminder == 1) ? "[on]" : "[off]"; break;
|
||||||
case MENU_DEBUG_SCREEN: suffix = (liveData->settings.debugScreen == 1) ? "[on]" : "[off]"; break;
|
case MENU_DEBUG_SCREEN: suffix = (liveData->settings.debugScreen == 1) ? "[on]" : "[off]"; break;
|
||||||
//
|
//
|
||||||
case MENU_WIFI_ENABLED: suffix = (liveData->settings.wifiEnabled == 1) ? "[on]" : "[off]"; break;
|
case MENU_SDCARD_ENABLED: sprintf(tmpStr1, "[%s]", (liveData->settings.sdcardEnabled == 1) ? "on" : "off"); suffix = tmpStr1; break;
|
||||||
|
case MENU_SDCARD_AUTOSTARTLOG: sprintf(tmpStr1, "[%s]", (liveData->settings.sdcardEnabled == 0) ? "n/a" : (liveData->settings.sdcardAutstartLog == 1) ? "on" : "off"); suffix = tmpStr1; break;
|
||||||
|
case MENU_SDCARD_MOUNT_STATUS: sprintf(tmpStr1, "[%s]", (liveData->settings.sdcardEnabled == 0) ? "n/a" : (liveData->params.sdcardInit) ? "READY" : "MOUNT"); suffix = tmpStr1; break;
|
||||||
|
case MENU_SDCARD_REC: sprintf(tmpStr1, "[%s]", (liveData->settings.sdcardEnabled == 0) ? "n/a" : (liveData->params.sdcardRecording) ? "STOP" : "START"); suffix = tmpStr1; break;
|
||||||
|
//
|
||||||
|
case MENU_WIFI_ENABLED: suffix = (liveData->settings.wifiEnabled == 1) ? "[on]" : "[off]"; break;
|
||||||
case MENU_WIFI_SSID: sprintf(tmpStr1, "%s", liveData->settings.wifiSsid); suffix = tmpStr1; break;
|
case MENU_WIFI_SSID: sprintf(tmpStr1, "%s", liveData->settings.wifiSsid); suffix = tmpStr1; break;
|
||||||
case MENU_WIFI_PASSWORD: sprintf(tmpStr1, "%s", liveData->settings.wifiPassword); suffix = tmpStr1; break;
|
case MENU_WIFI_PASSWORD: sprintf(tmpStr1, "%s", liveData->settings.wifiPassword); suffix = tmpStr1; break;
|
||||||
//
|
//
|
||||||
@@ -1006,6 +1013,11 @@ void Board320_240::menuItemClick() {
|
|||||||
case MENU_WIFI_ENABLED: liveData->settings.wifiEnabled = (liveData->settings.wifiEnabled == 1) ? 0 : 1; showMenu(); return; break;
|
case MENU_WIFI_ENABLED: liveData->settings.wifiEnabled = (liveData->settings.wifiEnabled == 1) ? 0 : 1; showMenu(); return; break;
|
||||||
case MENU_WIFI_SSID: return; break;
|
case MENU_WIFI_SSID: return; break;
|
||||||
case MENU_WIFI_PASSWORD: return; break;
|
case MENU_WIFI_PASSWORD: return; break;
|
||||||
|
// Sdcard
|
||||||
|
case MENU_SDCARD_ENABLED: liveData->settings.sdcardEnabled = (liveData->settings.sdcardEnabled == 1) ? 0 : 1; showMenu(); return; break;
|
||||||
|
case MENU_SDCARD_AUTOSTARTLOG: liveData->settings.sdcardAutstartLog = (liveData->settings.sdcardAutstartLog == 1) ? 0 : 1; showMenu(); return; break;
|
||||||
|
case MENU_SDCARD_MOUNT_STATUS: sdcardMount(); break;
|
||||||
|
case MENU_SDCARD_REC: sdcardToggleRecording(); showMenu(); return; break;
|
||||||
// Distance
|
// Distance
|
||||||
case 4011: liveData->settings.distanceUnit = 'k'; showParentMenu = true; break;
|
case 4011: liveData->settings.distanceUnit = 'k'; showParentMenu = true; break;
|
||||||
case 4012: liveData->settings.distanceUnit = 'm'; showParentMenu = true; break;
|
case 4012: liveData->settings.distanceUnit = 'm'; showParentMenu = true; break;
|
||||||
@@ -1044,7 +1056,7 @@ void Board320_240::menuItemClick() {
|
|||||||
liveData->menuItemSelected = 0;
|
liveData->menuItemSelected = 0;
|
||||||
for (i = 0; i < liveData->menuItemsCount; ++i) {
|
for (i = 0; i < liveData->menuItemsCount; ++i) {
|
||||||
if (parentMenu == liveData->menuItems[i].parentId) {
|
if (parentMenu == liveData->menuItems[i].parentId) {
|
||||||
if (liveData->menuItems[i].id == liveData->menuCurrent)
|
if (liveData->menuItems[i].id == liveData->menuCurrent)
|
||||||
break;
|
break;
|
||||||
liveData->menuItemSelected++;
|
liveData->menuItemSelected++;
|
||||||
}
|
}
|
||||||
@@ -1128,6 +1140,14 @@ void Board320_240::redrawScreen() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
if (!displayScreenSpeedHud) {
|
if (!displayScreenSpeedHud) {
|
||||||
|
|
||||||
|
// SDCARD recording
|
||||||
|
/*liveData->params.sdcardRecording*/
|
||||||
|
if (liveData->settings.sdcardEnabled == 1) {
|
||||||
|
spr.fillCircle(310, 10, 7, TFT_BLACK);
|
||||||
|
spr.fillCircle(310, 10, 6, TFT_RED);
|
||||||
|
}
|
||||||
|
|
||||||
// BLE not connected
|
// BLE not connected
|
||||||
if (!liveData->bleConnected && liveData->bleConnect) {
|
if (!liveData->bleConnected && liveData->bleConnect) {
|
||||||
// Print message
|
// Print message
|
||||||
@@ -1218,7 +1238,7 @@ void Board320_240::mainLoop() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
// Both left&right button (hide menu)
|
// Both left&right button (hide menu)
|
||||||
if (digitalRead(pinButtonLeft) == LOW && digitalRead(pinButtonRight) == LOW) {
|
if (digitalRead(pinButtonLeft) == LOW && digitalRead(pinButtonRight) == LOW) {
|
||||||
hideMenu();
|
hideMenu();
|
||||||
}
|
}
|
||||||
@@ -1231,4 +1251,48 @@ bool Board320_240::skipAdapterScan() {
|
|||||||
return digitalRead(pinButtonMiddle) == LOW || digitalRead(pinButtonLeft) == LOW || digitalRead(pinButtonRight) == LOW;
|
return digitalRead(pinButtonMiddle) == LOW || digitalRead(pinButtonLeft) == LOW || digitalRead(pinButtonRight) == LOW;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Mount sdcard
|
||||||
|
*/
|
||||||
|
bool Board320_240::sdcardMount() {
|
||||||
|
|
||||||
|
if (liveData->params.sdcardInit) {
|
||||||
|
Serial.print("SD card already mounted...");
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
|
||||||
|
int8_t countdown = 10;
|
||||||
|
while (1) {
|
||||||
|
Serial.print("Initializing SD card...");
|
||||||
|
/*
|
||||||
|
if (SD.begin(pinSdcardCs, pinSdcardMosi, pinSdcardMiso, pinSdcardSclk)) {
|
||||||
|
Serial.println("SD card found.");
|
||||||
|
liveData->params.sdcardInit = true;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
*/
|
||||||
|
//SPI.begin();
|
||||||
|
if (SD.begin(pinSdcardCs, SPI, SPI_FREQUENCY)) {
|
||||||
|
Serial.println("SD card found.");
|
||||||
|
liveData->params.sdcardInit = true;
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
Serial.println("Initialization failed!");
|
||||||
|
countdown--;
|
||||||
|
if (countdown <= 0) {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
delay(500);
|
||||||
|
}
|
||||||
|
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
Toggle sdcard recording
|
||||||
|
*/
|
||||||
|
void Board320_240::sdcardToggleRecording() {
|
||||||
|
|
||||||
|
}
|
||||||
|
|
||||||
#endif // BOARD320_240_CPP
|
#endif // BOARD320_240_CPP
|
||||||
|
|||||||
@@ -33,11 +33,18 @@ class Board320_240 : public BoardInterface {
|
|||||||
byte pinButtonMiddle = 0;
|
byte pinButtonMiddle = 0;
|
||||||
byte pinSpeaker = 0;
|
byte pinSpeaker = 0;
|
||||||
byte pinBrightness = 0;
|
byte pinBrightness = 0;
|
||||||
//
|
byte pinSdcardCs = 0;
|
||||||
|
byte pinSdcardMosi = 0;
|
||||||
|
byte pinSdcardMiso = 0;
|
||||||
|
byte pinSdcardSclk = 0;
|
||||||
|
//
|
||||||
void initBoard() override;
|
void initBoard() override;
|
||||||
void afterSetup() override;
|
void afterSetup() override;
|
||||||
void mainLoop() override;
|
void mainLoop() override;
|
||||||
bool skipAdapterScan() override;
|
bool skipAdapterScan() override;
|
||||||
|
// SD card
|
||||||
|
bool sdcardMount() override;
|
||||||
|
void sdcardToggleRecording() override;
|
||||||
// Basic GUI
|
// Basic GUI
|
||||||
void setBrightness(byte lcdBrightnessPerc) override;
|
void setBrightness(byte lcdBrightnessPerc) override;
|
||||||
void displayMessage(const char* row1, const char* row2) override;
|
void displayMessage(const char* row1, const char* row2) override;
|
||||||
@@ -59,7 +66,7 @@ class Board320_240 : public BoardInterface {
|
|||||||
void hideMenu() override;
|
void hideMenu() override;
|
||||||
void menuMove(bool forward);
|
void menuMove(bool forward);
|
||||||
void menuItemClick();
|
void menuItemClick();
|
||||||
//
|
//
|
||||||
void loadTestData();
|
void loadTestData();
|
||||||
//
|
//
|
||||||
};
|
};
|
||||||
|
|||||||
@@ -46,6 +46,9 @@ class BoardInterface {
|
|||||||
void resetSettings();
|
void resetSettings();
|
||||||
void loadSettings();
|
void loadSettings();
|
||||||
void customConsoleCommand(String cmd);
|
void customConsoleCommand(String cmd);
|
||||||
|
// Sdcard
|
||||||
|
virtual bool sdcardMount() {return false; };
|
||||||
|
virtual void sdcardToggleRecording()=0;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // BOARDINTERFACE_H
|
#endif // BOARDINTERFACE_H
|
||||||
|
|||||||
@@ -11,12 +11,17 @@
|
|||||||
void BoardM5stackCore::initBoard() {
|
void BoardM5stackCore::initBoard() {
|
||||||
|
|
||||||
invertDisplay = true;
|
invertDisplay = true;
|
||||||
|
|
||||||
pinButtonLeft = BUTTON_LEFT;
|
pinButtonLeft = BUTTON_LEFT;
|
||||||
pinButtonRight = BUTTON_RIGHT;
|
pinButtonRight = BUTTON_RIGHT;
|
||||||
pinButtonMiddle = BUTTON_MIDDLE;
|
pinButtonMiddle = BUTTON_MIDDLE;
|
||||||
pinSpeaker = SPEAKER_PIN;
|
pinSpeaker = SPEAKER_PIN;
|
||||||
pinBrightness = TFT_BL;
|
pinBrightness = TFT_BL;
|
||||||
|
pinSdcardCs = SDCARD_CS;
|
||||||
|
pinSdcardMosi = SDCARD_MOSI;
|
||||||
|
pinSdcardMiso = SDCARD_MISO;
|
||||||
|
pinSdcardSclk = SDCARD_SCLK;
|
||||||
|
|
||||||
// Mute speaker
|
// Mute speaker
|
||||||
//ledcWriteTone(TONE_PIN_CHANNEL, 0);
|
//ledcWriteTone(TONE_PIN_CHANNEL, 0);
|
||||||
digitalWrite(SPEAKER_PIN, 0);
|
digitalWrite(SPEAKER_PIN, 0);
|
||||||
|
|||||||
@@ -20,8 +20,12 @@
|
|||||||
// BEEP PIN
|
// BEEP PIN
|
||||||
#define SPEAKER_PIN 25
|
#define SPEAKER_PIN 25
|
||||||
#define TONE_PIN_CHANNEL 0
|
#define TONE_PIN_CHANNEL 0
|
||||||
|
|
||||||
// SDCARD
|
// SDCARD
|
||||||
#define TFCARD_CS_PIN 4
|
#define SDCARD_CS 4
|
||||||
|
#define SDCARD_MOSI 23
|
||||||
|
#define SDCARD_MISO 19
|
||||||
|
#define SDCARD_SCLK 18
|
||||||
|
|
||||||
#define BUTTON_LEFT 37
|
#define BUTTON_LEFT 37
|
||||||
#define BUTTON_MIDDLE 38
|
#define BUTTON_MIDDLE 38
|
||||||
|
|||||||
@@ -15,6 +15,10 @@ void BoardTtgoT4v13::initBoard() {
|
|||||||
pinButtonMiddle = BUTTON_MIDDLE;
|
pinButtonMiddle = BUTTON_MIDDLE;
|
||||||
//pinSpeaker = SPEAKER_PIN;
|
//pinSpeaker = SPEAKER_PIN;
|
||||||
pinBrightness = TFT_BL;
|
pinBrightness = TFT_BL;
|
||||||
|
pinSdcardCs = SDCARD_CS;
|
||||||
|
pinSdcardMosi = SDCARD_MOSI;
|
||||||
|
pinSdcardMiso = SDCARD_MISO;
|
||||||
|
pinSdcardSclk = SDCARD_SCLK;
|
||||||
|
|
||||||
Board320_240::initBoard();
|
Board320_240::initBoard();
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -20,10 +20,10 @@
|
|||||||
//#define SPI_FREQUENCY 40000000 // Maximum for ILI9341
|
//#define SPI_FREQUENCY 40000000 // Maximum for ILI9341
|
||||||
#define SPI_READ_FREQUENCY 6000000 // 6 MHz is the maximum SPI read speed for the ST7789V
|
#define SPI_READ_FREQUENCY 6000000 // 6 MHz is the maximum SPI read speed for the ST7789V
|
||||||
|
|
||||||
#define SD_CS 13
|
#define SDCARD_CS 13
|
||||||
#define SD_MOSI 15
|
#define SDCARD_MOSI 15
|
||||||
#define SD_MISO 2
|
#define SDCARD_MISO 2
|
||||||
#define SD_SCLK 14
|
#define SDCARD_SCLK 14
|
||||||
|
|
||||||
#define BUTTON_LEFT 38
|
#define BUTTON_LEFT 38
|
||||||
#define BUTTON_MIDDLE 37
|
#define BUTTON_MIDDLE 37
|
||||||
|
|||||||
@@ -11,8 +11,13 @@
|
|||||||
void LiveData::initParams() {
|
void LiveData::initParams() {
|
||||||
|
|
||||||
params.automaticShutdownTimer = 0;
|
params.automaticShutdownTimer = 0;
|
||||||
|
// SIM
|
||||||
params.lastDataSent = 0;
|
params.lastDataSent = 0;
|
||||||
params.sim800l_enabled = false;
|
params.sim800l_enabled = false;
|
||||||
|
// SD card
|
||||||
|
params.sdcardInit = false;
|
||||||
|
params.sdcardRecording = false;
|
||||||
|
// Car data
|
||||||
params.ignitionOn = false;
|
params.ignitionOn = false;
|
||||||
params.ignitionOnPrevious = false;
|
params.ignitionOnPrevious = false;
|
||||||
params.chargingStartTime = params.currentTime = 0;
|
params.chargingStartTime = params.currentTime = 0;
|
||||||
|
|||||||
@@ -31,11 +31,17 @@
|
|||||||
|
|
||||||
// Structure with realtime values
|
// Structure with realtime values
|
||||||
typedef struct {
|
typedef struct {
|
||||||
|
// System
|
||||||
time_t currentTime;
|
time_t currentTime;
|
||||||
time_t chargingStartTime;
|
time_t chargingStartTime;
|
||||||
time_t automaticShutdownTimer;
|
time_t automaticShutdownTimer;
|
||||||
|
// SIM
|
||||||
time_t lastDataSent;
|
time_t lastDataSent;
|
||||||
bool sim800l_enabled;
|
bool sim800l_enabled;
|
||||||
|
// SD card
|
||||||
|
bool sdcardInit;
|
||||||
|
bool sdcardRecording;
|
||||||
|
// Car params
|
||||||
bool ignitionOn;
|
bool ignitionOn;
|
||||||
bool ignitionOnPrevious;
|
bool ignitionOnPrevious;
|
||||||
bool forwardDriveMode;
|
bool forwardDriveMode;
|
||||||
|
|||||||
17
config.h
17
config.h
@@ -74,11 +74,11 @@ typedef struct {
|
|||||||
#define MENU_GPRS 302
|
#define MENU_GPRS 302
|
||||||
#define MENU_NTP 303
|
#define MENU_NTP 303
|
||||||
#define MENU_SDCARD 304
|
#define MENU_SDCARD 304
|
||||||
#define MENU_REMOTE_UPLOAD 305
|
#define MENU_SCREEN_ROTATION 305
|
||||||
#define MENU_SCREEN_ROTATION 306
|
#define MENU_DEFAULT_SCREEN 306
|
||||||
#define MENU_DEFAULT_SCREEN 307
|
#define MENU_SCREEN_BRIGHTNESS 307
|
||||||
#define MENU_SCREEN_BRIGHTNESS 308
|
#define MENU_PREDRAWN_GRAPHS 308
|
||||||
#define MENU_PREDRAWN_GRAPHS 309
|
#define MENU_REMOTE_UPLOAD 309
|
||||||
#define MENU_HEADLIGHTS_REMINDER 310
|
#define MENU_HEADLIGHTS_REMINDER 310
|
||||||
#define MENU_DEBUG_SCREEN 311
|
#define MENU_DEBUG_SCREEN 311
|
||||||
//
|
//
|
||||||
@@ -89,6 +89,11 @@ typedef struct {
|
|||||||
#define MENU_WIFI_ENABLED 3011
|
#define MENU_WIFI_ENABLED 3011
|
||||||
#define MENU_WIFI_SSID 3012
|
#define MENU_WIFI_SSID 3012
|
||||||
#define MENU_WIFI_PASSWORD 3013
|
#define MENU_WIFI_PASSWORD 3013
|
||||||
|
//
|
||||||
|
#define MENU_SDCARD_ENABLED 3041
|
||||||
|
#define MENU_SDCARD_AUTOSTARTLOG 3042
|
||||||
|
#define MENU_SDCARD_MOUNT_STATUS 3043
|
||||||
|
#define MENU_SDCARD_REC 3044
|
||||||
|
//
|
||||||
|
|
||||||
#endif // CONFIG_H
|
#endif // CONFIG_H
|
||||||
|
|||||||
11
menu.h
11
menu.h
@@ -63,12 +63,11 @@ MENU_ITEM menuItemsSource[100] = {
|
|||||||
{MENU_WIFI_PASSWORD, 301, -1, "Password"},
|
{MENU_WIFI_PASSWORD, 301, -1, "Password"},
|
||||||
|
|
||||||
{3040, 304, 3, "<- parent menu"},
|
{3040, 304, 3, "<- parent menu"},
|
||||||
{3041, 304, -1, "Info:"},
|
{MENU_SDCARD_ENABLED, 304, -1, "SD enabled"},
|
||||||
{3042, 304, -1, "Mount manually"},
|
{MENU_SDCARD_AUTOSTARTLOG, 304, -1, "Autostart log enabled"},
|
||||||
{3043, 304, -1, "Record now"},
|
{MENU_SDCARD_MOUNT_STATUS, 304, -1, "Status"},
|
||||||
{3044, 304, -1, "Stop recording"},
|
{MENU_SDCARD_REC, 304, -1, "Record"},
|
||||||
{3045, 304, -1, "Record on boot off/on"},
|
|
||||||
|
|
||||||
{3070, 307, 3, "<- parent menu"},
|
{3070, 307, 3, "<- parent menu"},
|
||||||
{3071, 307, -1, "Auto mode"},
|
{3071, 307, -1, "Auto mode"},
|
||||||
{3072, 307, -1, "Basic info"},
|
{3072, 307, -1, "Basic info"},
|
||||||
|
|||||||
Reference in New Issue
Block a user