#include #include #include #include #include #include #include #include #include #include #include #include #include #include #define ABUF_SIZE 512 #define MIC_WM 128 static uint8_t mic_arr[ABUF_SIZE]; static uint8_t spk_arr[ABUF_SIZE]; static int audio_on = 0; static EVEText box; static EVEKbd kbd; static void key_down(void *p, int c) { int i = 2; unsigned char *buf = eos_net_alloc(); buf[0] = EOS_CELL_MTYPE_UART_DATA; if (c == '\n') { buf[1] = '\r'; buf[2] = '\n'; i++; } else { buf[1] = c; } eos_net_send(EOS_NET_MTYPE_CELL, buf, i, 0); } static void handle_touch(void *p, uint8_t tag0, int touch_idx) { eve_kbd_touch(&kbd, tag0, touch_idx); eve_text_touch(&box, tag0, touch_idx); eve_cmd_dl(CMD_DLSTART); eve_cmd_dl(CLEAR_COLOR_RGB(0,0,0)); eve_cmd_dl(CLEAR(1,1,1)); eve_text_draw(&box); eve_kbd_draw(&kbd); eve_cmd_dl(DISPLAY()); eve_cmd_dl(CMD_SWAP); eve_cmd_exec(1); } static void handle_mic(unsigned char type) { uint16_t size; unsigned char *buf = eos_net_alloc(); buf[0] = EOS_CELL_MTYPE_PCM_DATA; size = eos_i2s_mic_read(buf+1, MIC_WM); eos_net_send(EOS_NET_MTYPE_CELL, buf, size+1, 0); } static void handle_uart(unsigned char type) { int i = 0; int c = 0; unsigned char *buf = NULL; c = eos_uart_getc(0); if (c == EOS_ERR_EMPTY) return; buf = eos_net_alloc(); buf[0] = EOS_CELL_MTYPE_UART_DATA; buf[1] = c; i = 2; while ((c = eos_uart_getc(0)) != EOS_ERR_EMPTY) { buf[i] = c; i++; if (i == EOS_NET_SIZE_BUF) break; } eos_net_send(EOS_NET_MTYPE_CELL, buf, i, 0); eos_uart_rxwm_set(0); } static void handle_cell_msg(unsigned char _type, unsigned char *buffer, uint16_t len) { int i; unsigned char type = buffer[0]; switch (type) { case EOS_CELL_MTYPE_READY: buffer[0] = EOS_CELL_MTYPE_UART_TAKE; eos_net_send(EOS_NET_MTYPE_CELL, buffer, 1, 0); eos_uart_rxwm_set(0); printf("\nREADY.\n"); eos_spi_dev_start(EOS_DEV_DISP); eve_text_puts(&box, "READY.\n"); eos_spi_dev_stop(); break; case EOS_CELL_MTYPE_UART_DATA: eos_spi_dev_start(EOS_DEV_DISP); for (i=1; i