ff8687bf6af101b5f967c314b61c52bd5ea39fe0
[uccvend-snackrom.git] / ROM2 / main_basic.c
1 /*
2  * main_basic.c - a simplified main procedure that relies upon a ersver to do
3  * anything smart. Just be a dumb interface to a display, keypad, coin mech
4  * and snacks.
5  */
6
7 #include "display_basic.h"
8 #include "keypad.h"
9 #include "chime.h"
10 #include "server.h"
11 #include "coinmech.h"
12 #include "comm.h"
13 #include "vend.h"
14
15 extern inline void enable_rti() {
16 }
17
18 void _start() {
19         set_bus_expanded();
20         /* enable RTI */
21         _io_ports[M6811_TMSK2] = 0x40;
22         /* powerup ADC, set IRQ' for edge-sensitive operation */
23         _io_ports[M6811_OPTION] = 0xA0;
24         /* set the stack pointer */
25         //asm volatile ("lds %1":: "i"(_stack):"sp");
26
27         main();
28
29 loop_forever:
30         goto loop_forever; /* wait for an interrupt to wake us up again */
31 }
32
33 int main() {
34         u16 last_coin_value = coin_value;
35
36         /* init coin mech */
37         comm_init();
38         display_init();
39         while(1) {
40                 if (rx_queue_state) {
41                         switch (msg_buf[0]) {
42                                 case 'V': /* dispense something */
43                                         break;
44                                 case 'D': /* write string to display */
45                                         break;
46                                 case 'B': /* beep */
47                                         break;
48                                 case 'U': /* query current coin balance */
49                                         break;
50                                 case 'G': /* give change */
51                                         break;
52                                 default:
53                                 /* shrug */
54                                         break;
55                         }
56                         msg_clr();
57                 }
58                 keypad_read();
59                 if (keypad_pressed()) {
60                         /* send packet about it */
61                         /* beep? */
62                 }
63
64                 if (coin_value != last_coin_value) {
65                         /* send a packet about it */
66                 }
67         }
68 }
69
70 void rti() {
71         chime(); /* turn chime on or off as need be */
72 }

UCC git Repository :: git.ucc.asn.au