projects
/
fw
/
altos
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
altos: Add Detherm log format (easymini without ADC)
[fw/altos]
/
src
/
kernel
/
ao_pyro.c
diff --git
a/src/kernel/ao_pyro.c
b/src/kernel/ao_pyro.c
index 154edad5f0f7e4436361644d52705efa941e3c0f..43e73de4a897cfa97ee6cdc851f4c7ef373727f1 100644
(file)
--- a/
src/kernel/ao_pyro.c
+++ b/
src/kernel/ao_pyro.c
@@
-375,9
+375,7
@@
ao_pyro(void)
ao_sleep(&ao_flight_state);
for (;;) {
ao_sleep(&ao_flight_state);
for (;;) {
- ao_alarm(AO_MS_TO_TICKS(100));
- ao_sleep(&ao_pyro_wakeup);
- ao_clear_alarm();
+ ao_sleep_for(&ao_pyro_wakeup, AO_MS_TO_TICKS(100));
if (ao_flight_state >= ao_flight_landed)
break;
any_waiting = ao_pyro_check();
if (ao_flight_state >= ao_flight_landed)
break;
any_waiting = ao_pyro_check();
@@
-499,13
+497,26
@@
ao_pyro_set(void)
}
pyro_tmp.flags |= ao_pyro_values[v].flag;
if (ao_pyro_values[v].offset != NO_VALUE) {
}
pyro_tmp.flags |= ao_pyro_values[v].flag;
if (ao_pyro_values[v].offset != NO_VALUE) {
+ uint8_t negative = 0;
+ ao_cmd_white();
+ if (ao_cmd_lex_c == '-') {
+ negative = 1;
+ ao_cmd_lex();
+ }
ao_cmd_decimal();
if (ao_cmd_status != ao_cmd_success)
return;
ao_cmd_decimal();
if (ao_cmd_status != ao_cmd_success)
return;
- if (ao_pyro_values[v].flag & AO_PYRO_8_BIT_VALUE)
+ if (ao_pyro_values[v].flag & AO_PYRO_8_BIT_VALUE) {
+ if (negative) {
+ ao_cmd_status = ao_cmd_syntax_error;
+ return;
+ }
*((uint8_t *) ((char *) &pyro_tmp + ao_pyro_values[v].offset)) = ao_cmd_lex_i;
*((uint8_t *) ((char *) &pyro_tmp + ao_pyro_values[v].offset)) = ao_cmd_lex_i;
- else
+ } else {
+ if (negative)
+ ao_cmd_lex_i = -ao_cmd_lex_i;
*((int16_t *) ((char *) &pyro_tmp + ao_pyro_values[v].offset)) = ao_cmd_lex_i;
*((int16_t *) ((char *) &pyro_tmp + ao_pyro_values[v].offset)) = ao_cmd_lex_i;
+ }
}
}
_ao_config_edit_start();
}
}
_ao_config_edit_start();