display & keypad work
[uccvend-snackrom.git] / ROM2 / vend.h
1 #ifndef _VEND_H_
2 #define _VEND_H_
3
4 #include "ports.h"
5
6 /* FIXME: are these typedefs right for m68hc11-gcc? */
7 typedef unsigned char    u8;
8 typedef signed char      s8;
9 typedef unsigned short   u16;
10 typedef signed short     s16;
11 typedef unsigned long    u32;
12 typedef signed long      s32;
13 typedef u8               bool;
14 typedef u16              addr_t;
15
16 /* addresses of these set at link time */
17 /* to add more addresses, define them here with buffered_addr_h, in helpers.c 
18  * with buffered_addr, and also in LDFLAGS in the Makefile
19  */
20 #define buffered_addr_h(a) \
21         extern volatile u8* _##a;          \
22         extern inline void set_##a(u8 b);  \
23         extern inline void bset_##a(u8 m); \
24         extern inline void bclr_##a(u8 m); \
25
26 buffered_addr_h(switch_input);
27 buffered_addr_h(misc_input);
28 buffered_addr_h(home_sensors);
29 buffered_addr_h(changer_output);
30 buffered_addr_h(misc_output);
31
32 void spi_enable();
33 void spi_disable();
34
35 /******* from display.c *******/
36
37 /* scrolling modes */
38 #define WRAP_SCROLL_L  1  /* scroll to the left     */
39 #define WRAP_SCROLL_R  2  /* scroll to the right    */
40 #define WRAP_ALTERNATE 3  /* alternate between text */
41
42 extern char current_message[256];
43
44 void display_init();
45 void set_msg(char* newmsg);
46 void set_wrap_mode(u8 new_wrap_mode);
47 void display_refresh();
48
49 void delay(u16 ms);
50
51 /******** Some meaningful bits ******/
52 #define PORTA_DISP_RESET    0x80 /* active low */
53 #define PORTD_KEYPAD_ROW    0x20 /* clear for row 0, set for row 1 */
54
55 /* Address 3800 bits */
56 #define A3800_DISPLAY_WRITE  0x04
57
58 /******* from main.c *******/
59 int __attribute__((noreturn)) main (void);
60
61 #endif /* _VEND_H_ */

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