+ Changed protocol to 0.3 because we now accept both -foo and foo

as argument introducers.  in 0.4-pre10, these were changed
   from foo to -foo and this broke many clients.  This change
   should fix that and be backward/forward compatible.
 + Added a noop function to the protocol.  This is useful for writing
   shell script clients of LCDproc.
 + Changed the shared sock_send_string function to NOT send the
   ending NUL ('\0') byte with the string.  This was confusing
   in Perl clients which saw NUL's as the first character of
   each reply.  WARNING: The LCDPROC client depended on this
   behavior, your client may too.  Use the newline instead.
   See the code in clients/lcdproc/main.c (look for "switch(buf[i])")
   to see one way to handle this.  This should allow new clients
   to connect to old servers and vice-versa.
 + Messed with include structure in .c files.  It should no longer
   be necessary to specify ../.. to get to shared code headers.
   Also, since we are using automake, the global config.h can be
   found with just #include "config.h" as it's location is included
   in a -I to the compilers.  As a result "make distcheck" now works.
This commit is contained in:
ppokorny
2001-05-25 03:14:27 +00:00
parent 211a3a4b04
commit 00cc9fca23
48 changed files with 222 additions and 223 deletions
+30 -9
View File
@@ -11,23 +11,44 @@ Coming soon: (?) (my list of stuff to do soon...)
* Better syntax for driver parameters * Better syntax for driver parameters
* Dynamically-loaded driver system * Dynamically-loaded driver system
v0.4-????: v0.4.1:
+ Changed protocol to 0.3 because we now accept both -foo and foo
as argument introducers. in 0.4-pre10, these were changed
from foo to -foo and this broke many clients. This change
should fix that and be backward/forward compatible.
+ Added a noop function to the protocol. This is useful for writing
shell script clients of LCDproc.
+ Changed the shared sock_send_string function to NOT send the
ending NUL ('\0') byte with the string. This was confusing
in Perl clients which saw NUL's as the first character of
each reply. WARNING: The LCDPROC client depended on this
behavior, your client may too. Use the newline instead.
See the code in clients/lcdproc/main.c (look for "switch(buf[i])")
to see one way to handle this. This should allow new clients
to connect to old servers and vice-versa.
+ Messed with include structure in .c files. It should no longer
be necessary to specify ../.. to get to shared code headers.
Also, since we are using automake, the global config.h can be
found with just #include "config.h" as it's location is included
in a -I to the compilers. As a result "make distcheck" now works.
+ Added support for client_add_key and friends. Clients MUST now + Added support for client_add_key and friends. Clients MUST now
request keys to get notified. Keys are NO LONGER broadcast to all request keys to get notified. Keys are NO LONGER broadcast to all
clients. Keys are now tied to a SCREEN. (We should probably rename clients. Keys are now tied to a SCREEN and CLIENT. There are new
the command to screen_add_key huh...) If the current screen is commands (screen_add_key, screen_del_key) to bind keys to a
has requested the key just pressed, the client gets the key and no screen. If the current screen has requested the key just pressed,
other client gets it. Clients only get one key notification even the client gets the key and no other client gets it. If the current
if they have multiple screens requesting a given key. screen has not requested the current key, then the key is broadcast
to all clients who requested that key with client_add_key. Clients
might want to request a "hotkey" with client_add_key so they will
be notified of that key no matter what screen is currently on the
display, and then request whatever other keys a screen uses with
screen_add_key.
+ Added driver for Matrix Orbital GLK12232-25 graphical display. + Added driver for Matrix Orbital GLK12232-25 graphical display.
Display is run in text mode since there isn't enough information in Display is run in text mode since there isn't enough information in
the widgets. If we knew the max width/height of an hbar/vbar, we the widgets. If we knew the max width/height of an hbar/vbar, we
could use graphical vbar/hbar's. Oh well. BigNums' look really could use graphical vbar/hbar's. Oh well. BigNums' look really
cool though. You'll need some additional characters in the "Small Font" cool though. You'll need some additional characters in the "Small Font"
font (and the BigNumbers font) for this to work. font (and the BigNumbers font) for this to work.
+ Left the client_add_key routines alone and created new screen_add_key
and screen_del_key to allow per screen keystrokes. If someone else
implements a global client_key function, they can do that.
+ Rewrote Big Number Clock function in chrono.c. Many problems with + Rewrote Big Number Clock function in chrono.c. Many problems with
it have been fixed. It now uses number value 10 to display a colon it have been fixed. It now uses number value 10 to display a colon
in between the digits. Don't know what this will do on a the MtxOrb in between the digits. Don't know what this will do on a the MtxOrb
+1
View File
@@ -1,3 +1,4 @@
bin_PROGRAMS = lcdproc bin_PROGRAMS = lcdproc
lcdproc_SOURCES = main.c main.h mode.c mode.h batt.c batt.h chrono.c chrono.h cpu.c cpu.h cpu_smp.c cpu_smp.h disk.c disk.h load.c load.h mem.c mem.h lcdproc_SOURCES = main.c main.h mode.c mode.h batt.c batt.h chrono.c chrono.h cpu.c cpu.h cpu_smp.c cpu_smp.h disk.c disk.h load.c load.h mem.c mem.h
lcdproc_LDADD = ../../shared/libLCDstuff.a lcdproc_LDADD = ../../shared/libLCDstuff.a
INCLUDES = -I$(top_srcdir)
+1 -1
View File
@@ -5,7 +5,7 @@
#include <fcntl.h> #include <fcntl.h>
#include <sys/utsname.h> #include <sys/utsname.h>
#include "../../shared/sockets.h" #include "shared/sockets.h"
#include "main.h" #include "main.h"
#include "mode.h" #include "mode.h"
+2 -2
View File
@@ -5,8 +5,8 @@
#include <unistd.h> #include <unistd.h>
#include "../../shared/sockets.h" #include "shared/sockets.h"
#include "../../shared/debug.h" #include "shared/debug.h"
#include "main.h" #include "main.h"
#include "mode.h" #include "mode.h"
+2 -2
View File
@@ -49,8 +49,8 @@
#include <unistd.h> #include <unistd.h>
#include <ctype.h> #include <ctype.h>
#include "../../shared/sockets.h" #include "shared/sockets.h"
#include "../../shared/debug.h" #include "shared/debug.h"
#include "main.h" #include "main.h"
#include "mode.h" #include "mode.h"
+1 -1
View File
@@ -27,7 +27,7 @@
#include <sys/statfs.h> #include <sys/statfs.h>
#endif #endif
#include "../../shared/sockets.h" #include "shared/sockets.h"
#include "main.h" #include "main.h"
#include "mode.h" #include "mode.h"
+17 -19
View File
@@ -230,25 +230,21 @@ main_loop (mode * sequence)
argc = 0; argc = 0;
newtoken = 1; newtoken = 1;
for (i = 0; i < len; i++) { for (i = 0; i < len; i++) {
if (buf[i]) // For regular letters, keep tokenizing... switch (buf[i]) {
{ case ' ':
switch (buf[i]) { newtoken = 1;
case ' ': buf[i] = 0;
newtoken = 1; break;
buf[i] = 0; default: // regular chars, keep tokenizing
break; if (newtoken) {
case '\n': argv[argc] = buf + i;
buf[i] = 0; argc++;
default:
if (newtoken) {
argv[argc] = buf + i;
argc++;
}
newtoken = 0;
break;
} }
} else // If we've got a zero, it's the end of a string... newtoken = 0;
{ break;
case '\0':
case '\n':
buf[i] = 0;
if (argc > 0) { if (argc > 0) {
//printf("%s %s\n", argv[0], argv[1]); //printf("%s %s\n", argv[0], argv[1]);
if (0 == strcmp (argv[0], "listen")) { if (0 == strcmp (argv[0], "listen")) {
@@ -293,9 +289,11 @@ main_loop (mode * sequence)
} }
} }
// Restart tokenizing
argc = 0; argc = 0;
newtoken = 1; newtoken = 1;
} break ;
} // switch( buf[i] )
} }
len = sock_recv (sock, buf, 8000); len = sock_recv (sock, buf, 8000);
+8 -3
View File
@@ -8,8 +8,8 @@
#include <fcntl.h> #include <fcntl.h>
#include <dirent.h> #include <dirent.h>
#include "../../shared/sockets.h" #include "shared/sockets.h"
#include "../../shared/LL.h" #include "shared/LL.h"
#include "main.h" #include "main.h"
#include "mode.h" #include "mode.h"
@@ -19,7 +19,12 @@
#include <strings.h> #include <strings.h>
#include <sys/stat.h> #include <sys/stat.h>
#include <sys/swap.h> #include <sys/swap.h>
#include <procfs.h> #ifdef HAVE_SYS_PROCFS_H
# include <sys/procfs.h>
#endif
#ifdef HAVE_PROCFS_H
# include <procfs.h>
#endif
#endif #endif
-1
View File
@@ -9,7 +9,6 @@
#include <fcntl.h> #include <fcntl.h>
#include <unistd.h> #include <unistd.h>
#include <sys/utsname.h> #include <sys/utsname.h>
#include <string.h> #include <string.h>
#ifdef HAVE_CONFIG_H #ifdef HAVE_CONFIG_H
+6 -25
View File
@@ -75,29 +75,11 @@ print $remote "widget_add metar cloud string\n";
print $remote "widget_add metar wind string\n"; print $remote "widget_add metar wind string\n";
# set metar source # set metar source
my $ua = new LWP::UserAgent; my $ua = new LWP::UserAgent;
my $req = new HTTP::Request GET => my $req = new HTTP::Request GET =>
"http://weather.noaa.gov/cgi-bin/mgetmetar.pl?cccc=$site_code"; "http://weather.noaa.gov/cgi-bin/mgetmetar.pl?cccc=$site_code";
# fork data collector from socket handling
$kidpid = fork();
# Parent
if ($kidpid) {
while (1==1) {
# read socket
my $lcdconnect = <$remote>;
}
# child
} else
{
# fetch weather information # fetch weather information
while (1==1) { while (1==1) {
@@ -136,13 +118,13 @@ while (1==1) {
my $metartime = $m->TIME; my $metartime = $m->TIME;
my $c_dew = $m->C_DEW; my $c_dew = $m->C_DEW;
my $f_temp = $m->F_TEMP; my $f_temp = $m->F_TEMP;
my $wind_dir_eng = $m->WIND_DIR_DEG; my $wind_dir_eng = $m->WIND_DIR_ENG;
my $wind_mph = $m->WIND_MPH; my $wind_mph = int($m->WIND_MPH);
my $sky = $m->SKY; my $sky = $m->SKY;
my $time = localtime(time); my $time = localtime(time);
print $remote "widget_set metar title {Weather LOWG " . $metartime . "}\n"; print $remote "widget_set metar title {Weather $site_code $metartime}\n";
print $remote "widget_set metar temp 1 2 {Temp " .$c_temp. "C (" .$c_dew. "C Dew)}\n"; print $remote "widget_set metar temp 1 2 {Temp ${c_temp}C (${c_dew}C Dew)}\n";
print $remote "widget_set metar wind 1 3 {Wind " .$wind_dir_eng. "G, " .$wind_mph. "mph}\n"; print $remote "widget_set metar wind 1 3 {Wind ${wind_dir_eng}, ${wind_mph}mph}\n";
print $remote "widget_set metar cloud 1 4 {Sky " . join(',', @{$m->{sky}}) . "}\n"; print $remote "widget_set metar cloud 1 4 {Sky " . join(',', @{$m->{sky}}) . "}\n";
# print "The temperature at $site_code is $c_temp C as of $time.\n"; # print "The temperature at $site_code is $c_temp C as of $time.\n";
# print "The wind blows to $wind_dir_eng, speed $wind_mph mph\n"; # print "The wind blows to $wind_dir_eng, speed $wind_mph mph\n";
@@ -150,13 +132,12 @@ while (1==1) {
} # end else } # end else
# eat all input from LCDd # eat all input from LCDd
while(defined($input = <$remote>)) { while(defined($input = <$remote>)) {
if ( $input =~ /^success$/ ) next; next if ( $input =~ /^success$/ );
#print $input; #print $input;
} }
print "Sleeping 15 minutes.\n"; print "Sleeping 15 minutes.\n";
sleep 900; sleep 900;
} }
}
close($remote); close($remote);
exit; exit;
+2 -2
View File
@@ -1,6 +1,6 @@
dnl Process this file with autoconf to produce a configure script. dnl Process this file with autoconf to produce a configure script.
AC_INIT(clients/lcdproc/batt.c) AC_INIT(clients/lcdproc/batt.c)
AM_INIT_AUTOMAKE(lcdproc, 0.4-pre9) AM_INIT_AUTOMAKE(lcdproc, 0.4.1)
AM_CONFIG_HEADER(config.h) AM_CONFIG_HEADER(config.h)
AC_CANONICAL_HOST AC_CANONICAL_HOST
@@ -110,7 +110,7 @@ AC_ARG_WITH(lcdport,
) )
AC_DEFINE_UNQUOTED(LCDPORT, $LCDPORT) AC_DEFINE_UNQUOTED(LCDPORT, $LCDPORT)
AC_DEFINE_UNQUOTED(PROTOCOL_VERSION, "0.2") AC_DEFINE_UNQUOTED(PROTOCOL_VERSION, "0.3")
AC_ARG_WITH(loadmax, AC_ARG_WITH(loadmax,
+1
View File
@@ -2,3 +2,4 @@ SUBDIRS=drivers
sbin_PROGRAMS=LCDd sbin_PROGRAMS=LCDd
LCDd_SOURCES= client_data.c client_data.h client_functions.c client_functions.h client_menu.h clients.c clients.h input.c input.h main.c main.h menu.c menu.h menus.c menus.h parse.c parse.h render.c render.h screen.c screen.h screenlist.c screenlist.h serverscreens.c serverscreens.h sock.c sock.h widget.c widget.h LCDd_SOURCES= client_data.c client_data.h client_functions.c client_functions.h client_menu.h clients.c clients.h input.c input.h main.c main.h menu.c menu.h menus.c menus.h parse.c parse.h render.c render.h screen.c screen.h screenlist.c screenlist.h serverscreens.c serverscreens.h sock.c sock.h widget.c widget.h
LCDd_LDADD = drivers/libLCDdrivers.a ../shared/libLCDstuff.a @LIBCURSES@ @LIBIRMAN@ @LIBLIRC_CLIENT@ LCDd_LDADD = drivers/libLCDdrivers.a ../shared/libLCDstuff.a @LIBCURSES@ @LIBIRMAN@ @LIBLIRC_CLIENT@
INCLUDES = -I$(top_srcdir)
+1 -1
View File
@@ -10,7 +10,7 @@
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#include "../shared/debug.h" #include "shared/debug.h"
#include "client_data.h" #include "client_data.h"
#include "screen.h" #include "screen.h"
+1 -1
View File
@@ -1,7 +1,7 @@
#ifndef CLIENT_DATA_H #ifndef CLIENT_DATA_H
#define CLIENT_DATA_H #define CLIENT_DATA_H
#include "../shared/LL.h" #include "shared/LL.h"
#define CLIENT_NAME_SIZE 256 #define CLIENT_NAME_SIZE 256
+60 -54
View File
@@ -15,8 +15,8 @@
#include <ctype.h> #include <ctype.h>
#include <errno.h> #include <errno.h>
#include "../shared/debug.h" #include "shared/debug.h"
#include "../shared/sockets.h" #include "shared/sockets.h"
#include "drivers/lcd.h" #include "drivers/lcd.h"
@@ -45,13 +45,13 @@ client_function commands[] = {
{"menu_add", menu_add_func}, {"menu_add", menu_add_func},
{"menu_del", menu_del_func}, {"menu_del", menu_del_func},
{"menu_set", menu_set_func}, {"menu_set", menu_set_func},
// TODO: Adhere these to the naming convention? {"menu_add_item", menu_add_item_func},
{"menu_item_add", menu_item_add_func}, {"menu_del_item", menu_del_item_func},
{"menu_item_del", menu_item_del_func}, {"menu_set_item", menu_set_item_func},
{"menu_item_set", menu_item_set_func},
// Misc stuff... // Misc stuff...
{"backlight", backlight_func}, {"backlight", backlight_func},
{"output", output_func}, {"output", output_func},
{"noop", noop_func},
{NULL, NULL}, {NULL, NULL},
}; };
@@ -110,7 +110,8 @@ client_set_func (client * c, int argc, char **argv)
for (i = 1; i < argc; i++) { for (i = 1; i < argc; i++) {
// Handle the "name" parameter // Handle the "name" parameter
if (0 == strcmp (argv[i], "-name")) { if (0 == strcmp (argv[i], "-name")
|| 0 == strcmp (argv[i], "name")) {
if (argc > i + 1) { if (argc > i + 1) {
i++; i++;
debug ("client_set: name=\"%s\"\n", argv[i]); debug ("client_set: name=\"%s\"\n", argv[i]);
@@ -272,40 +273,26 @@ screen_add_key_func (client * c, int argc, char **argv)
sock_send_string (c->sock, "huh? Invalid screen id\n"); sock_send_string (c->sock, "huh? Invalid screen id\n");
return 0; return 0;
} }
// Find the keys widget
w = widget_find( s, KEYS_WIDGETID );
if (!w) {
int err ;
// No keys widget, create a new one
err = widget_add (s, KEYS_WIDGETID, types[WID_KEYS], NULL, c->sock);
if (err < 0) {
fprintf (stderr, "screen_add_key: Error creating keys widget\n");
} else {
w = widget_find (s, KEYS_WIDGETID );
}
};
if (w) { // Save the keys
// Have a widget if (!s->keys) {
if (!w->text) { // Save supplied key list
// Save supplied key list s->keys = strdup( keys );
w->text = strdup( keys ); } else {
} else { // Add supplied keys to existing list
// Add supplied keys to existing list // NOTE: There could be duplicates in the resulting list
// NOTE: There could be duplicates in the resulting list // That's OK, it's the existence of the key in the list
// That's OK, it's the existence of the key in the list // that's important. We'll be more careful in the delete
// that's important. We'll be more careful in the delete // key function.
// key function. char * new ;
char * new ; new = realloc( s->keys, strlen(s->keys) + strlen(keys) +1 );
new = realloc( w->text, strlen(w->text) + strlen(keys) +1 ); if( new ) {
if( new ) { s->keys = new ;
w->text = new ; strcat( new, keys );
strcat( new, keys );
}
} }
} }
if (!w) { if (!s->keys) {
sock_send_string(c->sock, "huh? failed\n"); sock_send_string(c->sock, "huh? failed\n");
} else } else
sock_send_string(c->sock, "success\n"); sock_send_string(c->sock, "success\n");
@@ -349,18 +336,17 @@ screen_del_key_func (client * c, int argc, char **argv)
sock_send_string (c->sock, "huh? Invalid screen id\n"); sock_send_string (c->sock, "huh? Invalid screen id\n");
return 0; return 0;
} }
// Find the keys widget // Do we have keys?
w = widget_find( s, KEYS_WIDGETID ); if (s->keys) {
if (w && w->text) { // Have keys, remove keys from the list
// Got the widget, remove keys from the text member
// NOTE: We let malloc/realloc remember the length // NOTE: We let malloc/realloc remember the length
// of the allocated storage. If keys are later // of the allocated storage. If keys are later
// added, realloc (in add_key above) will make // added, realloc (in add_key above) will make
// sure there is enough space at w->text // sure there is enough space at s->keys
char * from ; char * from ;
char * to ; char * to ;
to = from = w->text ; to = from = s->keys ;
while( *from ) { while( *from ) {
// Is this key to be deleted from the list? // Is this key to be deleted from the list?
if( strchr( keys, *from ) ) { if( strchr( keys, *from ) ) {
@@ -482,7 +468,8 @@ screen_set_func (client * c, int argc, char **argv)
// Handle the rest of the parameters // Handle the rest of the parameters
for (i = 2; i < argc; i++) { for (i = 2; i < argc; i++) {
// Handle the "name" parameter // Handle the "name" parameter
if (0 == strcmp (argv[i], "-name")) { if (0 == strcmp (argv[i], "-name")
|| 0 == strcmp (argv[i], "name")) {
if (argc > i + 1) { if (argc > i + 1) {
i++; i++;
debug ("screen_set: name=\"%s\"\n", argv[i]); debug ("screen_set: name=\"%s\"\n", argv[i]);
@@ -497,7 +484,8 @@ screen_set_func (client * c, int argc, char **argv)
} }
} }
// Handle the "priority" parameter // Handle the "priority" parameter
else if (0 == strcmp (argv[i], "-priority")) { else if (0 == strcmp (argv[i], "-priority")
|| 0 == strcmp (argv[i], "priority")) {
if (argc > i + 1) { if (argc > i + 1) {
i++; i++;
debug ("screen_set: priority=\"%s\"\n", argv[i]); debug ("screen_set: priority=\"%s\"\n", argv[i]);
@@ -512,7 +500,8 @@ screen_set_func (client * c, int argc, char **argv)
} }
} }
// Handle the "duration" parameter // Handle the "duration" parameter
else if (0 == strcmp (argv[i], "-duration")) { else if (0 == strcmp (argv[i], "-duration")
|| 0 == strcmp (argv[i], "duration")) {
if (argc > i + 1) { if (argc > i + 1) {
i++; i++;
debug ("screen_set: duration=\"%s\"\n", argv[i]); debug ("screen_set: duration=\"%s\"\n", argv[i]);
@@ -527,7 +516,8 @@ screen_set_func (client * c, int argc, char **argv)
} }
} }
// Handle the "heartbeat" parameter // Handle the "heartbeat" parameter
else if (0 == strcmp (argv[i], "-heartbeat")) { else if (0 == strcmp (argv[i], "-heartbeat")
|| 0 == strcmp (argv[i], "heartbeat")) {
if (argc > i + 1) { if (argc > i + 1) {
i++; i++;
debug ("screen_set: heartbeat=\"%s\"\n", argv[i]); debug ("screen_set: heartbeat=\"%s\"\n", argv[i]);
@@ -553,7 +543,8 @@ screen_set_func (client * c, int argc, char **argv)
} }
} }
// Handle the "wid" parameter // Handle the "wid" parameter
else if (0 == strcmp (argv[i], "-wid")) { else if (0 == strcmp (argv[i], "-wid")
|| 0 == strcmp (argv[i], "wid")) {
if (argc > i + 1) { if (argc > i + 1) {
i++; i++;
debug ("screen_set: wid=\"%s\"\n", argv[i]); debug ("screen_set: wid=\"%s\"\n", argv[i]);
@@ -568,7 +559,8 @@ screen_set_func (client * c, int argc, char **argv)
} }
} }
// Handle the "hgt" parameter // Handle the "hgt" parameter
else if (0 == strcmp (argv[i], "-hgt")) { else if (0 == strcmp (argv[i], "-hgt")
|| 0 == strcmp (argv[i], "hgt")) {
if (argc > i + 1) { if (argc > i + 1) {
i++; i++;
debug ("screen_set: hgt=\"%s\"\n", argv[i]); debug ("screen_set: hgt=\"%s\"\n", argv[i]);
@@ -637,8 +629,9 @@ widget_add_func (client * c, int argc, char **argv)
// Check for additional flags... // Check for additional flags...
if (argc > 4) { if (argc > 4) {
// Handle the "-in" flag to place widgets in a container... // Handle the "in" flag to place widgets in a container...
if (0 == strcmp (argv[4], "-in")) { if (0 == strcmp (argv[4], "-in")
|| 0 == strcmp (argv[4], "in")) {
if (argc < 6) { if (argc < 6) {
sock_send_string (c->sock, "huh? Specify a frame to place widget in\n"); sock_send_string (c->sock, "huh? Specify a frame to place widget in\n");
return 0; return 0;
@@ -1020,7 +1013,7 @@ menu_set_func (client * c, int argc, char **argv)
// Adds an item to a menu // Adds an item to a menu
// //
int int
menu_item_add_func (client * c, int argc, char **argv) menu_add_item_func (client * c, int argc, char **argv)
{ {
if (!c->data->ack) if (!c->data->ack)
@@ -1035,7 +1028,7 @@ menu_item_add_func (client * c, int argc, char **argv)
// Deletes an item from a menu // Deletes an item from a menu
// //
int int
menu_item_del_func (client * c, int argc, char **argv) menu_del_item_func (client * c, int argc, char **argv)
{ {
if (!c->data->ack) if (!c->data->ack)
@@ -1052,7 +1045,7 @@ menu_item_del_func (client * c, int argc, char **argv)
// For example, text displayed, widget type, value, etc... // For example, text displayed, widget type, value, etc...
// //
int int
menu_item_set_func (client * c, int argc, char **argv) menu_set_item_func (client * c, int argc, char **argv)
{ {
if (!c->data->ack) if (!c->data->ack)
@@ -1154,6 +1147,19 @@ output_func (client * c, int argc, char **argv)
return 0; return 0;
} }
///////////////////////////////////////////////////////////////////////////
// Does nothing, returns "noop complete" message
//
// This is useful for shell scripts or programs that want to talk
// with LCDproc and not get deadlocked. Send a noop after each
// command and look for the "noop complete" message.
int
noop_func (client * c, int argc, char **argv)
{
sock_send_string (c->sock, "noop complete\n");
return 0;
}
/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////
/////////////////////////////////////////////////////////////////////////// ///////////////////////////////////////////////////////////////////////////
+4 -3
View File
@@ -28,11 +28,12 @@ int widget_set_func (client * c, int argc, char **argv);
int menu_add_func (client * c, int argc, char **argv); int menu_add_func (client * c, int argc, char **argv);
int menu_del_func (client * c, int argc, char **argv); int menu_del_func (client * c, int argc, char **argv);
int menu_set_func (client * c, int argc, char **argv); int menu_set_func (client * c, int argc, char **argv);
int menu_item_add_func (client * c, int argc, char **argv); int menu_add_item_func (client * c, int argc, char **argv);
int menu_item_del_func (client * c, int argc, char **argv); int menu_del_item_func (client * c, int argc, char **argv);
int menu_item_set_func (client * c, int argc, char **argv); int menu_set_item_func (client * c, int argc, char **argv);
int backlight_func (client * c, int argc, char **argv); int backlight_func (client * c, int argc, char **argv);
int output_func (client * c, int argc, char **argv); int output_func (client * c, int argc, char **argv);
int noop_func (client * c, int argc, char **argv);
extern client_function commands[]; extern client_function commands[];
+1 -1
View File
@@ -18,7 +18,7 @@
#include "clients.h" #include "clients.h"
#include "client_data.h" #include "client_data.h"
#include "../shared/debug.h" #include "shared/debug.h"
LL *clients; LL *clients;
+1 -1
View File
@@ -2,7 +2,7 @@
#define CLIENTS_H #define CLIENTS_H
#include "client_data.h" #include "client_data.h"
#include "../shared/LL.h" #include "shared/LL.h"
typedef struct client { typedef struct client {
int sock; int sock;
+8 -6
View File
@@ -5,15 +5,17 @@
#include <fcntl.h> #include <fcntl.h>
#include <string.h> #include <string.h>
#include <errno.h> #include <errno.h>
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
#include "lcd.h" #include "lcd.h"
#include "CFontz.h" #include "CFontz.h"
#include "drv_base.h" #include "drv_base.h"
#include "render.h"
#include "../render.h" #include "shared/debug.h"
#include "shared/str.h"
#include "../../shared/debug.h"
#include "../../shared/str.h"
#include "../../config.h"
static int custom = 0; static int custom = 0;
typedef enum { typedef enum {
+5
View File
@@ -14,3 +14,8 @@ EXTRA_libLCDdrivers_a_SOURCES = MtxOrb.c MtxOrb.h text.c text.h \
glk.c glk.h glkproto.c glkproto.h glk.c glk.h glkproto.c glkproto.h
libLCDdrivers_a_DEPENDENCIES = @DRIVERS@ libLCDdrivers_a_DEPENDENCIES = @DRIVERS@
libLCDdrivers_a_LIBADD = @DRIVERS@ libLCDdrivers_a_LIBADD = @DRIVERS@
# NOTE: $(srcdir)/.. is to get .h files from the server directory
# $(top_srcdir) is to get .h files from shared/...
# These are necessary because a VPATH build has split source and build
# directories and these files are in the VPATH'd source area.
INCLUDES = -I$(srcdir)/.. -I$(top_srcdir)
+7 -4
View File
@@ -5,13 +5,16 @@
#include <fcntl.h> #include <fcntl.h>
#include <string.h> #include <string.h>
#include <errno.h> #include <errno.h>
#ifdef HAVE_CONFIG_H
# include "config.h"
#endif
#include "lcd.h" #include "lcd.h"
#include "MtxOrb.h" #include "MtxOrb.h"
#include "drv_base.h" #include "drv_base.h"
#include "shared/debug.h"
#include "../../shared/debug.h" #include "shared/str.h"
#include "../../shared/str.h"
#include "../../config.h"
static int custom = 0; static int custom = 0;
static enum {MTXORB_LCD, MTXORB_LKD, MTXORB_VFD, MTXORB_VKD} MtxOrb_type; static enum {MTXORB_LCD, MTXORB_LKD, MTXORB_VFD, MTXORB_VKD} MtxOrb_type;
+1 -2
View File
@@ -10,7 +10,7 @@
#include <termios.h> #include <termios.h>
#include <fcntl.h> #include <fcntl.h>
#include <string.h> #include <string.h>
#include <sys/errno.h> #include <errno.h>
#include <sys/types.h> #include <sys/types.h>
#ifdef HAVE_CONFIG_H #ifdef HAVE_CONFIG_H
# include "config.h" # include "config.h"
@@ -26,7 +26,6 @@
# endif # endif
#endif #endif
#ifdef SOLARIS #ifdef SOLARIS
# include <errno.h>
# include <strings.h> # include <strings.h>
#endif #endif
#include "lcd.h" #include "lcd.h"
+1 -1
View File
@@ -15,7 +15,7 @@
#include <curses.h> #include <curses.h>
#endif #endif
#include "../../shared/str.h" #include "shared/str.h"
#include "lcd.h" #include "lcd.h"
#include "curses_drv.h" #include "curses_drv.h"
+4 -8
View File
@@ -355,18 +355,13 @@ int glk_contrast(int contrast)
// //
void glk_backlight(int on) void glk_backlight(int on)
{ {
/* if(on) {
if(on)
{
// printf("Backlight ON\n"); // printf("Backlight ON\n");
glkputl( PortFD, GLKCommand, 0x42, 0, EOF ); glkputl( PortFD, GLKCommand, 0x42, 0, EOF );
} } else {
else
{
// printf("Backlight OFF\n"); // printf("Backlight OFF\n");
glkputl( PortFD, GLKCommand, 0x46, EOF ); glkputl( PortFD, GLKCommand, 0x46, EOF );
} }
*/
} }
////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////
@@ -638,7 +633,7 @@ char glk_getkey()
msec_diff = (now.tv_sec - lastkey.tv_sec) * 1000 ; msec_diff = (now.tv_sec - lastkey.tv_sec) * 1000 ;
msec_diff += (now.tv_usec - lastkey.tv_usec) / 1000 ; msec_diff += (now.tv_usec - lastkey.tv_usec) / 1000 ;
// printf( "KEY %c down for %d msec\n", key, msec_diff ); // printf( "KEY %c down for %d msec\n", key, msec_diff );
if( msec_diff > 2000 ) { if( msec_diff > 1000 ) {
/* Generate repeat event */ /* Generate repeat event */
c = key | 0x20 ; /* Upper case to lower case */ c = key | 0x20 ; /* Upper case to lower case */
++lastkey.tv_sec ; /* HACK HACK. repeat at 1 sec intervals */ ++lastkey.tv_sec ; /* HACK HACK. repeat at 1 sec intervals */
@@ -656,6 +651,7 @@ char glk_getkey()
case 'L' : c = 'D' ; break ; /* Menu/Exit */ case 'L' : c = 'D' ; break ; /* Menu/Exit */
case 'U' : c = 'E' ; break ; /* Up */ case 'U' : c = 'E' ; break ; /* Up */
case 'K' : c = 'F' ; break ; /* Down */ case 'K' : c = 'F' ; break ; /* Down */
case 'v' : c = 'N' ; break ; case 'v' : c = 'N' ; break ;
case 'p' : c = 'O' ; break ; case 'p' : c = 'O' ; break ;
case 'q' : c = 'P' ; break ; case 'q' : c = 'P' ; break ;
+6 -8
View File
@@ -81,14 +81,12 @@ GLKDisplay *
* framing errors incase the module transmits back * framing errors incase the module transmits back
* to back with only one stop bit. * to back with only one stop bit.
*/ */
#ifndef IRIX new.c_iflag &= ~( IGNBRK | BRKINT | PARMRK | IGNPAR | ISTRIP
#ifndef SOLARIS | INLCR | IGNCR | ICRNL | IXON );
cfmakeraw( &new ); /* Sets CS8 */ new.c_oflag &= ~OPOST;
#endif new.c_lflag &= ~( ECHO | ECHONL | ICANON | ISIG | IEXTEN );
#endif new.c_cflag &= ~( CBAUD | CSIZE | PARENB | CRTSCTS );
new.c_iflag |= IGNPAR ; /* Ignore framing/parity errors */ new.c_cflag |= speed | CS8 | CREAD | CLOCAL | CSTOPB ;
new.c_cflag &= ~(CBAUD | CRTSCTS ) ;
new.c_cflag |= speed | CREAD | CLOCAL | CSTOPB ;
new.c_cc[VMIN] = 0 ; new.c_cc[VMIN] = 0 ;
new.c_cc[VTIME] = GLK_TIMEOUT ; new.c_cc[VTIME] = GLK_TIMEOUT ;
+1 -1
View File
@@ -39,7 +39,7 @@
#include "hd44780-4bit.h" #include "hd44780-4bit.h"
#include "port.h" #include "port.h"
#include "../../shared/str.h" #include "shared/str.h"
#include <sys/perm.h> #include <sys/perm.h>
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
+1 -1
View File
@@ -35,7 +35,7 @@
#include "hd44780-winamp.h" #include "hd44780-winamp.h"
#include "port.h" #include "port.h"
#include "../../shared/str.h" #include "shared/str.h"
#include <sys/perm.h> #include <sys/perm.h>
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
+1 -1
View File
@@ -66,7 +66,7 @@
# include <time.h> # include <time.h>
#endif #endif
#include "../../shared/str.h" #include "shared/str.h"
#include "lcd.h" #include "lcd.h"
#include "hd44780.h" #include "hd44780.h"
+2 -2
View File
@@ -17,8 +17,8 @@
#define __u32 unsigned int #define __u32 unsigned int
#define __u8 unsigned char #define __u8 unsigned char
#include "../../shared/debug.h" #include "shared/debug.h"
#include "../../shared/str.h" #include "shared/str.h"
#define NAME_LENGTH 128 #define NAME_LENGTH 128
+2 -2
View File
@@ -10,8 +10,8 @@
#include <linux/joystick.h> #include <linux/joystick.h>
#include "../../shared/debug.h" #include "shared/debug.h"
#include "../../shared/str.h" #include "shared/str.h"
#define NAME_LENGTH 128 #define NAME_LENGTH 128
+11 -10
View File
@@ -5,22 +5,23 @@
#include <fcntl.h> #include <fcntl.h>
#include <string.h> #include <string.h>
#include <errno.h> #include <errno.h>
#ifdef HAVE_NCURSES_H
#include <ncurses.h> #ifdef HAVE_CONFIG_H
#else # include "config.h"
#include <curses.h>
#endif #endif
#include "../../shared/str.h" #ifdef HAVE_NCURSES_H
# include <ncurses.h>
#else
# include <curses.h>
#endif
#include "shared/str.h"
#include "shared/debug.h"
#include "lcd.h" #include "lcd.h"
#include "lb216.h" #include "lb216.h"
#include "drv_base.h" #include "drv_base.h"
#include "render.h"
#include "../render.h"
#include "../../shared/debug.h"
#include "../../config.h"
static int custom=0; static int custom=0;
typedef enum { typedef enum {
+1 -1
View File
@@ -10,7 +10,7 @@
#include "config.h" #include "config.h"
#endif #endif
#include "../../shared/LL.h" #include "shared/LL.h"
#include "lcd.h" #include "lcd.h"
+2 -2
View File
@@ -17,8 +17,8 @@
#define __u32 unsigned int #define __u32 unsigned int
#define __u8 unsigned char #define __u8 unsigned char
#include "../../shared/debug.h" #include "shared/debug.h"
#include "../../shared/str.h" #include "shared/str.h"
#define NAME_LENGTH 128 #define NAME_LENGTH 128
+1 -1
View File
@@ -26,7 +26,7 @@
#include <vga.h> #include <vga.h>
#include <vgagl.h> #include <vgagl.h>
#include "../../shared/str.h" #include "shared/str.h"
#include "lcd.h" #include "lcd.h"
#include "svgalib_drv.h" #include "svgalib_drv.h"
+2 -2
View File
@@ -15,8 +15,8 @@
#include "wirz-sli.h" #include "wirz-sli.h"
#include "drv_base.h" #include "drv_base.h"
#include "../../shared/debug.h" #include "shared/debug.h"
#include "../../shared/str.h" #include "shared/str.h"
static int custom = 0; static int custom = 0;
typedef enum { typedef enum {
+2 -2
View File
@@ -28,8 +28,8 @@
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#include "../shared/sockets.h" #include "shared/sockets.h"
#include "../shared/debug.h" #include "shared/debug.h"
#include "drivers/lcd.h" #include "drivers/lcd.h"
+1 -1
View File
@@ -19,7 +19,7 @@
#include <signal.h> #include <signal.h>
#include <unistd.h> #include <unistd.h>
#include "../shared/debug.h" #include "shared/debug.h"
#include "drivers/lcd.h" #include "drivers/lcd.h"
#include "sock.h" #include "sock.h"
+1 -1
View File
@@ -14,7 +14,7 @@
#include <stdio.h> #include <stdio.h>
#include <unistd.h> #include <unistd.h>
#include "../shared/debug.h" #include "shared/debug.h"
#include "drivers/lcd.h" #include "drivers/lcd.h"
+3 -3
View File
@@ -13,9 +13,9 @@
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#include "../shared/LL.h" #include "shared/LL.h"
#include "../shared/sockets.h" #include "shared/sockets.h"
#include "../shared/debug.h" #include "shared/debug.h"
#include "clients.h" #include "clients.h"
#include "client_functions.h" #include "client_functions.h"
#include "parse.h" #include "parse.h"
+2 -2
View File
@@ -16,8 +16,8 @@
#include <string.h> #include <string.h>
#include <stdio.h> #include <stdio.h>
#include "../shared/debug.h" #include "shared/debug.h"
#include "../shared/LL.h" #include "shared/LL.h"
#include "drivers/lcd.h" #include "drivers/lcd.h"
+6 -4
View File
@@ -2,7 +2,7 @@
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#include "../shared/debug.h" #include "shared/debug.h"
#include "drivers/lcd.h" #include "drivers/lcd.h"
@@ -25,12 +25,12 @@ screen_create ()
s->id = NULL; s->id = NULL;
s->name = NULL; s->name = NULL;
s->priority = 128; s->priority = 128; // Default priority
// TODO: Make the screen duration configurable! s->duration = 32; // Default duration (~ 8 seconds)
s->duration = 32;
s->heartbeat = 1; s->heartbeat = 1;
s->wid = lcd.wid; s->wid = lcd.wid;
s->hgt = lcd.hgt; s->hgt = lcd.hgt;
s->keys = NULL;
s->parent = NULL; s->parent = NULL;
s->widgets = NULL; s->widgets = NULL;
@@ -63,6 +63,8 @@ screen_destroy (screen * s)
free (s->id); free (s->id);
if (s->name) if (s->name)
free (s->name); free (s->name);
if (s->keys)
free (s->keys);
free (s); free (s);
+2 -1
View File
@@ -1,7 +1,7 @@
#ifndef SCREEN_H #ifndef SCREEN_H
#define SCREEN_H #define SCREEN_H
#include "../shared/LL.h" #include "shared/LL.h"
#include "clients.h" #include "clients.h"
typedef struct screen { typedef struct screen {
@@ -11,6 +11,7 @@ typedef struct screen {
int priority; int priority;
int duration; int duration;
int heartbeat; int heartbeat;
char *keys;
LL *widgets; LL *widgets;
client *parent; client *parent;
} screen; } screen;
+3 -3
View File
@@ -1,9 +1,9 @@
#include <stdlib.h> #include <stdlib.h>
#include <stdio.h> #include <stdio.h>
#include "../shared/LL.h" #include "shared/LL.h"
#include "../shared/sockets.h" #include "shared/sockets.h"
#include "../shared/debug.h" #include "shared/debug.h"
#include "screenlist.h" #include "screenlist.h"
#include "screen.h" #include "screen.h"
#include "clients.h" #include "clients.h"
+1 -1
View File
@@ -1,7 +1,7 @@
#ifndef SOCKETS_H #ifndef SOCKETS_H
#define SOCKETS_H #define SOCKETS_H
#include "../shared/sockets.h" #include "shared/sockets.h"
typedef struct sockaddr_in sockaddr_in; typedef struct sockaddr_in sockaddr_in;
+2 -23
View File
@@ -2,8 +2,8 @@
#include <stdio.h> #include <stdio.h>
#include <string.h> #include <string.h>
#include "../shared/sockets.h" #include "shared/sockets.h"
#include "../shared/debug.h" #include "shared/debug.h"
#include "screen.h" #include "screen.h"
#include "widget.h" #include "widget.h"
@@ -17,7 +17,6 @@ char *types[] = { "none",
"scroller", "scroller",
"frame", "frame",
"num", "num",
"keys",
//"", //"",
NULL, NULL,
}; };
@@ -107,26 +106,6 @@ widget_find (screen * s, char *id)
debug ("widget_find(%s)\n", id); debug ("widget_find(%s)\n", id);
return widget_finder (s->widgets, id); return widget_finder (s->widgets, id);
/*
LL_Rewind(s->widgets);
do {
w = LL_Get(s->widgets);
if( (w) && (0 == strcmp(w->id, id)))
{
debug("widget_find: Found %s\n", id);
return w;
}
// TODO: Search kids too!
if( w->type == WID_FRAME )
{
err = widget_finder(w->kids, id);
if(err) return err;
}
} while(LL_Next(s->widgets) == 0);
return NULL;
*/
} }
widget * widget *
-1
View File
@@ -26,7 +26,6 @@ typedef struct widget {
#define WID_SCROLLER 6 #define WID_SCROLLER 6
#define WID_FRAME 7 #define WID_FRAME 7
#define WID_NUM 8 #define WID_NUM 8
#define WID_KEYS 9
#define WID_MAX_DIR 4 #define WID_MAX_DIR 4
+3 -1
View File
@@ -1,7 +1,9 @@
#ifndef DEBUG_H #ifndef DEBUG_H
#define DEBUG_H #define DEBUG_H
#include "../config.h" #ifdef HAVE_CONFIG_H
#include "config.h"
#endif
#ifdef DEBUG #ifdef DEBUG
+1 -2
View File
@@ -8,7 +8,6 @@
#include <sys/types.h> #include <sys/types.h>
#include <netinet/in.h> #include <netinet/in.h>
#include <netdb.h> #include <netdb.h>
#include <sys/socket.h>
#include <arpa/inet.h> #include <arpa/inet.h>
#include <fcntl.h> #include <fcntl.h>
@@ -96,7 +95,7 @@ sock_send_string (int fd, char *string)
if (!string) if (!string)
return -1; return -1;
len = strlen (string) + 1; len = strlen (string) ;
while (offset != len) { while (offset != len) {
// write isn't guaranteed to send the entire string at once, // write isn't guaranteed to send the entire string at once,
// so we have to sent it in a loop like this // so we have to sent it in a loop like this