code beautifying and thermometer state fix

This commit is contained in:
Wolfgang Hottgenroth
2017-06-20 14:26:15 +02:00
parent 698738a17b
commit 00a40d91ad
5 changed files with 35 additions and 33 deletions

View File

@ -5,7 +5,7 @@
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/> <provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/> <provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/> <provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
<provider class="org.eclipse.cdt.managedbuilder.language.settings.providers.GCCBuiltinSpecsDetector" console="false" env-hash="-1841358149776515456" id="ilg.gnuarmeclipse.managedbuild.cross.GCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT GCC Built-in Compiler Settings Cross ARM" parameter="${COMMAND} ${FLAGS} ${cross_toolchain_flags} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true"> <provider class="org.eclipse.cdt.managedbuilder.language.settings.providers.GCCBuiltinSpecsDetector" console="false" env-hash="219457253562610358" id="ilg.gnuarmeclipse.managedbuild.cross.GCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT GCC Built-in Compiler Settings Cross ARM" parameter="${COMMAND} ${FLAGS} ${cross_toolchain_flags} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<language-scope id="org.eclipse.cdt.core.gcc"/> <language-scope id="org.eclipse.cdt.core.gcc"/>
<language-scope id="org.eclipse.cdt.core.g++"/> <language-scope id="org.eclipse.cdt.core.g++"/>
</provider> </provider>
@ -16,7 +16,7 @@
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/> <provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/> <provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/> <provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
<provider class="org.eclipse.cdt.managedbuilder.language.settings.providers.GCCBuiltinSpecsDetector" console="false" env-hash="-1723720731251371882" id="ilg.gnuarmeclipse.managedbuild.cross.GCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT GCC Built-in Compiler Settings Cross ARM" parameter="${COMMAND} ${FLAGS} ${cross_toolchain_flags} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true"> <provider class="org.eclipse.cdt.managedbuilder.language.settings.providers.GCCBuiltinSpecsDetector" console="false" env-hash="337094672087753932" id="ilg.gnuarmeclipse.managedbuild.cross.GCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT GCC Built-in Compiler Settings Cross ARM" parameter="${COMMAND} ${FLAGS} ${cross_toolchain_flags} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
<language-scope id="org.eclipse.cdt.core.gcc"/> <language-scope id="org.eclipse.cdt.core.gcc"/>
<language-scope id="org.eclipse.cdt.core.g++"/> <language-scope id="org.eclipse.cdt.core.g++"/>
</provider> </provider>

View File

@ -18,7 +18,6 @@
const uint32_t STORAGE_MAGIC = 0xaffe000a; const uint32_t STORAGE_MAGIC = 0xaffe000a;
const uint8_t COLD_COUNT_THRESHOLD = 40; const uint8_t COLD_COUNT_THRESHOLD = 40;
const uint32_t HOT_TEMPERATURE_THRESHOLD = 5;
const char THERMOMETER_STATE_MARKS[TE_LAST] = {'I', 'H', 'C', 'C', 'C', 'B'}; const char THERMOMETER_STATE_MARKS[TE_LAST] = {'I', 'H', 'C', 'C', 'C', 'B'};
@ -26,9 +25,9 @@ const char THERMOMETER_STATE_MARKS[TE_LAST] = {'I', 'H', 'C', 'C', 'C', 'B'};
volatile tDisplay display = { volatile tDisplay display = {
.toggle = 0, .setModeTemperature = 0, .setModeTime = 0, .toggle = 0, .setModeTemperature = 0, .setModeTime = 0,
.timerState = IDLE, .timerState = TT_IDLE,
.thermometerEngineState = TE_IDLE, .thermometerEngineState = TE_IDLE,
.toggleModeState = 1, .setState = TS_IDLE,
.targetTemperature = 80, .currentTemperature = 75, .targetTemperature = 80, .currentTemperature = 75,
.targetTime = 120, .currentTime = 0, .targetTime = 120, .currentTime = 0,
.overrunTime = 0 .overrunTime = 0
@ -83,7 +82,7 @@ void thermometerEngine(void *handle) {
switch (lDisplay->thermometerEngineState) { switch (lDisplay->thermometerEngineState) {
case TE_IDLE: case TE_IDLE:
if (lDisplay->currentTemperature > (lDisplay->targetTemperature + HOT_TEMPERATURE_THRESHOLD)) { if (lDisplay->currentTemperature > lDisplay->targetTemperature) {
lDisplay->thermometerEngineState = TE_HOT; lDisplay->thermometerEngineState = TE_HOT;
lDisplay->coldCount = 0; lDisplay->coldCount = 0;
} }
@ -113,9 +112,11 @@ void thermometerEngine(void *handle) {
} }
} }
static void thermometerEngineConfirmAlarm() { static void thermometerEngineConfirmAlarmOrBlock() {
if (display.thermometerEngineState == TE_UNCONFIRMED) { if (display.thermometerEngineState == TE_UNCONFIRMED) {
display.thermometerEngineState = TE_CONFIRMED; display.thermometerEngineState = TE_CONFIRMED;
} else {
display.thermometerEngineState = TE_BLOCKED;
} }
} }
@ -147,7 +148,7 @@ void clearSetMode(void *handle) {
tDisplay *lDisplay = (tDisplay*) handle; tDisplay *lDisplay = (tDisplay*) handle;
lDisplay->setModeTemperature = 0; lDisplay->setModeTemperature = 0;
lDisplay->setModeTime = 0; lDisplay->setModeTime = 0;
lDisplay->toggleModeState = 1; lDisplay->setState = TS_SET_TEMPERATURE;
} }
static void disableSetModeTimer() { static void disableSetModeTimer() {
@ -160,25 +161,25 @@ static void reEnableSetModeTimer() {
} }
static void toggleSetMode() { static void toggleSetMode() {
switch (display.toggleModeState) { switch (display.setState) {
default: default:
case 0: case TS_IDLE:
disableSetModeTimer(); disableSetModeTimer();
display.setModeTemperature = 0; display.setModeTemperature = 0;
display.setModeTime = 0; display.setModeTime = 0;
display.toggleModeState = 1; display.setState = TS_SET_TEMPERATURE;
break; break;
case 1: case TS_SET_TEMPERATURE:
reEnableSetModeTimer(); reEnableSetModeTimer();
display.setModeTemperature = 1; display.setModeTemperature = 1;
display.setModeTime = 0; display.setModeTime = 0;
display.toggleModeState = 2; display.setState = TS_SET_TIME;
break; break;
case 2: case TS_SET_TIME:
reEnableSetModeTimer(); reEnableSetModeTimer();
display.setModeTemperature = 0; display.setModeTemperature = 0;
display.setModeTime = 1; display.setModeTime = 1;
display.toggleModeState = 0; display.setState = TS_IDLE;
break; break;
} }
} }
@ -224,10 +225,10 @@ void displayDecValue() {
void buttonShort() { void buttonShort() {
if (display.setModeTemperature == 1 || display.setModeTime == 1) { if (display.setModeTemperature == 1 || display.setModeTime == 1) {
toggleSetMode(); toggleSetMode();
} else if (display.timerState == IDLE) { } else if (display.timerState == TT_IDLE) {
startTimer(); startTimer();
thermometerEngineConfirmAlarm(); thermometerEngineConfirmAlarmOrBlock();
} else if (display.timerState == RUNNING || display.timerState == OVERRUN) { } else if (display.timerState == TT_RUNNING || display.timerState == TT_OVERRUN) {
stopTimer(); stopTimer();
thermometerEngineUnblock(); thermometerEngineUnblock();
disableAlarm(); disableAlarm();
@ -235,7 +236,7 @@ void buttonShort() {
} }
void buttonLong() { void buttonLong() {
if (display.timerState == IDLE) { if (display.timerState == TT_IDLE) {
toggleSetMode(); toggleSetMode();
} }
} }

View File

@ -15,6 +15,7 @@
typedef enum { TE_IDLE = 0, TE_HOT, TE_COLD, TE_UNCONFIRMED, TE_CONFIRMED, TE_BLOCKED, TE_LAST } tThermometerEngineState; typedef enum { TE_IDLE = 0, TE_HOT, TE_COLD, TE_UNCONFIRMED, TE_CONFIRMED, TE_BLOCKED, TE_LAST } tThermometerEngineState;
typedef enum { TS_IDLE = 0, TS_SET_TEMPERATURE, TS_SET_TIME } tSetState;
typedef struct { typedef struct {
uint32_t toggle; uint32_t toggle;
@ -23,7 +24,7 @@ typedef struct {
tTimerState timerState; tTimerState timerState;
tThermometerEngineState thermometerEngineState; tThermometerEngineState thermometerEngineState;
uint8_t coldCount; uint8_t coldCount;
uint32_t toggleModeState; tSetState setState;
uint32_t targetTemperature; uint32_t targetTemperature;
uint32_t currentTemperature; uint32_t currentTemperature;
uint32_t targetTime; uint32_t targetTime;

View File

@ -15,33 +15,33 @@
extern tDisplay display; extern tDisplay display;
void startTimer() { void startTimer() {
display.timerState = STARTED; display.timerState = TT_STARTED;
} }
void stopTimer() { void stopTimer() {
display.timerState = IDLE; display.timerState = TT_IDLE;
} }
void secondTick(void *handle) { void secondTick(void *handle) {
tDisplay *lDisplay = (tDisplay*) handle; tDisplay *lDisplay = (tDisplay*) handle;
switch (lDisplay->timerState) { switch (lDisplay->timerState) {
case STARTED: case TT_STARTED:
lDisplay->currentTime = lDisplay->targetTime; lDisplay->currentTime = lDisplay->targetTime;
lDisplay->overrunTime = 0; lDisplay->overrunTime = 0;
lDisplay->timerState = RUNNING; lDisplay->timerState = TT_RUNNING;
break; break;
case RUNNING: case TT_RUNNING:
lDisplay->currentTime -= 1; lDisplay->currentTime -= 1;
if (lDisplay->currentTime == 0) { if (lDisplay->currentTime == 0) {
enableAlarm(TIME_ALARM); enableAlarm(TIME_ALARM);
lDisplay->timerState = OVERRUN; lDisplay->timerState = TT_OVERRUN;
} }
break; break;
case OVERRUN: case TT_OVERRUN:
lDisplay->overrunTime += 1; lDisplay->overrunTime += 1;
break; break;
case IDLE: case TT_IDLE:
; ;
break; break;
default: default:

View File

@ -9,11 +9,11 @@
#define TIMER_H_ #define TIMER_H_
typedef enum { typedef enum {
IDLE = 0, TT_IDLE = 0,
STARTED = 1, TT_STARTED,
RUNNING = 2, TT_RUNNING,
OVERRUN = 3, TT_OVERRUN,
MAX = 0xffffffff TT_MAX
} tTimerState; } tTimerState;