thermferm/thermferm.c

changeset 205
ca18ff45deba
parent 204
9a14d6b2de7f
child 206
78fb6f99e473
--- a/thermferm/thermferm.c	Sun Aug 10 12:09:07 2014 +0200
+++ b/thermferm/thermferm.c	Sun Aug 10 13:26:35 2014 +0200
@@ -37,9 +37,6 @@
 int			tempA = 80;
 int			tempB = 80;
 
-key_t			key = 5680;		/* key to be passed to shmget()		*/
-int			shmid;
-
 int			my_shutdown = FALSE;
 static pid_t		pgrp, mypid;
 
@@ -48,6 +45,8 @@
 #ifdef HAVE_WIRINGPI_H
 extern int		lcdHandle;
 extern unsigned char	lcdbuf[MAX_LCDS][20][4];
+int			setupmenu = MENU_NONE;
+
 #endif
 int			lcdupdate;
 #ifndef HAVE_WIRINGPI_H
@@ -257,7 +256,7 @@
     float		err = 0.0, sp, pv, P_err, D_err, Out;
 #ifdef HAVE_WIRINGPI_H
     struct tm		*tm;
-    int			row;
+    int			row, key;
 #else
     long		t = 0;
 #endif
@@ -565,8 +564,10 @@
 	    }
 
 #ifdef HAVE_WIRINGPI_H
-	    lcd_buf_show();
+	    if (setupmenu == MENU_NONE)
+	    	lcd_buf_show();
 #endif
+
 	    if (seconds == 60) {
 		seconds = 0;
 
@@ -625,8 +626,33 @@
 	}
 
 #ifdef HAVE_WIRINGPI_H
-	// FIXME: not in editmode.
-	lcd_buf_step();
+	/*
+	 * Handle panel key events.
+	 */
+	key = keycheck();
+
+	switch (setupmenu) {
+	    case MENU_NONE:
+		    	if ((key == KEY_DOWN) || (key == KEY_UP))
+	    		    lcd_buf_step(key);
+			if ((key == KEY_CONFIRM) && (setupmenu == MENU_NONE)) {
+	    		    setupmenu = MENU_TOP;
+			    mb_lcdClear(lcdHandle);
+	    		    lcdPosition(lcdHandle, 0, 0);
+	    		    mb_lcdPuts(lcdHandle, "Setup mode.");
+	    		    lcdPosition(lcdHandle, 0, 1);
+	    		    mb_lcdPuts(lcdHandle, "Up&Down = Escape");
+			}
+			break;
+
+	    case MENU_TOP:
+	    		if (key == KEY_ESCAPE) {
+			    setupmenu = MENU_NONE;
+			    lcd_buf_show();
+			}
+			break;
+	}
+
 #endif
 
 	usleep(100000);

mercurial