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