-/*
+/*
* Copyright Droids Corporation
* Olivier Matz <zer0@droids-corp.org>
- *
+ *
* 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; either version 2 of the License, or
#include <aversive.h>
#include <aversive/error.h>
+#include <hostsim.h>
+
#include <parse.h>
#include <rdline.h>
#include <ax12.h>
/******** See in commands.c for the list of commands. */
extern parse_pgm_ctx_t main_ctx[];
-static void write_char(char c)
+static void write_char(char c)
{
uart_send(CMDLINE_UART, c);
}
-static void
-valid_buffer(const char *buf, uint8_t size)
+static void
+valid_buffer(const char *buf, uint8_t size)
{
int8_t ret;
printf_P(PSTR("Bad arguments\r\n"));
}
-static int8_t
+static int8_t
complete_buffer(const char *buf, char *dstbuf, uint8_t dstsize,
int16_t *state)
{
void emergency(char c)
{
static uint8_t i = 0;
-
+
/* interrupt traj here */
if (c == '\003')
interrupt_traj();
-
+
if ((i == 0 && c == 'p') ||
(i == 1 && c == 'o') ||
- (i == 2 && c == 'p'))
+ (i == 2 && c == 'p'))
i++;
else if ( !(i == 1 && c == 'p') )
i = 0;
- if (i == 3)
+ if (i == 3) {
+#ifdef HOST_VERSION
+ hostsim_exit();
+#endif
reset();
+ }
}
/* log function, add a command to configure
* it dynamically */
-void mylog(struct error * e, ...)
+void mylog(struct error * e, ...)
{
va_list ap;
+#ifndef HOST_VERSION
u16 stream_flags = stdout->flags;
+#endif
uint8_t i;
time_h tv;
if (e->severity > ERROR_SEVERITY_ERROR) {
if (gen.log_level < e->severity)
return;
-
+
for (i=0; i<NB_LOGS+1; i++)
if (gen.logs[i] == e->err_num)
break;
va_start(ap, e);
tv = time_get_time();
- printf_P(PSTR("%ld.%.3ld: "), tv.s, (tv.us/1000UL));
-
+ printf_P(PSTR("%d.%.3d: "), (int)tv.s, (int)(tv.us/1000UL));
+
printf_P(PSTR("(%d,%d,%d) "),
position_get_x_s16(&mainboard.pos),
position_get_y_s16(&mainboard.pos),
position_get_a_deg_s16(&mainboard.pos));
-
+
vfprintf_P(stdout, e->text, ap);
printf_P(PSTR("\r\n"));
va_end(ap);
+#ifndef HOST_VERSION
stdout->flags = stream_flags;
+#endif
}
int cmdline_interact(void)
const char *history, *buffer;
int8_t ret, same = 0;
int16_t c;
-
+
rdline_init(&gen.rdl, write_char, valid_buffer, complete_buffer);
- snprintf(gen.prompt, sizeof(gen.prompt), "mainboard > ");
+ snprintf(gen.prompt, sizeof(gen.prompt), "mainboard > ");
rdline_newline(&gen.rdl, gen.prompt);
while (1) {
c = uart_recv_nowait(CMDLINE_UART);
- if (c == -1)
+ if (c == -1)
continue;
ret = rdline_char_in(&gen.rdl, c);
if (ret != 2 && ret != 0) {