new initrd format work, bigger keypad
This commit is contained in:
parent
93396d69eb
commit
50233fff40
2
Makefile
2
Makefile
@ -28,7 +28,7 @@ STRIP = strip
|
||||
MCUFLAGS = -mthumb -mcpu=cortex-m4 -mfloat-abi=hard -mfpu=fpv4-sp-d16
|
||||
AFLAGS = $(MCUFLAGS)
|
||||
CFLAGS = $(MCUFLAGS) -ggdb \
|
||||
-Iinclude -Iinclude/it -Iinclude/cmsis \
|
||||
-Iinclude -Iinclude/cmsis \
|
||||
-fno-builtin -fsigned-char -ffreestanding \
|
||||
-Wall -Werror -Wextra -pedantic \
|
||||
-Wno-overlength-strings -Wno-discarded-qualifiers
|
||||
|
@ -21,7 +21,7 @@
|
||||
#ifndef SCRIPT_H_
|
||||
#define SCRIPT_H_
|
||||
|
||||
#include <parser.h>
|
||||
#include <it/parser.h>
|
||||
|
||||
/**
|
||||
* Loads the library for the given interpreter instance.
|
||||
|
42
initrd.c
Normal file
42
initrd.c
Normal file
@ -0,0 +1,42 @@
|
||||
#include <stdint.h>
|
||||
#include <string.h>
|
||||
|
||||
extern uint8_t *initrd_start;
|
||||
extern uint32_t initrd_size;
|
||||
|
||||
char *getfile(uint32_t offset)
|
||||
{
|
||||
char *ptr = initrd_start;
|
||||
for (uint32_t i = 0; i < offset; i++) {
|
||||
uint32_t len = *((uint32_t *)ptr);
|
||||
uint32_t datalen = *((uint32_t *)(ptr + 4 + len));
|
||||
ptr += len + datalen + 8;
|
||||
if (ptr >= (char *)(initrd_start + initrd_size))
|
||||
return 0;
|
||||
}
|
||||
|
||||
return ptr;
|
||||
}
|
||||
|
||||
char *readfile(const char *name)
|
||||
{
|
||||
char *ptr;
|
||||
for (uint32_t i = 0; ptr = getfile(i), ptr != 0; i++) {
|
||||
uint32_t len = *((uint32_t *)ptr);
|
||||
if (!strncmp(name, ptr + 4, len))
|
||||
return ptr + len + 8;
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
||||
uint32_t filesize(const char *name)
|
||||
{
|
||||
char *ptr;
|
||||
for (uint32_t i = 0; ptr = getfile(i), ptr != 0; i++) {
|
||||
uint32_t len = *((uint32_t *)ptr);
|
||||
if (!strncmp(name, ptr + 4, len))
|
||||
return *((uint32_t *)ptr + len + 4);
|
||||
}
|
||||
return 0;
|
||||
}
|
||||
|
@ -1,8 +0,0 @@
|
||||
while (1) {
|
||||
print("> ")
|
||||
input = gets()
|
||||
answer = solve(input)
|
||||
print("\n")
|
||||
print(answer)
|
||||
print("\n")
|
||||
}
|
11
initrd/init
11
initrd/init
@ -1,3 +1,8 @@
|
||||
choice = filemenu
|
||||
print("\nChoice: ")
|
||||
print(choice)
|
||||
while (1) {
|
||||
print("> ")
|
||||
input = gets()
|
||||
answer = solve(input)
|
||||
print("\n")
|
||||
print(answer)
|
||||
print("\n")
|
||||
}
|
||||
|
36
src/keypad.c
36
src/keypad.c
@ -23,17 +23,19 @@
|
||||
#include <gpio.h>
|
||||
#include <task.h>
|
||||
|
||||
#define ROW_0 GPIO_PORT(A, 12)
|
||||
#define ROW_1 GPIO_PORT(B, 12)
|
||||
#define ROW_2 GPIO_PORT(B, 11)
|
||||
#define ROW_3 GPIO_PORT(C, 4)
|
||||
#define COL_0 GPIO_PORT(B, 13)
|
||||
#define COL_1 GPIO_PORT(B, 14)
|
||||
#define COL_2 GPIO_PORT(B, 15)
|
||||
#define COL_3 GPIO_PORT(B, 1)
|
||||
#define COL_4 GPIO_PORT(B, 2)
|
||||
#define ROW_0 GPIO_PORT(B, 2)
|
||||
#define ROW_1 GPIO_PORT(B, 1)
|
||||
#define ROW_2 GPIO_PORT(B, 15)
|
||||
#define ROW_3 GPIO_PORT(B, 14)
|
||||
#define ROW_4 GPIO_PORT(B, 13)
|
||||
#define ROW_5 GPIO_PORT(C, 4)
|
||||
#define COL_0 GPIO_PORT(B, 11)
|
||||
#define COL_1 GPIO_PORT(B, 12)
|
||||
#define COL_2 GPIO_PORT(A, 11)
|
||||
#define COL_3 GPIO_PORT(A, 12)
|
||||
#define COL_4 GPIO_PORT(C, 5)
|
||||
|
||||
#define ROWS 4
|
||||
#define ROWS 6
|
||||
#define COLS 5
|
||||
|
||||
typedef struct {
|
||||
@ -42,17 +44,21 @@ typedef struct {
|
||||
} port_t;
|
||||
|
||||
static const port_t keypad_rows[ROWS] = {
|
||||
{ ROW_0 }, { ROW_1 }, { ROW_2 }, { ROW_3 }
|
||||
{ ROW_0 }, { ROW_1 }, { ROW_2 },
|
||||
{ ROW_3 }, { ROW_4 }, { ROW_5 }
|
||||
};
|
||||
|
||||
static const port_t keypad_cols[COLS] = {
|
||||
{ COL_0 }, { COL_1 }, { COL_2 }, { COL_3 }, { COL_4 }
|
||||
{ COL_0 }, { COL_1 }, { COL_2 },
|
||||
{ COL_3 }, { COL_4 }
|
||||
};
|
||||
|
||||
static const int keypad_map[ROWS][COLS] = {
|
||||
{ '7', '8', '9', 'x', '/' },
|
||||
{ '4', '5', '6', 'y', '*' },
|
||||
{ '1', '2', '3', '=', '-' },
|
||||
{ '&', '|', '^', ' ', ' ' },
|
||||
{ 'x', 'y', 'z', '=', ' ' },
|
||||
{ '7', '8', '9', '(', ')' },
|
||||
{ '4', '5', '6', '/', '%' },
|
||||
{ '1', '2', '3', '*', '-' },
|
||||
{ '.', '0', '\b', '\n', '+' }
|
||||
};
|
||||
|
||||
|
@ -27,7 +27,7 @@
|
||||
#include <initrd.h>
|
||||
#include <keypad.h>
|
||||
#include <lcd.h>
|
||||
#include <parser.h>
|
||||
#include <it/parser.h>
|
||||
#include <random.h>
|
||||
#include <script.h>
|
||||
#include <serial.h>
|
||||
|
@ -20,7 +20,7 @@
|
||||
|
||||
#include <script.h>
|
||||
|
||||
#include <builtins.h>
|
||||
#include <it/builtins.h>
|
||||
#include <clock.h>
|
||||
#include <display.h>
|
||||
#include <display_draw.h>
|
||||
@ -29,10 +29,9 @@
|
||||
#include <random.h>
|
||||
#include <serial.h>
|
||||
#include <stdlib.h>
|
||||
#include <it/string.h>
|
||||
#include <keypad.h>
|
||||
|
||||
#include <string.h>
|
||||
|
||||
#define igetarg_integer(it, n) ((int)igetarg(it, n)->value.f)
|
||||
|
||||
int script_puts(instance *it);
|
||||
|
Loading…
x
Reference in New Issue
Block a user