|
From: <mla...@us...> - 2007-01-03 16:05:40
|
Revision: 240
http://svn.sourceforge.net/g15daemon/?rev=240&view=rev
Author: mlampard
Date: 2007-01-03 08:05:38 -0800 (Wed, 03 Jan 2007)
Log Message:
-----------
if the user wants the backlight off, keep it that way. add network function to set keyboard backlight, and return previous state of lcd brightness and contrast when setting them via clientlib functions
Modified Paths:
--------------
trunk/g15daemon-wip/g15daemon/g15daemon.h
trunk/g15daemon-wip/g15daemon/main.c
trunk/g15daemon-wip/libg15daemon_client/g15daemon_client.h
trunk/g15daemon-wip/libg15daemon_client/g15daemon_net.c
trunk/g15daemon-wip/plugins/g15_plugin_net.c
Modified: trunk/g15daemon-wip/g15daemon/g15daemon.h
===================================================================
--- trunk/g15daemon-wip/g15daemon/g15daemon.h 2007-01-01 20:51:40 UTC (rev 239)
+++ trunk/g15daemon-wip/g15daemon/g15daemon.h 2007-01-03 16:05:38 UTC (rev 240)
@@ -48,6 +48,7 @@
#define CLIENT_CMD_IS_FOREGROUND 'v'
#define CLIENT_CMD_IS_USER_SELECTED 'u'
#define CLIENT_CMD_BACKLIGHT 0x80
+#define CLIENT_CMD_KB_BACKLIGHT 0x8
#define CLIENT_CMD_CONTRAST 0x40
#define CLIENT_CMD_MKEY_LIGHTS 0x20
/* if the following CMD is sent from a client, G15Daemon will not send any MR or G? keypresses via uinput,
@@ -207,6 +208,7 @@
struct passwd *nobody;
volatile unsigned long numclients;
configfile_t *config;
+ unsigned int kb_backlight_state; // master state
}g15daemon_s;
pthread_mutex_t lcdlist_mutex;
Modified: trunk/g15daemon-wip/g15daemon/main.c
===================================================================
--- trunk/g15daemon-wip/g15daemon/main.c 2007-01-01 20:51:40 UTC (rev 239)
+++ trunk/g15daemon-wip/g15daemon/main.c 2007-01-03 16:05:38 UTC (rev 240)
@@ -75,6 +75,11 @@
int *(*keyboard_handler)(plugin_event_t *newevent) = (void*)lcd->masterlist->keyboard_handler;
(*keyboard_handler)((void*)newevent);
}
+ if(value & G15_KEY_LIGHT){ // the backlight key was pressed - maintain user-selected state
+ lcd->masterlist->kb_backlight_state++;
+ if(lcd->masterlist->kb_backlight_state>2)
+ lcd->masterlist->kb_backlight_state=0;
+ }
free(newevent);
}else{
/* hacky attempt to double-time the use of L1, if the key is pressed less than half a second, it cycles the screens. If held for longer, the key is sent to the application for use instead */
@@ -221,11 +226,14 @@
}
}
- if(displaying->state_changed ){
+ if(displaying->state_changed){
pthread_mutex_lock(&g15lib_mutex);
setLCDContrast(displaying->contrast_state);
setLEDs(displaying->mkey_state);
- setLCDBrightness(displaying->backlight_state);
+ if(masterlist->kb_backlight_state)
+ setLCDBrightness(displaying->backlight_state);
+ else
+ setLCDBrightness(masterlist->kb_backlight_state);
pthread_mutex_unlock(&g15lib_mutex);
displaying->state_changed = 0;
}
@@ -364,18 +372,20 @@
g15daemon_log(LOG_WARNING,"BEWARE: running as effective uid %i\n",nobody->pw_uid);
}
+ /* initialise the linked list */
+ lcdlist = ll_lcdlist_init();
+ lcdlist->nobody = nobody;
+
setLCDContrast(1);
setLEDs(0);
- setLCDBrightness(1);
+ lcdlist->kb_backlight_state=1;
+ setLCDBrightness(lcdlist->kb_backlight_state);
#ifdef LIBG15_VERSION
#if LIBG15_VERSION >= 1200
- setKBBrightness(1);
+ setKBBrightness(lcdlist->kb_backlight_state);
#endif
#endif
- /* initialise the linked list */
- lcdlist = ll_lcdlist_init();
- lcdlist->nobody = nobody;
uf_conf_open(lcdlist, "/etc/g15daemon.conf");
global_cfg=g15daemon_cfg_load_section(lcdlist,"Global");
Modified: trunk/g15daemon-wip/libg15daemon_client/g15daemon_client.h
===================================================================
--- trunk/g15daemon-wip/libg15daemon_client/g15daemon_client.h 2007-01-01 20:51:40 UTC (rev 239)
+++ trunk/g15daemon-wip/libg15daemon_client/g15daemon_client.h 2007-01-03 16:05:38 UTC (rev 240)
@@ -44,6 +44,7 @@
#define G15DAEMON_MKEYLEDS 0x20
#define G15DAEMON_CONTRAST 0x40
#define G15DAEMON_BACKLIGHT 0x80
+ #define G15DAEMON_KB_BACKLIGHT 0x8
#define G15DAEMON_GET_KEYSTATE 'k'
#define G15DAEMON_SWITCH_PRIORITIES 'p'
#define G15DAEMON_IS_FOREGROUND 'v'
Modified: trunk/g15daemon-wip/libg15daemon_client/g15daemon_net.c
===================================================================
--- trunk/g15daemon-wip/libg15daemon_client/g15daemon_net.c 2007-01-01 20:51:40 UTC (rev 239)
+++ trunk/g15daemon-wip/libg15daemon_client/g15daemon_net.c 2007-01-03 16:05:38 UTC (rev 240)
@@ -189,12 +189,20 @@
if (value > G15_CONTRAST_HIGH)
value = G15_CONTRAST_HIGH;
packet[0] = command | value;
- retval = send( sock, packet, 1, MSG_OOB );
+ send( sock, packet, 1, MSG_OOB );
+ retval = g15_recv_oob_answer(sock);
break;
case G15DAEMON_BACKLIGHT:
if (value > G15_BRIGHTNESS_BRIGHT)
value = G15_BRIGHTNESS_BRIGHT;
packet[0] = command | value;
+ send( sock, packet, 1, MSG_OOB );
+ retval = g15_recv_oob_answer(sock);
+ break;
+ case G15DAEMON_KB_BACKLIGHT:
+ if (value > G15_BRIGHTNESS_BRIGHT)
+ value = G15_BRIGHTNESS_BRIGHT;
+ packet[0] = command | value;
retval = send( sock, packet, 1, MSG_OOB );
break;
case G15DAEMON_MKEYLEDS:
Modified: trunk/g15daemon-wip/plugins/g15_plugin_net.c
===================================================================
--- trunk/g15daemon-wip/plugins/g15_plugin_net.c 2007-01-01 20:51:40 UTC (rev 239)
+++ trunk/g15daemon-wip/plugins/g15_plugin_net.c 2007-01-03 16:05:38 UTC (rev 240)
@@ -87,12 +87,20 @@
send(sock,msgbuf,1,0);
break;
}
- case CLIENT_CMD_BACKLIGHT: { /* client wants to change the backlight */
+ case CLIENT_CMD_BACKLIGHT: { /* client wants to change the LCD backlight */
+ /* return current state to the client then implement the new state */
+ send(sock,&lcdnode->lcd->backlight_state,1,MSG_OOB);
lcdnode->lcd->backlight_state = msgbuf[0]-0x80;
lcdnode->lcd->state_changed = 1;
break;
}
+ case CLIENT_CMD_KB_BACKLIGHT: { /* client wants to change the KB backlight */
+ setKBBrightness((unsigned int)msgbuf[0]-0x80);
+ break;
+ }
case CLIENT_CMD_CONTRAST: { /* client wants to change the LCD contrast */
+ /* send current state to the client */
+ send(sock,&lcdnode->lcd->contrast_state,1,MSG_OOB);
lcdnode->lcd->contrast_state = msgbuf[0]-0x40;
lcdnode->lcd->state_changed = 1;
break;
@@ -307,7 +315,7 @@
}
}
exitthread:
- close(client_sock);
+ close(client_sock);
free(tmpbuf);
g15daemon_lcdnode_remove(display);
This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site.
|