#include <stdint.h>
#include <stdbool.h>
#include <string.h>
#include "uart_pl011.h"
#include "cpu.h"
#include "gic.h"

char buf[64];
uint8_t buf_idx = 0u;

static void parse_cmd(void){
	if (!strncmp("help\r", buf, strlen("help\r"))) {
		uart_write("Just type and see what happens!\n");
	} else if (!strncmp("uname\r", buf, strlen("uname\r"))) {
		uart_write("bare-metal arm 06_uart\n");
	}
}

int main() {
	uart_config config = {
		.data_bits = 8,
		.stop_bits = 1,
		.parity = false,
		.baudrate = 9600
	};
	uart_configure(&config);

	uart_putchar('A');
	uart_putchar('B');
	uart_putchar('C');
	uart_putchar('\n');

	uart_write("Welcome to Chapter 7, Interrupts!\n");
	gic_init();
	gic_enable_interrupt(UART0_INTERRUPT);
	cpu_enable_interrupts();

	while (1) {/*
		char c;
		if (uart_getchar(&c) == UART_OK) {
			uart_putchar(c);
			buf[buf_idx % 64] = c;
			buf_idx++;
			if (c == '\r') {
				uart_write("\n");
				buf_idx = 0u;
				parse_cmd();
			}
		}*/
	}

	return 0;
}
