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-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" 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.g++"/>
</provider>
@ -16,7 +16,7 @@
<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.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.g++"/>
</provider>

View File

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

View File

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

View File

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