Shrink GUI code and simplify LCD rotation. (#300)
* Inline more methods in FRToSI2C. * Shrink down GUI code. * Simplify LCD rotation handling. * Extract version headers.
This commit is contained in:
committed by
Ben V. Brown
parent
a576f44ba2
commit
50fe2bcff1
@@ -12,8 +12,16 @@
|
|||||||
|
|
||||||
class FRToSI2C {
|
class FRToSI2C {
|
||||||
public:
|
public:
|
||||||
FRToSI2C(I2C_HandleTypeDef* i2chandle);
|
|
||||||
void FRToSInit();
|
FRToSI2C(I2C_HandleTypeDef *i2chandle) : i2c(i2chandle),
|
||||||
|
I2CSemaphore(nullptr) {
|
||||||
|
}
|
||||||
|
|
||||||
|
void FRToSInit() {
|
||||||
|
I2CSemaphore = xSemaphoreCreateBinary();
|
||||||
|
xSemaphoreGive(I2CSemaphore);
|
||||||
|
}
|
||||||
|
|
||||||
void CpltCallback(); //Normal Tx Callback
|
void CpltCallback(); //Normal Tx Callback
|
||||||
|
|
||||||
void Mem_Read(uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize,
|
void Mem_Read(uint16_t DevAddress, uint16_t MemAddress, uint16_t MemAddSize,
|
||||||
|
|||||||
@@ -7,11 +7,6 @@
|
|||||||
|
|
||||||
#include "FRToSI2C.hpp"
|
#include "FRToSI2C.hpp"
|
||||||
|
|
||||||
FRToSI2C::FRToSI2C(I2C_HandleTypeDef* i2chandle) {
|
|
||||||
i2c = i2chandle;
|
|
||||||
I2CSemaphore = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
void FRToSI2C::CpltCallback() {
|
void FRToSI2C::CpltCallback() {
|
||||||
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
|
BaseType_t xHigherPriorityTaskWoken = pdFALSE;
|
||||||
i2c->State = HAL_I2C_STATE_READY;//Force state reset
|
i2c->State = HAL_I2C_STATE_READY;//Force state reset
|
||||||
@@ -19,8 +14,6 @@ void FRToSI2C::CpltCallback() {
|
|||||||
xSemaphoreGiveFromISR(I2CSemaphore, &xHigherPriorityTaskWoken);
|
xSemaphoreGiveFromISR(I2CSemaphore, &xHigherPriorityTaskWoken);
|
||||||
portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
|
portYIELD_FROM_ISR(xHigherPriorityTaskWoken);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void FRToSI2C::Mem_Read(uint16_t DevAddress, uint16_t MemAddress,
|
void FRToSI2C::Mem_Read(uint16_t DevAddress, uint16_t MemAddress,
|
||||||
@@ -69,14 +62,7 @@ void FRToSI2C::Mem_Write(uint16_t DevAddress, uint16_t MemAddress,
|
|||||||
} else {
|
} else {
|
||||||
NVIC_SystemReset();
|
NVIC_SystemReset();
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
void FRToSI2C::FRToSInit() {
|
|
||||||
I2CSemaphore = xSemaphoreCreateBinary();
|
|
||||||
xSemaphoreGive(I2CSemaphore);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void FRToSI2C::Transmit(uint16_t DevAddress, uint8_t* pData, uint16_t Size) {
|
void FRToSI2C::Transmit(uint16_t DevAddress, uint8_t* pData, uint16_t Size) {
|
||||||
|
|||||||
@@ -646,55 +646,40 @@ static void settings_setCalibrateVIN(void) {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
static void settings_displayCalibrateVIN(void) {
|
static void displayMenu(size_t index) {
|
||||||
printShortDescription(14, 5);
|
|
||||||
}
|
|
||||||
static void settings_displaySolderingMenu(void) {
|
|
||||||
//Call into the menu
|
//Call into the menu
|
||||||
lcd.setFont(1);
|
lcd.setFont(1);
|
||||||
lcd.setCursor(0, 0);
|
lcd.setCursor(0, 0);
|
||||||
//Draw title
|
//Draw title
|
||||||
lcd.print(SettingsMenuEntries[0]);
|
lcd.print(SettingsMenuEntries[index]);
|
||||||
//Draw symbol
|
//Draw symbol
|
||||||
//16 pixel wide image
|
//16 pixel wide image
|
||||||
lcd.drawArea(96 - 16, 0, 16, 16, (&SettingsMenuIcons[(16 * 2) * 0]));
|
lcd.drawArea(96 - 16, 0, 16, 16, (&SettingsMenuIcons[(16 * 2) * index]));
|
||||||
|
}
|
||||||
|
|
||||||
|
static void settings_displayCalibrateVIN(void) {
|
||||||
|
printShortDescription(14, 5);
|
||||||
|
}
|
||||||
|
static void settings_displaySolderingMenu(void) {
|
||||||
|
displayMenu(0);
|
||||||
}
|
}
|
||||||
static void settings_enterSolderingMenu(void) {
|
static void settings_enterSolderingMenu(void) {
|
||||||
gui_Menu(solderingMenu);
|
gui_Menu(solderingMenu);
|
||||||
}
|
}
|
||||||
static void settings_displayPowerMenu(void) {
|
static void settings_displayPowerMenu(void) {
|
||||||
lcd.setFont(1);
|
displayMenu(1);
|
||||||
lcd.setCursor(0, 0);
|
|
||||||
//Draw title
|
|
||||||
lcd.print(SettingsMenuEntries[1]);
|
|
||||||
//Draw symbol
|
|
||||||
//16 pixel wide image
|
|
||||||
lcd.drawArea(96 - 16, 0, 16, 16, (&SettingsMenuIcons[(16 * 2) * 1]));
|
|
||||||
}
|
}
|
||||||
static void settings_enterPowerMenu(void) {
|
static void settings_enterPowerMenu(void) {
|
||||||
gui_Menu(PowerMenu);
|
gui_Menu(PowerMenu);
|
||||||
}
|
}
|
||||||
static void settings_displayUIMenu(void) {
|
static void settings_displayUIMenu(void) {
|
||||||
lcd.setFont(1);
|
displayMenu(2);
|
||||||
lcd.setCursor(0, 0);
|
|
||||||
//Draw title
|
|
||||||
lcd.print(SettingsMenuEntries[2]);
|
|
||||||
//Draw symbol
|
|
||||||
//16 pixel wide image
|
|
||||||
lcd.drawArea(96 - 16, 0, 16, 16, (&SettingsMenuIcons[(16 * 2) * 2]));
|
|
||||||
}
|
}
|
||||||
static void settings_enterUIMenu(void) {
|
static void settings_enterUIMenu(void) {
|
||||||
gui_Menu(UIMenu);
|
gui_Menu(UIMenu);
|
||||||
}
|
}
|
||||||
static void settings_displayAdvancedMenu(void) {
|
static void settings_displayAdvancedMenu(void) {
|
||||||
lcd.setFont(1);
|
displayMenu(3);
|
||||||
lcd.setCursor(0, 0);
|
|
||||||
//Draw title
|
|
||||||
lcd.print(SettingsMenuEntries[3]);
|
|
||||||
//Draw symbol
|
|
||||||
//16 pixel wide image
|
|
||||||
lcd.drawArea(96 - 16, 0, 16, 16, (&SettingsMenuIcons[(16 * 2) * 3]));
|
|
||||||
|
|
||||||
}
|
}
|
||||||
static void settings_enterAdvancedMenu(void) {
|
static void settings_enterAdvancedMenu(void) {
|
||||||
gui_Menu(advancedMenu);
|
gui_Menu(advancedMenu);
|
||||||
|
|||||||
@@ -580,6 +580,16 @@ static void gui_solderingMode() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static const char *HEADERS[] = {
|
||||||
|
__DATE__,
|
||||||
|
"Heap: ",
|
||||||
|
"HWMG: ",
|
||||||
|
"HWMP: ",
|
||||||
|
"HWMM: ",
|
||||||
|
"Time: ",
|
||||||
|
"Move: "
|
||||||
|
};
|
||||||
|
|
||||||
void showVersion(void) {
|
void showVersion(void) {
|
||||||
uint8_t screen = 0;
|
uint8_t screen = 0;
|
||||||
ButtonState b;
|
ButtonState b;
|
||||||
@@ -590,35 +600,27 @@ void showVersion(void) {
|
|||||||
lcd.print((char *) "V2.05 PCB"); // Print version number
|
lcd.print((char *) "V2.05 PCB"); // Print version number
|
||||||
lcd.printNumber(PCBVersion, 1); //Print PCB ID number
|
lcd.printNumber(PCBVersion, 1); //Print PCB ID number
|
||||||
lcd.setCursor(0, 8); // second line
|
lcd.setCursor(0, 8); // second line
|
||||||
|
lcd.print(HEADERS[screen]);
|
||||||
switch (screen) {
|
switch (screen) {
|
||||||
case 0:
|
|
||||||
lcd.print(__DATE__); // print the compile date
|
|
||||||
break;
|
|
||||||
case 1:
|
case 1:
|
||||||
lcd.print("Heap: ");
|
|
||||||
lcd.printNumber(xPortGetFreeHeapSize(), 5);
|
lcd.printNumber(xPortGetFreeHeapSize(), 5);
|
||||||
break;
|
break;
|
||||||
case 2:
|
case 2:
|
||||||
lcd.print("HWMG: ");
|
|
||||||
lcd.printNumber(uxTaskGetStackHighWaterMark(GUITaskHandle), 5);
|
lcd.printNumber(uxTaskGetStackHighWaterMark(GUITaskHandle), 5);
|
||||||
break;
|
break;
|
||||||
case 3:
|
case 3:
|
||||||
lcd.print("HWMP: ");
|
|
||||||
lcd.printNumber(uxTaskGetStackHighWaterMark(PIDTaskHandle), 5);
|
lcd.printNumber(uxTaskGetStackHighWaterMark(PIDTaskHandle), 5);
|
||||||
break;
|
break;
|
||||||
case 4:
|
case 4:
|
||||||
lcd.print("HWMM: ");
|
|
||||||
lcd.printNumber(uxTaskGetStackHighWaterMark(MOVTaskHandle), 5);
|
lcd.printNumber(uxTaskGetStackHighWaterMark(MOVTaskHandle), 5);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case 5:
|
case 5:
|
||||||
lcd.print("Time: ");
|
|
||||||
lcd.printNumber(xTaskGetTickCount() / 100, 5);
|
lcd.printNumber(xTaskGetTickCount() / 100, 5);
|
||||||
break;
|
break;
|
||||||
case 6:
|
case 6:
|
||||||
lcd.print("Move: ");
|
|
||||||
lcd.printNumber(lastMovementTime / 100, 5);
|
lcd.printNumber(lastMovementTime / 100, 5);
|
||||||
|
break;
|
||||||
|
default:
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -640,19 +642,7 @@ void startGUITask(void const *argument) {
|
|||||||
uint8_t tempWarningState = 0;
|
uint8_t tempWarningState = 0;
|
||||||
bool buttonLockout = false;
|
bool buttonLockout = false;
|
||||||
bool tempOnDisplay = false;
|
bool tempOnDisplay = false;
|
||||||
switch (systemSettings.OrientationMode) {
|
lcd.setRotation(systemSettings.OrientationMode & 1);
|
||||||
case 0:
|
|
||||||
lcd.setRotation(false);
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
lcd.setRotation(true);
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
lcd.setRotation(false);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
uint32_t ticks = xTaskGetTickCount();
|
uint32_t ticks = xTaskGetTickCount();
|
||||||
ticks += 400; //4 seconds from now
|
ticks += 400; //4 seconds from now
|
||||||
while (xTaskGetTickCount() < ticks) {
|
while (xTaskGetTickCount() < ticks) {
|
||||||
@@ -889,27 +879,12 @@ void startPIDTask(void const *argument) {
|
|||||||
#define MOVFilter 8
|
#define MOVFilter 8
|
||||||
void startMOVTask(void const *argument) {
|
void startMOVTask(void const *argument) {
|
||||||
osDelay(250); // wait for accelerometer to stabilize
|
osDelay(250); // wait for accelerometer to stabilize
|
||||||
switch (systemSettings.OrientationMode) {
|
lcd.setRotation(systemSettings.OrientationMode & 1);
|
||||||
case 0:
|
|
||||||
lcd.setRotation(false);
|
|
||||||
break;
|
|
||||||
case 1:
|
|
||||||
lcd.setRotation(true);
|
|
||||||
break;
|
|
||||||
case 2:
|
|
||||||
lcd.setRotation(false);
|
|
||||||
break;
|
|
||||||
default:
|
|
||||||
break;
|
|
||||||
}
|
|
||||||
lastMovementTime = 0;
|
lastMovementTime = 0;
|
||||||
int16_t datax[MOVFilter];
|
int16_t datax[MOVFilter] = { 0 };
|
||||||
int16_t datay[MOVFilter];
|
int16_t datay[MOVFilter] = { 0 };
|
||||||
int16_t dataz[MOVFilter];
|
int16_t dataz[MOVFilter] = { 0 };
|
||||||
uint8_t currentPointer = 0;
|
uint8_t currentPointer = 0;
|
||||||
memset(datax, 0, MOVFilter * sizeof(int16_t));
|
|
||||||
memset(datay, 0, MOVFilter * sizeof(int16_t));
|
|
||||||
memset(dataz, 0, MOVFilter * sizeof(int16_t));
|
|
||||||
int16_t tx, ty, tz;
|
int16_t tx, ty, tz;
|
||||||
int32_t avgx, avgy, avgz;
|
int32_t avgx, avgy, avgz;
|
||||||
if (systemSettings.sensitivity > 9)
|
if (systemSettings.sensitivity > 9)
|
||||||
|
|||||||
Reference in New Issue
Block a user