#ifndef UI_H
#define UI_H
+#if defined(__SDCC)
#include <sdcc-lib.h>
#include <pic18fregs.h> /* ONLY FOR PIC18x */
+#endif
#include "lcd_acm1602.h"
#include "iodef.h"
extern "C" {
#endif
+
extern keyin_defs keyin_old[2];
extern keyin_defs keyin_now;
-extern char keyin_fifo[16];
+extern char keyin_fifo[32];
extern char keyin_nowp;
extern char keyin_counter;
-#define _LOCATE(x,y) acm1602_locate_16x2(0xa0, x, y)
-#define _PUTCHAR(c) acm1602_putchar(0xa0, c)
-#define _CURSOR_LEFT() acm1602_cursordir(0xa0, 0x00)
-#define _CURSOR_RIGHT() acm1602_cursordir(0xa0, 0xff)
-#define _CLS() acm1602_cls(0xa0);
-#define _HOME() acm1602_home(0xa0);
+#define _LOCATE(x,y) acm1602_locate_16x2(LCD_I2CADDR, x, y)
+#define _PUTCHAR(c) acm1602_putchar(LCD_I2CADDR, c)
+#define _CURSOR_LEFT() acm1602_cursordir(LCD_I2CADDR, 0x00)
+#define _CURSOR_RIGHT() acm1602_cursordir(LCD_I2CADDR, 0xff)
+#define _CLS() acm1602_cls(LCD_I2CADDR);
+#define _HOME() acm1602_home(LCD_I2CADDR);
+#define _CURSOR_ON() acm1602_dispcursor(LCD_I2CADDR, 0xff)
+#define _CURSOR_OFF() acm1602_dispcursor(LCD_I2CADDR, 0x00)
+
extern void keyin_init(void);
-extern void keyin_ioinit(void);
+#ifdef __SDCC
extern void push_keyinfifo(char b) __critical;
extern char pop_keyinfifo(void) __critical;
-extern void readkey_io(void);
+#else
+extern void push_keyinfifo(char b);
+extern char pop_keyinfifo(void);
+#endif
extern unsigned char readkey_compare(void);
extern void printstr(char *s);
extern void set_backlight(unsigned char flag, unsigned int val);
extern unsigned int read_numeric(unsigned int initial, unsigned char digit,
char startx, char starty);
-extern unsigned int subst_numeric(unsigned int start, unsigned char pos, unsigned char c);
-extern void print_numeric_nosupress(unsigned int data, unsigned char digit);
+extern unsigned long subst_numeric(unsigned long start, unsigned char pos, unsigned char c);
+extern void print_numeric_nosupress(unsigned long data, unsigned char digit);
+extern unsigned char readkey(void);
+extern unsigned char pollkeys(unsigned char *p, unsigned int limit, unsigned char repeat);
+extern unsigned char pollkey_single(void);
+extern unsigned char pollkey_single_timeout(unsigned int limit, unsigned char repeat);
#ifdef __cplusplus
}