#include "chime.h"
#include "server.h"
#include "coinmech.h"
+#include "comm.h"
#include "vend.h"
+extern inline void enable_rti() {
+}
+
void _start() {
set_bus_expanded();
- display_init();
- /* enable RTI & set rate */
- /* init coin mech */
- /* scan for motors */
+ /* enable RTI */
+ _io_ports[M6811_TMSK2] = 0x40;
+ /* powerup ADC, set IRQ' for edge-sensitive operation */
+ _io_ports[M6811_OPTION] = 0xA0;
+ /* set the stack pointer */
+ //asm volatile ("lds %1":: "i"(_stack):"sp");
+
main();
+
+loop_forever:
+ goto loop_forever; /* wait for an interrupt to wake us up again */
}
int main() {
+ u16 last_coin_value = coin_value;
+
+ /* init coin mech */
+ comm_init();
+ display_init();
while(1) {
- /*
- * have serial packet?
- *
- * decode msg & process:
- * - dispense motor
- * - display string
- * - give change
- * - beep
- */
-
- /*
- * have keypress?
- * - beep
- * - send via serial
- */
-
- /*
- * have coin balance change?
- * - send via serial
- */
+ if (rx_queue_state) {
+ switch (msg_buf[0]) {
+ case 'V': /* dispense something */
+ break;
+ case 'D': /* write string to display */
+ break;
+ case 'B': /* beep */
+ break;
+ case 'U': /* query current coin balance */
+ break;
+ case 'G': /* give change */
+ break;
+ default:
+ /* shrug */
+ break;
+ }
+ msg_clr();
+ }
+ keypad_read();
+ if (keypad_pressed()) {
+ /* send packet about it */
+ /* beep? */
+ }
+
+ if (coin_value != last_coin_value) {
+ /* send a packet about it */
+ }
}
}