projects
/
fw
/
altos
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
altos/kernel: Allow TeleGPS v2 to scale battery in telem
[fw/altos]
/
src
/
kernel
/
ao_cmd.c
diff --git
a/src/kernel/ao_cmd.c
b/src/kernel/ao_cmd.c
index 4ebaa6079368ec80164a8176d8d010914552cc9d..881f3500ab7efd4c4d5dd992eef09269a3c0d11b 100644
(file)
--- a/
src/kernel/ao_cmd.c
+++ b/
src/kernel/ao_cmd.c
@@
-3,7
+3,8
@@
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; version 2 of the License.
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
@@
-23,9
+24,15
@@
__pdata uint32_t ao_cmd_lex_u32;
__pdata char ao_cmd_lex_c;
__pdata enum ao_cmd_status ao_cmd_status;
__pdata char ao_cmd_lex_c;
__pdata enum ao_cmd_status ao_cmd_status;
-#define CMD_LEN 48
+#ifndef AO_CMD_LEN
+#if AO_PYRO_NUM
+#define AO_CMD_LEN 128
+#else
+#define AO_CMD_LEN 48
+#endif
+#endif
-static __xdata char cmd_line[CMD_LEN];
+static __xdata char cmd_line[
AO_
CMD_LEN];
static __pdata uint8_t cmd_len;
static __pdata uint8_t cmd_i;
static __pdata uint8_t cmd_len;
static __pdata uint8_t cmd_i;
@@
-43,8
+50,8
@@
backspace(void)
ao_put_string ("\010 \010");
}
ao_put_string ("\010 \010");
}
-
static
void
-readline(void)
+void
+
ao_cmd_
readline(void)
{
char c;
if (ao_echo())
{
char c;
if (ao_echo())
@@
-83,7
+90,7
@@
readline(void)
break;
}
break;
}
- if (cmd_len >= CMD_LEN - 2)
+ if (cmd_len >=
AO_
CMD_LEN - 2)
continue;
cmd_line[cmd_len++] = c;
if (ao_echo())
continue;
cmd_line[cmd_len++] = c;
if (ao_echo())
@@
-94,12
+101,13
@@
readline(void)
cmd_i = 0;
}
cmd_i = 0;
}
-void
+char
ao_cmd_lex(void)
{
ao_cmd_lex_c = '\n';
if (cmd_i < cmd_len)
ao_cmd_lex_c = cmd_line[cmd_i++];
ao_cmd_lex(void)
{
ao_cmd_lex_c = '\n';
if (cmd_i < cmd_len)
ao_cmd_lex_c = cmd_line[cmd_i++];
+ return ao_cmd_lex_c;
}
static void
}
static void
@@
-274,20
+282,35
@@
version(void)
printf("manufacturer %s\n"
"product %s\n"
"serial-number %u\n"
printf("manufacturer %s\n"
"product %s\n"
"serial-number %u\n"
-#if HAS_FLIGHT
+#if HAS_FLIGHT
|| HAS_TRACKER
"current-flight %u\n"
#endif
#if HAS_LOG
"log-format %u\n"
"current-flight %u\n"
#endif
#if HAS_LOG
"log-format %u\n"
+#if !DISABLE_LOG_SPACE
+ "log-space %lu\n"
+#endif
+#endif
+#if defined(AO_BOOT_APPLICATION_BASE) && defined(AO_BOOT_APPLICATION_BOUND)
+ "program-space %u\n"
+#endif
+#if AO_VALUE_32
+ "altitude-32 1\n"
#endif
, ao_manufacturer
, ao_product
, ao_serial_number
#endif
, ao_manufacturer
, ao_product
, ao_serial_number
-#if HAS_FLIGHT
+#if HAS_FLIGHT
|| HAS_TRACKER
, ao_flight_number
#endif
#if HAS_LOG
, ao_log_format
, ao_flight_number
#endif
#if HAS_LOG
, ao_log_format
+#if !DISABLE_LOG_SPACE
+ , (unsigned long) ao_storage_log_max
+#endif
+#endif
+#if defined(AO_BOOT_APPLICATION_BASE) && defined(AO_BOOT_APPLICATION_BOUND)
+ , (unsigned) ((uint32_t) AO_BOOT_APPLICATION_BOUND - (uint32_t) AO_BOOT_APPLICATION_BASE)
#endif
);
printf("software-version %s\n", ao_version);
#endif
);
printf("software-version %s\n", ao_version);
@@
-356,7
+379,7
@@
ao_cmd(void)
void (*__xdata func)(void);
for (;;) {
void (*__xdata func)(void);
for (;;) {
- readline();
+
ao_cmd_
readline();
ao_cmd_lex();
ao_cmd_white();
c = ao_cmd_lex_c;
ao_cmd_lex();
ao_cmd_white();
c = ao_cmd_lex_c;
@@
-374,11
+397,17
@@
ao_cmd(void)
if (func)
break;
}
if (func)
break;
}
+#if HAS_MONITOR
+ ao_mutex_get(&ao_monitoring_mutex);
+#endif
if (func)
(*func)();
else
ao_cmd_status = ao_cmd_syntax_error;
report();
if (func)
(*func)();
else
ao_cmd_status = ao_cmd_syntax_error;
report();
+#if HAS_MONITOR
+ ao_mutex_put(&ao_monitoring_mutex);
+#endif
}
}
}
}