From 234beaee5de14a601af3eef97f291cddfe5d1b80 Mon Sep 17 00:00:00 2001 From: Clyne Sullivan Date: Thu, 29 Mar 2018 23:08:11 -0400 Subject: [PATCH] better keypad stuff --- Makefile | 2 +- libinterp.a | Bin 71812 -> 65730 bytes src/keypad.c | 45 +++++++++++++++++++++++---------------------- src/script.c | 19 +++++++++++++++++-- 4 files changed, 41 insertions(+), 25 deletions(-) diff --git a/Makefile b/Makefile index 9620aa4..b3acc2a 100644 --- a/Makefile +++ b/Makefile @@ -53,7 +53,7 @@ $(OUT): $(OFILES) initrd/init libinterp.a @$(CROSS)$(AR) r $(INITRD) initrd/* @$(CROSS)$(OBJCOPY) -B arm -I binary -O elf32-littlearm $(INITRD) out/initrd.img.o @echo " LINK " $(OUT) - @$(CROSS)$(CC) $(CFLAGS) $(LFLAGS) out/*.o -o $(OUT) -L. -linterp + @$(CROSS)$(CC) $(CFLAGS) $(LFLAGS) out/*.o -o $(OUT) -L. -linterp -lm $(OUTDIR)/%.o: src/%.c @echo " CC " $< diff --git a/libinterp.a b/libinterp.a index a485352ff9c5eb2672f03a312ff0e174cb2487a4..7c9e7a9a51dede0cc646cc5be8663838b5e2fc2f 100644 GIT binary patch literal 65730 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

`=V)&RoCSC4=8Oh%U(AW8RKjW*d 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

YH`f56*Dc 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 ADgXcg diff --git a/src/keypad.c b/src/keypad.c index 5fe2537..5b04eec 100644 --- a/src/keypad.c +++ b/src/keypad.c @@ -53,18 +53,20 @@ static const port_t keypad_cols[COLS] = { { COL_3 }, { COL_4 } }; -static const int keypad_map[ROWS][COLS] = { - { '&', '|', '^', ' ', ' ' }, - { 'x', 'y', 'z', '=', ' ' }, - { '7', '8', '9', '(', ')' }, - { '4', '5', '6', '/', '%' }, - { '1', '2', '3', '*', '-' }, - { '.', '0', '\b', '\n', '+' } +static const char keypad_map[ROWS * COLS * 4] = { + "&\0\0\0" "|\0\0\0" "pi\0\0" "==\0\0" "!=\0\0" + "x\0\0\0" "y\0\0\0" "z\0\0\0" "=\0\0\0" "sin\0" + "7\0\0\0" "8\0\0\0" "9\0\0\0" "(\0\0\0" ")\0\0\0" + "4\0\0\0" "5\0\0\0" "6\0\0\0" "/\0\0\0" "%\0\0\0" + "1\0\0\0" "2\0\0\0" "3\0\0\0" "*\0\0\0" "-\0\0\0" + ".\0\0\0" "0\0\0\0" "\b\0\0\0" "\n\0\0\0" "+\0\0\0" }; +#define KEY(r, c, i) keypad_map[r * COLS * 4 + c * 4 + i] + #define BUFFER_SIZE 8 -static char keypad_buffer = 0;//[BUFFER_SIZE]; -//static int keypad_buffer_pos = -1; +static char keypad_buffer[BUFFER_SIZE]; +static int keypad_buffer_pos = -1; void keypad_task(void) { @@ -74,8 +76,10 @@ void keypad_task(void) delay(10); for (unsigned int row = 0; row < ROWS; row++) { if (gpio_din(keypad_rows[row].port, keypad_rows[row].pin)) { - //if (keypad_buffer_pos < BUFFER_SIZE) - keypad_buffer/*[++keypad_buffer_pos]*/ = keypad_map[row][col]; + if (keypad_buffer_pos < BUFFER_SIZE) { + for (unsigned int i = 0; KEY(row, col, i) != '\0'; i++) + keypad_buffer[++keypad_buffer_pos] = KEY(row, col, i); + } while (gpio_din(keypad_rows[row].port, keypad_rows[row].pin)) delay(1); break; @@ -117,15 +121,12 @@ void keypad_start(void) int keypad_get(void) { - //if (keypad_buffer_pos < 0) - // return 0; - - //int key = keypad_buffer[0]; - //for (int i = keypad_buffer_pos - 1; i > 0; i--) - // keypad_buffer[i - 1] = keypad_buffer[i]; - //keypad_buffer_pos--; - //return key; - int ret = keypad_buffer; - keypad_buffer = 0; - return ret; + if (keypad_buffer_pos < 0) + return 0; + + int key = keypad_buffer[0]; + for (int i = 0; i < BUFFER_SIZE - 1; i++) + keypad_buffer[i] = keypad_buffer[i + 1]; + keypad_buffer_pos--; + return key; } diff --git a/src/script.c b/src/script.c index 049608b..733bc4a 100644 --- a/src/script.c +++ b/src/script.c @@ -26,11 +26,12 @@ #include #include #include +#include +#include +#include #include #include #include -#include -#include #define igetarg_integer(it, n) ((int)igetarg(it, n)->value.f) @@ -48,8 +49,12 @@ int script_pixel(instance *it); int script_menu(instance *it); int script_filemenu(instance *it); +int math_sin(instance *it); + void script_loadlib(instance *it) { + inew_number(it, "pi", 3.1415926f); + inew_cfunc(it, "print", script_puts); inew_cfunc(it, "putchar", script_putchar); inew_cfunc(it, "gets", script_gets); @@ -66,6 +71,16 @@ void script_loadlib(instance *it) inew_cfunc(it, "menu", script_menu); inew_cfunc(it, "filemenu", script_filemenu); + + inew_cfunc(it, "sin", math_sin); +} + +int math_sin(instance *it) +{ + variable *n = igetarg(it, 0); + variable *v = make_varf(0, sinf(n->value.f)); + ipush(it, (uint32_t)v); + return 0; } int script_menu(instance *it)