1
0
forked from me/IronOS

Add ability to start into sleep

This commit is contained in:
Ben V. Brown
2017-08-09 10:07:34 +10:00
parent 8cc7d452ce
commit 9969c66520
5 changed files with 19 additions and 10 deletions

View File

@@ -12,7 +12,7 @@
#include <stdint.h> #include <stdint.h>
#include "stm32f10x_flash.h" #include "stm32f10x_flash.h"
#include "Oled.h" #include "Oled.h"
#define SETTINGSVERSION 16 /*Change this if you change the struct below to prevent people getting out of sync*/ #define SETTINGSVERSION 17 /*Change this if you change the struct below to prevent people getting out of sync*/
//Display Speeds //Display Speeds
#define DISPLAYMODE_FAST (0x00) #define DISPLAYMODE_FAST (0x00)
#define DISPLAYMODE_MEDIUM (0x01) #define DISPLAYMODE_MEDIUM (0x01)
@@ -35,7 +35,7 @@ typedef struct {
uint8_t displayTempInF:1; //If we need to convert the C reading to F uint8_t displayTempInF:1; //If we need to convert the C reading to F
uint8_t OrientationMode:2; //If true we want to invert the display for lefties uint8_t OrientationMode:2; //If true we want to invert the display for lefties
uint8_t sensitivity:5; //Sensitivity of accelerometer (5 bits) uint8_t sensitivity:5; //Sensitivity of accelerometer (5 bits)
uint8_t autoStart:1; //Should the unit automatically jump straight into soldering mode when power is applied uint8_t autoStart:2; //Should the unit automatically jump straight into soldering mode when power is applied
uint8_t ShutdownTime:6; //Time until unit shuts down if left alone uint8_t ShutdownTime:6; //Time until unit shuts down if left alone
uint8_t displayUpdateSpeed:2; //How fast the display updates / temp showing mode uint8_t displayUpdateSpeed:2; //How fast the display updates / temp showing mode
uint8_t temperatureRounding:2; //Rounding mode for the temperature uint8_t temperatureRounding:2; //Rounding mode for the temperature

View File

@@ -19,6 +19,7 @@ extern const char* UVLOWarningString; //Fixed width 8 chars
extern const char* CoolingPromptString; //Fixed width 5 chars extern const char* CoolingPromptString; //Fixed width 5 chars
extern const char SettingTrueChar; extern const char SettingTrueChar;
extern const char SettingFalseChar; extern const char SettingFalseChar;
extern const char SettingSleepChar;
extern const char SettingFastChar; extern const char SettingFastChar;
extern const char SettingMediumChar; extern const char SettingMediumChar;
extern const char SettingSlowChar; extern const char SettingSlowChar;

View File

@@ -14,13 +14,15 @@ void setup();
int main(void) { int main(void) {
setup();/*Setup the system*/ setup();/*Setup the system*/
if (systemSettings.autoStart) if (systemSettings.autoStart == 1)
operatingMode = SOLDERING; operatingMode = SOLDERING;
else if (systemSettings.autoStart == 2)
operatingMode = SLEEP;
while (1) { while (1) {
Clear_Watchdog(); //reset the Watch dog timer Clear_Watchdog(); //reset the Watch dog timer
ProcessUI(); ProcessUI();
DrawUI(); DrawUI();
OLED_Sync();//Write out the screen buffer OLED_Sync(); //Write out the screen buffer
delayMs(15); //Slow the system down waiting for the iron. delayMs(15); //Slow the system down waiting for the iron.
if (systemSettings.OrientationMode == 2) { if (systemSettings.OrientationMode == 2) {
@@ -28,8 +30,7 @@ int main(void) {
if (RotationChangedFlag) { if (RotationChangedFlag) {
OLED_SetOrientation(!getOrientation()); OLED_SetOrientation(!getOrientation());
RotationChangedFlag = 0; RotationChangedFlag = 0;
} } else if (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_3) == Bit_RESET) {
else if (GPIO_ReadInputDataBit(GPIOB, GPIO_Pin_3) == Bit_RESET) {
OLED_SetOrientation(!getOrientation()); OLED_SetOrientation(!getOrientation());
RotationChangedFlag = 0; RotationChangedFlag = 0;
//^ This is a workaround for the IRQ being set off before we have the handler setup and enabled. //^ This is a workaround for the IRQ being set off before we have the handler setup and enabled.

View File

@@ -218,7 +218,8 @@ void ProcessUI() {
systemSettings.powerDisplay = !systemSettings.powerDisplay; systemSettings.powerDisplay = !systemSettings.powerDisplay;
break; break;
case AUTOSTART: case AUTOSTART:
systemSettings.autoStart = !systemSettings.autoStart; systemSettings.autoStart++;
systemSettings.autoStart %=3;
break; break;
case COOLINGBLINK: case COOLINGBLINK:
systemSettings.coolingTempBlink = systemSettings.coolingTempBlink =
@@ -660,6 +661,7 @@ void DrawUI() {
case 0: case 0:
OLED_DrawChar(SettingFalseChar, 7); OLED_DrawChar(SettingFalseChar, 7);
break; break;
} }
break; break;
case AUTOSTART: case AUTOSTART:
@@ -671,6 +673,9 @@ void DrawUI() {
case 0: case 0:
OLED_DrawChar(SettingFalseChar, 7); OLED_DrawChar(SettingFalseChar, 7);
break; break;
case 2:
OLED_DrawChar(SettingSleepChar, 7);
break;
} }
break; break;
case COOLINGBLINK: case COOLINGBLINK:

View File

@@ -18,10 +18,10 @@ const char* SettingsLongNames[14] =
" Temperature Unit", " Temperature Rounding Amount", " Temperature Unit", " Temperature Rounding Amount",
" Temperature Display Update Rate", " Temperature Display Update Rate",
" Display Orientation <A. Automatic L. Left Handed R. Right Handed>", " Display Orientation <A. Automatic L. Left Handed R. Right Handed>",
" Enable front key boost 450C mode when soldering", " Enable front key enters boost mode 450C mode when soldering",
" Temperature when in boost mode", " Temperature when in \"boost\" mode",
" Changes the arrows to a power display when soldering", " Changes the arrows to a power display when soldering",
" Automatically starts the iron into soldering on power up.", " Automatically starts the iron into soldering on power up.T=Soldering, S= Sleep mode,F=Off",
" Blink the temperature on the cooling screen while the tip is still hot." }; " Blink the temperature on the cooling screen while the tip is still hot." };
const char* TempCalStatus[3] = { "Cal Temp", "Cal OK ", "Cal Fail" }; //All fixed 8 chars const char* TempCalStatus[3] = { "Cal Temp", "Cal OK ", "Cal Fail" }; //All fixed 8 chars
@@ -29,6 +29,8 @@ const char* UVLOWarningString = "Low Volt"; //Fixed width 8 chars
const char* CoolingPromptString = "Cool "; //Fixed width 5 chars const char* CoolingPromptString = "Cool "; //Fixed width 5 chars
const char SettingTrueChar = 'T'; const char SettingTrueChar = 'T';
const char SettingFalseChar = 'F'; const char SettingFalseChar = 'F';
const char SettingSleepChar = 'S';
const char SettingFastChar = 'F'; const char SettingFastChar = 'F';
const char SettingMediumChar = 'M'; const char SettingMediumChar = 'M';
const char SettingSlowChar = 'S'; const char SettingSlowChar = 'S';