Merge branch 'master' of ssh://git.gag.com/scm/git/fw/altos
[fw/altos] / src / stm32f4-disco / ao_disco.c
index efbed947a1d4c54267fcbfad8282a5807ddb4435..ab3c03404d413678629f109db08b811a2c0ed75b 100644 (file)
  */
 
 #include <ao.h>
+#include <ao_scheme.h>
+#include <ao_usb.h>
 
-void main(void)
+static void scheme_cmd() {
+       ao_scheme_read_eval_print(stdin, stdout, false);
+}
+
+static const struct ao_cmds scheme_cmds[] = {
+       { scheme_cmd,   "l\0Run scheme interpreter" },
+       { 0, 0 }
+};
+
+int
+_ao_scheme_getc(void)
 {
-       float           x;
-       int             r = 1;
-       int             g = 0;
+       static uint8_t  at_eol;
+       int c;
 
-       ao_clock_init();
+       if (at_eol) {
+               ao_cmd_readline(ao_scheme_read_list ? "- " : "> ");
+               at_eol = 0;
+       }
+       c = (unsigned char) ao_cmd_lex();
+       if (c == '\n')
+               at_eol = 1;
+       return c;
+}
 
+void main(void)
+{
+       ao_clock_init();
        ao_timer_init();
+       ao_task_init();
 
-       ao_enable_output(LED_GREEN_PORT, LED_GREEN_PIN, 0);
-       ao_enable_output(LED_RED_PORT, LED_RED_PIN, 1);
-       for (;;) {
-               ao_gpio_set(LED_GREEN_PORT, LED_GREEN_PIN, g);
-               ao_gpio_set(LED_RED_PORT, LED_RED_PIN, r);
-               g ^= 1;
-               r ^= 1;
-               for (x = 0.0f; x < 100000.0f; x = x + 0.1f)
-                       ao_arch_nop();
-       }
+       ao_led_init();
+       ao_usart_init();
+       ao_usb_init();
+       ao_cmd_init();
+       ao_cmd_register(scheme_cmds);
+       ao_start_scheduler();
 }