code beautifying and thermometer state fix
This commit is contained in:
parent
698738a17b
commit
00a40d91ad
@ -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 "${INPUTS}"" 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 "${INPUTS}"" 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 "${INPUTS}"" 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 "${INPUTS}"" prefer-non-shared="true">
|
||||
<language-scope id="org.eclipse.cdt.core.gcc"/>
|
||||
<language-scope id="org.eclipse.cdt.core.g++"/>
|
||||
</provider>
|
||||
|
35
my_src/hmi.c
35
my_src/hmi.c
@ -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();
|
||||
}
|
||||
}
|
||||
|
@ -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;
|
||||
|
@ -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:
|
||||
|
@ -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;
|
||||
|
||||
|
||||
|
Loading…
x
Reference in New Issue
Block a user