summaryrefslogtreecommitdiff
path: root/src/app/shell/main.cc
blob: 33896e46308b3d8dee18ae0be9acecb516f75460 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
#include "arch.h"
#include "driver/gpio.h"
#include "driver/stdout.h"
#include "driver/stdin.h"
#include "driver/uptime.h"

/*
void check_command(unsigned char argc, char** argv)
{
	unsigned char i2c_rxbuf[16];
	unsigned char i2c_txbuf[16];
	float buf = 0;
	int i;
	if (!strcmp(argv[0], "i2c")) {
		if (argc == 0) {
			uart_puterr("Usage: i2c <on|off|detect|gettemp> [-u]\n");
			return;
		}
		if (!strcmp(argv[1], "on")) {
			if ((argc >= 2) && !strcmp(argv[2], "-u")) {
				if (i2c_setup(1) < 0)
					uart_puterr("Error initializing I²C: Line is busy\n");
			} else {
				if (i2c_setup(0) < 0)
					uart_puterr("Error initializing I²C: Line is busy\n"
							"Do you have hardware pullups on SDA/SCL?\n");
			}
		} else if (!strcmp(argv[1], "off")) {
			uart_puterr("Error: not implemented yet\n");
		} else if (!strcmp(argv[1], "detect")) {
			i2c_scan();
		} else if (!strcmp(argv[1], "tc74")) {
			i2c_txbuf[0] = 0x00;
			i2c_xmit(0x4d, 1, 1, i2c_txbuf, i2c_rxbuf);
			uart_putint(i2c_rxbuf[0]);
			uart_puts("°C\n");
		} else if (!strcmp(argv[1], "lm75")) {
			i2c_txbuf[0] = 0x00;
			i2c_xmit(0x48, 1, 2, i2c_txbuf, i2c_rxbuf);
			uart_putfloat(i2c_rxbuf[0] + (i2c_rxbuf[1] / 256.0));
			uart_puts("°C\n");
		}
		else if (!strcmp(argv[1], "eepr")) {
			i2c_rxbuf[0] = 0;
			i2c_txbuf[0] = 0;
			i2c_txbuf[1] = argv[2][0];
			i2c_xmit(0x50, 2, 1, i2c_txbuf, i2c_rxbuf);
			uart_putint(i2c_rxbuf[0]);
			uart_puts("\n");
		}
		else if (!strcmp(argv[1], "eepw")) {
			i2c_txbuf[0] = 0;
			i2c_txbuf[1] = argv[2][0];
			i2c_txbuf[2] = argv[3][0];
			i2c_txbuf[3] = argv[3][1];
			i2c_txbuf[4] = argv[3][2];
			i2c_txbuf[5] = argv[3][3];
			i2c_txbuf[6] = argv[3][4];
			i2c_txbuf[7] = argv[3][5];
			i2c_xmit(0x50, 8, 0, i2c_txbuf, i2c_rxbuf);
		}
	} else if (!strcmp(argv[0], "sensors")) {
		for (i = 0; i < 32; i++) {
			buf += adc_gettemp();
			__delay_cycles(64000);
		}
		uart_puts("Temperature : ");
		uart_putfloat(buf / 32);
		uart_puts("°C avg / ");
		uart_putfloat(adc_gettemp());
		uart_puts("°C single\n    Voltage : ");
		uart_putfloat(adc_getvcc());
		uart_puts("V\n");
	} else if (!strcmp(argv[0], "spi")) {
		if (argc == 0) {
			uart_puterr("Usage: spi <on|off|sharp>\n");
			return;
		}
		if (!strcmp(argv[1], "on")) {
			spi_setup();
		}
	} else if (!strcmp(argv[0], "help")) {
		uart_puts("Supported commands: i2c sensors\n");
	} else {
		uart_puterr("Unknown command\n");
	}
}
*/

void loop(void)
{
	gpio.led_toggle(1);
}

void wakeup(void)
{
	char key;
	while (kin.hasKey()) {
		key = kin.getKey();
		if (key == '\r') {
			kout.put('\n');
		} else {
			kout.put(key);
		}
	}
}

int main(void)
{
	arch.setup();
	gpio.setup();
	kout.setup();
	kin.setup();

	kout << "ohai > " << endl;;
	kout << "ohai > " << endl;;
	kout << "ohai > " << endl;;
	kout << "ohai > " << endl;;
	kout << "ohai > " << endl;;

	arch.idle_loop();

	return 0;
}