projects
/
fw
/
altos
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
altos: Remove 8051 address space specifiers
[fw/altos]
/
src
/
kernel
/
ao_cmd.c
diff --git
a/src/kernel/ao_cmd.c
b/src/kernel/ao_cmd.c
index d2f583ef7d8c795bf6cafe18bd6db3faebf9a164..d28db5b7ec06cbd2abc9b31868e123dc3d4cf598 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
@@
-18,23
+19,25
@@
#include "ao.h"
#include "ao_task.h"
#include "ao.h"
#include "ao_task.h"
-
__pdata
uint16_t ao_cmd_lex_i;
-
__pdata
uint32_t ao_cmd_lex_u32;
-
__pdata
char ao_cmd_lex_c;
-
__pdata
enum ao_cmd_status ao_cmd_status;
+uint16_t ao_cmd_lex_i;
+uint32_t ao_cmd_lex_u32;
+char ao_cmd_lex_c;
+enum ao_cmd_status ao_cmd_status;
+#ifndef AO_CMD_LEN
#if AO_PYRO_NUM
#if AO_PYRO_NUM
-#define CMD_LEN 128
+#define
AO_
CMD_LEN 128
#else
#else
-#define CMD_LEN 48
+#define AO_CMD_LEN 48
+#endif
#endif
#endif
-static
__xdata char cmd_line[
CMD_LEN];
-static
__pdata
uint8_t cmd_len;
-static
__pdata
uint8_t cmd_i;
+static
char cmd_line[AO_
CMD_LEN];
+static uint8_t cmd_len;
+static uint8_t cmd_i;
void
void
-ao_put_string(
__code
char *s)
+ao_put_string(
const
char *s)
{
char c;
while ((c = *s++))
{
char c;
while ((c = *s++))
@@
-47,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())
@@
-87,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())
@@
-98,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
@@
-192,7
+196,7
@@
ao_cmd_hexbyte(void)
void
ao_cmd_hex(void)
{
void
ao_cmd_hex(void)
{
-
__pdata
uint8_t r = ao_cmd_lex_error;
+ uint8_t r = ao_cmd_lex_error;
int8_t n;
ao_cmd_lex_i = 0;
int8_t n;
ao_cmd_lex_i = 0;
@@
-210,7
+214,7
@@
ao_cmd_hex(void)
}
void
}
void
-ao_cmd_decimal(void)
__reentrant
+ao_cmd_decimal(void)
{
uint8_t r = ao_cmd_lex_error;
{
uint8_t r = ao_cmd_lex_error;
@@
-230,7
+234,7
@@
ao_cmd_decimal(void) __reentrant
}
uint8_t
}
uint8_t
-ao_match_word(
__code
char *word)
+ao_match_word(
const
char *word)
{
while (*word) {
if (ao_cmd_lex_c != *word) {
{
while (*word) {
if (ao_cmd_lex_c != *word) {
@@
-300,13
+304,13
@@
version(void)
, ao_flight_number
#endif
#if HAS_LOG
, ao_flight_number
#endif
#if HAS_LOG
- ,
ao_log_format
+ ,
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)
#if !DISABLE_LOG_SPACE
, (unsigned long) ao_storage_log_max
#endif
#endif
#if defined(AO_BOOT_APPLICATION_BASE) && defined(AO_BOOT_APPLICATION_BOUND)
- , (u
int32_t) AO_BOOT_APPLICATION_BOUND - (uint32_t) AO_BOOT_APPLICATION_BASE
+ , (u
nsigned) ((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);
@@
-317,16
+321,16
@@
version(void)
#define NUM_CMDS 11
#endif
#define NUM_CMDS 11
#endif
-static
__code struct ao_cmds *__xdata
(ao_cmds[NUM_CMDS]);
-static
__pdata
uint8_t ao_ncmds;
+static
const struct ao_cmds *
(ao_cmds[NUM_CMDS]);
+static uint8_t ao_ncmds;
static void
help(void)
{
static void
help(void)
{
-
__pdata
uint8_t cmds;
-
__pdata
uint8_t cmd;
-
__code struct ao_cmds * __pdata
cs;
-
__code
const char *h;
+ uint8_t cmds;
+ uint8_t cmd;
+
const struct ao_cmds *
cs;
+ const char *h;
uint8_t e;
for (cmds = 0; cmds < ao_ncmds; cmds++) {
uint8_t e;
for (cmds = 0; cmds < ao_ncmds; cmds++) {
@@
-351,7
+355,7
@@
report(void)
switch(ao_cmd_status) {
case ao_cmd_lex_error:
case ao_cmd_syntax_error:
switch(ao_cmd_status) {
case ao_cmd_lex_error:
case ao_cmd_syntax_error:
-
puts("Syntax error
");
+
ao_put_string("Syntax error\n
");
ao_cmd_status = 0;
default:
break;
ao_cmd_status = 0;
default:
break;
@@
-359,7
+363,7
@@
report(void)
}
void
}
void
-ao_cmd_register(
__code
struct ao_cmds *cmds)
+ao_cmd_register(
const
struct ao_cmds *cmds)
{
if (ao_ncmds >= NUM_CMDS)
ao_panic(AO_PANIC_CMD);
{
if (ao_ncmds >= NUM_CMDS)
ao_panic(AO_PANIC_CMD);
@@
-369,13
+373,13
@@
ao_cmd_register(__code struct ao_cmds *cmds)
void
ao_cmd(void)
{
void
ao_cmd(void)
{
-
__pdata
char c;
+ char c;
uint8_t cmd, cmds;
uint8_t cmd, cmds;
-
__code struct ao_cmds * __xdata
cs;
- void (*
__xdata
func)(void);
+
const struct ao_cmds *
cs;
+ void (*func)(void);
for (;;) {
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;
@@
-393,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
}
}
}
}
@@
-413,11
+423,13
@@
ao_loader(void)
}
#endif
}
#endif
-__xdata struct ao_task ao_cmd_task;
+#if HAS_TASK
+struct ao_task ao_cmd_task;
+#endif
-
__code struct ao_cmds
ao_base_cmds[] = {
+
const struct ao_cmds
ao_base_cmds[] = {
{ help, "?\0Help" },
{ help, "?\0Help" },
-#if HAS_TASK_INFO
+#if HAS_TASK_INFO
&& HAS_TASK
{ ao_task_info, "T\0Tasks" },
#endif
{ echo, "E <0 off, 1 on>\0Echo" },
{ ao_task_info, "T\0Tasks" },
#endif
{ echo, "E <0 off, 1 on>\0Echo" },
@@
-435,5
+447,7
@@
void
ao_cmd_init(void)
{
ao_cmd_register(&ao_base_cmds[0]);
ao_cmd_init(void)
{
ao_cmd_register(&ao_base_cmds[0]);
+#if HAS_TASK
ao_add_task(&ao_cmd_task, ao_cmd, "cmd");
ao_add_task(&ao_cmd_task, ao_cmd, "cmd");
+#endif
}
}