diff --git a/clients/lcdproc/batt.c b/clients/lcdproc/batt.c index 66ce228..350d735 100644 --- a/clients/lcdproc/batt.c +++ b/clients/lcdproc/batt.c @@ -18,47 +18,47 @@ static int get_batt_stat (int *acstat, int *battstat, int *battflag, int *percen static int get_batt_stat (int *acstat, int *battstat, int *battflag, int *percent) { - char str[64]; + char str[64]; - if (!batt_fd) - batt_fd = open ("/proc/apm", O_RDONLY); - if (batt_fd <= 0) - return -1; + if (!batt_fd) + batt_fd = open ("/proc/apm", O_RDONLY); + if (batt_fd <= 0) + return -1; - if (lseek (batt_fd, 0, 0) != 0) - return -1; + if (lseek (batt_fd, 0, 0) != 0) + return -1; - if (read (batt_fd, str, sizeof (str) - 1) < 0) - return -1; + if (read (batt_fd, str, sizeof (str) - 1) < 0) + return -1; - if (3 > sscanf (str + 13, "0x%x 0x%x 0x%x %d", acstat, battstat, battflag, percent)) - return -1; + if (3 > sscanf (str + 13, "0x%x 0x%x 0x%x %d", acstat, battstat, battflag, percent)) + return -1; - return 0; + return 0; } int batt_init () { - static int first = 1; + static int first = 1; - if (first) { - first = 0; - sock_send_string (sock, "screen_add B\n"); - } + if (first) { + first = 0; + sock_send_string (sock, "screen_add B\n"); + } - return 0; + return 0; } int batt_close () { - if (batt_fd) - close (batt_fd); - batt_fd = 0; + if (batt_fd) + close (batt_fd); + batt_fd = 0; - return 0; + return 0; } //////////////////////////////////////////////////////////////////////// @@ -74,116 +74,116 @@ batt_close () int battery_screen (int rep, int display) { - static int first = 1; + static int first = 1; - int acstat = 0, battstat = 0, battflag = 0, percent = 0; + int acstat = 0, battstat = 0, battflag = 0, percent = 0; - if (first) { - first = 0; + if (first) { + first = 0; - sprintf (buffer, "screen_set B -name {APM stats: %s}\n", host); - sock_send_string (sock, buffer); - sock_send_string (sock, "widget_add B title title\n"); - sprintf (tmp, "widget_set B title {LCDPROC %s}\n", version); - sock_send_string (sock, tmp); - sock_send_string (sock, "widget_add B one string\n"); - if (lcd_hgt >= 4) { - sock_send_string (sock, "widget_add B two string\n"); - sock_send_string (sock, "widget_add B three string\n"); - sock_send_string (sock, "widget_add B gauge hbar\n"); - sock_send_string (sock, "widget_set B one 1 2 {AC: Unknown}\n"); - sock_send_string (sock, "widget_set B two 1 3 {Batt: Unknown}\n"); - sock_send_string (sock, "widget_set B three 1 4 {E F}\n"); - sock_send_string (sock, "widget_set B gauge 2 4 0\n"); - } - } - // Only run once every 16 frames... - //if(rep&0x0f) return 0; + sprintf (buffer, "screen_set B -name {APM stats: %s}\n", host); + sock_send_string (sock, buffer); + sock_send_string (sock, "widget_add B title title\n"); + sprintf (tmp, "widget_set B title {LCDPROC %s}\n", version); + sock_send_string (sock, tmp); + sock_send_string (sock, "widget_add B one string\n"); + if (lcd_hgt >= 4) { + sock_send_string (sock, "widget_add B two string\n"); + sock_send_string (sock, "widget_add B three string\n"); + sock_send_string (sock, "widget_add B gauge hbar\n"); + sock_send_string (sock, "widget_set B one 1 2 {AC: Unknown}\n"); + sock_send_string (sock, "widget_set B two 1 3 {Batt: Unknown}\n"); + sock_send_string (sock, "widget_set B three 1 4 {E F}\n"); + sock_send_string (sock, "widget_set B gauge 2 4 0\n"); + } + } + // Only run once every 16 frames... + //if(rep&0x0f) return 0; - get_batt_stat (&acstat, &battstat, &battflag, &percent); + get_batt_stat (&acstat, &battstat, &battflag, &percent); - if (percent >= 0) - sprintf (buffer, "%i%%", percent); - else - sprintf (buffer, "??%%"); - sprintf (tmp, "widget_set B title {Batt: %s: %s}\n", buffer, host); + if (percent >= 0) + sprintf (buffer, "%i%%", percent); + else + sprintf (buffer, "??%%"); + sprintf (tmp, "widget_set B title {Batt: %s: %s}\n", buffer, host); - if (display) - sock_send_string (sock, tmp); + if (display) + sock_send_string (sock, tmp); - if (lcd_hgt >= 4) // 4-line version of the screen - { - sprintf (tmp, "widget_set B one 1 2 {"); - switch (acstat) { - case 0: - sprintf (tmp + strlen (tmp), "AC: Off}\n"); - break; - case 1: - sprintf (tmp + strlen (tmp), "AC: On}\n"); - break; - case 2: - sprintf (tmp + strlen (tmp), "AC: Backup}\n"); - break; - default: - sprintf (tmp + strlen (tmp), "AC: Unknown}\n"); - break; - } + if (lcd_hgt >= 4) // 4-line version of the screen + { + sprintf (tmp, "widget_set B one 1 2 {"); + switch (acstat) { + case 0: + sprintf (tmp + strlen (tmp), "AC: Off}\n"); + break; + case 1: + sprintf (tmp + strlen (tmp), "AC: On}\n"); + break; + case 2: + sprintf (tmp + strlen (tmp), "AC: Backup}\n"); + break; + default: + sprintf (tmp + strlen (tmp), "AC: Unknown}\n"); + break; + } - if (display) - sock_send_string (sock, tmp); + if (display) + sock_send_string (sock, tmp); - sprintf (tmp, "widget_set B two 1 3 {"); - if (battflag == 0xff) { - sprintf (tmp + strlen (tmp), "Battery Stat Unknown"); - } else { - sprintf (tmp + strlen (tmp), "Batt:"); - if (battflag & 1) - sprintf (tmp + strlen (tmp), " High"); - if (battflag & 2) - sprintf (tmp + strlen (tmp), " Low"); - if (battflag & 4) - sprintf (tmp + strlen (tmp), " Critical"); - if (battflag & 8 || battstat == 3) - sprintf (tmp + strlen (tmp), " Charging"); - if (battflag & 128) - sprintf (tmp + strlen (tmp), " (NONE)"); - } - sprintf (tmp + strlen (tmp), "}\n"); - if (display) - sock_send_string (sock, tmp); + sprintf (tmp, "widget_set B two 1 3 {"); + if (battflag == 0xff) { + sprintf (tmp + strlen (tmp), "Battery Stat Unknown"); + } else { + sprintf (tmp + strlen (tmp), "Batt:"); + if (battflag & 1) + sprintf (tmp + strlen (tmp), " High"); + if (battflag & 2) + sprintf (tmp + strlen (tmp), " Low"); + if (battflag & 4) + sprintf (tmp + strlen (tmp), " Critical"); + if (battflag & 8 || battstat == 3) + sprintf (tmp + strlen (tmp), " Charging"); + if (battflag & 128) + sprintf (tmp + strlen (tmp), " (NONE)"); + } + sprintf (tmp + strlen (tmp), "}\n"); + if (display) + sock_send_string (sock, tmp); - if (percent > 0) { - sprintf (tmp, "widget_set B gauge 2 4 %i\n", (percent * ((lcd_wid - 2) * lcd_cellwid) / 100)); - if (display) - sock_send_string (sock, tmp); - } - } // end if(lcd_hgt >= 4) - else // two-line version of the screen - { - sprintf (tmp, "widget_set B one 1 2 {"); - if (acstat == 1) - sprintf (tmp + strlen (tmp), "AC, "); + if (percent > 0) { + sprintf (tmp, "widget_set B gauge 2 4 %i\n", (percent * ((lcd_wid - 2) * lcd_cellwid) / 100)); + if (display) + sock_send_string (sock, tmp); + } + } // end if(lcd_hgt >= 4) + else // two-line version of the screen + { + sprintf (tmp, "widget_set B one 1 2 {"); + if (acstat == 1) + sprintf (tmp + strlen (tmp), "AC, "); - if (battflag == 0xff) { - sprintf (tmp + strlen (tmp), "No battery???"); - } else { - sprintf (tmp + strlen (tmp), "Batt:"); - if (battflag & 1) - sprintf (tmp + strlen (tmp), " High"); - if (battflag & 2) - sprintf (tmp + strlen (tmp), " Low"); - if (battflag & 4) - sprintf (tmp + strlen (tmp), " Critical"); - if (battflag & 8 || battstat == 3) - sprintf (tmp + strlen (tmp), " Charging"); - if (battflag & 128) - sprintf (tmp + strlen (tmp), " (NONE)"); - } - sprintf (tmp + strlen (tmp), "}\n"); - if (display) - sock_send_string (sock, tmp); + if (battflag == 0xff) { + sprintf (tmp + strlen (tmp), "No battery???"); + } else { + sprintf (tmp + strlen (tmp), "Batt:"); + if (battflag & 1) + sprintf (tmp + strlen (tmp), " High"); + if (battflag & 2) + sprintf (tmp + strlen (tmp), " Low"); + if (battflag & 4) + sprintf (tmp + strlen (tmp), " Critical"); + if (battflag & 8 || battstat == 3) + sprintf (tmp + strlen (tmp), " Charging"); + if (battflag & 128) + sprintf (tmp + strlen (tmp), " (NONE)"); + } + sprintf (tmp + strlen (tmp), "}\n"); + if (display) + sock_send_string (sock, tmp); - } + } - return 0; + return 0; } diff --git a/clients/lcdproc/chrono.c b/clients/lcdproc/chrono.c index 02c28c6..f201c55 100644 --- a/clients/lcdproc/chrono.c +++ b/clients/lcdproc/chrono.c @@ -23,106 +23,106 @@ static double get_uptime (double *up, double *idle); static double get_uptime (double *up, double *idle) { - double uptime; + double uptime; - reread (uptime_fd, "get_uptime:"); - sscanf (buffer, "%lf %lf", &uptime, idle); + reread (uptime_fd, "get_uptime:"); + sscanf (buffer, "%lf %lf", &uptime, idle); - *up = uptime; + *up = uptime; - return uptime; + return uptime; } // A couple of tables for later use... static char *days[] = { - "Sunday, ", - "Monday, ", - "Tuesday, ", - "Wednesday,", - "Thursday, ", - "Friday, ", - "Saturday, ", + "Sunday, ", + "Monday, ", + "Tuesday, ", + "Wednesday,", + "Thursday, ", + "Friday, ", + "Saturday, ", }; static char *shortdays[] = { - "Sun", - "Mon", - "Tue", - "Wed", - "Thu", - "Fri", - "Sat", + "Sun", + "Mon", + "Tue", + "Wed", + "Thu", + "Fri", + "Sat", }; static char *months[] = { - " January", - " February", - " March", - " April", - " May", - " June", - " July", - " August", - "September", - " October", - " November", - " December", + " January", + " February", + " March", + " April", + " May", + " June", + " July", + " August", + "September", + " October", + " November", + " December", }; static char *shortmonths[] = { - "Jan", - "Feb", - "Mar", - "Apr", - "May", - "Jun", - "Jul", - "Aug", - "Sep", - "Oct", - "Nov", - "Dec", + "Jan", + "Feb", + "Mar", + "Apr", + "May", + "Jun", + "Jul", + "Aug", + "Sep", + "Oct", + "Nov", + "Dec", }; int chrono_init () { - struct utsname *unamebuf; + struct utsname *unamebuf; - if (!uptime_fd) { - unamebuf = (struct utsname *) malloc (sizeof (struct utsname)); - uptime_fd = open ("/proc/uptime", O_RDONLY); + if (!uptime_fd) { + unamebuf = (struct utsname *) malloc (sizeof (struct utsname)); + uptime_fd = open ("/proc/uptime", O_RDONLY); #if 0 - kversion_fd = open ("/proc/sys/kernel/osrelease", O_RDONLY); + kversion_fd = open ("/proc/sys/kernel/osrelease", O_RDONLY); - reread (kversion_fd, "main:"); - sscanf (buffer, "%s", kver); + reread (kversion_fd, "main:"); + sscanf (buffer, "%s", kver); - close (kversion_fd); + close (kversion_fd); # endif - /* Get OS name and version from uname() */ - if (uname (unamebuf) != 0) { - perror ("Error calling uname:"); - } - strcpy (kver, unamebuf->release); - strcpy (sysname, unamebuf->sysname); + /* Get OS name and version from uname() */ + if (uname (unamebuf) != 0) { + perror ("Error calling uname:"); + } + strcpy (kver, unamebuf->release); + strcpy (sysname, unamebuf->sysname); - free (unamebuf); + free (unamebuf); - } + } - return 0; + return 0; } int chrono_close () { - if (uptime_fd) - close (uptime_fd); + if (uptime_fd) + close (uptime_fd); - uptime_fd = 0; + uptime_fd = 0; - return 0; + return 0; } ////////////////////////////////////////////////////////////////////// @@ -139,133 +139,133 @@ chrono_close () int time_screen (int rep, int display) { - char hr[8], min[8], sec[8], ampm[8]; - char day[16], month[16]; - static int first = 1; - static int colons = 0; - time_t thetime; - struct tm *rtime; - double uptime, idle; - int i = 0; - char colon; + char hr[8], min[8], sec[8], ampm[8]; + char day[16], month[16]; + static int first = 1; + static int colons = 0; + time_t thetime; + struct tm *rtime; + double uptime, idle; + int i = 0; + char colon; - if (first) { - first = 0; + if (first) { + first = 0; - sock_send_string (sock, "screen_add T\n"); - sprintf (buffer, "screen_set T -name {Time Screen: %s}\n", host); - sock_send_string (sock, buffer); - sock_send_string (sock, "widget_add T title title\n"); - sock_send_string (sock, "widget_set T title {Time Screen}\n"); - sock_send_string (sock, "widget_add T one string\n"); - if (lcd_hgt >= 4) { - sock_send_string (sock, "widget_add T two string\n"); - sock_send_string (sock, "widget_add T three string\n"); - } else { - sprintf (buffer, "widget_set T title {TIME: %s}\n", host); - sock_send_string (sock, buffer); - } - } + sock_send_string (sock, "screen_add T\n"); + sprintf (buffer, "screen_set T -name {Time Screen: %s}\n", host); + sock_send_string (sock, buffer); + sock_send_string (sock, "widget_add T title title\n"); + sock_send_string (sock, "widget_set T title {Time Screen}\n"); + sock_send_string (sock, "widget_add T one string\n"); + if (lcd_hgt >= 4) { + sock_send_string (sock, "widget_add T two string\n"); + sock_send_string (sock, "widget_add T three string\n"); + } else { + sprintf (buffer, "widget_set T title {TIME: %s}\n", host); + sock_send_string (sock, buffer); + } + } - if (colons) - colon = ':'; - else - colon = ' '; + if (colons) + colon = ':'; + else + colon = ' '; - time (&thetime); - rtime = localtime (&thetime); + time (&thetime); + rtime = localtime (&thetime); - if (TwentyFourHour) { - sprintf (hr, "%02d", rtime->tm_hour); - } else { - if (rtime->tm_hour > 12) { - i = 1; - sprintf (hr, "%02d", (rtime->tm_hour - 12)); - } else if (rtime->tm_hour == 0) { - i = 0; - sprintf (hr, "12"); - } else { - i = 0; - sprintf (hr, "%02d", rtime->tm_hour); - } - } - if (rtime->tm_hour >= 12) - sprintf (ampm, "%s", "P"); - else - sprintf (ampm, "%s", "A"); + if (TwentyFourHour) { + sprintf (hr, "%02d", rtime->tm_hour); + } else { + if (rtime->tm_hour > 12) { + i = 1; + sprintf (hr, "%02d", (rtime->tm_hour - 12)); + } else if (rtime->tm_hour == 0) { + i = 0; + sprintf (hr, "12"); + } else { + i = 0; + sprintf (hr, "%02d", rtime->tm_hour); + } + } + if (rtime->tm_hour >= 12) + sprintf (ampm, "%s", "P"); + else + sprintf (ampm, "%s", "A"); - sprintf (min, "%02d", rtime->tm_min); - sprintf (sec, "%02d", rtime->tm_sec); + sprintf (min, "%02d", rtime->tm_min); + sprintf (sec, "%02d", rtime->tm_sec); - strcpy (day, shortdays[rtime->tm_wday]); - strcpy (month, shortmonths[rtime->tm_mon]); + strcpy (day, shortdays[rtime->tm_wday]); + strcpy (month, shortmonths[rtime->tm_mon]); - ///////////////////// Write the title bar (os name and version) + ///////////////////// Write the title bar (os name and version) - if (lcd_hgt >= 4) { - sprintf (tmp, "widget_set T title {"); - sprintf (tmp + strlen (tmp), "%s %s: %s}\n", sysname, kver, host); - if (display) - sock_send_string (sock, tmp); - } - /////////////////////// Display the time... - if (lcd_hgt >= 4) { - get_uptime (&uptime, &idle); - idle = (idle * 100) / uptime; + if (lcd_hgt >= 4) { + sprintf (tmp, "widget_set T title {"); + sprintf (tmp + strlen (tmp), "%s %s: %s}\n", sysname, kver, host); + if (display) + sock_send_string (sock, tmp); + } + /////////////////////// Display the time... + if (lcd_hgt >= 4) { + get_uptime (&uptime, &idle); + idle = (idle * 100) / uptime; - if (TwentyFourHour) - sprintf (tmp, "%s%c%s%c%s %2i%% idle", hr, colon, min, colon, sec, (int) idle); - else - sprintf (tmp, "%s%c%s%c%s%s %2i%% idle", hr, colon, min, colon, sec, ampm, (int) idle); - // Center the output line... - i = ((lcd_wid - strlen (tmp)) / 2) + 1; - sprintf (buffer, "widget_set T three %i 4 {%s}\n", i, tmp); - if (display) - sock_send_string (sock, buffer); + if (TwentyFourHour) + sprintf (tmp, "%s%c%s%c%s %2i%% idle", hr, colon, min, colon, sec, (int) idle); + else + sprintf (tmp, "%s%c%s%c%s%s %2i%% idle", hr, colon, min, colon, sec, ampm, (int) idle); + // Center the output line... + i = ((lcd_wid - strlen (tmp)) / 2) + 1; + sprintf (buffer, "widget_set T three %i 4 {%s}\n", i, tmp); + if (display) + sock_send_string (sock, buffer); - sprintf (tmp, "%s %s %d, %d", day, month, rtime->tm_mday, (rtime->tm_year + 1900)); - sprintf (buffer, "widget_set T two 3 3 {%s}\n", tmp); - if (display) - sock_send_string (sock, buffer); + sprintf (tmp, "%s %s %d, %d", day, month, rtime->tm_mday, (rtime->tm_year + 1900)); + sprintf (buffer, "widget_set T two 3 3 {%s}\n", tmp); + if (display) + sock_send_string (sock, buffer); - /////////////////////// Display the uptime... - i = (int) uptime / 86400; - sprintf (day, "Up %d day%s,", i, (i != 1 ? "s" : "")); - i = ((int) uptime % 86400) / 60 / 60; - sprintf (hr, "%02i", i); - i = (((int) uptime % 86400) % 3600) / 60; - sprintf (min, "%02i", i); - i = ((int) uptime % 60); - sprintf (sec, "%02i", i); - if (colons) - sprintf (tmp, "%s %s:%s:%s", day, hr, min, sec); - else - sprintf (tmp, "%s %s %s %s", day, hr, min, sec); - //// Center this line automatically... - //i = ((lcd_wid - strlen(tmp)) / 2) + 1; - sprintf (buffer, "widget_set T one 1 2 {%s}\n", tmp); - if (display) - sock_send_string (sock, buffer); + /////////////////////// Display the uptime... + i = (int) uptime / 86400; + sprintf (day, "Up %d day%s,", i, (i != 1 ? "s" : "")); + i = ((int) uptime % 86400) / 60 / 60; + sprintf (hr, "%02i", i); + i = (((int) uptime % 86400) % 3600) / 60; + sprintf (min, "%02i", i); + i = ((int) uptime % 60); + sprintf (sec, "%02i", i); + if (colons) + sprintf (tmp, "%s %s:%s:%s", day, hr, min, sec); + else + sprintf (tmp, "%s %s %s %s", day, hr, min, sec); + //// Center this line automatically... + //i = ((lcd_wid - strlen(tmp)) / 2) + 1; + sprintf (buffer, "widget_set T one 1 2 {%s}\n", tmp); + if (display) + sock_send_string (sock, buffer); - } else // 20x2 version of the screen - { - sprintf (tmp, "widget_set T one 1 2 {"); - if (lcd_wid >= 20) - sprintf (tmp + strlen (tmp), "%d-%02d-%02d ", rtime->tm_year + 1900, rtime->tm_mon + 1, rtime->tm_mday); - else // 16x2 version... - sprintf (tmp + strlen (tmp), "%02d/%02d ", rtime->tm_mon + 1, rtime->tm_mday); - sprintf (tmp + strlen (tmp), "%s%c%s%c%s", hr, colon, min, colon, sec); - if (!TwentyFourHour) - sprintf (tmp + strlen (tmp), "%s", ampm); - sprintf (tmp + strlen (tmp), "}\n"); - if (display) - sock_send_string (sock, tmp); - } + } else // 20x2 version of the screen + { + sprintf (tmp, "widget_set T one 1 2 {"); + if (lcd_wid >= 20) + sprintf (tmp + strlen (tmp), "%d-%02d-%02d ", rtime->tm_year + 1900, rtime->tm_mon + 1, rtime->tm_mday); + else // 16x2 version... + sprintf (tmp + strlen (tmp), "%02d/%02d ", rtime->tm_mon + 1, rtime->tm_mday); + sprintf (tmp + strlen (tmp), "%s%c%s%c%s", hr, colon, min, colon, sec); + if (!TwentyFourHour) + sprintf (tmp + strlen (tmp), "%s", ampm); + sprintf (tmp + strlen (tmp), "}\n"); + if (display) + sock_send_string (sock, tmp); + } - colons = colons ^ 1; + colons = colons ^ 1; - return 0; -} // End time_screen() + return 0; +} // End time_screen() ////////////////////////////////////////////////////////////////////// // Clock Screen displays current time and date... @@ -273,103 +273,103 @@ time_screen (int rep, int display) int clock_screen (int rep, int display) { - char hr[8], min[8], sec[8], ampm[8]; - char day[16], month[16]; - static int first = 1; - static int colons = 0; - time_t thetime; - struct tm *rtime; - int i = 0; - char colon; + char hr[8], min[8], sec[8], ampm[8]; + char day[16], month[16]; + static int first = 1; + static int colons = 0; + time_t thetime; + struct tm *rtime; + int i = 0; + char colon; - if (lcd_hgt < 4) - return 0; + if (lcd_hgt < 4) + return 0; - if (first) { - first = 0; + if (first) { + first = 0; - sock_send_string (sock, "screen_add O\n"); - sprintf (buffer, "screen_set O -name {Clock Screen: %s}\n", host); - sock_send_string (sock, buffer); - sock_send_string (sock, "widget_add O title title\n"); - sock_send_string (sock, "widget_add O one string\n"); - if (lcd_hgt >= 4) { - sock_send_string (sock, "widget_set O title {DATE & TIME}\n"); - sock_send_string (sock, "widget_add O two string\n"); - sock_send_string (sock, "widget_add O three string\n"); - sprintf (buffer, "widget_set O one 3 2 {%s}\n", host); - sock_send_string (sock, buffer); - } else { - sprintf (buffer, "widget_set O title {TIME: %s}\n", host); - sock_send_string (sock, buffer); - } - } + sock_send_string (sock, "screen_add O\n"); + sprintf (buffer, "screen_set O -name {Clock Screen: %s}\n", host); + sock_send_string (sock, buffer); + sock_send_string (sock, "widget_add O title title\n"); + sock_send_string (sock, "widget_add O one string\n"); + if (lcd_hgt >= 4) { + sock_send_string (sock, "widget_set O title {DATE & TIME}\n"); + sock_send_string (sock, "widget_add O two string\n"); + sock_send_string (sock, "widget_add O three string\n"); + sprintf (buffer, "widget_set O one 3 2 {%s}\n", host); + sock_send_string (sock, buffer); + } else { + sprintf (buffer, "widget_set O title {TIME: %s}\n", host); + sock_send_string (sock, buffer); + } + } - if (colons) - colon = ':'; - else - colon = ' '; + if (colons) + colon = ':'; + else + colon = ' '; - time (&thetime); - rtime = localtime (&thetime); + time (&thetime); + rtime = localtime (&thetime); - strcpy (day, days[rtime->tm_wday]); + strcpy (day, days[rtime->tm_wday]); - if (TwentyFourHour) { - sprintf (hr, "%02d", rtime->tm_hour); - } else { - if (rtime->tm_hour > 12) { - i = 1; - sprintf (hr, "%02d", (rtime->tm_hour - 12)); - } else { - i = 0; - sprintf (hr, "%02d", rtime->tm_hour); - } - } - if (rtime->tm_hour == 12) - i = 1; - sprintf (min, "%02d", rtime->tm_min); - sprintf (sec, "%02d", rtime->tm_sec); - if (i == 1) { - sprintf (ampm, "%s", "P"); - } else { - sprintf (ampm, "%s", "A"); - } - strcpy (month, months[rtime->tm_mon]); + if (TwentyFourHour) { + sprintf (hr, "%02d", rtime->tm_hour); + } else { + if (rtime->tm_hour > 12) { + i = 1; + sprintf (hr, "%02d", (rtime->tm_hour - 12)); + } else { + i = 0; + sprintf (hr, "%02d", rtime->tm_hour); + } + } + if (rtime->tm_hour == 12) + i = 1; + sprintf (min, "%02d", rtime->tm_min); + sprintf (sec, "%02d", rtime->tm_sec); + if (i == 1) { + sprintf (ampm, "%s", "P"); + } else { + sprintf (ampm, "%s", "A"); + } + strcpy (month, months[rtime->tm_mon]); - if (lcd_hgt >= 4) // 4-line version of the screen - { - sprintf (tmp, "widget_set O two 1 3 {"); - if (TwentyFourHour) - sprintf (tmp + strlen (tmp), "%s%c%s%c%s %s", hr, colon, min, colon, sec, day); - else - sprintf (tmp + strlen (tmp), "%s%c%s%c%s%s %s", hr, colon, min, colon, sec, ampm, day); - sprintf (tmp + strlen (tmp), "}\n"); - if (display) - sock_send_string (sock, tmp); + if (lcd_hgt >= 4) // 4-line version of the screen + { + sprintf (tmp, "widget_set O two 1 3 {"); + if (TwentyFourHour) + sprintf (tmp + strlen (tmp), "%s%c%s%c%s %s", hr, colon, min, colon, sec, day); + else + sprintf (tmp + strlen (tmp), "%s%c%s%c%s%s %s", hr, colon, min, colon, sec, ampm, day); + sprintf (tmp + strlen (tmp), "}\n"); + if (display) + sock_send_string (sock, tmp); - sprintf (tmp, "widget_set O three 2 4 {"); - sprintf (tmp + strlen (tmp), "%s %d, %d", month, rtime->tm_mday, (rtime->tm_year + 1900)); - sprintf (tmp + strlen (tmp), "}\n"); - if (display) - sock_send_string (sock, tmp); - } // end if(lcd_hgt >= 4) - else // 20x2 version of the screen - { - sprintf (tmp, "widget_set O one 1 2 {"); - sprintf (tmp + strlen (tmp), "%d-%02d-%02d ", rtime->tm_year + 1900, rtime->tm_mon + 1, rtime->tm_mday); - sprintf (tmp + strlen (tmp), "%s%c%s%c%s", hr, colon, min, colon, sec); - if (!TwentyFourHour) - sprintf (tmp + strlen (tmp), "%s", ampm); - sprintf (tmp + strlen (tmp), "}\n"); - if (display) - sock_send_string (sock, tmp); - } + sprintf (tmp, "widget_set O three 2 4 {"); + sprintf (tmp + strlen (tmp), "%s %d, %d", month, rtime->tm_mday, (rtime->tm_year + 1900)); + sprintf (tmp + strlen (tmp), "}\n"); + if (display) + sock_send_string (sock, tmp); + } // end if(lcd_hgt >= 4) + else // 20x2 version of the screen + { + sprintf (tmp, "widget_set O one 1 2 {"); + sprintf (tmp + strlen (tmp), "%d-%02d-%02d ", rtime->tm_year + 1900, rtime->tm_mon + 1, rtime->tm_mday); + sprintf (tmp + strlen (tmp), "%s%c%s%c%s", hr, colon, min, colon, sec); + if (!TwentyFourHour) + sprintf (tmp + strlen (tmp), "%s", ampm); + sprintf (tmp + strlen (tmp), "}\n"); + if (display) + sock_send_string (sock, tmp); + } - colons = colons ^ 1; + colons = colons ^ 1; - return 0; -} // End clock_screen() + return 0; +} // End clock_screen() //////////////////////////////////////////////////////////////////// // Uptime Screen shows info about system uptime and OS version @@ -377,65 +377,65 @@ clock_screen (int rep, int display) int uptime_screen (int rep, int display) { - int i; - char date[16], hour[8], min[8], sec[8]; - double uptime, idle; - static int first = 1; - static int colons = 0; - char colon; + int i; + char date[16], hour[8], min[8], sec[8]; + double uptime, idle; + static int first = 1; + static int colons = 0; + char colon; - if (first) { - first = 0; + if (first) { + first = 0; - sock_send_string (sock, "screen_add U\n"); - sprintf (buffer, "screen_set U -name {Uptime Screen: %s}\n", host); - sock_send_string (sock, buffer); - sock_send_string (sock, "widget_add U title title\n"); - if (lcd_hgt >= 4) { - sock_send_string (sock, "widget_set U title {SYSTEM UPTIME}\n"); - sock_send_string (sock, "widget_add U one string\n"); - sock_send_string (sock, "widget_add U two string\n"); - sock_send_string (sock, "widget_add U three string\n"); + sock_send_string (sock, "screen_add U\n"); + sprintf (buffer, "screen_set U -name {Uptime Screen: %s}\n", host); + sock_send_string (sock, buffer); + sock_send_string (sock, "widget_add U title title\n"); + if (lcd_hgt >= 4) { + sock_send_string (sock, "widget_set U title {SYSTEM UPTIME}\n"); + sock_send_string (sock, "widget_add U one string\n"); + sock_send_string (sock, "widget_add U two string\n"); + sock_send_string (sock, "widget_add U three string\n"); - sprintf (buffer, "widget_set U one 3 2 {%s}\n", host); - sock_send_string (sock, buffer); - sprintf (tmp, "widget_set U three 5 4 {%s %s}\n", sysname, kver); - sock_send_string (sock, tmp); - } else { - sprintf (tmp, "widget_set U title {%s %s: %s}\n", sysname, kver, host); - sock_send_string (sock, tmp); - sock_send_string (sock, "widget_add U one string\n"); - } - } + sprintf (buffer, "widget_set U one 3 2 {%s}\n", host); + sock_send_string (sock, buffer); + sprintf (tmp, "widget_set U three 5 4 {%s %s}\n", sysname, kver); + sock_send_string (sock, tmp); + } else { + sprintf (tmp, "widget_set U title {%s %s: %s}\n", sysname, kver, host); + sock_send_string (sock, tmp); + sock_send_string (sock, "widget_add U one string\n"); + } + } - if (colons) - colon = ':'; - else - colon = ' '; + if (colons) + colon = ':'; + else + colon = ' '; - get_uptime (&uptime, &idle); - i = (int) uptime / 86400; - sprintf (date, "%d day%s,", i, (i != 1 ? "s" : "")); - i = ((int) uptime % 86400) / 60 / 60; - sprintf (hour, "%02i", i); - i = (((int) uptime % 86400) % 3600) / 60; - sprintf (min, "%02i", i); - i = ((int) uptime % 60); - sprintf (sec, "%02i", i); - sprintf (tmp, "%s %s%c%s%c%s", date, hour, colon, min, colon, sec); - i = ((20 - strlen (tmp)) / 2) + 1; + get_uptime (&uptime, &idle); + i = (int) uptime / 86400; + sprintf (date, "%d day%s,", i, (i != 1 ? "s" : "")); + i = ((int) uptime % 86400) / 60 / 60; + sprintf (hour, "%02i", i); + i = (((int) uptime % 86400) % 3600) / 60; + sprintf (min, "%02i", i); + i = ((int) uptime % 60); + sprintf (sec, "%02i", i); + sprintf (tmp, "%s %s%c%s%c%s", date, hour, colon, min, colon, sec); + i = ((20 - strlen (tmp)) / 2) + 1; - if (lcd_hgt >= 4) - sprintf (buffer, "widget_set U two %i 3 {%s}\n", i, tmp); - else - sprintf (buffer, "widget_set U one %i 2 {%s}\n", i, tmp); - if (display) - sock_send_string (sock, buffer); + if (lcd_hgt >= 4) + sprintf (buffer, "widget_set U two %i 3 {%s}\n", i, tmp); + else + sprintf (buffer, "widget_set U one %i 2 {%s}\n", i, tmp); + if (display) + sock_send_string (sock, buffer); - colons = colons ^ 1; + colons = colons ^ 1; - return 0; -} // End uptime_screen() + return 0; +} // End uptime_screen() ////////////////////////////////////////////////////////////////////// // Big Clock Screen displays current time... @@ -452,61 +452,61 @@ uptime_screen (int rep, int display) int big_clock_screen (int rep, int display) { - static int first = 1; - static int colons = 0; - time_t thetime; - struct tm *rtime; - int pos[] = { 1, 4, 8, 11, 15, 18 }; - // int i=0; + static int first = 1; + static int colons = 0; + time_t thetime; + struct tm *rtime; + int pos[] = { 1, 4, 8, 11, 15, 18 }; + // int i=0; - char fulltxt[16], old_fulltxt[16]; - int j = 0; + char fulltxt[16], old_fulltxt[16]; + int j = 0; - if (lcd_hgt < 4) - return 0; + if (lcd_hgt < 4) + return 0; - if (first) { - first = 0; + if (first) { + first = 0; - sock_send_string (sock, "screen_add K\n"); - sock_send_string (sock, "screen_set K -name {Big Clock Screen}\n"); - sock_send_string (sock, "widget_del K heartbeat\n"); - sock_send_string (sock, "widget_add K d0 num\n"); - sock_send_string (sock, "widget_add K d1 num\n"); - sock_send_string (sock, "widget_add K d2 num\n"); - sock_send_string (sock, "widget_add K d3 num\n"); - sock_send_string (sock, "widget_add K d4 num\n"); - sock_send_string (sock, "widget_add K d5 num\n"); + sock_send_string (sock, "screen_add K\n"); + sock_send_string (sock, "screen_set K -name {Big Clock Screen}\n"); + sock_send_string (sock, "widget_del K heartbeat\n"); + sock_send_string (sock, "widget_add K d0 num\n"); + sock_send_string (sock, "widget_add K d1 num\n"); + sock_send_string (sock, "widget_add K d2 num\n"); + sock_send_string (sock, "widget_add K d3 num\n"); + sock_send_string (sock, "widget_add K d4 num\n"); + sock_send_string (sock, "widget_add K d5 num\n"); // sock_send_string(sock, "widget_add K one string\n"); - sock_send_string (sock, "widget_set K d0 1 0\n"); - sock_send_string (sock, "widget_set K d1 4 0\n"); - sock_send_string (sock, "widget_set K d2 8 0\n"); - sock_send_string (sock, "widget_set K d3 11 0\n"); - sock_send_string (sock, "widget_set K d4 15 0\n"); - sock_send_string (sock, "widget_set K d5 18 0\n"); - old_fulltxt[0] = '0'; - old_fulltxt[1] = '0'; - old_fulltxt[2] = '0'; - old_fulltxt[3] = '0'; - old_fulltxt[4] = '0'; - old_fulltxt[5] = '0'; - old_fulltxt[6] = 0; + sock_send_string (sock, "widget_set K d0 1 0\n"); + sock_send_string (sock, "widget_set K d1 4 0\n"); + sock_send_string (sock, "widget_set K d2 8 0\n"); + sock_send_string (sock, "widget_set K d3 11 0\n"); + sock_send_string (sock, "widget_set K d4 15 0\n"); + sock_send_string (sock, "widget_set K d5 18 0\n"); + old_fulltxt[0] = '0'; + old_fulltxt[1] = '0'; + old_fulltxt[2] = '0'; + old_fulltxt[3] = '0'; + old_fulltxt[4] = '0'; + old_fulltxt[5] = '0'; + old_fulltxt[6] = 0; // sock_send_string(sock, "widget_set K one 1 4 {000000}\n"); - } + } - time (&thetime); - rtime = localtime (&thetime); + time (&thetime); + rtime = localtime (&thetime); - sprintf (fulltxt, "%02d%02d%02d", rtime->tm_hour, rtime->tm_min, rtime->tm_sec); - for (j = 0; j < 6; j++) { - if (fulltxt[j] != old_fulltxt[j]) { - sprintf (tmp + strlen (tmp), "widget_set K d%d %d %c\n", j, pos[j], fulltxt[j]); - old_fulltxt[j] = fulltxt[j]; - } - } + sprintf (fulltxt, "%02d%02d%02d", rtime->tm_hour, rtime->tm_min, rtime->tm_sec); + for (j = 0; j < 6; j++) { + if (fulltxt[j] != old_fulltxt[j]) { + sprintf (tmp + strlen (tmp), "widget_set K d%d %d %c\n", j, pos[j], fulltxt[j]); + old_fulltxt[j] = fulltxt[j]; + } + } - if (display) - sock_send_string (sock, tmp); + if (display) + sock_send_string (sock, tmp); - return 0; -} // End big_clock_screen() + return 0; +} // End big_clock_screen() diff --git a/clients/lcdproc/cpu.c b/clients/lcdproc/cpu.c index ecb4d78..75cce48 100644 --- a/clients/lcdproc/cpu.c +++ b/clients/lcdproc/cpu.c @@ -12,7 +12,7 @@ #include "cpu.h" struct load { - unsigned long total, user, system, nice, idle; + unsigned long total, user, system, nice, idle; }; int load_fd = 0; @@ -21,43 +21,43 @@ static void get_load (struct load *result); static void get_load (struct load *result) { - static struct load last_load = { 0, 0, 0, 0, 0 }; - struct load curr_load; + static struct load last_load = { 0, 0, 0, 0, 0 }; + struct load curr_load; - reread (load_fd, "get_load:"); - sscanf (buffer, "%*s %lu %lu %lu %lu\n", &curr_load.user, &curr_load.nice, &curr_load.system, &curr_load.idle); - curr_load.total = curr_load.user + curr_load.nice + curr_load.system + curr_load.idle; - result->total = curr_load.total - last_load.total; - result->user = curr_load.user - last_load.user; - result->nice = curr_load.nice - last_load.nice; - result->system = curr_load.system - last_load.system; - result->idle = curr_load.idle - last_load.idle; - last_load.total = curr_load.total; - last_load.user = curr_load.user; - last_load.nice = curr_load.nice; - last_load.system = curr_load.system; - last_load.idle = curr_load.idle; + reread (load_fd, "get_load:"); + sscanf (buffer, "%*s %lu %lu %lu %lu\n", &curr_load.user, &curr_load.nice, &curr_load.system, &curr_load.idle); + curr_load.total = curr_load.user + curr_load.nice + curr_load.system + curr_load.idle; + result->total = curr_load.total - last_load.total; + result->user = curr_load.user - last_load.user; + result->nice = curr_load.nice - last_load.nice; + result->system = curr_load.system - last_load.system; + result->idle = curr_load.idle - last_load.idle; + last_load.total = curr_load.total; + last_load.user = curr_load.user; + last_load.nice = curr_load.nice; + last_load.system = curr_load.system; + last_load.idle = curr_load.idle; } int cpu_init () { - if (!load_fd) { - load_fd = open ("/proc/stat", O_RDONLY); - } + if (!load_fd) { + load_fd = open ("/proc/stat", O_RDONLY); + } - return 0; + return 0; } int cpu_close () { - if (load_fd) - close (load_fd); + if (load_fd) + close (load_fd); - load_fd = 0; + load_fd = 0; - return 0; + return 0; } ////////////////////////////////////////////////////////////////////////// @@ -68,193 +68,193 @@ cpu_screen (int rep, int display) { #undef CPU_BUF_SIZE #define CPU_BUF_SIZE 4 - int i, j, n; - static int first = 1; - float value; - static float cpu[CPU_BUF_SIZE + 1][5]; // last buffer is scratch - struct load load; + int i, j, n; + static int first = 1; + float value; + static float cpu[CPU_BUF_SIZE + 1][5]; // last buffer is scratch + struct load load; - if (first) { - first = 0; + if (first) { + first = 0; - sock_send_string (sock, "screen_add C\n"); - sprintf (buffer, "screen_set C -name {CPU Use: %s}\n", host); - sock_send_string (sock, buffer); - if (lcd_hgt >= 4) { - sock_send_string (sock, "widget_add C title title\n"); - sock_send_string (sock, "widget_set C title {CPU LOAD}\n"); - sock_send_string (sock, "widget_add C one string\n"); - sock_send_string (sock, "widget_set C one 1 2 {0 1 Sys 0.0%}\n"); - sock_send_string (sock, "widget_add C two string\n"); - sock_send_string (sock, "widget_add C three string\n"); - sock_send_string (sock, "widget_set C one 1 2 {Usr 0.0% Nice 0.0%}\n"); - sock_send_string (sock, "widget_set C two 1 3 {Sys 0.0% Idle 0.0%}\n"); - sock_send_string (sock, "widget_set C three 1 4 {0% 100%}\n"); - sock_send_string (sock, "widget_add C usr string\n"); - sock_send_string (sock, "widget_add C nice string\n"); - sock_send_string (sock, "widget_add C idle string\n"); - sock_send_string (sock, "widget_add C sys string\n"); - sock_send_string (sock, "widget_add C bar hbar\n"); - sock_send_string (sock, "widget_set C bar 3 4 0\n"); - } else { - sock_send_string (sock, "widget_add C cpu0 string\n"); - if (lcd_wid >= 20) - sock_send_string (sock, "widget_set C cpu0 1 1 {CPU0[ ]}\n"); - else - sock_send_string (sock, "widget_set C cpu0 1 1 {CPU0[ ]}\n"); - sock_send_string (sock, "widget_add C cpu0% string\n"); - sprintf (buffer, "widget_set C cpu0%% 1 %i { 0.0%%}\n", lcd_wid - 4); - sock_send_string (sock, buffer); - sock_send_string (sock, "widget_add C usni string\n"); - sock_send_string (sock, "widget_set C usni 1 2 { U S N I}\n"); - sock_send_string (sock, "widget_add C usr hbar\n"); - sock_send_string (sock, "widget_add C sys hbar\n"); - sock_send_string (sock, "widget_add C nice hbar\n"); - sock_send_string (sock, "widget_add C idle hbar\n"); - sock_send_string (sock, "widget_add C total hbar\n"); - sock_send_string (sock, "widget_set C total 6 1 0\n"); - } + sock_send_string (sock, "screen_add C\n"); + sprintf (buffer, "screen_set C -name {CPU Use: %s}\n", host); + sock_send_string (sock, buffer); + if (lcd_hgt >= 4) { + sock_send_string (sock, "widget_add C title title\n"); + sock_send_string (sock, "widget_set C title {CPU LOAD}\n"); + sock_send_string (sock, "widget_add C one string\n"); + sock_send_string (sock, "widget_set C one 1 2 {0 1 Sys 0.0%}\n"); + sock_send_string (sock, "widget_add C two string\n"); + sock_send_string (sock, "widget_add C three string\n"); + sock_send_string (sock, "widget_set C one 1 2 {Usr 0.0% Nice 0.0%}\n"); + sock_send_string (sock, "widget_set C two 1 3 {Sys 0.0% Idle 0.0%}\n"); + sock_send_string (sock, "widget_set C three 1 4 {0% 100%}\n"); + sock_send_string (sock, "widget_add C usr string\n"); + sock_send_string (sock, "widget_add C nice string\n"); + sock_send_string (sock, "widget_add C idle string\n"); + sock_send_string (sock, "widget_add C sys string\n"); + sock_send_string (sock, "widget_add C bar hbar\n"); + sock_send_string (sock, "widget_set C bar 3 4 0\n"); + } else { + sock_send_string (sock, "widget_add C cpu0 string\n"); + if (lcd_wid >= 20) + sock_send_string (sock, "widget_set C cpu0 1 1 {CPU0[ ]}\n"); + else + sock_send_string (sock, "widget_set C cpu0 1 1 {CPU0[ ]}\n"); + sock_send_string (sock, "widget_add C cpu0% string\n"); + sprintf (buffer, "widget_set C cpu0%% 1 %i { 0.0%%}\n", lcd_wid - 4); + sock_send_string (sock, buffer); + sock_send_string (sock, "widget_add C usni string\n"); + sock_send_string (sock, "widget_set C usni 1 2 { U S N I}\n"); + sock_send_string (sock, "widget_add C usr hbar\n"); + sock_send_string (sock, "widget_add C sys hbar\n"); + sock_send_string (sock, "widget_add C nice hbar\n"); + sock_send_string (sock, "widget_add C idle hbar\n"); + sock_send_string (sock, "widget_add C total hbar\n"); + sock_send_string (sock, "widget_set C total 6 1 0\n"); + } - return 0; - } - //else return 0; + return 0; + } + //else return 0; - get_load (&load); + get_load (&load); - // Shift values over by one - for (i = 0; i < (CPU_BUF_SIZE - 1); i++) - for (j = 0; j < 5; j++) - cpu[i][j] = cpu[i + 1][j]; + // Shift values over by one + for (i = 0; i < (CPU_BUF_SIZE - 1); i++) + for (j = 0; j < 5; j++) + cpu[i][j] = cpu[i + 1][j]; - // Read new data - cpu[CPU_BUF_SIZE - 1][0] = ((float) load.user / (float) load.total) * 100.0; - cpu[CPU_BUF_SIZE - 1][1] = ((float) load.system / (float) load.total) * 100.0; - cpu[CPU_BUF_SIZE - 1][2] = ((float) load.nice / (float) load.total) * 100.0; - cpu[CPU_BUF_SIZE - 1][3] = ((float) load.idle / (float) load.total) * 100.0; - cpu[CPU_BUF_SIZE - 1][4] = (((float) load.user + (float) load.system + (float) load.nice) / (float) load.total) * 100.0; + // Read new data + cpu[CPU_BUF_SIZE - 1][0] = ((float) load.user / (float) load.total) * 100.0; + cpu[CPU_BUF_SIZE - 1][1] = ((float) load.system / (float) load.total) * 100.0; + cpu[CPU_BUF_SIZE - 1][2] = ((float) load.nice / (float) load.total) * 100.0; + cpu[CPU_BUF_SIZE - 1][3] = ((float) load.idle / (float) load.total) * 100.0; + cpu[CPU_BUF_SIZE - 1][4] = (((float) load.user + (float) load.system + (float) load.nice) / (float) load.total) * 100.0; - // Only clear on first display... - if (!rep) { - /* - // Make all the same, if this is the first time... - for(i=0; i= 4) { - value = cpu[CPU_BUF_SIZE][4]; - n = (int) (value * 70.0); - if (value >= 99.9) { - sprintf (tmp, "100%%"); - } else { - sprintf (tmp, "%4.1f%%", value); - } - sprintf (buffer, "widget_set C title {CPU %s: %s}\n", tmp, host); - if (display) - sock_send_string (sock, buffer); + if (lcd_hgt >= 4) { + value = cpu[CPU_BUF_SIZE][4]; + n = (int) (value * 70.0); + if (value >= 99.9) { + sprintf (tmp, "100%%"); + } else { + sprintf (tmp, "%4.1f%%", value); + } + sprintf (buffer, "widget_set C title {CPU %s: %s}\n", tmp, host); + if (display) + sock_send_string (sock, buffer); - value = cpu[CPU_BUF_SIZE][0]; - if (value >= 99.9) { - sprintf (tmp, " 100%%"); - } else { - sprintf (tmp, "%4.1f%%", value); - } - sprintf (buffer, "widget_set C usr 5 2 {%s}\n", tmp); - if (display) - sock_send_string (sock, buffer); + value = cpu[CPU_BUF_SIZE][0]; + if (value >= 99.9) { + sprintf (tmp, " 100%%"); + } else { + sprintf (tmp, "%4.1f%%", value); + } + sprintf (buffer, "widget_set C usr 5 2 {%s}\n", tmp); + if (display) + sock_send_string (sock, buffer); - value = cpu[CPU_BUF_SIZE][1]; - if (value >= 99.9) { - sprintf (tmp, " 100%%"); - } else { - sprintf (tmp, "%4.1f%%", value); - } - sprintf (buffer, "widget_set C sys 5 3 {%s}\n", tmp); - if (display) - sock_send_string (sock, buffer); + value = cpu[CPU_BUF_SIZE][1]; + if (value >= 99.9) { + sprintf (tmp, " 100%%"); + } else { + sprintf (tmp, "%4.1f%%", value); + } + sprintf (buffer, "widget_set C sys 5 3 {%s}\n", tmp); + if (display) + sock_send_string (sock, buffer); - value = cpu[CPU_BUF_SIZE][2]; - if (value >= 99.9) { - sprintf (tmp, " 100%%"); - } else { - sprintf (tmp, "%4.1f%%", value); - } - sprintf (buffer, "widget_set C nice 16 2 {%s}\n", tmp); - if (display) - sock_send_string (sock, buffer); + value = cpu[CPU_BUF_SIZE][2]; + if (value >= 99.9) { + sprintf (tmp, " 100%%"); + } else { + sprintf (tmp, "%4.1f%%", value); + } + sprintf (buffer, "widget_set C nice 16 2 {%s}\n", tmp); + if (display) + sock_send_string (sock, buffer); - value = cpu[CPU_BUF_SIZE][3]; - if (value >= 99.9) { - sprintf (tmp, " 100%%"); - } else { - sprintf (tmp, "%4.1f%%", value); - } - sprintf (buffer, "widget_set C idle 16 3 {%s}\n", tmp); - if (display) - sock_send_string (sock, buffer); + value = cpu[CPU_BUF_SIZE][3]; + if (value >= 99.9) { + sprintf (tmp, " 100%%"); + } else { + sprintf (tmp, "%4.1f%%", value); + } + sprintf (buffer, "widget_set C idle 16 3 {%s}\n", tmp); + if (display) + sock_send_string (sock, buffer); - value = cpu[CPU_BUF_SIZE][4]; - n = (int) (value * (lcd_cellwid * 14) / 100.0); - sprintf (buffer, "widget_set C bar 3 4 %i\n", n); - if (display) - sock_send_string (sock, buffer); - } // end if(lcd_hgt >= 4) - else // 20x2 version - { - value = cpu[CPU_BUF_SIZE][4]; - if (value >= 99.9) { - sprintf (tmp, "100%%"); - } else { - sprintf (tmp, "%4.1f%%", value); - } - sprintf (buffer, "widget_set C cpu0%% %i 1 {%s}\n", lcd_wid - 4, tmp); - if (display) - sock_send_string (sock, buffer); + value = cpu[CPU_BUF_SIZE][4]; + n = (int) (value * (lcd_cellwid * 14) / 100.0); + sprintf (buffer, "widget_set C bar 3 4 %i\n", n); + if (display) + sock_send_string (sock, buffer); + } // end if(lcd_hgt >= 4) + else // 20x2 version + { + value = cpu[CPU_BUF_SIZE][4]; + if (value >= 99.9) { + sprintf (tmp, "100%%"); + } else { + sprintf (tmp, "%4.1f%%", value); + } + sprintf (buffer, "widget_set C cpu0%% %i 1 {%s}\n", lcd_wid - 4, tmp); + if (display) + sock_send_string (sock, buffer); - n = (float) (value * lcd_cellwid * (float) (lcd_wid - 11)) / 100.0; - sprintf (buffer, "widget_set C total 6 1 %i\n", n); - if (display) - sock_send_string (sock, buffer); + n = (float) (value * lcd_cellwid * (float) (lcd_wid - 11)) / 100.0; + sprintf (buffer, "widget_set C total 6 1 %i\n", n); + if (display) + sock_send_string (sock, buffer); - value = cpu[CPU_BUF_SIZE][0]; - n = (float) (value * lcd_cellwid * 4.0) / 100.0; - sprintf (buffer, "widget_set C usr 1 2 %i\n", n); - if (display) - sock_send_string (sock, buffer); + value = cpu[CPU_BUF_SIZE][0]; + n = (float) (value * lcd_cellwid * 4.0) / 100.0; + sprintf (buffer, "widget_set C usr 1 2 %i\n", n); + if (display) + sock_send_string (sock, buffer); - value = cpu[CPU_BUF_SIZE][1]; - n = (float) (value * lcd_cellwid * 3.0) / 100.0; - sprintf (buffer, "widget_set C sys 7 2 %i\n", n); - if (display) - sock_send_string (sock, buffer); + value = cpu[CPU_BUF_SIZE][1]; + n = (float) (value * lcd_cellwid * 3.0) / 100.0; + sprintf (buffer, "widget_set C sys 7 2 %i\n", n); + if (display) + sock_send_string (sock, buffer); - value = cpu[CPU_BUF_SIZE][2]; - n = (float) (value * lcd_cellwid * 3.0) / 100.0; - sprintf (buffer, "widget_set C nice 12 2 %i\n", n); - if (display) - sock_send_string (sock, buffer); + value = cpu[CPU_BUF_SIZE][2]; + n = (float) (value * lcd_cellwid * 3.0) / 100.0; + sprintf (buffer, "widget_set C nice 12 2 %i\n", n); + if (display) + sock_send_string (sock, buffer); - value = cpu[CPU_BUF_SIZE][3]; - n = (float) (value * lcd_cellwid * 3.0) / 100.0; - sprintf (buffer, "widget_set C idle 17 2 %i\n", n); - if (display) - sock_send_string (sock, buffer); + value = cpu[CPU_BUF_SIZE][3]; + n = (float) (value * lcd_cellwid * 3.0) / 100.0; + sprintf (buffer, "widget_set C idle 17 2 %i\n", n); + if (display) + sock_send_string (sock, buffer); - } + } - return 0; -} // End cpu_screen() + return 0; +} // End cpu_screen() ////////////////////////////////////////////////////////////////////////// // Cpu Graph Screen shows a quick-moving histogram of CPU use. @@ -262,95 +262,95 @@ cpu_screen (int rep, int display) int cpu_graph_screen (int rep, int display) { - int i, j, n = 0; - static int first = 1; - float value, maxload; + int i, j, n = 0; + static int first = 1; + float value, maxload; #undef CPU_BUF_SIZE #define CPU_BUF_SIZE 2 - static float cpu[CPU_BUF_SIZE + 1]; // last buffer is scratch - static int cpu_past[LCD_MAX_WIDTH]; - struct load load; - int status = 0; + static float cpu[CPU_BUF_SIZE + 1]; // last buffer is scratch + static int cpu_past[LCD_MAX_WIDTH]; + struct load load; + int status = 0; - if (first) { - first = 0; - sock_send_string (sock, "screen_add G\n"); - sprintf (buffer, "screen_set G -name {CPU Graph: %s}\n", host); - sock_send_string (sock, buffer); - if (lcd_hgt >= 4) { - sock_send_string (sock, "widget_add G title title\n"); - sprintf (buffer, "widget_set G title {CPU: %s}\n", host); - } else { - sock_send_string (sock, "widget_add G title string\n"); - sprintf (buffer, "widget_set G title 1 1 {CPU: %s}\n", host); - } - sock_send_string (sock, buffer); + if (first) { + first = 0; + sock_send_string (sock, "screen_add G\n"); + sprintf (buffer, "screen_set G -name {CPU Graph: %s}\n", host); + sock_send_string (sock, buffer); + if (lcd_hgt >= 4) { + sock_send_string (sock, "widget_add G title title\n"); + sprintf (buffer, "widget_set G title {CPU: %s}\n", host); + } else { + sock_send_string (sock, "widget_add G title string\n"); + sprintf (buffer, "widget_set G title 1 1 {CPU: %s}\n", host); + } + sock_send_string (sock, buffer); - for (i = 1; i <= lcd_wid; i++) { - sprintf (tmp, "widget_add G %i vbar\n", i); - sock_send_string (sock, tmp); - sprintf (tmp, "widget_set G %i %i %i 0\n", i, i, lcd_hgt); - sock_send_string (sock, tmp); - } - } + for (i = 1; i <= lcd_wid; i++) { + sprintf (tmp, "widget_add G %i vbar\n", i); + sock_send_string (sock, tmp); + sprintf (tmp, "widget_set G %i %i %i 0\n", i, i, lcd_hgt); + sock_send_string (sock, tmp); + } + } - get_load (&load); + get_load (&load); - // Shift values over by one - for (i = 0; i < (CPU_BUF_SIZE - 1); i++) - cpu[i] = cpu[i + 1]; + // Shift values over by one + for (i = 0; i < (CPU_BUF_SIZE - 1); i++) + cpu[i] = cpu[i + 1]; - // Read new data - cpu[CPU_BUF_SIZE - 1] = ((float) load.user + (float) load.system + (float) load.nice) / (float) load.total; + // Read new data + cpu[CPU_BUF_SIZE - 1] = ((float) load.user + (float) load.system + (float) load.nice) / (float) load.total; - // Only clear on first display... - if (!rep) { - /* - // Make all the same, if this is the first time... - for(i=0; i maxload) - maxload = cpu_past[i]; - } + if (cpu_past[i] > maxload) + maxload = cpu_past[i]; + } - value = cpu[CPU_BUF_SIZE]; - if (lcd_hgt > 2) - n = (int) (value * (float) (lcd_cellhgt) * (float) (lcd_hgt - 1)); - else - n = (int) (value * (float) (lcd_cellhgt) * (float) (lcd_hgt)); + value = cpu[CPU_BUF_SIZE]; + if (lcd_hgt > 2) + n = (int) (value * (float) (lcd_cellhgt) * (float) (lcd_hgt - 1)); + else + n = (int) (value * (float) (lcd_cellhgt) * (float) (lcd_hgt)); - cpu_past[lcd_wid - 1] = n; - sprintf (tmp, "widget_set G %i %i %i %i\n", lcd_wid, lcd_wid, lcd_hgt, n); - if (display) - sock_send_string (sock, tmp); + cpu_past[lcd_wid - 1] = n; + sprintf (tmp, "widget_set G %i %i %i %i\n", lcd_wid, lcd_wid, lcd_hgt, n); + if (display) + sock_send_string (sock, tmp); - if (n > maxload) - maxload = n; + if (n > maxload) + maxload = n; - if (cpu_past[lcd_wid - 1] > 0) - status = BACKLIGHT_ON; - if (maxload < 1) - status = BACKLIGHT_OFF; + if (cpu_past[lcd_wid - 1] > 0) + status = BACKLIGHT_ON; + if (maxload < 1) + status = BACKLIGHT_OFF; // return status; - return 0; -} // End cpu_graph_screen() + return 0; +} // End cpu_graph_screen() diff --git a/clients/lcdproc/cpu_smp.c b/clients/lcdproc/cpu_smp.c index c0c56f3..75ba64d 100644 --- a/clients/lcdproc/cpu_smp.c +++ b/clients/lcdproc/cpu_smp.c @@ -59,7 +59,7 @@ #define MAX_CPUS 8 struct load { - unsigned long total, user, system, nice, idle; + unsigned long total, user, system, nice, idle; }; static int load_fd = 0; @@ -69,62 +69,62 @@ static char *numnames[MAX_CPUS] = { "one", "two", "three", "four", "five", "six" static void get_load (struct load *result, int *numcpus) { - char *token; - static struct load last_load[MAX_CPUS]; - struct load curr_load[MAX_CPUS]; + char *token; + static struct load last_load[MAX_CPUS]; + struct load curr_load[MAX_CPUS]; - *numcpus = 0; + *numcpus = 0; - reread (load_fd, "get_load"); + reread (load_fd, "get_load"); - // Look for lines starting with "cpu0", "cpu1", etc. + // Look for lines starting with "cpu0", "cpu1", etc. - token = strtok (buffer, "\n"); - while (token) { - if (token[0] == 'c') { - if (isdigit (token[3])) { - sscanf (token, "%*s %lu %lu %lu %lu", &curr_load[*numcpus].user, &curr_load[*numcpus].nice, &curr_load[*numcpus].system, &curr_load[*numcpus].idle); + token = strtok (buffer, "\n"); + while (token) { + if (token[0] == 'c') { + if (isdigit (token[3])) { + sscanf (token, "%*s %lu %lu %lu %lu", &curr_load[*numcpus].user, &curr_load[*numcpus].nice, &curr_load[*numcpus].system, &curr_load[*numcpus].idle); - curr_load[*numcpus].total = curr_load[*numcpus].user + curr_load[*numcpus].nice + curr_load[*numcpus].system + curr_load[*numcpus].idle; - result[*numcpus].total = curr_load[*numcpus].total - last_load[*numcpus].total; - result[*numcpus].user = curr_load[*numcpus].user - last_load[*numcpus].user; - result[*numcpus].nice = curr_load[*numcpus].nice - last_load[*numcpus].nice; - result[*numcpus].system = curr_load[*numcpus].system - last_load[*numcpus].system; - result[*numcpus].idle = curr_load[*numcpus].idle - last_load[*numcpus].idle; - last_load[*numcpus].total = curr_load[*numcpus].total; - last_load[*numcpus].user = curr_load[*numcpus].user; - last_load[*numcpus].nice = curr_load[*numcpus].nice; - last_load[*numcpus].system = curr_load[*numcpus].system; - last_load[*numcpus].idle = curr_load[*numcpus].idle; + curr_load[*numcpus].total = curr_load[*numcpus].user + curr_load[*numcpus].nice + curr_load[*numcpus].system + curr_load[*numcpus].idle; + result[*numcpus].total = curr_load[*numcpus].total - last_load[*numcpus].total; + result[*numcpus].user = curr_load[*numcpus].user - last_load[*numcpus].user; + result[*numcpus].nice = curr_load[*numcpus].nice - last_load[*numcpus].nice; + result[*numcpus].system = curr_load[*numcpus].system - last_load[*numcpus].system; + result[*numcpus].idle = curr_load[*numcpus].idle - last_load[*numcpus].idle; + last_load[*numcpus].total = curr_load[*numcpus].total; + last_load[*numcpus].user = curr_load[*numcpus].user; + last_load[*numcpus].nice = curr_load[*numcpus].nice; + last_load[*numcpus].system = curr_load[*numcpus].system; + last_load[*numcpus].idle = curr_load[*numcpus].idle; - (*numcpus)++; - } - } else { - break; - } - token = strtok (NULL, "\n"); - } + (*numcpus)++; + } + } else { + break; + } + token = strtok (NULL, "\n"); + } } int cpu_smp_init () { - if (!load_fd) { - load_fd = open ("/proc/stat", O_RDONLY); - } + if (!load_fd) { + load_fd = open ("/proc/stat", O_RDONLY); + } - return 0; + return 0; } int cpu_smp_close () { - if (load_fd) - close (load_fd); + if (load_fd) + close (load_fd); - load_fd = 0; + load_fd = 0; - return 0; + return 0; } ////////////////////////////////////////////////////////////////////////// @@ -135,105 +135,105 @@ cpu_smp_screen (int rep, int display) { #undef CPU_BUF_SIZE #define CPU_BUF_SIZE 4 - int i, j, n, z; - static int first = 1; - float value; - static float cpu[MAX_CPUS][CPU_BUF_SIZE + 1][5]; // last buffer is scratch - struct load load[MAX_CPUS]; - int numprocs; - char buf[256]; - char *graphsize; + int i, j, n, z; + static int first = 1; + float value; + static float cpu[MAX_CPUS][CPU_BUF_SIZE + 1][5]; // last buffer is scratch + struct load load[MAX_CPUS]; + int numprocs; + char buf[256]; + char *graphsize; - if (first) { - first = 0; + if (first) { + first = 0; - get_load (load, &numprocs); + get_load (load, &numprocs); - sock_send_string (sock, "screen_add P\n"); - sock_send_string (sock, "widget_del P heartbeat\n"); + sock_send_string (sock, "screen_add P\n"); + sock_send_string (sock, "widget_del P heartbeat\n"); - sprintf (buffer, "screen_set P -name {CPU Use: %s}\n", host); - sock_send_string (sock, buffer); + sprintf (buffer, "screen_set P -name {CPU Use: %s}\n", host); + sock_send_string (sock, buffer); - graphsize = calloc (sizeof (char), lcd_wid); - if (numprocs > lcd_hgt) { - for (i = 0; i < lcd_wid / 2 - 6; i++) { - graphsize[i] = ' '; - } - } else { - for (i = 0; i < lcd_wid - 6; i++) { - graphsize[i] = ' '; - } - } + graphsize = calloc (sizeof (char), lcd_wid); + if (numprocs > lcd_hgt) { + for (i = 0; i < lcd_wid / 2 - 6; i++) { + graphsize[i] = ' '; + } + } else { + for (i = 0; i < lcd_wid - 6; i++) { + graphsize[i] = ' '; + } + } - for (i = 0; i < numprocs; i++) { - if (i + 1 > lcd_hgt * 2) - break; + for (i = 0; i < numprocs; i++) { + if (i + 1 > lcd_hgt * 2) + break; - sprintf (buf, "widget_add P %s_title string\n", numnames[i]); - sock_send_string (sock, buf); + sprintf (buf, "widget_add P %s_title string\n", numnames[i]); + sock_send_string (sock, buf); - if (numprocs > lcd_hgt) { - sprintf (buf, "widget_set P %s_title %d %d \"CPU%d[%s]\"\n", numnames[i], i % 2 * lcd_wid / 2 + 1, i / 2 + 1, i, graphsize); - } else { - sprintf (buf, "widget_set P %s_title 1 %d \"CPU%d[%s]\"\n", numnames[i], i + 1, i, graphsize); - } - sock_send_string (sock, buf); + if (numprocs > lcd_hgt) { + sprintf (buf, "widget_set P %s_title %d %d \"CPU%d[%s]\"\n", numnames[i], i % 2 * lcd_wid / 2 + 1, i / 2 + 1, i, graphsize); + } else { + sprintf (buf, "widget_set P %s_title 1 %d \"CPU%d[%s]\"\n", numnames[i], i + 1, i, graphsize); + } + sock_send_string (sock, buf); - sprintf (buf, "widget_add P %s_bar hbar\n", numnames[i]); - sock_send_string (sock, buf); - } + sprintf (buf, "widget_add P %s_bar hbar\n", numnames[i]); + sock_send_string (sock, buf); + } - free (graphsize); + free (graphsize); - return 0; - } + return 0; + } - get_load (load, &numprocs); + get_load (load, &numprocs); - for (z = 0; z < numprocs; z++) { + for (z = 0; z < numprocs; z++) { - // Shift values over by one - for (i = 0; i < (CPU_BUF_SIZE - 1); i++) - for (j = 4; j < 5; j++) - cpu[z][i][j] = cpu[z][i + 1][j]; + // Shift values over by one + for (i = 0; i < (CPU_BUF_SIZE - 1); i++) + for (j = 4; j < 5; j++) + cpu[z][i][j] = cpu[z][i + 1][j]; - if (load[z].total == 0) { - continue; - } - // Read new data -#if 0 // we're only using 4 right now - cpu[z][CPU_BUF_SIZE - 1][0] = ((float) load[z].user / (float) load[z].total) * 100.0; - cpu[z][CPU_BUF_SIZE - 1][1] = ((float) load[z].system / (float) load[z].total) * 100.0; - cpu[z][CPU_BUF_SIZE - 1][2] = ((float) load[z].nice / (float) load[z].total) * 100.0; - cpu[z][CPU_BUF_SIZE - 1][3] = ((float) load[z].idle / (float) load[z].total) * 100.0; + if (load[z].total == 0) { + continue; + } + // Read new data +#if 0 // we're only using 4 right now + cpu[z][CPU_BUF_SIZE - 1][0] = ((float) load[z].user / (float) load[z].total) * 100.0; + cpu[z][CPU_BUF_SIZE - 1][1] = ((float) load[z].system / (float) load[z].total) * 100.0; + cpu[z][CPU_BUF_SIZE - 1][2] = ((float) load[z].nice / (float) load[z].total) * 100.0; + cpu[z][CPU_BUF_SIZE - 1][3] = ((float) load[z].idle / (float) load[z].total) * 100.0; #endif - cpu[z][CPU_BUF_SIZE - 1][4] = (((float) load[z].user + (float) load[z].system + (float) load[z].nice) / (float) load[z].total) * 100.0; + cpu[z][CPU_BUF_SIZE - 1][4] = (((float) load[z].user + (float) load[z].system + (float) load[z].nice) / (float) load[z].total) * 100.0; - // Average values for final result - for (i = 4; i < 5; i++) { - value = 0; - for (j = 0; j < CPU_BUF_SIZE; j++) { - value += cpu[z][j][i]; - } - value /= CPU_BUF_SIZE; - cpu[z][CPU_BUF_SIZE][i] = value; - } + // Average values for final result + for (i = 4; i < 5; i++) { + value = 0; + for (j = 0; j < CPU_BUF_SIZE; j++) { + value += cpu[z][j][i]; + } + value /= CPU_BUF_SIZE; + cpu[z][CPU_BUF_SIZE][i] = value; + } - value = cpu[z][CPU_BUF_SIZE][4]; + value = cpu[z][CPU_BUF_SIZE][4]; - if (numprocs > lcd_hgt) { - n = (float) (value * lcd_cellwid * ((float) lcd_wid / 2.f - 6.f)) / 100.f + .5f; - sprintf (buf, "widget_set P %s_bar %d %d %d\n", numnames[z], z % 2 * lcd_wid / 2 + 6, z / 2 + 1, n); - } else { - n = (float) (value * lcd_cellwid * ((float) lcd_wid - 6.f)) / 100.f + .5f; - sprintf (buf, "widget_set P %s_bar 6 %d %d\n", numnames[z], z + 1, n); - } - sock_send_string (sock, buf); + if (numprocs > lcd_hgt) { + n = (float) (value * lcd_cellwid * ((float) lcd_wid / 2.f - 6.f)) / 100.f + .5f; + sprintf (buf, "widget_set P %s_bar %d %d %d\n", numnames[z], z % 2 * lcd_wid / 2 + 6, z / 2 + 1, n); + } else { + n = (float) (value * lcd_cellwid * ((float) lcd_wid - 6.f)) / 100.f + .5f; + sprintf (buf, "widget_set P %s_bar 6 %d %d\n", numnames[z], z + 1, n); + } + sock_send_string (sock, buf); - if (z + 1 > lcd_hgt * 2) - break; - } + if (z + 1 > lcd_hgt * 2) + break; + } - return 0; -} // End cpu_screen() + return 0; +} // End cpu_screen() diff --git a/clients/lcdproc/disk.c b/clients/lcdproc/disk.c index 8630d6e..b872a0b 100644 --- a/clients/lcdproc/disk.c +++ b/clients/lcdproc/disk.c @@ -36,79 +36,79 @@ FILE *mtab_fd; typedef struct mounts { - char dev[256], type[64], mpoint[256]; - long bsize, blocks, bfree, files, ffree; + char dev[256], type[64], mpoint[256]; + long bsize, blocks, bfree, files, ffree; } mounts; static int get_fs (mounts fs[]) { #ifdef STAT_STATVFS - struct statvfs fsinfo; + struct statvfs fsinfo; #else - struct statfs fsinfo; + struct statfs fsinfo; #endif - char line[256]; - int x = 0, y; + char line[256]; + int x = 0, y; - mtab_fd = fopen ("/etc/mtab", "r"); + mtab_fd = fopen ("/etc/mtab", "r"); - // Get rid of old, unmounted filesystems... - memset (fs, 0, sizeof (mounts) * 256); + // Get rid of old, unmounted filesystems... + memset (fs, 0, sizeof (mounts) * 256); - while (x < 256) { - if (fgets (line, 256, mtab_fd) == NULL) { - fclose (mtab_fd); - return x; - } + while (x < 256) { + if (fgets (line, 256, mtab_fd) == NULL) { + fclose (mtab_fd); + return x; + } - sscanf (line, "%s %s %s", fs[x].dev, fs[x].mpoint, fs[x].type); + sscanf (line, "%s %s %s", fs[x].dev, fs[x].mpoint, fs[x].type); - if (strcmp (fs[x].type, "proc") + if (strcmp (fs[x].type, "proc") #ifndef STAT_NFS - && strcmp (fs[x].type, "nfs") + && strcmp (fs[x].type, "nfs") #endif #ifndef STAT_SMBFS - && strcmp (fs[x].type, "smbfs") + && strcmp (fs[x].type, "smbfs") #endif - ) { + ) { #ifdef STAT_STATVFS - y = statvfs (fs[x].mpoint, &fsinfo); + y = statvfs (fs[x].mpoint, &fsinfo); #elif STAT_STATFS2_BSIZE - y = statfs (fs[x].mpoint, &fsinfo); + y = statfs (fs[x].mpoint, &fsinfo); #elif STAT_STATFS4 - y = statfs (fs[x].mpoint, &fsinfo, sizeof (fsinfo), 0); + y = statfs (fs[x].mpoint, &fsinfo, sizeof (fsinfo), 0); #else #error "statfs for this system noy yet supported" #endif - fs[x].blocks = fsinfo.f_blocks; - if (fs[x].blocks > 0) { - fs[x].bsize = fsinfo.f_bsize; - fs[x].bfree = fsinfo.f_bfree; - fs[x].files = fsinfo.f_files; - fs[x].ffree = fsinfo.f_ffree; - x++; - } - } - } + fs[x].blocks = fsinfo.f_blocks; + if (fs[x].blocks > 0) { + fs[x].bsize = fsinfo.f_bsize; + fs[x].bfree = fsinfo.f_bfree; + fs[x].files = fsinfo.f_files; + fs[x].ffree = fsinfo.f_ffree; + x++; + } + } + } - fclose (mtab_fd); - return x; + fclose (mtab_fd); + return x; } int disk_init () { - return 0; + return 0; } int disk_close () { - return 0; + return 0; } /////////////////////////////////////////////////////////////////////////// @@ -122,123 +122,123 @@ disk_close () int disk_screen (int rep, int display) { - static mounts mnt[256]; - static int count = 0; + static mounts mnt[256]; + static int count = 0; - // Holds info to display (avoid recalculating it) - struct disp { - char dev[8]; - char cap[8]; - int full; - } table[256]; - int i; - static int num_disks = 0; - static int first = 1; // First line to display, sort of. + // Holds info to display (avoid recalculating it) + struct disp { + char dev[8]; + char cap[8]; + int full; + } table[256]; + int i; + static int num_disks = 0; + static int first = 1; // First line to display, sort of. #define huge long long int - huge size; + huge size; - if (first) { - first = 0; + if (first) { + first = 0; - sock_send_string (sock, "screen_add D\n"); - sprintf (buffer, "screen_set D -name {Disk Use: %s}\n", host); - sock_send_string (sock, buffer); - sock_send_string (sock, "widget_add D title title\n"); - sprintf (buffer, "widget_set D title {DISKS: %s}\n", host); - sock_send_string (sock, buffer); - sock_send_string (sock, "widget_add D f frame\n"); - //sock_send_string(sock, "widget_set D f 1 2 20 4 20 3 v 8\n"); - sprintf (buffer, "widget_set D f 1 2 %i %i %i %i v 12\n", lcd_wid, lcd_hgt, lcd_wid, lcd_hgt - 1); - sock_send_string (sock, buffer); - sock_send_string (sock, "widget_add D err1 string\n"); - sock_send_string (sock, "widget_add D err2 string\n"); - sock_send_string (sock, "widget_set D err1 5 2 { Reading }\n"); - sock_send_string (sock, "widget_set D err2 5 3 {Filesystems}\n"); - } - // Grab disk stats on first display, and fill "table". - // Get rid of old, unmounted filesystems... - memset (table, 0, sizeof (struct disp) * 256); + sock_send_string (sock, "screen_add D\n"); + sprintf (buffer, "screen_set D -name {Disk Use: %s}\n", host); + sock_send_string (sock, buffer); + sock_send_string (sock, "widget_add D title title\n"); + sprintf (buffer, "widget_set D title {DISKS: %s}\n", host); + sock_send_string (sock, buffer); + sock_send_string (sock, "widget_add D f frame\n"); + //sock_send_string(sock, "widget_set D f 1 2 20 4 20 3 v 8\n"); + sprintf (buffer, "widget_set D f 1 2 %i %i %i %i v 12\n", lcd_wid, lcd_hgt, lcd_wid, lcd_hgt - 1); + sock_send_string (sock, buffer); + sock_send_string (sock, "widget_add D err1 string\n"); + sock_send_string (sock, "widget_add D err2 string\n"); + sock_send_string (sock, "widget_set D err1 5 2 { Reading }\n"); + sock_send_string (sock, "widget_set D err2 5 3 {Filesystems}\n"); + } + // Grab disk stats on first display, and fill "table". + // Get rid of old, unmounted filesystems... + memset (table, 0, sizeof (struct disp) * 256); - count = get_fs (mnt); - first = 0; + count = get_fs (mnt); + first = 0; - // Fill the display structure... - if (count) { - sock_send_string (sock, "widget_set D err1 30 5 .\n"); - sock_send_string (sock, "widget_set D err2 30 5 .\n"); - for (i = 0; i < count; i++) { - if (strlen (mnt[i].mpoint) > 6) { - sprintf (table[i].dev, "%c%s", ELLIPSIS, (mnt[i].mpoint) + (strlen (mnt[i].mpoint) - 5)); - } else { - sprintf (table[i].dev, "%s", mnt[i].mpoint); - } + // Fill the display structure... + if (count) { + sock_send_string (sock, "widget_set D err1 30 5 .\n"); + sock_send_string (sock, "widget_set D err2 30 5 .\n"); + for (i = 0; i < count; i++) { + if (strlen (mnt[i].mpoint) > 6) { + sprintf (table[i].dev, "%c%s", ELLIPSIS, (mnt[i].mpoint) + (strlen (mnt[i].mpoint) - 5)); + } else { + sprintf (table[i].dev, "%s", mnt[i].mpoint); + } - //table[i].full = (lcd.cellwid * 4) - table[i].full = (huge) (lcd_cellwid * 4) - * (huge) (mnt[i].blocks - mnt[i].bfree) - / (huge) mnt[i].blocks; + //table[i].full = (lcd.cellwid * 4) + table[i].full = (huge) (lcd_cellwid * 4) + * (huge) (mnt[i].blocks - mnt[i].bfree) + / (huge) mnt[i].blocks; - size = (huge) mnt[i].bsize * (huge) mnt[i].blocks; - memset (table[i].cap, 0, 8); + size = (huge) mnt[i].bsize * (huge) mnt[i].blocks; + memset (table[i].cap, 0, 8); - // Kilobytes - if (size > 0 && size < (huge) 1000 * (huge) 1000) - sprintf (table[i].cap, "%3.1fk", (double) (size) / 1024.0); - // Megabytes - else if (size >= (huge) 1000 * (huge) 1000 && size < (huge) 1000 * (huge) 1000 * (huge) 1000) - sprintf (table[i].cap, "%3.1fM", (float) (size / (huge) 1024) / 1024.0); - // Gigabytes - else if (size >= (huge) 1000 * (huge) 1000 * (huge) 1000 && size < (huge) 1000 * (huge) 1000 * (huge) 1000 * (huge) 1000) - sprintf (table[i].cap, "%3.1fG", (float) (size / ((huge) 1024 * (huge) 1024)) / 1024.0); - // Terabytes - else if (size >= (huge) 1000 * (huge) 1000 * (huge) 1000 * (huge) 1000 && size < (huge) 1000 * (huge) 1000 * (huge) 1000 * (huge) 1000 * (huge) 1000) - sprintf (table[i].cap, "%3.1fT", (float) (size / ((huge) 1024 * (huge) 1024 * (huge) 1024)) / 1024.0); + // Kilobytes + if (size > 0 && size < (huge) 1000 * (huge) 1000) + sprintf (table[i].cap, "%3.1fk", (double) (size) / 1024.0); + // Megabytes + else if (size >= (huge) 1000 * (huge) 1000 && size < (huge) 1000 * (huge) 1000 * (huge) 1000) + sprintf (table[i].cap, "%3.1fM", (float) (size / (huge) 1024) / 1024.0); + // Gigabytes + else if (size >= (huge) 1000 * (huge) 1000 * (huge) 1000 && size < (huge) 1000 * (huge) 1000 * (huge) 1000 * (huge) 1000) + sprintf (table[i].cap, "%3.1fG", (float) (size / ((huge) 1024 * (huge) 1024)) / 1024.0); + // Terabytes + else if (size >= (huge) 1000 * (huge) 1000 * (huge) 1000 * (huge) 1000 && size < (huge) 1000 * (huge) 1000 * (huge) 1000 * (huge) 1000 * (huge) 1000) + sprintf (table[i].cap, "%3.1fT", (float) (size / ((huge) 1024 * (huge) 1024 * (huge) 1024)) / 1024.0); - // PectaBytes -- Yeah! I want some! - else if (size >= (huge) 1000 * (huge) 1000 * (huge) 1000 * (huge) 1000 * (huge) 1000 && size < (huge) 1000 * (huge) 1000 * (huge) 1000 * (huge) 1000 * (huge) 1000 * (huge) 1000) - sprintf (table[i].cap, "%3.1fP", (float) (size / ((huge) 1024 * (huge) 1024 * (huge) 1024 * (huge) 1024)) / 1024.0); + // PectaBytes -- Yeah! I want some! + else if (size >= (huge) 1000 * (huge) 1000 * (huge) 1000 * (huge) 1000 * (huge) 1000 && size < (huge) 1000 * (huge) 1000 * (huge) 1000 * (huge) 1000 * (huge) 1000 * (huge) 1000) + sprintf (table[i].cap, "%3.1fP", (float) (size / ((huge) 1024 * (huge) 1024 * (huge) 1024 * (huge) 1024)) / 1024.0); - } - } + } + } - if (!count) { - sock_send_string (sock, "widget_set D err1 1 2 {Error Retrieving}\n"); - sock_send_string (sock, "widget_set D err2 1 3 {Filesystem Stats}\n"); - return 0; - } - // Display stuff... (show for two seconds, then scroll once per - // second, then hold at the end for two seconds) - sprintf (buffer, "widget_set D f 1 2 %i %i %i %i v 12\n", lcd_wid, lcd_hgt, lcd_wid, count); - sock_send_string (sock, buffer); - //sprintf(tmp, "widget_set D f 1 2 20 4 20 %i v 8\n", count); - //sock_send_string(sock, tmp); - for (i = 0; i < count; i++) { - if (table[i].dev[0] == 0) - continue; - if (i >= num_disks) // Make sure we have enough lines... - { - sprintf (tmp, "widget_add D s%i string -in f\n", i); - sock_send_string (sock, tmp); - sprintf (tmp, "widget_add D h%i hbar -in f\n", i); - sock_send_string (sock, tmp); + if (!count) { + sock_send_string (sock, "widget_set D err1 1 2 {Error Retrieving}\n"); + sock_send_string (sock, "widget_set D err2 1 3 {Filesystem Stats}\n"); + return 0; + } + // Display stuff... (show for two seconds, then scroll once per + // second, then hold at the end for two seconds) + sprintf (buffer, "widget_set D f 1 2 %i %i %i %i v 12\n", lcd_wid, lcd_hgt, lcd_wid, count); + sock_send_string (sock, buffer); + //sprintf(tmp, "widget_set D f 1 2 20 4 20 %i v 8\n", count); + //sock_send_string(sock, tmp); + for (i = 0; i < count; i++) { + if (table[i].dev[0] == 0) + continue; + if (i >= num_disks) // Make sure we have enough lines... + { + sprintf (tmp, "widget_add D s%i string -in f\n", i); + sock_send_string (sock, tmp); + sprintf (tmp, "widget_add D h%i hbar -in f\n", i); + sock_send_string (sock, tmp); - } - sprintf (tmp, "widget_set D s%i 1 %i {%-6s %6s E F}\n", i, i + 1, table[i].dev, table[i].cap); - sock_send_string (sock, tmp); - sprintf (tmp, "widget_set D h%i 16 %i %i\n", i, i + 1, table[i].full); - sock_send_string (sock, tmp); - } + } + sprintf (tmp, "widget_set D s%i 1 %i {%-6s %6s E F}\n", i, i + 1, table[i].dev, table[i].cap); + sock_send_string (sock, tmp); + sprintf (tmp, "widget_set D h%i 16 %i %i\n", i, i + 1, table[i].full); + sock_send_string (sock, tmp); + } - // Now remove extra widgets... - for (; i < num_disks; i++) { - sprintf (tmp, "widget_del D s%i\n", i); - sock_send_string (sock, tmp); - sprintf (tmp, "widget_del D h%i\n", i); - sock_send_string (sock, tmp); - } + // Now remove extra widgets... + for (; i < num_disks; i++) { + sprintf (tmp, "widget_del D s%i\n", i); + sock_send_string (sock, tmp); + sprintf (tmp, "widget_del D h%i\n", i); + sock_send_string (sock, tmp); + } - num_disks = count; + num_disks = count; #undef huge @@ -248,5 +248,5 @@ disk_screen (int rep, int display) // /dos/c 2.1G E----F // /stuff 4.3G E----F */ - return 0; + return 0; } diff --git a/clients/lcdproc/load.c b/clients/lcdproc/load.c index 51ad747..455b65d 100644 --- a/clients/lcdproc/load.c +++ b/clients/lcdproc/load.c @@ -17,31 +17,31 @@ static double get_loadavg (void); static double get_loadavg (void) { - double load; + double load; - reread (loadavg_fd, "get_load:"); - sscanf (buffer, "%lf", &load); - return load; + reread (loadavg_fd, "get_load:"); + sscanf (buffer, "%lf", &load); + return load; } int load_init () { - if (!loadavg_fd) - loadavg_fd = open ("/proc/loadavg", O_RDONLY); + if (!loadavg_fd) + loadavg_fd = open ("/proc/loadavg", O_RDONLY); - return 0; + return 0; } int load_close () { - if (loadavg_fd) - close (loadavg_fd); + if (loadavg_fd) + close (loadavg_fd); - loadavg_fd = 0; + loadavg_fd = 0; - return 0; + return 0; } /////////////////////////////////////////////////////////////////////////// @@ -51,89 +51,89 @@ load_close () int xload_screen (int rep, int display) { - static int first = 1; - static float loads[LCD_MAX_WIDTH]; - int n, i; - float loadmax = 0, factor, x; - int status = 0; + static int first = 1; + static float loads[LCD_MAX_WIDTH]; + int n, i; + float loadmax = 0, factor, x; + int status = 0; - if (first) // Only the first time this is ever called... - { - first = 0; - memset (loads, 0, sizeof (float) * LCD_MAX_WIDTH); + if (first) // Only the first time this is ever called... + { + first = 0; + memset (loads, 0, sizeof (float) * LCD_MAX_WIDTH); - sock_send_string (sock, "screen_add X\n"); - sprintf (buffer, "screen_set X -name {X-Load: %s}\n", host); - sock_send_string (sock, buffer); - // Add the vbars... - for (i = 1; i < lcd_wid; i++) { - sprintf (tmp, "widget_add X %i vbar\n", i); - sock_send_string (sock, tmp); - sprintf (tmp, "widget_set X %i %i %i 0\n", i, i, lcd_hgt); - sock_send_string (sock, tmp); - } - // And add a title... - if (lcd_hgt >= 4) { - sock_send_string (sock, "widget_add X title title\n"); - sock_send_string (sock, "widget_set X title {LOAD }\n"); - } else { - sock_send_string (sock, "widget_add X title string\n"); - sock_send_string (sock, "widget_set X title 1 1 {LOAD}\n"); - sock_send_string (sock, "widget_del X heartbeat\n"); - } - sock_send_string (sock, "widget_add X zero string\n"); - sock_send_string (sock, "widget_add X top string\n"); - sprintf (tmp, "widget_set X zero %i %i 0\n", lcd_wid, lcd_hgt); - sock_send_string (sock, tmp); - sprintf (tmp, "widget_set X top %i %i 1\n", lcd_wid, (lcd_hgt == 2) ? 1 : 2); - sock_send_string (sock, tmp); - } + sock_send_string (sock, "screen_add X\n"); + sprintf (buffer, "screen_set X -name {X-Load: %s}\n", host); + sock_send_string (sock, buffer); + // Add the vbars... + for (i = 1; i < lcd_wid; i++) { + sprintf (tmp, "widget_add X %i vbar\n", i); + sock_send_string (sock, tmp); + sprintf (tmp, "widget_set X %i %i %i 0\n", i, i, lcd_hgt); + sock_send_string (sock, tmp); + } + // And add a title... + if (lcd_hgt >= 4) { + sock_send_string (sock, "widget_add X title title\n"); + sock_send_string (sock, "widget_set X title {LOAD }\n"); + } else { + sock_send_string (sock, "widget_add X title string\n"); + sock_send_string (sock, "widget_set X title 1 1 {LOAD}\n"); + sock_send_string (sock, "widget_del X heartbeat\n"); + } + sock_send_string (sock, "widget_add X zero string\n"); + sock_send_string (sock, "widget_add X top string\n"); + sprintf (tmp, "widget_set X zero %i %i 0\n", lcd_wid, lcd_hgt); + sock_send_string (sock, tmp); + sprintf (tmp, "widget_set X top %i %i 1\n", lcd_wid, (lcd_hgt == 2) ? 1 : 2); + sock_send_string (sock, tmp); + } - for (n = 0; n < (lcd_wid - 2); n++) - loads[n] = loads[n + 1]; - loads[lcd_wid - 2] = get_loadavg (); + for (n = 0; n < (lcd_wid - 2); n++) + loads[n] = loads[n + 1]; + loads[lcd_wid - 2] = get_loadavg (); - for (n = 0; n < lcd_wid - 1; n++) - if (loads[n] > loadmax) - loadmax = loads[n]; + for (n = 0; n < lcd_wid - 1; n++) + if (loads[n] > loadmax) + loadmax = loads[n]; - n = (int) loadmax; - if ((float) n < loadmax) { - n++; - } - sprintf (tmp, "widget_set X top %i %i %i\n", lcd_wid, (lcd_hgt == 2) ? 1 : 2, n); - //if(display) sock_send_string(sock, tmp); - sock_send_string (sock, tmp); + n = (int) loadmax; + if ((float) n < loadmax) { + n++; + } + sprintf (tmp, "widget_set X top %i %i %i\n", lcd_wid, (lcd_hgt == 2) ? 1 : 2, n); + //if(display) sock_send_string(sock, tmp); + sock_send_string (sock, tmp); - if (loadmax < 1.0) - factor = (float) (lcd_cellhgt) * ((lcd_hgt == 2) ? 2.0 : 3.0); - else - factor = (float) (lcd_cellhgt) * ((lcd_hgt == 2) ? 2.0 : 3.0) / (float) n; + if (loadmax < 1.0) + factor = (float) (lcd_cellhgt) * ((lcd_hgt == 2) ? 2.0 : 3.0); + else + factor = (float) (lcd_cellhgt) * ((lcd_hgt == 2) ? 2.0 : 3.0) / (float) n; - for (n = 0; n < lcd_wid - 1; n++) { - x = (loads[n] * factor); + for (n = 0; n < lcd_wid - 1; n++) { + x = (loads[n] * factor); - sprintf (tmp, "widget_set X %i %i %i %i\n", n + 1, n + 1, lcd_hgt, (int) x); - //if(display) sock_send_string(sock, tmp); - sock_send_string (sock, tmp); - } + sprintf (tmp, "widget_set X %i %i %i %i\n", n + 1, n + 1, lcd_hgt, (int) x); + //if(display) sock_send_string(sock, tmp); + sock_send_string (sock, tmp); + } - if (loadmax < LOAD_MIN) { - status = BACKLIGHT_OFF; - } - if (loadmax > LOAD_MIN) { - status = BACKLIGHT_ON; - } - if (loads[lcd_wid - 2] > LOAD_MAX) { - status = BLINK_ON; - } - // And now the title... - if (lcd_hgt >= 4) - sprintf (tmp, "widget_set X title {LOAD %2.2f: %s}\n", loads[lcd_wid - 2], host); - else - sprintf (tmp, "widget_set X title 1 1 {%s %2.2f}\n", host, loads[lcd_wid - 2]); - //if(display) sock_send_string(sock, tmp); - sock_send_string (sock, tmp); + if (loadmax < LOAD_MIN) { + status = BACKLIGHT_OFF; + } + if (loadmax > LOAD_MIN) { + status = BACKLIGHT_ON; + } + if (loads[lcd_wid - 2] > LOAD_MAX) { + status = BLINK_ON; + } + // And now the title... + if (lcd_hgt >= 4) + sprintf (tmp, "widget_set X title {LOAD %2.2f: %s}\n", loads[lcd_wid - 2], host); + else + sprintf (tmp, "widget_set X title 1 1 {%s %2.2f}\n", host, loads[lcd_wid - 2]); + //if(display) sock_send_string(sock, tmp); + sock_send_string (sock, tmp); - return status; -} // End xload_screen() + return status; +} // End xload_screen() diff --git a/clients/lcdproc/main.c b/clients/lcdproc/main.c index 5491637..79a0d03 100644 --- a/clients/lcdproc/main.c +++ b/clients/lcdproc/main.c @@ -47,24 +47,24 @@ void main_loop (mode * sequence); // Contains a list of modes to run mode default_sequence[] = { // which on off inv timer/visible - {'C', 1, 2, 0, 0xffff, 0,}, // [C]PU - {'M', 4, 16, 0, 0xffff, 0,}, // [M]emory - {'X', 64, 128, 1, 0xffff, 0,}, // [X]-load (load histogram) - {'T', 4, 64, 0, 0xffff, 0,}, // [T]ime/Date - {'A', 999, 9999, 0, 0xffff, 0,}, // [A]bout (credits) + {'C', 1, 2, 0, 0xffff, 0,}, // [C]PU + {'M', 4, 16, 0, 0xffff, 0,}, // [M]emory + {'X', 64, 128, 1, 0xffff, 0,}, // [X]-load (load histogram) + {'T', 4, 64, 0, 0xffff, 0,}, // [T]ime/Date + {'A', 999, 9999, 0, 0xffff, 0,}, // [A]bout (credits) - {1, 0, 0, 0, 0, 0,}, // Modes after this line will not be run by default... - // ... all non-default modes must be in here! - // ... they will not show up otherwise. - {'P', 1, 2, 0, 0xffff, 0,}, // [O]ld Timescreen - {'O', 4, 64, 0, 0xffff, 0,}, // [O]ld Timescreen - {'K', 4, 64, 0, 0xffff, 0,}, // big cloc[K] - {'U', 4, 128, 0, 0xffff, 0,}, // Old [U]ptime Screen - {'B', 32, 256, 1, 0xffff, 0,}, // [B]attery Status - {'G', 1, 2, 0, 0xffff, 0,}, // Cpu histogram [G]raph - {'S', 16, 256, 1, 0xffff, 0,}, // [S]ize of biggest programs - {'D', 256, 256, 1, 0xffff, 0,}, // [D]isk stats - {0, 0, 0, 0, 0,}, // No more.. all done. + {1, 0, 0, 0, 0, 0,}, // Modes after this line will not be run by default... + // ... all non-default modes must be in here! + // ... they will not show up otherwise. + {'P', 1, 2, 0, 0xffff, 0,}, // [O]ld Timescreen + {'O', 4, 64, 0, 0xffff, 0,}, // [O]ld Timescreen + {'K', 4, 64, 0, 0xffff, 0,}, // big cloc[K] + {'U', 4, 128, 0, 0xffff, 0,}, // Old [U]ptime Screen + {'B', 32, 256, 1, 0xffff, 0,}, // [B]attery Status + {'G', 1, 2, 0, 0xffff, 0,}, // Cpu histogram [G]raph + {'S', 16, 256, 1, 0xffff, 0,}, // [S]ize of biggest programs + {'D', 256, 256, 1, 0xffff, 0,}, // [D]isk stats + {0, 0, 0, 0, 0,}, // No more.. all done. }; // TODO: Clean up main()... It is still way too big. @@ -74,123 +74,123 @@ mode default_sequence[] = { int main (int argc, char **argv) { - mode sequence[MAX_SEQUENCE]; - char cfgfile[256] = "/etc/lcdproc.cf"; - char server[256] = "localhost"; - int port = LCDPORT; - int i, j, k; - int tmp; + mode sequence[MAX_SEQUENCE]; + char cfgfile[256] = "/etc/lcdproc.cf"; + char server[256] = "localhost"; + int port = LCDPORT; + int i, j, k; + int tmp; - memset (sequence, 0, sizeof (mode) * MAX_SEQUENCE); + memset (sequence, 0, sizeof (mode) * MAX_SEQUENCE); - // Ctrl-C will cause a clean exit... - signal (SIGINT, exit_program); - // and "kill"... - signal (SIGTERM, exit_program); - // and "kill -HUP" (hangup)... - signal (SIGHUP, exit_program); - // and just in case, "kill -KILL" (which cannot be trapped; but oh well) - signal (SIGKILL, exit_program); + // Ctrl-C will cause a clean exit... + signal (SIGINT, exit_program); + // and "kill"... + signal (SIGTERM, exit_program); + // and "kill -HUP" (hangup)... + signal (SIGHUP, exit_program); + // and just in case, "kill -KILL" (which cannot be trapped; but oh well) + signal (SIGKILL, exit_program); - // Command line - memcpy (sequence, default_sequence, sizeof (default_sequence)); - for (i = 1, j = 0; i < argc; i++) { - if (argv[i][0] == '-') - switch (argv[i][1]) { - // s is for server - case 'S': - case 's': - if (argc < i + 1) - HelpScreen (); - strcpy (server, argv[++i]); - break; - // p is for port - case 'P': - case 'p': - if (argc < i + 1) - HelpScreen (); - port = atoi (argv[++i]); - if (port < 1 && port > 0xffff) - fprintf (stderr, "Warning: Port %i outside of standard range\n", port); - break; + // Command line + memcpy (sequence, default_sequence, sizeof (default_sequence)); + for (i = 1, j = 0; i < argc; i++) { + if (argv[i][0] == '-') + switch (argv[i][1]) { + // s is for server + case 'S': + case 's': + if (argc < i + 1) + HelpScreen (); + strcpy (server, argv[++i]); + break; + // p is for port + case 'P': + case 'p': + if (argc < i + 1) + HelpScreen (); + port = atoi (argv[++i]); + if (port < 1 && port > 0xffff) + fprintf (stderr, "Warning: Port %i outside of standard range\n", port); + break; - // otherwise... Get help! - default: - HelpScreen (); - break; - } - // Parse command line here... read the man page. - else if (strlen (argv[i]) == 1) { - // Grab the mode letter... - sequence[j].which = argv[i][0]; + // otherwise... Get help! + default: + HelpScreen (); + break; + } + // Parse command line here... read the man page. + else if (strlen (argv[i]) == 1) { + // Grab the mode letter... + sequence[j].which = argv[i][0]; - // If we have just a letter with no numbers... - // Set the defaults... - for (tmp = 0, k = 0; default_sequence[k].which; k++) { - if (toupper (sequence[j].which) == default_sequence[k].which) { - memcpy (&sequence[j], &default_sequence[k], sizeof (mode)); - tmp = 1; - break; - } - } - if (!tmp) { - printf ("Invalid Mode: %c\n", argv[i][0]); - exit (0); - } + // If we have just a letter with no numbers... + // Set the defaults... + for (tmp = 0, k = 0; default_sequence[k].which; k++) { + if (toupper (sequence[j].which) == default_sequence[k].which) { + memcpy (&sequence[j], &default_sequence[k], sizeof (mode)); + tmp = 1; + break; + } + } + if (!tmp) { + printf ("Invalid Mode: %c\n", argv[i][0]); + exit (0); + } - j++; - // Set the last element to 0... - memset (sequence + j, 0, sizeof (mode)); - } // End if(strlen(argv == 1)) - else { - // A multicharacter parameter by itself - // is assumed to be a config file.. - strcpy (cfgfile, argv[i]); - printf ("Ignoring config file: %s\n", cfgfile); - } - } + j++; + // Set the last element to 0... + memset (sequence + j, 0, sizeof (mode)); + } // End if(strlen(argv == 1)) + else { + // A multicharacter parameter by itself + // is assumed to be a config file.. + strcpy (cfgfile, argv[i]); + printf ("Ignoring config file: %s\n", cfgfile); + } + } - // Connect to the server... - usleep (500000); // wait for the server to start up - sock = sock_connect (server, port); - if (sock <= 0) { - printf ("Error connecting to server %s on port %i.\n", server, port); - return 0; - } - sock_send_string (sock, "hello\n"); - usleep (500000); // wait for the server to say hi. + // Connect to the server... + usleep (500000); // wait for the server to start up + sock = sock_connect (server, port); + if (sock <= 0) { + printf ("Error connecting to server %s on port %i.\n", server, port); + return 0; + } + sock_send_string (sock, "hello\n"); + usleep (500000); // wait for the server to say hi. - // We grab the real values below, from the "connect" line. - lcd_wid = 20; - lcd_hgt = 4; - lcd_cellwid = 5; - lcd_cellhgt = 8; + // We grab the real values below, from the "connect" line. + lcd_wid = 20; + lcd_hgt = 4; + lcd_cellwid = 5; + lcd_cellhgt = 8; - // Init the status gatherers... - mode_init (sequence); + // Init the status gatherers... + mode_init (sequence); - // And spew stuff! - main_loop (sequence); + // And spew stuff! + main_loop (sequence); - // Clean up - exit_program (0); - return 0; + // Clean up + exit_program (0); + return 0; } void HelpScreen () { - printf ("LCDproc, %s\n", version); - printf ("Usage: lcdproc [-s server] [-p port] [modelist]\n"); - printf ("\tOptions in []'s are optional.\n"); - printf ("\tmodelist is \"mode [mode mode ...]\"\n"); - printf ("\tMode letters: \t[C]pu [G]raph [T]ime [M]emory [X]load [D]isk [B]attery\n\t\t\tproc_[S]izes [O]ld_time big_cloc[K] [U]ptime CPU_SM[P]\n\t\t\t[A]bout\n"); - printf ("\n"); - printf ("\tUse \"man lcdproc\" for more info.\n"); - printf ("Example:\n"); - printf ("\tlcdproc -s my.lcdproc.server.com C M X -p 13666\n"); - printf ("\n"); - exit (0); + printf ("LCDproc, %s\n", version); + printf ("Usage: lcdproc [-s server] [-p port] [modelist]\n"); + printf ("\tOptions in []'s are optional.\n"); + printf ("\tmodelist is \"mode [mode mode ...]\"\n"); + printf ("\tMode letters: \t[C]pu [G]raph [T]ime [M]emory [X]load [D]isk [B]attery\n\t\t\tproc_[S]izes [O]ld_time big_cloc[K] [U]ptime CPU_SM[P]\n\t\t\t[A]bout\n"); + printf ("\n"); + printf ("\tUse \"man lcdproc\" for more info.\n"); + printf ("Example:\n"); + printf ("\tlcdproc -s my.lcdproc.server.com C M X -p 13666\n"); + printf ("\n"); + exit (0); } /////////////////////////////////////////////////////////////////// @@ -199,10 +199,10 @@ HelpScreen () void exit_program (int val) { - Quit = 1; - sock_close (sock); - mode_close (); - exit (0); + Quit = 1; + sock_close (sock); + mode_close (); + exit (0); } /////////////////////////////////////////////////////////////////// @@ -211,126 +211,126 @@ exit_program (int val) void main_loop (mode * sequence) { - int i = 0, j; - //int status=0; - char buf[8192]; - char *argv[256]; - int argc, newtoken; - int len; + int i = 0, j; + //int status=0; + char buf[8192]; + char *argv[256]; + int argc, newtoken; + int len; - // Main loop - // Run whatever screen we want, then wait. Woo-hoo! - while (!Quit) { - // Check for server input... - len = sock_recv (sock, buf, 8000); + // Main loop + // Run whatever screen we want, then wait. Woo-hoo! + while (!Quit) { + // Check for server input... + len = sock_recv (sock, buf, 8000); - // Handle server input... - while (len > 0) { - // Now split the string into tokens... - //for(i=0; i 0) { - //printf("%s %s\n", argv[0], argv[1]); - if (0 == strcmp (argv[0], "listen")) { - for (j = 0; sequence[j].which; j++) { - if (sequence[j].which == argv[1][0]) { - sequence[j].visible = 1; - //debug("Listen %s\n", argv[1]); + // Handle server input... + while (len > 0) { + // Now split the string into tokens... + //for(i=0; i 0) { + //printf("%s %s\n", argv[0], argv[1]); + if (0 == strcmp (argv[0], "listen")) { + for (j = 0; sequence[j].which; j++) { + if (sequence[j].which == argv[1][0]) { + sequence[j].visible = 1; + //debug("Listen %s\n", argv[1]); + } + } + } else if (0 == strcmp (argv[0], "ignore")) { + for (j = 0; sequence[j].which; j++) { + if (sequence[j].which == argv[1][0]) { + sequence[j].visible = 0; + //debug("Ignore %s\n", argv[1]); + } + } + } else if (0 == strcmp (argv[0], "key")) { + debug ("Key %s\n", argv[1]); + } else if (0 == strcmp (argv[0], "menu")) { + } else if (0 == strcmp (argv[0], "connect")) { + int a; + for (a = 1; a < argc; a++) { + if (0 == strcmp (argv[a], "wid")) + lcd_wid = atoi (argv[++a]); + else if (0 == strcmp (argv[a], "hgt")) + lcd_hgt = atoi (argv[++a]); + else if (0 == strcmp (argv[a], "cellwid")) + lcd_cellwid = atoi (argv[++a]); + else if (0 == strcmp (argv[a], "cellhgt")) + lcd_cellhgt = atoi (argv[++a]); + } + sock_send_string (sock, "client_set -name LCDproc\n"); + } else if (0 == strcmp (argv[0], "bye")) { + //printf("Exiting LCDproc\n"); + exit_program (0); + } else { + int j; + for (j = 0; j < argc; j++) + printf ("%s ", argv[j]); + printf ("\n"); + } + } + + argc = 0; + newtoken = 1; + } } - } - } else if (0 == strcmp (argv[0], "ignore")) { - for (j = 0; sequence[j].which; j++) { - if (sequence[j].which == argv[1][0]) { - sequence[j].visible = 0; - //debug("Ignore %s\n", argv[1]); + + len = sock_recv (sock, buf, 8000); + //debug("\n"); + } + + // Gather stats... + // Update screens... + for (i = 0; sequence[i].which > 1; i++) { + sequence[i].timer++; + if (sequence[i].visible) { + if (sequence[i].timer >= sequence[i].on_time) { + sequence[i].timer = 0; + // Now, update the screen... + update_screen (sequence + i, 1); + } + } else { + if (sequence[i].show_invisible) { + if (sequence[i].timer >= sequence[i].off_time) { + sequence[i].timer = 0; + // Now, update the screen... + update_screen (sequence + i, 1); + } + } else { + if (sequence[i].timer >= sequence[i].off_time) { + sequence[i].timer = 0; + // Now, update the screen... + update_screen (sequence + i, 0); + } + } } - } - } else if (0 == strcmp (argv[0], "key")) { - debug ("Key %s\n", argv[1]); - } else if (0 == strcmp (argv[0], "menu")) { - } else if (0 == strcmp (argv[0], "connect")) { - int a; - for (a = 1; a < argc; a++) { - if (0 == strcmp (argv[a], "wid")) - lcd_wid = atoi (argv[++a]); - else if (0 == strcmp (argv[a], "hgt")) - lcd_hgt = atoi (argv[++a]); - else if (0 == strcmp (argv[a], "cellwid")) - lcd_cellwid = atoi (argv[++a]); - else if (0 == strcmp (argv[a], "cellhgt")) - lcd_cellhgt = atoi (argv[++a]); - } - sock_send_string (sock, "client_set -name LCDproc\n"); - } else if (0 == strcmp (argv[0], "bye")) { - //printf("Exiting LCDproc\n"); - exit_program (0); - } else { - int j; - for (j = 0; j < argc; j++) - printf ("%s ", argv[j]); - printf ("\n"); - } - } + } - argc = 0; - newtoken = 1; - } - } - - len = sock_recv (sock, buf, 8000); - //debug("\n"); - } - - // Gather stats... - // Update screens... - for (i = 0; sequence[i].which > 1; i++) { - sequence[i].timer++; - if (sequence[i].visible) { - if (sequence[i].timer >= sequence[i].on_time) { - sequence[i].timer = 0; - // Now, update the screen... - update_screen (sequence + i, 1); - } - } else { - if (sequence[i].show_invisible) { - if (sequence[i].timer >= sequence[i].off_time) { - sequence[i].timer = 0; - // Now, update the screen... - update_screen (sequence + i, 1); - } - } else { - if (sequence[i].timer >= sequence[i].off_time) { - sequence[i].timer = 0; - // Now, update the screen... - update_screen (sequence + i, 0); - } - } - } - } - - // Now sleep... - usleep (TIME_UNIT); + // Now sleep... + usleep (TIME_UNIT); /* Old stuff timer=0; @@ -398,5 +398,5 @@ main_loop (mode * sequence) i++; if(sequence[i].which < 2) i=0; */ - } + } } diff --git a/clients/lcdproc/main.h b/clients/lcdproc/main.h index 50d7078..92610d5 100644 --- a/clients/lcdproc/main.h +++ b/clients/lcdproc/main.h @@ -12,12 +12,12 @@ extern int lcd_cellwid; extern int lcd_cellhgt; typedef struct mode { - char which; // Which screen is it? - int on_time; // How often to update while visible? - int off_time; // How often to get stats while not visible? - int show_invisible; // Send stats while not visible? - int timer; // Time since last update - int visible; // Can we be seen right now? + char which; // Which screen is it? + int on_time; // How often to update while visible? + int off_time; // How often to get stats while not visible? + int show_invisible; // Send stats while not visible? + int timer; // Time since last update + int visible; // Can we be seen right now? } mode; #define BLINK_ON 0x10 diff --git a/clients/lcdproc/mem.c b/clients/lcdproc/mem.c index e334d7d..a159d08 100644 --- a/clients/lcdproc/mem.c +++ b/clients/lcdproc/mem.c @@ -16,7 +16,7 @@ #include "mem.h" struct meminfo { - int total, cache, buffers, free, shared; + int total, cache, buffers, free, shared; }; int meminfo_fd = 0; @@ -28,35 +28,35 @@ get_mem_info (struct meminfo *result) { // int i, res; char *bufptr; - reread (meminfo_fd, "get_meminfo:"); - result[0].total = getentry ("MemTotal:", buffer); - result[0].free = getentry ("MemFree:", buffer); - result[0].shared = getentry ("MemShared:", buffer); - result[0].buffers = getentry ("Buffers:", buffer); - result[0].cache = getentry ("Cached:", buffer); - result[1].total = getentry ("SwapTotal:", buffer); - result[1].free = getentry ("SwapFree:", buffer); + reread (meminfo_fd, "get_meminfo:"); + result[0].total = getentry ("MemTotal:", buffer); + result[0].free = getentry ("MemFree:", buffer); + result[0].shared = getentry ("MemShared:", buffer); + result[0].buffers = getentry ("Buffers:", buffer); + result[0].cache = getentry ("Cached:", buffer); + result[1].total = getentry ("SwapTotal:", buffer); + result[1].free = getentry ("SwapFree:", buffer); } int mem_init () { - if (!meminfo_fd) { - meminfo_fd = open ("/proc/meminfo", O_RDONLY); - } + if (!meminfo_fd) { + meminfo_fd = open ("/proc/meminfo", O_RDONLY); + } - return 0; + return 0; } int mem_close () { - if (meminfo_fd) - meminfo_fd = open ("/proc/meminfo", O_RDONLY); + if (meminfo_fd) + meminfo_fd = open ("/proc/meminfo", O_RDONLY); - meminfo_fd = 0; + meminfo_fd = 0; - return 0; + return 0; } ///////////////////////////////////////////////////////////////////////// @@ -65,343 +65,343 @@ mem_close () int mem_screen (int rep, int display) { - int n; - struct meminfo mem[2]; - static int first = 1; - static int which_title = 0; - float value; + int n; + struct meminfo mem[2]; + static int first = 1; + static int which_title = 0; + float value; - if (first) { - first = 0; + if (first) { + first = 0; - sock_send_string (sock, "screen_add M\n"); - sprintf (buffer, "screen_set M -name {Memory & Swap: %s}\n", host); - sock_send_string (sock, buffer); + sock_send_string (sock, "screen_add M\n"); + sprintf (buffer, "screen_set M -name {Memory & Swap: %s}\n", host); + sock_send_string (sock, buffer); - if (lcd_hgt >= 4) { - sock_send_string (sock, "widget_add M title title\n"); - sock_send_string (sock, "widget_set M title { MEM -==- SWAP}\n"); - sock_send_string (sock, "widget_add M totl string\n"); - sock_send_string (sock, "widget_add M used string\n"); - sock_send_string (sock, "widget_set M totl 9 2 Totl\n"); - sock_send_string (sock, "widget_set M used 9 3 Free\n"); - sock_send_string (sock, "widget_add M EF string\n"); - sock_send_string (sock, "widget_set M EF 1 4 {E F E F}\n"); - sock_send_string (sock, "widget_add M memused string\n"); - sock_send_string (sock, "widget_add M swapused string\n"); - //sock_send_string(sock, "widget_set M memgauge 2 4 0\n"); - //sock_send_string(sock, "widget_set M swapgauge 13 4 0\n"); - } else { - sock_send_string (sock, "widget_add M m string\n"); - sock_send_string (sock, "widget_add M s string\n"); - if (lcd_wid >= 20) { - sock_send_string (sock, "widget_set M m 1 1 {M [ ]}\n"); - sock_send_string (sock, "widget_set M s 1 2 {S [ ]}\n"); - } else { - sock_send_string (sock, "widget_set M m 1 1 {M [ ]}\n"); - sock_send_string (sock, "widget_set M s 1 2 {S [ ]}\n"); - } - sock_send_string (sock, "widget_add M mem% string\n"); - sock_send_string (sock, "widget_add M swap% string\n"); - sock_send_string (sock, "widget_set M mem% 16 1 { 0.0%}\n"); - sock_send_string (sock, "widget_set M swap% 16 2 { 0.0%}\n"); + if (lcd_hgt >= 4) { + sock_send_string (sock, "widget_add M title title\n"); + sock_send_string (sock, "widget_set M title { MEM -==- SWAP}\n"); + sock_send_string (sock, "widget_add M totl string\n"); + sock_send_string (sock, "widget_add M used string\n"); + sock_send_string (sock, "widget_set M totl 9 2 Totl\n"); + sock_send_string (sock, "widget_set M used 9 3 Free\n"); + sock_send_string (sock, "widget_add M EF string\n"); + sock_send_string (sock, "widget_set M EF 1 4 {E F E F}\n"); + sock_send_string (sock, "widget_add M memused string\n"); + sock_send_string (sock, "widget_add M swapused string\n"); + //sock_send_string(sock, "widget_set M memgauge 2 4 0\n"); + //sock_send_string(sock, "widget_set M swapgauge 13 4 0\n"); + } else { + sock_send_string (sock, "widget_add M m string\n"); + sock_send_string (sock, "widget_add M s string\n"); + if (lcd_wid >= 20) { + sock_send_string (sock, "widget_set M m 1 1 {M [ ]}\n"); + sock_send_string (sock, "widget_set M s 1 2 {S [ ]}\n"); + } else { + sock_send_string (sock, "widget_set M m 1 1 {M [ ]}\n"); + sock_send_string (sock, "widget_set M s 1 2 {S [ ]}\n"); + } + sock_send_string (sock, "widget_add M mem% string\n"); + sock_send_string (sock, "widget_add M swap% string\n"); + sock_send_string (sock, "widget_set M mem% 16 1 { 0.0%}\n"); + sock_send_string (sock, "widget_set M swap% 16 2 { 0.0%}\n"); - //sock_send_string(sock, "widget_set M memgauge 8 1 0\n"); - //sock_send_string(sock, "widget_set M swapgauge 8 2 0\n"); - } + //sock_send_string(sock, "widget_set M memgauge 8 1 0\n"); + //sock_send_string(sock, "widget_set M swapgauge 8 2 0\n"); + } - sock_send_string (sock, "widget_add M memtotl string\n"); - sock_send_string (sock, "widget_add M swaptotl string\n"); + sock_send_string (sock, "widget_add M memtotl string\n"); + sock_send_string (sock, "widget_add M swaptotl string\n"); - sock_send_string (sock, "widget_add M memgauge hbar\n"); - sock_send_string (sock, "widget_add M swapgauge hbar\n"); + sock_send_string (sock, "widget_add M memgauge hbar\n"); + sock_send_string (sock, "widget_add M swapgauge hbar\n"); - //sock_send_string(sock, "\n"); - } + //sock_send_string(sock, "\n"); + } - get_mem_info (mem); + get_mem_info (mem); - // flip the title back and forth... - if (lcd_hgt >= 4) { - if (which_title & 4) { - sprintf (buffer, "widget_set M title {%s}\n", host); - sock_send_string (sock, buffer); - } else - sock_send_string (sock, "widget_set M title { MEM -==- SWAP}\n"); - which_title = (which_title + 1) & 7; + // flip the title back and forth... + if (lcd_hgt >= 4) { + if (which_title & 4) { + sprintf (buffer, "widget_set M title {%s}\n", host); + sock_send_string (sock, buffer); + } else + sock_send_string (sock, "widget_set M title { MEM -==- SWAP}\n"); + which_title = (which_title + 1) & 7; - // Total memory - sprintf (tmp, "widget_set M memtotl 1 2 {%6dk}\n", mem[0].total); - if (display) - sock_send_string (sock, tmp); + // Total memory + sprintf (tmp, "widget_set M memtotl 1 2 {%6dk}\n", mem[0].total); + if (display) + sock_send_string (sock, tmp); - // Free memory (plus buffers and cache) - sprintf (tmp, "widget_set M memused 1 3 {%6dk}\n", mem[0].free + mem[0].buffers + mem[0].cache); - if (display) - sock_send_string (sock, tmp); + // Free memory (plus buffers and cache) + sprintf (tmp, "widget_set M memused 1 3 {%6dk}\n", mem[0].free + mem[0].buffers + mem[0].cache); + if (display) + sock_send_string (sock, tmp); - // Total swap - sprintf (tmp, "widget_set M swaptotl 14 2 {%6dk}\n", mem[1].total); - if (display) - sock_send_string (sock, tmp); + // Total swap + sprintf (tmp, "widget_set M swaptotl 14 2 {%6dk}\n", mem[1].total); + if (display) + sock_send_string (sock, tmp); - // Free swap - sprintf (tmp, "widget_set M swapused 14 3 {%6dk}\n", mem[1].free); - if (display) - sock_send_string (sock, tmp); + // Free swap + sprintf (tmp, "widget_set M swapused 14 3 {%6dk}\n", mem[1].free); + if (display) + sock_send_string (sock, tmp); - // Free memory graph - n = (int) (35.0 - ((float) mem[0].free + (float) mem[0].buffers + (float) mem[0].cache) - / (float) mem[0].total * 35.0); - sprintf (tmp, "widget_set M memgauge 2 4 %i\n", n); - if (display) - sock_send_string (sock, tmp); + // Free memory graph + n = (int) (35.0 - ((float) mem[0].free + (float) mem[0].buffers + (float) mem[0].cache) + / (float) mem[0].total * 35.0); + sprintf (tmp, "widget_set M memgauge 2 4 %i\n", n); + if (display) + sock_send_string (sock, tmp); - // Free swap graph - n = (int) (35.0 - (float) mem[1].free / (float) mem[1].total * 35.0); - sprintf (tmp, "widget_set M swapgauge 13 4 %i\n", n); - if (display) - sock_send_string (sock, tmp); - } else { - // Total memory - sprintf (tmp, "widget_set M memtotl 2 1 {%4dM}\n", (int) (mem[0].total / 1024.0)); - if (display) - sock_send_string (sock, tmp); + // Free swap graph + n = (int) (35.0 - (float) mem[1].free / (float) mem[1].total * 35.0); + sprintf (tmp, "widget_set M swapgauge 13 4 %i\n", n); + if (display) + sock_send_string (sock, tmp); + } else { + // Total memory + sprintf (tmp, "widget_set M memtotl 2 1 {%4dM}\n", (int) (mem[0].total / 1024.0)); + if (display) + sock_send_string (sock, tmp); - // Total swap - sprintf (tmp, "widget_set M swaptotl 2 2 {%4dM}\n", (int) (mem[1].total / 1024.0)); - if (display) - sock_send_string (sock, tmp); + // Total swap + sprintf (tmp, "widget_set M swaptotl 2 2 {%4dM}\n", (int) (mem[1].total / 1024.0)); + if (display) + sock_send_string (sock, tmp); - // Free memory graph - value = ((float) mem[0].free + (float) mem[0].buffers + (float) mem[0].cache) - / (float) mem[0].total; - value = 1.0 - value; - n = (int) ((lcd_cellwid * (float) (lcd_wid - 13)) * (value)); - sprintf (tmp, "widget_set M memgauge 8 1 %i\n", n); - if (display) - sock_send_string (sock, tmp); + // Free memory graph + value = ((float) mem[0].free + (float) mem[0].buffers + (float) mem[0].cache) + / (float) mem[0].total; + value = 1.0 - value; + n = (int) ((lcd_cellwid * (float) (lcd_wid - 13)) * (value)); + sprintf (tmp, "widget_set M memgauge 8 1 %i\n", n); + if (display) + sock_send_string (sock, tmp); - value *= 100.0; - if (value >= 99.9) { - sprintf (buffer, "100%%"); - } else { - sprintf (buffer, "%4.1f%%", value); - } - sprintf (tmp, "widget_set M mem%% %i 1 {%s}\n", lcd_wid - 4, buffer); - if (display) - sock_send_string (sock, tmp); + value *= 100.0; + if (value >= 99.9) { + sprintf (buffer, "100%%"); + } else { + sprintf (buffer, "%4.1f%%", value); + } + sprintf (tmp, "widget_set M mem%% %i 1 {%s}\n", lcd_wid - 4, buffer); + if (display) + sock_send_string (sock, tmp); - // Free swap graph - value = ((float) mem[1].free / (float) mem[1].total); - value = 1.0 - value; - n = (int) ((lcd_cellwid * (float) (lcd_wid - 13)) * (value)); - sprintf (tmp, "widget_set M swapgauge 8 2 %i\n", n); - if (display) - sock_send_string (sock, tmp); + // Free swap graph + value = ((float) mem[1].free / (float) mem[1].total); + value = 1.0 - value; + n = (int) ((lcd_cellwid * (float) (lcd_wid - 13)) * (value)); + sprintf (tmp, "widget_set M swapgauge 8 2 %i\n", n); + if (display) + sock_send_string (sock, tmp); - value *= 100.0; - if (value >= 99.9) { - sprintf (buffer, "100%%"); - } else { - sprintf (buffer, "%4.1f%%", value); - } - sprintf (tmp, "widget_set M swap%% %i 2 {%s}\n", lcd_wid - 4, buffer); - if (display) - sock_send_string (sock, tmp); + value *= 100.0; + if (value >= 99.9) { + sprintf (buffer, "100%%"); + } else { + sprintf (buffer, "%4.1f%%", value); + } + sprintf (tmp, "widget_set M swap%% %i 2 {%s}\n", lcd_wid - 4, buffer); + if (display) + sock_send_string (sock, tmp); - } + } - return 0; -} // End mem_screen() + return 0; +} // End mem_screen() typedef struct proc_mem_info { - char name[16]; // Is this really long enough? - // Size isn't used any more... - // Totl stores the "size" of the program now... - int size, totl; - int number; + char name[16]; // Is this really long enough? + // Size isn't used any more... + // Totl stores the "size" of the program now... + int size, totl; + int number; } proc_mem_info; static int sort_procs (void *a, void *b) { - proc_mem_info *one, *two; + proc_mem_info *one, *two; - if (!a) - return 0; - if (!b) - return 0; + if (!a) + return 0; + if (!b) + return 0; - one = (proc_mem_info *) a; - two = (proc_mem_info *) b; + one = (proc_mem_info *) a; + two = (proc_mem_info *) b; - return (two->totl > one->totl); + return (two->totl > one->totl); } int mem_top_screen (int rep, int display) { - // Much of this code was ripped from "gmemusage" - char buf[128]; + // Much of this code was ripped from "gmemusage" + char buf[128]; - DIR *proc; - FILE *StatusFile; - struct dirent *procdir; + DIR *proc; + FILE *StatusFile; + struct dirent *procdir; - char procName[16]; - int - procSize, procRSS, procData, procStk, procExe; - const char - *NameLine = "Name:", *VmSizeLine = "VmSize:", *VmRSSLine = "VmRSS", *VmDataLine = "VmData", *VmStkLine = "VmStk", *VmExeLine = "VmExe"; - const int - NameLineLen = strlen (NameLine), VmSizeLineLen = strlen (VmSizeLine), VmDataLineLen = strlen (VmDataLine), VmStkLineLen = strlen (VmStkLine), VmExeLineLen = strlen (VmExeLine), VmRSSLineLen = strlen (VmRSSLine); + char procName[16]; + int + procSize, procRSS, procData, procStk, procExe; + const char + *NameLine = "Name:", *VmSizeLine = "VmSize:", *VmRSSLine = "VmRSS", *VmDataLine = "VmData", *VmStkLine = "VmStk", *VmExeLine = "VmExe"; + const int + NameLineLen = strlen (NameLine), VmSizeLineLen = strlen (VmSizeLine), VmDataLineLen = strlen (VmDataLine), VmStkLineLen = strlen (VmStkLine), VmExeLineLen = strlen (VmExeLine), VmRSSLineLen = strlen (VmRSSLine); - int threshold = 400, unique; - int i; - proc_mem_info *p; - LL *procs; - static int first = 1; + int threshold = 400, unique; + int i; + proc_mem_info *p; + LL *procs; + static int first = 1; - if (first) { - first = 0; + if (first) { + first = 0; - sock_send_string (sock, "screen_add S\n"); - sprintf (buffer, "screen_set S -name {Top Memory Use: %s}\n", host); - sock_send_string (sock, buffer); - sock_send_string (sock, "widget_add S title title\n"); - sprintf (buffer, "widget_set S title {TOP MEM: %s}\n", host); - sock_send_string (sock, buffer); - sock_send_string (sock, "widget_add S f frame\n"); - if (lcd_hgt >= 4) - sock_send_string (sock, "widget_set S f 1 2 20 4 20 5 v 8\n"); - else - sock_send_string (sock, "widget_set S f 1 2 20 2 20 5 v 16\n"); - for (i = 1; i <= 5; i++) { - sprintf (buffer, "widget_add S %i string -in f\n", i); - sock_send_string (sock, buffer); - } - sock_send_string (sock, "widget_set S 1 1 1 Checking...\n"); - } + sock_send_string (sock, "screen_add S\n"); + sprintf (buffer, "screen_set S -name {Top Memory Use: %s}\n", host); + sock_send_string (sock, buffer); + sock_send_string (sock, "widget_add S title title\n"); + sprintf (buffer, "widget_set S title {TOP MEM: %s}\n", host); + sock_send_string (sock, buffer); + sock_send_string (sock, "widget_add S f frame\n"); + if (lcd_hgt >= 4) + sock_send_string (sock, "widget_set S f 1 2 20 4 20 5 v 8\n"); + else + sock_send_string (sock, "widget_set S f 1 2 20 2 20 5 v 16\n"); + for (i = 1; i <= 5; i++) { + sprintf (buffer, "widget_add S %i string -in f\n", i); + sock_send_string (sock, buffer); + } + sock_send_string (sock, "widget_set S 1 1 1 Checking...\n"); + } - procs = LL_new (); - if (!procs) { - fprintf (stderr, "mem_top_screen: Error allocating list\n"); - return -1; - } + procs = LL_new (); + if (!procs) { + fprintf (stderr, "mem_top_screen: Error allocating list\n"); + return -1; + } - if ((proc = opendir ("/proc")) == NULL) { - fprintf (stderr, "mem_top_screen: unable to open /proc"); - perror (""); - return -1; - } + if ((proc = opendir ("/proc")) == NULL) { + fprintf (stderr, "mem_top_screen: unable to open /proc"); + perror (""); + return -1; + } - while ((procdir = readdir (proc))) { - if (!index ("1234567890", procdir->d_name[0])) { - continue; - } - sprintf (buf, "/proc/%s/status", procdir->d_name); - if ((StatusFile = fopen (buf, "r")) == NULL) { - // Not a serious error; process has finished before we could - // examine it: - //fprintf ( stderr , "mem_top_screen: cannot open %s for reading" , - // buf ) ; - //perror ( "" ) ; - continue; - } - procRSS = procSize = procData = procStk = procExe = 0; - while (fgets (buf, sizeof (buf), StatusFile)) { - if (!strncmp (buf, NameLine, NameLineLen)) { - /* Name: procName */ - sscanf (buf, "%*s %s", procName); - } else if (!strncmp (buf, VmSizeLine, VmSizeLineLen)) { - /* VmSize: procSize kB */ - sscanf (buf, "%*s %d", &procSize); - } else if (!strncmp (buf, VmRSSLine, VmRSSLineLen)) { - /* VmRSS: procRSS kB */ - sscanf (buf, "%*s %d", &procRSS); - } else if (!strncmp (buf, VmDataLine, VmDataLineLen)) { - /* VmData: procData kB */ - sscanf (buf, "%*s %d", &procData); - } else if (!strncmp (buf, VmStkLine, VmStkLineLen)) { - /* VmStk: procStk kB */ - sscanf (buf, "%*s %d", &procStk); - } else if (!strncmp (buf, VmExeLine, VmExeLineLen)) { - /* VmExe: procExe kB */ - sscanf (buf, "%*s %d", &procExe); - } - } - fclose (StatusFile); - if (procSize > threshold) { - // Figure out if it's sharing any memory... - unique = 1; - LL_Rewind (procs); - do { - p = LL_Get (procs); - if (p) { - if (0 == strcmp (p->name, procName)) { - unique = 0; - p->number++; - p->totl += procData + procStk + procExe; - } - } - } while (LL_Next (procs) == 0); + while ((procdir = readdir (proc))) { + if (!index ("1234567890", procdir->d_name[0])) { + continue; + } + sprintf (buf, "/proc/%s/status", procdir->d_name); + if ((StatusFile = fopen (buf, "r")) == NULL) { + // Not a serious error; process has finished before we could + // examine it: + //fprintf ( stderr , "mem_top_screen: cannot open %s for reading" , + // buf ) ; + //perror ( "" ) ; + continue; + } + procRSS = procSize = procData = procStk = procExe = 0; + while (fgets (buf, sizeof (buf), StatusFile)) { + if (!strncmp (buf, NameLine, NameLineLen)) { + /* Name: procName */ + sscanf (buf, "%*s %s", procName); + } else if (!strncmp (buf, VmSizeLine, VmSizeLineLen)) { + /* VmSize: procSize kB */ + sscanf (buf, "%*s %d", &procSize); + } else if (!strncmp (buf, VmRSSLine, VmRSSLineLen)) { + /* VmRSS: procRSS kB */ + sscanf (buf, "%*s %d", &procRSS); + } else if (!strncmp (buf, VmDataLine, VmDataLineLen)) { + /* VmData: procData kB */ + sscanf (buf, "%*s %d", &procData); + } else if (!strncmp (buf, VmStkLine, VmStkLineLen)) { + /* VmStk: procStk kB */ + sscanf (buf, "%*s %d", &procStk); + } else if (!strncmp (buf, VmExeLine, VmExeLineLen)) { + /* VmExe: procExe kB */ + sscanf (buf, "%*s %d", &procExe); + } + } + fclose (StatusFile); + if (procSize > threshold) { + // Figure out if it's sharing any memory... + unique = 1; + LL_Rewind (procs); + do { + p = LL_Get (procs); + if (p) { + if (0 == strcmp (p->name, procName)) { + unique = 0; + p->number++; + p->totl += procData + procStk + procExe; + } + } + } while (LL_Next (procs) == 0); - // If this is the first one by this name... - if (unique) { - p = malloc (sizeof (proc_mem_info)); - if (!p) { - fprintf (stderr, "mem_top_screen: Error allocating process entry\n"); - goto end; // Ack! I hate goto's! - } - strcpy (p->name, procName); - p->size = procSize; - p->totl = procData + procStk + procExe; - p->number = 1; - // TODO: Check for errors here? - LL_Push (procs, (void *) p); - } - } + // If this is the first one by this name... + if (unique) { + p = malloc (sizeof (proc_mem_info)); + if (!p) { + fprintf (stderr, "mem_top_screen: Error allocating process entry\n"); + goto end; // Ack! I hate goto's! + } + strcpy (p->name, procName); + p->size = procSize; + p->totl = procData + procStk + procExe; + p->number = 1; + // TODO: Check for errors here? + LL_Push (procs, (void *) p); + } + } - } - closedir (proc); + } + closedir (proc); - // Now, print some info... - LL_Rewind (procs); - LL_Sort (procs, sort_procs); - LL_Rewind (procs); - for (i = 1; i <= 5; i++) { - p = LL_Get (procs); - if (p) { - //printf("Mem hog: %s: %ik\n", p->name, p->size); - if (p->number > 1) - sprintf (buffer, "widget_set S %i 1 %i {%i%6ik %s(%i)}\n", i, i, i, p->totl, p->name, p->number); - else - sprintf (buffer, "widget_set S %i 1 %i {%i%6ik %s}\n", i, i, i, p->totl, p->name); - if (display) - sock_send_string (sock, buffer); - } else { - //printf("Mem hog: none?\n"); - sprintf (buffer, "widget_set S %i 1 %i {}\n", i, i); - if (display) - sock_send_string (sock, buffer); - } + // Now, print some info... + LL_Rewind (procs); + LL_Sort (procs, sort_procs); + LL_Rewind (procs); + for (i = 1; i <= 5; i++) { + p = LL_Get (procs); + if (p) { + //printf("Mem hog: %s: %ik\n", p->name, p->size); + if (p->number > 1) + sprintf (buffer, "widget_set S %i 1 %i {%i%6ik %s(%i)}\n", i, i, i, p->totl, p->name, p->number); + else + sprintf (buffer, "widget_set S %i 1 %i {%i%6ik %s}\n", i, i, i, p->totl, p->name); + if (display) + sock_send_string (sock, buffer); + } else { + //printf("Mem hog: none?\n"); + sprintf (buffer, "widget_set S %i 1 %i {}\n", i, i); + if (display) + sock_send_string (sock, buffer); + } - LL_Next (procs); - } + LL_Next (procs); + } - end: // Ack! I hate using labels! - // Now clean it all up... - LL_Rewind (procs); - do { - p = (proc_mem_info *) LL_Get (procs); - if (p) { - //printf("Proc: %6ik %s\n", p->size, p->name); - free (p); - } - } while (LL_Next (procs) == 0); - LL_Destroy (procs); + end: // Ack! I hate using labels! + // Now clean it all up... + LL_Rewind (procs); + do { + p = (proc_mem_info *) LL_Get (procs); + if (p) { + //printf("Proc: %6ik %s\n", p->size, p->name); + free (p); + } + } while (LL_Next (procs) == 0); + LL_Destroy (procs); - return 0; + return 0; -} // End mem_top_screen() +} // End mem_top_screen() diff --git a/clients/lcdproc/mode.c b/clients/lcdproc/mode.c index 2b06584..b80979a 100644 --- a/clients/lcdproc/mode.c +++ b/clients/lcdproc/mode.c @@ -42,211 +42,211 @@ int getentry (const char *tag, const char *bufptr); int mode_init (mode * sequence) { - int i; - struct utsname Uname; + int i; + struct utsname Uname; - // Grab the host name - if (0 > uname (&Uname)) { - perror ("Can't get hostname"); - strcpy (host, "host"); - } else { - strncpy (host, Uname.nodename, 15); - host[16] = 0; - if (index (host, '.')) // truncate at the first dot - *(index (host, '.')) = '\0'; - for (i = 0; i < 16; i++) - if (host[i] == '\n') - host[i] = 0; - } + // Grab the host name + if (0 > uname (&Uname)) { + perror ("Can't get hostname"); + strcpy (host, "host"); + } else { + strncpy (host, Uname.nodename, 15); + host[16] = 0; + if (index (host, '.')) // truncate at the first dot + *(index (host, '.')) = '\0'; + for (i = 0; i < 16; i++) + if (host[i] == '\n') + host[i] = 0; + } - // Init all the modescreens we need - for (i = 0; sequence[i].which > 1; i++) { - switch (sequence[i].which) { - case 'g': - case 'G': // cpu_graph_screen - cpu_init (); - break; - case 'c': - case 'C': // cpu_screen - cpu_init (); - break; - case 'o': - case 'O': // clock_screen - chrono_init (); - break; - case 'k': - case 'K': // big_clock_screen - chrono_init (); - break; - case 'm': - case 'M': // mem_screen - mem_init (); - break; - case 's': - case 'S': // mem_info_screen - mem_init (); - break; - case 'u': - case 'U': // uptime_screen - chrono_init (); - break; - case 't': - case 'T': // time_screen - chrono_init (); - break; - case 'd': - case 'D': // disk_screen - disk_init (); - break; - case 'x': - case 'X': // xload_screen - load_init (); - break; - case 'b': - case 'B': // battery_screen - batt_init (); - break; - case 'a': - case 'A': // credit_screen - break; - case 'p': - case 'P': // cpu_smp_screen - cpu_smp_init (); - break; - default: - break; - } - } + // Init all the modescreens we need + for (i = 0; sequence[i].which > 1; i++) { + switch (sequence[i].which) { + case 'g': + case 'G': // cpu_graph_screen + cpu_init (); + break; + case 'c': + case 'C': // cpu_screen + cpu_init (); + break; + case 'o': + case 'O': // clock_screen + chrono_init (); + break; + case 'k': + case 'K': // big_clock_screen + chrono_init (); + break; + case 'm': + case 'M': // mem_screen + mem_init (); + break; + case 's': + case 'S': // mem_info_screen + mem_init (); + break; + case 'u': + case 'U': // uptime_screen + chrono_init (); + break; + case 't': + case 'T': // time_screen + chrono_init (); + break; + case 'd': + case 'D': // disk_screen + disk_init (); + break; + case 'x': + case 'X': // xload_screen + load_init (); + break; + case 'b': + case 'B': // battery_screen + batt_init (); + break; + case 'a': + case 'A': // credit_screen + break; + case 'p': + case 'P': // cpu_smp_screen + cpu_smp_init (); + break; + default: + break; + } + } - return 0; + return 0; } void mode_close () { - batt_close (); - chrono_close (); - cpu_close (); - disk_close (); - load_close (); - mem_close (); - cpu_smp_close (); + batt_close (); + chrono_close (); + cpu_close (); + disk_close (); + load_close (); + mem_close (); + cpu_smp_close (); } int update_screen (mode * m, int display) { - static int status = -1; - int old_status = status; + static int status = -1; + int old_status = status; - if (m) { - switch (m->which) { - case 'g': - case 'G': - status = cpu_graph_screen (m->timer, display); - break; - case 'c': - case 'C': - status = cpu_screen (m->timer, display); - break; - case 'o': - case 'O': - status = clock_screen (m->timer, display); - break; - case 'k': - case 'K': - status = big_clock_screen (m->timer, display); - break; - case 'm': - case 'M': - status = mem_screen (m->timer, display); - break; - case 's': - case 'S': - status = mem_top_screen (m->timer, display); - break; - case 'u': - case 'U': - status = uptime_screen (m->timer, display); - break; - case 't': - case 'T': - status = time_screen (m->timer, display); - break; - case 'd': - case 'D': - status = disk_screen (m->timer, display); - break; - case 'x': - case 'X': - status = xload_screen (m->timer, display); - break; - case 'b': - case 'B': - status = battery_screen (m->timer, display); - break; - case 'a': - case 'A': - status = credit_screen (m->timer, display); - break; - case 'p': - case 'P': - status = cpu_smp_screen (m->timer, display); - break; - default: - break; - } - /* Debugging tool... - if(display) - { - printf("Displayed Mode %c\n", m->which); - } - */ - } + if (m) { + switch (m->which) { + case 'g': + case 'G': + status = cpu_graph_screen (m->timer, display); + break; + case 'c': + case 'C': + status = cpu_screen (m->timer, display); + break; + case 'o': + case 'O': + status = clock_screen (m->timer, display); + break; + case 'k': + case 'K': + status = big_clock_screen (m->timer, display); + break; + case 'm': + case 'M': + status = mem_screen (m->timer, display); + break; + case 's': + case 'S': + status = mem_top_screen (m->timer, display); + break; + case 'u': + case 'U': + status = uptime_screen (m->timer, display); + break; + case 't': + case 'T': + status = time_screen (m->timer, display); + break; + case 'd': + case 'D': + status = disk_screen (m->timer, display); + break; + case 'x': + case 'X': + status = xload_screen (m->timer, display); + break; + case 'b': + case 'B': + status = battery_screen (m->timer, display); + break; + case 'a': + case 'A': + status = credit_screen (m->timer, display); + break; + case 'p': + case 'P': + status = cpu_smp_screen (m->timer, display); + break; + default: + break; + } + /* Debugging tool... + if(display) + { + printf("Displayed Mode %c\n", m->which); + } + */ + } - if (status != old_status) { - if (status == BACKLIGHT_OFF) { - sock_send_string (sock, "backlight off\n"); - } - if (status == BACKLIGHT_ON) { - sock_send_string (sock, "backlight on\n"); - } - if (status == BLINK_ON) { - sock_send_string (sock, "backlight blink\n"); - } - } - return status; + if (status != old_status) { + if (status == BACKLIGHT_OFF) { + sock_send_string (sock, "backlight off\n"); + } + if (status == BACKLIGHT_ON) { + sock_send_string (sock, "backlight on\n"); + } + if (status == BLINK_ON) { + sock_send_string (sock, "backlight blink\n"); + } + } + return status; } void reread (int f, char *errmsg) { - if (lseek (f, 0L, 0) == 0 && read (f, buffer, sizeof (buffer) - 1) > 0) - return; - perror (errmsg); - exit (1); + if (lseek (f, 0L, 0) == 0 && read (f, buffer, sizeof (buffer) - 1) > 0) + return; + perror (errmsg); + exit (1); } int getentry (const char *tag, const char *bufptr) { - char *tail; - int retval, len = strlen (tag); + char *tail; + int retval, len = strlen (tag); - while (bufptr) { - if (*bufptr == '\n') - bufptr++; - if (!strncmp (tag, bufptr, len)) { - retval = strtol (bufptr + len, &tail, 10); - if (tail == bufptr + len) - return -1; - else - return retval; - } - bufptr = strchr (bufptr, '\n'); - } - return -1; + while (bufptr) { + if (*bufptr == '\n') + bufptr++; + if (!strncmp (tag, bufptr, len)) { + retval = strtol (bufptr + len, &tail, 10); + if (tail == bufptr + len) + return -1; + else + return retval; + } + bufptr = strchr (bufptr, '\n'); + } + return -1; } /////////////////////////////////////////////////////////////////////////// @@ -263,28 +263,28 @@ char tmp[1024]; int credit_screen (int rep, int display) { - static int first = 1; + static int first = 1; - if (first) { - first = 0; + if (first) { + first = 0; - sock_send_string (sock, "screen_add A\n"); - sock_send_string (sock, "screen_set A -name {Credits for LCDproc}\n"); - sock_send_string (sock, "widget_add A title title\n"); - sprintf (tmp, "widget_set A title {LCDPROC %s}\n", version); - sock_send_string (sock, tmp); - if (lcd_hgt >= 4) { - sock_send_string (sock, "widget_add A one string\n"); - sock_send_string (sock, "widget_add A two string\n"); - sock_send_string (sock, "widget_add A three string\n"); - sock_send_string (sock, "widget_set A one 1 2 { for Linux }\n"); - sock_send_string (sock, "widget_set A two 1 3 { by William Ferrell}\n"); - sock_send_string (sock, "widget_set A three 1 4 { and Scott Scriven}\n"); - } else { - sock_send_string (sock, "widget_add A text scroller\n"); - sock_send_string (sock, "widget_set A text 1 2 20 2 v 8 { for Linux by William Ferrell and Scott Scriven}\n"); - } - } + sock_send_string (sock, "screen_add A\n"); + sock_send_string (sock, "screen_set A -name {Credits for LCDproc}\n"); + sock_send_string (sock, "widget_add A title title\n"); + sprintf (tmp, "widget_set A title {LCDPROC %s}\n", version); + sock_send_string (sock, tmp); + if (lcd_hgt >= 4) { + sock_send_string (sock, "widget_add A one string\n"); + sock_send_string (sock, "widget_add A two string\n"); + sock_send_string (sock, "widget_add A three string\n"); + sock_send_string (sock, "widget_set A one 1 2 { for Linux }\n"); + sock_send_string (sock, "widget_set A two 1 3 { by William Ferrell}\n"); + sock_send_string (sock, "widget_set A three 1 4 { and Scott Scriven}\n"); + } else { + sock_send_string (sock, "widget_add A text scroller\n"); + sock_send_string (sock, "widget_set A text 1 2 20 2 v 8 { for Linux by William Ferrell and Scott Scriven}\n"); + } + } - return 0; -} // End credit_screen() + return 0; +} // End credit_screen() diff --git a/server/client_data.c b/server/client_data.c index ac35674..3b01d41 100644 --- a/server/client_data.c +++ b/server/client_data.c @@ -19,66 +19,66 @@ int client_data_init (client_data * d) { - if (!d) - return -1; + if (!d) + return -1; - d->ack = 0; - d->name = NULL; + d->ack = 0; + d->name = NULL; - d->screenlist = LL_new (); - if (!d->screenlist) { - fprintf (stderr, "client_data_init: Error allocating screenlist\n"); - return -1; - } - /* TODO: this section... (client menus) - d->menulist = LL_new(); - if(!d->menulist) - { - fprintf(stderr, "client_data_init: Error allocating menulist\n"); - return -1; - } - */ - return 0; + d->screenlist = LL_new (); + if (!d->screenlist) { + fprintf (stderr, "client_data_init: Error allocating screenlist\n"); + return -1; + } + /* TODO: this section... (client menus) + d->menulist = LL_new(); + if(!d->menulist) + { + fprintf(stderr, "client_data_init: Error allocating menulist\n"); + return -1; + } + */ + return 0; } int client_data_destroy (client_data * d) { - screen *s; + screen *s; - debug ("client_data_destroy\n"); + debug ("client_data_destroy\n"); - if (!d) - return -1; + if (!d) + return -1; - d->ack = 0; + d->ack = 0; - // Clean up the name... - if (d->name) - free (d->name); + // Clean up the name... + if (d->name) + free (d->name); - // Clean up the screenlist... - debug ("client_data_destroy: Cleaning screenlist\n"); - LL_Rewind (d->screenlist); - do { - s = (screen *) LL_Get (d->screenlist); - if (s) { - debug ("client_data_destroy: removing screen %s\n", s->id); + // Clean up the screenlist... + debug ("client_data_destroy: Cleaning screenlist\n"); + LL_Rewind (d->screenlist); + do { + s = (screen *) LL_Get (d->screenlist); + if (s) { + debug ("client_data_destroy: removing screen %s\n", s->id); - // FIXME? This shouldn't be handled here... - // Now, remove it from the screenlist... - if (screenlist_remove_all (s) < 0) { - // Not a serious error.. - fprintf (stderr, "client_data_destroy: Error dequeueing screen\n"); - return 0; - } - // Free its memory... - screen_destroy (s); - } - } while (LL_Next (d->screenlist) == 0); - LL_Destroy (d->screenlist); + // FIXME? This shouldn't be handled here... + // Now, remove it from the screenlist... + if (screenlist_remove_all (s) < 0) { + // Not a serious error.. + fprintf (stderr, "client_data_destroy: Error dequeueing screen\n"); + return 0; + } + // Free its memory... + screen_destroy (s); + } + } while (LL_Next (d->screenlist) == 0); + LL_Destroy (d->screenlist); - // TODO: clean up the rest of the data... + // TODO: clean up the rest of the data... - return 0; + return 0; } diff --git a/server/client_data.h b/server/client_data.h index 3214634..a78a6ee 100644 --- a/server/client_data.h +++ b/server/client_data.h @@ -6,12 +6,12 @@ #define CLIENT_NAME_SIZE 256 typedef struct client_data { - int ack; - char *name; - // and other stuff... doesn't matter yet - LL *screenlist; - // list of accepted keys... (?) - LL *menulist; + int ack; + char *name; + // and other stuff... doesn't matter yet + LL *screenlist; + // list of accepted keys... (?) + LL *menulist; } client_data; diff --git a/server/client_functions.c b/server/client_functions.c index fae19b8..9f76bae 100644 --- a/server/client_functions.c +++ b/server/client_functions.c @@ -28,28 +28,28 @@ #include "client_functions.h" client_function commands[] = { - {"test_func", test_func_func}, - {"hello", hello_func}, - {"client_set", client_set_func}, - {"client_add_key", client_add_key_func}, - {"client_del_key", client_del_key_func}, - {"screen_add", screen_add_func}, - {"screen_del", screen_del_func}, - {"screen_set", screen_set_func}, - {"widget_add", widget_add_func}, - {"widget_del", widget_del_func}, - {"widget_set", widget_set_func}, - {"menu_add", menu_add_func}, - {"menu_del", menu_del_func}, - {"menu_set", menu_set_func}, - // TODO: Adhere these to the naming convention? - {"menu_item_add", menu_item_add_func}, - {"menu_item_del", menu_item_del_func}, - {"menu_item_set", menu_item_set_func}, - // Misc stuff... - {"backlight", backlight_func}, - {"output", output_func}, - {NULL, NULL}, + {"test_func", test_func_func}, + {"hello", hello_func}, + {"client_set", client_set_func}, + {"client_add_key", client_add_key_func}, + {"client_del_key", client_del_key_func}, + {"screen_add", screen_add_func}, + {"screen_del", screen_del_func}, + {"screen_set", screen_set_func}, + {"widget_add", widget_add_func}, + {"widget_del", widget_del_func}, + {"widget_set", widget_set_func}, + {"menu_add", menu_add_func}, + {"menu_del", menu_del_func}, + {"menu_set", menu_set_func}, + // TODO: Adhere these to the naming convention? + {"menu_item_add", menu_item_add_func}, + {"menu_item_del", menu_item_del_func}, + {"menu_item_set", menu_item_set_func}, + // Misc stuff... + {"backlight", backlight_func}, + {"output", output_func}, + {NULL, NULL}, }; // TODO: Maybe more error-checking for "->"'s? @@ -60,15 +60,15 @@ client_function commands[] = { int test_func_func (client * c, int argc, char **argv) { - int i; - char str[256]; + int i; + char str[256]; - for (i = 0; i < argc; i++) { - sprintf (str, "test_func_func: %i -> %s\n", i, argv[i]); - printf (str); - sock_send_string (c->sock, str); - } - return 0; + for (i = 0; i < argc; i++) { + sprintf (str, "test_func_func: %i -> %s\n", i, argv[i]); + printf (str); + sock_send_string (c->sock, str); + } + return 0; } /////////////////////////////////////////////////////////////////////////// @@ -79,19 +79,19 @@ test_func_func (client * c, int argc, char **argv) int hello_func (client * c, int argc, char **argv) { - char str[256]; + char str[256]; - // TODO: Give *real* info about the server/lcd... + // TODO: Give *real* info about the server/lcd... - debug ("Hello!\n"); + debug ("Hello!\n"); - sprintf (str, "connect LCDproc %s protocol %s lcd wid %i hgt %i cellwid %i cellhgt %i\n", version, protocol_version, lcd.wid, lcd.hgt, lcd.cellwid, lcd.cellhgt); - sock_send_string (c->sock, str); + sprintf (str, "connect LCDproc %s protocol %s lcd wid %i hgt %i cellwid %i cellhgt %i\n", version, protocol_version, lcd.wid, lcd.hgt, lcd.cellwid, lcd.cellhgt); + sock_send_string (c->sock, str); - if (c->data) - c->data->ack = 1; + if (c->data) + c->data->ack = 1; - return 0; + return 0; } /////////////////////////////////////////////////////////////////////////// @@ -100,35 +100,35 @@ hello_func (client * c, int argc, char **argv) int client_set_func (client * c, int argc, char **argv) { - int i; + int i; - if (!c->data->ack) - return 1; + if (!c->data->ack) + return 1; - for (i = 1; i < argc; i++) { - // Handle the "name" parameter - if (0 == strcmp (argv[i], "-name")) { - if (argc > i + 1) { - i++; - debug ("client_set: name=\"%s\"\n", argv[i]); + for (i = 1; i < argc; i++) { + // Handle the "name" parameter + if (0 == strcmp (argv[i], "-name")) { + if (argc > i + 1) { + i++; + debug ("client_set: name=\"%s\"\n", argv[i]); - // set the name... - if (c->data->name) - free (c->data->name); - c->data->name = strdup (argv[i]); - } else { - sock_send_string (c->sock, "huh? name requires a parameter\n"); - } - } else { - sock_send_string (c->sock, "huh? invalid parameter\n"); - } - } + // set the name... + if (c->data->name) + free (c->data->name); + c->data->name = strdup (argv[i]); + } else { + sock_send_string (c->sock, "huh? name requires a parameter\n"); + } + } else { + sock_send_string (c->sock, "huh? invalid parameter\n"); + } + } - // If there were no parameters... - if (argc == 1) - sock_send_string (c->sock, "huh? What do you want to set?\n"); + // If there were no parameters... + if (argc == 1) + sock_send_string (c->sock, "huh? What do you want to set?\n"); - return 0; + return 0; } /////////////////////////////////////////////////////////////////////////// @@ -139,12 +139,12 @@ int client_add_key_func (client * c, int argc, char **argv) { - if (!c->data->ack) - return 1; + if (!c->data->ack) + return 1; - sock_send_string (c->sock, "huh? Not implemented yet.\n"); + sock_send_string (c->sock, "huh? Not implemented yet.\n"); - return 0; + return 0; } /////////////////////////////////////////////////////////////////////////// @@ -155,12 +155,12 @@ int client_del_key_func (client * c, int argc, char **argv) { - if (!c->data->ack) - return 1; + if (!c->data->ack) + return 1; - sock_send_string (c->sock, "huh? Not implemented yet.\n"); + sock_send_string (c->sock, "huh? Not implemented yet.\n"); - return 0; + return 0; } /////////////////////////////////////////////////////////////////////////// @@ -169,28 +169,28 @@ client_del_key_func (client * c, int argc, char **argv) int screen_add_func (client * c, int argc, char **argv) { - int err = 0; + int err = 0; - if (!c->data->ack) - return 1; + if (!c->data->ack) + return 1; - if (argc < 2) { - sock_send_string (c->sock, "huh? Specify a screen #id\n"); - return 0; - } - if (argc > 2) { - sock_send_string (c->sock, "huh? Too many parameters...\n"); - return 0; - } + if (argc < 2) { + sock_send_string (c->sock, "huh? Specify a screen #id\n"); + return 0; + } + if (argc > 2) { + sock_send_string (c->sock, "huh? Too many parameters...\n"); + return 0; + } - debug ("screen_add: Adding screen %s\n", argv[1]); - err = screen_add (c, argv[1]); - if (err < 0) - fprintf (stderr, "screen_add_func: Error adding screen\n"); - if (err > 0) - sock_send_string (c->sock, "huh? You already have a screen with that id#\n"); + debug ("screen_add: Adding screen %s\n", argv[1]); + err = screen_add (c, argv[1]); + if (err < 0) + fprintf (stderr, "screen_add_func: Error adding screen\n"); + if (err > 0) + sock_send_string (c->sock, "huh? You already have a screen with that id#\n"); - return 0; + return 0; } /////////////////////////////////////////////////////////////////////////// @@ -199,28 +199,28 @@ screen_add_func (client * c, int argc, char **argv) int screen_del_func (client * c, int argc, char **argv) { - int err = 0; + int err = 0; - if (!c->data->ack) - return 1; + if (!c->data->ack) + return 1; - if (argc < 2) { - sock_send_string (c->sock, "huh? Specify a screen #id\n"); - return 0; - } - if (argc > 2) { - sock_send_string (c->sock, "huh? Too many parameters...\n"); - return 0; - } + if (argc < 2) { + sock_send_string (c->sock, "huh? Specify a screen #id\n"); + return 0; + } + if (argc > 2) { + sock_send_string (c->sock, "huh? Too many parameters...\n"); + return 0; + } - debug ("screen_del: Deleting screen %s\n", argv[1]); - err = screen_remove (c, argv[1]); - if (err < 0) - fprintf (stderr, "screen_del_func: Error removing screen\n"); - if (err > 0) - sock_send_string (c->sock, "huh? You don't have a screen with that id#\n"); + debug ("screen_del: Deleting screen %s\n", argv[1]); + err = screen_remove (c, argv[1]); + if (err < 0) + fprintf (stderr, "screen_del_func: Error removing screen\n"); + if (err > 0) + sock_send_string (c->sock, "huh? You don't have a screen with that id#\n"); - return 0; + return 0; } /////////////////////////////////////////////////////////////////////////// @@ -230,134 +230,134 @@ screen_del_func (client * c, int argc, char **argv) int screen_set_func (client * c, int argc, char **argv) { - int i; + int i; - int number; - char *id; - screen *s; + int number; + char *id; + screen *s; - if (!c->data->ack) - return 1; + if (!c->data->ack) + return 1; - // If there weren't enough parameters... - if (argc < 2) { - sock_send_string (c->sock, "huh? You must specify a screen id\n"); - return 0; - } + // If there weren't enough parameters... + if (argc < 2) { + sock_send_string (c->sock, "huh? You must specify a screen id\n"); + return 0; + } - if (argc == 2) { - sock_send_string (c->sock, "huh? What do you want to set?\n"); - return 0; - } + if (argc == 2) { + sock_send_string (c->sock, "huh? What do you want to set?\n"); + return 0; + } - id = argv[1]; - s = screen_find (c, id); - if (!s) { - sock_send_string (c->sock, "huh? Invalid screen id\n"); - return 0; - } - // Handle the rest of the parameters - for (i = 2; i < argc; i++) { - // Handle the "name" parameter - if (0 == strcmp (argv[i], "-name")) { - if (argc > i + 1) { - i++; - debug ("screen_set: name=\"%s\"\n", argv[i]); + id = argv[1]; + s = screen_find (c, id); + if (!s) { + sock_send_string (c->sock, "huh? Invalid screen id\n"); + return 0; + } + // Handle the rest of the parameters + for (i = 2; i < argc; i++) { + // Handle the "name" parameter + if (0 == strcmp (argv[i], "-name")) { + if (argc > i + 1) { + i++; + debug ("screen_set: name=\"%s\"\n", argv[i]); - // set the name... - if (s->name) - free (s->name); - s->name = strdup (argv[i]); - } else { - sock_send_string (c->sock, "huh? -name requires a parameter\n"); - } - } - // Handle the "priority" parameter - else if (0 == strcmp (argv[i], "-priority")) { - if (argc > i + 1) { - i++; - debug ("screen_set: priority=\"%s\"\n", argv[i]); + // set the name... + if (s->name) + free (s->name); + s->name = strdup (argv[i]); + } else { + sock_send_string (c->sock, "huh? -name requires a parameter\n"); + } + } + // Handle the "priority" parameter + else if (0 == strcmp (argv[i], "-priority")) { + if (argc > i + 1) { + i++; + debug ("screen_set: priority=\"%s\"\n", argv[i]); - // set the priority... - number = atoi (argv[i]); - if (number > 0) - s->priority = number; - } else { - sock_send_string (c->sock, "huh? -priority requires a parameter\n"); - } - } - // Handle the "duration" parameter - else if (0 == strcmp (argv[i], "-duration")) { - if (argc > i + 1) { - i++; - debug ("screen_set: duration=\"%s\"\n", argv[i]); + // set the priority... + number = atoi (argv[i]); + if (number > 0) + s->priority = number; + } else { + sock_send_string (c->sock, "huh? -priority requires a parameter\n"); + } + } + // Handle the "duration" parameter + else if (0 == strcmp (argv[i], "-duration")) { + if (argc > i + 1) { + i++; + debug ("screen_set: duration=\"%s\"\n", argv[i]); - // set the duration... - number = atoi (argv[i]); - if (number > 0) - s->duration = number; - } else { - sock_send_string (c->sock, "huh? -duration requires a parameter\n"); - } - } - // Handle the "heartbeat" parameter - else if (0 == strcmp (argv[i], "-heartbeat")) { - if (argc > i + 1) { - i++; - debug ("screen_set: heartbeat=\"%s\"\n", argv[i]); + // set the duration... + number = atoi (argv[i]); + if (number > 0) + s->duration = number; + } else { + sock_send_string (c->sock, "huh? -duration requires a parameter\n"); + } + } + // Handle the "heartbeat" parameter + else if (0 == strcmp (argv[i], "-heartbeat")) { + if (argc > i + 1) { + i++; + debug ("screen_set: heartbeat=\"%s\"\n", argv[i]); - // set the heartbeat type... - if (0 == strcmp (argv[i], "on")) - s->heartbeat = 1; - if (0 == strcmp (argv[i], "heart")) - s->heartbeat = 1; - if (0 == strcmp (argv[i], "normal")) - s->heartbeat = 1; - if (0 == strcmp (argv[i], "default")) - s->heartbeat = 1; - if (0 == strcmp (argv[i], "off")) - s->heartbeat = 0; - if (0 == strcmp (argv[i], "none")) - s->heartbeat = 0; - if (0 == strcmp (argv[i], "slash")) - s->heartbeat = 2; - } else { - sock_send_string (c->sock, "huh? -heartbeat requires a parameter\n"); - } - } - // Handle the "wid" parameter - else if (0 == strcmp (argv[i], "-wid")) { - if (argc > i + 1) { - i++; - debug ("screen_set: wid=\"%s\"\n", argv[i]); + // set the heartbeat type... + if (0 == strcmp (argv[i], "on")) + s->heartbeat = 1; + if (0 == strcmp (argv[i], "heart")) + s->heartbeat = 1; + if (0 == strcmp (argv[i], "normal")) + s->heartbeat = 1; + if (0 == strcmp (argv[i], "default")) + s->heartbeat = 1; + if (0 == strcmp (argv[i], "off")) + s->heartbeat = 0; + if (0 == strcmp (argv[i], "none")) + s->heartbeat = 0; + if (0 == strcmp (argv[i], "slash")) + s->heartbeat = 2; + } else { + sock_send_string (c->sock, "huh? -heartbeat requires a parameter\n"); + } + } + // Handle the "wid" parameter + else if (0 == strcmp (argv[i], "-wid")) { + if (argc > i + 1) { + i++; + debug ("screen_set: wid=\"%s\"\n", argv[i]); - // set the duration... - number = atoi (argv[i]); - if (number > 0) - s->wid = number; - } else { - sock_send_string (c->sock, "huh? -wid requires a parameter\n"); - } - } - // Handle the "hgt" parameter - else if (0 == strcmp (argv[i], "-hgt")) { - if (argc > i + 1) { - i++; - debug ("screen_set: hgt=\"%s\"\n", argv[i]); + // set the duration... + number = atoi (argv[i]); + if (number > 0) + s->wid = number; + } else { + sock_send_string (c->sock, "huh? -wid requires a parameter\n"); + } + } + // Handle the "hgt" parameter + else if (0 == strcmp (argv[i], "-hgt")) { + if (argc > i + 1) { + i++; + debug ("screen_set: hgt=\"%s\"\n", argv[i]); - // set the duration... - number = atoi (argv[i]); - if (number > 0) - s->hgt = number; - } else { - sock_send_string (c->sock, "huh? -hgt requires a parameter\n"); - } - } else { - sock_send_string (c->sock, "huh? invalid parameter\n"); - } - } // done checking argv + // set the duration... + number = atoi (argv[i]); + if (number > 0) + s->hgt = number; + } else { + sock_send_string (c->sock, "huh? -hgt requires a parameter\n"); + } + } else { + sock_send_string (c->sock, "huh? invalid parameter\n"); + } + } // done checking argv - return 0; + return 0; } /////////////////////////////////////////////////////////////////////////// @@ -366,63 +366,63 @@ screen_set_func (client * c, int argc, char **argv) int widget_add_func (client * c, int argc, char **argv) { - int err; + int err; - char *type; - char *sid; - char *wid; - char *in = NULL; - screen *s; + char *type; + char *sid; + char *wid; + char *in = NULL; + screen *s; - if (!c->data->ack) - return 1; + if (!c->data->ack) + return 1; - // If there weren't enough parameters... - if (argc < 2) { - sock_send_string (c->sock, "huh? You must specify a screen id\n"); - return 0; - } - if (argc < 3) { - sock_send_string (c->sock, "huh? You must specify a widget id\n"); - return 0; - } - if (argc < 4) { - sock_send_string (c->sock, "huh? You must specify a widget type\n"); - return 0; - } - if (argc > 6) { - sock_send_string (c->sock, "huh? Too many parameters\n"); - return 0; - } + // If there weren't enough parameters... + if (argc < 2) { + sock_send_string (c->sock, "huh? You must specify a screen id\n"); + return 0; + } + if (argc < 3) { + sock_send_string (c->sock, "huh? You must specify a widget id\n"); + return 0; + } + if (argc < 4) { + sock_send_string (c->sock, "huh? You must specify a widget type\n"); + return 0; + } + if (argc > 6) { + sock_send_string (c->sock, "huh? Too many parameters\n"); + return 0; + } - sid = argv[1]; - wid = argv[2]; + sid = argv[1]; + wid = argv[2]; - s = screen_find (c, sid); - if (!s) { - sock_send_string (c->sock, "huh? Invalid screen id\n"); - return 0; - } + s = screen_find (c, sid); + if (!s) { + sock_send_string (c->sock, "huh? Invalid screen id\n"); + return 0; + } - type = argv[3]; + type = argv[3]; - // Check for additional flags... - if (argc > 4) { - // Handle the "-in" flag to place widgets in a container... - if (0 == strcmp (argv[4], "-in")) { - if (argc < 6) { - sock_send_string (c->sock, "huh? Specify a frame to place widget in\n"); - return 0; - } - in = argv[5]; - } - } - // Add the widget and set its type... - err = widget_add (s, wid, type, in, c->sock); - if (err < 0) - fprintf (stderr, "widget_add_func: Error adding widget\n"); + // Check for additional flags... + if (argc > 4) { + // Handle the "-in" flag to place widgets in a container... + if (0 == strcmp (argv[4], "-in")) { + if (argc < 6) { + sock_send_string (c->sock, "huh? Specify a frame to place widget in\n"); + return 0; + } + in = argv[5]; + } + } + // Add the widget and set its type... + err = widget_add (s, wid, type, in, c->sock); + if (err < 0) + fprintf (stderr, "widget_add_func: Error adding widget\n"); - return 0; + return 0; } /////////////////////////////////////////////////////////////////////////// @@ -431,44 +431,44 @@ widget_add_func (client * c, int argc, char **argv) int widget_del_func (client * c, int argc, char **argv) { - int err = 0; + int err = 0; - char *sid; - char *wid; - screen *s; + char *sid; + char *wid; + screen *s; - if (!c->data->ack) - return 1; + if (!c->data->ack) + return 1; - // Check the number of parameters... - if (argc < 2) { - sock_send_string (c->sock, "huh? Specify a screen #id\n"); - return 0; - } - if (argc < 3) { - sock_send_string (c->sock, "huh? Specify a widget #id\n"); - return 0; - } - if (argc > 3) { - sock_send_string (c->sock, "huh? Too many parameters...\n"); - return 0; - } + // Check the number of parameters... + if (argc < 2) { + sock_send_string (c->sock, "huh? Specify a screen #id\n"); + return 0; + } + if (argc < 3) { + sock_send_string (c->sock, "huh? Specify a widget #id\n"); + return 0; + } + if (argc > 3) { + sock_send_string (c->sock, "huh? Too many parameters...\n"); + return 0; + } - sid = argv[1]; - wid = argv[2]; + sid = argv[1]; + wid = argv[2]; - debug ("screen_del: Deleting widget %s.%s\n", sid, wid); + debug ("screen_del: Deleting widget %s.%s\n", sid, wid); - s = screen_find (c, sid); - if (!s) { - sock_send_string (c->sock, "huh? Invalid screen id\n"); - } + s = screen_find (c, sid); + if (!s) { + sock_send_string (c->sock, "huh? Invalid screen id\n"); + } - err = widget_remove (s, wid, c->sock); - if (err < 0) - fprintf (stderr, "widget_del_func: Error removing widget\n"); + err = widget_remove (s, wid, c->sock); + if (err < 0) + fprintf (stderr, "widget_del_func: Error removing widget\n"); - return 0; + return 0; } /////////////////////////////////////////////////////////////////////////// @@ -479,249 +479,249 @@ widget_del_func (client * c, int argc, char **argv) int widget_set_func (client * c, int argc, char **argv) { - int i; + int i; - int x, y; - int left, top, right, bottom; - int length, direction; - int width, height; - int speed; - char *sid, *wid; - screen *s; - widget *w; + int x, y; + int left, top, right, bottom; + int length, direction; + int width, height; + int speed; + char *sid, *wid; + screen *s; + widget *w; - if (!c->data->ack) - return 1; + if (!c->data->ack) + return 1; - // If there weren't enough parameters... - if (argc < 2) { - sock_send_string (c->sock, "huh? You must specify a screen id\n"); - return 0; - } - if (argc < 3) { - sock_send_string (c->sock, "huh? You must specify a widget id\n"); - return 0; - } - if (argc < 4) { - sock_send_string (c->sock, "huh? You must send some widget data\n"); - return 0; - } + // If there weren't enough parameters... + if (argc < 2) { + sock_send_string (c->sock, "huh? You must specify a screen id\n"); + return 0; + } + if (argc < 3) { + sock_send_string (c->sock, "huh? You must specify a widget id\n"); + return 0; + } + if (argc < 4) { + sock_send_string (c->sock, "huh? You must send some widget data\n"); + return 0; + } - sid = argv[1]; - wid = argv[2]; - s = screen_find (c, sid); - if (!s) { - sock_send_string (c->sock, "huh? Invalid screen id\n"); - return 0; - } - w = widget_find (s, wid); - if (!w) { - sock_send_string (c->sock, "huh? Invalid widget id\n"); - // Client Debugging... - { - int i; - fprintf (stderr, "huh? Invalid widget id (%s)\n", wid); - for (i = 0; i < argc; i++) - fprintf (stderr, "%s ", argv[i]); - fprintf (stderr, "\n"); - } - return 0; - } - // FIXME? Shouldn't this be handled in widget.c? - i = 3; - switch (w->type) { - case WID_STRING: // String takes "x y text" - if (argc != i + 3) - sock_send_string (c->sock, "huh? Wrong number of arguments\n"); - else { - if ((!isdigit (argv[i][0])) || (!isdigit (argv[i + 1][0]))) { - sock_send_string (c->sock, "huh? Invalid coordinates\n"); - } else // Set all the data... - { - x = atoi (argv[i]); - y = atoi (argv[i + 1]); - w->x = x; - w->y = y; - if (w->text) - free (w->text); - w->text = strdup (argv[i + 2]); - if (!w->text) { - fprintf (stderr, "widget_set_func: Error allocating string\n"); - return -1; - } - debug ("Widget %s set to %s\n", wid, w->text); - } - } - break; - case WID_HBAR: // Hbar takes "x y length" - if (argc != i + 3) - sock_send_string (c->sock, "huh? Wrong number of arguments\n"); - else { - if ((!isdigit (argv[i][0])) || (!isdigit (argv[i + 1][0]))) { - sock_send_string (c->sock, "huh? Invalid coordinates\n"); - } else { - x = atoi (argv[i]); - y = atoi (argv[i + 1]); - length = atoi (argv[i + 2]); - w->x = x; - w->y = y; - w->length = length; - } - debug ("Widget %s set to %i\n", wid, w->length); - } - break; - case WID_VBAR: // Vbar takes "x y length" - if (argc != i + 3) - sock_send_string (c->sock, "huh? Wrong number of arguments\n"); - else { - if ((!isdigit (argv[i][0])) || (!isdigit (argv[i + 1][0]))) { - sock_send_string (c->sock, "huh? Invalid coordinates\n"); - } else { - x = atoi (argv[i]); - y = atoi (argv[i + 1]); - length = atoi (argv[i + 2]); - w->x = x; - w->y = y; - w->length = length; - } - debug ("Widget %s set to %i\n", wid, w->length); - } - break; - case WID_ICON: // Icon takes "x y binary_data" - if (argc != i + 3) - sock_send_string (c->sock, "huh? Wrong number of arguments\n"); - else { - if ((!isdigit (argv[i][0])) || (!isdigit (argv[i + 1][0]))) { - sock_send_string (c->sock, "huh? Invalid coordinates\n"); - } else { - x = atoi (argv[i]); - y = atoi (argv[i + 1]); - w->x = x; - w->y = y; - // TODO: Parse binary data and copy it to widget's data... - } - } - sock_send_string (c->sock, "huh? Widget type not yet implemented\n"); - break; - case WID_TITLE: // title takes "text" - if (argc != i + 1) - sock_send_string (c->sock, "huh? Wrong number of arguments\n"); - else { - if (w->text) - free (w->text); - w->text = strdup (argv[i]); - if (!w->text) { - fprintf (stderr, "widget_set_func: Error allocating string\n"); - return -1; - } - debug ("Widget %s set to %s\n", wid, w->text); - } - break; - case WID_SCROLLER: // Scroller takes "left top right bottom direction speed text" - if (argc != i + 7) { - sock_send_string (c->sock, "huh? Wrong number of arguments\n"); - } else { - if ((!isdigit (argv[i][0])) || (!isdigit (argv[i + 1][0])) || (!isdigit (argv[i + 2][0])) || (!isdigit (argv[i + 3][0]))) { - sock_send_string (c->sock, "huh? Invalid coordinates\n"); - } else { - left = atoi (argv[i]); - //debug("left: %d\n",left); - top = atoi (argv[i + 1]); - //debug("top: %d\n",top); - right = atoi (argv[i + 2]); - //debug("right: %d\n",right); - bottom = atoi (argv[i + 3]); - //debug("bottom: %d\n",bottom); - direction = (int) (argv[i + 4][0]); - //debug("dir: %c\n",(char)direction); - speed = atoi (argv[i + 5]); - //debug("speed: %d\n",speed); - // Direction must be v or h - if (((char) direction != 'h') && ((char) direction != 'v')) { - sock_send_string (c->sock, "huh? Invalid direction\n"); - } else { - w->left = left; - w->top = top; - w->right = right; - w->bottom = bottom; - w->length = direction; - w->speed = speed; - if (w->text) - free (w->text); - w->text = strdup (argv[i + 6]); - if (!w->text) { - fprintf (stderr, "widget_set_func: Error allocating string\n"); - return -1; - } - debug ("Widget %s set to %s\n", wid, w->text); - } - } - } - break; - case WID_FRAME: // Frame takes "left top right bottom wid hgt direction speed" - if (argc != i + 8) { - sock_send_string (c->sock, "huh? Wrong number of arguments\n"); - } else { - if ((!isdigit (argv[i][0])) || (!isdigit (argv[i + 1][0])) || (!isdigit (argv[i + 2][0])) || (!isdigit (argv[i + 3][0])) || (!isdigit (argv[i + 4][0])) || (!isdigit (argv[i + 5][0]))) { - sock_send_string (c->sock, "huh? Invalid coordinates\n"); - } else { - left = atoi (argv[i]); - //debug("left: %d\n",left); - top = atoi (argv[i + 1]); - //debug("top: %d\n",top); - right = atoi (argv[i + 2]); - //debug("right: %d\n",right); - bottom = atoi (argv[i + 3]); - //debug("bottom: %d\n",bottom); - width = atoi (argv[i + 4]); - //debug("right: %d\n",right); - height = atoi (argv[i + 5]); - //debug("bottom: %d\n",bottom); - direction = (int) (argv[i + 6][0]); - //debug("dir: %c\n",(char)direction); - speed = atoi (argv[i + 7]); - //debug("speed: %d\n",speed); - // Direction must be v or h - if (((char) direction != 'h') && ((char) direction != 'v')) { - sock_send_string (c->sock, "huh? Invalid direction\n"); - } else { - w->left = left; - w->top = top; - w->right = right; - w->bottom = bottom; - w->wid = width; - w->hgt = height; - w->length = direction; - w->speed = speed; - debug ("Widget %s set to (%i,%i)-(%i,%i) %ix%i\n", wid, left, top, right, bottom, width, height); - } - } - } - break; - case WID_NUM: // Num takes "x num" - if (argc != i + 2) - sock_send_string (c->sock, "huh? Wrong number of arguments\n"); - else { - if (!isdigit (argv[i][0])) { - sock_send_string (c->sock, "huh? Invalid coordinates\n"); - } else if (!isdigit (argv[i + 1][0])) { - sock_send_string (c->sock, "huh? Invalid number\n"); - } else { - x = atoi (argv[i]); - y = atoi (argv[i + 1]); - w->x = x; - w->y = y; - } - debug ("Widget %s set to %i\n", wid, w->y); - } - break; - case WID_NONE: - default: - sock_send_string (c->sock, "huh? Widget has no type\n"); - break; - } + sid = argv[1]; + wid = argv[2]; + s = screen_find (c, sid); + if (!s) { + sock_send_string (c->sock, "huh? Invalid screen id\n"); + return 0; + } + w = widget_find (s, wid); + if (!w) { + sock_send_string (c->sock, "huh? Invalid widget id\n"); + // Client Debugging... + { + int i; + fprintf (stderr, "huh? Invalid widget id (%s)\n", wid); + for (i = 0; i < argc; i++) + fprintf (stderr, "%s ", argv[i]); + fprintf (stderr, "\n"); + } + return 0; + } + // FIXME? Shouldn't this be handled in widget.c? + i = 3; + switch (w->type) { + case WID_STRING: // String takes "x y text" + if (argc != i + 3) + sock_send_string (c->sock, "huh? Wrong number of arguments\n"); + else { + if ((!isdigit (argv[i][0])) || (!isdigit (argv[i + 1][0]))) { + sock_send_string (c->sock, "huh? Invalid coordinates\n"); + } else // Set all the data... + { + x = atoi (argv[i]); + y = atoi (argv[i + 1]); + w->x = x; + w->y = y; + if (w->text) + free (w->text); + w->text = strdup (argv[i + 2]); + if (!w->text) { + fprintf (stderr, "widget_set_func: Error allocating string\n"); + return -1; + } + debug ("Widget %s set to %s\n", wid, w->text); + } + } + break; + case WID_HBAR: // Hbar takes "x y length" + if (argc != i + 3) + sock_send_string (c->sock, "huh? Wrong number of arguments\n"); + else { + if ((!isdigit (argv[i][0])) || (!isdigit (argv[i + 1][0]))) { + sock_send_string (c->sock, "huh? Invalid coordinates\n"); + } else { + x = atoi (argv[i]); + y = atoi (argv[i + 1]); + length = atoi (argv[i + 2]); + w->x = x; + w->y = y; + w->length = length; + } + debug ("Widget %s set to %i\n", wid, w->length); + } + break; + case WID_VBAR: // Vbar takes "x y length" + if (argc != i + 3) + sock_send_string (c->sock, "huh? Wrong number of arguments\n"); + else { + if ((!isdigit (argv[i][0])) || (!isdigit (argv[i + 1][0]))) { + sock_send_string (c->sock, "huh? Invalid coordinates\n"); + } else { + x = atoi (argv[i]); + y = atoi (argv[i + 1]); + length = atoi (argv[i + 2]); + w->x = x; + w->y = y; + w->length = length; + } + debug ("Widget %s set to %i\n", wid, w->length); + } + break; + case WID_ICON: // Icon takes "x y binary_data" + if (argc != i + 3) + sock_send_string (c->sock, "huh? Wrong number of arguments\n"); + else { + if ((!isdigit (argv[i][0])) || (!isdigit (argv[i + 1][0]))) { + sock_send_string (c->sock, "huh? Invalid coordinates\n"); + } else { + x = atoi (argv[i]); + y = atoi (argv[i + 1]); + w->x = x; + w->y = y; + // TODO: Parse binary data and copy it to widget's data... + } + } + sock_send_string (c->sock, "huh? Widget type not yet implemented\n"); + break; + case WID_TITLE: // title takes "text" + if (argc != i + 1) + sock_send_string (c->sock, "huh? Wrong number of arguments\n"); + else { + if (w->text) + free (w->text); + w->text = strdup (argv[i]); + if (!w->text) { + fprintf (stderr, "widget_set_func: Error allocating string\n"); + return -1; + } + debug ("Widget %s set to %s\n", wid, w->text); + } + break; + case WID_SCROLLER: // Scroller takes "left top right bottom direction speed text" + if (argc != i + 7) { + sock_send_string (c->sock, "huh? Wrong number of arguments\n"); + } else { + if ((!isdigit (argv[i][0])) || (!isdigit (argv[i + 1][0])) || (!isdigit (argv[i + 2][0])) || (!isdigit (argv[i + 3][0]))) { + sock_send_string (c->sock, "huh? Invalid coordinates\n"); + } else { + left = atoi (argv[i]); + //debug("left: %d\n",left); + top = atoi (argv[i + 1]); + //debug("top: %d\n",top); + right = atoi (argv[i + 2]); + //debug("right: %d\n",right); + bottom = atoi (argv[i + 3]); + //debug("bottom: %d\n",bottom); + direction = (int) (argv[i + 4][0]); + //debug("dir: %c\n",(char)direction); + speed = atoi (argv[i + 5]); + //debug("speed: %d\n",speed); + // Direction must be v or h + if (((char) direction != 'h') && ((char) direction != 'v')) { + sock_send_string (c->sock, "huh? Invalid direction\n"); + } else { + w->left = left; + w->top = top; + w->right = right; + w->bottom = bottom; + w->length = direction; + w->speed = speed; + if (w->text) + free (w->text); + w->text = strdup (argv[i + 6]); + if (!w->text) { + fprintf (stderr, "widget_set_func: Error allocating string\n"); + return -1; + } + debug ("Widget %s set to %s\n", wid, w->text); + } + } + } + break; + case WID_FRAME: // Frame takes "left top right bottom wid hgt direction speed" + if (argc != i + 8) { + sock_send_string (c->sock, "huh? Wrong number of arguments\n"); + } else { + if ((!isdigit (argv[i][0])) || (!isdigit (argv[i + 1][0])) || (!isdigit (argv[i + 2][0])) || (!isdigit (argv[i + 3][0])) || (!isdigit (argv[i + 4][0])) || (!isdigit (argv[i + 5][0]))) { + sock_send_string (c->sock, "huh? Invalid coordinates\n"); + } else { + left = atoi (argv[i]); + //debug("left: %d\n",left); + top = atoi (argv[i + 1]); + //debug("top: %d\n",top); + right = atoi (argv[i + 2]); + //debug("right: %d\n",right); + bottom = atoi (argv[i + 3]); + //debug("bottom: %d\n",bottom); + width = atoi (argv[i + 4]); + //debug("right: %d\n",right); + height = atoi (argv[i + 5]); + //debug("bottom: %d\n",bottom); + direction = (int) (argv[i + 6][0]); + //debug("dir: %c\n",(char)direction); + speed = atoi (argv[i + 7]); + //debug("speed: %d\n",speed); + // Direction must be v or h + if (((char) direction != 'h') && ((char) direction != 'v')) { + sock_send_string (c->sock, "huh? Invalid direction\n"); + } else { + w->left = left; + w->top = top; + w->right = right; + w->bottom = bottom; + w->wid = width; + w->hgt = height; + w->length = direction; + w->speed = speed; + debug ("Widget %s set to (%i,%i)-(%i,%i) %ix%i\n", wid, left, top, right, bottom, width, height); + } + } + } + break; + case WID_NUM: // Num takes "x num" + if (argc != i + 2) + sock_send_string (c->sock, "huh? Wrong number of arguments\n"); + else { + if (!isdigit (argv[i][0])) { + sock_send_string (c->sock, "huh? Invalid coordinates\n"); + } else if (!isdigit (argv[i + 1][0])) { + sock_send_string (c->sock, "huh? Invalid number\n"); + } else { + x = atoi (argv[i]); + y = atoi (argv[i + 1]); + w->x = x; + w->y = y; + } + debug ("Widget %s set to %i\n", wid, w->y); + } + break; + case WID_NONE: + default: + sock_send_string (c->sock, "huh? Widget has no type\n"); + break; + } - return 0; + return 0; } /////////////////////////////////////////////////////////////////////////// @@ -731,12 +731,12 @@ int menu_add_func (client * c, int argc, char **argv) { - if (!c->data->ack) - return 1; + if (!c->data->ack) + return 1; - sock_send_string (c->sock, "huh? Not implemented yet.\n"); + sock_send_string (c->sock, "huh? Not implemented yet.\n"); - return 0; + return 0; } /////////////////////////////////////////////////////////////////////////// @@ -746,12 +746,12 @@ int menu_del_func (client * c, int argc, char **argv) { - if (!c->data->ack) - return 1; + if (!c->data->ack) + return 1; - sock_send_string (c->sock, "huh? Not implemented yet.\n"); + sock_send_string (c->sock, "huh? Not implemented yet.\n"); - return 0; + return 0; } /////////////////////////////////////////////////////////////////////////// @@ -763,12 +763,12 @@ int menu_set_func (client * c, int argc, char **argv) { - if (!c->data->ack) - return 1; + if (!c->data->ack) + return 1; - sock_send_string (c->sock, "huh? Not implemented yet.\n"); + sock_send_string (c->sock, "huh? Not implemented yet.\n"); - return 0; + return 0; } /////////////////////////////////////////////////////////////////////////// @@ -778,12 +778,12 @@ int menu_item_add_func (client * c, int argc, char **argv) { - if (!c->data->ack) - return 1; + if (!c->data->ack) + return 1; - sock_send_string (c->sock, "huh? Not implemented yet.\n"); + sock_send_string (c->sock, "huh? Not implemented yet.\n"); - return 0; + return 0; } /////////////////////////////////////////////////////////////////////////// @@ -793,12 +793,12 @@ int menu_item_del_func (client * c, int argc, char **argv) { - if (!c->data->ack) - return 1; + if (!c->data->ack) + return 1; - sock_send_string (c->sock, "huh? Not implemented yet.\n"); + sock_send_string (c->sock, "huh? Not implemented yet.\n"); - return 0; + return 0; } /////////////////////////////////////////////////////////////////////////// @@ -810,12 +810,12 @@ int menu_item_set_func (client * c, int argc, char **argv) { - if (!c->data->ack) - return 1; + if (!c->data->ack) + return 1; - sock_send_string (c->sock, "huh? Not implemented yet.\n"); + sock_send_string (c->sock, "huh? Not implemented yet.\n"); - return 0; + return 0; } /////////////////////////////////////////////////////////////////////////// @@ -824,48 +824,48 @@ menu_item_set_func (client * c, int argc, char **argv) int backlight_func (client * c, int argc, char **argv) { - if (!c->data->ack) - return 1; + if (!c->data->ack) + return 1; - // Check the number of parameters... - if (argc < 2) { - sock_send_string (c->sock, "huh? Specify a screen #id\n"); - return 0; - } + // Check the number of parameters... + if (argc < 2) { + sock_send_string (c->sock, "huh? Specify a screen #id\n"); + return 0; + } - if (argc > 2) { - sock_send_string (c->sock, "huh? Too many parameters...\n"); - return 0; - } + if (argc > 2) { + sock_send_string (c->sock, "huh? Too many parameters...\n"); + return 0; + } - debug ("backlight(%s)\n", argv[1]); + debug ("backlight(%s)\n", argv[1]); - switch (backlight) { - case BACKLIGHT_OPEN: - if (0 == strcmp ("on", argv[1])) { - backlight_state = BACKLIGHT_ON; - } - if (0 == strcmp ("off", argv[1])) { - backlight_state = BACKLIGHT_OFF; - } - if (0 == strcmp ("toggle", argv[1])) { - if (backlight_state == BACKLIGHT_ON) - backlight_state = BACKLIGHT_OFF; - else if (backlight_state == BACKLIGHT_OFF) - backlight_state = BACKLIGHT_ON; - } - if (0 == strcmp ("blink", argv[1])) { - backlight_state |= BACKLIGHT_BLINK; - } - if (0 == strcmp ("flash", argv[1])) { - backlight_state |= BACKLIGHT_FLASH; - } - break; - case BACKLIGHT_VIS: - break; - } + switch (backlight) { + case BACKLIGHT_OPEN: + if (0 == strcmp ("on", argv[1])) { + backlight_state = BACKLIGHT_ON; + } + if (0 == strcmp ("off", argv[1])) { + backlight_state = BACKLIGHT_OFF; + } + if (0 == strcmp ("toggle", argv[1])) { + if (backlight_state == BACKLIGHT_ON) + backlight_state = BACKLIGHT_OFF; + else if (backlight_state == BACKLIGHT_OFF) + backlight_state = BACKLIGHT_ON; + } + if (0 == strcmp ("blink", argv[1])) { + backlight_state |= BACKLIGHT_BLINK; + } + if (0 == strcmp ("flash", argv[1])) { + backlight_state |= BACKLIGHT_FLASH; + } + break; + case BACKLIGHT_VIS: + break; + } - return 0; + return 0; } @@ -874,15 +874,15 @@ backlight_func (client * c, int argc, char **argv) int output_func (client * c, int argc, char **argv) { - if (argc != 2) { - sock_send_string (c->sock, "huh? Too many parameters...\n"); - } else { - if (0 == strcmp (argv[1], "on")) - output_state = 1; - else - output_state = 0; - } - return 0; + if (argc != 2) { + sock_send_string (c->sock, "huh? Too many parameters...\n"); + } else { + if (0 == strcmp (argv[1], "on")) + output_state = 1; + else + output_state = 0; + } + return 0; } /////////////////////////////////////////////////////////////////////////// diff --git a/server/client_functions.h b/server/client_functions.h index 2fcf76f..814559b 100644 --- a/server/client_functions.h +++ b/server/client_functions.h @@ -7,8 +7,8 @@ */ typedef struct client_function { - char *keyword; - int (*function) (client * c, int argc, char **argv); + char *keyword; + int (*function) (client * c, int argc, char **argv); } client_function; // FIXME? Do these really need to be visible from other sources? diff --git a/server/client_menu.h b/server/client_menu.h index 2c23853..4a74f0a 100644 --- a/server/client_menu.h +++ b/server/client_menu.h @@ -9,16 +9,16 @@ */ typedef struct client_menu { - char id[]; - LL *items; + char id[]; + LL *items; } client_menu; typedef struct client_menu_item { - char id[]; - int type; // Title, function, submenu, slider, checkbox, etc... - int value; // Holds stuff like "true", 43, etc... - char text[]; // Text to display here... - char child[]; // For the "submenu" type + char id[]; + int type; // Title, function, submenu, slider, checkbox, etc... + int value; // Holds stuff like "true", 43, etc... + char text[]; // Text to display here... + char child[]; // For the "submenu" type } client_menu; #endif diff --git a/server/clients.c b/server/clients.c index d5c2e1b..c777f07 100644 --- a/server/clients.c +++ b/server/clients.c @@ -26,120 +26,120 @@ LL *clients; int client_init () { - debug ("client_init()\n"); + debug ("client_init()\n"); - clients = LL_new (); - if (!clients) { - fprintf (stderr, "client_init: Unable to create client list\n"); - return -1; - } + clients = LL_new (); + if (!clients) { + fprintf (stderr, "client_init: Unable to create client list\n"); + return -1; + } - return 0; + return 0; } int client_shutdown () { - // TODO: Close all connections first... - client *c; + // TODO: Close all connections first... + client *c; - debug ("client_shutdown()\n"); + debug ("client_shutdown()\n"); - // Free all client structures... - // Note that the regular list loop doesn't work here, because - // client_destroy() calls LL_Remove() - for (c = LL_Pop (clients); c; c = LL_Pop (clients)) { - debug ("client_shutdown: ...\n"); - if (c) { - debug ("client_shutdown: ... %i ...\n", c->sock); - if (0 != client_destroy (c)) { - fprintf (stderr, "client_shutdown: Error freeing client\n"); - } else { - debug ("client_shutdown: Freed client...\n"); - } - } else { - debug ("client_shutdown: No client!\n"); - } - } + // Free all client structures... + // Note that the regular list loop doesn't work here, because + // client_destroy() calls LL_Remove() + for (c = LL_Pop (clients); c; c = LL_Pop (clients)) { + debug ("client_shutdown: ...\n"); + if (c) { + debug ("client_shutdown: ... %i ...\n", c->sock); + if (0 != client_destroy (c)) { + fprintf (stderr, "client_shutdown: Error freeing client\n"); + } else { + debug ("client_shutdown: Freed client...\n"); + } + } else { + debug ("client_shutdown: No client!\n"); + } + } - // Then, free the list... - LL_Destroy (clients); + // Then, free the list... + LL_Destroy (clients); - debug ("client_shutdown: done\n"); + debug ("client_shutdown: done\n"); - return 0; + return 0; } // Create and destroy clients.... client * client_create (int sock) { - client *c; + client *c; - debug ("client_create(%i)\n", sock); + debug ("client_create(%i)\n", sock); - // Allocate new client... - c = malloc (sizeof (client)); - if (!c) { - fprintf (stderr, "client_create: error allocating new client\n"); - return NULL; - } - // Init struct members - c->sock = 0; - c->data = NULL; - c->messages = NULL; + // Allocate new client... + c = malloc (sizeof (client)); + if (!c) { + fprintf (stderr, "client_create: error allocating new client\n"); + return NULL; + } + // Init struct members + c->sock = 0; + c->data = NULL; + c->messages = NULL; - c->sock = sock; + c->sock = sock; - // Set up message list... - c->messages = LL_new (); - if (!c->messages) { - fprintf (stderr, "client_create: error allocating message list\n"); - free (c); - return NULL; - } - // TODO: allocate and init client data... - c->data = malloc (sizeof (client_data)); - if (!c->data) { - fprintf (stderr, "client_create: error allocating client data\n"); - free (c->messages); - free (c); - return NULL; - } else if (client_data_init (c->data) < 0) { - return NULL; - } - // TODO: Check for errors while adding the client to the list? - LL_Push (clients, (void *) c); + // Set up message list... + c->messages = LL_new (); + if (!c->messages) { + fprintf (stderr, "client_create: error allocating message list\n"); + free (c); + return NULL; + } + // TODO: allocate and init client data... + c->data = malloc (sizeof (client_data)); + if (!c->data) { + fprintf (stderr, "client_create: error allocating client data\n"); + free (c->messages); + free (c); + return NULL; + } else if (client_data_init (c->data) < 0) { + return NULL; + } + // TODO: Check for errors while adding the client to the list? + LL_Push (clients, (void *) c); - return c; + return c; } int client_destroy (client * c) { - // TODO: Close the socket connection here? - int err; + // TODO: Close the socket connection here? + int err; - char *str; + char *str; - debug ("client_destroy()\n"); + debug ("client_destroy()\n"); - if (!c) - return -1; + if (!c) + return -1; - // Eat the rest of the incoming requests... - debug ("client_destroy: get_messages\n"); - while ((str = client_get_message (c))) { - if (str) { - debug ("client_destroy: kill message %s\n", str); - free (str); - } - } + // Eat the rest of the incoming requests... + debug ("client_destroy: get_messages\n"); + while ((str = client_get_message (c))) { + if (str) { + debug ("client_destroy: kill message %s\n", str); + free (str); + } + } - err = LL_Destroy (c->messages); + err = LL_Destroy (c->messages); - // Free client's other data - client_data_destroy (c->data); + // Free client's other data + client_data_destroy (c->data); /* // FIXME? Should the connection get closed here or elsewhere? @@ -147,52 +147,52 @@ client_destroy (client * c) c->sock = 0; */ - // Remove the client from the clients list... - LL_Remove (clients, c); + // Remove the client from the clients list... + LL_Remove (clients, c); - free (c); + free (c); - return 0; + return 0; } // Add and remove messages from the client's queue... int client_add_message (client * c, char *message) { - int err = 0; - char *dup; - char *str, *cp; - char delimiters[] = "\n\r\0"; + int err = 0; + char *dup; + char *str, *cp; + char delimiters[] = "\n\r\0"; // int len; - //debug("client_add_message(%s)\n", message); + //debug("client_add_message(%s)\n", message); - if (!c) - return -1; - if (!message) - return -1; + if (!c) + return -1; + if (!message) + return -1; // len = strlen(message); // if(len < 1) return 0; - // Copy the string to avoid overwriting the original... - dup = strdup (message); - if (!dup) { - fprintf (stderr, "client_add_message: Error allocating new string\n"); - return -1; - } - // Now split the string into lines and enqueue each one... - for (str = strtok (dup, delimiters); str; str = strtok (NULL, delimiters)) { - cp = strdup (str); - debug ("client_add_message: %s\n", cp); - err += LL_Enqueue (c->messages, (void *) cp); - } + // Copy the string to avoid overwriting the original... + dup = strdup (message); + if (!dup) { + fprintf (stderr, "client_add_message: Error allocating new string\n"); + return -1; + } + // Now split the string into lines and enqueue each one... + for (str = strtok (dup, delimiters); str; str = strtok (NULL, delimiters)) { + cp = strdup (str); + debug ("client_add_message: %s\n", cp); + err += LL_Enqueue (c->messages, (void *) cp); + } - //debug("client_add_message(%s): %i errors\n", message, err); - free (dup); // Fixed memory leak... + //debug("client_add_message(%s): %i errors\n", message, err); + free (dup); // Fixed memory leak... - // Err is the number of errors encountered... - return err; + // Err is the number of errors encountered... + return err; } @@ -200,54 +200,54 @@ client_add_message (client * c, char *message) char * client_get_message (client * c) { - char *str; + char *str; - //debug("client_get_message()\n"); + //debug("client_get_message()\n"); - if (!c) - return NULL; + if (!c) + return NULL; - str = (char *) LL_Dequeue (c->messages); + str = (char *) LL_Dequeue (c->messages); - //debug("client_get_message: \"%s\"\n", str); + //debug("client_get_message: \"%s\"\n", str); - return str; + return str; } // Get and set the client's data... int client_set (client * c, void *data) { - // You know, I really doubt this function will be useful... - return 0; + // You know, I really doubt this function will be useful... + return 0; } void * client_get (client * c) { - // But this one might be handy... + // But this one might be handy... - return NULL; + return NULL; } client * client_find_sock (int sock) { - client *c; + client *c; // debug("client_find_sock(%i)\n", sock); - LL_Rewind (clients); - do { - c = (client *) LL_Get (clients); + LL_Rewind (clients); + do { + c = (client *) LL_Get (clients); // debug("client_find_sock: ... %i ...\n", c->sock); - if (c->sock == sock) { + if (c->sock == sock) { // debug("client_find_sock: ..! %i !..\n", c->sock); - return c; - } - } while (LL_Next (clients) == 0); + return c; + } + } while (LL_Next (clients) == 0); - debug ("client_find_sock: failed\n"); + debug ("client_find_sock: failed\n"); - return NULL; + return NULL; } diff --git a/server/clients.h b/server/clients.h index de3e260..9b2d15d 100644 --- a/server/clients.h +++ b/server/clients.h @@ -5,9 +5,9 @@ #include "../shared/LL.h" typedef struct client { - int sock; - LL *messages; - client_data *data; + int sock; + LL *messages; + client_data *data; } client; diff --git a/server/drivers/CFontz.c b/server/drivers/CFontz.c index 58d3719..343e888 100644 --- a/server/drivers/CFontz.c +++ b/server/drivers/CFontz.c @@ -16,10 +16,10 @@ static int custom = 0; typedef enum { - hbar = 1, - vbar = 2, - bign = 4, - beat = 8 + hbar = 1, + vbar = 2, + bign = 4, + beat = 8 } custom_type; static int fd; @@ -39,161 +39,161 @@ lcd_logical_driver *CFontz; int CFontz_init (lcd_logical_driver * driver, char *args) { - char *argv[64]; - int argc; - struct termios portset; - int i; - int tmp; - int reboot = 0; + char *argv[64]; + int argc; + struct termios portset; + int i; + int tmp; + int reboot = 0; - int contrast = 140; - char device[256] = "/dev/lcd"; - int speed = B9600; + int contrast = 140; + char device[256] = "/dev/lcd"; + int speed = B9600; - CFontz = driver; + CFontz = driver; - //debug("CFontz_init: Args(all): %s\n", args); + //debug("CFontz_init: Args(all): %s\n", args); - argc = get_args (argv, args, 64); + argc = get_args (argv, args, 64); - /* - for(i=0; i argc) { - fprintf (stderr, "CFontz_init: %s requires an argument\n", argv[i]); - return -1; - } - strcpy (device, argv[++i]); - } else if (0 == strcmp (argv[i], "-c") || 0 == strcmp (argv[i], "--contrast")) { - if (i + 1 > argc) { - fprintf (stderr, "CFontz_init: %s requires an argument\n", argv[i]); - return -1; - } - tmp = atoi (argv[++i]); - if ((tmp < 0) || (tmp > 255)) { - fprintf (stderr, "CFontz_init: %s argument must between 0 and 255. Using default value.\n", argv[i]); - } else - contrast = tmp; - } else if (0 == strcmp (argv[i], "-b") || 0 == strcmp (argv[i], "--brightness")) { - if (i + 1 > argc) { - fprintf (stderr, "CFontz_init: %s requires an argument\n", argv[i]); - return -1; - } - tmp = atoi (argv[++i]); - if ((tmp < 0) || (tmp > 255)) { - fprintf (stderr, "CFontz_init: %s argument must between 0 and 255. Using default value.\n", argv[i]); - } else - backlight_brightness = tmp; - } else if (0 == strcmp (argv[i], "-o") || 0 == strcmp (argv[i], "--off-bright")) { - if (i + 1 > argc) { - fprintf (stderr, "CFontz_init: %s requires an argument\n", argv[i]); - return -1; - } - tmp = atoi (argv[++i]); - if ((tmp < 0) || (tmp > 255)) { - fprintf (stderr, "CFontz_init: %s argument must between 0 and 255. Using default value.\n", argv[i]); - } else - backlight_off_brightness = tmp; - } else if (0 == strcmp (argv[i], "-s") || 0 == strcmp (argv[i], "--speed")) { - if (i + 1 > argc) { - fprintf (stderr, "CFontz_init: %s requires an argument\n", argv[i]); - return -1; - } - tmp = atoi (argv[++i]); - if (tmp == 1200) - speed = B1200; - else if (tmp == 2400) - speed = B2400; - else if (tmp == 9600) - speed = B9600; - else if (tmp == 19200) - speed = B19200; - else { - fprintf (stderr, "CFontz_init: %s argument must be 1200, 2400, or 9600. Using default value.\n", argv[i]); - } - } else if (0 == strcmp (argv[i], "-h") || 0 == strcmp (argv[i], "--help")) { - printf ("LCDproc CrystalFontz LCD driver\n" "\t-d\t--device\tSelect the output device to use [/dev/lcd]\n" "\t-t\t--type\t\tSelect the LCD type (size) [20x4]\n" "\t-c\t--contrast\tSet the initial contrast [140]\n" "\t-b\t--brightness\tSet the initial brightness [255]\n" "\t-o\t--off-bright\tSet the initial brightness [0]\n" "\t-s\t--speed\t\tSet the communication speed [9600]\n" "\t-r\t--reboot\tReinitialize the LCD's BIOS\n" "\t-h\t--help\t\tShow this help information\n"); - return -1; - } else if (0 == strcmp (argv[i], "-r") || 0 == strcmp (argv[i], "--reboot")) { - printf ("LCDd: rebooting CrystalFontz LCD...\n"); - reboot = 1; - } else { - printf ("Invalid parameter: %s\n", argv[i]); - } + for (i = 0; i < argc; i++) { + //printf("Arg(%i): %s\n", i, argv[i]); + if (0 == strcmp (argv[i], "-d") || 0 == strcmp (argv[i], "--device")) { + if (i + 1 > argc) { + fprintf (stderr, "CFontz_init: %s requires an argument\n", argv[i]); + return -1; + } + strcpy (device, argv[++i]); + } else if (0 == strcmp (argv[i], "-c") || 0 == strcmp (argv[i], "--contrast")) { + if (i + 1 > argc) { + fprintf (stderr, "CFontz_init: %s requires an argument\n", argv[i]); + return -1; + } + tmp = atoi (argv[++i]); + if ((tmp < 0) || (tmp > 255)) { + fprintf (stderr, "CFontz_init: %s argument must between 0 and 255. Using default value.\n", argv[i]); + } else + contrast = tmp; + } else if (0 == strcmp (argv[i], "-b") || 0 == strcmp (argv[i], "--brightness")) { + if (i + 1 > argc) { + fprintf (stderr, "CFontz_init: %s requires an argument\n", argv[i]); + return -1; + } + tmp = atoi (argv[++i]); + if ((tmp < 0) || (tmp > 255)) { + fprintf (stderr, "CFontz_init: %s argument must between 0 and 255. Using default value.\n", argv[i]); + } else + backlight_brightness = tmp; + } else if (0 == strcmp (argv[i], "-o") || 0 == strcmp (argv[i], "--off-bright")) { + if (i + 1 > argc) { + fprintf (stderr, "CFontz_init: %s requires an argument\n", argv[i]); + return -1; + } + tmp = atoi (argv[++i]); + if ((tmp < 0) || (tmp > 255)) { + fprintf (stderr, "CFontz_init: %s argument must between 0 and 255. Using default value.\n", argv[i]); + } else + backlight_off_brightness = tmp; + } else if (0 == strcmp (argv[i], "-s") || 0 == strcmp (argv[i], "--speed")) { + if (i + 1 > argc) { + fprintf (stderr, "CFontz_init: %s requires an argument\n", argv[i]); + return -1; + } + tmp = atoi (argv[++i]); + if (tmp == 1200) + speed = B1200; + else if (tmp == 2400) + speed = B2400; + else if (tmp == 9600) + speed = B9600; + else if (tmp == 19200) + speed = B19200; + else { + fprintf (stderr, "CFontz_init: %s argument must be 1200, 2400, or 9600. Using default value.\n", argv[i]); + } + } else if (0 == strcmp (argv[i], "-h") || 0 == strcmp (argv[i], "--help")) { + printf ("LCDproc CrystalFontz LCD driver\n" "\t-d\t--device\tSelect the output device to use [/dev/lcd]\n" "\t-t\t--type\t\tSelect the LCD type (size) [20x4]\n" "\t-c\t--contrast\tSet the initial contrast [140]\n" "\t-b\t--brightness\tSet the initial brightness [255]\n" "\t-o\t--off-bright\tSet the initial brightness [0]\n" "\t-s\t--speed\t\tSet the communication speed [9600]\n" "\t-r\t--reboot\tReinitialize the LCD's BIOS\n" "\t-h\t--help\t\tShow this help information\n"); + return -1; + } else if (0 == strcmp (argv[i], "-r") || 0 == strcmp (argv[i], "--reboot")) { + printf ("LCDd: rebooting CrystalFontz LCD...\n"); + reboot = 1; + } else { + printf ("Invalid parameter: %s\n", argv[i]); + } - } + } - // Set up io port correctly, and open it... - fd = open (device, O_RDWR | O_NOCTTY | O_NDELAY); - if (fd == -1) { - fprintf (stderr, "CFontz_init: failed (%s)\n", strerror (errno)); - return -1; - } - //else fprintf(stderr, "CFontz_init: opened device %s\n", device); - tcgetattr (fd, &portset); - // This is necessary in Linux, but does not exist in irix. + // Set up io port correctly, and open it... + fd = open (device, O_RDWR | O_NOCTTY | O_NDELAY); + if (fd == -1) { + fprintf (stderr, "CFontz_init: failed (%s)\n", strerror (errno)); + return -1; + } + //else fprintf(stderr, "CFontz_init: opened device %s\n", device); + tcgetattr (fd, &portset); + // This is necessary in Linux, but does not exist in irix. #ifndef IRIX - cfmakeraw (&portset); + cfmakeraw (&portset); #endif - cfsetospeed (&portset, speed); - cfsetispeed (&portset, speed); - tcsetattr (fd, TCSANOW, &portset); + cfsetospeed (&portset, speed); + cfsetispeed (&portset, speed); + tcsetattr (fd, TCSANOW, &portset); - // Set display-specific stuff.. - if (reboot) { - CFontz_reboot (); - sleep (4); - reboot = 0; - } - sleep (1); - CFontz_hidecursor (); - CFontz_linewrap (1); - CFontz_autoscroll (0); - CFontz_backlight (backlight_brightness); + // Set display-specific stuff.. + if (reboot) { + CFontz_reboot (); + sleep (4); + reboot = 0; + } + sleep (1); + CFontz_hidecursor (); + CFontz_linewrap (1); + CFontz_autoscroll (0); + CFontz_backlight (backlight_brightness); - if (!driver->framebuf) { - fprintf (stderr, "CFontz_init: No frame buffer.\n"); - driver->close (); - return -1; - } - // Set the functions the driver supports... + if (!driver->framebuf) { + fprintf (stderr, "CFontz_init: No frame buffer.\n"); + driver->close (); + return -1; + } + // Set the functions the driver supports... - driver->clear = (void *) -1; - driver->string = (void *) -1; + driver->clear = (void *) -1; + driver->string = (void *) -1; // driver->chr = CFontz_chr; - driver->chr = CFontz_chr; - driver->vbar = CFontz_vbar; - driver->init_vbar = CFontz_init_vbar; - driver->hbar = CFontz_hbar; - driver->init_hbar = CFontz_init_hbar; - driver->num = CFontz_num; - driver->init_num = CFontz_init_num; + driver->chr = CFontz_chr; + driver->vbar = CFontz_vbar; + driver->init_vbar = CFontz_init_vbar; + driver->hbar = CFontz_hbar; + driver->init_hbar = CFontz_init_hbar; + driver->num = CFontz_num; + driver->init_num = CFontz_init_num; - driver->init = CFontz_init; - driver->close = CFontz_close; - driver->flush = CFontz_flush; - driver->flush_box = CFontz_flush_box; - driver->contrast = CFontz_contrast; - driver->backlight = CFontz_backlight; - driver->set_char = CFontz_set_char; - driver->icon = CFontz_icon; - driver->draw_frame = CFontz_draw_frame; + driver->init = CFontz_init; + driver->close = CFontz_close; + driver->flush = CFontz_flush; + driver->flush_box = CFontz_flush_box; + driver->contrast = CFontz_contrast; + driver->backlight = CFontz_backlight; + driver->set_char = CFontz_set_char; + driver->icon = CFontz_icon; + driver->draw_frame = CFontz_draw_frame; - CFontz_contrast (contrast); + CFontz_contrast (contrast); - lcd.cellwid = 6; - lcd.cellhgt = 8; + lcd.cellwid = 6; + lcd.cellhgt = 8; - debug ("CFontz: foo!\n"); + debug ("CFontz: foo!\n"); - return fd; + return fd; } ///////////////////////////////////////////////////////////////// @@ -202,34 +202,34 @@ CFontz_init (lcd_logical_driver * driver, char *args) void CFontz_close () { - close (fd); + close (fd); - if (CFontz->framebuf) - free (CFontz->framebuf); + if (CFontz->framebuf) + free (CFontz->framebuf); - CFontz->framebuf = NULL; + CFontz->framebuf = NULL; } void CFontz_flush () { - CFontz_draw_frame (lcd.framebuf); + CFontz_draw_frame (lcd.framebuf); } void CFontz_flush_box (int lft, int top, int rgt, int bot) { - int y; - char out[LCD_MAX_WIDTH]; + int y; + char out[LCD_MAX_WIDTH]; // printf("Flush (%i,%i)-(%i,%i)\n", lft, top, rgt, bot); - for (y = top; y <= bot; y++) { - sprintf (out, "%c%c%c", 17, lft, y); - write (fd, out, 4); - write (fd, lcd.framebuf + (y * lcd.wid) + lft, rgt - lft + 1); + for (y = top; y <= bot; y++) { + sprintf (out, "%c%c%c", 17, lft, y); + write (fd, out, 4); + write (fd, lcd.framebuf + (y * lcd.wid) + lft, rgt - lft + 1); - } + } } @@ -240,12 +240,12 @@ CFontz_flush_box (int lft, int top, int rgt, int bot) void CFontz_chr (int x, int y, char c) { - y--; - x--; + y--; + x--; - if (c < 32 && c >= 0) - c += 128; - lcd.framebuf[(y * lcd.wid) + x] = c; + if (c < 32 && c >= 0) + c += 128; + lcd.framebuf[(y * lcd.wid) + x] = c; } ///////////////////////////////////////////////////////////////// @@ -254,18 +254,18 @@ CFontz_chr (int x, int y, char c) int CFontz_contrast (int contrast) { - int realcontrast; - char out[4]; - static int status = 140; + int realcontrast; + char out[4]; + static int status = 140; - if (contrast > 0) { - status = contrast; - realcontrast = (((int) (status)) * 100) / 255; - sprintf (out, "%c%c", 15, realcontrast); - write (fd, out, 3); - } + if (contrast > 0) { + status = contrast; + realcontrast = (((int) (status)) * 100) / 255; + sprintf (out, "%c%c", 15, realcontrast); + write (fd, out, 3); + } - return status; + return status; } ///////////////////////////////////////////////////////////////// @@ -275,14 +275,14 @@ CFontz_contrast (int contrast) void CFontz_backlight (int on) { - char out[4]; - if (on) { - sprintf (out, "%c%c", 14, (unsigned char) (on * 100 / 255)); - //sprintf(out, "%c%c", 14, 100); - } else { - sprintf (out, "%c%c", 14, 0); - } - write (fd, out, 3); + char out[4]; + if (on) { + sprintf (out, "%c%c", 14, (unsigned char) (on * 100 / 255)); + //sprintf(out, "%c%c", 14, 100); + } else { + sprintf (out, "%c%c", 14, 0); + } + write (fd, out, 3); } ///////////////////////////////////////////////////////////////// @@ -291,12 +291,12 @@ CFontz_backlight (int on) static void CFontz_linewrap (int on) { - char out[4]; - if (on) - sprintf (out, "%c", 23); - else - sprintf (out, "%c", 24); - write (fd, out, 1); + char out[4]; + if (on) + sprintf (out, "%c", 23); + else + sprintf (out, "%c", 24); + write (fd, out, 1); } ///////////////////////////////////////////////////////////////// @@ -305,12 +305,12 @@ CFontz_linewrap (int on) static void CFontz_autoscroll (int on) { - char out[4]; - if (on) - sprintf (out, "%c", 19); - else - sprintf (out, "%c", 20); - write (fd, out, 1); + char out[4]; + if (on) + sprintf (out, "%c", 19); + else + sprintf (out, "%c", 20); + write (fd, out, 1); } ///////////////////////////////////////////////////////////////// @@ -319,9 +319,9 @@ CFontz_autoscroll (int on) static void CFontz_hidecursor () { - char out[4]; - sprintf (out, "%c", 4); - write (fd, out, 1); + char out[4]; + sprintf (out, "%c", 4); + write (fd, out, 1); } ///////////////////////////////////////////////////////////////// @@ -330,9 +330,9 @@ CFontz_hidecursor () static void CFontz_reboot () { - char out[4]; - sprintf (out, "%c", 26); - write (fd, out, 1); + char out[4]; + sprintf (out, "%c", 26); + write (fd, out, 1); } ///////////////////////////////////////////////////////////////// @@ -341,87 +341,87 @@ CFontz_reboot () void CFontz_init_vbar () { - char a[] = { - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 1, 1, 1, 1, 1, - }; - char b[] = { - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 1, 1, 1, 1, 1, - 0, 1, 1, 1, 1, 1, - }; - char c[] = { - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 1, 1, 1, 1, 1, - 0, 1, 1, 1, 1, 1, - 0, 1, 1, 1, 1, 1, - }; - char d[] = { - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 1, 1, 1, 1, 1, - 0, 1, 1, 1, 1, 1, - 0, 1, 1, 1, 1, 1, - 0, 1, 1, 1, 1, 1, - }; - char e[] = { - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 1, 1, 1, 1, 1, - 0, 1, 1, 1, 1, 1, - 0, 1, 1, 1, 1, 1, - 0, 1, 1, 1, 1, 1, - 0, 1, 1, 1, 1, 1, - }; - char f[] = { - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 1, 1, 1, 1, 1, - 0, 1, 1, 1, 1, 1, - 0, 1, 1, 1, 1, 1, - 0, 1, 1, 1, 1, 1, - 0, 1, 1, 1, 1, 1, - 0, 1, 1, 1, 1, 1, - }; - char g[] = { - 0, 0, 0, 0, 0, 0, - 0, 1, 1, 1, 1, 1, - 0, 1, 1, 1, 1, 1, - 0, 1, 1, 1, 1, 1, - 0, 1, 1, 1, 1, 1, - 0, 1, 1, 1, 1, 1, - 0, 1, 1, 1, 1, 1, - 0, 1, 1, 1, 1, 1, - }; + char a[] = { + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 1, 1, + }; + char b[] = { + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 1, 1, + 0, 1, 1, 1, 1, 1, + }; + char c[] = { + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 1, 1, + 0, 1, 1, 1, 1, 1, + 0, 1, 1, 1, 1, 1, + }; + char d[] = { + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 1, 1, + 0, 1, 1, 1, 1, 1, + 0, 1, 1, 1, 1, 1, + 0, 1, 1, 1, 1, 1, + }; + char e[] = { + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 1, 1, + 0, 1, 1, 1, 1, 1, + 0, 1, 1, 1, 1, 1, + 0, 1, 1, 1, 1, 1, + 0, 1, 1, 1, 1, 1, + }; + char f[] = { + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 1, 1, + 0, 1, 1, 1, 1, 1, + 0, 1, 1, 1, 1, 1, + 0, 1, 1, 1, 1, 1, + 0, 1, 1, 1, 1, 1, + 0, 1, 1, 1, 1, 1, + }; + char g[] = { + 0, 0, 0, 0, 0, 0, + 0, 1, 1, 1, 1, 1, + 0, 1, 1, 1, 1, 1, + 0, 1, 1, 1, 1, 1, + 0, 1, 1, 1, 1, 1, + 0, 1, 1, 1, 1, 1, + 0, 1, 1, 1, 1, 1, + 0, 1, 1, 1, 1, 1, + }; - if (custom != vbar) { - CFontz_set_char (1, a); - CFontz_set_char (2, b); - CFontz_set_char (3, c); - CFontz_set_char (4, d); - CFontz_set_char (5, e); - CFontz_set_char (6, f); - CFontz_set_char (7, g); - custom = vbar; - } + if (custom != vbar) { + CFontz_set_char (1, a); + CFontz_set_char (2, b); + CFontz_set_char (3, c); + CFontz_set_char (4, d); + CFontz_set_char (5, e); + CFontz_set_char (6, f); + CFontz_set_char (7, g); + custom = vbar; + } } ///////////////////////////////////////////////////////////////// @@ -431,76 +431,76 @@ void CFontz_init_hbar () { - char a[] = { - 1, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, - 1, 0, 0, 0, 0, 0, - }; - char b[] = { - 1, 1, 0, 0, 0, 0, - 1, 1, 0, 0, 0, 0, - 1, 1, 0, 0, 0, 0, - 1, 1, 0, 0, 0, 0, - 1, 1, 0, 0, 0, 0, - 1, 1, 0, 0, 0, 0, - 1, 1, 0, 0, 0, 0, - 1, 1, 0, 0, 0, 0, - }; - char c[] = { - 1, 1, 1, 0, 0, 0, - 1, 1, 1, 0, 0, 0, - 1, 1, 1, 0, 0, 0, - 1, 1, 1, 0, 0, 0, - 1, 1, 1, 0, 0, 0, - 1, 1, 1, 0, 0, 0, - 1, 1, 1, 0, 0, 0, - 1, 1, 1, 0, 0, 0, - }; - char d[] = { - 1, 1, 1, 1, 0, 0, - 1, 1, 1, 1, 0, 0, - 1, 1, 1, 1, 0, 0, - 1, 1, 1, 1, 0, 0, - 1, 1, 1, 1, 0, 0, - 1, 1, 1, 1, 0, 0, - 1, 1, 1, 1, 0, 0, - 1, 1, 1, 1, 0, 0, - }; - char e[] = { - 1, 1, 1, 1, 1, 0, - 1, 1, 1, 1, 1, 0, - 1, 1, 1, 1, 1, 0, - 1, 1, 1, 1, 1, 0, - 1, 1, 1, 1, 1, 0, - 1, 1, 1, 1, 1, 0, - 1, 1, 1, 1, 1, 0, - 1, 1, 1, 1, 1, 0, - }; - char f[] = { - 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, 1, - }; + char a[] = { + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + 1, 0, 0, 0, 0, 0, + }; + char b[] = { + 1, 1, 0, 0, 0, 0, + 1, 1, 0, 0, 0, 0, + 1, 1, 0, 0, 0, 0, + 1, 1, 0, 0, 0, 0, + 1, 1, 0, 0, 0, 0, + 1, 1, 0, 0, 0, 0, + 1, 1, 0, 0, 0, 0, + 1, 1, 0, 0, 0, 0, + }; + char c[] = { + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + 1, 1, 1, 0, 0, 0, + }; + char d[] = { + 1, 1, 1, 1, 0, 0, + 1, 1, 1, 1, 0, 0, + 1, 1, 1, 1, 0, 0, + 1, 1, 1, 1, 0, 0, + 1, 1, 1, 1, 0, 0, + 1, 1, 1, 1, 0, 0, + 1, 1, 1, 1, 0, 0, + 1, 1, 1, 1, 0, 0, + }; + char e[] = { + 1, 1, 1, 1, 1, 0, + 1, 1, 1, 1, 1, 0, + 1, 1, 1, 1, 1, 0, + 1, 1, 1, 1, 1, 0, + 1, 1, 1, 1, 1, 0, + 1, 1, 1, 1, 1, 0, + 1, 1, 1, 1, 1, 0, + 1, 1, 1, 1, 1, 0, + }; + char f[] = { + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + }; - if (custom != hbar) { - CFontz_set_char (1, a); - CFontz_set_char (2, b); - CFontz_set_char (3, c); - CFontz_set_char (4, d); - CFontz_set_char (5, e); - CFontz_set_char (6, f); - custom = hbar; - } + if (custom != hbar) { + CFontz_set_char (1, a); + CFontz_set_char (2, b); + CFontz_set_char (3, c); + CFontz_set_char (4, d); + CFontz_set_char (5, e); + CFontz_set_char (6, f); + custom = hbar; + } } ///////////////////////////////////////////////////////////////// @@ -509,17 +509,17 @@ CFontz_init_hbar () void CFontz_vbar (int x, int len) { - char map[9] = { 32, 1, 2, 3, 4, 5, 6, 7, 255 }; + char map[9] = { 32, 1, 2, 3, 4, 5, 6, 7, 255 }; - int y; - for (y = lcd.hgt; y > 0 && len > 0; y--) { - if (len >= lcd.cellhgt) - CFontz_chr (x, y, 255); - else - CFontz_chr (x, y, map[len]); + int y; + for (y = lcd.hgt; y > 0 && len > 0; y--) { + if (len >= lcd.cellhgt) + CFontz_chr (x, y, 255); + else + CFontz_chr (x, y, map[len]); - len -= lcd.cellhgt; - } + len -= lcd.cellhgt; + } } @@ -529,17 +529,17 @@ CFontz_vbar (int x, int len) void CFontz_hbar (int x, int y, int len) { - char map[7] = { 32, 1, 2, 3, 4, 5, 6 }; + char map[7] = { 32, 1, 2, 3, 4, 5, 6 }; - for (; x <= lcd.wid && len > 0; x++) { - if (len >= lcd.cellwid) - CFontz_chr (x, y, map[6]); - else - CFontz_chr (x, y, map[len]); + for (; x <= lcd.wid && len > 0; x++) { + if (len >= lcd.cellwid) + CFontz_chr (x, y, map[6]); + else + CFontz_chr (x, y, map[len]); - len -= lcd.cellwid; + len -= lcd.cellwid; - } + } } @@ -557,9 +557,9 @@ CFontz_init_num () void CFontz_num (int x, int num) { - char out[5]; - sprintf (out, "%c%c%c", 28, x, num); - write (fd, out, 3); + char out[5]; + sprintf (out, "%c%c%c", 28, x, num); + write (fd, out, 3); } ///////////////////////////////////////////////////////////////// @@ -572,70 +572,70 @@ CFontz_num (int x, int num) void CFontz_set_char (int n, char *dat) { - char out[4]; - int row, col; - int letter; + char out[4]; + int row, col; + int letter; - if (n < 0 || n > 7) - return; - if (!dat) - return; + if (n < 0 || n > 7) + return; + if (!dat) + return; - sprintf (out, "%c%c", 25, n); - write (fd, out, 2); + sprintf (out, "%c%c", 25, n); + write (fd, out, 2); - for (row = 0; row < lcd.cellhgt; row++) { - letter = 0; - for (col = 0; col < lcd.cellwid; col++) { - letter <<= 1; - letter |= (dat[(row * lcd.cellwid) + col] > 0); - } - write (fd, &letter, 1); - } + for (row = 0; row < lcd.cellhgt; row++) { + letter = 0; + for (col = 0; col < lcd.cellwid; col++) { + letter <<= 1; + letter |= (dat[(row * lcd.cellwid) + col] > 0); + } + write (fd, &letter, 1); + } } void CFontz_icon (int which, char dest) { - char icons[3][6 * 8] = { - { - 1, 1, 1, 1, 1, 1, // Empty Heart - 1, 0, 1, 0, 1, 1, - 0, 0, 0, 0, 0, 1, - 0, 0, 0, 0, 0, 1, - 0, 0, 0, 0, 0, 1, - 1, 0, 0, 0, 1, 1, - 1, 1, 0, 1, 1, 1, - 1, 1, 1, 1, 1, 1, - }, + char icons[3][6 * 8] = { + { + 1, 1, 1, 1, 1, 1, // Empty Heart + 1, 0, 1, 0, 1, 1, + 0, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 1, + 0, 0, 0, 0, 0, 1, + 1, 0, 0, 0, 1, 1, + 1, 1, 0, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + }, - { - 1, 1, 1, 1, 1, 1, // Filled Heart - 1, 0, 1, 0, 1, 1, - 0, 1, 0, 1, 0, 1, - 0, 1, 1, 1, 0, 1, - 0, 1, 1, 1, 0, 1, - 1, 0, 1, 0, 1, 1, - 1, 1, 0, 1, 1, 1, - 1, 1, 1, 1, 1, 1, - }, + { + 1, 1, 1, 1, 1, 1, // Filled Heart + 1, 0, 1, 0, 1, 1, + 0, 1, 0, 1, 0, 1, + 0, 1, 1, 1, 0, 1, + 0, 1, 1, 1, 0, 1, + 1, 0, 1, 0, 1, 1, + 1, 1, 0, 1, 1, 1, + 1, 1, 1, 1, 1, 1, + }, - { - 0, 0, 0, 0, 0, 0, // Ellipsis - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, 0, - 1, 0, 1, 0, 1, 0, - }, + { + 0, 0, 0, 0, 0, 0, // Ellipsis + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, 0, + 1, 0, 1, 0, 1, 0, + }, - }; + }; - if (custom == bign) - custom = beat; - CFontz_set_char (dest, &icons[which][0]); + if (custom == bign) + custom = beat; + CFontz_set_char (dest, &icons[which][0]); } ///////////////////////////////////////////////////////////// @@ -646,29 +646,29 @@ CFontz_icon (int which, char dest) void CFontz_draw_frame (char *dat) { - char out[LCD_MAX_WIDTH * LCD_MAX_HEIGHT]; - int i; + char out[LCD_MAX_WIDTH * LCD_MAX_HEIGHT]; + int i; - if (!dat) - return; + if (!dat) + return; - // Custom characters start at 128, not at 0. - /* - for(i=0; i= 0) dat[i] += 128; - } - */ + // Custom characters start at 128, not at 0. + /* + for(i=0; i= 0) dat[i] += 128; + } + */ - for (i = 0; i < lcd.hgt; i++) { - sprintf (out, "%c%c%c", 17, 0, i); - write (fd, out, 3); - write (fd, dat + (lcd.wid * i), lcd.wid); - } - /* - sprintf(out, "%c", 1); - write(fd, out, 1); - write(fd, dat, lcd.wid*lcd.hgt); - */ + for (i = 0; i < lcd.hgt; i++) { + sprintf (out, "%c%c%c", 17, 0, i); + write (fd, out, 3); + write (fd, dat + (lcd.wid * i), lcd.wid); + } + /* + sprintf(out, "%c", 1); + write(fd, out, 1); + write(fd, dat, lcd.wid*lcd.hgt); + */ } diff --git a/server/drivers/MtxOrb.c b/server/drivers/MtxOrb.c index e5d007f..96d95a6 100644 --- a/server/drivers/MtxOrb.c +++ b/server/drivers/MtxOrb.c @@ -16,38 +16,38 @@ static int custom = 0; // TODO: Remove this custom_type if not in use anymore. typedef enum { - hbar = 1, - vbar = 2, - bign = 4, - beat = 8 + hbar = 1, + vbar = 2, + bign = 4, + beat = 8 } custom_type; // TODO: This is my ugglyest piece of code. typedef enum { - baru1 = 0, - baru2 = 1, - baru3 = 2, - baru4 = 3, - baru5 = 4, - baru6 = 5, - baru7 = 6, - bard1 = 7, - bard2 = 8, - bard3 = 9, - bard4 = 10, - bard5 = 11, - bard6 = 12, - bard7 = 13, - barr1 = 14, - barr2 = 15, - barr3 = 16, - barr4 = 17, - barl1 = 18, - barl2 = 19, - barl3 = 20, - barl4 = 21, - barw = 32, - barb = 255 + baru1 = 0, + baru2 = 1, + baru3 = 2, + baru4 = 3, + baru5 = 4, + baru6 = 5, + baru7 = 6, + bard1 = 7, + bard2 = 8, + bard3 = 9, + bard4 = 10, + bard5 = 11, + bard6 = 12, + bard7 = 13, + barr1 = 14, + barr2 = 15, + barr3 = 16, + barr4 = 17, + barl1 = 18, + barl2 = 19, + barl3 = 20, + barl4 = 21, + barw = 32, + barb = 255 } bar_type; static int fd; @@ -70,133 +70,133 @@ lcd_logical_driver *MtxOrb; int MtxOrb_init (lcd_logical_driver * driver, char *args) { - char *argv[64]; - int argc; - struct termios portset; - int i; - int tmp; + char *argv[64]; + int argc; + struct termios portset; + int i; + int tmp; - int contrast = 140; - char device[256] = "/dev/lcd"; - int speed = B19200; + int contrast = 140; + char device[256] = "/dev/lcd"; + int speed = B19200; - MtxOrb = driver; + MtxOrb = driver; - //debug("MtxOrb_init: Args(all): %s\n", args); + //debug("MtxOrb_init: Args(all): %s\n", args); - argc = get_args (argv, args, 64); + argc = get_args (argv, args, 64); - /* - for(i=0; i argc) { - fprintf (stderr, "MtxOrb_init: %s requires an argument\n", argv[i]); - return -1; - } - strcpy (device, argv[++i]); - } else if (0 == strcmp (argv[i], "-c") || 0 == strcmp (argv[i], "--contrast")) { - if (i + 1 > argc) { - fprintf (stderr, "MtxOrb_init: %s requires an argument\n", argv[i]); - return -1; - } - tmp = atoi (argv[++i]); - if ((tmp < 0) || (tmp > 255)) { - fprintf (stderr, "MtxOrb_init: %s argument must between 0 and 255. Ussing default value.\n", argv[i]); - } else - contrast = tmp; - } else if (0 == strcmp (argv[i], "-s") || 0 == strcmp (argv[i], "--speed")) { - if (i + 1 > argc) { - fprintf (stderr, "MtxOrb_init: %s requires an argument\n", argv[i]); - return -1; - } - tmp = atoi (argv[++i]); - if (tmp == 1200) - speed = B1200; - else if (tmp == 2400) - speed = B2400; - else if (tmp == 9600) - speed = B9600; - else if (tmp == 19200) - speed = B19200; - else { - fprintf (stderr, "MtxOrb_init: %s argument must be 1200, 2400, 9600 or 19200. Ussing default value.\n", argv[i]); - } - } else if (0 == strcmp (argv[i], "-h") || 0 == strcmp (argv[i], "--help")) { - printf ("LCDproc Matrix-Orbital LCD driver\n" "\t-d\t--device\tSelect the output device to use [/dev/lcd]\n" + for (i = 0; i < argc; i++) { + //printf("Arg(%i): %s\n", i, argv[i]); + if (0 == strcmp (argv[i], "-d") || 0 == strcmp (argv[i], "--device")) { + if (i + 1 > argc) { + fprintf (stderr, "MtxOrb_init: %s requires an argument\n", argv[i]); + return -1; + } + strcpy (device, argv[++i]); + } else if (0 == strcmp (argv[i], "-c") || 0 == strcmp (argv[i], "--contrast")) { + if (i + 1 > argc) { + fprintf (stderr, "MtxOrb_init: %s requires an argument\n", argv[i]); + return -1; + } + tmp = atoi (argv[++i]); + if ((tmp < 0) || (tmp > 255)) { + fprintf (stderr, "MtxOrb_init: %s argument must between 0 and 255. Ussing default value.\n", argv[i]); + } else + contrast = tmp; + } else if (0 == strcmp (argv[i], "-s") || 0 == strcmp (argv[i], "--speed")) { + if (i + 1 > argc) { + fprintf (stderr, "MtxOrb_init: %s requires an argument\n", argv[i]); + return -1; + } + tmp = atoi (argv[++i]); + if (tmp == 1200) + speed = B1200; + else if (tmp == 2400) + speed = B2400; + else if (tmp == 9600) + speed = B9600; + else if (tmp == 19200) + speed = B19200; + else { + fprintf (stderr, "MtxOrb_init: %s argument must be 1200, 2400, 9600 or 19200. Ussing default value.\n", argv[i]); + } + } else if (0 == strcmp (argv[i], "-h") || 0 == strcmp (argv[i], "--help")) { + printf ("LCDproc Matrix-Orbital LCD driver\n" "\t-d\t--device\tSelect the output device to use [/dev/lcd]\n" // "\t-t\t--type\t\tSelect the LCD type (size) [20x4]\n" - "\t-c\t--contrast\tSet the initial contrast [140]\n" "\t-s\t--speed\t\tSet the communication speed [19200]\n" "\t-h\t--help\t\tShow this help information\n"); - return -1; - } else { - printf ("Invalid parameter: %s\n", argv[i]); - } + "\t-c\t--contrast\tSet the initial contrast [140]\n" "\t-s\t--speed\t\tSet the communication speed [19200]\n" "\t-h\t--help\t\tShow this help information\n"); + return -1; + } else { + printf ("Invalid parameter: %s\n", argv[i]); + } - } + } - // Set up io port correctly, and open it... - fd = open (device, O_RDWR | O_NOCTTY | O_NDELAY); - if (fd == -1) { - fprintf (stderr, "MtxOrb_init: failed (%s)\n", strerror (errno)); - return -1; - } - //else fprintf(stderr, "MtxOrb_init: opened device %s\n", device); - tcgetattr (fd, &portset); - // This is necessary in Linux, but does not exist in irix. + // Set up io port correctly, and open it... + fd = open (device, O_RDWR | O_NOCTTY | O_NDELAY); + if (fd == -1) { + fprintf (stderr, "MtxOrb_init: failed (%s)\n", strerror (errno)); + return -1; + } + //else fprintf(stderr, "MtxOrb_init: opened device %s\n", device); + tcgetattr (fd, &portset); + // This is necessary in Linux, but does not exist in irix. #ifndef IRIX - cfmakeraw (&portset); + cfmakeraw (&portset); #endif - cfsetospeed (&portset, speed); - cfsetispeed (&portset, speed); - tcsetattr (fd, TCSANOW, &portset); + cfsetospeed (&portset, speed); + cfsetispeed (&portset, speed); + tcsetattr (fd, TCSANOW, &portset); - // Set display-specific stuff.. - MtxOrb_linewrap (1); - MtxOrb_autoscroll (1); - MtxOrb_cursorblink (0); + // Set display-specific stuff.. + MtxOrb_linewrap (1); + MtxOrb_autoscroll (1); + MtxOrb_cursorblink (0); - if (!driver->framebuf) { - fprintf (stderr, "MtxOrb_init: No frame buffer.\n"); - driver->close (); - return -1; - } - // Set the functions the driver supports... + if (!driver->framebuf) { + fprintf (stderr, "MtxOrb_init: No frame buffer.\n"); + driver->close (); + return -1; + } + // Set the functions the driver supports... // driver->clear = (void *)-1; - driver->clear = MtxOrb_clear; - driver->string = (void *) -1; + driver->clear = MtxOrb_clear; + driver->string = (void *) -1; // driver->chr = MtxOrb_chr; - driver->chr = (void *) -1; - driver->vbar = MtxOrb_vbar; - driver->init_vbar = MtxOrb_init_vbar; + driver->chr = (void *) -1; + driver->vbar = MtxOrb_vbar; + driver->init_vbar = MtxOrb_init_vbar; // driver->init_vbar = (void *)-1; - driver->hbar = MtxOrb_hbar; - driver->init_hbar = MtxOrb_init_hbar; + driver->hbar = MtxOrb_hbar; + driver->init_hbar = MtxOrb_init_hbar; // driver->init_hbar = (void *)-1; - driver->num = MtxOrb_num; - driver->init_num = MtxOrb_init_num; + driver->num = MtxOrb_num; + driver->init_num = MtxOrb_init_num; - driver->init = MtxOrb_init; - driver->close = MtxOrb_close; - driver->flush = MtxOrb_flush; - driver->flush_box = MtxOrb_flush_box; - driver->contrast = MtxOrb_contrast; - driver->backlight = MtxOrb_backlight; - driver->output = MtxOrb_output; - driver->set_char = MtxOrb_set_char; - driver->icon = MtxOrb_icon; - driver->draw_frame = MtxOrb_draw_frame; + driver->init = MtxOrb_init; + driver->close = MtxOrb_close; + driver->flush = MtxOrb_flush; + driver->flush_box = MtxOrb_flush_box; + driver->contrast = MtxOrb_contrast; + driver->backlight = MtxOrb_backlight; + driver->output = MtxOrb_output; + driver->set_char = MtxOrb_set_char; + driver->icon = MtxOrb_icon; + driver->draw_frame = MtxOrb_draw_frame; - driver->getkey = MtxOrb_getkey; + driver->getkey = MtxOrb_getkey; - MtxOrb_contrast (contrast); + MtxOrb_contrast (contrast); - return fd; + return fd; } // TODO: Check this quick hack to detect clear of the screen. @@ -209,8 +209,8 @@ void MtxOrb_clear () { // REMOVE: fprintf(stderr, "GLU: MtxOrb_clear.\n"); - drv_base_clear (); - clear = 1; + drv_base_clear (); + clear = 1; } ///////////////////////////////////////////////////////////////// @@ -219,34 +219,34 @@ MtxOrb_clear () void MtxOrb_close () { - close (fd); + close (fd); - if (MtxOrb->framebuf) - free (MtxOrb->framebuf); + if (MtxOrb->framebuf) + free (MtxOrb->framebuf); - MtxOrb->framebuf = NULL; + MtxOrb->framebuf = NULL; } void MtxOrb_flush () { - MtxOrb_draw_frame (lcd.framebuf); + MtxOrb_draw_frame (lcd.framebuf); } void MtxOrb_flush_box (int lft, int top, int rgt, int bot) { - int y; - char out[LCD_MAX_WIDTH]; + int y; + char out[LCD_MAX_WIDTH]; // printf("Flush (%i,%i)-(%i,%i)\n", lft, top, rgt, bot); - for (y = top; y <= bot; y++) { - sprintf (out, "%cG%c%c", 254, lft, y); - write (fd, out, 4); - write (fd, lcd.framebuf + (y * lcd.wid) + lft, rgt - lft + 1); + for (y = top; y <= bot; y++) { + sprintf (out, "%cG%c%c", 254, lft, y); + write (fd, out, 4); + write (fd, lcd.framebuf + (y * lcd.wid) + lft, rgt - lft + 1); - } + } } @@ -257,10 +257,10 @@ MtxOrb_flush_box (int lft, int top, int rgt, int bot) void MtxOrb_chr (int x, int y, char c) { - y--; - x--; + y--; + x--; - lcd.framebuf[(y * lcd.wid) + x] = c; + lcd.framebuf[(y * lcd.wid) + x] = c; } ///////////////////////////////////////////////////////////////// @@ -269,16 +269,16 @@ MtxOrb_chr (int x, int y, char c) int MtxOrb_contrast (int contrast) { - char out[4]; - static int status = 140; + char out[4]; + static int status = 140; - if (contrast > 0) { - status = contrast; - sprintf (out, "%cP%c", 254, status); - write (fd, out, 3); - } + if (contrast > 0) { + status = contrast; + sprintf (out, "%cP%c", 254, status); + write (fd, out, 3); + } - return status; + return status; } ///////////////////////////////////////////////////////////////// @@ -288,14 +288,14 @@ MtxOrb_contrast (int contrast) void MtxOrb_backlight (int on) { - char out[4]; - if (on) { - sprintf (out, "%cB%c", 254, 0); - write (fd, out, 3); - } else { - sprintf (out, "%cF", 254); - write (fd, out, 2); - } + char out[4]; + if (on) { + sprintf (out, "%cB%c", 254, 0); + write (fd, out, 3); + } else { + sprintf (out, "%cF", 254); + write (fd, out, 2); + } } ///////////////////////////////////////////////////////////////// @@ -303,14 +303,14 @@ MtxOrb_backlight (int on) void MtxOrb_output (int on) { - char out[4]; - if (on) { - sprintf (out, "%cW", 254); - write (fd, out, 2); - } else { - sprintf (out, "%cV", 254); - write (fd, out, 2); - } + char out[4]; + if (on) { + sprintf (out, "%cW", 254); + write (fd, out, 2); + } else { + sprintf (out, "%cV", 254); + write (fd, out, 2); + } } ///////////////////////////////////////////////////////////////// @@ -319,12 +319,12 @@ MtxOrb_output (int on) static void MtxOrb_linewrap (int on) { - char out[4]; - if (on) - sprintf (out, "%cC", 254); - else - sprintf (out, "%cD", 254); - write (fd, out, 2); + char out[4]; + if (on) + sprintf (out, "%cC", 254); + else + sprintf (out, "%cD", 254); + write (fd, out, 2); } ///////////////////////////////////////////////////////////////// @@ -333,12 +333,12 @@ MtxOrb_linewrap (int on) static void MtxOrb_autoscroll (int on) { - char out[4]; - if (on) - sprintf (out, "%cQ", 254); - else - sprintf (out, "%cR", 254); - write (fd, out, 2); + char out[4]; + if (on) + sprintf (out, "%cQ", 254); + else + sprintf (out, "%cR", 254); + write (fd, out, 2); } // TODO: make sure this doesn't mess up non-VFD displays @@ -348,12 +348,12 @@ MtxOrb_autoscroll (int on) static void MtxOrb_cursorblink (int on) { - char out[4]; - if (on) - sprintf (out, "%cS", 254); - else - sprintf (out, "%cT", 254); - write (fd, out, 2); + char out[4]; + if (on) + sprintf (out, "%cS", 254); + else + sprintf (out, "%cT", 254); + write (fd, out, 2); } //// TODO: Might not be needed anymore... @@ -363,7 +363,7 @@ MtxOrb_cursorblink (int on) void MtxOrb_init_vbar () { - MtxOrb_init_all (vbar); + MtxOrb_init_all (vbar); } // TODO: Might not be needed anymore... @@ -373,7 +373,7 @@ MtxOrb_init_vbar () void MtxOrb_init_hbar () { - MtxOrb_init_all (hbar); + MtxOrb_init_all (hbar); } // TODO: Finish the support for bar growing reverse way. @@ -385,35 +385,35 @@ MtxOrb_init_hbar () void MtxOrb_vbar (int x, int len) { - unsigned char mapu[9] = { barw, baru1, baru2, baru3, baru4, baru5, baru6, baru7, barb }; - unsigned char mapd[9] = { barw, bard1, bard2, bard3, bard4, bard5, bard6, bard7, barb }; + unsigned char mapu[9] = { barw, baru1, baru2, baru3, baru4, baru5, baru6, baru7, barb }; + unsigned char mapd[9] = { barw, bard1, bard2, bard3, bard4, bard5, bard6, bard7, barb }; - int y; + int y; // TODO: REMOVE THE NEXT LINE FOR TESTING ONLY... // len=-len; // TODO: REMOVE THE PREVIOUS LINE FOR TESTING ONLY... - if (len > 0) { - for (y = lcd.hgt; y > 0 && len > 0; y--) { - if (len >= lcd.cellhgt) - MtxOrb_chr (x, y, 255); - else - MtxOrb_chr (x, y, MtxOrb_ask_bar (mapu[len])); + if (len > 0) { + for (y = lcd.hgt; y > 0 && len > 0; y--) { + if (len >= lcd.cellhgt) + MtxOrb_chr (x, y, 255); + else + MtxOrb_chr (x, y, MtxOrb_ask_bar (mapu[len])); - len -= lcd.cellhgt; - } - } else { - len = -len; - for (y = 2; y <= lcd.hgt && len > 0; y++) { - if (len >= lcd.cellhgt) - MtxOrb_chr (x, y, 255); - else - MtxOrb_chr (x, y, MtxOrb_ask_bar (mapd[len])); + len -= lcd.cellhgt; + } + } else { + len = -len; + for (y = 2; y <= lcd.hgt && len > 0; y++) { + if (len >= lcd.cellhgt) + MtxOrb_chr (x, y, 255); + else + MtxOrb_chr (x, y, MtxOrb_ask_bar (mapd[len])); - len -= lcd.cellhgt; - } - } + len -= lcd.cellhgt; + } + } } @@ -425,31 +425,31 @@ MtxOrb_vbar (int x, int len) void MtxOrb_hbar (int x, int y, int len) { - unsigned char mapr[6] = { barw, barr1, barr2, barr3, barr4, barb }; - unsigned char mapl[6] = { barw, barl1, barl2, barl3, barl4, barb }; + unsigned char mapr[6] = { barw, barr1, barr2, barr3, barr4, barb }; + unsigned char mapl[6] = { barw, barl1, barl2, barl3, barl4, barb }; - if (len > 0) { - for (; x <= lcd.wid && len > 0; x++) { - if (len >= lcd.cellwid) - MtxOrb_chr (x, y, 255); - else - MtxOrb_chr (x, y, MtxOrb_ask_bar (mapr[len])); + if (len > 0) { + for (; x <= lcd.wid && len > 0; x++) { + if (len >= lcd.cellwid) + MtxOrb_chr (x, y, 255); + else + MtxOrb_chr (x, y, MtxOrb_ask_bar (mapr[len])); - len -= lcd.cellwid; + len -= lcd.cellwid; - } - } else { - len = -len; - for (; x > 0 && len > 0; x--) { - if (len >= lcd.cellwid) - MtxOrb_chr (x, y, 255); - else - MtxOrb_chr (x, y, MtxOrb_ask_bar (mapl[len])); + } + } else { + len = -len; + for (; x > 0 && len > 0; x--) { + if (len >= lcd.cellwid) + MtxOrb_chr (x, y, 255); + else + MtxOrb_chr (x, y, MtxOrb_ask_bar (mapl[len])); - len -= lcd.cellwid; + len -= lcd.cellwid; - } - } + } + } } @@ -461,12 +461,12 @@ MtxOrb_hbar (int x, int y, int len) void MtxOrb_init_num () { - char out[3]; - if (custom != bign) { - sprintf (out, "%cn", 254); - write (fd, out, 2); - custom = bign; - } + char out[3]; + if (custom != bign) { + sprintf (out, "%cn", 254); + write (fd, out, 2); + custom = bign; + } } // TODO: Might not work, bignum is untested... an untested with dynamic bar. @@ -477,9 +477,9 @@ MtxOrb_init_num () void MtxOrb_num (int x, int num) { - char out[5]; - sprintf (out, "%c#%c%c", 254, x, num); - write (fd, out, 4); + char out[5]; + sprintf (out, "%c#%c%c", 254, x, num); + write (fd, out, 4); } // TODO: This could be higly optimised if data where to be pre-computed. @@ -494,70 +494,70 @@ MtxOrb_num (int x, int num) void MtxOrb_set_char (int n, char *dat) { - char out[4]; - int row, col; - int letter; + char out[4]; + int row, col; + int letter; - if (n < 0 || n > 7) - return; - if (!dat) - return; + if (n < 0 || n > 7) + return; + if (!dat) + return; - sprintf (out, "%cN%c", 254, n); - write (fd, out, 3); + sprintf (out, "%cN%c", 254, n); + write (fd, out, 3); - for (row = 0; row < lcd.cellhgt; row++) { - letter = 0; - for (col = 0; col < lcd.cellwid; col++) { - letter <<= 1; - letter |= (dat[(row * lcd.cellwid) + col] > 0); - } - write (fd, &letter, 1); - } + for (row = 0; row < lcd.cellhgt; row++) { + letter = 0; + for (col = 0; col < lcd.cellwid; col++) { + letter <<= 1; + letter |= (dat[(row * lcd.cellwid) + col] > 0); + } + write (fd, &letter, 1); + } } void MtxOrb_icon (int which, char dest) { - char icons[3][5 * 8] = { - { - 1, 1, 1, 1, 1, // Empty Heart - 1, 0, 1, 0, 1, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 1, 0, 0, 0, 1, - 1, 1, 0, 1, 1, - 1, 1, 1, 1, 1, - }, + char icons[3][5 * 8] = { + { + 1, 1, 1, 1, 1, // Empty Heart + 1, 0, 1, 0, 1, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 1, 0, 0, 0, 1, + 1, 1, 0, 1, 1, + 1, 1, 1, 1, 1, + }, - { - 1, 1, 1, 1, 1, // Filled Heart - 1, 0, 1, 0, 1, - 0, 1, 0, 1, 0, - 0, 1, 1, 1, 0, - 0, 1, 1, 1, 0, - 1, 0, 1, 0, 1, - 1, 1, 0, 1, 1, - 1, 1, 1, 1, 1, - }, + { + 1, 1, 1, 1, 1, // Filled Heart + 1, 0, 1, 0, 1, + 0, 1, 0, 1, 0, + 0, 1, 1, 1, 0, + 0, 1, 1, 1, 0, + 1, 0, 1, 0, 1, + 1, 1, 0, 1, 1, + 1, 1, 1, 1, 1, + }, - { - 0, 0, 0, 0, 0, // Ellipsis - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 1, 0, 1, 0, 1, - }, + { + 0, 0, 0, 0, 0, // Ellipsis + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 1, 0, 1, 0, 1, + }, - }; + }; - if (custom == bign) - custom = beat; - MtxOrb_set_char (dest, &icons[which][0]); + if (custom == bign) + custom = beat; + MtxOrb_set_char (dest, &icons[which][0]); } ///////////////////////////////////////////////////////////// @@ -568,17 +568,17 @@ MtxOrb_icon (int which, char dest) void MtxOrb_draw_frame (char *dat) { - char out[LCD_MAX_WIDTH * LCD_MAX_HEIGHT]; - int i; + char out[LCD_MAX_WIDTH * LCD_MAX_HEIGHT]; + int i; - if (!dat) - return; + if (!dat) + return; - for (i = 0; i < lcd.hgt; i++) { - sprintf (out, "%cG%c%c", 254, 1, i + 1); - write (fd, out, 4); - write (fd, dat + (lcd.wid * i), lcd.wid); - } + for (i = 0; i < lcd.hgt; i++) { + sprintf (out, "%cG%c%c", 254, 1, i + 1); + write (fd, out, 4); + write (fd, dat + (lcd.wid * i), lcd.wid); + } } @@ -589,32 +589,32 @@ MtxOrb_draw_frame (char *dat) char MtxOrb_getkey () { - char in = 0; - read (fd, &in, 1); - return in; + char in = 0; + read (fd, &in, 1); + return in; } void MtxOrb_led (int which, int on) { - char out[4]; + char out[4]; - if (which < 0 || which > 7) - return; + if (which < 0 || which > 7) + return; - if (!which) { - if (on) - sprintf (out, "%cV", 254); - else - sprintf (out, "%cW", 254); - write (fd, out, 2); - } else { - if (on) - sprintf (out, "%cV%c", 254, which); - else - sprintf (out, "%cW%c", 254, which); - write (fd, out, 3); - } + if (!which) { + if (on) + sprintf (out, "%cV", 254); + else + sprintf (out, "%cW", 254); + write (fd, out, 2); + } else { + if (on) + sprintf (out, "%cV%c", 254, which); + else + sprintf (out, "%cW%c", 254, which); + write (fd, out, 3); + } } ///////////////////////////////////////////////////////////////// @@ -629,140 +629,140 @@ MtxOrb_led (int which, int on) int MtxOrb_ask_bar (int type) { - int i; - int last_not_in_use; - int pos; // 0 is icon, 1 to 7 are free, 8 is not found. - // TODO: Reuse graphic caracter 0 if heartbeat is not in use. + int i; + int last_not_in_use; + int pos; // 0 is icon, 1 to 7 are free, 8 is not found. + // TODO: Reuse graphic caracter 0 if heartbeat is not in use. - // REMOVE: fprintf(stderr, "GLU: MtxOrb_ask_bar(%d).\n", type); - // Check if the screen was clear. - if (clear) { // If the screen was clear then graphic caracter are not in use. - //REMOVE: fprintf(stderr, "GLU: MtxOrb_ask_bar| clear was set.\n"); - use[0] = 1; // Heartbeat is always in use (not true but it help). - for (pos = 1; pos < 8; pos++) { - use[pos] = 0; // Other are not in use. - } - clear = 0; // We made the special treatement. - } else { - // Nothing special if some caracter a curently in use (...) ? - } + // REMOVE: fprintf(stderr, "GLU: MtxOrb_ask_bar(%d).\n", type); + // Check if the screen was clear. + if (clear) { // If the screen was clear then graphic caracter are not in use. + //REMOVE: fprintf(stderr, "GLU: MtxOrb_ask_bar| clear was set.\n"); + use[0] = 1; // Heartbeat is always in use (not true but it help). + for (pos = 1; pos < 8; pos++) { + use[pos] = 0; // Other are not in use. + } + clear = 0; // We made the special treatement. + } else { + // Nothing special if some caracter a curently in use (...) ? + } - // Search for a match with caracter already defined. - pos = 8; // Not found. - last_not_in_use = 8; // No empty slot to reuse. - for (i = 1; i < 8; i++) { // For all but first (heartbeat). - if (!use[i]) - last_not_in_use = i; // New empty slot. - if (def[i] == type) - pos = i; // Founded (should break now). - } + // Search for a match with caracter already defined. + pos = 8; // Not found. + last_not_in_use = 8; // No empty slot to reuse. + for (i = 1; i < 8; i++) { // For all but first (heartbeat). + if (!use[i]) + last_not_in_use = i; // New empty slot. + if (def[i] == type) + pos = i; // Founded (should break now). + } - if (pos == 8) { - // REMOVE: fprintf(stderr, "GLU: MtxOrb_ask_bar| not found.\n"); - pos = last_not_in_use; - // TODO: Best match/deep search is no more graphic caracter are available. - } + if (pos == 8) { + // REMOVE: fprintf(stderr, "GLU: MtxOrb_ask_bar| not found.\n"); + pos = last_not_in_use; + // TODO: Best match/deep search is no more graphic caracter are available. + } - if (pos != 8) { // A caracter is found (Best match could solve our problem). - // REMOVE: fprintf(stderr, "GLU: MtxOrb_ask_bar| found at %d.\n", pos); - if (def[pos] != type) { - MtxOrb_set_known_char (pos, type); // Define a new graphic caracter. - def[pos] = type; // Remember that now the caracter is available. - } - if (!use[pos]) { // If the caracter is no yet in use (but defined). - use[pos] = 1; // Remember it is in use (so protect it from re-use). - } - } + if (pos != 8) { // A caracter is found (Best match could solve our problem). + // REMOVE: fprintf(stderr, "GLU: MtxOrb_ask_bar| found at %d.\n", pos); + if (def[pos] != type) { + MtxOrb_set_known_char (pos, type); // Define a new graphic caracter. + def[pos] = type; // Remember that now the caracter is available. + } + if (!use[pos]) { // If the caracter is no yet in use (but defined). + use[pos] = 1; // Remember it is in use (so protect it from re-use). + } + } - if (pos == 8) // TODO: Choose a character to approximate the graph - { - //pos=65; // ("A")? - switch (type) { - case baru1: - pos = '_'; - break; - case baru2: - pos = '.'; - break; - case baru3: - pos = ','; - break; - case baru4: - pos = 'o'; - break; - case baru5: - pos = 'o'; - break; - case baru6: - pos = 'O'; - break; - case baru7: - pos = '8'; - break; + if (pos == 8) // TODO: Choose a character to approximate the graph + { + //pos=65; // ("A")? + switch (type) { + case baru1: + pos = '_'; + break; + case baru2: + pos = '.'; + break; + case baru3: + pos = ','; + break; + case baru4: + pos = 'o'; + break; + case baru5: + pos = 'o'; + break; + case baru6: + pos = 'O'; + break; + case baru7: + pos = '8'; + break; - case bard1: - pos = '\''; - break; - case bard2: - pos = '"'; - break; - case bard3: - pos = '^'; - break; - case bard4: - pos = '^'; - break; - case bard5: - pos = '*'; - break; - case bard6: - pos = 'O'; - break; - case bard7: - pos = '8'; - break; + case bard1: + pos = '\''; + break; + case bard2: + pos = '"'; + break; + case bard3: + pos = '^'; + break; + case bard4: + pos = '^'; + break; + case bard5: + pos = '*'; + break; + case bard6: + pos = 'O'; + break; + case bard7: + pos = '8'; + break; - case barr1: - pos = '-'; - break; - case barr2: - pos = '-'; - break; - case barr3: - pos = '='; - break; - case barr4: - pos = '='; - break; + case barr1: + pos = '-'; + break; + case barr2: + pos = '-'; + break; + case barr3: + pos = '='; + break; + case barr4: + pos = '='; + break; - case barl1: - pos = '-'; - break; - case barl2: - pos = '-'; - break; - case barl3: - pos = '='; - break; - case barl4: - pos = '='; - break; + case barl1: + pos = '-'; + break; + case barl2: + pos = '-'; + break; + case barl3: + pos = '='; + break; + case barl4: + pos = '='; + break; - case barw: - pos = ' '; - break; + case barw: + pos = ' '; + break; - case barb: - pos = 255; - break; + case barb: + pos = 255; + break; - default: - pos = '?'; - break; - } - } + default: + pos = '?'; + break; + } + } - return (pos); + return (pos); } ///////////////////////////////////////////////////////////////// @@ -771,236 +771,236 @@ MtxOrb_ask_bar (int type) void MtxOrb_set_known_char (int car, int type) { - char all_bar[25][5 * 8] = { - { - 0, 0, 0, 0, 0, // char u1[] = - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 1, 1, 1, 1, 1, - }, { - 0, 0, 0, 0, 0, // char u2[] = - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - }, { - 0, 0, 0, 0, 0, // char u3[] = - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - }, { - 0, 0, 0, 0, 0, // char u4[] = - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - }, { - 0, 0, 0, 0, 0, // char u5[] = - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - }, { - 0, 0, 0, 0, 0, // char u6[] = - 0, 0, 0, 0, 0, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - }, { - 0, 0, 0, 0, 0, // char u7[] = - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - }, { - 1, 1, 1, 1, 1, // char d1[] = - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - }, { - 1, 1, 1, 1, 1, // char d2[] = - 1, 1, 1, 1, 1, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - }, { - 1, 1, 1, 1, 1, // char d3[] = - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - }, { - 1, 1, 1, 1, 1, // char d4[] = - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - }, { - 1, 1, 1, 1, 1, // char d5[] = - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - }, { - 1, 1, 1, 1, 1, // char d6[] = - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - }, { - 1, 1, 1, 1, 1, // char d7[] = - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - 0, 0, 0, 0, 0, - }, { - 1, 0, 0, 0, 0, // char r1[] = - 1, 0, 0, 0, 0, - 1, 0, 0, 0, 0, - 1, 0, 0, 0, 0, - 1, 0, 0, 0, 0, - 1, 0, 0, 0, 0, - 1, 0, 0, 0, 0, - 1, 0, 0, 0, 0, - }, { - 1, 1, 0, 0, 0, // char r2[] = - 1, 1, 0, 0, 0, - 1, 1, 0, 0, 0, - 1, 1, 0, 0, 0, - 1, 1, 0, 0, 0, - 1, 1, 0, 0, 0, - 1, 1, 0, 0, 0, - 1, 1, 0, 0, 0, - }, { - 1, 1, 1, 0, 0, // char r3[] = - 1, 1, 1, 0, 0, - 1, 1, 1, 0, 0, - 1, 1, 1, 0, 0, - 1, 1, 1, 0, 0, - 1, 1, 1, 0, 0, - 1, 1, 1, 0, 0, - 1, 1, 1, 0, 0, - }, { - 1, 1, 1, 1, 0, // char r4[] = - 1, 1, 1, 1, 0, - 1, 1, 1, 1, 0, - 1, 1, 1, 1, 0, - 1, 1, 1, 1, 0, - 1, 1, 1, 1, 0, - 1, 1, 1, 1, 0, - 1, 1, 1, 1, 0, - }, { - 0, 0, 0, 0, 1, // char l1[] = - 0, 0, 0, 0, 1, - 0, 0, 0, 0, 1, - 0, 0, 0, 0, 1, - 0, 0, 0, 0, 1, - 0, 0, 0, 0, 1, - 0, 0, 0, 0, 1, - 0, 0, 0, 0, 1, - }, { - 0, 0, 0, 1, 1, // char l2[] = - 0, 0, 0, 1, 1, - 0, 0, 0, 1, 1, - 0, 0, 0, 1, 1, - 0, 0, 0, 1, 1, - 0, 0, 0, 1, 1, - 0, 0, 0, 1, 1, - 0, 0, 0, 1, 1, - }, { - 0, 0, 1, 1, 1, // char l3[] = - 0, 0, 1, 1, 1, - 0, 0, 1, 1, 1, - 0, 0, 1, 1, 1, - 0, 0, 1, 1, 1, - 0, 0, 1, 1, 1, - 0, 0, 1, 1, 1, - 0, 0, 1, 1, 1, - }, { - 0, 1, 1, 1, 1, // char l4[] = - 0, 1, 1, 1, 1, - 0, 1, 1, 1, 1, - 0, 1, 1, 1, 1, - 0, 1, 1, 1, 1, - 0, 1, 1, 1, 1, - 0, 1, 1, 1, 1, - 0, 1, 1, 1, 1, - }, { - 1, 1, 1, 1, 1, // Empty Heart - 1, 0, 1, 0, 1, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 1, 0, 0, 0, 1, - 1, 1, 0, 1, 1, - 1, 1, 1, 1, 1, - }, { - 1, 1, 1, 1, 1, // Filled Heart - 1, 0, 1, 0, 1, - 0, 1, 0, 1, 0, - 0, 1, 1, 1, 0, - 0, 1, 1, 1, 0, - 1, 0, 1, 0, 1, - 1, 1, 0, 1, 1, - 1, 1, 1, 1, 1, - }, { - 0, 0, 0, 0, 0, // Ellipsis - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 1, 0, 1, 0, 1, - } - }; + char all_bar[25][5 * 8] = { + { + 0, 0, 0, 0, 0, // char u1[] = + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, + }, { + 0, 0, 0, 0, 0, // char u2[] = + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + }, { + 0, 0, 0, 0, 0, // char u3[] = + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + }, { + 0, 0, 0, 0, 0, // char u4[] = + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + }, { + 0, 0, 0, 0, 0, // char u5[] = + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + }, { + 0, 0, 0, 0, 0, // char u6[] = + 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + }, { + 0, 0, 0, 0, 0, // char u7[] = + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + }, { + 1, 1, 1, 1, 1, // char d1[] = + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + }, { + 1, 1, 1, 1, 1, // char d2[] = + 1, 1, 1, 1, 1, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + }, { + 1, 1, 1, 1, 1, // char d3[] = + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + }, { + 1, 1, 1, 1, 1, // char d4[] = + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + }, { + 1, 1, 1, 1, 1, // char d5[] = + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + }, { + 1, 1, 1, 1, 1, // char d6[] = + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + }, { + 1, 1, 1, 1, 1, // char d7[] = + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + 0, 0, 0, 0, 0, + }, { + 1, 0, 0, 0, 0, // char r1[] = + 1, 0, 0, 0, 0, + 1, 0, 0, 0, 0, + 1, 0, 0, 0, 0, + 1, 0, 0, 0, 0, + 1, 0, 0, 0, 0, + 1, 0, 0, 0, 0, + 1, 0, 0, 0, 0, + }, { + 1, 1, 0, 0, 0, // char r2[] = + 1, 1, 0, 0, 0, + 1, 1, 0, 0, 0, + 1, 1, 0, 0, 0, + 1, 1, 0, 0, 0, + 1, 1, 0, 0, 0, + 1, 1, 0, 0, 0, + 1, 1, 0, 0, 0, + }, { + 1, 1, 1, 0, 0, // char r3[] = + 1, 1, 1, 0, 0, + 1, 1, 1, 0, 0, + 1, 1, 1, 0, 0, + 1, 1, 1, 0, 0, + 1, 1, 1, 0, 0, + 1, 1, 1, 0, 0, + 1, 1, 1, 0, 0, + }, { + 1, 1, 1, 1, 0, // char r4[] = + 1, 1, 1, 1, 0, + 1, 1, 1, 1, 0, + 1, 1, 1, 1, 0, + 1, 1, 1, 1, 0, + 1, 1, 1, 1, 0, + 1, 1, 1, 1, 0, + 1, 1, 1, 1, 0, + }, { + 0, 0, 0, 0, 1, // char l1[] = + 0, 0, 0, 0, 1, + 0, 0, 0, 0, 1, + 0, 0, 0, 0, 1, + 0, 0, 0, 0, 1, + 0, 0, 0, 0, 1, + 0, 0, 0, 0, 1, + 0, 0, 0, 0, 1, + }, { + 0, 0, 0, 1, 1, // char l2[] = + 0, 0, 0, 1, 1, + 0, 0, 0, 1, 1, + 0, 0, 0, 1, 1, + 0, 0, 0, 1, 1, + 0, 0, 0, 1, 1, + 0, 0, 0, 1, 1, + 0, 0, 0, 1, 1, + }, { + 0, 0, 1, 1, 1, // char l3[] = + 0, 0, 1, 1, 1, + 0, 0, 1, 1, 1, + 0, 0, 1, 1, 1, + 0, 0, 1, 1, 1, + 0, 0, 1, 1, 1, + 0, 0, 1, 1, 1, + 0, 0, 1, 1, 1, + }, { + 0, 1, 1, 1, 1, // char l4[] = + 0, 1, 1, 1, 1, + 0, 1, 1, 1, 1, + 0, 1, 1, 1, 1, + 0, 1, 1, 1, 1, + 0, 1, 1, 1, 1, + 0, 1, 1, 1, 1, + 0, 1, 1, 1, 1, + }, { + 1, 1, 1, 1, 1, // Empty Heart + 1, 0, 1, 0, 1, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 1, 0, 0, 0, 1, + 1, 1, 0, 1, 1, + 1, 1, 1, 1, 1, + }, { + 1, 1, 1, 1, 1, // Filled Heart + 1, 0, 1, 0, 1, + 0, 1, 0, 1, 0, + 0, 1, 1, 1, 0, + 0, 1, 1, 1, 0, + 1, 0, 1, 0, 1, + 1, 1, 0, 1, 1, + 1, 1, 1, 1, 1, + }, { + 0, 0, 0, 0, 0, // Ellipsis + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 1, 0, 1, 0, 1, + } + }; - MtxOrb_set_char (car, &all_bar[type][0]); + MtxOrb_set_char (car, &all_bar[type][0]); } /////////////////STOP READING --- TRASH IS AT THE END//////////////// diff --git a/server/drivers/curses_drv.c b/server/drivers/curses_drv.c index 261a9fe..acdb3cb 100644 --- a/server/drivers/curses_drv.c +++ b/server/drivers/curses_drv.c @@ -35,100 +35,100 @@ static char icon_char = '@'; int curses_drv_init (struct lcd_logical_driver *driver, char *args) { - char *argv[64]; - int argc; - int i, j; + char *argv[64]; + int argc; + int i, j; - argc = get_args (argv, args, 64); + argc = get_args (argv, args, 64); - for (i = 0; i < argc; i++) { - if (0 == strcmp (argv[i], "-f") || 0 == strcmp (argv[i], "--forecolor")) { - if (i + 1 > argc) { - fprintf (stderr, "curses_init: %s requires an argument\n", argv[i]); - return -1; - } - // TODO: color display in curses driver! - printf ("Sorry, colors not yet implemented...\n"); - //strcpy(device, argv[++i]); - } else if (0 == strcmp (argv[i], "-b") || 0 == strcmp (argv[i], "--backcolor")) { - if (i + 1 > argc) { - fprintf (stderr, "curses_init: %s requires an argument\n", argv[i]); - return -1; - } - // TODO: color display in curses driver! - printf ("Sorry, colors not yet implemented...\n"); - //strcpy(device, argv[++i]); - } else if (0 == strcmp (argv[i], "-B") || 0 == strcmp (argv[i], "--backlight")) { - if (i + 1 > argc) { - fprintf (stderr, "curses_init: %s requires an argument\n", argv[i]); - return -1; - } - // TODO: color display in curses driver! - printf ("Sorry, colors not yet implemented...\n"); - //strcpy(device, argv[++i]); - } else if (0 == strcmp (argv[i], "-h") || 0 == strcmp (argv[i], "--help")) { - printf ("LCDproc [n]curses driver\n" "\t-f\t--forecolor\tChange the foreground color\n" "\t-b\t--backcolor\tChange the backlight's \"off\" color\n" "\t-B\t--backlight\tChange the backlight's \"on\" color\n" "\t-h\t--help\t\tShow this help information\n"); - return -1; - } else { - printf ("Invalid parameter: %s\n", argv[i]); - } + for (i = 0; i < argc; i++) { + if (0 == strcmp (argv[i], "-f") || 0 == strcmp (argv[i], "--forecolor")) { + if (i + 1 > argc) { + fprintf (stderr, "curses_init: %s requires an argument\n", argv[i]); + return -1; + } + // TODO: color display in curses driver! + printf ("Sorry, colors not yet implemented...\n"); + //strcpy(device, argv[++i]); + } else if (0 == strcmp (argv[i], "-b") || 0 == strcmp (argv[i], "--backcolor")) { + if (i + 1 > argc) { + fprintf (stderr, "curses_init: %s requires an argument\n", argv[i]); + return -1; + } + // TODO: color display in curses driver! + printf ("Sorry, colors not yet implemented...\n"); + //strcpy(device, argv[++i]); + } else if (0 == strcmp (argv[i], "-B") || 0 == strcmp (argv[i], "--backlight")) { + if (i + 1 > argc) { + fprintf (stderr, "curses_init: %s requires an argument\n", argv[i]); + return -1; + } + // TODO: color display in curses driver! + printf ("Sorry, colors not yet implemented...\n"); + //strcpy(device, argv[++i]); + } else if (0 == strcmp (argv[i], "-h") || 0 == strcmp (argv[i], "--help")) { + printf ("LCDproc [n]curses driver\n" "\t-f\t--forecolor\tChange the foreground color\n" "\t-b\t--backcolor\tChange the backlight's \"off\" color\n" "\t-B\t--backlight\tChange the backlight's \"on\" color\n" "\t-h\t--help\t\tShow this help information\n"); + return -1; + } else { + printf ("Invalid parameter: %s\n", argv[i]); + } - } + } - curses_drv = driver; + curses_drv = driver; - // Init curses... - initscr (); - cbreak (); - noecho (); - nodelay (stdscr, TRUE); - nonl (); - intrflush (stdscr, FALSE); - keypad (stdscr, TRUE); + // Init curses... + initscr (); + cbreak (); + noecho (); + nodelay (stdscr, TRUE); + nonl (); + intrflush (stdscr, FALSE); + keypad (stdscr, TRUE); - curses_drv_clear (); + curses_drv_clear (); - // Override output functions... - driver->clear = curses_drv_clear; - driver->string = curses_drv_string; - driver->chr = curses_drv_chr; - driver->vbar = curses_drv_vbar; - driver->init_vbar = NULL; - driver->hbar = curses_drv_hbar; - driver->init_hbar = NULL; - driver->num = curses_drv_num; - driver->init_num = curses_drv_init_num; + // Override output functions... + driver->clear = curses_drv_clear; + driver->string = curses_drv_string; + driver->chr = curses_drv_chr; + driver->vbar = curses_drv_vbar; + driver->init_vbar = NULL; + driver->hbar = curses_drv_hbar; + driver->init_hbar = NULL; + driver->num = curses_drv_num; + driver->init_num = curses_drv_init_num; - driver->init = curses_drv_init; - driver->close = curses_drv_close; - driver->flush = curses_drv_flush; - driver->flush_box = curses_drv_flush_box; - driver->contrast = NULL; - driver->backlight = NULL; - driver->set_char = NULL; - driver->icon = curses_drv_icon; - driver->draw_frame = curses_drv_draw_frame; + driver->init = curses_drv_init; + driver->close = curses_drv_close; + driver->flush = curses_drv_flush; + driver->flush_box = curses_drv_flush_box; + driver->contrast = NULL; + driver->backlight = NULL; + driver->set_char = NULL; + driver->icon = curses_drv_icon; + driver->draw_frame = curses_drv_draw_frame; - driver->getkey = curses_drv_getkey; + driver->getkey = curses_drv_getkey; - // Change the character used for padding the title bars... - PAD = '#'; - // Change the character used for "..." - ELLIPSIS = '~'; + // Change the character used for padding the title bars... + PAD = '#'; + // Change the character used for "..." + ELLIPSIS = '~'; - return 200; // 200 is arbitrary. (must be 1 or more) + return 200; // 200 is arbitrary. (must be 1 or more) } void curses_drv_close () { - // Close curses - clear (); - move (0, 0); - refresh (); - endwin (); + // Close curses + clear (); + move (0, 0); + refresh (); + endwin (); - drv_base_close (); + drv_base_close (); } @@ -138,7 +138,7 @@ curses_drv_close () void curses_drv_clear () { - clear (); + clear (); } @@ -149,21 +149,21 @@ curses_drv_clear () void curses_drv_string (int x, int y, char string[]) { - int i; - unsigned char *c; + int i; + unsigned char *c; - for (i = 0; string[i]; i++) { - c = &string[i]; - switch (*c) { - case 0: - *c = icon_char; - break; - case 255: - *c = '#'; - break; - } - } - mvaddstr (y - 1, x - 1, string); + for (i = 0; string[i]; i++) { + c = &string[i]; + switch (*c) { + case 0: + *c = icon_char; + break; + case 255: + *c = '#'; + break; + } + } + mvaddstr (y - 1, x - 1, string); } ///////////////////////////////////////////////////////////////// @@ -173,16 +173,16 @@ curses_drv_string (int x, int y, char string[]) void curses_drv_chr (int x, int y, char c) { - switch (c) { - case 0: - c = icon_char; - break; - case -1: - c = '#'; - break; - } + switch (c) { + case 0: + c = icon_char; + break; + case -1: + c = '#'; + break; + } - mvaddch (y - 1, x - 1, c); + mvaddch (y - 1, x - 1, c); } ///////////////////////////////////////////////////////////////// @@ -199,15 +199,15 @@ curses_drv_init_num () void curses_drv_num (int x, int num) { - char c; - int y, dx; + char c; + int y, dx; - c = '0' + num; + c = '0' + num; // printf(&c,"%1d",num); - for (y = 1; y < 5; y++) - for (dx = 0; dx < 3; dx++) - curses_drv_chr (x + dx, y, c); + for (y = 1; y < 5; y++) + for (dx = 0; dx < 3; dx++) + curses_drv_chr (x + dx, y, c); } ///////////////////////////////////////////////////////////////// @@ -216,17 +216,17 @@ curses_drv_num (int x, int num) void curses_drv_vbar (int x, int len) { - char map[] = "_.,,ooO8"; + char map[] = "_.,,ooO8"; - int y; - for (y = lcd.hgt; y > 0 && len > 0; y--) { - if (len >= lcd.cellhgt) - curses_drv_chr (x, y, '8'); - else - curses_drv_chr (x, y, map[len - 1]); + int y; + for (y = lcd.hgt; y > 0 && len > 0; y--) { + if (len >= lcd.cellhgt) + curses_drv_chr (x, y, '8'); + else + curses_drv_chr (x, y, map[len - 1]); - len -= lcd.cellhgt; - } + len -= lcd.cellhgt; + } // move(4-len/lcd.cellhgt, x-1); // vline(0, len/lcd.cellhgt); @@ -239,14 +239,14 @@ curses_drv_vbar (int x, int len) void curses_drv_hbar (int x, int y, int len) { - for (; x <= lcd.wid && len > 0; x++) { - if (len >= lcd.cellwid) - curses_drv_chr (x, y, '='); - else - curses_drv_chr (x, y, '-'); + for (; x <= lcd.wid && len > 0; x++) { + if (len >= lcd.cellwid) + curses_drv_chr (x, y, '='); + else + curses_drv_chr (x, y, '-'); - len -= lcd.cellwid; - } + len -= lcd.cellwid; + } // move(y-1, x-1); // hline(0, len/lcd.cellwid); @@ -258,18 +258,18 @@ curses_drv_hbar (int x, int y, int len) void curses_drv_icon (int which, char dest) { - if (dest == 0) - switch (which) { - case 0: - icon_char = '+'; - break; - case 1: - icon_char = '*'; - break; - default: - icon_char = '#'; - break; - } + if (dest == 0) + switch (which) { + case 0: + icon_char = '+'; + break; + case 1: + icon_char = '*'; + break; + default: + icon_char = '#'; + break; + } } @@ -279,13 +279,13 @@ curses_drv_icon (int which, char dest) void curses_drv_flush () { - curses_drv_draw_frame (curses_drv->framebuf); + curses_drv_draw_frame (curses_drv->framebuf); } void curses_drv_flush_box (int lft, int top, int rgt, int bot) { - curses_drv_flush (); + curses_drv_flush (); } void @@ -293,29 +293,29 @@ curses_drv_draw_frame (char *dat) { // border(0, 0, 0, 0, 0, 0, lcd.wid+1, lcd.hgt+1); - refresh (); + refresh (); } char curses_drv_getkey () { - int i; + int i; - i = getch (); + i = getch (); - if (i == KEY_LEFT) - return 'D'; - if (i == KEY_UP) - return 'B'; - if (i == KEY_DOWN) - return 'C'; - if (i == KEY_RIGHT) - return 'A'; + if (i == KEY_LEFT) + return 'D'; + if (i == KEY_UP) + return 'B'; + if (i == KEY_DOWN) + return 'C'; + if (i == KEY_RIGHT) + return 'A'; - if (i != ERR) - return i; - else - return 0; + if (i != ERR) + return i; + else + return 0; } diff --git a/server/drivers/debug.c b/server/drivers/debug.c index e46b772..d7d6281 100644 --- a/server/drivers/debug.c +++ b/server/drivers/debug.c @@ -19,46 +19,46 @@ int debug_init (struct lcd_logical_driver *driver, char *args) { - printf ("debug_init(%s)\n", device); + printf ("debug_init(%s)\n", device); - if (!driver->framebuf) { - printf ("Allocating frame buffer (%ix%i)\n", lcd.wid, lcd.hgt); - driver->framebuf = malloc (lcd.wid * lcd.hgt); - } + if (!driver->framebuf) { + printf ("Allocating frame buffer (%ix%i)\n", lcd.wid, lcd.hgt); + driver->framebuf = malloc (lcd.wid * lcd.hgt); + } - if (!driver->framebuf) { - debug_close (); - return -1; - } + if (!driver->framebuf) { + debug_close (); + return -1; + } - if (driver->framebuf) - printf ("Frame buffer: %i\n", (int) driver->framebuf); + if (driver->framebuf) + printf ("Frame buffer: %i\n", (int) driver->framebuf); - debug_clear (); + debug_clear (); - driver->clear = debug_clear; - driver->string = debug_string; - driver->chr = debug_chr; - driver->vbar = debug_vbar; - driver->hbar = debug_hbar; - driver->init_num = debug_init_num; - driver->num = debug_num; + driver->clear = debug_clear; + driver->string = debug_string; + driver->chr = debug_chr; + driver->vbar = debug_vbar; + driver->hbar = debug_hbar; + driver->init_num = debug_init_num; + driver->num = debug_num; - driver->init = debug_init; - driver->close = debug_close; - driver->flush = debug_flush; - driver->flush_box = debug_flush_box; - driver->contrast = debug_contrast; - driver->backlight = debug_backlight; - driver->set_char = debug_set_char; - driver->icon = debug_icon; - driver->init_vbar = debug_init_vbar; - driver->init_hbar = debug_init_hbar; - driver->draw_frame = debug_draw_frame; + driver->init = debug_init; + driver->close = debug_close; + driver->flush = debug_flush; + driver->flush_box = debug_flush_box; + driver->contrast = debug_contrast; + driver->backlight = debug_backlight; + driver->set_char = debug_set_char; + driver->icon = debug_icon; + driver->init_vbar = debug_init_vbar; + driver->init_hbar = debug_init_hbar; + driver->draw_frame = debug_draw_frame; - driver->getkey = debug_getkey; + driver->getkey = debug_getkey; - return 200; // 200 is arbitrary. (must be 1 or more) + return 200; // 200 is arbitrary. (must be 1 or more) } void @@ -66,15 +66,15 @@ debug_close () { // Ack! This shouldn't crash the program, but does.. Why?? - printf ("debug_close()\n"); + printf ("debug_close()\n"); // This is the line which crashes. - if (driver->framebuf) - free (driver->framebuf); + if (driver->framebuf) + free (driver->framebuf); - if (driver->framebuf) - printf ("Frame buffer: %i\n", (int) driver->framebuf); - driver->framebuf = NULL; + if (driver->framebuf) + printf ("Frame buffer: %i\n", (int) driver->framebuf); + driver->framebuf = NULL; // printf("debug_close() finished\n"); } @@ -84,9 +84,9 @@ debug_close () void debug_clear () { - printf ("clear()\n"); + printf ("clear()\n"); - memset (driver->framebuf, ' ', lcd.wid * lcd.hgt); + memset (driver->framebuf, ' ', lcd.wid * lcd.hgt); } @@ -96,9 +96,9 @@ debug_clear () void debug_flush () { - printf ("flush()\n"); + printf ("flush()\n"); - lcd.draw_frame (); + lcd.draw_frame (); } ///////////////////////////////////////////////////////////////// @@ -109,16 +109,16 @@ void debug_string (int x, int y, char string[]) { - int i; + int i; - printf ("string(%i, %i):%s \n", x, y, string); + printf ("string(%i, %i):%s \n", x, y, string); - x -= 1; // Convert 1-based coords to 0-based... - y -= 1; + x -= 1; // Convert 1-based coords to 0-based... + y -= 1; - for (i = 0; string[i]; i++) { - driver->framebuf[(y * lcd.wid) + x + i] = string[i]; - } + for (i = 0; string[i]; i++) { + driver->framebuf[(y * lcd.wid) + x + i] = string[i]; + } } ///////////////////////////////////////////////////////////////// @@ -128,58 +128,58 @@ debug_string (int x, int y, char string[]) void debug_chr (int x, int y, char c) { - printf ("character(%i, %i):%c\n", x, y, c); + printf ("character(%i, %i):%c\n", x, y, c); - y--; - x--; + y--; + x--; - lcd.framebuf[(y * lcd.wid) + x] = c; + lcd.framebuf[(y * lcd.wid) + x] = c; } void debug_contrast (int contrast) { - printf ("Contrast: %i\n", contrast); + printf ("Contrast: %i\n", contrast); } void debug_backlight (int on) { - if (on) { - printf ("Backlight ON\n"); - } else { - printf ("Backlight OFF\n"); - } + if (on) { + printf ("Backlight ON\n"); + } else { + printf ("Backlight OFF\n"); + } } void debug_init_vbar () { - printf ("Vertical bars.\n"); + printf ("Vertical bars.\n"); } void debug_init_hbar () { - printf ("Horizontal bars.\n"); + printf ("Horizontal bars.\n"); } void debug_init_num () { - printf ("Big Numbers.\n"); + printf ("Big Numbers.\n"); } void debug_num (int x, int num) { - printf ("BigNum(%i, %i)\n", x, num); + printf ("BigNum(%i, %i)\n", x, num); } void debug_set_char (int n, char *dat) { - printf ("Set Character %i\n", n); + printf ("Set Character %i\n", n); } ///////////////////////////////////////////////////////////////// @@ -188,15 +188,15 @@ debug_set_char (int n, char *dat) void debug_vbar (int x, int len) { - int y; + int y; - printf ("Vbar(%i, %i)\n", x, len); + printf ("Vbar(%i, %i)\n", x, len); - for (y = lcd.hgt; y > 0 && len > 0; y--) { - debug_chr (x, y, '|'); + for (y = lcd.hgt; y > 0 && len > 0; y--) { + debug_chr (x, y, '|'); - len -= lcd.cellhgt; - } + len -= lcd.cellhgt; + } } @@ -206,13 +206,13 @@ debug_vbar (int x, int len) void debug_hbar (int x, int y, int len) { - printf ("Hbar(%i, %i, %i)\n", x, y, len); + printf ("Hbar(%i, %i, %i)\n", x, y, len); - for (; x < lcd.wid && len > 0; x++) { - debug_chr (x, y, '-'); + for (; x < lcd.wid && len > 0; x++) { + debug_chr (x, y, '-'); - len -= lcd.cellwid; - } + len -= lcd.cellwid; + } } @@ -222,58 +222,58 @@ debug_hbar (int x, int y, int len) void debug_icon (int which, char dest) { - printf ("Char %i is icon %i\n", dest, which); + printf ("Char %i is icon %i\n", dest, which); } void debug_flush_box (int lft, int top, int rgt, int bot) { - printf ("Flush Box(%i, %i)-(%i, %i)\n", lft, top, rgt, bot); + printf ("Flush Box(%i, %i)-(%i, %i)\n", lft, top, rgt, bot); - debug_flush (); + debug_flush (); } void debug_draw_frame (char *dat) { - int i, j; + int i, j; - char out[LCD_MAX_WIDTH]; + char out[LCD_MAX_WIDTH]; - printf ("draw_frame()\n"); + printf ("draw_frame()\n"); - if (!dat) - return; + if (!dat) + return; // printf("Frame (%ix%i): \n%s\n", lcd.wid, lcd.hgt, dat); - for (i = 0; i < lcd.wid; i++) { - out[i] = '-'; - } - out[lcd.wid] = 0; - printf ("+%s+\n", out); + for (i = 0; i < lcd.wid; i++) { + out[i] = '-'; + } + out[lcd.wid] = 0; + printf ("+%s+\n", out); - for (i = 0; i < lcd.hgt; i++) { - for (j = 0; j < lcd.wid; j++) { - out[j] = dat[j + (i * lcd.wid)]; - } - out[lcd.wid] = 0; - printf ("|%s|\n", out); + for (i = 0; i < lcd.hgt; i++) { + for (j = 0; j < lcd.wid; j++) { + out[j] = dat[j + (i * lcd.wid)]; + } + out[lcd.wid] = 0; + printf ("|%s|\n", out); - } + } - for (i = 0; i < lcd.wid; i++) { - out[i] = '-'; - } - out[lcd.wid] = 0; - printf ("+%s+\n", out); + for (i = 0; i < lcd.wid; i++) { + out[i] = '-'; + } + out[lcd.wid] = 0; + printf ("+%s+\n", out); } char debug_getkey () { - printf ("Trying to grab keypress.\n"); - return 0; + printf ("Trying to grab keypress.\n"); + return 0; } diff --git a/server/drivers/drv_base.c b/server/drivers/drv_base.c index a2e38e4..00eca2b 100644 --- a/server/drivers/drv_base.c +++ b/server/drivers/drv_base.c @@ -25,51 +25,51 @@ drv_base_init (struct lcd_logical_driver *driver, char *args) { // printf("drv_base_init()\n"); - drv_base = driver; + drv_base = driver; - driver->wid = 20; - driver->hgt = 4; + driver->wid = 20; + driver->hgt = 4; - // You must use driver->framebuf here, but may use lcd.framebuf later. - if (!driver->framebuf) - driver->framebuf = malloc (driver->wid * driver->hgt); + // You must use driver->framebuf here, but may use lcd.framebuf later. + if (!driver->framebuf) + driver->framebuf = malloc (driver->wid * driver->hgt); - if (!driver->framebuf) { - drv_base_close (); - return -1; - } + if (!driver->framebuf) { + drv_base_close (); + return -1; + } // Debugging... // if(lcd.framebuf) printf("Frame buffer: %i\n", (int)lcd.framebuf); - memset (driver->framebuf, ' ', driver->wid * driver->hgt); + memset (driver->framebuf, ' ', driver->wid * driver->hgt); // drv_base_clear(); - driver->cellwid = 5; - driver->cellhgt = 8; + driver->cellwid = 5; + driver->cellhgt = 8; - driver->clear = drv_base_clear; - driver->string = drv_base_string; - driver->chr = drv_base_chr; - driver->vbar = drv_base_vbar; - driver->init_vbar = drv_base_init_vbar; - driver->hbar = drv_base_hbar; - driver->init_hbar = drv_base_init_hbar; - driver->num = drv_base_num; - driver->init_num = drv_base_init_num; + driver->clear = drv_base_clear; + driver->string = drv_base_string; + driver->chr = drv_base_chr; + driver->vbar = drv_base_vbar; + driver->init_vbar = drv_base_init_vbar; + driver->hbar = drv_base_hbar; + driver->init_hbar = drv_base_init_hbar; + driver->num = drv_base_num; + driver->init_num = drv_base_init_num; - driver->init = drv_base_init; - driver->close = drv_base_close; - driver->flush = drv_base_flush; - driver->flush_box = drv_base_flush_box; - driver->contrast = drv_base_contrast; - driver->backlight = drv_base_backlight; - driver->set_char = drv_base_set_char; - driver->icon = drv_base_icon; - driver->draw_frame = drv_base_draw_frame; + driver->init = drv_base_init; + driver->close = drv_base_close; + driver->flush = drv_base_flush; + driver->flush_box = drv_base_flush_box; + driver->contrast = drv_base_contrast; + driver->backlight = drv_base_backlight; + driver->set_char = drv_base_set_char; + driver->icon = drv_base_icon; + driver->draw_frame = drv_base_draw_frame; - driver->getkey = drv_base_getkey; + driver->getkey = drv_base_getkey; - return 200; // 200 is arbitrary. (must be 1 or more) + return 200; // 200 is arbitrary. (must be 1 or more) } // Below here, you may use either lcd.framebuf or driver->framebuf.. @@ -79,10 +79,10 @@ drv_base_init (struct lcd_logical_driver *driver, char *args) void drv_base_close () { - if (lcd.framebuf != NULL) - free (lcd.framebuf); + if (lcd.framebuf != NULL) + free (lcd.framebuf); - lcd.framebuf = NULL; + lcd.framebuf = NULL; } ///////////////////////////////////////////////////////////////// @@ -91,7 +91,7 @@ drv_base_close () void drv_base_clear () { - memset (lcd.framebuf, ' ', lcd.wid * lcd.hgt); + memset (lcd.framebuf, ' ', lcd.wid * lcd.hgt); } @@ -101,7 +101,7 @@ drv_base_clear () void drv_base_flush () { - //lcd.draw_frame(lcd.framebuf); + //lcd.draw_frame(lcd.framebuf); } ///////////////////////////////////////////////////////////////// @@ -111,17 +111,17 @@ drv_base_flush () void drv_base_string (int x, int y, char string[]) { - int i; + int i; - x -= 1; // Convert 1-based coords to 0-based... - y -= 1; + x -= 1; // Convert 1-based coords to 0-based... + y -= 1; - for (i = 0; string[i]; i++) { - // Check for buffer overflows... - if ((y * lcd.wid) + x + i > (lcd.wid * lcd.hgt)) - break; - lcd.framebuf[(y * lcd.wid) + x + i] = string[i]; - } + for (i = 0; string[i]; i++) { + // Check for buffer overflows... + if ((y * lcd.wid) + x + i > (lcd.wid * lcd.hgt)) + break; + lcd.framebuf[(y * lcd.wid) + x + i] = string[i]; + } } ///////////////////////////////////////////////////////////////// @@ -131,10 +131,10 @@ drv_base_string (int x, int y, char string[]) void drv_base_chr (int x, int y, char c) { - y--; - x--; + y--; + x--; - lcd.framebuf[(y * lcd.wid) + x] = c; + lcd.framebuf[(y * lcd.wid) + x] = c; } ////////////////////////////////////////////////////////////////////// @@ -145,7 +145,7 @@ int drv_base_contrast (int contrast) { // printf("Contrast: %i\n", contrast); - return -1; + return -1; } ////////////////////////////////////////////////////////////////////// @@ -154,16 +154,16 @@ drv_base_contrast (int contrast) void drv_base_backlight (int on) { - /* - if(on) - { - printf("Backlight ON\n"); - } - else - { - printf("Backlight OFF\n"); - } - */ + /* + if(on) + { + printf("Backlight ON\n"); + } + else + { + printf("Backlight OFF\n"); + } + */ } ////////////////////////////////////////////////////////////////////// @@ -217,12 +217,12 @@ drv_base_set_char (int n, char *dat) void drv_base_vbar (int x, int len) { - int y; - for (y = lcd.hgt; y > 0 && len > 0; y--) { - drv_base_chr (x, y, '|'); + int y; + for (y = lcd.hgt; y > 0 && len > 0; y--) { + drv_base_chr (x, y, '|'); - len -= lcd.cellhgt; - } + len -= lcd.cellhgt; + } } @@ -232,11 +232,11 @@ drv_base_vbar (int x, int len) void drv_base_hbar (int x, int y, int len) { - for (; x <= lcd.wid && len > 0; x++) { - drv_base_chr (x, y, '-'); + for (; x <= lcd.wid && len > 0; x++) { + drv_base_chr (x, y, '-'); - len -= lcd.cellwid; - } + len -= lcd.cellwid; + } } @@ -258,7 +258,7 @@ drv_base_icon (int which, char dest) void drv_base_flush_box (int lft, int top, int rgt, int bot) { - //drv_base_flush(); + //drv_base_flush(); } @@ -313,5 +313,5 @@ drv_base_draw_frame (char *dat) char drv_base_getkey () { - return 0; + return 0; } diff --git a/server/drivers/hd44780-4bit.c b/server/drivers/hd44780-4bit.c index 2dd6782..49cdc93 100644 --- a/server/drivers/hd44780-4bit.c +++ b/server/drivers/hd44780-4bit.c @@ -61,127 +61,127 @@ static unsigned char EnMask[] = { EN1, EN2, EN3, STRB, LF, INIT, SEL }; static int EnMaskSize = sizeof (EnMask) / sizeof (unsigned char); static unsigned int lptPort; -static int extIF = 0; // non-zero if extended interface +static int extIF = 0; // non-zero if extended interface // initialisation function int hd_init_4bit (HD44780_functions * hd44780_functions, lcd_logical_driver * driver, char *args, unsigned int port) { - // TODO: remove magic numbers below - char *argv[64]; - int argc; - int i; - int displayID = EN1 | EN2; + // TODO: remove magic numbers below + char *argv[64]; + int argc; + int i; + int displayID = EN1 | EN2; - lptPort = port; + lptPort = port; - hd44780_functions->senddata = lcdstat_HD44780_senddata; + hd44780_functions->senddata = lcdstat_HD44780_senddata; - // parse command-line arguments - argc = get_args (argv, args, 64); + // parse command-line arguments + argc = get_args (argv, args, 64); - for (i = 0; i < argc; ++i) { - if (strcmp (argv[i], "-e") == 0 || strcmp (argv[i], "--extended") == 0) { - extIF = 1; - if ((ioperm (port + 2, 1, 255)) == -1) { - fprintf (stderr, "HD44780_init: failed (%s)\n", strerror (errno)); - return -1; - } - } - } + for (i = 0; i < argc; ++i) { + if (strcmp (argv[i], "-e") == 0 || strcmp (argv[i], "--extended") == 0) { + extIF = 1; + if ((ioperm (port + 2, 1, 255)) == -1) { + fprintf (stderr, "HD44780_init: failed (%s)\n", strerror (errno)); + return -1; + } + } + } - // powerup the lcd now - if (extIF) { - displayID |= EN3; - port_out (lptPort + 2, 0 ^ OUTMASK); - } + // powerup the lcd now + if (extIF) { + displayID |= EN3; + port_out (lptPort + 2, 0 ^ OUTMASK); + } - port_out (lptPort, displayID | 0x03); - if (extIF) - port_out (lptPort + 2, (EnMask[3] | EnMask[4] | EnMask[5] | EnMask[6]) ^ OUTMASK); - hd44780_functions->uPause (1); - port_out (lptPort, 0x03); - if (extIF) - port_out (lptPort + 2, 0 ^ OUTMASK); - hd44780_functions->uPause (4100); + port_out (lptPort, displayID | 0x03); + if (extIF) + port_out (lptPort + 2, (EnMask[3] | EnMask[4] | EnMask[5] | EnMask[6]) ^ OUTMASK); + hd44780_functions->uPause (1); + port_out (lptPort, 0x03); + if (extIF) + port_out (lptPort + 2, 0 ^ OUTMASK); + hd44780_functions->uPause (4100); - port_out (lptPort, displayID | 0x03); - if (extIF) - port_out (lptPort + 2, (EnMask[3] | EnMask[4] | EnMask[5] | EnMask[6]) ^ OUTMASK); - hd44780_functions->uPause (1); - port_out (lptPort, 0x03); - if (extIF) - port_out (lptPort + 2, 0 ^ OUTMASK); - hd44780_functions->uPause (100); + port_out (lptPort, displayID | 0x03); + if (extIF) + port_out (lptPort + 2, (EnMask[3] | EnMask[4] | EnMask[5] | EnMask[6]) ^ OUTMASK); + hd44780_functions->uPause (1); + port_out (lptPort, 0x03); + if (extIF) + port_out (lptPort + 2, 0 ^ OUTMASK); + hd44780_functions->uPause (100); - port_out (lptPort, displayID | 0x03); - if (extIF) - port_out (lptPort + 2, (EnMask[3] | EnMask[4] | EnMask[5] | EnMask[6]) ^ OUTMASK); - hd44780_functions->uPause (1); - port_out (lptPort, 0x03); - if (extIF) - port_out (lptPort + 2, 0 ^ OUTMASK); - hd44780_functions->uPause (40); + port_out (lptPort, displayID | 0x03); + if (extIF) + port_out (lptPort + 2, (EnMask[3] | EnMask[4] | EnMask[5] | EnMask[6]) ^ OUTMASK); + hd44780_functions->uPause (1); + port_out (lptPort, 0x03); + if (extIF) + port_out (lptPort + 2, 0 ^ OUTMASK); + hd44780_functions->uPause (40); - // now in 8-bit mode... set 4-bit mode - port_out (lptPort, displayID | 0x02); - if (extIF) - port_out (lptPort + 2, (EnMask[3] | EnMask[4] | EnMask[5] | EnMask[6]) ^ OUTMASK); - hd44780_functions->uPause (1); - port_out (lptPort, 0x02); - if (extIF) - port_out (lptPort + 2, 0 ^ OUTMASK); - hd44780_functions->uPause (40); + // now in 8-bit mode... set 4-bit mode + port_out (lptPort, displayID | 0x02); + if (extIF) + port_out (lptPort + 2, (EnMask[3] | EnMask[4] | EnMask[5] | EnMask[6]) ^ OUTMASK); + hd44780_functions->uPause (1); + port_out (lptPort, 0x02); + if (extIF) + port_out (lptPort + 2, 0 ^ OUTMASK); + hd44780_functions->uPause (40); - common_init (IF_4bit); - return 0; + common_init (IF_4bit); + return 0; } // lcdstat_HD44780_senddata void lcdstat_HD44780_senddata (unsigned char displayID, unsigned char iflags, unsigned char ch) { - unsigned char dispID = 0, flags = 0; - unsigned char h = (ch >> 4) & 0x0f; // high and low nibbles - unsigned char l = ch & 0x0f; + unsigned char dispID = 0, flags = 0; + unsigned char h = (ch >> 4) & 0x0f; // high and low nibbles + unsigned char l = ch & 0x0f; - if (iflags == RS_INSTR) - flags = 0; - else //if (iflags == RS_DATA) - flags = RS; + if (iflags == RS_INSTR) + flags = 0; + else //if (iflags == RS_DATA) + flags = RS; - if (displayID <= 3) { - if (displayID == 0) - dispID = EnMask[0] | EnMask[1] | EnMask[2]; - else - dispID = EnMask[displayID - 1]; + if (displayID <= 3) { + if (displayID == 0) + dispID = EnMask[0] | EnMask[1] | EnMask[2]; + else + dispID = EnMask[displayID - 1]; - port_out (lptPort, flags | h); - hd44780_functions->uPause (2); - port_out (lptPort, dispID | flags | h); - hd44780_functions->uPause (4); - port_out (lptPort, flags | h); + port_out (lptPort, flags | h); + hd44780_functions->uPause (2); + port_out (lptPort, dispID | flags | h); + hd44780_functions->uPause (4); + port_out (lptPort, flags | h); - port_out (lptPort, dispID | flags | l); - hd44780_functions->uPause (4); - port_out (lptPort, flags | l); - } + port_out (lptPort, dispID | flags | l); + hd44780_functions->uPause (4); + port_out (lptPort, flags | l); + } - if (extIF && (displayID == 0 || displayID >= 4)) { - if (displayID == 0) - dispID = EnMask[3] | EnMask[4] | EnMask[5] | EnMask[6]; - else - dispID = EnMask[(displayID - 1) % EnMaskSize]; + if (extIF && (displayID == 0 || displayID >= 4)) { + if (displayID == 0) + dispID = EnMask[3] | EnMask[4] | EnMask[5] | EnMask[6]; + else + dispID = EnMask[(displayID - 1) % EnMaskSize]; - port_out (lptPort, flags | h); - hd44780_functions->uPause (2); - port_out (lptPort + 2, dispID ^ OUTMASK); - hd44780_functions->uPause (4); - port_out (lptPort + 2, 0 ^ OUTMASK); + port_out (lptPort, flags | h); + hd44780_functions->uPause (2); + port_out (lptPort + 2, dispID ^ OUTMASK); + hd44780_functions->uPause (4); + port_out (lptPort + 2, 0 ^ OUTMASK); - port_out (lptPort, flags | l); - port_out (lptPort + 2, dispID ^ OUTMASK); - hd44780_functions->uPause (4); - port_out (lptPort + 2, 0 ^ OUTMASK); - } + port_out (lptPort, flags | l); + port_out (lptPort + 2, dispID ^ OUTMASK); + hd44780_functions->uPause (4); + port_out (lptPort + 2, 0 ^ OUTMASK); + } } diff --git a/server/drivers/hd44780-4bit.h b/server/drivers/hd44780-4bit.h index 18feb2e..c5d821a 100644 --- a/server/drivers/hd44780-4bit.h +++ b/server/drivers/hd44780-4bit.h @@ -1,8 +1,8 @@ #ifndef HD_LCDSTAT_H #define HD_LCDSTAT_H -#include "lcd.h" /* for lcd_logical_driver */ -#include "hd44780-low.h" /* for HD44780_functions */ +#include "lcd.h" /* for lcd_logical_driver */ +#include "hd44780-low.h" /* for HD44780_functions */ // initialise this particular driver int hd_init_4bit (HD44780_functions * hd44780_functions, lcd_logical_driver * driver, char *args, unsigned int port); diff --git a/server/drivers/hd44780-drivers.h b/server/drivers/hd44780-drivers.h index 65b57de..877804c 100644 --- a/server/drivers/hd44780-drivers.h +++ b/server/drivers/hd44780-drivers.h @@ -18,30 +18,30 @@ // add new connection type header files here enum connectionType { HD_4bit, HD_8bit, HD_serialLpt, HD_winamp, - // add new connection types here + // add new connection types here - HD_unknown + HD_unknown }; static struct ConnectionMapping { - enum connectionType type; - char *connectionTypeStr; - int (*init_fn) (HD44780_functions * hd44780_functions, lcd_logical_driver * driver, char *args, unsigned int port); - const char *helpMsg; + enum connectionType type; + char *connectionTypeStr; + int (*init_fn) (HD44780_functions * hd44780_functions, lcd_logical_driver * driver, char *args, unsigned int port); + const char *helpMsg; } connectionMapping[] = { - // connectionType enumerator - // string to identify connection on command line - // your initialisation function - // help string for your particular connection - { - HD_4bit, "4bit", hd_init_4bit, "\t-e\t--extended\tEnable three or more displays\n"}, { - HD_8bit, "8bit", hd_init_ext8bit, "\tnone\n"}, { - HD_serialLpt, "serialLpt", hd_init_serialLpt, "\tnone\n"}, { - HD_winamp, "winamp", hd_init_winamp, "\t-e\t--extended\tEnable three or more displays\n"}, - // add new connection types and their string specifier here - // default, end of structure element (do not delete) - { - HD_unknown, "", NULL, ""} + // connectionType enumerator + // string to identify connection on command line + // your initialisation function + // help string for your particular connection + { + HD_4bit, "4bit", hd_init_4bit, "\t-e\t--extended\tEnable three or more displays\n"}, { + HD_8bit, "8bit", hd_init_ext8bit, "\tnone\n"}, { + HD_serialLpt, "serialLpt", hd_init_serialLpt, "\tnone\n"}, { + HD_winamp, "winamp", hd_init_winamp, "\t-e\t--extended\tEnable three or more displays\n"}, + // add new connection types and their string specifier here + // default, end of structure element (do not delete) + { + HD_unknown, "", NULL, ""} }; #endif diff --git a/server/drivers/hd44780-ext8bit.c b/server/drivers/hd44780-ext8bit.c index 76857be..d95046b 100644 --- a/server/drivers/hd44780-ext8bit.c +++ b/server/drivers/hd44780-ext8bit.c @@ -61,41 +61,41 @@ static int semid; int hd_init_ext8bit (HD44780_functions * hd44780_functions, lcd_logical_driver * driver, char *args, unsigned int port) { - lptPort = port; - semid = sem_get (); + lptPort = port; + semid = sem_get (); - hd44780_functions->senddata = lcdtime_HD44780_senddata; + hd44780_functions->senddata = lcdtime_HD44780_senddata; - if ((ioperm (port + 2, 1, 255)) == -1) { - fprintf (stderr, "HD44780_init: failed (%s)\n", strerror (errno)); - return -1; - } + if ((ioperm (port + 2, 1, 255)) == -1) { + fprintf (stderr, "HD44780_init: failed (%s)\n", strerror (errno)); + return -1; + } - common_init (IF_8bit); - return 0; + common_init (IF_8bit); + return 0; } // lcdtime_HD44780_senddata void lcdtime_HD44780_senddata (unsigned char displayID, unsigned char flags, unsigned char ch) { - unsigned char dispID = 0, portControl; + unsigned char dispID = 0, portControl; - if (displayID == 1) - dispID |= EN1; - else //if (displayID == 0) - dispID |= EN1; + if (displayID == 1) + dispID |= EN1; + else //if (displayID == 0) + dispID |= EN1; - if (flags == RS_DATA) - portControl = CHAR; - else - portControl = CTRL; + if (flags == RS_DATA) + portControl = CHAR; + else + portControl = CTRL; - sem_wait (semid); - port_out (lptPort + 2, SETUPLCD); - port_out (lptPort, ch); - port_out (lptPort + 2, dispID | portControl); - hd44780_functions->uPause (1); - port_out (lptPort + 2, portControl); - sem_signal (semid); + sem_wait (semid); + port_out (lptPort + 2, SETUPLCD); + port_out (lptPort, ch); + port_out (lptPort + 2, dispID | portControl); + hd44780_functions->uPause (1); + port_out (lptPort + 2, portControl); + sem_signal (semid); } diff --git a/server/drivers/hd44780-ext8bit.h b/server/drivers/hd44780-ext8bit.h index e078b26..a3c3c1d 100644 --- a/server/drivers/hd44780-ext8bit.h +++ b/server/drivers/hd44780-ext8bit.h @@ -1,8 +1,8 @@ #ifndef HD_EXT8BIT_H #define HD_EXT8BIT_H -#include "lcd.h" /* for lcd_logical_driver */ -#include "hd44780-low.h" /* for HD44780_functions */ +#include "lcd.h" /* for lcd_logical_driver */ +#include "hd44780-low.h" /* for HD44780_functions */ // initialise this particular driver int hd_init_ext8bit (HD44780_functions * hd44780_functions, lcd_logical_driver * driver, char *args, unsigned int port); diff --git a/server/drivers/hd44780-low.h b/server/drivers/hd44780-low.h index 60d1e23..3499df1 100644 --- a/server/drivers/hd44780-low.h +++ b/server/drivers/hd44780-low.h @@ -10,24 +10,24 @@ void common_init (enum ifWidth ifwidth); // Structures holding pointers to HD44780 specific functions typedef struct hwDependentFns { - // microsec pauses - void (*uPause) (int microSecondsTenths); + // microsec pauses + void (*uPause) (int microSecondsTenths); - // senddata to the LCD - // dispID - display to send data to (0 = all displays) - // flags - data or instruction command (RS_DATA | RS_INSTR) - // ch - character to display or instruction value - void (*senddata) (unsigned char dispID, unsigned char flags, unsigned char ch); + // senddata to the LCD + // dispID - display to send data to (0 = all displays) + // flags - data or instruction command (RS_DATA | RS_INSTR) + // ch - character to display or instruction value + void (*senddata) (unsigned char dispID, unsigned char flags, unsigned char ch); - // position the cursor - // dispID - display to send data to (0 = all displays) - // DDaddr - display data address (see sect 2.5.2 of the LCD module FAQ) - void (*position) (int dispID, int DDaddr); + // position the cursor + // dispID - display to send data to (0 = all displays) + // DDaddr - display data address (see sect 2.5.2 of the LCD module FAQ) + void (*position) (int dispID, int DDaddr); - // toggle vertical autoscroll on all displays - // on - non-zero turns autoscroll on, zero value turns it off - void (*autoscroll) (int on); -} HD44780_functions; /* for want of a better name :-) */ + // toggle vertical autoscroll on all displays + // on - non-zero turns autoscroll on, zero value turns it off + void (*autoscroll) (int on); +} HD44780_functions; /* for want of a better name :-) */ extern HD44780_functions *hd44780_functions; @@ -64,8 +64,8 @@ extern HD44780_functions *hd44780_functions; #define IF_4BIT 0x00 #define TWOLINE 0x08 #define ONELINE 0x00 -#define LARGECHAR 0x04 /* 5x11 characters */ -#define SMALLCHAR 0x00 /* 5x8 characters */ +#define LARGECHAR 0x04 /* 5x11 characters */ +#define SMALLCHAR 0x00 /* 5x8 characters */ #define SETCHAR 0x40 @@ -73,11 +73,11 @@ extern HD44780_functions *hd44780_functions; // Parallel port pin definitions // Output lines -#define nSTRB 0x01 /* negative logic */ +#define nSTRB 0x01 /* negative logic */ #define STRB 0x01 #define nLF 0x02 #define LF 0x02 -#define INIT 0x04 /* the only positive logic output line */ +#define INIT 0x04 /* the only positive logic output line */ #define nSEL 0x08 #define SEL 0x08 diff --git a/server/drivers/hd44780-serialLpt.c b/server/drivers/hd44780-serialLpt.c index 8ae5c13..1dff000 100644 --- a/server/drivers/hd44780-serialLpt.c +++ b/server/drivers/hd44780-serialLpt.c @@ -50,110 +50,110 @@ static char lastkey = 0; int hd_init_serialLpt (HD44780_functions * hd44780_functions, lcd_logical_driver * driver, char *args, unsigned int port) { - int displayID = EN1 | EN2; + int displayID = EN1 | EN2; - lp = port; + lp = port; - hd44780_functions->senddata = lcdserLpt_HD44780_senddata; + hd44780_functions->senddata = lcdserLpt_HD44780_senddata; - // TODO: enable keypad only if specified on command line - driver->getkey = lcdserLpt_HD44780_getkey; + // TODO: enable keypad only if specified on command line + driver->getkey = lcdserLpt_HD44780_getkey; - // setup the lcd in 4 bit mode - shiftreg (displayID, 3); - hd44780_functions->uPause (4100); + // setup the lcd in 4 bit mode + shiftreg (displayID, 3); + hd44780_functions->uPause (4100); - shiftreg (displayID, 3); - hd44780_functions->uPause (100); + shiftreg (displayID, 3); + hd44780_functions->uPause (100); - shiftreg (displayID, 3); - hd44780_functions->uPause (40); + shiftreg (displayID, 3); + hd44780_functions->uPause (40); - shiftreg (displayID, 2); - hd44780_functions->uPause (40); + shiftreg (displayID, 2); + hd44780_functions->uPause (40); - // set display type functions - lcdserLpt_HD44780_senddata (0, RS_INSTR, FUNCSET | IF_4BIT | TWOLINE | SMALLCHAR); - // clear - lcdserLpt_HD44780_senddata (0, RS_INSTR, CLEAR); - hd44780_functions->uPause (1600); - // Now turn on the display - lcdserLpt_HD44780_senddata (displayID, RS_INSTR, ONOFFCTRL | DISPON | CURSOROFF | CURSORNOBLINK); - hd44780_functions->uPause (1600); + // set display type functions + lcdserLpt_HD44780_senddata (0, RS_INSTR, FUNCSET | IF_4BIT | TWOLINE | SMALLCHAR); + // clear + lcdserLpt_HD44780_senddata (0, RS_INSTR, CLEAR); + hd44780_functions->uPause (1600); + // Now turn on the display + lcdserLpt_HD44780_senddata (displayID, RS_INSTR, ONOFFCTRL | DISPON | CURSOROFF | CURSORNOBLINK); + hd44780_functions->uPause (1600); - return 0; + return 0; } void lcdserLpt_HD44780_senddata (unsigned char displayID, unsigned char flags, unsigned char ch) { - unsigned char dispID = 0, portControl = 0, h = ch >> 4, l = ch & 15; + unsigned char dispID = 0, portControl = 0, h = ch >> 4, l = ch & 15; - if (displayID == 1) - dispID |= EN1; - else if (displayID == 2) - dispID |= EN2; - else - dispID |= EN1 | EN2; + if (displayID == 1) + dispID |= EN1; + else if (displayID == 2) + dispID |= EN2; + else + dispID |= EN1 | EN2; - if (flags == RS_DATA) - portControl = RS; - else - portControl = 0; + if (flags == RS_DATA) + portControl = RS; + else + portControl = 0; - shiftreg (displayID, flags | portControl | h); - shiftreg (displayID, flags | portControl | l); + shiftreg (displayID, flags | portControl | h); + shiftreg (displayID, flags | portControl | l); - /* TODO: instead of delay read keys here */ + /* TODO: instead of delay read keys here */ } char lcdserLpt_HD44780_getkey () { - // TODO: a keypad scan that does not use shift register - // define a key table - char keytr[] = "ABCDEFGH"; - int n; + // TODO: a keypad scan that does not use shift register + // define a key table + char keytr[] = "ABCDEFGH"; + int n; - rawshift (0); //send all line on shift register low - hd44780_functions->uPause (1); - if ((port_in (lp + 1) & 32) == 0) //test if line back is low - if not return(0) - { //else - //start walking a single zero across the eight lines - for (n = 7; n >= 0; n--) { - rawshift (255 - (1 << n)); - hd44780_functions->uPause (1); + rawshift (0); //send all line on shift register low + hd44780_functions->uPause (1); + if ((port_in (lp + 1) & 32) == 0) //test if line back is low - if not return(0) + { //else + //start walking a single zero across the eight lines + for (n = 7; n >= 0; n--) { + rawshift (255 - (1 << n)); + hd44780_functions->uPause (1); - if ((port_in (lp + 1) & 32) == 0) // check if line back is low if yes debounce - { - if (lastkey == keytr[n]) - return (0); - // printf("key is %c %d\n",keytr[n],n); - lastkey = keytr[n]; - return (keytr[n]); //return correct key code. - } - } - } //else fall out and return(0) [too transient a keypress] - lastkey = 0; - return (0); + if ((port_in (lp + 1) & 32) == 0) // check if line back is low if yes debounce + { + if (lastkey == keytr[n]) + return (0); + // printf("key is %c %d\n",keytr[n],n); + lastkey = keytr[n]; + return (keytr[n]); //return correct key code. + } + } + } //else fall out and return(0) [too transient a keypress] + lastkey = 0; + return (0); } /* this function sends r out onto the shift register */ void rawshift (unsigned char r) { - int i; - for (i = 7; i >= 0; i--) { /* MSB first */ - port_out (lp, ((r >> i) & 1) * LCDDATA); /*set up data */ - port_out (lp, (((r >> i) & 1) * LCDDATA) | LCDCLOCK); /*rising edge of clock */ - } + int i; + for (i = 7; i >= 0; i--) { /* MSB first */ + port_out (lp, ((r >> i) & 1) * LCDDATA); /*set up data */ + port_out (lp, (((r >> i) & 1) * LCDDATA) | LCDCLOCK); /*rising edge of clock */ + } } // displayID = value on parallel port to toggle the correct display void shiftreg (unsigned char displayID, unsigned char r) { - rawshift (r); - port_out (lp, displayID); //latch it, to correct display - port_out (lp, 0); + rawshift (r); + port_out (lp, displayID); //latch it, to correct display + port_out (lp, 0); } diff --git a/server/drivers/hd44780-serialLpt.h b/server/drivers/hd44780-serialLpt.h index 3b4f768..efc7d2f 100644 --- a/server/drivers/hd44780-serialLpt.h +++ b/server/drivers/hd44780-serialLpt.h @@ -1,8 +1,8 @@ #ifndef HD_SERIALLPT_H #define HD_SERIALLPT_H -#include "lcd.h" /* for lcd_logical_driver */ -#include "hd44780-low.h" /* for HD44780_functions */ +#include "lcd.h" /* for lcd_logical_driver */ +#include "hd44780-low.h" /* for HD44780_functions */ // initialise this particular driver int hd_init_serialLpt (HD44780_functions * hd44780_functions, lcd_logical_driver * driver, char *args, unsigned int port); diff --git a/server/drivers/hd44780-winamp.c b/server/drivers/hd44780-winamp.c index 6129e26..ab58669 100644 --- a/server/drivers/hd44780-winamp.c +++ b/server/drivers/hd44780-winamp.c @@ -47,54 +47,54 @@ static unsigned char EnMask[] = { EN1, EN2, EN3 }; static int EnMaskSize = sizeof (EnMask) / sizeof (unsigned char); static unsigned int lptPort; -static int extIF = 0; // non-zero if extended interface +static int extIF = 0; // non-zero if extended interface // initialise the driver int hd_init_winamp (HD44780_functions * hd44780_functions, lcd_logical_driver * driver, char *args, unsigned int port) { - // TODO: remove magic numbers below - char *argv[64]; - int argc; - int i; + // TODO: remove magic numbers below + char *argv[64]; + int argc; + int i; - hd44780_functions->senddata = lcdwinamp_HD44780_senddata; - lptPort = port; + hd44780_functions->senddata = lcdwinamp_HD44780_senddata; + lptPort = port; - // parse command-line arguments - argc = get_args (argv, args, 64); + // parse command-line arguments + argc = get_args (argv, args, 64); - for (i = 0; i < argc; ++i) - if (strcmp (argv[i], "-e") == 0 || strcmp (argv[i], "--extended") == 0) - extIF = 1; + for (i = 0; i < argc; ++i) + if (strcmp (argv[i], "-e") == 0 || strcmp (argv[i], "--extended") == 0) + extIF = 1; - if ((ioperm (lptPort + 2, 1, 255)) == -1) { - fprintf (stderr, "HD44780_init: failed (%s)\n", strerror (errno)); - return -1; - } + if ((ioperm (lptPort + 2, 1, 255)) == -1) { + fprintf (stderr, "HD44780_init: failed (%s)\n", strerror (errno)); + return -1; + } - common_init (IF_8bit); - return 0; + common_init (IF_8bit); + return 0; } // lcdwinamp_HD44780_senddata void lcdwinamp_HD44780_senddata (unsigned char displayID, unsigned char flags, unsigned char ch) { - unsigned char dispID = 0, portControl; + unsigned char dispID = 0, portControl; - if (flags == RS_DATA) - portControl = RS; - else - portControl = 0; + if (flags == RS_DATA) + portControl = RS; + else + portControl = 0; - if (displayID == 0) - dispID = EnMask[0] | EnMask[1] | ((extIF) ? EnMask[2] : 0); - else - dispID = EnMask[displayID - 1]; + if (displayID == 0) + dispID = EnMask[0] | EnMask[1] | ((extIF) ? EnMask[2] : 0); + else + dispID = EnMask[displayID - 1]; - port_out (lptPort, ch); - port_out (lptPort + 2, (dispID | portControl) ^ OUTMASK); - hd44780_functions->uPause (1); - port_out (lptPort + 2, portControl ^ OUTMASK); + port_out (lptPort, ch); + port_out (lptPort + 2, (dispID | portControl) ^ OUTMASK); + hd44780_functions->uPause (1); + port_out (lptPort + 2, portControl ^ OUTMASK); } diff --git a/server/drivers/hd44780-winamp.h b/server/drivers/hd44780-winamp.h index 8e081db..96ca8ed 100644 --- a/server/drivers/hd44780-winamp.h +++ b/server/drivers/hd44780-winamp.h @@ -1,8 +1,8 @@ #ifndef HD_WINAMP_H #define HD_WINAMP_H -#include "lcd.h" /* for lcd_logical_driver */ -#include "hd44780-low.h" /* for HD44780_functions */ +#include "lcd.h" /* for lcd_logical_driver */ +#include "hd44780-low.h" /* for HD44780_functions */ // initialise this particular driver, args is probably not used but keep // for consistency diff --git a/server/drivers/hd44780.c b/server/drivers/hd44780.c index e236572..678693d 100644 --- a/server/drivers/hd44780.c +++ b/server/drivers/hd44780.c @@ -102,161 +102,161 @@ static int parse_span_list (int *spanListArray[], int *spLsize, int *dispOffsets int HD44780_init (lcd_logical_driver * driver, char *args) { - // TODO: remove the two magic numbers below - // TODO: single point of return - char *argv[64], *str; - int argc, i; + // TODO: remove the two magic numbers below + // TODO: single point of return + char *argv[64], *str; + int argc, i; - HD44780 = driver; + HD44780 = driver; - // get_args inserts \0 into args - nasty ! - if (args) - if ((str = (char *) malloc (strlen (args) + 1))) - strcpy (str, args); - else { - fprintf (stderr, "Error mallocing\n"); - return -1; - } else - str = NULL; + // get_args inserts \0 into args - nasty ! + if (args) + if ((str = (char *) malloc (strlen (args) + 1))) + strcpy (str, args); + else { + fprintf (stderr, "Error mallocing\n"); + return -1; + } else + str = NULL; - argc = get_args (argv, args, 64); + argc = get_args (argv, args, 64); - // arguments are passed in with -d HD44780 "-p 0x278" - // getopt will work well here - for (i = 0; i < argc; i++) { - if (0 == strcmp (argv[i], "-p") || 0 == strcmp (argv[i], "--port")) { - if (i + 1 >= argc) { - fprintf (stderr, "HD44780_init: %s requires an argument\n", argv[i]); - return -1; - } else { - int myport; - if (sscanf (argv[i + 1], "%i", &myport) != 1) { - fprintf (stderr, "HD44780_init: Couldn't read port address -" " using default value 0x%x\n", port); - return -1; - } else { - port = myport; - ++i; - } - } - } else if (0 == strcmp (argv[i], "-c") || 0 == strcmp (argv[i], "--connect")) { - int j = 0; - if (i + 1 >= argc) { - fprintf (stderr, "HD44780_init: %s requires an argument\n", argv[i]); - return -1; - } - // search the next argument for the connection type - for (j = 0; strcmp (argv[i + 1], connectionMapping[j].connectionTypeStr) != 0 && connectionMapping[j].type != HD_unknown; ++j); + // arguments are passed in with -d HD44780 "-p 0x278" + // getopt will work well here + for (i = 0; i < argc; i++) { + if (0 == strcmp (argv[i], "-p") || 0 == strcmp (argv[i], "--port")) { + if (i + 1 >= argc) { + fprintf (stderr, "HD44780_init: %s requires an argument\n", argv[i]); + return -1; + } else { + int myport; + if (sscanf (argv[i + 1], "%i", &myport) != 1) { + fprintf (stderr, "HD44780_init: Couldn't read port address -" " using default value 0x%x\n", port); + return -1; + } else { + port = myport; + ++i; + } + } + } else if (0 == strcmp (argv[i], "-c") || 0 == strcmp (argv[i], "--connect")) { + int j = 0; + if (i + 1 >= argc) { + fprintf (stderr, "HD44780_init: %s requires an argument\n", argv[i]); + return -1; + } + // search the next argument for the connection type + for (j = 0; strcmp (argv[i + 1], connectionMapping[j].connectionTypeStr) != 0 && connectionMapping[j].type != HD_unknown; ++j); - if (connectionMapping[j].type == HD_unknown) { - fprintf (stderr, "HD44780_init: Unknown connection type - using default %s driver\n", connectionMapping[0].connectionTypeStr); - connection = connectionMapping[0].type; - j = 0; - } else - connection = connectionMapping[j].type; + if (connectionMapping[j].type == HD_unknown) { + fprintf (stderr, "HD44780_init: Unknown connection type - using default %s driver\n", connectionMapping[0].connectionTypeStr); + connection = connectionMapping[0].type; + j = 0; + } else + connection = connectionMapping[j].type; - connIdx = j; - ++i; - } else if (0 == strcmp (argv[i], "-v") || 0 == strcmp (argv[i], "--vspan")) { - int j = 0; - if (i + 1 >= argc) { - fprintf (stderr, "HD44780_init: %s requires an argument\n", argv[i]); - return -1; - } - if (parse_span_list (&spanList, &numLines, &dispVOffset, &numDisplays, &dispSizes, argv[i + 1]) == -1) { - fprintf (stderr, "HD44780_init: invalid vspan argument\n"); - return -1; - } - ++i; - } else if (0 == strcmp (argv[i], "-h") || 0 == strcmp (argv[i], "--help")) { - int i; - printf ("LCDproc HD44780 driver\n" "\t-p n\t--port n\tSelect the output device to use port n\n" "\t-c type\t--connect type\tSet the connection type (default 4 bit)\n" "\t\t\t\ttype = %s", connectionMapping[0].connectionTypeStr); - for (i = 1; connectionMapping[i].type != HD_unknown; ++i) - printf (" | %s", connectionMapping[i].connectionTypeStr); - printf ("\n\t-v spanlist\t--vspan spanlist\tvertical span n{,m}\n" "\t-h\t--help\t\tShow this help information\n" "\n\tNote that the '-t' option should precede the '-d' option\n"); + connIdx = j; + ++i; + } else if (0 == strcmp (argv[i], "-v") || 0 == strcmp (argv[i], "--vspan")) { + int j = 0; + if (i + 1 >= argc) { + fprintf (stderr, "HD44780_init: %s requires an argument\n", argv[i]); + return -1; + } + if (parse_span_list (&spanList, &numLines, &dispVOffset, &numDisplays, &dispSizes, argv[i + 1]) == -1) { + fprintf (stderr, "HD44780_init: invalid vspan argument\n"); + return -1; + } + ++i; + } else if (0 == strcmp (argv[i], "-h") || 0 == strcmp (argv[i], "--help")) { + int i; + printf ("LCDproc HD44780 driver\n" "\t-p n\t--port n\tSelect the output device to use port n\n" "\t-c type\t--connect type\tSet the connection type (default 4 bit)\n" "\t\t\t\ttype = %s", connectionMapping[0].connectionTypeStr); + for (i = 1; connectionMapping[i].type != HD_unknown; ++i) + printf (" | %s", connectionMapping[i].connectionTypeStr); + printf ("\n\t-v spanlist\t--vspan spanlist\tvertical span n{,m}\n" "\t-h\t--help\t\tShow this help information\n" "\n\tNote that the '-t' option should precede the '-d' option\n"); - if (connectionMapping[connIdx].type != HD_unknown) { - printf ("\n Parameters for %s driver\n", connectionMapping[connIdx].connectionTypeStr); - printf ("%s", connectionMapping[connIdx].helpMsg); - } - return -1; - } - /* ignore invalid arguments as they might be valid to the lower-level init - else - { - printf("Invalid parameter: %s\n", argv[i]); - } - */ - } + if (connectionMapping[connIdx].type != HD_unknown) { + printf ("\n Parameters for %s driver\n", connectionMapping[connIdx].connectionTypeStr); + printf ("%s", connectionMapping[connIdx].helpMsg); + } + return -1; + } + /* ignore invalid arguments as they might be valid to the lower-level init + else + { + printf("Invalid parameter: %s\n", argv[i]); + } + */ + } - // default case for when spans aren't indicated - // - add a sanity check against lcd.hgt ?? - // - this only works if the -t option is specified before -d - if (numLines == 0) { - if ((spanList = (int *) malloc (sizeof (int) * lcd.hgt))) { - int i; - for (i = 0; i < lcd.hgt; ++i) { - spanList[i] = 1; - numLines = lcd.hgt; - } - } else - fprintf (stderr, "Error mallocing for span list\n"); - } - if (numDisplays == 0) { - if ((dispVOffset = (int *) malloc (sizeof (int))) && (dispSizes = (int *) malloc (sizeof (int)))) { - dispVOffset[0] = 0; - dispSizes[0] = lcd.hgt; - numDisplays = 1; - } else - fprintf (stderr, "Error mallocing for display sizes list\n"); - } - // Set up io port correctly, and open it... - if ((ioperm (port, 1, 255)) == -1) { - fprintf (stderr, "HD44780_init: failed (%s)\n", strerror (errno)); - return -1; - } - // Make sure the frame buffer is there... - if (!HD44780->framebuf) - HD44780->framebuf = (unsigned char *) malloc (lcd.wid * lcd.hgt); + // default case for when spans aren't indicated + // - add a sanity check against lcd.hgt ?? + // - this only works if the -t option is specified before -d + if (numLines == 0) { + if ((spanList = (int *) malloc (sizeof (int) * lcd.hgt))) { + int i; + for (i = 0; i < lcd.hgt; ++i) { + spanList[i] = 1; + numLines = lcd.hgt; + } + } else + fprintf (stderr, "Error mallocing for span list\n"); + } + if (numDisplays == 0) { + if ((dispVOffset = (int *) malloc (sizeof (int))) && (dispSizes = (int *) malloc (sizeof (int)))) { + dispVOffset[0] = 0; + dispSizes[0] = lcd.hgt; + numDisplays = 1; + } else + fprintf (stderr, "Error mallocing for display sizes list\n"); + } + // Set up io port correctly, and open it... + if ((ioperm (port, 1, 255)) == -1) { + fprintf (stderr, "HD44780_init: failed (%s)\n", strerror (errno)); + return -1; + } + // Make sure the frame buffer is there... + if (!HD44780->framebuf) + HD44780->framebuf = (unsigned char *) malloc (lcd.wid * lcd.hgt); - if (!HD44780->framebuf) { - //HD44780_close(); - return -1; - } - // Set the functions the driver supports... - // These are the default HD44780 functions - driver->clear = (void *) -1; - driver->string = (void *) -1; - driver->chr = (void *) -1; - driver->vbar = HD44780_vbar; - driver->init_vbar = HD44780_init_vbar; - driver->hbar = HD44780_hbar; - driver->init_hbar = HD44780_init_hbar; - driver->num = HD44780_num; - driver->init_num = HD44780_init_num; + if (!HD44780->framebuf) { + //HD44780_close(); + return -1; + } + // Set the functions the driver supports... + // These are the default HD44780 functions + driver->clear = (void *) -1; + driver->string = (void *) -1; + driver->chr = (void *) -1; + driver->vbar = HD44780_vbar; + driver->init_vbar = HD44780_init_vbar; + driver->hbar = HD44780_hbar; + driver->init_hbar = HD44780_init_hbar; + driver->num = HD44780_num; + driver->init_num = HD44780_init_num; - driver->init = HD44780_init; - driver->close = (void *) -1; - driver->flush = HD44780_flush; - driver->flush_box = HD44780_flush_box; - driver->contrast = HD44780_contrast; - driver->backlight = HD44780_backlight; - driver->set_char = HD44780_set_char; - driver->icon = HD44780_icon; - driver->draw_frame = HD44780_draw_frame; - driver->getkey = NULL; + driver->init = HD44780_init; + driver->close = (void *) -1; + driver->flush = HD44780_flush; + driver->flush_box = HD44780_flush_box; + driver->contrast = HD44780_contrast; + driver->backlight = HD44780_backlight; + driver->set_char = HD44780_set_char; + driver->icon = HD44780_icon; + driver->draw_frame = HD44780_draw_frame; + driver->getkey = NULL; - if ((hd44780_functions = (HD44780_functions *) malloc (sizeof (HD44780_functions))) == NULL) { - return -1; - } - hd44780_functions->uPause = uPause; - hd44780_functions->position = common_position; - hd44780_functions->autoscroll = common_autoscroll; + if ((hd44780_functions = (HD44780_functions *) malloc (sizeof (HD44780_functions))) == NULL) { + return -1; + } + hd44780_functions->uPause = uPause; + hd44780_functions->position = common_position; + hd44780_functions->autoscroll = common_autoscroll; - connectionMapping[connIdx].init_fn (hd44780_functions, driver, str, port); + connectionMapping[connIdx].init_fn (hd44780_functions, driver, str, port); - HD44780_autoscroll (0); + HD44780_autoscroll (0); - return port; + return port; } // common initialisation sequence - sets twoline, small characters (5x8), @@ -264,47 +264,47 @@ HD44780_init (lcd_logical_driver * driver, char *args) void common_init (enum ifWidth ifwidth) { - if (ifwidth == IF_8bit) { - // setup the lcd in 8 bit mode - hd44780_functions->senddata (0, RS_INSTR, FUNCSET | IF_8BIT); - hd44780_functions->uPause (4100); - hd44780_functions->senddata (0, RS_INSTR, FUNCSET | IF_8BIT); - hd44780_functions->uPause (100); - hd44780_functions->senddata (0, RS_INSTR, FUNCSET | IF_8BIT); - hd44780_functions->uPause (40); - } - // else 4bit - // senddata can't generate the timings to initialise a four bit device - // properly but it might just work properly anyway .... + if (ifwidth == IF_8bit) { + // setup the lcd in 8 bit mode + hd44780_functions->senddata (0, RS_INSTR, FUNCSET | IF_8BIT); + hd44780_functions->uPause (4100); + hd44780_functions->senddata (0, RS_INSTR, FUNCSET | IF_8BIT); + hd44780_functions->uPause (100); + hd44780_functions->senddata (0, RS_INSTR, FUNCSET | IF_8BIT); + hd44780_functions->uPause (40); + } + // else 4bit + // senddata can't generate the timings to initialise a four bit device + // properly but it might just work properly anyway .... - // set display type functions - hd44780_functions->senddata (0, RS_INSTR, FUNCSET | ((ifwidth == IF_4BIT) ? IF_4BIT : IF_8BIT) | TWOLINE | SMALLCHAR); - hd44780_functions->uPause (40); + // set display type functions + hd44780_functions->senddata (0, RS_INSTR, FUNCSET | ((ifwidth == IF_4BIT) ? IF_4BIT : IF_8BIT) | TWOLINE | SMALLCHAR); + hd44780_functions->uPause (40); - hd44780_functions->senddata (0, RS_INSTR, ONOFFCTRL | DISPON | CURSOROFF | CURSORNOBLINK); - hd44780_functions->uPause (40); - hd44780_functions->senddata (0, RS_INSTR, CLEAR); - hd44780_functions->uPause (1600); - hd44780_functions->senddata (0, RS_INSTR, HOMECURSOR); - hd44780_functions->uPause (1600); + hd44780_functions->senddata (0, RS_INSTR, ONOFFCTRL | DISPON | CURSOROFF | CURSORNOBLINK); + hd44780_functions->uPause (40); + hd44780_functions->senddata (0, RS_INSTR, CLEAR); + hd44780_functions->uPause (1600); + hd44780_functions->senddata (0, RS_INSTR, HOMECURSOR); + hd44780_functions->uPause (1600); } // IO delay to avoid a task switch void uPause (int delayCalls) { - int i; - for (i = 0; i < delayCalls; ++i) - port_in (port); - //TODO: put in option for nanosleep rather than dummy I/O call + int i; + for (i = 0; i < delayCalls; ++i) + port_in (port); + //TODO: put in option for nanosleep rather than dummy I/O call } // displayID - ID of display to use (0 = all displays) static void HD44780_senddata (unsigned char displayID, unsigned char flags, unsigned char ch) { - hd44780_functions->senddata (displayID, flags, ch); - hd44780_functions->uPause (40); + hd44780_functions->senddata (displayID, flags, ch); + hd44780_functions->uPause (40); } ///////////////////////////////////////////////////////////////// @@ -321,52 +321,52 @@ HD44780_senddata (unsigned char displayID, unsigned char flags, unsigned char ch static void HD44780_position (int x, int y) { - int dispID = spanList[y]; - int relY = y - dispVOffset[dispID - 1]; - int DDaddr; + int dispID = spanList[y]; + int relY = y - dispVOffset[dispID - 1]; + int DDaddr; - // 16x1 is a special case - if (dispSizes[dispID - 1] == 1 && lcd.wid == 16) - if (x >= 8) { - x -= 8; - relY = 1; - } + // 16x1 is a special case + if (dispSizes[dispID - 1] == 1 && lcd.wid == 16) + if (x >= 8) { + x -= 8; + relY = 1; + } - DDaddr = x + (relY % 2) * 0x40; - if ((relY % 4) >= 2) - DDaddr += lcd.wid; + DDaddr = x + (relY % 2) * 0x40; + if ((relY % 4) >= 2) + DDaddr += lcd.wid; - hd44780_functions->position (dispID, DDaddr); + hd44780_functions->position (dispID, DDaddr); } void common_position (int display, int DDaddr) { - hd44780_functions->senddata (display, RS_INSTR, POSITION | DDaddr); - hd44780_functions->uPause (40); + hd44780_functions->senddata (display, RS_INSTR, POSITION | DDaddr); + hd44780_functions->uPause (40); } void HD44780_flush () { - HD44780_draw_frame (lcd.framebuf); + HD44780_draw_frame (lcd.framebuf); } void HD44780_flush_box (int lft, int top, int rgt, int bot) { - int x, y; + int x, y; - // printf("Flush (%i,%i)-(%i,%i)\n", lft, top, rgt, bot); + // printf("Flush (%i,%i)-(%i,%i)\n", lft, top, rgt, bot); - for (y = top; y <= bot; y++) { - HD44780_position (lft, y); - //printf("\n%d,%d :",lft,y); - for (x = lft; x <= rgt; x++) { - HD44780_senddata (spanList[y], RS_DATA, lcd.framebuf[(y * lcd.wid) + x]); - } - //write(fd, lcd.framebuf[(y*lcd.wid)+lft, rgt-lft+1]); - } + for (y = top; y <= bot; y++) { + HD44780_position (lft, y); + //printf("\n%d,%d :",lft,y); + for (x = lft; x <= rgt; x++) { + HD44780_senddata (spanList[y], RS_DATA, lcd.framebuf[(y * lcd.wid) + x]); + } + //write(fd, lcd.framebuf[(y*lcd.wid)+lft, rgt-lft+1]); + } } @@ -376,7 +376,7 @@ HD44780_flush_box (int lft, int top, int rgt, int bot) int HD44780_contrast (int contrast) { - return 0; + return 0; } ///////////////////////////////////////////////////////////////// @@ -402,14 +402,14 @@ HD44780_linewrap (int on) static void HD44780_autoscroll (int on) { - hd44780_functions->autoscroll (on); + hd44780_functions->autoscroll (on); } void common_autoscroll (int on) { - hd44780_functions->senddata (0, RS_INSTR, ENTRYMODE | E_MOVERIGHT | ((on) ? EDGESCROLL : NOSCROLL)); - hd44780_functions->uPause (1600); + hd44780_functions->senddata (0, RS_INSTR, ENTRYMODE | E_MOVERIGHT | ((on) ? EDGESCROLL : NOSCROLL)); + hd44780_functions->uPause (1600); } ///////////////////////////////////////////////////////////////// @@ -418,84 +418,84 @@ common_autoscroll (int on) void HD44780_init_vbar () { - char a[] = { - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 1, 1, 1, 1, 1, - }; - char b[] = { - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - }; - char c[] = { - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - }; - char d[] = { - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - }; - char e[] = { - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - }; - char f[] = { - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - }; - char g[] = { - 0, 0, 0, 0, 0, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - }; + char a[] = { + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, + }; + char b[] = { + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + }; + char c[] = { + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + }; + char d[] = { + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + }; + char e[] = { + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + }; + char f[] = { + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + }; + char g[] = { + 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + }; - HD44780_set_char (1, a); - HD44780_set_char (2, b); - HD44780_set_char (3, c); - HD44780_set_char (4, d); - HD44780_set_char (5, e); - HD44780_set_char (6, f); - HD44780_set_char (7, g); + HD44780_set_char (1, a); + HD44780_set_char (2, b); + HD44780_set_char (3, c); + HD44780_set_char (4, d); + HD44780_set_char (5, e); + HD44780_set_char (6, f); + HD44780_set_char (7, g); } ///////////////////////////////////////////////////////////////// @@ -505,51 +505,51 @@ void HD44780_init_hbar () { - char a[] = { - 1, 0, 0, 0, 0, - 1, 0, 0, 0, 0, - 1, 0, 0, 0, 0, - 1, 0, 0, 0, 0, - 1, 0, 0, 0, 0, - 1, 0, 0, 0, 0, - 1, 0, 0, 0, 0, - 1, 0, 0, 0, 0, - }; - char b[] = { - 1, 1, 0, 0, 0, - 1, 1, 0, 0, 0, - 1, 1, 0, 0, 0, - 1, 1, 0, 0, 0, - 1, 1, 0, 0, 0, - 1, 1, 0, 0, 0, - 1, 1, 0, 0, 0, - 1, 1, 0, 0, 0, - }; - char c[] = { - 1, 1, 1, 0, 0, - 1, 1, 1, 0, 0, - 1, 1, 1, 0, 0, - 1, 1, 1, 0, 0, - 1, 1, 1, 0, 0, - 1, 1, 1, 0, 0, - 1, 1, 1, 0, 0, - 1, 1, 1, 0, 0, - }; - char d[] = { - 1, 1, 1, 1, 0, - 1, 1, 1, 1, 0, - 1, 1, 1, 1, 0, - 1, 1, 1, 1, 0, - 1, 1, 1, 1, 0, - 1, 1, 1, 1, 0, - 1, 1, 1, 1, 0, - 1, 1, 1, 1, 0, - }; + char a[] = { + 1, 0, 0, 0, 0, + 1, 0, 0, 0, 0, + 1, 0, 0, 0, 0, + 1, 0, 0, 0, 0, + 1, 0, 0, 0, 0, + 1, 0, 0, 0, 0, + 1, 0, 0, 0, 0, + 1, 0, 0, 0, 0, + }; + char b[] = { + 1, 1, 0, 0, 0, + 1, 1, 0, 0, 0, + 1, 1, 0, 0, 0, + 1, 1, 0, 0, 0, + 1, 1, 0, 0, 0, + 1, 1, 0, 0, 0, + 1, 1, 0, 0, 0, + 1, 1, 0, 0, 0, + }; + char c[] = { + 1, 1, 1, 0, 0, + 1, 1, 1, 0, 0, + 1, 1, 1, 0, 0, + 1, 1, 1, 0, 0, + 1, 1, 1, 0, 0, + 1, 1, 1, 0, 0, + 1, 1, 1, 0, 0, + 1, 1, 1, 0, 0, + }; + char d[] = { + 1, 1, 1, 1, 0, + 1, 1, 1, 1, 0, + 1, 1, 1, 1, 0, + 1, 1, 1, 1, 0, + 1, 1, 1, 1, 0, + 1, 1, 1, 1, 0, + 1, 1, 1, 1, 0, + 1, 1, 1, 1, 0, + }; - HD44780_set_char (1, a); - HD44780_set_char (2, b); - HD44780_set_char (3, c); - HD44780_set_char (4, d); + HD44780_set_char (1, a); + HD44780_set_char (2, b); + HD44780_set_char (3, c); + HD44780_set_char (4, d); } @@ -559,17 +559,17 @@ HD44780_init_hbar () void HD44780_vbar (int x, int len) { - char map[9] = { 32, 1, 2, 3, 4, 5, 6, 7, 255 }; + char map[9] = { 32, 1, 2, 3, 4, 5, 6, 7, 255 }; - int y; - for (y = lcd.hgt; y > 0 && len > 0; y--) { - if (len >= lcd.cellhgt) - drv_base_chr (x, y, 255); - else - drv_base_chr (x, y, map[len]); + int y; + for (y = lcd.hgt; y > 0 && len > 0; y--) { + if (len >= lcd.cellhgt) + drv_base_chr (x, y, 255); + else + drv_base_chr (x, y, map[len]); - len -= lcd.cellhgt; - } + len -= lcd.cellhgt; + } } @@ -579,17 +579,17 @@ HD44780_vbar (int x, int len) void HD44780_hbar (int x, int y, int len) { - char map[6] = { 32, 1, 2, 3, 4, 255 }; + char map[6] = { 32, 1, 2, 3, 4, 255 }; - for (; x <= lcd.wid && len > 0; x++) { - if (len >= lcd.cellwid) - drv_base_chr (x, y, 255); - else - drv_base_chr (x, y, map[len]); + for (; x <= lcd.wid && len > 0; x++) { + if (len >= lcd.cellwid) + drv_base_chr (x, y, 255); + else + drv_base_chr (x, y, map[len]); - len -= lcd.cellwid; + len -= lcd.cellwid; - } + } } ///////////////////////////////////////////////////////////////// @@ -598,9 +598,9 @@ HD44780_hbar (int x, int y, int len) void HD44780_init_num () { - char out[3]; - sprintf (out, "%cn", 254); - //write(fd, out, 2); + char out[3]; + sprintf (out, "%cn", 254); + //write(fd, out, 2); } ///////////////////////////////////////////////////////////////// @@ -609,9 +609,9 @@ HD44780_init_num () void HD44780_num (int x, int num) { - char out[5]; - sprintf (out, "%c#%c%c", 254, x, num); - //write(fd, out, 4); + char out[5]; + sprintf (out, "%c#%c%c", 254, x, num); + //write(fd, out, 4); } ///////////////////////////////////////////////////////////////// @@ -624,66 +624,66 @@ HD44780_num (int x, int num) void HD44780_set_char (int n, char *dat) { - int row, col; - int letter; + int row, col; + int letter; - if (n < 0 || n > 7) - return; - if (!dat) - return; + if (n < 0 || n > 7) + return; + if (!dat) + return; - HD44780_senddata (0, RS_INSTR, SETCHAR | n * 8); + HD44780_senddata (0, RS_INSTR, SETCHAR | n * 8); - for (row = 0; row < lcd.cellhgt; row++) { - letter = 0; - for (col = 0; col < lcd.cellwid; col++) { - letter <<= 1; - letter |= (dat[(row * lcd.cellwid) + col] > 0); - } - HD44780_senddata (0, RS_DATA, letter); - } + for (row = 0; row < lcd.cellhgt; row++) { + letter = 0; + for (col = 0; col < lcd.cellwid; col++) { + letter <<= 1; + letter |= (dat[(row * lcd.cellwid) + col] > 0); + } + HD44780_senddata (0, RS_DATA, letter); + } } void HD44780_icon (int which, char dest) { - char icons[3][5 * 8] = { - { - 1, 1, 1, 1, 1, // Empty Heart - 1, 0, 1, 0, 1, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 1, 0, 0, 0, 1, - 1, 1, 0, 1, 1, - 1, 1, 1, 1, 1, - }, + char icons[3][5 * 8] = { + { + 1, 1, 1, 1, 1, // Empty Heart + 1, 0, 1, 0, 1, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 1, 0, 0, 0, 1, + 1, 1, 0, 1, 1, + 1, 1, 1, 1, 1, + }, - { - 1, 1, 1, 1, 1, // Filled Heart - 1, 0, 1, 0, 1, - 0, 1, 0, 1, 0, - 0, 1, 1, 1, 0, - 0, 1, 1, 1, 0, - 1, 0, 1, 0, 1, - 1, 1, 0, 1, 1, - 1, 1, 1, 1, 1, - }, + { + 1, 1, 1, 1, 1, // Filled Heart + 1, 0, 1, 0, 1, + 0, 1, 0, 1, 0, + 0, 1, 1, 1, 0, + 0, 1, 1, 1, 0, + 1, 0, 1, 0, 1, + 1, 1, 0, 1, 1, + 1, 1, 1, 1, 1, + }, - { - 0, 0, 0, 0, 0, // Ellipsis - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 1, 0, 1, 0, 1, - }, + { + 0, 0, 0, 0, 0, // Ellipsis + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 1, 0, 1, 0, 1, + }, - }; + }; - HD44780_set_char (dest, &icons[which][0]); + HD44780_set_char (dest, &icons[which][0]); } ///////////////////////////////////////////////////////////// @@ -694,18 +694,18 @@ HD44780_icon (int which, char dest) void HD44780_draw_frame (char *dat) { - int x, y; + int x, y; - if (!dat) - return; + if (!dat) + return; - for (y = 0; y < lcd.hgt; y++) { - HD44780_position (0, y); - //printf("\n%d :",y); - for (x = 0; x < lcd.wid; x++) { - HD44780_senddata (spanList[y], RS_DATA, dat[(y * lcd.wid) + x]); - } - } + for (y = 0; y < lcd.hgt; y++) { + HD44780_position (0, y); + //printf("\n%d :",y); + for (x = 0; x < lcd.wid; x++) { + HD44780_senddata (spanList[y], RS_DATA, dat[(y * lcd.wid) + x]); + } + } } @@ -722,40 +722,40 @@ HD44780_draw_frame (char *dat) int parse_span_list (int *spanListArray[], int *spLsize, int *dispOffsets[], int *dOffsize, int *dispSizeArray[], char *spanlist) { - int j = 0, retVal = 0; + int j = 0, retVal = 0; - *spLsize = 0; - *dOffsize = 0; + *spLsize = 0; + *dOffsize = 0; - while (j < strlen (spanlist)) { - if (spanlist[j] >= '1' && spanlist[j] <= '9') { - int spansize = spanlist[j] - '0'; + while (j < strlen (spanlist)) { + if (spanlist[j] >= '1' && spanlist[j] <= '9') { + int spansize = spanlist[j] - '0'; - // add spansize lines to the span list, note the offset to - // the previous display and the size of the display - if ((*spanListArray = (int *) realloc (*spanListArray, sizeof (int) * (*spLsize + spansize))) - && (*dispOffsets = (int *) realloc (*dispOffsets, sizeof (int) * (*dOffsize + 1))) - && (*dispSizeArray = (int *) realloc (*dispSizeArray, sizeof (int) * (*dOffsize + 1)))) { - int k; - for (k = 0; k < spansize; ++k) - (*spanListArray)[*spLsize + k] = *dOffsize + 1; + // add spansize lines to the span list, note the offset to + // the previous display and the size of the display + if ((*spanListArray = (int *) realloc (*spanListArray, sizeof (int) * (*spLsize + spansize))) + && (*dispOffsets = (int *) realloc (*dispOffsets, sizeof (int) * (*dOffsize + 1))) + && (*dispSizeArray = (int *) realloc (*dispSizeArray, sizeof (int) * (*dOffsize + 1)))) { + int k; + for (k = 0; k < spansize; ++k) + (*spanListArray)[*spLsize + k] = *dOffsize + 1; - (*dispOffsets)[*dOffsize] = *spLsize; - (*dispSizeArray)[*dOffsize] = spansize; - *spLsize += spansize; - ++(*dOffsize); - retVal = *dOffsize; + (*dispOffsets)[*dOffsize] = *spLsize; + (*dispSizeArray)[*dOffsize] = spansize; + *spLsize += spansize; + ++(*dOffsize); + retVal = *dOffsize; - // find the next number (\0 is also outside this range) - for (++j; spanlist[j] < '1' || spanlist[j] > '9'; ++j); - } else { - fprintf (stderr, "Error reallocing for span list\n"); - retVal - 1; - } - } else { - fprintf (stderr, "Error reading spansize\n"); - retVal = -1; - } - } - return retVal; + // find the next number (\0 is also outside this range) + for (++j; spanlist[j] < '1' || spanlist[j] > '9'; ++j); + } else { + fprintf (stderr, "Error reallocing for span list\n"); + retVal - 1; + } + } else { + fprintf (stderr, "Error reading spansize\n"); + retVal = -1; + } + } + return retVal; } diff --git a/server/drivers/irmanin.c b/server/drivers/irmanin.c index 4f565d9..00384e6 100644 --- a/server/drivers/irmanin.c +++ b/server/drivers/irmanin.c @@ -29,34 +29,34 @@ char *progname = "irmanin"; char *codes[] = { - /* dummy */ NULL, - /* KeyToLcd */ "lcdproc-A", - /* KeyToLcd */ "lcdproc-B", - /* KeyToLcd */ "lcdproc-C", - /* KeyToLcd */ "lcdproc-D", - /* KeyToLcd */ "lcdproc-E", - /* KeyToLcd */ "lcdproc-F", - /* KeyToLcd */ "lcdproc-G", - /* KeyToLcd */ "lcdproc-H", - /* KeyToLcd */ "lcdproc-I", - /* KeyToLcd */ "lcdproc-J", - /* KeyToLcd */ "lcdproc-K", - /* KeyToLcd */ "lcdproc-L", - /* KeyToLcd */ "lcdproc-M", - /* KeyToLcd */ "lcdproc-N", - /* KeyToLcd */ "lcdproc-O", - /* KeyToLcd */ "lcdproc-P", - /* KeyToLcd */ "lcdproc-Q", - /* KeyToLcd */ "lcdproc-R", - /* KeyToLcd */ "lcdproc-S", - /* KeyToLcd */ "lcdproc-T", - /* KeyToLcd */ "lcdproc-U", - /* KeyToLcd */ "lcdproc-V", - /* KeyToLcd */ "lcdproc-W", - /* KeyToLcd */ "lcdproc-X", - /* KeyToLcd */ "lcdproc-Y", - /* KeyToLcd */ "lcdproc-Z", - /* end */ NULL + /* dummy */ NULL, + /* KeyToLcd */ "lcdproc-A", + /* KeyToLcd */ "lcdproc-B", + /* KeyToLcd */ "lcdproc-C", + /* KeyToLcd */ "lcdproc-D", + /* KeyToLcd */ "lcdproc-E", + /* KeyToLcd */ "lcdproc-F", + /* KeyToLcd */ "lcdproc-G", + /* KeyToLcd */ "lcdproc-H", + /* KeyToLcd */ "lcdproc-I", + /* KeyToLcd */ "lcdproc-J", + /* KeyToLcd */ "lcdproc-K", + /* KeyToLcd */ "lcdproc-L", + /* KeyToLcd */ "lcdproc-M", + /* KeyToLcd */ "lcdproc-N", + /* KeyToLcd */ "lcdproc-O", + /* KeyToLcd */ "lcdproc-P", + /* KeyToLcd */ "lcdproc-Q", + /* KeyToLcd */ "lcdproc-R", + /* KeyToLcd */ "lcdproc-S", + /* KeyToLcd */ "lcdproc-T", + /* KeyToLcd */ "lcdproc-U", + /* KeyToLcd */ "lcdproc-V", + /* KeyToLcd */ "lcdproc-W", + /* KeyToLcd */ "lcdproc-X", + /* KeyToLcd */ "lcdproc-Y", + /* KeyToLcd */ "lcdproc-Z", + /* end */ NULL }; ////////////////////////////////////////////////////////////////////////// @@ -78,95 +78,95 @@ lcd_logical_driver *irmanin; int irmanin_init (struct lcd_logical_driver *driver, char *args) { - char device[256]; - char *ptrdevice; - char config[256]; - char *ptrconfig; + char device[256]; + char *ptrdevice; + char config[256]; + char *ptrconfig; - char *portname; + char *portname; - char *argv[64]; - int argc, i, j; - char *filename; + char *argv[64]; + int argc, i, j; + char *filename; - ptrconfig = NULL; - ptrdevice = NULL; + ptrconfig = NULL; + ptrdevice = NULL; - irmanin = driver; + irmanin = driver; - argc = get_args (argv, args, 64); + argc = get_args (argv, args, 64); - for (i = 0; i < argc; i++) { - //printf("Arg(%i): %s\n", i, argv[i]); - if (0 == strcmp (argv[i], "-d") || 0 == strcmp (argv[i], "--device")) { - if (i + 1 > argc) { - fprintf (stderr, "irmanin_init: %s requires an argument\n", argv[i]); - return -1; - } - strcpy (device, argv[++i]); - ptrdevice = device; - } else if (0 == strcmp (argv[i], "-c") || 0 == strcmp (argv[i], "--config")) { - if (i + 1 > argc) { - fprintf (stderr, "irmanin_init: %s requires an argument\n", argv[i]); - return -1; - } - strcpy (config, argv[++i]); - ptrconfig = config; - } else if (0 == strcmp (argv[i], "-h") || 0 == strcmp (argv[i], "--help")) { - printf ("LCDproc IrMan input driver\n" "\t-d\t--device\tSelect the input device to use\n" "\t-d\t--config\tSelect the configuration file to use\n" "\t-h\t--help\t\tShow this help information\n"); - return -1; - } else { - printf ("Invalid parameter: %s\n", argv[i]); - } - } + for (i = 0; i < argc; i++) { + //printf("Arg(%i): %s\n", i, argv[i]); + if (0 == strcmp (argv[i], "-d") || 0 == strcmp (argv[i], "--device")) { + if (i + 1 > argc) { + fprintf (stderr, "irmanin_init: %s requires an argument\n", argv[i]); + return -1; + } + strcpy (device, argv[++i]); + ptrdevice = device; + } else if (0 == strcmp (argv[i], "-c") || 0 == strcmp (argv[i], "--config")) { + if (i + 1 > argc) { + fprintf (stderr, "irmanin_init: %s requires an argument\n", argv[i]); + return -1; + } + strcpy (config, argv[++i]); + ptrconfig = config; + } else if (0 == strcmp (argv[i], "-h") || 0 == strcmp (argv[i], "--help")) { + printf ("LCDproc IrMan input driver\n" "\t-d\t--device\tSelect the input device to use\n" "\t-d\t--config\tSelect the configuration file to use\n" "\t-h\t--help\t\tShow this help information\n"); + return -1; + } else { + printf ("Invalid parameter: %s\n", argv[i]); + } + } - if (ir_init_commands (ptrconfig, 1) < 0) { - fprintf (stderr, "error initialising commands: %s\n", strerror (errno)); - exit (1); - } + if (ir_init_commands (ptrconfig, 1) < 0) { + fprintf (stderr, "error initialising commands: %s\n", strerror (errno)); + exit (1); + } - portname = ir_default_portname (); - if (portname == NULL) { - if (ptrdevice == NULL) { - portname = ptrdevice; - } else { - fprintf (stderr, "error no device defined\n"); - exit (1); - } - } + portname = ir_default_portname (); + if (portname == NULL) { + if (ptrdevice == NULL) { + portname = ptrdevice; + } else { + fprintf (stderr, "error no device defined\n"); + exit (1); + } + } - driver->getkey = irmanin_getkey; - driver->close = irmanin_close; + driver->getkey = irmanin_getkey; + driver->close = irmanin_close; - for (i = 1; codes[i] != NULL; i++) { - if (ir_register_command (codes[i], i) < 0) { - if (errno == ENOENT) { - fprintf (stderr, "%s: no code set for `%s'\n", progname, codes[i]); - } else { - fprintf (stderr, "error registering `%s': `%s'\n", codes[i], strerror (errno)); - } - } - } + for (i = 1; codes[i] != NULL; i++) { + if (ir_register_command (codes[i], i) < 0) { + if (errno == ENOENT) { + fprintf (stderr, "%s: no code set for `%s'\n", progname, codes[i]); + } else { + fprintf (stderr, "error registering `%s': `%s'\n", codes[i], strerror (errno)); + } + } + } - errno = 0; - if (ir_init (portname) < 0) { - fprintf (stderr, "%s: error initialising Irman: `%s'\n", strerror (errno), portname); - exit (1); - } + errno = 0; + if (ir_init (portname) < 0) { + fprintf (stderr, "%s: error initialising Irman: `%s'\n", strerror (errno), portname); + exit (1); + } - return 1; // 200 is arbitrary. (must be 1 or more) + return 1; // 200 is arbitrary. (must be 1 or more) } void irmanin_close () { - if (irmanin->framebuf != NULL) - free (irmanin->framebuf); + if (irmanin->framebuf != NULL) + free (irmanin->framebuf); - irmanin->framebuf = NULL; + irmanin->framebuf = NULL; - ir_free_commands (); - ir_finish (); + ir_free_commands (); + ir_finish (); } ////////////////////////////////////////////////////////////////////// @@ -177,23 +177,23 @@ irmanin_close () char irmanin_getkey () { - int i; - int cmd; - char key; + int i; + int cmd; + char key; - key = (char) 0; - switch (cmd = ir_poll_command ()) { - case IR_CMD_ERROR: - fprintf (stderr, "%s: error reading command: %s\n", progname, strerror (errno)); - break; - case IR_CMD_UNKNOWN: - break; - default: - key = (char) ('A' - 1 + cmd); - break; - } + key = (char) 0; + switch (cmd = ir_poll_command ()) { + case IR_CMD_ERROR: + fprintf (stderr, "%s: error reading command: %s\n", progname, strerror (errno)); + break; + case IR_CMD_UNKNOWN: + break; + default: + key = (char) ('A' - 1 + cmd); + break; + } - return key; + return key; } /* end of irmanin.c */ diff --git a/server/drivers/joy.c b/server/drivers/joy.c index cff27df..7479c4f 100644 --- a/server/drivers/joy.c +++ b/server/drivers/joy.c @@ -48,87 +48,87 @@ char *buttonmap = "BDACEFGHIJKLMNOP"; int joy_init (struct lcd_logical_driver *driver, char *args) { - char device[256]; - char *argv[64]; - int argc, i, j; + char device[256]; + char *argv[64]; + int argc, i, j; - joy = driver; + joy = driver; - strcpy (device, "/dev/js0"); + strcpy (device, "/dev/js0"); - argc = get_args (argv, args, 64); + argc = get_args (argv, args, 64); - for (i = 0; i < argc; i++) { - //printf("Arg(%i): %s\n", i, argv[i]); - if (0 == strcmp (argv[i], "-d") || 0 == strcmp (argv[i], "--device")) { - if (i + 1 > argc) { - fprintf (stderr, "joy_init: %s requires an argument\n", argv[i]); - return -1; - } - strcpy (device, argv[++i]); - } else if (0 == strcmp (argv[i], "-a") || 0 == strcmp (argv[i], "--axes")) { - if (i + 1 > argc) { - fprintf (stderr, "joy_init: %s requires an argument\n", argv[i]); - return -1; - } - strncpy (axismap, argv[++i], 16); - } else if (0 == strcmp (argv[i], "-b") || 0 == strcmp (argv[i], "--buttons")) { - if (i + 1 > argc) { - fprintf (stderr, "joy_init: %s requires an argument\n", argv[i]); - return -1; - } - strncpy (buttonmap, argv[++i], 16); - } else if (0 == strcmp (argv[i], "-h") || 0 == strcmp (argv[i], "--help")) { - printf ("LCDproc Joystick input driver\n" "\t-d\t--device\tSelect the input device to use [/dev/js0]\n" "\t-a\t--axes\t\tModify the axis map [%s]\n" "\t-b\t--buttons\tModify the button map [%s]\n" "\t-h\t--help\t\tShow this help information\n", axismap, buttonmap); - return -1; - } else { - printf ("Invalid parameter: %s\n", argv[i]); - } + for (i = 0; i < argc; i++) { + //printf("Arg(%i): %s\n", i, argv[i]); + if (0 == strcmp (argv[i], "-d") || 0 == strcmp (argv[i], "--device")) { + if (i + 1 > argc) { + fprintf (stderr, "joy_init: %s requires an argument\n", argv[i]); + return -1; + } + strcpy (device, argv[++i]); + } else if (0 == strcmp (argv[i], "-a") || 0 == strcmp (argv[i], "--axes")) { + if (i + 1 > argc) { + fprintf (stderr, "joy_init: %s requires an argument\n", argv[i]); + return -1; + } + strncpy (axismap, argv[++i], 16); + } else if (0 == strcmp (argv[i], "-b") || 0 == strcmp (argv[i], "--buttons")) { + if (i + 1 > argc) { + fprintf (stderr, "joy_init: %s requires an argument\n", argv[i]); + return -1; + } + strncpy (buttonmap, argv[++i], 16); + } else if (0 == strcmp (argv[i], "-h") || 0 == strcmp (argv[i], "--help")) { + printf ("LCDproc Joystick input driver\n" "\t-d\t--device\tSelect the input device to use [/dev/js0]\n" "\t-a\t--axes\t\tModify the axis map [%s]\n" "\t-b\t--buttons\tModify the button map [%s]\n" "\t-h\t--help\t\tShow this help information\n", axismap, buttonmap); + return -1; + } else { + printf ("Invalid parameter: %s\n", argv[i]); + } - } + } - driver->getkey = joy_getkey; - driver->close = joy_close; + driver->getkey = joy_getkey; + driver->close = joy_close; - /* FIXME: This crashes! - if(args) - { - if(strlen(args) > 0) - strcpy(device, args); - } - */ + /* FIXME: This crashes! + if(args) + { + if(strlen(args) > 0) + strcpy(device, args); + } + */ - fd = open (device, O_RDONLY); - fcntl (fd, F_SETFL, O_NONBLOCK); + fd = open (device, O_RDONLY); + fcntl (fd, F_SETFL, O_NONBLOCK); - if (fd < 0) - return -1; + if (fd < 0) + return -1; - ioctl (fd, JSIOCGVERSION, &jsversion); - ioctl (fd, JSIOCGAXES, &axes); - ioctl (fd, JSIOCGBUTTONS, &buttons); - ioctl (fd, JSIOCGNAME (NAME_LENGTH), jsname); + ioctl (fd, JSIOCGVERSION, &jsversion); + ioctl (fd, JSIOCGAXES, &axes); + ioctl (fd, JSIOCGBUTTONS, &buttons); + ioctl (fd, JSIOCGNAME (NAME_LENGTH), jsname); - debug ("Joystick (%s) has %d axes and %d buttons. Driver version is %d.%d.%d.\n", jsname, axes, buttons, jsversion >> 16, (jsversion >> 8) & 0xff, jsversion & 0xff); + debug ("Joystick (%s) has %d axes and %d buttons. Driver version is %d.%d.%d.\n", jsname, axes, buttons, jsversion >> 16, (jsversion >> 8) & 0xff, jsversion & 0xff); - axis = calloc (axes, sizeof (int)); - button = calloc (buttons, sizeof (char)); + axis = calloc (axes, sizeof (int)); + button = calloc (buttons, sizeof (char)); - return fd; // 200 is arbitrary. (must be 1 or more) + return fd; // 200 is arbitrary. (must be 1 or more) } void joy_close () { - if (joy->framebuf != NULL) - free (joy->framebuf); - close (fd); + if (joy->framebuf != NULL) + free (joy->framebuf); + close (fd); - joy->framebuf = NULL; + joy->framebuf = NULL; - // Why do I have so much trouble getting memory freed without segfaults?? - //if(axis) free(axis); - //if(button) free(button); + // Why do I have so much trouble getting memory freed without segfaults?? + //if(axis) free(axis); + //if(button) free(button); } @@ -140,46 +140,46 @@ joy_close () char joy_getkey () { - int i; - int err; + int i; + int err; - err = read (fd, &js, sizeof (struct js_event)); - if (err <= 0) - return 0; - if (err != sizeof (struct js_event)) { - fprintf (stderr, "\nerror reading joystick\n"); - return 0; - } + err = read (fd, &js, sizeof (struct js_event)); + if (err <= 0) + return 0; + if (err != sizeof (struct js_event)) { + fprintf (stderr, "\nerror reading joystick\n"); + return 0; + } // if(js.type & JS_EVENT_INIT) return 0; - switch (js.type & ~JS_EVENT_INIT) { - case JS_EVENT_BUTTON: - button[js.number] = js.value; - break; - case JS_EVENT_AXIS: - axis[js.number] = js.value; - break; - } + switch (js.type & ~JS_EVENT_INIT) { + case JS_EVENT_BUTTON: + button[js.number] = js.value; + break; + case JS_EVENT_AXIS: + axis[js.number] = js.value; + break; + } - if (buttons) { - //printf("Buttons: "); - for (i = 0; i < buttons; i++) - //printf("%2d:%s ", i, button[i] ? "on " : "off"); - if (button[i]) - return buttonmap[i]; - } + if (buttons) { + //printf("Buttons: "); + for (i = 0; i < buttons; i++) + //printf("%2d:%s ", i, button[i] ? "on " : "off"); + if (button[i]) + return buttonmap[i]; + } - if (axes) { - //printf("Axes: "); - for (i = 0; i < axes; i++) { - //printf("%2d:%6d ", i, axis[i]); - // Eliminate noise... - if (axis[i] > 20000) - return axismap[(2 * i) + 1]; - if (axis[i] < -20000) - return axismap[(2 * i)]; - } - } + if (axes) { + //printf("Axes: "); + for (i = 0; i < axes; i++) { + //printf("%2d:%6d ", i, axis[i]); + // Eliminate noise... + if (axis[i] > 20000) + return axismap[(2 * i) + 1]; + if (axis[i] < -20000) + return axismap[(2 * i)]; + } + } - return 0; + return 0; } diff --git a/server/drivers/lcd.c b/server/drivers/lcd.c index 428d4c1..e0353f3 100644 --- a/server/drivers/lcd.c +++ b/server/drivers/lcd.c @@ -61,38 +61,38 @@ lcd_logical_driver lcd; lcd_physical_driver drivers[] = { - {"base", drv_base_init,}, + {"base", drv_base_init,}, #ifdef MTXORB_DRV - {"MtxOrb", MtxOrb_init,}, + {"MtxOrb", MtxOrb_init,}, #endif #ifdef CFONTZ_DRV - {"CFontz", CFontz_init,}, + {"CFontz", CFontz_init,}, #endif #ifdef HD44780_DRV - {"HD44780", HD44780_init,}, + {"HD44780", HD44780_init,}, #endif #ifdef SLI_DRV - {"sli", sli_init,}, + {"sli", sli_init,}, #endif #ifdef TEXT_DRV - {"text", text_init,}, + {"text", text_init,}, #endif #ifdef DEBUG_DRV - {"debug", debug_init,}, + {"debug", debug_init,}, #endif #ifdef CURSES_DRV - {"curses", curses_drv_init,}, + {"curses", curses_drv_init,}, #endif #ifdef JOY_DRV - {"joy", joy_init,}, + {"joy", joy_init,}, #endif #ifdef IRMANIN_DRV - {"irmanin", irmanin_init,}, + {"irmanin", irmanin_init,}, #endif #ifdef LIRCIN_DRV - {"lircin", lircin_init,}, + {"lircin", lircin_init,}, #endif - {NULL, NULL,}, + {NULL, NULL,}, }; @@ -105,37 +105,37 @@ int lcd_init (char *args) { // int i; - int err; + int err; - list = LL_new (); - if (!list) { - printf ("Error allocating driver list.\n"); - return -1; - } + list = LL_new (); + if (!list) { + printf ("Error allocating driver list.\n"); + return -1; + } - lcd_drv_init (NULL, NULL); + lcd_drv_init (NULL, NULL); - err = lcd_add_driver ("base", args); + err = lcd_add_driver ("base", args); - lcd.wid = 20; - lcd.hgt = 4; + lcd.wid = 20; + lcd.hgt = 4; - return err; + return err; - /* - drv_base_init(args); + /* + drv_base_init(args); - for(i=0; drivers[i].name; i++) - { - if(!strcmp(driver, drivers[i].name)) - { - return drivers[i].init(args); - } - } + for(i=0; drivers[i].name; i++) + { + if(!strcmp(driver, drivers[i].name)) + { + return drivers[i].init(args); + } + } - printf("Invalid driver: %s\n", driver); - return -1; - */ + printf("Invalid driver: %s\n", driver); + return -1; + */ } @@ -144,80 +144,80 @@ lcd_init (char *args) int lcd_add_driver (char *driver, char *args) { - int i; + int i; - lcd_logical_driver *add; + lcd_logical_driver *add; - for (i = 0; drivers[i].name; i++) { + for (i = 0; drivers[i].name; i++) { - //printf("Checking driver: %s\n", drivers[i].name); + //printf("Checking driver: %s\n", drivers[i].name); - if (0 == strcmp (driver, drivers[i].name)) { + if (0 == strcmp (driver, drivers[i].name)) { - //printf("Found driver: %s (%s)\n", drivers[i].name, driver); + //printf("Found driver: %s (%s)\n", drivers[i].name, driver); - add = malloc (sizeof (lcd_logical_driver)); - if (!add) { - printf ("Couldn't allocate driver \"%s\".\n", driver); - return -1; - } - //printf("Allocated driver\n"); - memset (add, 0, sizeof (lcd_logical_driver)); + add = malloc (sizeof (lcd_logical_driver)); + if (!add) { + printf ("Couldn't allocate driver \"%s\".\n", driver); + return -1; + } + //printf("Allocated driver\n"); + memset (add, 0, sizeof (lcd_logical_driver)); - add->wid = lcd.wid; - add->hgt = lcd.hgt; - add->cellwid = lcd.cellwid; - add->cellhgt = lcd.cellhgt; + add->wid = lcd.wid; + add->hgt = lcd.hgt; + add->cellwid = lcd.cellwid; + add->cellhgt = lcd.cellhgt; // printf("LCD driver info:\n\twid: %i\thgt: %i\n", // add->wid, add->hgt); - add->framebuf = malloc (add->wid * add->hgt); + add->framebuf = malloc (add->wid * add->hgt); - if (!add->framebuf) { - printf ("Couldn't allocate framebuffer for driver \"%s\".\n", driver); - free (add); - return -1; - } - //printf("Allocated frame buffer\n"); + if (!add->framebuf) { + printf ("Couldn't allocate framebuffer for driver \"%s\".\n", driver); + free (add); + return -1; + } + //printf("Allocated frame buffer\n"); - LL_Push (list, (void *) add); + LL_Push (list, (void *) add); - return drivers[i].init (add, args); - } - } + return drivers[i].init (add, args); + } + } - return -1; + return -1; } // TODO: Put lcd_shutdown in the shutdown function... int lcd_shutdown () { - lcd_logical_driver *driver; + lcd_logical_driver *driver; - LL_Rewind (list); - do { - driver = (lcd_logical_driver *) LL_Get (list); - if (driver) { - //printf("driver...\n"); - lcd.framebuf = driver->framebuf; + LL_Rewind (list); + do { + driver = (lcd_logical_driver *) LL_Get (list); + if (driver) { + //printf("driver...\n"); + lcd.framebuf = driver->framebuf; - if ((int) driver->close > 0) { - driver->close (); - } else if ((int) driver->close == -1) { - drv_base->close (); - } + if ((int) driver->close > 0) { + driver->close (); + } else if ((int) driver->close == -1) { + drv_base->close (); + } - LL_Shift (list); - // FIXME: This crashes! - //if(driver) free(driver); - //printf("...freed\n"); - } + LL_Shift (list); + // FIXME: This crashes! + //if(driver) free(driver); + //printf("...freed\n"); + } - } while (LL_Length (list) > 0); + } while (LL_Length (list) > 0); - return 0; + return 0; } int @@ -225,10 +225,10 @@ lcd_drv_init (struct lcd_logical_driver *driver, char *args) { // printf("lcd_drv_init()\n"); - lcd.wid = LCD_MAX_WID; - lcd.hgt = LCD_MAX_HGT; + lcd.wid = LCD_MAX_WID; + lcd.hgt = LCD_MAX_HGT; - lcd.framebuf = NULL; + lcd.framebuf = NULL; /* if(!lcd.framebuf) lcd.framebuf = malloc(lcd.wid * lcd.hgt); @@ -243,34 +243,34 @@ lcd_drv_init (struct lcd_logical_driver *driver, char *args) // Debugging... // if(lcd.framebuf) printf("Frame buffer: %i\n", (int)lcd.framebuf); - lcd.cellwid = 5; - lcd.cellhgt = 8; + lcd.cellwid = 5; + lcd.cellhgt = 8; - // Set up these wrapper functions... - lcd.clear = lcd_drv_clear; - lcd.string = lcd_drv_string; - lcd.chr = lcd_drv_chr; - lcd.vbar = lcd_drv_vbar; - lcd.hbar = lcd_drv_hbar; - lcd.init_num = lcd_drv_init_num; - lcd.num = lcd_drv_num; + // Set up these wrapper functions... + lcd.clear = lcd_drv_clear; + lcd.string = lcd_drv_string; + lcd.chr = lcd_drv_chr; + lcd.vbar = lcd_drv_vbar; + lcd.hbar = lcd_drv_hbar; + lcd.init_num = lcd_drv_init_num; + lcd.num = lcd_drv_num; - lcd.init = lcd_drv_init; - lcd.close = lcd_drv_close; - lcd.flush = lcd_drv_flush; - lcd.flush_box = lcd_drv_flush_box; - lcd.contrast = lcd_drv_contrast; - lcd.backlight = lcd_drv_backlight; - lcd.output = lcd_drv_output; - lcd.set_char = lcd_drv_set_char; - lcd.icon = lcd_drv_icon; - lcd.init_vbar = lcd_drv_init_vbar; - lcd.init_hbar = lcd_drv_init_hbar; - lcd.draw_frame = lcd_drv_draw_frame; + lcd.init = lcd_drv_init; + lcd.close = lcd_drv_close; + lcd.flush = lcd_drv_flush; + lcd.flush_box = lcd_drv_flush_box; + lcd.contrast = lcd_drv_contrast; + lcd.backlight = lcd_drv_backlight; + lcd.output = lcd_drv_output; + lcd.set_char = lcd_drv_set_char; + lcd.icon = lcd_drv_icon; + lcd.init_vbar = lcd_drv_init_vbar; + lcd.init_hbar = lcd_drv_init_hbar; + lcd.draw_frame = lcd_drv_draw_frame; - lcd.getkey = lcd_drv_getkey; + lcd.getkey = lcd_drv_getkey; - return 1; // 1 is arbitrary. (must be 1 or more) + return 1; // 1 is arbitrary. (must be 1 or more) } ////////////////////////////////////////////////////////////////////// @@ -291,354 +291,354 @@ lcd_drv_init (struct lcd_logical_driver *driver, char *args) void lcd_drv_close () { - lcd_logical_driver *driver; + lcd_logical_driver *driver; // printf("lcd_drv_close()\n"); - LL_Rewind (list); - do { - driver = (lcd_logical_driver *) LL_Get (list); - if (driver) { - lcd.framebuf = driver->framebuf; + LL_Rewind (list); + do { + driver = (lcd_logical_driver *) LL_Get (list); + if (driver) { + lcd.framebuf = driver->framebuf; - if ((int) driver->close > 0) { - printf ("Calling close()\n"); - driver->close (); - } else if ((int) driver->close == -1) { - drv_base->close (); - } - } - } while (LL_Next (list) == 0); + if ((int) driver->close > 0) { + printf ("Calling close()\n"); + driver->close (); + } else if ((int) driver->close == -1) { + drv_base->close (); + } + } + } while (LL_Next (list) == 0); } void lcd_drv_clear () { - lcd_logical_driver *driver; + lcd_logical_driver *driver; - LL_Rewind (list); - do { - driver = (lcd_logical_driver *) LL_Get (list); - if (driver) { - lcd.framebuf = driver->framebuf; + LL_Rewind (list); + do { + driver = (lcd_logical_driver *) LL_Get (list); + if (driver) { + lcd.framebuf = driver->framebuf; - if ((int) driver->clear > 0) - driver->clear (); - else if ((int) driver->clear == -1) { - drv_base->clear (); - } - } - } while (LL_Next (list) == 0); + if ((int) driver->clear > 0) + driver->clear (); + else if ((int) driver->clear == -1) { + drv_base->clear (); + } + } + } while (LL_Next (list) == 0); } void lcd_drv_flush () { - lcd_logical_driver *driver; + lcd_logical_driver *driver; - LL_Rewind (list); - do { - driver = (lcd_logical_driver *) LL_Get (list); - if (driver) { - lcd.framebuf = driver->framebuf; + LL_Rewind (list); + do { + driver = (lcd_logical_driver *) LL_Get (list); + if (driver) { + lcd.framebuf = driver->framebuf; - if ((int) driver->flush > 0) - driver->flush (); - else if ((int) driver->flush == -1) { - drv_base->flush (); - } - } - } while (LL_Next (list) == 0); + if ((int) driver->flush > 0) + driver->flush (); + else if ((int) driver->flush == -1) { + drv_base->flush (); + } + } + } while (LL_Next (list) == 0); } void lcd_drv_string (int x, int y, char string[]) { - lcd_logical_driver *driver; + lcd_logical_driver *driver; - LL_Rewind (list); - do { - driver = (lcd_logical_driver *) LL_Get (list); - if (driver) { - lcd.framebuf = driver->framebuf; + LL_Rewind (list); + do { + driver = (lcd_logical_driver *) LL_Get (list); + if (driver) { + lcd.framebuf = driver->framebuf; - if ((int) driver->string > 0) - driver->string (x, y, string); - else if ((int) driver->string == -1) { - drv_base->string (x, y, string); - } - } - } while (LL_Next (list) == 0); + if ((int) driver->string > 0) + driver->string (x, y, string); + else if ((int) driver->string == -1) { + drv_base->string (x, y, string); + } + } + } while (LL_Next (list) == 0); } void lcd_drv_chr (int x, int y, char c) { - lcd_logical_driver *driver; + lcd_logical_driver *driver; - LL_Rewind (list); - do { - driver = (lcd_logical_driver *) LL_Get (list); - if (driver) { - lcd.framebuf = driver->framebuf; + LL_Rewind (list); + do { + driver = (lcd_logical_driver *) LL_Get (list); + if (driver) { + lcd.framebuf = driver->framebuf; - if ((int) driver->chr > 0) - driver->chr (x, y, c); - else if ((int) driver->chr == -1) { - drv_base->chr (x, y, c); - } - } - } while (LL_Next (list) == 0); + if ((int) driver->chr > 0) + driver->chr (x, y, c); + else if ((int) driver->chr == -1) { + drv_base->chr (x, y, c); + } + } + } while (LL_Next (list) == 0); } int lcd_drv_contrast (int contrast) { - int res = 0; + int res = 0; - lcd_logical_driver *driver; + lcd_logical_driver *driver; - LL_Rewind (list); - do { - driver = (lcd_logical_driver *) LL_Get (list); - if (driver) { - lcd.framebuf = driver->framebuf; + LL_Rewind (list); + do { + driver = (lcd_logical_driver *) LL_Get (list); + if (driver) { + lcd.framebuf = driver->framebuf; - if ((int) driver->contrast > 0) { - res = driver->contrast (contrast); - if (res >= 0) - return res; - } - /* - else if((int)driver->contrast == -1) - { - res=drv_base->contrast(contrast); - } - */ - } - } while (LL_Next (list) == 0); + if ((int) driver->contrast > 0) { + res = driver->contrast (contrast); + if (res >= 0) + return res; + } + /* + else if((int)driver->contrast == -1) + { + res=drv_base->contrast(contrast); + } + */ + } + } while (LL_Next (list) == 0); - return res; + return res; } void lcd_drv_backlight (int on) { - lcd_logical_driver *driver; + lcd_logical_driver *driver; - LL_Rewind (list); - do { - driver = (lcd_logical_driver *) LL_Get (list); - if (driver) { - lcd.framebuf = driver->framebuf; + LL_Rewind (list); + do { + driver = (lcd_logical_driver *) LL_Get (list); + if (driver) { + lcd.framebuf = driver->framebuf; - if ((int) driver->backlight > 0) - driver->backlight (on); - else if ((int) driver->backlight == -1) { - drv_base->backlight (on); - } - } - } while (LL_Next (list) == 0); + if ((int) driver->backlight > 0) + driver->backlight (on); + else if ((int) driver->backlight == -1) { + drv_base->backlight (on); + } + } + } while (LL_Next (list) == 0); } void lcd_drv_output (int on) { - lcd_logical_driver *driver; - LL_Rewind (list); - do { - driver = (lcd_logical_driver *) LL_Get (list); - if (driver) { - lcd.framebuf = driver->framebuf; - if ((int) driver->output > 0) - driver->output (on); - else if ((int) driver->output == -1) { - drv_base->output (on); - } - } - } while (LL_Next (list) == 0); + lcd_logical_driver *driver; + LL_Rewind (list); + do { + driver = (lcd_logical_driver *) LL_Get (list); + if (driver) { + lcd.framebuf = driver->framebuf; + if ((int) driver->output > 0) + driver->output (on); + else if ((int) driver->output == -1) { + drv_base->output (on); + } + } + } while (LL_Next (list) == 0); } void lcd_drv_init_vbar () { - lcd_logical_driver *driver; + lcd_logical_driver *driver; - LL_Rewind (list); - do { - driver = (lcd_logical_driver *) LL_Get (list); - if (driver) { - lcd.framebuf = driver->framebuf; + LL_Rewind (list); + do { + driver = (lcd_logical_driver *) LL_Get (list); + if (driver) { + lcd.framebuf = driver->framebuf; - if ((int) driver->init_vbar > 0) - driver->init_vbar (); - else if ((int) driver->init_vbar == -1) { - drv_base->init_vbar (); - } - } - } while (LL_Next (list) == 0); + if ((int) driver->init_vbar > 0) + driver->init_vbar (); + else if ((int) driver->init_vbar == -1) { + drv_base->init_vbar (); + } + } + } while (LL_Next (list) == 0); } void lcd_drv_init_hbar () { - lcd_logical_driver *driver; + lcd_logical_driver *driver; - LL_Rewind (list); - do { - driver = (lcd_logical_driver *) LL_Get (list); - if (driver) { - lcd.framebuf = driver->framebuf; + LL_Rewind (list); + do { + driver = (lcd_logical_driver *) LL_Get (list); + if (driver) { + lcd.framebuf = driver->framebuf; - if ((int) driver->init_hbar > 0) - driver->init_hbar (); - else if ((int) driver->init_hbar == -1) { - drv_base->init_hbar (); - } - } - } while (LL_Next (list) == 0); + if ((int) driver->init_hbar > 0) + driver->init_hbar (); + else if ((int) driver->init_hbar == -1) { + drv_base->init_hbar (); + } + } + } while (LL_Next (list) == 0); } void lcd_drv_init_num () { - lcd_logical_driver *driver; + lcd_logical_driver *driver; - LL_Rewind (list); - do { - driver = (lcd_logical_driver *) LL_Get (list); - if (driver) { - lcd.framebuf = driver->framebuf; + LL_Rewind (list); + do { + driver = (lcd_logical_driver *) LL_Get (list); + if (driver) { + lcd.framebuf = driver->framebuf; - if ((int) driver->init_num > 0) - driver->init_num (); - else if ((int) driver->init_num == -1) { - drv_base->init_num (); - } - } - } while (LL_Next (list) == 0); + if ((int) driver->init_num > 0) + driver->init_num (); + else if ((int) driver->init_num == -1) { + drv_base->init_num (); + } + } + } while (LL_Next (list) == 0); } void lcd_drv_num (int x, int num) { - lcd_logical_driver *driver; + lcd_logical_driver *driver; - LL_Rewind (list); - do { - driver = (lcd_logical_driver *) LL_Get (list); - if (driver) { - lcd.framebuf = driver->framebuf; + LL_Rewind (list); + do { + driver = (lcd_logical_driver *) LL_Get (list); + if (driver) { + lcd.framebuf = driver->framebuf; - if ((int) driver->num > 0) - driver->num (x, num); - else if ((int) driver->num == -1) { - drv_base->num (x, num); - } - } - } while (LL_Next (list) == 0); + if ((int) driver->num > 0) + driver->num (x, num); + else if ((int) driver->num == -1) { + drv_base->num (x, num); + } + } + } while (LL_Next (list) == 0); } void lcd_drv_set_char (int n, char *dat) { - lcd_logical_driver *driver; + lcd_logical_driver *driver; - LL_Rewind (list); - do { - driver = (lcd_logical_driver *) LL_Get (list); - if (driver) { - lcd.framebuf = driver->framebuf; + LL_Rewind (list); + do { + driver = (lcd_logical_driver *) LL_Get (list); + if (driver) { + lcd.framebuf = driver->framebuf; - if ((int) driver->set_char > 0) - driver->set_char (n, dat); - else if ((int) driver->set_char == -1) { - drv_base->set_char (n, dat); - } - } - } while (LL_Next (list) == 0); + if ((int) driver->set_char > 0) + driver->set_char (n, dat); + else if ((int) driver->set_char == -1) { + drv_base->set_char (n, dat); + } + } + } while (LL_Next (list) == 0); } void lcd_drv_vbar (int x, int len) { - lcd_logical_driver *driver; + lcd_logical_driver *driver; - LL_Rewind (list); - do { - driver = (lcd_logical_driver *) LL_Get (list); - if (driver) { - lcd.framebuf = driver->framebuf; + LL_Rewind (list); + do { + driver = (lcd_logical_driver *) LL_Get (list); + if (driver) { + lcd.framebuf = driver->framebuf; - if ((int) driver->vbar > 0) - driver->vbar (x, len); - else if ((int) driver->vbar == -1) { - drv_base->vbar (x, len); - } - } - } while (LL_Next (list) == 0); + if ((int) driver->vbar > 0) + driver->vbar (x, len); + else if ((int) driver->vbar == -1) { + drv_base->vbar (x, len); + } + } + } while (LL_Next (list) == 0); } void lcd_drv_hbar (int x, int y, int len) { - lcd_logical_driver *driver; + lcd_logical_driver *driver; - LL_Rewind (list); - do { - driver = (lcd_logical_driver *) LL_Get (list); - if (driver) { - lcd.framebuf = driver->framebuf; + LL_Rewind (list); + do { + driver = (lcd_logical_driver *) LL_Get (list); + if (driver) { + lcd.framebuf = driver->framebuf; - if ((int) driver->hbar > 0) - driver->hbar (x, y, len); - else if ((int) driver->hbar == -1) { - drv_base->hbar (x, y, len); - } - } - } while (LL_Next (list) == 0); + if ((int) driver->hbar > 0) + driver->hbar (x, y, len); + else if ((int) driver->hbar == -1) { + drv_base->hbar (x, y, len); + } + } + } while (LL_Next (list) == 0); } void lcd_drv_icon (int which, char dest) { - lcd_logical_driver *driver; + lcd_logical_driver *driver; - LL_Rewind (list); - do { - driver = (lcd_logical_driver *) LL_Get (list); - if (driver) { - lcd.framebuf = driver->framebuf; + LL_Rewind (list); + do { + driver = (lcd_logical_driver *) LL_Get (list); + if (driver) { + lcd.framebuf = driver->framebuf; - if ((int) driver->icon > 0) - driver->icon (which, dest); - else if ((int) driver->icon == -1) { - drv_base->icon (which, dest); - } - } - } while (LL_Next (list) == 0); + if ((int) driver->icon > 0) + driver->icon (which, dest); + else if ((int) driver->icon == -1) { + drv_base->icon (which, dest); + } + } + } while (LL_Next (list) == 0); } void lcd_drv_flush_box (int lft, int top, int rgt, int bot) { - lcd_logical_driver *driver; + lcd_logical_driver *driver; - LL_Rewind (list); - do { - driver = (lcd_logical_driver *) LL_Get (list); - if (driver) { - lcd.framebuf = driver->framebuf; + LL_Rewind (list); + do { + driver = (lcd_logical_driver *) LL_Get (list); + if (driver) { + lcd.framebuf = driver->framebuf; - if ((int) driver->flush_box > 0) - driver->flush_box (lft, top, rgt, bot); - else if ((int) driver->flush_box == -1) { - drv_base->flush_box (lft, top, rgt, bot); - } - } - } while (LL_Next (list) == 0); + if ((int) driver->flush_box > 0) + driver->flush_box (lft, top, rgt, bot); + else if ((int) driver->flush_box == -1) { + drv_base->flush_box (lft, top, rgt, bot); + } + } + } while (LL_Next (list) == 0); } @@ -647,48 +647,48 @@ lcd_drv_flush_box (int lft, int top, int rgt, int bot) void lcd_drv_draw_frame (char *dat) { - lcd_logical_driver *driver; + lcd_logical_driver *driver; - LL_Rewind (list); - do { - driver = (lcd_logical_driver *) LL_Get (list); - if (driver) { - lcd.framebuf = driver->framebuf; + LL_Rewind (list); + do { + driver = (lcd_logical_driver *) LL_Get (list); + if (driver) { + lcd.framebuf = driver->framebuf; - if ((int) driver->draw_frame > 0) - driver->draw_frame (dat); - else if ((int) driver->draw_frame == -1) { - drv_base->draw_frame (dat); - } - } - } while (LL_Next (list) == 0); + if ((int) driver->draw_frame > 0) + driver->draw_frame (dat); + else if ((int) driver->draw_frame == -1) { + drv_base->draw_frame (dat); + } + } + } while (LL_Next (list) == 0); } char lcd_drv_getkey () { - lcd_logical_driver *driver; + lcd_logical_driver *driver; - char key; + char key; - LL_Rewind (list); - do { - driver = (lcd_logical_driver *) LL_Get (list); - if (driver) { - lcd.framebuf = driver->framebuf; + LL_Rewind (list); + do { + driver = (lcd_logical_driver *) LL_Get (list); + if (driver) { + lcd.framebuf = driver->framebuf; - if ((int) driver->getkey > 0) { - key = driver->getkey (); - if (key) - return key; - } else if ((int) driver->getkey == -1) { - key = drv_base->getkey (); - if (key) - return key; - } - } - } while (LL_Next (list) == 0); + if ((int) driver->getkey > 0) { + key = driver->getkey (); + if (key) + return key; + } else if ((int) driver->getkey == -1) { + key = drv_base->getkey (); + if (key) + return key; + } + } + } while (LL_Next (list) == 0); - return 0; + return 0; } diff --git a/server/drivers/lcd.h b/server/drivers/lcd.h index 99d6306..974b505 100644 --- a/server/drivers/lcd.h +++ b/server/drivers/lcd.h @@ -18,47 +18,47 @@ int lcd_shutdown (); // functions... // typedef struct lcd_logical_driver { - // Size in cells of the LCD - int wid, hgt; - // Size of each LCD cell, in pixels - int cellwid, cellhgt; - // Frame buffer... - char *framebuf; + // Size in cells of the LCD + int wid, hgt; + // Size of each LCD cell, in pixels + int cellwid, cellhgt; + // Frame buffer... + char *framebuf; - // Functions which might be the same for all drivers... - void (*clear) (); - void (*string) (int x, int y, char lcd[]); + // Functions which might be the same for all drivers... + void (*clear) (); + void (*string) (int x, int y, char lcd[]); - void (*chr) (int x, int y, char c); - void (*vbar) (int x, int len); - void (*hbar) (int x, int y, int len); - void (*init_num) (); - void (*num) (int x, int num); + void (*chr) (int x, int y, char c); + void (*vbar) (int x, int len); + void (*hbar) (int x, int y, int len); + void (*init_num) (); + void (*num) (int x, int num); - // Functions which should probably be implemented in each driver... - int (*init) (struct lcd_logical_driver * driver, char *args); - void (*close) (); - void (*flush) (); - void (*flush_box) (int lft, int top, int rgt, int bot); - int (*contrast) (int contrast); - void (*backlight) (int on); - void (*output) (int on); - void (*set_char) (int n, char *dat); - void (*icon) (int which, char dest); - void (*init_vbar) (); - void (*init_hbar) (); - void (*draw_frame) (); + // Functions which should probably be implemented in each driver... + int (*init) (struct lcd_logical_driver * driver, char *args); + void (*close) (); + void (*flush) (); + void (*flush_box) (int lft, int top, int rgt, int bot); + int (*contrast) (int contrast); + void (*backlight) (int on); + void (*output) (int on); + void (*set_char) (int n, char *dat); + void (*icon) (int which, char dest); + void (*init_vbar) (); + void (*init_hbar) (); + void (*draw_frame) (); - // Returns 0 for "no key pressed", or (A-Z). - char (*getkey) (); + // Returns 0 for "no key pressed", or (A-Z). + char (*getkey) (); - // more? + // more? } lcd_logical_driver; typedef struct lcd_physical_driver { - char *name; - int (*init) (struct lcd_logical_driver * driver, char *device); + char *name; + int (*init) (struct lcd_logical_driver * driver, char *device); } lcd_physical_driver; extern lcd_logical_driver lcd; diff --git a/server/drivers/lcd_sem.c b/server/drivers/lcd_sem.c index e22cfaf..0c1d826 100644 --- a/server/drivers/lcd_sem.c +++ b/server/drivers/lcd_sem.c @@ -23,7 +23,7 @@ #include #include -#include /* for semaphore functions */ +#include /* for semaphore functions */ #include #include #include @@ -32,8 +32,8 @@ #define SEMAPHORE "portctrl" #define SEMKEY 0x706f7274 /* semaphore key */ -#define SEMCOUNT 1 /* number of semaphores to create */ -#define WMODE 0660 /* access permissions */ +#define SEMCOUNT 1 /* number of semaphores to create */ +#define WMODE 0660 /* access permissions */ #define SEM_SIGNAL 0,1,SEM_UNDO #define SEM_WAIT 0,-1,SEM_UNDO @@ -54,7 +54,7 @@ static char rcsId[] = "$Id$"; static key_t getkey (register char *p) { - return ((key_t) SEMKEY); + return ((key_t) SEMKEY); } /* @@ -65,40 +65,40 @@ getkey (register char *p) int sem_get (void) { - int semid; - union semun semval; + int semid; + union semun semval; - if ((semid = semget (getkey (SEMAPHORE), SEMCOUNT, IPC_CREAT | IPC_EXCL | WMODE)) < 0) { - switch (errno) { - case EEXIST: - /* semaphore set exists, get id and return it */ - if ((semid = semget (getkey (SEMAPHORE), SEMCOUNT, IPC_EXCL | WMODE)) < 0) { - perror ("semget"); - exit (1); - } - return semid; - break; - case EACCES: - /* don't have permissions for semaphore, need to change key */ - perror ("semget, can't get permissions for semaphore"); - exit (1); - break; - default: - perror ("semget"); - exit (1); - break; - } - } else { - /* initialise semaphore to 1 */ - semval.val = 1; + if ((semid = semget (getkey (SEMAPHORE), SEMCOUNT, IPC_CREAT | IPC_EXCL | WMODE)) < 0) { + switch (errno) { + case EEXIST: + /* semaphore set exists, get id and return it */ + if ((semid = semget (getkey (SEMAPHORE), SEMCOUNT, IPC_EXCL | WMODE)) < 0) { + perror ("semget"); + exit (1); + } + return semid; + break; + case EACCES: + /* don't have permissions for semaphore, need to change key */ + perror ("semget, can't get permissions for semaphore"); + exit (1); + break; + default: + perror ("semget"); + exit (1); + break; + } + } else { + /* initialise semaphore to 1 */ + semval.val = 1; - if (semctl (semid, 0, SETVAL, semval) < 0) { - perror ("setval, can't initialise semaphore"); - exit (1); - } - } + if (semctl (semid, 0, SETVAL, semval) < 0) { + perror ("setval, can't initialise semaphore"); + exit (1); + } + } - return semid; + return semid; } /* @@ -108,12 +108,12 @@ sem_get (void) int sem_wait (int sid) { - if (semop (sid, &semaphore_wait, 1) < -1) { - perror (SEMAPHORE); - exit (1); - } + if (semop (sid, &semaphore_wait, 1) < -1) { + perror (SEMAPHORE); + exit (1); + } - return 0; + return 0; } /* @@ -123,12 +123,12 @@ sem_wait (int sid) int sem_signal (int sid) { - if (semop (sid, &semaphore_signal, 1) < -1) { - perror (SEMAPHORE); - exit (1); - } + if (semop (sid, &semaphore_signal, 1) < -1) { + perror (SEMAPHORE); + exit (1); + } - return 0; + return 0; } /* @@ -138,20 +138,20 @@ sem_signal (int sid) int sem_remove (int sid) { - int i; - union semun dummy; + int i; + union semun dummy; - if ((i = semctl (sid, 0, IPC_RMID, dummy)) < 0) { - switch (i) { - case EIDRM: - /* semaphore removed */ - return 0; - break; - default: - perror ("semctl, removing semaphore"); - exit (1); - } - } + if ((i = semctl (sid, 0, IPC_RMID, dummy)) < 0) { + switch (i) { + case EIDRM: + /* semaphore removed */ + return 0; + break; + default: + perror ("semctl, removing semaphore"); + exit (1); + } + } - return 0; + return 0; } diff --git a/server/drivers/lircin.c b/server/drivers/lircin.c index d50f879..a630bd9 100644 --- a/server/drivers/lircin.c +++ b/server/drivers/lircin.c @@ -49,8 +49,8 @@ lcd_logical_driver *lircin; void lircin_close () { - lirc_freeconfig (config); - lirc_deinit (); + lirc_freeconfig (config); + lirc_deinit (); } ////////////////////////////////////////////////////////////////////// @@ -61,23 +61,23 @@ lircin_close () char lircin_getkey () { - char key; - char *ir, *cmd; + char key; + char *ir, *cmd; - if (!(ir = lirc_nextir ())) { - return 0; - } else { - if (!(cmd = lirc_ir2char (config, ir))) - return 0; + if (!(ir = lirc_nextir ())) { + return 0; + } else { + if (!(cmd = lirc_ir2char (config, ir))) + return 0; - printf ("lirc: \"%s\"\n", cmd); - sscanf (cmd, "%c", &key); - printf ("\n%c\n", key); - free (ir); - return key; - } + printf ("lirc: \"%s\"\n", cmd); + sscanf (cmd, "%c", &key); + printf ("\n%c\n", key); + free (ir); + return key; + } - return 0; + return 0; } //////////////////////////////////////////////////////////// @@ -89,29 +89,29 @@ lircin_init (struct lcd_logical_driver *driver, char *args) /* assign funktions */ - lircin = driver; + lircin = driver; - driver->getkey = lircin_getkey; - driver->close = lircin_close; + driver->getkey = lircin_getkey; + driver->close = lircin_close; /* open socket to lirc */ - if (-1 == (fd = lirc_init ("lcdd", 1))) { - fprintf (stderr, "no infrared remote support available\n"); - return -1; - } + if (-1 == (fd = lirc_init ("lcdd", 1))) { + fprintf (stderr, "no infrared remote support available\n"); + return -1; + } - if (0 != lirc_readconfig (NULL, &config, NULL)) { - lirc_deinit (); - return -1; - } - fcntl (fd, F_SETFL, O_NONBLOCK); - fcntl (fd, F_SETFD, FD_CLOEXEC); + if (0 != lirc_readconfig (NULL, &config, NULL)) { + lirc_deinit (); + return -1; + } + fcntl (fd, F_SETFL, O_NONBLOCK); + fcntl (fd, F_SETFD, FD_CLOEXEC); /* socket shouldn block lcdd */ - fcntl (fd, F_SETFL, O_NONBLOCK); - fcntl (fd, F_SETFD, FD_CLOEXEC); + fcntl (fd, F_SETFL, O_NONBLOCK); + fcntl (fd, F_SETFD, FD_CLOEXEC); - return 1; // 200 is arbitrary. (must be 1 or more) + return 1; // 200 is arbitrary. (must be 1 or more) } diff --git a/server/drivers/port.h b/server/drivers/port.h index 63ba86f..3b85512 100644 --- a/server/drivers/port.h +++ b/server/drivers/port.h @@ -18,17 +18,17 @@ static inline int port_in (int port) { - unsigned char value; - __asm__ volatile ("inb %1,%0":"=a" (value) - :"d" ((unsigned short) port)); - return value; + unsigned char value; + __asm__ volatile ("inb %1,%0":"=a" (value) + :"d" ((unsigned short) port)); + return value; } static inline void port_out (unsigned short int port, unsigned char val) { - __asm__ volatile ("outb %0,%1\n"::"a" (val), "d" (port) - ); + __asm__ volatile ("outb %0,%1\n"::"a" (val), "d" (port) + ); } #else #include @@ -36,15 +36,15 @@ port_out (unsigned short int port, unsigned char val) static inline int port_in (int port) { - unsigned char value; - value = inportb ((unsigned short) port); - return (int) value; + unsigned char value; + value = inportb ((unsigned short) port); + return (int) value; } static inline void port_out (unsigned int port, unsigned char val) { - outportb ((unsigned short) port, val); + outportb ((unsigned short) port, val); } #endif diff --git a/server/drivers/svgalib_drv.c b/server/drivers/svgalib_drv.c index b300fca..da97b00 100644 --- a/server/drivers/svgalib_drv.c +++ b/server/drivers/svgalib_drv.c @@ -166,8 +166,8 @@ const unsigned char simple_font5x7[] = { }; // -#define SVGALIB_FONT_VER 10 /* vertical spacing between lines (pixels) */ -#define SVGALIB_Y_OFFSET 40 /* distance from the top of the screen (pixels) */ +#define SVGALIB_FONT_VER 10 /* vertical spacing between lines (pixels) */ +#define SVGALIB_Y_OFFSET 40 /* distance from the top of the screen (pixels) */ // // No, I don't understand SVGALIB key mappings or a neat way of doing this @@ -183,9 +183,9 @@ lcd_logical_driver *svgalib_drv; int SVGALIB_PAD = 255; int SVGALIB_ELLIPSIS = 7; -void *SVGALIB_font; /* normal font */ -void *SVGALIB_highfont; /* highlighted font (not used yet) */ -void *SVGALIB_warnfont; /* warning font (not used yet) */ +void *SVGALIB_font; /* normal font */ +void *SVGALIB_highfont; /* highlighted font (not used yet) */ +void *SVGALIB_warnfont; /* warning font (not used yet) */ /* Setting SVGALIB_figure_mappings will trap all keypresses and write the @@ -205,26 +205,26 @@ void ExpandGroovyFont (int w, int ht, unsigned char col, const unsigned char *fnt, unsigned char *ptr) // Expand groovy 5x7 font into an area of memory { - int x, n, y; - unsigned char mask; - unsigned char base; - unsigned char *p; - p = ptr; - for (n = 0; n < 127; n++) { - for (y = 0; y < ht; y++) { - mask = 1; - base = fnt[n * ht + y]; - for (x = 0; x < w; x++) { - if (base & mask) { - *p = 0; - } else { - *p = col; - } - p++; - mask *= 2; - } - } - } + int x, n, y; + unsigned char mask; + unsigned char base; + unsigned char *p; + p = ptr; + for (n = 0; n < 127; n++) { + for (y = 0; y < ht; y++) { + mask = 1; + base = fnt[n * ht + y]; + for (x = 0; x < w; x++) { + if (base & mask) { + *p = 0; + } else { + *p = col; + } + p++; + mask *= 2; + } + } + } } @@ -234,10 +234,10 @@ spaced_gl_writen (int x, int y, int count, char *text) // Like gl_write but this one gets the spacing correct. // { - int i; - for (i = 0; i < count; i++) { - gl_writen (20 + x + i * 6, y, 1, &text[i]); - } + int i; + for (i = 0; i < count; i++) { + gl_writen (20 + x + i * 6, y, 1, &text[i]); + } } static char icon_char = '@'; @@ -245,81 +245,81 @@ static char icon_char = '@'; int svgalib_drv_init (struct lcd_logical_driver *driver, char *args) { - char *argv[64]; - int argc; - int i, j; - int VGAMODE; - int fgtemp; - char param[100]; - char buffer[1024]; + char *argv[64]; + int argc; + int i, j; + int VGAMODE; + int fgtemp; + char param[100]; + char buffer[1024]; - /* not used at the moment */ - argc = get_args (argv, args, 64); + /* not used at the moment */ + argc = get_args (argv, args, 64); - svgalib_drv = driver; - vga_init (); - VGAMODE = G320x200x256; /* Default mode. */ + svgalib_drv = driver; + vga_init (); + VGAMODE = G320x200x256; /* Default mode. */ - if (!vga_hasmode (VGAMODE)) { - printf ("320x200x256 Mode not available.\n"); - return -1; - } else { - vga_setmode (VGAMODE); - gl_setcontextvga (VGAMODE); /* Physical screen context. */ - gl_setrgbpalette (); + if (!vga_hasmode (VGAMODE)) { + printf ("320x200x256 Mode not available.\n"); + return -1; + } else { + vga_setmode (VGAMODE); + gl_setcontextvga (VGAMODE); /* Physical screen context. */ + gl_setrgbpalette (); - /* get the font */ - SVGALIB_font = malloc (256 * 8 * 8 * 1); - ExpandGroovyFont (5, 7, gl_rgbcolor (0, 255, 0), simple_font5x7, SVGALIB_font); - gl_setfont (5, 7, SVGALIB_font); + /* get the font */ + SVGALIB_font = malloc (256 * 8 * 8 * 1); + ExpandGroovyFont (5, 7, gl_rgbcolor (0, 255, 0), simple_font5x7, SVGALIB_font); + gl_setfont (5, 7, SVGALIB_font); - } + } - gl_clearscreen (gl_rgbcolor (0, 0, 0)); + gl_clearscreen (gl_rgbcolor (0, 0, 0)); - // Override output functions... - driver->clear = svgalib_drv_clear; - driver->string = svgalib_drv_string; - driver->chr = svgalib_drv_chr; - driver->vbar = svgalib_drv_vbar; - driver->init_vbar = NULL; - driver->hbar = svgalib_drv_hbar; - driver->init_hbar = NULL; - driver->num = svgalib_drv_num; - driver->init_num = svgalib_drv_init_num; + // Override output functions... + driver->clear = svgalib_drv_clear; + driver->string = svgalib_drv_string; + driver->chr = svgalib_drv_chr; + driver->vbar = svgalib_drv_vbar; + driver->init_vbar = NULL; + driver->hbar = svgalib_drv_hbar; + driver->init_hbar = NULL; + driver->num = svgalib_drv_num; + driver->init_num = svgalib_drv_init_num; - driver->init = svgalib_drv_init; - driver->close = svgalib_drv_close; - driver->flush = svgalib_drv_flush; - driver->flush_box = svgalib_drv_flush_box; - driver->contrast = NULL; - driver->backlight = NULL; - driver->set_char = NULL; - driver->icon = svgalib_drv_icon; - driver->draw_frame = svgalib_drv_draw_frame; + driver->init = svgalib_drv_init; + driver->close = svgalib_drv_close; + driver->flush = svgalib_drv_flush; + driver->flush_box = svgalib_drv_flush_box; + driver->contrast = NULL; + driver->backlight = NULL; + driver->set_char = NULL; + driver->icon = svgalib_drv_icon; + driver->draw_frame = svgalib_drv_draw_frame; - driver->getkey = svgalib_drv_getkey; + driver->getkey = svgalib_drv_getkey; - // Change the character used for padding the title bars... - SVGALIB_PAD = '#'; - // Change the character used for "..." - SVGALIB_ELLIPSIS = '~'; + // Change the character used for padding the title bars... + SVGALIB_PAD = '#'; + // Change the character used for "..." + SVGALIB_ELLIPSIS = '~'; - return 1; + return 1; } void svgalib_drv_close () { - vga_setmode (TEXT); - drv_base_close (); + vga_setmode (TEXT); + drv_base_close (); } void svgalib_drv_clear () { - vga_waitretrace (); - gl_clearscreen (gl_rgbcolor (0, 0, 0)); + vga_waitretrace (); + gl_clearscreen (gl_rgbcolor (0, 0, 0)); } ///////////////////////////////////////////////////////////////// @@ -329,21 +329,21 @@ svgalib_drv_clear () void svgalib_drv_string (int x, int y, char string[]) { - int i; - unsigned char *c; - for (i = 0; string[i]; i++) { - c = &string[i]; - switch (*c) { - case 0: - *c = icon_char; - break; - case 255: - *c = '#'; - break; - } - } - gl_setfont (5, 7, SVGALIB_font); - spaced_gl_writen (x * 8, y * SVGALIB_FONT_VER + SVGALIB_Y_OFFSET, i, string); + int i; + unsigned char *c; + for (i = 0; string[i]; i++) { + c = &string[i]; + switch (*c) { + case 0: + *c = icon_char; + break; + case 255: + *c = '#'; + break; + } + } + gl_setfont (5, 7, SVGALIB_font); + spaced_gl_writen (x * 8, y * SVGALIB_FONT_VER + SVGALIB_Y_OFFSET, i, string); } ///////////////////////////////////////////////////////////////// @@ -353,19 +353,19 @@ svgalib_drv_string (int x, int y, char string[]) void svgalib_drv_chr (int x, int y, char c) { - char buffer[2]; - switch (c) { - case 0: - c = icon_char; - break; - case -1: - c = '#'; - break; - } - buffer[0] = c; - buffer[1] = 0; - gl_setfont (5, 7, SVGALIB_font); - spaced_gl_writen (x * 8, y * SVGALIB_FONT_VER + SVGALIB_Y_OFFSET, 1, buffer); + char buffer[2]; + switch (c) { + case 0: + c = icon_char; + break; + case -1: + c = '#'; + break; + } + buffer[0] = c; + buffer[1] = 0; + gl_setfont (5, 7, SVGALIB_font); + spaced_gl_writen (x * 8, y * SVGALIB_FONT_VER + SVGALIB_Y_OFFSET, 1, buffer); } ///////////////////////////////////////////////////////////////// @@ -382,14 +382,14 @@ svgalib_drv_init_num () void svgalib_drv_num (int x, int num) { - char c; - int y, dx; + char c; + int y, dx; - c = '0' + num; + c = '0' + num; - for (y = 1; y < 5; y++) - for (dx = 0; dx < 3; dx++) - svgalib_drv_chr (x + dx, y, c); + for (y = 1; y < 5; y++) + for (dx = 0; dx < 3; dx++) + svgalib_drv_chr (x + dx, y, c); } ///////////////////////////////////////////////////////////////// @@ -398,17 +398,17 @@ svgalib_drv_num (int x, int num) void svgalib_drv_vbar (int x, int len) { - char map[] = "_.,,ooO8"; + char map[] = "_.,,ooO8"; - int y; - for (y = lcd.hgt; y > 0 && len > 0; y--) { - if (len >= lcd.cellhgt) - svgalib_drv_chr (x, y, '8'); - else - svgalib_drv_chr (x, y, map[len - 1]); + int y; + for (y = lcd.hgt; y > 0 && len > 0; y--) { + if (len >= lcd.cellhgt) + svgalib_drv_chr (x, y, '8'); + else + svgalib_drv_chr (x, y, map[len - 1]); - len -= lcd.cellhgt; - } + len -= lcd.cellhgt; + } } ///////////////////////////////////////////////////////////////// @@ -417,14 +417,14 @@ svgalib_drv_vbar (int x, int len) void svgalib_drv_hbar (int x, int y, int len) { - for (; x <= lcd.wid && len > 0; x++) { - if (len >= lcd.cellwid) - svgalib_drv_chr (x, y, '='); - else - svgalib_drv_chr (x, y, '-'); + for (; x <= lcd.wid && len > 0; x++) { + if (len >= lcd.cellwid) + svgalib_drv_chr (x, y, '='); + else + svgalib_drv_chr (x, y, '-'); - len -= lcd.cellwid; - } + len -= lcd.cellwid; + } } ///////////////////////////////////////////////////////////////// @@ -433,18 +433,18 @@ svgalib_drv_hbar (int x, int y, int len) void svgalib_drv_icon (int which, char dest) { - if (dest == 0) - switch (which) { - case 0: - icon_char = '+'; - break; - case 1: - icon_char = '*'; - break; - default: - icon_char = '#'; - break; - } + if (dest == 0) + switch (which) { + case 0: + icon_char = '+'; + break; + case 1: + icon_char = '*'; + break; + default: + icon_char = '#'; + break; + } } void @@ -465,97 +465,97 @@ svgalib_drv_draw_frame (char *dat) char svgalib_drv_getkey () { - int i; - int loop; - FILE *fd; - i = vga_getkey (); - if (i) { - switch (i) { - /* map the cursor keys to something sensible. */ - case 27: - i = vga_getkey (); - if (i == 91) { - i = vga_getkey (); - switch (i) { - case VGAKEY_LEFT: - i = 'D'; - break; - case VGAKEY_UP: - i = 'B'; - break; - case VGAKEY_DOWN: - i = 'C'; - break; - case VGAKEY_RIGHT: - i = 'A'; - break; - default: - i = 0; /* key not recognised */ - } - } else { - i = 0; - } - break; + int i; + int loop; + FILE *fd; + i = vga_getkey (); + if (i) { + switch (i) { + /* map the cursor keys to something sensible. */ + case 27: + i = vga_getkey (); + if (i == 91) { + i = vga_getkey (); + switch (i) { + case VGAKEY_LEFT: + i = 'D'; + break; + case VGAKEY_UP: + i = 'B'; + break; + case VGAKEY_DOWN: + i = 'C'; + break; + case VGAKEY_RIGHT: + i = 'A'; + break; + default: + i = 0; /* key not recognised */ + } + } else { + i = 0; + } + break; - /* - Change this bit to your liking. I only set these values because - they tie in with my keypads use of the keyboard controller chip - see http://www.gofree.co.uk/home/smh/mp3 for details. - Having said that try to make sure four keys map to D,B,C,A so you'll - be able to quit LCDproc from the emulation. + /* + Change this bit to your liking. I only set these values because + they tie in with my keypads use of the keyboard controller chip + see http://www.gofree.co.uk/home/smh/mp3 for details. + Having said that try to make sure four keys map to D,B,C,A so you'll + be able to quit LCDproc from the emulation. - */ - case 'j': - i = 'D'; - break; /* left */ - case 'm': - i = 'B'; - break; /* up */ - case '7': - i = 'C'; - break; /* down */ - case 'u': - i = 'A'; - break; /* right */ + */ + case 'j': + i = 'D'; + break; /* left */ + case 'm': + i = 'B'; + break; /* up */ + case '7': + i = 'C'; + break; /* down */ + case 'u': + i = 'A'; + break; /* right */ - case 'v': - i = 'Q'; - break; /* one */ - case 'c': - i = 'W'; - break; /* two */ - case 'z': - i = 'E'; - break; /* three */ - case '4': - i = 'R'; - break; /* four */ - case '3': - i = 'T'; - break; /* five */ - case '1': - i = 'Y'; - break; /* six */ - case 'f': - i = 'U'; - break; /* seven */ - case 'd': - i = 'I'; - break; /* eight */ - case 'a': - i = 'O'; - break; /* nine */ - case 'e': - i = 'P'; - break; /* zero */ - case 'r': - i = 'L'; - break; /* 'C' key */ - default: - i = 0; - } - } - /* if (i) */ - return i; + case 'v': + i = 'Q'; + break; /* one */ + case 'c': + i = 'W'; + break; /* two */ + case 'z': + i = 'E'; + break; /* three */ + case '4': + i = 'R'; + break; /* four */ + case '3': + i = 'T'; + break; /* five */ + case '1': + i = 'Y'; + break; /* six */ + case 'f': + i = 'U'; + break; /* seven */ + case 'd': + i = 'I'; + break; /* eight */ + case 'a': + i = 'O'; + break; /* nine */ + case 'e': + i = 'P'; + break; /* zero */ + case 'r': + i = 'L'; + break; /* 'C' key */ + default: + i = 0; + } + } + /* if (i) */ + return i; } diff --git a/server/drivers/text.c b/server/drivers/text.c index 47ff959..5816bc8 100644 --- a/server/drivers/text.c +++ b/server/drivers/text.c @@ -19,47 +19,47 @@ lcd_logical_driver *text; int text_init (lcd_logical_driver * driver, char *args) { - text = driver; + text = driver; - if (!driver->framebuf) { - driver->close (); - return -1; - } + if (!driver->framebuf) { + driver->close (); + return -1; + } - driver->wid = 20; - driver->hgt = 4; - driver->cellwid = 5; - driver->cellhgt = 8; + driver->wid = 20; + driver->hgt = 4; + driver->cellwid = 5; + driver->cellhgt = 8; - driver->clear = (void *) -1; - driver->string = (void *) -1; - driver->chr = (void *) -1; - driver->vbar = text_vbar; - driver->init_vbar = NULL; - driver->hbar = text_hbar; - driver->init_hbar = NULL; - driver->num = (void *) -1; - driver->init_num = NULL; + driver->clear = (void *) -1; + driver->string = (void *) -1; + driver->chr = (void *) -1; + driver->vbar = text_vbar; + driver->init_vbar = NULL; + driver->hbar = text_hbar; + driver->init_hbar = NULL; + driver->num = (void *) -1; + driver->init_num = NULL; - driver->init = text_init; - driver->close = text_close; - driver->flush = text_flush; - driver->flush_box = NULL; - driver->contrast = NULL; - driver->backlight = NULL; - driver->set_char = NULL; - driver->icon = NULL; - driver->draw_frame = text_draw_frame; + driver->init = text_init; + driver->close = text_close; + driver->flush = text_flush; + driver->flush_box = NULL; + driver->contrast = NULL; + driver->backlight = NULL; + driver->set_char = NULL; + driver->icon = NULL; + driver->draw_frame = text_draw_frame; - driver->getkey = NULL; + driver->getkey = NULL; - return 200; // 200 is arbitrary. (must be 1 or more) + return 200; // 200 is arbitrary. (must be 1 or more) } void text_close () { - drv_base_close (); + drv_base_close (); } ///////////////////////////////////////////////////////////////// @@ -68,7 +68,7 @@ text_close () void text_clear () { - memset (lcd.framebuf, ' ', lcd.wid * lcd.hgt); + memset (lcd.framebuf, ' ', lcd.wid * lcd.hgt); } @@ -78,7 +78,7 @@ text_clear () void text_flush () { - text_draw_frame (lcd.framebuf); + text_draw_frame (lcd.framebuf); } ///////////////////////////////////////////////////////////////// @@ -88,14 +88,14 @@ text_flush () void text_string (int x, int y, char string[]) { - int i; + int i; - x -= 1; // Convert 1-based coords to 0-based... - y -= 1; + x -= 1; // Convert 1-based coords to 0-based... + y -= 1; - for (i = 0; string[i]; i++) { - lcd.framebuf[(y * lcd.wid) + x + i] = string[i]; - } + for (i = 0; string[i]; i++) { + lcd.framebuf[(y * lcd.wid) + x + i] = string[i]; + } } ///////////////////////////////////////////////////////////////// @@ -105,17 +105,17 @@ text_string (int x, int y, char string[]) void text_chr (int x, int y, char c) { - y--; - x--; + y--; + x--; - lcd.framebuf[(y * lcd.wid) + x] = c; + lcd.framebuf[(y * lcd.wid) + x] = c; } int text_contrast (int contrast) { // printf("Contrast: %i\n", contrast); - return 0; + return 0; } void @@ -169,12 +169,12 @@ text_set_char (int n, char *dat) void text_vbar (int x, int len) { - int y; - for (y = lcd.hgt; y > 0 && len > 0; y--) { - text_chr (x, y, '|'); + int y; + for (y = lcd.hgt; y > 0 && len > 0; y--) { + text_chr (x, y, '|'); - len -= lcd.cellhgt; - } + len -= lcd.cellhgt; + } } @@ -184,52 +184,52 @@ text_vbar (int x, int len) void text_hbar (int x, int y, int len) { - for (; x <= lcd.wid && len > 0; x++) { - text_chr (x, y, '-'); + for (; x <= lcd.wid && len > 0; x++) { + text_chr (x, y, '-'); - len -= lcd.cellwid; - } + len -= lcd.cellwid; + } } void text_flush_box (int lft, int top, int rgt, int bot) { - text_flush (); + text_flush (); } void text_draw_frame (char *dat) { - int i, j; + int i, j; - char out[LCD_MAX_WIDTH]; + char out[LCD_MAX_WIDTH]; - if (!dat) - return; + if (!dat) + return; // printf("Frame (%ix%i): \n%s\n", lcd.wid, lcd.hgt, dat); - for (i = 0; i < lcd.wid; i++) { - out[i] = '-'; - } - out[lcd.wid] = 0; - printf ("+%s+\n", out); + for (i = 0; i < lcd.wid; i++) { + out[i] = '-'; + } + out[lcd.wid] = 0; + printf ("+%s+\n", out); - for (i = 0; i < lcd.hgt; i++) { - for (j = 0; j < lcd.wid; j++) { - out[j] = dat[j + (i * lcd.wid)]; - } - out[lcd.wid] = 0; - printf ("|%s|\n", out); + for (i = 0; i < lcd.hgt; i++) { + for (j = 0; j < lcd.wid; j++) { + out[j] = dat[j + (i * lcd.wid)]; + } + out[lcd.wid] = 0; + printf ("|%s|\n", out); - } + } - for (i = 0; i < lcd.wid; i++) { - out[i] = '-'; - } - out[lcd.wid] = 0; - printf ("+%s+\n", out); + for (i = 0; i < lcd.wid; i++) { + out[i] = '-'; + } + out[lcd.wid] = 0; + printf ("+%s+\n", out); } diff --git a/server/drivers/wirz-sli.c b/server/drivers/wirz-sli.c index 48be119..f931042 100644 --- a/server/drivers/wirz-sli.c +++ b/server/drivers/wirz-sli.c @@ -20,10 +20,10 @@ static int custom = 0; typedef enum { - hbar = 1, - vbar = 2, - bign = 4, - beat = 8 + hbar = 1, + vbar = 2, + bign = 4, + beat = 8 } custom_type; static int fd; @@ -37,151 +37,151 @@ lcd_logical_driver *sli; int sli_init (lcd_logical_driver * driver, char *args) { - char *argv[64]; - int argc; - struct termios portset; - int i; - int tmp; - char out[2]; + char *argv[64]; + int argc; + struct termios portset; + int i; + int tmp; + char out[2]; - char device[256] = "/dev/lcd"; - int speed = B19200; + char device[256] = "/dev/lcd"; + int speed = B19200; - sli = driver; + sli = driver; - //debug("sli_init: Args(all): %s\n", args); + //debug("sli_init: Args(all): %s\n", args); - argc = get_args (argv, args, 64); + argc = get_args (argv, args, 64); - /* - for(i=0; i argc) { - fprintf (stderr, "sli_init: %s requires an argument\n", argv[i]); - return -1; - } - strcpy (device, argv[++i]); - } else if (0 == strcmp (argv[i], "-s") || 0 == strcmp (argv[i], "--speed")) { - if (i + 1 > argc) { - fprintf (stderr, "sli_init: %s requires an argument\n", argv[i]); - return -1; - } - tmp = atoi (argv[++i]); - if (tmp == 1200) - speed = B1200; - else if (tmp == 2400) - speed = B2400; - else if (tmp == 9600) - speed = B9600; - else if (tmp == 19200) - speed = B19200; - else if (tmp == 38400) - speed = B38400; - else if (tmp == 57600) - speed = B57600; - else if (tmp == 115200) - speed = B115200; - else { - fprintf (stderr, "sli_init: %s argument must be 1200, 2400, 9600, 19200, 38400, 57600, or 115200. Using default value (19200).\n", argv[i]); - } - } else if (0 == strcmp (argv[i], "-h") || 0 == strcmp (argv[i], "--help")) { - printf ("LCDproc Wirz SLI LCD driver\n" "\t-d\t--device\tSelect the output device to use [/dev/lcd]\n" "\t-s\t--speed\t\tSet the communication speed [19200]\n" "\t-h\t--help\t\tShow this help information\n"); - return -1; - } else { - printf ("Invalid parameter: %s\n", argv[i]); - } + for (i = 0; i < argc; i++) { + //printf("Arg(%i): %s\n", i, argv[i]); + if (0 == strcmp (argv[i], "-d") || 0 == strcmp (argv[i], "--device")) { + if (i + 1 > argc) { + fprintf (stderr, "sli_init: %s requires an argument\n", argv[i]); + return -1; + } + strcpy (device, argv[++i]); + } else if (0 == strcmp (argv[i], "-s") || 0 == strcmp (argv[i], "--speed")) { + if (i + 1 > argc) { + fprintf (stderr, "sli_init: %s requires an argument\n", argv[i]); + return -1; + } + tmp = atoi (argv[++i]); + if (tmp == 1200) + speed = B1200; + else if (tmp == 2400) + speed = B2400; + else if (tmp == 9600) + speed = B9600; + else if (tmp == 19200) + speed = B19200; + else if (tmp == 38400) + speed = B38400; + else if (tmp == 57600) + speed = B57600; + else if (tmp == 115200) + speed = B115200; + else { + fprintf (stderr, "sli_init: %s argument must be 1200, 2400, 9600, 19200, 38400, 57600, or 115200. Using default value (19200).\n", argv[i]); + } + } else if (0 == strcmp (argv[i], "-h") || 0 == strcmp (argv[i], "--help")) { + printf ("LCDproc Wirz SLI LCD driver\n" "\t-d\t--device\tSelect the output device to use [/dev/lcd]\n" "\t-s\t--speed\t\tSet the communication speed [19200]\n" "\t-h\t--help\t\tShow this help information\n"); + return -1; + } else { + printf ("Invalid parameter: %s\n", argv[i]); + } - } + } - // Set up io port correctly, and open it... - fd = open (device, O_RDWR | O_NOCTTY | O_NDELAY); - if (fd == -1) { - fprintf (stderr, "sli_init: failed (%s)\n", strerror (errno)); - return -1; - } - //else fprintf(stderr, "sli_init: opened device %s\n", device); - tcgetattr (fd, &portset); - // This is necessary in Linux, but does not exist in irix. + // Set up io port correctly, and open it... + fd = open (device, O_RDWR | O_NOCTTY | O_NDELAY); + if (fd == -1) { + fprintf (stderr, "sli_init: failed (%s)\n", strerror (errno)); + return -1; + } + //else fprintf(stderr, "sli_init: opened device %s\n", device); + tcgetattr (fd, &portset); + // This is necessary in Linux, but does not exist in irix. #ifndef IRIX - cfmakeraw (&portset); + cfmakeraw (&portset); #endif - cfsetospeed (&portset, speed); - tcsetattr (fd, TCSANOW, &portset); + cfsetospeed (&portset, speed); + tcsetattr (fd, TCSANOW, &portset); - /* Initialize SLI using autobaud detection, and then turn off cursor - and clear screen */ - usleep (150000); /* 150ms delay to allow SLI to power on */ - out[0] = 13; /* CR for SLI autobaud */ - write (fd, out, 1); - usleep (3000); /* 3ms delay.. wait for it to autobaud */ - out[0] = 0x0FE; - out[1] = 0x00C; /* No cursor */ - write (fd, out, 2); - out[0] = 0x0FE; - out[1] = 0x001; /* Clear LCD, not sure if this belongs here */ - write (fd, out, 2); + /* Initialize SLI using autobaud detection, and then turn off cursor + and clear screen */ + usleep (150000); /* 150ms delay to allow SLI to power on */ + out[0] = 13; /* CR for SLI autobaud */ + write (fd, out, 1); + usleep (3000); /* 3ms delay.. wait for it to autobaud */ + out[0] = 0x0FE; + out[1] = 0x00C; /* No cursor */ + write (fd, out, 2); + out[0] = 0x0FE; + out[1] = 0x001; /* Clear LCD, not sure if this belongs here */ + write (fd, out, 2); - if (!driver->framebuf) { - fprintf (stderr, "sli_init: No frame buffer.\n"); - driver->close (); - return -1; - } - // Set LCD parameters (I use a 16x2 LCD) -- small but still useful - // Its also much cheaper than the higher quality Matrix Orbital modules - // Currently, $30 for interface kit and 16x2 non-backlit LCD... - driver->wid = 15; - driver->hgt = 2; + if (!driver->framebuf) { + fprintf (stderr, "sli_init: No frame buffer.\n"); + driver->close (); + return -1; + } + // Set LCD parameters (I use a 16x2 LCD) -- small but still useful + // Its also much cheaper than the higher quality Matrix Orbital modules + // Currently, $30 for interface kit and 16x2 non-backlit LCD... + driver->wid = 15; + driver->hgt = 2; - // Set the functions the driver supports... + // Set the functions the driver supports... - driver->clear = (void *) -1; - driver->string = (void *) -1; - driver->chr = (void *) -1; - driver->vbar = sli_vbar; - driver->init_vbar = sli_init_vbar; - driver->hbar = sli_hbar; - driver->init_hbar = sli_init_hbar; - driver->num = (void *) -1; - driver->init_num = (void *) -1; + driver->clear = (void *) -1; + driver->string = (void *) -1; + driver->chr = (void *) -1; + driver->vbar = sli_vbar; + driver->init_vbar = sli_init_vbar; + driver->hbar = sli_hbar; + driver->init_hbar = sli_init_hbar; + driver->num = (void *) -1; + driver->init_num = (void *) -1; - driver->init = sli_init; - driver->close = sli_close; - driver->flush = sli_flush; - driver->flush_box = sli_flush_box; - driver->contrast = (void *) -1; - driver->backlight = (void *) -1; - driver->set_char = sli_set_char; - driver->icon = sli_icon; - driver->draw_frame = sli_draw_frame; + driver->init = sli_init; + driver->close = sli_close; + driver->flush = sli_flush; + driver->flush_box = sli_flush_box; + driver->contrast = (void *) -1; + driver->backlight = (void *) -1; + driver->set_char = sli_set_char; + driver->icon = sli_icon; + driver->draw_frame = sli_draw_frame; - driver->getkey = (void *) -1; + driver->getkey = (void *) -1; - return fd; + return fd; } /* Clean-up */ void sli_close () { - close (fd); + close (fd); - if (sli->framebuf) - free (sli->framebuf); + if (sli->framebuf) + free (sli->framebuf); - sli->framebuf = NULL; + sli->framebuf = NULL; } void sli_flush () { - sli_draw_frame (lcd.framebuf); + sli_draw_frame (lcd.framebuf); } /* no bounds checking is done in MtxOrb.c (which I shamelessly ripped) @@ -191,27 +191,27 @@ sli_flush () void sli_flush_box (int lft, int top, int rgt, int bot) { - int y; - char out[2]; /* Why does the matrix driver allocate so much here? */ + int y; + char out[2]; /* Why does the matrix driver allocate so much here? */ - /* simple bounds checking */ - if ((top > lcd.hgt) | (bot > lcd.hgt)) - return; + /* simple bounds checking */ + if ((top > lcd.hgt) | (bot > lcd.hgt)) + return; - if ((lft > lcd.wid) | (rgt > lcd.wid)) - return; + if ((lft > lcd.wid) | (rgt > lcd.wid)) + return; // printf("Flush (%i,%i)-(%i,%i)\n", lft, top, rgt, bot); /* I like having hex, everywhere and all the time */ - for (y = top; y <= bot; y++) { - if (y == 1) - sprintf (out, "%c%c", 0x0FE, 0x080 + lft); - if (y == 2) - sprintf (out, "%c%c", 0x0FE, 0x0C0 + lft); - write (fd, out, 0x002); - write (fd, lcd.framebuf + (y * lcd.wid) + lft, rgt - lft + 1); - } + for (y = top; y <= bot; y++) { + if (y == 1) + sprintf (out, "%c%c", 0x0FE, 0x080 + lft); + if (y == 2) + sprintf (out, "%c%c", 0x0FE, 0x0C0 + lft); + write (fd, out, 0x002); + write (fd, lcd.framebuf + (y * lcd.wid) + lft, rgt - lft + 1); + } } @@ -222,10 +222,10 @@ sli_flush_box (int lft, int top, int rgt, int bot) void sli_chr (int x, int y, char c) { - y--; - x--; + y--; + x--; - lcd.framebuf[(y * lcd.wid) + x] = c; + lcd.framebuf[(y * lcd.wid) + x] = c; } ///////////////////////////////////////////////////////////////// @@ -244,87 +244,87 @@ sli_chr (int x, int y, char c) void sli_init_vbar () { - char a[] = { - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 1, 1, 1, 1, 1, - }; - char b[] = { - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - }; - char c[] = { - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - }; - char d[] = { - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - }; - char e[] = { - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - }; - char f[] = { - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - }; - char g[] = { - 0, 0, 0, 0, 0, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - 1, 1, 1, 1, 1, - }; + char a[] = { + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, + }; + char b[] = { + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + }; + char c[] = { + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + }; + char d[] = { + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + }; + char e[] = { + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + }; + char f[] = { + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + }; + char g[] = { + 0, 0, 0, 0, 0, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + 1, 1, 1, 1, 1, + }; - if (custom != vbar) { - sli_set_char (1, a); - sli_set_char (2, b); - sli_set_char (3, c); - sli_set_char (4, d); - sli_set_char (5, e); - sli_set_char (6, f); - sli_set_char (7, g); - custom = vbar; - } + if (custom != vbar) { + sli_set_char (1, a); + sli_set_char (2, b); + sli_set_char (3, c); + sli_set_char (4, d); + sli_set_char (5, e); + sli_set_char (6, f); + sli_set_char (7, g); + custom = vbar; + } } ///////////////////////////////////////////////////////////////// @@ -334,54 +334,54 @@ void sli_init_hbar () { - char a[] = { - 1, 0, 0, 0, 0, - 1, 0, 0, 0, 0, - 1, 0, 0, 0, 0, - 1, 0, 0, 0, 0, - 1, 0, 0, 0, 0, - 1, 0, 0, 0, 0, - 1, 0, 0, 0, 0, - 1, 0, 0, 0, 0, - }; - char b[] = { - 1, 1, 0, 0, 0, - 1, 1, 0, 0, 0, - 1, 1, 0, 0, 0, - 1, 1, 0, 0, 0, - 1, 1, 0, 0, 0, - 1, 1, 0, 0, 0, - 1, 1, 0, 0, 0, - 1, 1, 0, 0, 0, - }; - char c[] = { - 1, 1, 1, 0, 0, - 1, 1, 1, 0, 0, - 1, 1, 1, 0, 0, - 1, 1, 1, 0, 0, - 1, 1, 1, 0, 0, - 1, 1, 1, 0, 0, - 1, 1, 1, 0, 0, - 1, 1, 1, 0, 0, - }; - char d[] = { - 1, 1, 1, 1, 0, - 1, 1, 1, 1, 0, - 1, 1, 1, 1, 0, - 1, 1, 1, 1, 0, - 1, 1, 1, 1, 0, - 1, 1, 1, 1, 0, - 1, 1, 1, 1, 0, - 1, 1, 1, 1, 0, - }; + char a[] = { + 1, 0, 0, 0, 0, + 1, 0, 0, 0, 0, + 1, 0, 0, 0, 0, + 1, 0, 0, 0, 0, + 1, 0, 0, 0, 0, + 1, 0, 0, 0, 0, + 1, 0, 0, 0, 0, + 1, 0, 0, 0, 0, + }; + char b[] = { + 1, 1, 0, 0, 0, + 1, 1, 0, 0, 0, + 1, 1, 0, 0, 0, + 1, 1, 0, 0, 0, + 1, 1, 0, 0, 0, + 1, 1, 0, 0, 0, + 1, 1, 0, 0, 0, + 1, 1, 0, 0, 0, + }; + char c[] = { + 1, 1, 1, 0, 0, + 1, 1, 1, 0, 0, + 1, 1, 1, 0, 0, + 1, 1, 1, 0, 0, + 1, 1, 1, 0, 0, + 1, 1, 1, 0, 0, + 1, 1, 1, 0, 0, + 1, 1, 1, 0, 0, + }; + char d[] = { + 1, 1, 1, 1, 0, + 1, 1, 1, 1, 0, + 1, 1, 1, 1, 0, + 1, 1, 1, 1, 0, + 1, 1, 1, 1, 0, + 1, 1, 1, 1, 0, + 1, 1, 1, 1, 0, + 1, 1, 1, 1, 0, + }; - if (custom != hbar) { - sli_set_char (1, a); - sli_set_char (2, b); - sli_set_char (3, c); - sli_set_char (4, d); - custom = hbar; - } + if (custom != hbar) { + sli_set_char (1, a); + sli_set_char (2, b); + sli_set_char (3, c); + sli_set_char (4, d); + custom = hbar; + } } ///////////////////////////////////////////////////////////////// @@ -396,17 +396,17 @@ sli_init_hbar () void sli_vbar (int x, int len) { - char map[9] = { 32, 1, 2, 3, 4, 5, 6, 7, 255 }; + char map[9] = { 32, 1, 2, 3, 4, 5, 6, 7, 255 }; - int y; - for (y = lcd.hgt; y > 0 && len > 0; y--) { - if (len >= lcd.cellhgt) - sli_chr (x, y, 255); - else - sli_chr (x, y, map[len]); + int y; + for (y = lcd.hgt; y > 0 && len > 0; y--) { + if (len >= lcd.cellhgt) + sli_chr (x, y, 255); + else + sli_chr (x, y, map[len]); - len -= lcd.cellhgt; - } + len -= lcd.cellhgt; + } } @@ -416,17 +416,17 @@ sli_vbar (int x, int len) void sli_hbar (int x, int y, int len) { - char map[6] = { 32, 1, 2, 3, 4, 255 }; + char map[6] = { 32, 1, 2, 3, 4, 255 }; - for (; x <= lcd.wid && len > 0; x++) { - if (len >= lcd.cellwid) - sli_chr (x, y, 255); - else - sli_chr (x, y, map[len]); + for (; x <= lcd.wid && len > 0; x++) { + if (len >= lcd.cellwid) + sli_chr (x, y, 255); + else + sli_chr (x, y, map[len]); - len -= lcd.cellwid; + len -= lcd.cellwid; - } + } } @@ -440,79 +440,79 @@ sli_hbar (int x, int y, int len) void sli_set_char (int n, char *dat) { - char out[2]; - int row, col; - int letter; + char out[2]; + int row, col; + int letter; - /* SLI also has 8 user definable characters */ - if (n < 0 || n > 7) - return; - if (!dat) - return; + /* SLI also has 8 user definable characters */ + if (n < 0 || n > 7) + return; + if (!dat) + return; - /* Move cursor to CGRAM */ - out[0] = 0x0FE; - out[1] = 0x040 + 8 * n; - write (fd, out, 2); + /* Move cursor to CGRAM */ + out[0] = 0x0FE; + out[1] = 0x040 + 8 * n; + write (fd, out, 2); - for (row = 0; row < lcd.cellhgt; row++) { - letter = 0; - for (col = 0; col < lcd.cellwid; col++) { - letter <<= 1; - letter |= (dat[(row * lcd.cellwid) + col] > 0); - } - letter |= 0x020; /* SLI can't accept CR, LF, etc in this character! */ - write (fd, &letter, 1); - } + for (row = 0; row < lcd.cellhgt; row++) { + letter = 0; + for (col = 0; col < lcd.cellwid; col++) { + letter <<= 1; + letter |= (dat[(row * lcd.cellwid) + col] > 0); + } + letter |= 0x020; /* SLI can't accept CR, LF, etc in this character! */ + write (fd, &letter, 1); + } - /* Move cursor back to DDRAM */ - out[0] = 0x0FE; - out[1] = 0x080; - write (fd, out, 2); + /* Move cursor back to DDRAM */ + out[0] = 0x0FE; + out[1] = 0x080; + write (fd, out, 2); } void sli_icon (int which, char dest) { - char icons[3][5 * 8] = { - { - 1, 1, 1, 1, 1, // Empty Heart - 1, 0, 1, 0, 1, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 1, 0, 0, 0, 1, - 1, 1, 0, 1, 1, - 1, 1, 1, 1, 1, - }, + char icons[3][5 * 8] = { + { + 1, 1, 1, 1, 1, // Empty Heart + 1, 0, 1, 0, 1, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 1, 0, 0, 0, 1, + 1, 1, 0, 1, 1, + 1, 1, 1, 1, 1, + }, - { - 1, 1, 1, 1, 1, // Filled Heart - 1, 0, 1, 0, 1, - 0, 1, 0, 1, 0, - 0, 1, 1, 1, 0, - 0, 1, 1, 1, 0, - 1, 0, 1, 0, 1, - 1, 1, 0, 1, 1, - 1, 1, 1, 1, 1, - }, + { + 1, 1, 1, 1, 1, // Filled Heart + 1, 0, 1, 0, 1, + 0, 1, 0, 1, 0, + 0, 1, 1, 1, 0, + 0, 1, 1, 1, 0, + 1, 0, 1, 0, 1, + 1, 1, 0, 1, 1, + 1, 1, 1, 1, 1, + }, - { - 0, 0, 0, 0, 0, // Ellipsis - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 0, 0, 0, 0, 0, - 1, 0, 1, 0, 1, - }, + { + 0, 0, 0, 0, 0, // Ellipsis + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 0, 0, 0, 0, 0, + 1, 0, 1, 0, 1, + }, - }; + }; - if (custom == bign) - custom = beat; - sli_set_char (dest, &icons[which][0]); + if (custom == bign) + custom = beat; + sli_set_char (dest, &icons[which][0]); } ///////////////////////////////////////////////////////////// @@ -523,33 +523,33 @@ sli_icon (int which, char dest) void sli_draw_frame (char *dat) { - char out[2]; /* Again, why does the Matrix driver allocate so much here? */ - int y; + char out[2]; /* Again, why does the Matrix driver allocate so much here? */ + int y; - if (!dat) - return; + if (!dat) + return; - /* - out[0]=0x0FE; - out[1]=0x001; - write(fd, out, 2); - */ + /* + out[0]=0x0FE; + out[1]=0x001; + write(fd, out, 2); + */ - /* Don't update if we have no new data - this keeps me from getting a migraine - (just like those copyleft penguin mints... mmmmmm) */ + /* Don't update if we have no new data + this keeps me from getting a migraine + (just like those copyleft penguin mints... mmmmmm) */ - // if (!strncmp(dat,lastframe,32)) /* Nothing has changed */ - // return; + // if (!strncmp(dat,lastframe,32)) /* Nothing has changed */ + // return; - /* Do the actual refresh */ - out[0] = 0x0FE; - out[1] = 0x080; - write (fd, out, 2); - write (fd, &dat[0], 16); - usleep (10); - write (fd, &dat[16], 15); + /* Do the actual refresh */ + out[0] = 0x0FE; + out[1] = 0x080; + write (fd, out, 2); + write (fd, &dat[0], 16); + usleep (10); + write (fd, &dat[16], 15); - // strncpy(lastframe,dat,32); // Update lastframe... + // strncpy(lastframe,dat,32); // Update lastframe... } diff --git a/server/input.c b/server/input.c index 2d49a28..281be43 100644 --- a/server/input.c +++ b/server/input.c @@ -49,74 +49,74 @@ int server_input (int key); int handle_input () { - char str[256]; - int key; - screen *s; - client *c; + char str[256]; + int key; + screen *s; + client *c; - key = lcd.getkey (); + key = lcd.getkey (); - if (!key) - return 0; + if (!key) + return 0; - debug ("handle_input(%c)\n", (char) key); + debug ("handle_input(%c)\n", (char) key); - if (key) { - s = screenlist_current (); - if (s) { - c = s->parent; - if (c) { - // TODO: Interpret and translate keys! - // If the client should have this keypress... - // Send keypress to client - if (key >= 'E' && key <= 'Z') { - // TODO: Implement client "acceptable key" lists - sprintf (str, "key %c\n", key); - sock_send_string (c->sock, str); - } - // Otherwise, tell the server about it. - else { - server_input (key); - } - } else { - // If no parent, it means we're on the server screen. - // so, the server gets all keypresses there. - server_input (key); - } - } - } + if (key) { + s = screenlist_current (); + if (s) { + c = s->parent; + if (c) { + // TODO: Interpret and translate keys! + // If the client should have this keypress... + // Send keypress to client + if (key >= 'E' && key <= 'Z') { + // TODO: Implement client "acceptable key" lists + sprintf (str, "key %c\n", key); + sock_send_string (c->sock, str); + } + // Otherwise, tell the server about it. + else { + server_input (key); + } + } else { + // If no parent, it means we're on the server screen. + // so, the server gets all keypresses there. + server_input (key); + } + } + } - return 0; + return 0; } int server_input (int key) { - debug ("server_input(%c)\n", (char) key); + debug ("server_input(%c)\n", (char) key); - switch (key) { - case 'A': - if (screenlist_action == SCR_HOLD) - screenlist_action = 0; - else - screenlist_action = SCR_HOLD; - break; - case 'B': - screenlist_action = SCR_BACK; - screenlist_prev (); - break; - case 'C': - screenlist_action = SCR_SKIP; - screenlist_next (); - break; - case 'D': - debug ("got the menu key!\n"); - server_menu (); - break; - default: - debug ("server_input: Invalid key \"%c\" (%i)\n", (char) key, key); - break; - } + switch (key) { + case 'A': + if (screenlist_action == SCR_HOLD) + screenlist_action = 0; + else + screenlist_action = SCR_HOLD; + break; + case 'B': + screenlist_action = SCR_BACK; + screenlist_prev (); + break; + case 'C': + screenlist_action = SCR_SKIP; + screenlist_next (); + break; + case 'D': + debug ("got the menu key!\n"); + server_menu (); + break; + default: + debug ("server_input: Invalid key \"%c\" (%i)\n", (char) key, key); + break; + } - return 0; + return 0; } diff --git a/server/main.c b/server/main.c index ffb7844..cfce18d 100644 --- a/server/main.c +++ b/server/main.c @@ -53,12 +53,12 @@ static screen_size sizes[] = // really *do* anything. It just helps to figure out which parameters // go to the server, and which ones go to individual drivers... static parameter args[] = { - {"-h", "--help"}, - {"-d", "--driver"}, - {"-t", "--type"}, - {"-f", "--foreground"}, - {"-b", "--backlight"}, - {NULL, NULL}, + {"-h", "--help"}, + {"-d", "--driver"}, + {"-t", "--type"}, + {"-f", "--foreground"}, + {"-b", "--backlight"}, + {NULL, NULL}, }; void exit_program (int val); @@ -67,112 +67,112 @@ void HelpScreen (); int main (int argc, char **argv) { - // TODO: Use a config file! - //char cfgfile[256] = "/etc/LCDd.cf"; - int i, err, tmp; - int daemon_mode = 1; - int disable_server_screen = 1; - int child; - screen *s = NULL; - char *str, *ing; // strings for commandline handling + // TODO: Use a config file! + //char cfgfile[256] = "/etc/LCDd.cf"; + int i, err, tmp; + int daemon_mode = 1; + int disable_server_screen = 1; + int child; + screen *s = NULL; + char *str, *ing; // strings for commandline handling // screen_size *size = &sizes[0]; // No longer needed - // Ctrl-C will cause a clean exit... - signal (SIGINT, exit_program); - // and "kill"... - signal (SIGTERM, exit_program); - // and "kill -HUP" (hangup)... - signal (SIGHUP, exit_program); - // and just in case, "kill -KILL" (which cannot be trapped; but oh well) - signal (SIGKILL, exit_program); + // Ctrl-C will cause a clean exit... + signal (SIGINT, exit_program); + // and "kill"... + signal (SIGTERM, exit_program); + // and "kill -HUP" (hangup)... + signal (SIGHUP, exit_program); + // and just in case, "kill -KILL" (which cannot be trapped; but oh well) + signal (SIGKILL, exit_program); - // If no paramaters given, give the help screen. - if (argc == 1) - HelpScreen (); + // If no paramaters given, give the help screen. + if (argc == 1) + HelpScreen (); - // Don't spawn a child if we're using the curses driver - for (i = 1; i < argc; i++) { - if (0 == strcmp (argv[i], "-f") || 0 == strcmp (argv[i], "--foreground") || 0 == strcmp (argv[i], "curses")) - daemon_mode = 0; - } + // Don't spawn a child if we're using the curses driver + for (i = 1; i < argc; i++) { + if (0 == strcmp (argv[i], "-f") || 0 == strcmp (argv[i], "--foreground") || 0 == strcmp (argv[i], "curses")) + daemon_mode = 0; + } - // Now, go into daemon mode... + // Now, go into daemon mode... #ifndef DEBUG - if (daemon_mode) { - if ((child = fork ()) != 0) { - usleep (1500000); // Wait for child to initialize - exit (0); /* PARENT EXITS */ - } - // This line removed because it eats error messages... - //setsid(); /* RELEASE TTY */ - } + if (daemon_mode) { + if ((child = fork ()) != 0) { + usleep (1500000); // Wait for child to initialize + exit (0); /* PARENT EXITS */ + } + // This line removed because it eats error messages... + //setsid(); /* RELEASE TTY */ + } #endif - // Set up lcd driver base system - lcd_init (""); + // Set up lcd driver base system + lcd_init (""); - // Parse the command line now... - // TODO: Move this to a separate function? - for (i = 1; i < argc; i++) { - if (0 == strcmp (argv[i], "-d") || 0 == strcmp (argv[i], "--driver")) { - if (argc <= i + 1) - HelpScreen (); - str = argv[++i]; - ing = NULL; + // Parse the command line now... + // TODO: Move this to a separate function? + for (i = 1; i < argc; i++) { + if (0 == strcmp (argv[i], "-d") || 0 == strcmp (argv[i], "--driver")) { + if (argc <= i + 1) + HelpScreen (); + str = argv[++i]; + ing = NULL; - // Check to see if the next parameter is intended for LCDd, - // or if it should be passed to the driver... - if (argc > i + 1) { - int j, skip = 0; - for (j = 1; args[j].lg; j++) // check each option except "help" - if (!strcmp (argv[i + 1], args[j].sh) || !strcmp (argv[i + 1], args[j].lg)) - skip = 1; + // Check to see if the next parameter is intended for LCDd, + // or if it should be passed to the driver... + if (argc > i + 1) { + int j, skip = 0; + for (j = 1; args[j].lg; j++) // check each option except "help" + if (!strcmp (argv[i + 1], args[j].sh) || !strcmp (argv[i + 1], args[j].lg)) + skip = 1; - if (!skip) { - ing = argv[++i]; - } - //else i++; - } - err = lcd_add_driver (str, ing); - if (err <= 0) { - printf ("Error loading driver %s. Continuing anyway...\n", str); - } - if ((err > 0) && (0 == strcmp (str, "curses"))) - daemon_mode = 0; - } else if (0 == strcmp (argv[i], "-h") || 0 == strcmp (argv[i], "--help")) { - HelpScreen (); - } - // Redundant, but it prevents errors... - else if (0 == strcmp (argv[i], "-f") || 0 == strcmp (argv[i], "--foreground")) { - daemon_mode = 0; - } else if (0 == strcmp (argv[i], "-b") || 0 == strcmp (argv[i], "--backlight")) { - if (argc <= i + 1) - HelpScreen (); - str = argv[++i]; - if (0 == strcmp (str, "off")) - backlight_state = backlight = BACKLIGHT_OFF; - else if (0 == strcmp (str, "on")) - backlight_state = backlight = BACKLIGHT_ON; - else if (0 == strcmp (str, "open")) - backlight = BACKLIGHT_OPEN; - else - HelpScreen (); - } else if (0 == strcmp (argv[i], "-t") || 0 == strcmp (argv[i], "--type")) { - if (i + 1 > argc) - HelpScreen (); - else { - int wid, hgt; + if (!skip) { + ing = argv[++i]; + } + //else i++; + } + err = lcd_add_driver (str, ing); + if (err <= 0) { + printf ("Error loading driver %s. Continuing anyway...\n", str); + } + if ((err > 0) && (0 == strcmp (str, "curses"))) + daemon_mode = 0; + } else if (0 == strcmp (argv[i], "-h") || 0 == strcmp (argv[i], "--help")) { + HelpScreen (); + } + // Redundant, but it prevents errors... + else if (0 == strcmp (argv[i], "-f") || 0 == strcmp (argv[i], "--foreground")) { + daemon_mode = 0; + } else if (0 == strcmp (argv[i], "-b") || 0 == strcmp (argv[i], "--backlight")) { + if (argc <= i + 1) + HelpScreen (); + str = argv[++i]; + if (0 == strcmp (str, "off")) + backlight_state = backlight = BACKLIGHT_OFF; + else if (0 == strcmp (str, "on")) + backlight_state = backlight = BACKLIGHT_ON; + else if (0 == strcmp (str, "open")) + backlight = BACKLIGHT_OPEN; + else + HelpScreen (); + } else if (0 == strcmp (argv[i], "-t") || 0 == strcmp (argv[i], "--type")) { + if (i + 1 > argc) + HelpScreen (); + else { + int wid, hgt; - i++; - sscanf (argv[i], "%ix%i", &wid, &hgt); - if (wid > 80 || wid < 16 || hgt > 25 || hgt < 2) { - fprintf (stderr, "LCDd: Invalid lcd size \"%s\". Using 20x4.\n", argv[i]); - lcd.wid = 20; - lcd.hgt = 4; - } else { - lcd.wid = wid; - lcd.hgt = hgt; - } + i++; + sscanf (argv[i], "%ix%i", &wid, &hgt); + if (wid > 80 || wid < 16 || hgt > 25 || hgt < 2) { + fprintf (stderr, "LCDd: Invalid lcd size \"%s\". Using 20x4.\n", argv[i]); + lcd.wid = 20; + lcd.hgt = 4; + } else { + lcd.wid = wid; + lcd.hgt = hgt; + } /* no longer needed int j=0, valid=0; @@ -192,126 +192,126 @@ main (int argc, char **argv) fprintf(stderr, "LCDd: Invalid lcd size \"%s\". Using 20x4.\n", argv[i]); } */ - } - } else if (0 == strcmp (argv[i], "-i") || 0 == strcmp (argv[i], "--serverinfo")) { - if (i + 1 > argc) - HelpScreen (); - else { - i++; - if (0 == strcmp (argv[i], "off")) - disable_server_screen = 1; - if (0 == strcmp (argv[i], "on")) - disable_server_screen = 0; - } - } else { - // otherwise... Get help! - printf ("Invalid parameter: %s\n", argv[i]); - HelpScreen (); - } - } + } + } else if (0 == strcmp (argv[i], "-i") || 0 == strcmp (argv[i], "--serverinfo")) { + if (i + 1 > argc) + HelpScreen (); + else { + i++; + if (0 == strcmp (argv[i], "off")) + disable_server_screen = 1; + if (0 == strcmp (argv[i], "on")) + disable_server_screen = 0; + } + } else { + // otherwise... Get help! + printf ("Invalid parameter: %s\n", argv[i]); + HelpScreen (); + } + } - // Now init a bunch of required stuff... + // Now init a bunch of required stuff... - if (sock_create_server () <= 0) { - printf ("Error opening socket.\n"); - return 1; - } + if (sock_create_server () <= 0) { + printf ("Error opening socket.\n"); + return 1; + } - if (client_init () < 0) { - printf ("Error initializing client list\n"); - return 1; - } + if (client_init () < 0) { + printf ("Error initializing client list\n"); + return 1; + } - if (screenlist_init () < 0) { - printf ("Error initializing screen list\n"); - return 1; - } - // Make sure the server screen shows up every once in a while.. - if (server_screen_init () < 0) { - printf ("Error initializing server screens\n"); - return 1; - } else if (disable_server_screen) { - server_screen->priority = 256; - } - // Main loop... - while (1) { - sock_poll_clients (); - parse_all_client_messages (); - handle_input (); + if (screenlist_init () < 0) { + printf ("Error initializing screen list\n"); + return 1; + } + // Make sure the server screen shows up every once in a while.. + if (server_screen_init () < 0) { + printf ("Error initializing server screens\n"); + return 1; + } else if (disable_server_screen) { + server_screen->priority = 256; + } + // Main loop... + while (1) { + sock_poll_clients (); + parse_all_client_messages (); + handle_input (); - // TODO: Move this code to screenlist.c... - // ... it should just say "handle_screens();" - // Timer gets reset by screenlist_next() - timer++; - // this line's here because s was getting overwritten at one time... - //s = screenlist_current(); - if (s && (timer >= s->duration)) { - screenlist_next (); - } - // Just in case it gets out of hand... - if (timer >= 0x10000) - timer = 0; - update_server_screen (timer); - s = screenlist_current (); + // TODO: Move this code to screenlist.c... + // ... it should just say "handle_screens();" + // Timer gets reset by screenlist_next() + timer++; + // this line's here because s was getting overwritten at one time... + //s = screenlist_current(); + if (s && (timer >= s->duration)) { + screenlist_next (); + } + // Just in case it gets out of hand... + if (timer >= 0x10000) + timer = 0; + update_server_screen (timer); + s = screenlist_current (); - // render something here... - if (s) - draw_screen (s, timer); - else - no_screen_screen (timer); + // render something here... + if (s) + draw_screen (s, timer); + else + no_screen_screen (timer); - usleep (TIME_UNIT); - } + usleep (TIME_UNIT); + } - // Quit! - exit_program (0); + // Quit! + exit_program (0); - return 0; + return 0; } void exit_program (int val) { - // TODO: These things shouldn't be so interdependent. The order - // things are shut down in shouldn't matter... + // TODO: These things shouldn't be so interdependent. The order + // things are shut down in shouldn't matter... - // Say goodbye! - goodbye_screen (); - // Can go anywhere... - lcd_shutdown (); + // Say goodbye! + goodbye_screen (); + // Can go anywhere... + lcd_shutdown (); - // Must come before screenlist_shutdown - client_shutdown (); - // Must come after client_shutdown - screenlist_shutdown (); - // Should come after client_shutdown - sock_close_all (); + // Must come before screenlist_shutdown + client_shutdown (); + // Must come after client_shutdown + screenlist_shutdown (); + // Should come after client_shutdown + sock_close_all (); - exit (0); + exit (0); } void HelpScreen () { - printf ("LCDproc server daemon, %s\n", version); - printf ("Copyright (c) 1999 Scott Scriven, William Ferrell, and misc contributors\n"); - printf ("This program is freely redistributable under the terms of the GNU Public License\n\n"); - printf ("Usage: LCDd [options]\n"); - printf ("\tOptions in []'s are optional. Available options are:\n"); - printf ("\t-h\t--help\n\t\t\tDisplay this help screen\n"); - printf ("\t-t\t--type \n\t\t\tSelect an LCD size (20x4, 16x2, etc...)\n"); - printf ("\t-d\t--driver [args]\n\t\t\tAdd a driver to use:\n"); - printf ("\t\t\tCFontz, curses, HD44780, irmanin, joy,\n\t\t\tMtxOrb, text\n"); - printf ("\t\t\t(args will be passed to the driver for init)\n"); - printf ("\t-f\t--foreground\n\t\t\tRun in the foreground (no daemon)\n"); - printf ("\t-b\t--backlight \n\t\t\tSet backlight mode (on, off, open)\n"); - printf ("\t-i\t--serverinfo off\n\t\t\tSet the server screen to low priority\n"); - printf ("\n"); - printf ("\tUse \"man LCDd\" for more info.\n"); - printf ("\tHelp on each driver's parameters are obtained upon request:\n\t\t\"LCDd -d driver --help\"\n"); - printf ("Example:\n"); - printf ("\tLCDd -d MtxOrb \"--device /dev/lcd --contrast 200\" -d joy\n"); - printf ("\n"); - exit (0); + printf ("LCDproc server daemon, %s\n", version); + printf ("Copyright (c) 1999 Scott Scriven, William Ferrell, and misc contributors\n"); + printf ("This program is freely redistributable under the terms of the GNU Public License\n\n"); + printf ("Usage: LCDd [options]\n"); + printf ("\tOptions in []'s are optional. Available options are:\n"); + printf ("\t-h\t--help\n\t\t\tDisplay this help screen\n"); + printf ("\t-t\t--type \n\t\t\tSelect an LCD size (20x4, 16x2, etc...)\n"); + printf ("\t-d\t--driver [args]\n\t\t\tAdd a driver to use:\n"); + printf ("\t\t\tCFontz, curses, HD44780, irmanin, joy,\n\t\t\tMtxOrb, text\n"); + printf ("\t\t\t(args will be passed to the driver for init)\n"); + printf ("\t-f\t--foreground\n\t\t\tRun in the foreground (no daemon)\n"); + printf ("\t-b\t--backlight \n\t\t\tSet backlight mode (on, off, open)\n"); + printf ("\t-i\t--serverinfo off\n\t\t\tSet the server screen to low priority\n"); + printf ("\n"); + printf ("\tUse \"man LCDd\" for more info.\n"); + printf ("\tHelp on each driver's parameters are obtained upon request:\n\t\t\"LCDd -d driver --help\"\n"); + printf ("Example:\n"); + printf ("\tLCDd -d MtxOrb \"--device /dev/lcd --contrast 200\" -d joy\n"); + printf ("\n"); + exit (0); } diff --git a/server/main.h b/server/main.h index 50c1fcc..f6a12de 100644 --- a/server/main.h +++ b/server/main.h @@ -22,12 +22,12 @@ void exit_program (int val); //#define TIME_UNIT (125000/2) typedef struct screen_size { - char *size; - int wid, hgt; + char *size; + int wid, hgt; } screen_size; typedef struct parameter { - char *sh, *lg; // short and long versions + char *sh, *lg; // short and long versions } parameter; #endif diff --git a/server/menu.c b/server/menu.c index 2581779..2f3374d 100644 --- a/server/menu.c +++ b/server/menu.c @@ -32,34 +32,34 @@ void framedelay () { - sock_poll_clients (); - parse_all_client_messages (); + sock_poll_clients (); + parse_all_client_messages (); - usleep (TIME_UNIT); + usleep (TIME_UNIT); } static void draw_heartbeat () { - static int timer = 0; + static int timer = 0; - if (heartbeat) { - // Set this to pulsate like a real heart beat... - // (binary is fun... :) - lcd.icon (!((timer + 4) & 5), 0); - lcd.chr (lcd.wid, 1, 0); - } - lcd.flush (); + if (heartbeat) { + // Set this to pulsate like a real heart beat... + // (binary is fun... :) + lcd.icon (!((timer + 4) & 5), 0); + lcd.chr (lcd.wid, 1, 0); + } + lcd.flush (); - timer++; - timer &= 0x0f; + timer++; + timer &= 0x0f; } static int PAD = 255; typedef struct menu_info { - int selected; - int length; + int selected; + int length; } menu_info; static int draw_menu (Menu menu, menu_info * info); @@ -71,271 +71,271 @@ static int slid_func (menu_item * item); int do_menu (Menu menu) { - menu_info info; - int key = 0; - int status = MENU_OK; - int done = 0; + menu_info info; + int key = 0; + int status = MENU_OK; + int done = 0; - int (*func) (); - int (*readfunc) (int); + int (*func) (); + int (*readfunc) (int); - if (!menu) - return MENU_ERROR; + if (!menu) + return MENU_ERROR; - fill_menu_info (menu, &info); + fill_menu_info (menu, &info); - while (!done) { - // Keep the cursor off titles... (?) - while (menu[info.selected].type == TYPE_TITL) { - info.selected++; - // If the title is the last thing in the menu... - if (!menu[info.selected].text) - info.selected -= 2; - } + while (!done) { + // Keep the cursor off titles... (?) + while (menu[info.selected].type == TYPE_TITL) { + info.selected++; + // If the title is the last thing in the menu... + if (!menu[info.selected].text) + info.selected -= 2; + } - draw_menu (menu, &info); + draw_menu (menu, &info); - // FIXME: This should use a better keypress interface, which - // FIXME: handles things according to keybindings... + // FIXME: This should use a better keypress interface, which + // FIXME: handles things according to keybindings... - for (key = lcd.getkey (); key == 0; key = lcd.getkey ()) { - // sleep for 1/8th second... - framedelay (); - // do the heartbeat... - draw_heartbeat (); - // Check for client input... - } + for (key = lcd.getkey (); key == 0; key = lcd.getkey ()) { + // sleep for 1/8th second... + framedelay (); + // do the heartbeat... + draw_heartbeat (); + // Check for client input... + } - // Handle the key according to the keybindings... - switch (key) { - case 'D': - done = 1; - break; - case 'B': - if (info.selected > 0) - info.selected--; - while (menu[info.selected].type == TYPE_TITL) { - if (info.selected > 0) - info.selected--; - else - break; - } - break; - case 'C': - if (menu[info.selected + 1].text) - info.selected++; - break; - case 'A': - switch (menu[info.selected].type) { - case TYPE_MENU: - status = do_menu (menu[info.selected].data); - break; - case TYPE_FUNC: - func = menu[info.selected].data; - if (func) - status = func (); - break; - case TYPE_CHEK: - readfunc = menu[info.selected].data; - if (readfunc) - status = readfunc (MENU_CHECK); - status &= 0xffff0000; - break; - case TYPE_SLID: - func = menu[info.selected].data; - if (func) - status = slid_func (&menu[info.selected]); - break; - default: - break; - } + // Handle the key according to the keybindings... + switch (key) { + case 'D': + done = 1; + break; + case 'B': + if (info.selected > 0) + info.selected--; + while (menu[info.selected].type == TYPE_TITL) { + if (info.selected > 0) + info.selected--; + else + break; + } + break; + case 'C': + if (menu[info.selected + 1].text) + info.selected++; + break; + case 'A': + switch (menu[info.selected].type) { + case TYPE_MENU: + status = do_menu (menu[info.selected].data); + break; + case TYPE_FUNC: + func = menu[info.selected].data; + if (func) + status = func (); + break; + case TYPE_CHEK: + readfunc = menu[info.selected].data; + if (readfunc) + status = readfunc (MENU_CHECK); + status &= 0xffff0000; + break; + case TYPE_SLID: + func = menu[info.selected].data; + if (func) + status = slid_func (&menu[info.selected]); + break; + default: + break; + } - switch (status) { - case MENU_OK: - break; - case MENU_CLOSE: - return MENU_OK; - case MENU_QUIT: - return MENU_QUIT; + switch (status) { + case MENU_OK: + break; + case MENU_CLOSE: + return MENU_OK; + case MENU_QUIT: + return MENU_QUIT; // case MENU_KILL: // return MENU_KILL; - case MENU_ERROR: - return MENU_ERROR; - } + case MENU_ERROR: + return MENU_ERROR; + } - // status = menu_handle_action(&menu[info.selected]); - // TODO: It should now do special stuff for "mover" widgets, - // TODO: and handle the return code appropriately. - break; - default: - break; - } + // status = menu_handle_action(&menu[info.selected]); + // TODO: It should now do special stuff for "mover" widgets, + // TODO: and handle the return code appropriately. + break; + default: + break; + } - } + } - return status; + return status; } static int draw_menu (Menu menu, menu_info * info) { - int i; - int x = 1, y = 1; - int top = 0, bottom = 0; + int i; + int x = 1, y = 1; + int top = 0, bottom = 0; - int (*readfunc) (int); + int (*readfunc) (int); - // these should maybe be removed: - int wid = lcd.wid, hgt = lcd.hgt; + // these should maybe be removed: + int wid = lcd.wid, hgt = lcd.hgt; - if (!menu) - return MENU_ERROR; + if (!menu) + return MENU_ERROR; - lcd.clear (); + lcd.clear (); - // Scroll down until the selected item is centered, if possible... - top = info->selected - (hgt / 2); - if (top < 0) - top = 0; - bottom = top + hgt; - if (bottom > info->length) - bottom = info->length; - top = bottom - hgt; - if (top < 0) - top = 0; + // Scroll down until the selected item is centered, if possible... + top = info->selected - (hgt / 2); + if (top < 0) + top = 0; + bottom = top + hgt; + if (bottom > info->length) + bottom = info->length; + top = bottom - hgt; + if (top < 0) + top = 0; - // Draw all visible items... - for (i = top; i < bottom; i++, y++) { - if (i == info->selected) - lcd.chr (2, y, '>'); + // Draw all visible items... + for (i = top; i < bottom; i++, y++) { + if (i == info->selected) + lcd.chr (2, y, '>'); - switch (menu[i].type) { - case TYPE_TITL: - lcd.chr (1, y, PAD); - lcd.chr (2, y, PAD); - lcd.string (4, y, menu[i].text); - for (x = strlen (menu[i].text) + 5; x <= wid; x++) - lcd.chr (x, y, PAD); - break; - case TYPE_MENU: - lcd.string (3, y, menu[i].text); - lcd.chr (wid, y, '>'); - break; - case TYPE_FUNC: - lcd.string (3, y, menu[i].text); - break; - case TYPE_CHEK: - if (menu[i].data) { - readfunc = menu[i].data; - if (readfunc (MENU_READ)) - lcd.chr (wid, y, 'Y'); - else - lcd.chr (wid, y, 'N'); - } - lcd.string (3, y, menu[i].text); - break; - case TYPE_SLID: - lcd.string (3, y, menu[i].text); - break; - case TYPE_MOVE: - break; - default: - break; - } - } + switch (menu[i].type) { + case TYPE_TITL: + lcd.chr (1, y, PAD); + lcd.chr (2, y, PAD); + lcd.string (4, y, menu[i].text); + for (x = strlen (menu[i].text) + 5; x <= wid; x++) + lcd.chr (x, y, PAD); + break; + case TYPE_MENU: + lcd.string (3, y, menu[i].text); + lcd.chr (wid, y, '>'); + break; + case TYPE_FUNC: + lcd.string (3, y, menu[i].text); + break; + case TYPE_CHEK: + if (menu[i].data) { + readfunc = menu[i].data; + if (readfunc (MENU_READ)) + lcd.chr (wid, y, 'Y'); + else + lcd.chr (wid, y, 'N'); + } + lcd.string (3, y, menu[i].text); + break; + case TYPE_SLID: + lcd.string (3, y, menu[i].text); + break; + case TYPE_MOVE: + break; + default: + break; + } + } - if (top != 0) - lcd.chr (1, 1, '^'); - if (bottom < info->length) - lcd.chr (1, hgt, 'v'); + if (top != 0) + lcd.chr (1, 1, '^'); + if (bottom < info->length) + lcd.chr (1, hgt, 'v'); - draw_heartbeat (); - //lcd.flush(); + draw_heartbeat (); + //lcd.flush(); - return 0; + return 0; } static int fill_menu_info (Menu menu, menu_info * info) { - int i; + int i; - info->selected = 0; + info->selected = 0; - // count the entries in the menu - for (i = 0; menu[i].text; i++); + // count the entries in the menu + for (i = 0; menu[i].text; i++); - info->length = i; + info->length = i; - return 0; + return 0; } static int menu_handle_action (menu_item * item) { - return MENU_OK; + return MENU_OK; } static int slid_func (menu_item * item) { - char str[16]; - int key = 0; - int value = 0; - int x, y = 1; - int (*readfunc) (int); + char str[16]; + int key = 0; + int value = 0; + int x, y = 1; + int (*readfunc) (int); - readfunc = item->data; + readfunc = item->data; - lcd.init_hbar (); + lcd.init_hbar (); - while (key != 'A' && key != 'D') { - // Draw the title... - lcd.clear (); - lcd.chr (1, y, PAD); - lcd.chr (2, y, PAD); - lcd.string (4, y, item->text); - for (x = strlen (item->text) + 5; x <= lcd.wid; x++) - lcd.chr (x, y, PAD); + while (key != 'A' && key != 'D') { + // Draw the title... + lcd.clear (); + lcd.chr (1, y, PAD); + lcd.chr (2, y, PAD); + lcd.string (4, y, item->text); + for (x = strlen (item->text) + 5; x <= lcd.wid; x++) + lcd.chr (x, y, PAD); - // Draw the slider now... - value = readfunc (MENU_READ); - if (value < 0 || value >= MENU_CLOSE) - return value; - sprintf (str, "%i", value); - if (lcd.hgt >= 4) { - lcd.string (8, 4, str); - value = (lcd.wid * lcd.cellwid * value / 256); - lcd.hbar (1, 3, value); - } else { - lcd.string (17, 2, str); - value = ((lcd.wid - 4) * lcd.cellwid * value / 256); - lcd.hbar (1, 2, value); - } - //lcd.flush(); + // Draw the slider now... + value = readfunc (MENU_READ); + if (value < 0 || value >= MENU_CLOSE) + return value; + sprintf (str, "%i", value); + if (lcd.hgt >= 4) { + lcd.string (8, 4, str); + value = (lcd.wid * lcd.cellwid * value / 256); + lcd.hbar (1, 3, value); + } else { + lcd.string (17, 2, str); + value = ((lcd.wid - 4) * lcd.cellwid * value / 256); + lcd.hbar (1, 2, value); + } + //lcd.flush(); - for (key = lcd.getkey (); key == 0; key = lcd.getkey ()) { - // do the heartbeat... - draw_heartbeat (); - // sleep for 1/8th second... - framedelay (); - // Check for client input... - } + for (key = lcd.getkey (); key == 0; key = lcd.getkey ()) { + // do the heartbeat... + draw_heartbeat (); + // sleep for 1/8th second... + framedelay (); + // Check for client input... + } - switch (key) { - case 'B': - value = readfunc (MENU_MINUS); - break; - case 'C': - value = readfunc (MENU_PLUS); - break; - } + switch (key) { + case 'B': + value = readfunc (MENU_MINUS); + break; + case 'C': + value = readfunc (MENU_PLUS); + break; + } - if (value >= MENU_CLOSE || value < 0 || key == 'A' || key == 'D') - return value; - } + if (value >= MENU_CLOSE || value < 0 || key == 'A' || key == 'D') + return value; + } - return MENU_OK; + return MENU_OK; } diff --git a/server/menu.h b/server/menu.h index 60abc3d..6ad76ad 100644 --- a/server/menu.h +++ b/server/menu.h @@ -123,9 +123,9 @@ and sliders should return 0-255. #define MENU_READ 5 typedef struct menu_item { - char *text; - int type; - void *data; + char *text; + int type; + void *data; } menu_item; #define Menu menu_item * diff --git a/server/menus.c b/server/menus.c index 7230063..6f0ac56 100644 --- a/server/menus.c +++ b/server/menus.c @@ -40,20 +40,20 @@ int Backlight_On_func (); int Backlight_Open_func (); menu_item main_menu[] = { - {"LCDproc", 0, 0}, // Title - {"Options", TYPE_MENU, (void *) options_menu}, - {"Screens", TYPE_MENU, (void *) screens_menu}, - {"Shutdown", TYPE_MENU, (void *) shutdown_menu}, - {0, 0, 0}, + {"LCDproc", 0, 0}, // Title + {"Options", TYPE_MENU, (void *) options_menu}, + {"Screens", TYPE_MENU, (void *) screens_menu}, + {"Shutdown", TYPE_MENU, (void *) shutdown_menu}, + {0, 0, 0}, }; menu_item options_menu[] = { - {"OPTIONS", TYPE_TITL, 0}, // Title + {"OPTIONS", TYPE_TITL, 0}, // Title // "24-hour Time", TYPE_CHEK, (void *)Time24_func, - {"Contrast...", TYPE_SLID, (void *) Contrast_func}, - {"Backlight", TYPE_MENU, (void *) Backlight_menu}, - {"Heartbeat", TYPE_CHEK, (void *) Heartbeat_func}, + {"Contrast...", TYPE_SLID, (void *) Contrast_func}, + {"Backlight", TYPE_MENU, (void *) Backlight_menu}, + {"Heartbeat", TYPE_CHEK, (void *) Heartbeat_func}, // { "Backlight...", TYPE_SLID, (void *)Backlight_func}, // "OK", TYPE_FUNC, (void *)OK_func, // "Close Menu", TYPE_FUNC, (void *)Close_func, @@ -61,32 +61,32 @@ menu_item options_menu[] = { // "Another Title",TYPE_TITL, 0, // "Main menu?", TYPE_MENU, (void *)main_menu, // "Nothing!", TYPE_FUNC, 0, - {0, 0, 0}, + {0, 0, 0}, }; menu_item screens_menu[] = { - {"SCREENS", TYPE_TITL, 0}, // Title - {"Server Scr", TYPE_CHEK, (void *) Server_screen_func}, - {0, 0, 0}, + {"SCREENS", TYPE_TITL, 0}, // Title + {"Server Scr", TYPE_CHEK, (void *) Server_screen_func}, + {0, 0, 0}, }; menu_item shutdown_menu[] = { - {"Shut Down...", TYPE_TITL, 0}, // Title - {"Kill LCDproc", TYPE_FUNC, (void *) Shutdown_func}, - {"System halt", TYPE_FUNC, (void *) System_halt_func}, - {"Reboot", TYPE_FUNC, (void *) Reboot_func}, - {0, 0, 0}, + {"Shut Down...", TYPE_TITL, 0}, // Title + {"Kill LCDproc", TYPE_FUNC, (void *) Shutdown_func}, + {"System halt", TYPE_FUNC, (void *) System_halt_func}, + {"Reboot", TYPE_FUNC, (void *) Reboot_func}, + {0, 0, 0}, }; menu_item Backlight_menu[] = { - {"BACKLIGHT MENU", TYPE_TITL, 0}, // Title - {"Brightness...", TYPE_SLID, (void *) Backlight_Brightness_func}, - {"\"Off\" Brightness", TYPE_SLID, (void *) Backlight_Off_Brightness_func}, - {"Backlight Mode:", TYPE_FUNC, 0}, // Label - {" - Off", TYPE_FUNC, Backlight_Off_func}, - {" - On", TYPE_FUNC, Backlight_On_func}, - {" - Open", TYPE_FUNC, Backlight_Open_func}, - {0, 0, 0}, + {"BACKLIGHT MENU", TYPE_TITL, 0}, // Title + {"Brightness...", TYPE_SLID, (void *) Backlight_Brightness_func}, + {"\"Off\" Brightness", TYPE_SLID, (void *) Backlight_Off_Brightness_func}, + {"Backlight Mode:", TYPE_FUNC, 0}, // Label + {" - Off", TYPE_FUNC, Backlight_Off_func}, + {" - On", TYPE_FUNC, Backlight_On_func}, + {" - Open", TYPE_FUNC, Backlight_Open_func}, + {0, 0, 0}, }; /////////////////////////////////////////////////////////////////////// @@ -97,274 +97,274 @@ menu_item Backlight_menu[] = { int Shutdown_func () { - exit_program (0); + exit_program (0); - return MENU_KILL; + return MENU_KILL; } // Shuts down the system, if possible int System_halt_func () { - int err; - uid_t id; + int err; + uid_t id; - id = geteuid (); + id = geteuid (); - err = system ("init 0"); + err = system ("init 0"); - if (err < 0) - return MENU_KILL; - if (err == 127) - return MENU_KILL; + if (err < 0) + return MENU_KILL; + if (err == 127) + return MENU_KILL; - // If we're root, exit - if (id == 0) - exit_program (0); + // If we're root, exit + if (id == 0) + exit_program (0); - // Otherwise, assume shutdown will fail; and show more stats. - return MENU_KILL; + // Otherwise, assume shutdown will fail; and show more stats. + return MENU_KILL; } // Shuts down the system and restarts it int Reboot_func () { - int err; - uid_t id; + int err; + uid_t id; - id = geteuid (); + id = geteuid (); - err = system ("init 6"); + err = system ("init 6"); - if (err < 0) - return MENU_KILL; - if (err == 127) - return MENU_KILL; + if (err < 0) + return MENU_KILL; + if (err == 127) + return MENU_KILL; - // If we're root, exit - if (id == 0) - exit_program (0); + // If we're root, exit + if (id == 0) + exit_program (0); - // Otherwise, assume shutdown will fail; and show more stats. - return MENU_KILL; + // Otherwise, assume shutdown will fail; and show more stats. + return MENU_KILL; } int Close_func () { - return MENU_CLOSE; + return MENU_CLOSE; } int OK_func () { - return MENU_OK; + return MENU_OK; } int Time24_func (int input) { - static int status = 0; + static int status = 0; - if (input == MENU_READ) - return status; - if (input == MENU_CHECK) - status ^= 1; // does something. - return (status | MENU_OK); - // The status is "or"-ed with the MENU value to let do_menu() - // know what to do after selecting the item. (two return - // values in one. :) + if (input == MENU_READ) + return status; + if (input == MENU_CHECK) + status ^= 1; // does something. + return (status | MENU_OK); + // The status is "or"-ed with the MENU value to let do_menu() + // know what to do after selecting the item. (two return + // values in one. :) - // Also, "MENU_OK" happens to be zero, so it does not matter - // unless you want something else (like MENU_CLOSE) + // Also, "MENU_OK" happens to be zero, so it does not matter + // unless you want something else (like MENU_CLOSE) } int Heartbeat_func (int input) { - if (input == MENU_READ) - return (heartbeat != HEART_OFF); - if (input == MENU_CHECK) { - if (heartbeat) - heartbeat = HEART_OFF; - else - heartbeat = HEART_OPEN; - } - return ((heartbeat != HEART_OFF) | MENU_OK); + if (input == MENU_READ) + return (heartbeat != HEART_OFF); + if (input == MENU_CHECK) { + if (heartbeat) + heartbeat = HEART_OFF; + else + heartbeat = HEART_OPEN; + } + return ((heartbeat != HEART_OFF) | MENU_OK); } int Backlight_func (int input) { - int status = 128; + int status = 128; - switch (backlight) { - case BACKLIGHT_OFF: - if (input == MENU_READ) - status = 0; - if (input == MENU_PLUS) { - backlight = BACKLIGHT_OPEN; - status = 128; - } - if (input == MENU_MINUS) { - status = 0; - } - break; - case BACKLIGHT_ON: - if (input == MENU_READ) - status = 255; - if (input == MENU_PLUS) { - status = 255; - } - if (input == MENU_MINUS) { - backlight = BACKLIGHT_OPEN; - status = 128; - } - break; - case BACKLIGHT_OPEN: - if (input == MENU_READ) - status = 128; - if (input == MENU_PLUS) { - backlight = BACKLIGHT_ON; - backlight_state = BACKLIGHT_ON; - status = 255; - } - if (input == MENU_MINUS) { - backlight = BACKLIGHT_OFF; - backlight_state = BACKLIGHT_OFF; - status = 0; - } - break; - } + switch (backlight) { + case BACKLIGHT_OFF: + if (input == MENU_READ) + status = 0; + if (input == MENU_PLUS) { + backlight = BACKLIGHT_OPEN; + status = 128; + } + if (input == MENU_MINUS) { + status = 0; + } + break; + case BACKLIGHT_ON: + if (input == MENU_READ) + status = 255; + if (input == MENU_PLUS) { + status = 255; + } + if (input == MENU_MINUS) { + backlight = BACKLIGHT_OPEN; + status = 128; + } + break; + case BACKLIGHT_OPEN: + if (input == MENU_READ) + status = 128; + if (input == MENU_PLUS) { + backlight = BACKLIGHT_ON; + backlight_state = BACKLIGHT_ON; + status = 255; + } + if (input == MENU_MINUS) { + backlight = BACKLIGHT_OFF; + backlight_state = BACKLIGHT_OFF; + status = 0; + } + break; + } - /* - if(input == MENU_READ) return (backlight != BACKLIGHT_OFF); - if(input == MENU_CHECK) - { - if(backlight) backlight = BACKLIGHT_OFF; - else backlight = BACKLIGHT_OPEN; - } - */ - lcd.backlight (backlight_state & BACKLIGHT_ON); + /* + if(input == MENU_READ) return (backlight != BACKLIGHT_OFF); + if(input == MENU_CHECK) + { + if(backlight) backlight = BACKLIGHT_OFF; + else backlight = BACKLIGHT_OPEN; + } + */ + lcd.backlight (backlight_state & BACKLIGHT_ON); - return (status | MENU_OK); + return (status | MENU_OK); } int Server_screen_func (int input) { - if (input == MENU_READ) - return (server_screen->priority < 256); - if (input == MENU_CHECK) { - if (server_screen->priority < 256) - server_screen->priority = 256; - else - server_screen->priority = 128; - } + if (input == MENU_READ) + return (server_screen->priority < 256); + if (input == MENU_CHECK) { + if (server_screen->priority < 256) + server_screen->priority = 256; + else + server_screen->priority = 128; + } - return (MENU_OK | (server_screen->priority < 256)); + return (MENU_OK | (server_screen->priority < 256)); } int Contrast_func (int input) { - int status; + int status; - status = lcd.contrast (-1); + status = lcd.contrast (-1); - if (input == MENU_READ) - return status; - if (input == MENU_PLUS) - status += 5; // does something. - if (input == MENU_MINUS) - status -= 5; // does something. + if (input == MENU_READ) + return status; + if (input == MENU_PLUS) + status += 5; // does something. + if (input == MENU_MINUS) + status -= 5; // does something. - if (status < 0) - status = 0; - if (status > 255) - status = 255; - lcd.contrast (status); + if (status < 0) + status = 0; + if (status > 255) + status = 255; + lcd.contrast (status); - return (status | MENU_OK); + return (status | MENU_OK); } void server_menu () { - debug ("server_menu()\n"); + debug ("server_menu()\n"); - do_menu (main_menu); + do_menu (main_menu); } int Backlight_Brightness_func (int input) { - int status = backlight_brightness; + int status = backlight_brightness; - if (input == MENU_READ) - return status; - if (input == MENU_PLUS) - status += 5; // does something. - if (input == MENU_MINUS) - status -= 5; // does something. + if (input == MENU_READ) + return status; + if (input == MENU_PLUS) + status += 5; // does something. + if (input == MENU_MINUS) + status -= 5; // does something. - if (status < 0) - status = 0; - if (status > 255) - status = 255; - lcd.backlight (status); + if (status < 0) + status = 0; + if (status > 255) + status = 255; + lcd.backlight (status); - backlight_brightness = status; + backlight_brightness = status; - return (status | MENU_OK); + return (status | MENU_OK); } int Backlight_Off_Brightness_func (int input) { - int status = backlight_off_brightness; + int status = backlight_off_brightness; - if (input == MENU_READ) - return status; - if (input == MENU_PLUS) - status += 5; // does something. - if (input == MENU_MINUS) - status -= 5; // does something. + if (input == MENU_READ) + return status; + if (input == MENU_PLUS) + status += 5; // does something. + if (input == MENU_MINUS) + status -= 5; // does something. - if (status < 0) - status = 0; - if (status > 255) - status = 255; - lcd.backlight (status); + if (status < 0) + status = 0; + if (status > 255) + status = 255; + lcd.backlight (status); - backlight_off_brightness = status; + backlight_off_brightness = status; - return (status | MENU_OK); + return (status | MENU_OK); } int Backlight_Off_func () { - backlight_state = BACKLIGHT_OFF; - backlight = BACKLIGHT_OFF; - lcd.backlight (backlight_off_brightness); - return MENU_OK; + backlight_state = BACKLIGHT_OFF; + backlight = BACKLIGHT_OFF; + lcd.backlight (backlight_off_brightness); + return MENU_OK; } int Backlight_On_func () { - backlight_state = BACKLIGHT_ON; - backlight = BACKLIGHT_ON; - lcd.backlight (backlight_brightness * (backlight_state & BACKLIGHT_ON)); - return MENU_OK; + backlight_state = BACKLIGHT_ON; + backlight = BACKLIGHT_ON; + lcd.backlight (backlight_brightness * (backlight_state & BACKLIGHT_ON)); + return MENU_OK; } int Backlight_Open_func () { - backlight = BACKLIGHT_OPEN; - return MENU_OK; + backlight = BACKLIGHT_OPEN; + return MENU_OK; } diff --git a/server/parse.c b/server/parse.c index 7106400..7d3596b 100644 --- a/server/parse.c +++ b/server/parse.c @@ -23,74 +23,74 @@ int parse_all_client_messages () { - int i, j; - int newtoken, inquote; - client *c; - char *str; + int i, j; + int newtoken, inquote; + client *c; + char *str; // char *tok; - int argc; - char *argv[256]; - char delimiters[] = " \0"; - char leftquote[] = "\0\"'`([{\0"; - char rightquote[] = "\0\"'`)]}\0"; - char errmsg[256]; - int invalid = 0; + int argc; + char *argv[256]; + char delimiters[] = " \0"; + char leftquote[] = "\0\"'`([{\0"; + char rightquote[] = "\0\"'`)]}\0"; + char errmsg[256]; + int invalid = 0; - //debug("parse: Rewinding list...\n"); - LL_Rewind (clients); - do { - // Get the next client... - //debug("parse: Getting client...\n"); - c = LL_Get (clients); - if (c) { - // And parse all its messages... - //debug("parse: Getting messages...\n"); - for (str = client_get_message (c); str; str = client_get_message (c)) { - debug ("parse: ...%s\n", str); - // Now, split up the string... - //len = strlen(str); - argc = 0; - newtoken = 1; - inquote = 0; - for (i = 0; str[i]; i++) { - if (inquote) // Scan for the end of the quote - { - if (str[i] == rightquote[inquote]) { // Found the end of the quote - inquote = 0; - str[i] = 0; - newtoken = 1; - } - } else // Normal operation; split at delimiters - { - for (j = 1; leftquote[j]; j++) { - // Found the beginning of a new quote... - if (str[i] == leftquote[j]) { - inquote = j; - str[i] = 0; - continue; - } - } - for (j = 0; delimiters[j]; j++) { - // Break into a new string... - if (str[i] == delimiters[j]) { - str[i] = 0; - newtoken = 1; - continue; - } - } - } - if (newtoken && str[i]) { - newtoken = 0; - argv[argc] = str + i; - argc++; - } else { - } - } - if (inquote) { - sprintf (errmsg, "huh? Unterminated string: missing %c\n", rightquote[inquote]); - sock_send_string (c->sock, errmsg); - continue; - } + //debug("parse: Rewinding list...\n"); + LL_Rewind (clients); + do { + // Get the next client... + //debug("parse: Getting client...\n"); + c = LL_Get (clients); + if (c) { + // And parse all its messages... + //debug("parse: Getting messages...\n"); + for (str = client_get_message (c); str; str = client_get_message (c)) { + debug ("parse: ...%s\n", str); + // Now, split up the string... + //len = strlen(str); + argc = 0; + newtoken = 1; + inquote = 0; + for (i = 0; str[i]; i++) { + if (inquote) // Scan for the end of the quote + { + if (str[i] == rightquote[inquote]) { // Found the end of the quote + inquote = 0; + str[i] = 0; + newtoken = 1; + } + } else // Normal operation; split at delimiters + { + for (j = 1; leftquote[j]; j++) { + // Found the beginning of a new quote... + if (str[i] == leftquote[j]) { + inquote = j; + str[i] = 0; + continue; + } + } + for (j = 0; delimiters[j]; j++) { + // Break into a new string... + if (str[i] == delimiters[j]) { + str[i] = 0; + newtoken = 1; + continue; + } + } + } + if (newtoken && str[i]) { + newtoken = 0; + argv[argc] = str + i; + argc++; + } else { + } + } + if (inquote) { + sprintf (errmsg, "huh? Unterminated string: missing %c\n", rightquote[inquote]); + sock_send_string (c->sock, errmsg); + continue; + } /* for(tok = strtok(str, delimiters); tok; @@ -100,31 +100,31 @@ parse_all_client_messages () argc++; } */ - argv[argc] = NULL; - if (argc < 1) - continue; + argv[argc] = NULL; + if (argc < 1) + continue; - // Now find and call the appropriate function... + // Now find and call the appropriate function... // debug("parse: Finding function...\n"); - invalid = 1; - for (i = 0; commands[i].keyword; i++) { + invalid = 1; + for (i = 0; commands[i].keyword; i++) { // debug("(checking %s)\n", commands[i].keyword); - if (0 == strcmp (argv[0], commands[i].keyword)) { + if (0 == strcmp (argv[0], commands[i].keyword)) { // debug("(FOUND %s)\n", commands[i].keyword); - invalid = commands[i].function (c, argc, argv); + invalid = commands[i].function (c, argc, argv); // debug("parse: Returned %i...\n", err); - } - } - if (invalid) { - // FIXME: Check for buffer overflows here... - sprintf (errmsg, "huh? Invalid command \"%s\"\n", argv[0]); - sock_send_string (c->sock, errmsg); - } + } + } + if (invalid) { + // FIXME: Check for buffer overflows here... + sprintf (errmsg, "huh? Invalid command \"%s\"\n", argv[0]); + sock_send_string (c->sock, errmsg); + } - free (str); // fixed memory leak? - } // end for(str...) - } // end if (c) - } while (LL_Next (clients) == 0); + free (str); // fixed memory leak? + } // end for(str...) + } // end if (c) + } while (LL_Next (clients) == 0); - return 0; + return 0; } diff --git a/server/render.c b/server/render.c index 3056616..0d632f0 100644 --- a/server/render.c +++ b/server/render.c @@ -42,398 +42,398 @@ static int draw_frame (LL * list, char fscroll, int left, int top, int right, in int draw_screen (screen * s, int timer) { - static screen *old_s = NULL; - int tmp = 0; + static screen *old_s = NULL; + int tmp = 0; - //debug("Render...\n"); - //return 0; + //debug("Render...\n"); + //return 0; - reset = 1; + reset = 1; - //debug("draw_screen: %8x, %i\n", (int)s, timer); + //debug("draw_screen: %8x, %i\n", (int)s, timer); - if (!s) - return -1; + if (!s) + return -1; - if (s == old_s) - reset = 0; - old_s = s; + if (s == old_s) + reset = 0; + old_s = s; - lcd.clear (); + lcd.clear (); - switch (backlight_state) { - case BACKLIGHT_OFF: - lcd.backlight (backlight_off_brightness); - break; - case BACKLIGHT_ON: - lcd.backlight (backlight_brightness); - break; - default: - if (backlight_state & BACKLIGHT_FLASH) { - tmp = (!((timer & 7) == 7)); - if (backlight_state & 1) - lcd.backlight (tmp ? backlight_brightness : backlight_off_brightness); - //lcd.backlight(backlight_brightness * (!((timer&7) == 7))); - else - lcd.backlight (!tmp ? backlight_brightness : backlight_off_brightness); - //lcd.backlight(backlight_brightness * ((timer&7) == 7)); - } else if (backlight_state & BACKLIGHT_BLINK) { - tmp = (!((timer & 14) == 14)); - if (backlight_state & 1) - lcd.backlight (tmp ? backlight_brightness : backlight_off_brightness); - //lcd.backlight(backlight_brightness * (!((timer&14) == 14))); - else - lcd.backlight (!tmp ? backlight_brightness : backlight_off_brightness); - //lcd.backlight(backlight_brightness * ((timer&14) == 14)); - } - break; - } + switch (backlight_state) { + case BACKLIGHT_OFF: + lcd.backlight (backlight_off_brightness); + break; + case BACKLIGHT_ON: + lcd.backlight (backlight_brightness); + break; + default: + if (backlight_state & BACKLIGHT_FLASH) { + tmp = (!((timer & 7) == 7)); + if (backlight_state & 1) + lcd.backlight (tmp ? backlight_brightness : backlight_off_brightness); + //lcd.backlight(backlight_brightness * (!((timer&7) == 7))); + else + lcd.backlight (!tmp ? backlight_brightness : backlight_off_brightness); + //lcd.backlight(backlight_brightness * ((timer&7) == 7)); + } else if (backlight_state & BACKLIGHT_BLINK) { + tmp = (!((timer & 14) == 14)); + if (backlight_state & 1) + lcd.backlight (tmp ? backlight_brightness : backlight_off_brightness); + //lcd.backlight(backlight_brightness * (!((timer&14) == 14))); + else + lcd.backlight (!tmp ? backlight_brightness : backlight_off_brightness); + //lcd.backlight(backlight_brightness * ((timer&14) == 14)); + } + break; + } - lcd.output (output_state); + lcd.output (output_state); - draw_frame (s->widgets, 'v', 0, 0, lcd.wid, lcd.hgt, s->wid, s->hgt, s->duration / s->hgt, timer); + draw_frame (s->widgets, 'v', 0, 0, lcd.wid, lcd.hgt, s->wid, s->hgt, s->duration / s->hgt, timer); - //debug("draw_screen done\n"); + //debug("draw_screen done\n"); - if (heartbeat) { - if ((s->heartbeat == 1) || heartbeat == HEART_ON) { - // Set this to pulsate like a real heart beat... - // (binary is fun... :) - lcd.icon (!((timer + 4) & 5), 0); - lcd.chr (lcd.wid, 1, 0); - } - if ((s->heartbeat == 2) && heartbeat != HEART_OFF) { - char *phases = "-\\|/"; - lcd.chr (lcd.wid, 1, phases[timer & 3]); - } - } + if (heartbeat) { + if ((s->heartbeat == 1) || heartbeat == HEART_ON) { + // Set this to pulsate like a real heart beat... + // (binary is fun... :) + lcd.icon (!((timer + 4) & 5), 0); + lcd.chr (lcd.wid, 1, 0); + } + if ((s->heartbeat == 2) && heartbeat != HEART_OFF) { + char *phases = "-\\|/"; + lcd.chr (lcd.wid, 1, phases[timer & 3]); + } + } - lcd.flush (); + lcd.flush (); - //debug("draw_screen: %8x, %i\n", s, timer); + //debug("draw_screen: %8x, %i\n", s, timer); - return 0; + return 0; } static int draw_frame (LL * list, char fscroll, int left, int top, int right, int bottom, int fwid, int fhgt, int fspeed, int timer) { - char str[BUFSIZE]; // scratch buffer - widget *w; + char str[BUFSIZE]; // scratch buffer + widget *w; - int wid, hgt; // Width and height of visible frame area - int x, y; - int fx, fy; // Scrolling offset for the frame... - int length, speed; - //int lines; + int wid, hgt; // Width and height of visible frame area + int x, y; + int fx, fy; // Scrolling offset for the frame... + int length, speed; + //int lines; - int reset = 1; + int reset = 1; - wid = right - left; // This is the size of the visible frame area - hgt = bottom - top; + wid = right - left; // This is the size of the visible frame area + hgt = bottom - top; - fx = 0; - fy = 0; - if (fscroll == 'v') { + fx = 0; + fy = 0; + if (fscroll == 'v') { - if (fspeed > 0) - fy = (timer - fspeed) / fspeed; - if (fspeed < 0) - fy = (-fspeed) * timer; - if (fy < 0) - fy = 0; + if (fspeed > 0) + fy = (timer - fspeed) / fspeed; + if (fspeed < 0) + fy = (-fspeed) * timer; + if (fy < 0) + fy = 0; - // Make sure the whole frame gets displayed, at least... - if (!screenlist_action) - screenlist_action = RENDER_HOLD; - if ((fy) > fhgt - 1) { - // Release hold after it has been displayed - if (!screenlist_action || screenlist_action == RENDER_HOLD) - screenlist_action = 0; - } + // Make sure the whole frame gets displayed, at least... + if (!screenlist_action) + screenlist_action = RENDER_HOLD; + if ((fy) > fhgt - 1) { + // Release hold after it has been displayed + if (!screenlist_action || screenlist_action == RENDER_HOLD) + screenlist_action = 0; + } - fy %= fhgt; - if (fy > fhgt - hgt) - fy = fhgt - hgt; - } else if (fscroll == 'h') { // TODO: Frames don't scroll horizontally yet! + fy %= fhgt; + if (fy > fhgt - hgt) + fy = fhgt - hgt; + } else if (fscroll == 'h') { // TODO: Frames don't scroll horizontally yet! - } - //debug("draw_screen: %8x, %i\n", s, timer); + } + //debug("draw_screen: %8x, %i\n", s, timer); - if (!list) - return -1; + if (!list) + return -1; - //debug("draw_frame: %8x, %i\n", frame, timer); + //debug("draw_frame: %8x, %i\n", frame, timer); - LL_Rewind (list); - do { - w = (widget *) LL_Get (list); - if (!w) - return -1; + LL_Rewind (list); + do { + w = (widget *) LL_Get (list); + if (!w) + return -1; - // TODO: Make this cleaner and more flexible! - switch (w->type) { - case WID_STRING: - if ((w->x > 0) && (w->y > 0) && (w->text)) { - if ((w->y <= hgt + fy) && (w->y > fy)) { - strncpy (str, w->text, wid - w->x + 1); - str[wid - w->x + 1] = 0; - lcd.string (w->x + left, w->y + top - fy, str); - } - } - break; - case WID_HBAR: - if (reset) { - lcd.init_hbar (); - reset = 0; - } - if ((w->x > 0) && (w->y > 0)) { - if ((w->y <= hgt + fy) && (w->y > fy)) { - if (w->length > 0) { - if ((w->length / lcd.cellwid) < wid - w->x + 1) - lcd.hbar (w->x + left, w->y + top - fy, w->length); - else - lcd.hbar (w->x + left, w->y + top - fy, wid * lcd.cellwid); - } else if (w->length < 0) { - // TODO: Rearrange stuff to get left-extending - // hbars to draw correctly... - // .. er, this'll require driver modifications, - // so I'll leave it out for now. - } - } - } - break; - case WID_VBAR: // FIXME: Vbars don't work in frames! - if (reset) { - lcd.init_vbar (); - reset = 0; - } - if ((w->x > 0) && (w->y > 0)) { - if (w->length > 0) { - lcd.vbar (w->x, w->length); - } else if (w->length < 0) { - // TODO: Rearrange stuff to get down-extending - // vbars to draw correctly... - // .. er, this'll require driver modifications, - // so I'll leave it out for now. - } - } - break; - case WID_ICON: // FIXME: Not implemented - break; - case WID_TITLE: // FIXME: Doesn't work quite right in frames... - if (!w->text) - break; - if (wid < 8) - break; - - memset (str, 255, wid); - str[2] = ' '; - length = strlen (w->text); - if (length <= wid - 6) { - memcpy (str + 3, w->text, length); - str[length + 3] = ' '; - } else // Scroll the title, if it doesn't fit... - { - speed = 1; - x = timer / speed; - y = x / length; - - // Make sure the whole title gets displayed, at least... - if (!screenlist_action) - screenlist_action = RENDER_HOLD; - if (x > length - 6) { - // Release hold after it has been displayed - if (!screenlist_action || screenlist_action == RENDER_HOLD) - screenlist_action = 0; - } - x %= (length); - x -= 3; - if (x < 0) - x = 0; - if (x > length - (wid - 6)) - x = length - (wid - 6); - - if (y & 1) // Scrolling backwards... - { - x = (length - (wid - 6)) - x; - } - strncpy (str + 3, w->text + x, (wid - 6)); - str[wid - 3] = ' '; - } - str[wid] = 0; - - lcd.string (1 + left, 1 + top, str); - break; - case WID_SCROLLER: // FIXME: doesn't work in frames... - { - int offset; - int screen_width; - if (!w->text) - break; - if (w->right < w->left) - break; - //printf("rendering: %s %d\n",w->text,timer); - screen_width = w->right - w->left + 1; - switch (w->length) { // actually, direction... - // FIXED: Horz scrollers don't show the - // last letter in the string... (1-off error?) - case 'h': - length = strlen (w->text) + 1; - if (length <= screen_width) { - /* it fits within the box, just render it */ - lcd.string (w->left, w->top, w->text); - } else { - int effLength = length - screen_width; - int necessaryTimeUnits = 0; - if (!screenlist_action) - screenlist_action = RENDER_HOLD; - if (w->speed > 0) { - necessaryTimeUnits = effLength * w->speed; - if (((timer / (effLength * w->speed)) % 2) == 0) { - //wiggle one way - offset = (timer % (effLength * w->speed)) - / w->speed; - } else { - //wiggle the other - offset = (((timer % (effLength * w->speed)) - - (effLength * w->speed) + 1) - / w->speed) * -1; - } - } else if (w->speed < 0) { - necessaryTimeUnits = effLength / (w->speed * -1); - if (((timer / (effLength / (w->speed * -1))) % 2) == 0) { - offset = (timer % (effLength / (w->speed * -1))) - * w->speed * -1; - } else { - offset = (((timer % (effLength / (w->speed * -1))) - * w->speed * -1) - effLength + 1) * -1; - } - } else { - offset = 0; - if (screenlist_action == RENDER_HOLD) - screenlist_action = 0; - } - if (timer > necessaryTimeUnits) { - if (screenlist_action == RENDER_HOLD) - screenlist_action = 0; - } - if (offset <= length) { - strncpy (str, &((w->text)[offset]), screen_width); - str[screen_width] = '\0'; - //printf("%s : %d\n",str,length-offset); - } else { - str[0] = '\0'; - } - lcd.string (w->left, w->top, str); - } - break; - // FIXME: Vert scrollers don't always seem to scroll - // back up after hitting the bottom. They jump back to - // the top instead... (nevermind?) - case 'v': - { - int i = 0; - length = strlen (w->text); - if (length <= screen_width) { - /* no scrolling required... */ - lcd.string (w->left, w->top, w->text); - } else { - int lines_required = (length / screen_width) - + (length % screen_width ? 1 : 0); - int available_lines = (w->bottom - w->top + 1); - if (lines_required <= available_lines) { - // easy... - for (i = 0; i < lines_required; i++) { - strncpy (str, &((w->text)[i * screen_width]), screen_width); - str[screen_width] = '\0'; - lcd.string (w->left, w->top + i, str); + // TODO: Make this cleaner and more flexible! + switch (w->type) { + case WID_STRING: + if ((w->x > 0) && (w->y > 0) && (w->text)) { + if ((w->y <= hgt + fy) && (w->y > fy)) { + strncpy (str, w->text, wid - w->x + 1); + str[wid - w->x + 1] = 0; + lcd.string (w->x + left, w->y + top - fy, str); + } } - } else { - int necessaryTimeUnits = 0; - int effLines = lines_required - available_lines + 1; - int begin = 0; - if (!screenlist_action) - screenlist_action = RENDER_HOLD; - //printf("length: %d sw: %d lines req: %d avail lines: %d effLines: %d \n",length,screen_width,lines_required,available_lines,effLines); - if (w->speed > 0) { - necessaryTimeUnits = effLines * w->speed; - if (((timer / (effLines * w->speed)) % 2) == 0) { - //printf("up "); - begin = (timer % (effLines * w->speed)) - / w->speed; - } else { - //printf("down "); - begin = (((timer % (effLines * w->speed)) - - (effLines * w->speed) + 1) / w->speed) - * -1; - } - } else if (w->speed < 0) { - necessaryTimeUnits = effLines / (w->speed * -1); - if (((timer / (effLines / (w->speed * -1))) % 2) == 0) { - begin = (timer % (effLines / (w->speed * -1))) - * w->speed * -1; - } else { - begin = (((timer % (effLines / (w->speed * -1))) - * w->speed * -1) - effLines + 1) - * -1; - } - } else { - begin = 0; + break; + case WID_HBAR: + if (reset) { + lcd.init_hbar (); + reset = 0; } - //printf("rendering begin: %d timer: %d effLines: %d\n",begin,timer,effLines); - for (i = begin; i < begin + available_lines; i++) { - strncpy (str, &((w->text)[i * (screen_width)]), screen_width); - str[screen_width] = '\0'; - //printf("rendering: '%s' of %s\n", - //str,w->text); - lcd.string (w->left, w->top + (i - begin), str); + if ((w->x > 0) && (w->y > 0)) { + if ((w->y <= hgt + fy) && (w->y > fy)) { + if (w->length > 0) { + if ((w->length / lcd.cellwid) < wid - w->x + 1) + lcd.hbar (w->x + left, w->y + top - fy, w->length); + else + lcd.hbar (w->x + left, w->y + top - fy, wid * lcd.cellwid); + } else if (w->length < 0) { + // TODO: Rearrange stuff to get left-extending + // hbars to draw correctly... + // .. er, this'll require driver modifications, + // so I'll leave it out for now. + } + } } - if (timer > necessaryTimeUnits) { - if (screenlist_action == RENDER_HOLD) - screenlist_action = 0; + break; + case WID_VBAR: // FIXME: Vbars don't work in frames! + if (reset) { + lcd.init_vbar (); + reset = 0; } - } - } - break; - } - } - break; - } - case WID_FRAME: - { - // FIXME: doesn't handle nested frames quite right! - // doesn't handle scrolling in nested frames at all... - int new_left, new_top, new_right, new_bottom; - new_left = left + w->left - 1; - new_top = top + w->top - 1; - new_right = left + w->right; - new_bottom = top + w->bottom; - if (new_right > right) - new_right = right; - if (new_bottom > bottom) - new_bottom = bottom; - if (new_left >= right || new_top >= bottom) { // Do nothing if it's invisible... - } else { - draw_frame (w->kids, w->length, new_left, new_top, new_right, new_bottom, w->wid, w->hgt, w->speed, timer); - } - } - break; - case WID_NUM: // FIXME: doesn't work in frames... - if ((w->x > 0) && (w->y >= 0) && (w->y <= 9)) { - if (reset) { - lcd.init_num (); - reset = 0; - } - lcd.num (w->x + left, w->y); - } - break; - case WID_NONE: - default: - break; - } - } while (LL_Next (list) == 0); + if ((w->x > 0) && (w->y > 0)) { + if (w->length > 0) { + lcd.vbar (w->x, w->length); + } else if (w->length < 0) { + // TODO: Rearrange stuff to get down-extending + // vbars to draw correctly... + // .. er, this'll require driver modifications, + // so I'll leave it out for now. + } + } + break; + case WID_ICON: // FIXME: Not implemented + break; + case WID_TITLE: // FIXME: Doesn't work quite right in frames... + if (!w->text) + break; + if (wid < 8) + break; - return 0; + memset (str, 255, wid); + str[2] = ' '; + length = strlen (w->text); + if (length <= wid - 6) { + memcpy (str + 3, w->text, length); + str[length + 3] = ' '; + } else // Scroll the title, if it doesn't fit... + { + speed = 1; + x = timer / speed; + y = x / length; + + // Make sure the whole title gets displayed, at least... + if (!screenlist_action) + screenlist_action = RENDER_HOLD; + if (x > length - 6) { + // Release hold after it has been displayed + if (!screenlist_action || screenlist_action == RENDER_HOLD) + screenlist_action = 0; + } + x %= (length); + x -= 3; + if (x < 0) + x = 0; + if (x > length - (wid - 6)) + x = length - (wid - 6); + + if (y & 1) // Scrolling backwards... + { + x = (length - (wid - 6)) - x; + } + strncpy (str + 3, w->text + x, (wid - 6)); + str[wid - 3] = ' '; + } + str[wid] = 0; + + lcd.string (1 + left, 1 + top, str); + break; + case WID_SCROLLER: // FIXME: doesn't work in frames... + { + int offset; + int screen_width; + if (!w->text) + break; + if (w->right < w->left) + break; + //printf("rendering: %s %d\n",w->text,timer); + screen_width = w->right - w->left + 1; + switch (w->length) { // actually, direction... + // FIXED: Horz scrollers don't show the + // last letter in the string... (1-off error?) + case 'h': + length = strlen (w->text) + 1; + if (length <= screen_width) { + /* it fits within the box, just render it */ + lcd.string (w->left, w->top, w->text); + } else { + int effLength = length - screen_width; + int necessaryTimeUnits = 0; + if (!screenlist_action) + screenlist_action = RENDER_HOLD; + if (w->speed > 0) { + necessaryTimeUnits = effLength * w->speed; + if (((timer / (effLength * w->speed)) % 2) == 0) { + //wiggle one way + offset = (timer % (effLength * w->speed)) + / w->speed; + } else { + //wiggle the other + offset = (((timer % (effLength * w->speed)) + - (effLength * w->speed) + 1) + / w->speed) * -1; + } + } else if (w->speed < 0) { + necessaryTimeUnits = effLength / (w->speed * -1); + if (((timer / (effLength / (w->speed * -1))) % 2) == 0) { + offset = (timer % (effLength / (w->speed * -1))) + * w->speed * -1; + } else { + offset = (((timer % (effLength / (w->speed * -1))) + * w->speed * -1) - effLength + 1) * -1; + } + } else { + offset = 0; + if (screenlist_action == RENDER_HOLD) + screenlist_action = 0; + } + if (timer > necessaryTimeUnits) { + if (screenlist_action == RENDER_HOLD) + screenlist_action = 0; + } + if (offset <= length) { + strncpy (str, &((w->text)[offset]), screen_width); + str[screen_width] = '\0'; + //printf("%s : %d\n",str,length-offset); + } else { + str[0] = '\0'; + } + lcd.string (w->left, w->top, str); + } + break; + // FIXME: Vert scrollers don't always seem to scroll + // back up after hitting the bottom. They jump back to + // the top instead... (nevermind?) + case 'v': + { + int i = 0; + length = strlen (w->text); + if (length <= screen_width) { + /* no scrolling required... */ + lcd.string (w->left, w->top, w->text); + } else { + int lines_required = (length / screen_width) + + (length % screen_width ? 1 : 0); + int available_lines = (w->bottom - w->top + 1); + if (lines_required <= available_lines) { + // easy... + for (i = 0; i < lines_required; i++) { + strncpy (str, &((w->text)[i * screen_width]), screen_width); + str[screen_width] = '\0'; + lcd.string (w->left, w->top + i, str); + } + } else { + int necessaryTimeUnits = 0; + int effLines = lines_required - available_lines + 1; + int begin = 0; + if (!screenlist_action) + screenlist_action = RENDER_HOLD; + //printf("length: %d sw: %d lines req: %d avail lines: %d effLines: %d \n",length,screen_width,lines_required,available_lines,effLines); + if (w->speed > 0) { + necessaryTimeUnits = effLines * w->speed; + if (((timer / (effLines * w->speed)) % 2) == 0) { + //printf("up "); + begin = (timer % (effLines * w->speed)) + / w->speed; + } else { + //printf("down "); + begin = (((timer % (effLines * w->speed)) + - (effLines * w->speed) + 1) / w->speed) + * -1; + } + } else if (w->speed < 0) { + necessaryTimeUnits = effLines / (w->speed * -1); + if (((timer / (effLines / (w->speed * -1))) % 2) == 0) { + begin = (timer % (effLines / (w->speed * -1))) + * w->speed * -1; + } else { + begin = (((timer % (effLines / (w->speed * -1))) + * w->speed * -1) - effLines + 1) + * -1; + } + } else { + begin = 0; + } + //printf("rendering begin: %d timer: %d effLines: %d\n",begin,timer,effLines); + for (i = begin; i < begin + available_lines; i++) { + strncpy (str, &((w->text)[i * (screen_width)]), screen_width); + str[screen_width] = '\0'; + //printf("rendering: '%s' of %s\n", + //str,w->text); + lcd.string (w->left, w->top + (i - begin), str); + } + if (timer > necessaryTimeUnits) { + if (screenlist_action == RENDER_HOLD) + screenlist_action = 0; + } + } + } + break; + } + } + break; + } + case WID_FRAME: + { + // FIXME: doesn't handle nested frames quite right! + // doesn't handle scrolling in nested frames at all... + int new_left, new_top, new_right, new_bottom; + new_left = left + w->left - 1; + new_top = top + w->top - 1; + new_right = left + w->right; + new_bottom = top + w->bottom; + if (new_right > right) + new_right = right; + if (new_bottom > bottom) + new_bottom = bottom; + if (new_left >= right || new_top >= bottom) { // Do nothing if it's invisible... + } else { + draw_frame (w->kids, w->length, new_left, new_top, new_right, new_bottom, w->wid, w->hgt, w->speed, timer); + } + } + break; + case WID_NUM: // FIXME: doesn't work in frames... + if ((w->x > 0) && (w->y >= 0) && (w->y <= 9)) { + if (reset) { + lcd.init_num (); + reset = 0; + } + lcd.num (w->x + left, w->y); + } + break; + case WID_NONE: + default: + break; + } + } while (LL_Next (list) == 0); + + return 0; } diff --git a/server/screen.c b/server/screen.c index 9e9a0e6..c0e9dff 100644 --- a/server/screen.c +++ b/server/screen.c @@ -15,153 +15,153 @@ screen * screen_create () { - screen *s; + screen *s; - s = malloc (sizeof (screen)); - if (!s) { - fprintf (stderr, "screen_create: Error allocating new screen\n"); - return NULL; - } + s = malloc (sizeof (screen)); + if (!s) { + fprintf (stderr, "screen_create: Error allocating new screen\n"); + return NULL; + } - s->id = NULL; - s->name = NULL; - s->priority = 128; - // TODO: Make the screen duration configurable! - s->duration = 32; - s->heartbeat = 1; - s->wid = lcd.wid; - s->hgt = lcd.hgt; - s->parent = NULL; - s->widgets = NULL; + s->id = NULL; + s->name = NULL; + s->priority = 128; + // TODO: Make the screen duration configurable! + s->duration = 32; + s->heartbeat = 1; + s->wid = lcd.wid; + s->hgt = lcd.hgt; + s->parent = NULL; + s->widgets = NULL; - s->widgets = LL_new (); - if (!s->widgets) { - fprintf (stderr, "screen_create: Error allocating widget list\n"); - return NULL; - } + s->widgets = LL_new (); + if (!s->widgets) { + fprintf (stderr, "screen_create: Error allocating widget list\n"); + return NULL; + } - return s; + return s; } int screen_destroy (screen * s) { - widget *w; + widget *w; - if (!s) - return -1; + if (!s) + return -1; - LL_Rewind (s->widgets); - do { - // Free a widget... - w = LL_Get (s->widgets); - widget_destroy (w); - } while (LL_Next (s->widgets) == 0); - LL_Destroy (s->widgets); + LL_Rewind (s->widgets); + do { + // Free a widget... + w = LL_Get (s->widgets); + widget_destroy (w); + } while (LL_Next (s->widgets) == 0); + LL_Destroy (s->widgets); - if (s->id) - free (s->id); - if (s->name) - free (s->name); + if (s->id) + free (s->id); + if (s->name) + free (s->name); - free (s); + free (s); - return 0; + return 0; } screen * screen_find (client * c, char *id) { - screen *s; + screen *s; - if (!c) - return NULL; - if (!id) - return NULL; + if (!c) + return NULL; + if (!id) + return NULL; - debug ("client_find_screen(%s)\n", id); + debug ("client_find_screen(%s)\n", id); - LL_Rewind (c->data->screenlist); - do { - s = LL_Get (c->data->screenlist); - if ((s) && (0 == strcmp (s->id, id))) { - debug ("client_find_screen: Found %s\n", id); - return s; - } - } while (LL_Next (c->data->screenlist) == 0); + LL_Rewind (c->data->screenlist); + do { + s = LL_Get (c->data->screenlist); + if ((s) && (0 == strcmp (s->id, id))) { + debug ("client_find_screen: Found %s\n", id); + return s; + } + } while (LL_Next (c->data->screenlist) == 0); - return NULL; + return NULL; } int screen_add (client * c, char *id) { - screen *s; + screen *s; - if (!c) - return -1; - if (!id) - return -1; + if (!c) + return -1; + if (!id) + return -1; - // Make sure this screen doesn't already exist... - s = screen_find (c, id); - if (s) { - return 1; - } + // Make sure this screen doesn't already exist... + s = screen_find (c, id); + if (s) { + return 1; + } - s = screen_create (); - if (!s) { - fprintf (stderr, "screen_add: Error creating screen\n"); - return -1; - } + s = screen_create (); + if (!s) { + fprintf (stderr, "screen_add: Error creating screen\n"); + return -1; + } - s->parent = c; + s->parent = c; - s->id = strdup (id); - if (!s->id) { - fprintf (stderr, "screen_add: Error allocating name\n"); - return -1; - } - // TODO: Check for errors here? - LL_Push (c->data->screenlist, (void *) s); + s->id = strdup (id); + if (!s->id) { + fprintf (stderr, "screen_add: Error allocating name\n"); + return -1; + } + // TODO: Check for errors here? + LL_Push (c->data->screenlist, (void *) s); - // Now, add it to the screenlist... - if (screenlist_add (s) < 0) { - fprintf (stderr, "screen_add: Error queueing new screen\n"); - return -1; - } + // Now, add it to the screenlist... + if (screenlist_add (s) < 0) { + fprintf (stderr, "screen_add: Error queueing new screen\n"); + return -1; + } - return 0; + return 0; } int screen_remove (client * c, char *id) { - screen *s; + screen *s; - if (!c) - return -1; - if (!id) - return -1; + if (!c) + return -1; + if (!id) + return -1; - // Make sure this screen *does* exist... - s = screen_find (c, id); - if (!s) { - fprintf (stderr, "screen_remove: Error finding screen %s\n", id); - return 1; - } - // TODO: Check for errors here? - LL_Remove (c->data->screenlist, (void *) s); + // Make sure this screen *does* exist... + s = screen_find (c, id); + if (!s) { + fprintf (stderr, "screen_remove: Error finding screen %s\n", id); + return 1; + } + // TODO: Check for errors here? + LL_Remove (c->data->screenlist, (void *) s); - // ... and here? - screen_destroy (s); + // ... and here? + screen_destroy (s); - // Now, remove it from the screenlist... - if (screenlist_remove_all (s) < 0) { - // Not a serious error.. - fprintf (stderr, "screen_remove: Error dequeueing screen\n"); - return 0; - } + // Now, remove it from the screenlist... + if (screenlist_remove_all (s) < 0) { + // Not a serious error.. + fprintf (stderr, "screen_remove: Error dequeueing screen\n"); + return 0; + } - return 0; + return 0; } diff --git a/server/screen.h b/server/screen.h index b0dda2f..4056d07 100644 --- a/server/screen.h +++ b/server/screen.h @@ -5,14 +5,14 @@ #include "clients.h" typedef struct screen { - char *id; - char *name; - int wid, hgt; - int priority; - int duration; - int heartbeat; - LL *widgets; - client *parent; + char *id; + char *name; + int wid, hgt; + int priority; + int duration; + int heartbeat; + LL *widgets; + client *parent; } screen; screen *screen_create (); diff --git a/server/screenlist.c b/server/screenlist.c index 546fb66..1894fa5 100644 --- a/server/screenlist.c +++ b/server/screenlist.c @@ -25,254 +25,254 @@ int compare_addresses (void *one, void *two); int screenlist_init () { - debug ("screenlist_init()\n"); + debug ("screenlist_init()\n"); - screenlist = LL_new (); - if (!screenlist) { - fprintf (stderr, "screenlist_init: Error allocating list\n"); - return -1; - } + screenlist = LL_new (); + if (!screenlist) { + fprintf (stderr, "screenlist_init: Error allocating list\n"); + return -1; + } - screenlist_action = 0; - timer = 0; + screenlist_action = 0; + timer = 0; - return 0; + return 0; } int screenlist_shutdown () { - debug ("screenlist_shutdown()\n"); + debug ("screenlist_shutdown()\n"); - LL_Destroy (screenlist); + LL_Destroy (screenlist); - return 0; + return 0; } int screenlist_remove (screen * s) { - debug ("screenlist_remove()\n"); + debug ("screenlist_remove()\n"); - if (!LL_Remove (screenlist, s)) - return -1; - else - return 0; + if (!LL_Remove (screenlist, s)) + return -1; + else + return 0; } int screenlist_remove_all (screen * s) { - int i = 0; + int i = 0; - debug ("screenlist_remove_all()\n"); + debug ("screenlist_remove_all()\n"); - while (LL_Remove (screenlist, s)) - i++; + while (LL_Remove (screenlist, s)) + i++; - debug ("screenlist_remove_all()... got %i\n", i); + debug ("screenlist_remove_all()... got %i\n", i); - return i; + return i; } LL * screenlist_getlist () { - debug ("screenlist_getlist()\n"); + debug ("screenlist_getlist()\n"); - return screenlist; + return screenlist; } screen * screenlist_current () { - char str[256]; - screen *s; - static screen *old_s = NULL; - client *c; + char str[256]; + screen *s; + static screen *old_s = NULL; + client *c; - //debug("screenlist_current:\n"); - //LL_dprint(screenlist); + //debug("screenlist_current:\n"); + //LL_dprint(screenlist); - s = (screen *) LL_GetFirst (screenlist); + s = (screen *) LL_GetFirst (screenlist); - // FIXME: Make sure the screen/client exists! - if (s != old_s) { - debug ("screenlist_current: new screen\n"); - timer = 0; + // FIXME: Make sure the screen/client exists! + if (s != old_s) { + debug ("screenlist_current: new screen\n"); + timer = 0; - // Tell the client we're done with the current screen - if (old_s) { - //debug("screenlist_current: ignoring old screen\n"); - LL_Rewind (screenlist); - if (old_s != LL_Find (screenlist, compare_addresses, old_s)) { - debug ("screenlist: Didn't find screen 0x%8x!\n", (int) old_s); - } else { - //debug("screenlist_current: ... sending ignore\n"); - c = old_s->parent; - if (c) // Tell the client we're not listening any more... - { - sprintf (str, "ignore %s\n", old_s->id); - sock_send_string (c->sock, str); - } else // The server has the display, so do nothing - { - } - //debug("screenlist_current: ... sent ignore\n"); - } - } - if (s) { - //debug("screenlist_current: listening to new screen\n"); - c = s->parent; - if (c) // Tell the client we're paying attention... - { - sprintf (str, "listen %s\n", s->id); - sock_send_string (c->sock, str); - } else // The server has the display, so do nothing - { - } - } - } + // Tell the client we're done with the current screen + if (old_s) { + //debug("screenlist_current: ignoring old screen\n"); + LL_Rewind (screenlist); + if (old_s != LL_Find (screenlist, compare_addresses, old_s)) { + debug ("screenlist: Didn't find screen 0x%8x!\n", (int) old_s); + } else { + //debug("screenlist_current: ... sending ignore\n"); + c = old_s->parent; + if (c) // Tell the client we're not listening any more... + { + sprintf (str, "ignore %s\n", old_s->id); + sock_send_string (c->sock, str); + } else // The server has the display, so do nothing + { + } + //debug("screenlist_current: ... sent ignore\n"); + } + } + if (s) { + //debug("screenlist_current: listening to new screen\n"); + c = s->parent; + if (c) // Tell the client we're paying attention... + { + sprintf (str, "listen %s\n", s->id); + sock_send_string (c->sock, str); + } else // The server has the display, so do nothing + { + } + } + } - old_s = s; + old_s = s; - //debug("screenlist_current: return %8x\n", s); + //debug("screenlist_current: return %8x\n", s); - return s; + return s; } int screenlist_add (screen * s) { - // TODO: Different queueing modes... - return screenlist_add_end (s); + // TODO: Different queueing modes... + return screenlist_add_end (s); } screen * screenlist_next () { - screen *s; + screen *s; - //debug("Screenlist_next()\n"); + //debug("Screenlist_next()\n"); - s = screenlist_current (); + s = screenlist_current (); - // If we're on hold, don't advance! - if (screenlist_action == SCR_HOLD) - return s; - if (screenlist_action == RENDER_HOLD) - return s; + // If we're on hold, don't advance! + if (screenlist_action == SCR_HOLD) + return s; + if (screenlist_action == RENDER_HOLD) + return s; - // Otherwise, reset it to regular operation - screenlist_action = 0; + // Otherwise, reset it to regular operation + screenlist_action = 0; - //debug("Screenlist_next: calling handler...\n"); + //debug("Screenlist_next: calling handler...\n"); - // Call the selected queuing function... - // TODO: Different queueing modes... - s = screenlist_next_priority (); - //s = screenlist_next_roll(); + // Call the selected queuing function... + // TODO: Different queueing modes... + s = screenlist_next_priority (); + //s = screenlist_next_roll(); - //debug("Screenlist_next() done\n"); + //debug("Screenlist_next() done\n"); - return s; + return s; } screen * screenlist_prev () { - screen *s; + screen *s; - s = screenlist_current (); + s = screenlist_current (); - // If we're on hold, don't advance! - if (screenlist_action == SCR_HOLD) - return s; - if (screenlist_action == RENDER_HOLD) - return s; + // If we're on hold, don't advance! + if (screenlist_action == SCR_HOLD) + return s; + if (screenlist_action == RENDER_HOLD) + return s; - // Otherwise, reset it no regular operation - screenlist_action = 0; + // Otherwise, reset it no regular operation + screenlist_action = 0; - // Call the selected queuing function... - // TODO: Different queueing modes... - s = screenlist_prev_roll (); + // Call the selected queuing function... + // TODO: Different queueing modes... + s = screenlist_prev_roll (); - return s; + return s; } // Adds new screens to the end of the screenlist... int screenlist_add_end (screen * screen) { - debug ("screenlist_add_end()\n"); + debug ("screenlist_add_end()\n"); - return LL_Push (screenlist, (void *) screen); + return LL_Push (screenlist, (void *) screen); } // Simple round-robin approach to screen cycling... screen * screenlist_next_roll () { - //debug("screenlist_next_roll()\n"); + //debug("screenlist_next_roll()\n"); - if (LL_UnRoll (screenlist) != 0) - return NULL; + if (LL_UnRoll (screenlist) != 0) + return NULL; - return screenlist_current (); + return screenlist_current (); } // Strict priority queue approach... screen * screenlist_next_priority () { - //screen *s, *t; - //debug("screenlist_next_priority\n"); + //screen *s, *t; + //debug("screenlist_next_priority\n"); - if (LL_UnRoll (screenlist) != 0) - return NULL; + if (LL_UnRoll (screenlist) != 0) + return NULL; - LL_Sort (screenlist, compare_priority); + LL_Sort (screenlist, compare_priority); - return screenlist_current (); + return screenlist_current (); } // Simple round-robin approach to screen cycling... screen * screenlist_prev_roll () { - //debug("screenlist_prev_roll()\n"); + //debug("screenlist_prev_roll()\n"); - if (LL_Roll (screenlist) != 0) - return NULL; + if (LL_Roll (screenlist) != 0) + return NULL; - return screenlist_current (); + return screenlist_current (); } int compare_priority (void *one, void *two) { - screen *a, *b; + screen *a, *b; - //debug("compare_priority: %8x %8x\n", one, two); + //debug("compare_priority: %8x %8x\n", one, two); - if (!one) - return 0; - if (!two) - return 0; + if (!one) + return 0; + if (!two) + return 0; - a = (screen *) one; - b = (screen *) two; + a = (screen *) one; + b = (screen *) two; - //debug("compare_priority: done?\n"); + //debug("compare_priority: done?\n"); - return (a->priority - b->priority); + return (a->priority - b->priority); } int compare_addresses (void *one, void *two) { - //printf("compare_addresses: 0x%x == 0x%x ???\n", one, two); - //if(one == two) printf("Yes!\n"); - //else printf("No!\n"); - return (one != two); + //printf("compare_addresses: 0x%x == 0x%x ???\n", one, two); + //if(one == two) printf("Yes!\n"); + //else printf("No!\n"); + return (one != two); } diff --git a/server/serverscreens.c b/server/serverscreens.c index 527e04a..636ddce 100644 --- a/server/serverscreens.c +++ b/server/serverscreens.c @@ -30,168 +30,168 @@ char three[256] = ""; int server_screen_init () { - widget *w; + widget *w; - debug ("server_screen_init\n"); + debug ("server_screen_init\n"); - server_screen = screen_create (); + server_screen = screen_create (); - if (!server_screen) { - fprintf (stderr, "server_screen_init: Error allocating screen\n"); - return -1; - } + if (!server_screen) { + fprintf (stderr, "server_screen_init: Error allocating screen\n"); + return -1; + } - server_screen->id = id; - server_screen->name = name; - server_screen->duration = 8; // 1 second, instead of 4... + server_screen->id = id; + server_screen->name = name; + server_screen->duration = 8; // 1 second, instead of 4... - // TODO: Error-checking? - widget_add (server_screen, "title", "title", NULL, 1); - widget_add (server_screen, "one", "string", NULL, 1); - widget_add (server_screen, "two", "string", NULL, 1); - widget_add (server_screen, "three", "string", NULL, 1); + // TODO: Error-checking? + widget_add (server_screen, "title", "title", NULL, 1); + widget_add (server_screen, "one", "string", NULL, 1); + widget_add (server_screen, "two", "string", NULL, 1); + widget_add (server_screen, "three", "string", NULL, 1); - // Now, initialize all the widgets... - w = widget_find (server_screen, "title"); - if (w) { - w->text = title; - } else { - fprintf (stderr, "server_screen_init: Can't find title\n"); - } + // Now, initialize all the widgets... + w = widget_find (server_screen, "title"); + if (w) { + w->text = title; + } else { + fprintf (stderr, "server_screen_init: Can't find title\n"); + } - w = widget_find (server_screen, "one"); - if (w) { - w->x = 1; - w->y = 2; - w->text = one; - } else { - fprintf (stderr, "server_screen_init: Can't find widget one\n"); - } + w = widget_find (server_screen, "one"); + if (w) { + w->x = 1; + w->y = 2; + w->text = one; + } else { + fprintf (stderr, "server_screen_init: Can't find widget one\n"); + } - w = widget_find (server_screen, "two"); - if (w) { - w->x = 1; - w->y = 3; - w->text = two; - } else { - fprintf (stderr, "server_screen_init: Can't find widget two\n"); - } + w = widget_find (server_screen, "two"); + if (w) { + w->x = 1; + w->y = 3; + w->text = two; + } else { + fprintf (stderr, "server_screen_init: Can't find widget two\n"); + } - w = widget_find (server_screen, "three"); - if (w) { - w->x = 1; - w->y = 4; - w->text = three; - } else { - fprintf (stderr, "server_screen_init: Can't find widget three\n"); - } + w = widget_find (server_screen, "three"); + if (w) { + w->x = 1; + w->y = 4; + w->text = three; + } else { + fprintf (stderr, "server_screen_init: Can't find widget three\n"); + } - // And enqueue the screen - screenlist_add (server_screen); + // And enqueue the screen + screenlist_add (server_screen); - debug ("server_screen_init done\n"); + debug ("server_screen_init done\n"); - return 0; + return 0; } int update_server_screen (int timer) { - client *c; - int num_clients; - screen *s; - int num_screens; + client *c; + int num_clients; + screen *s; + int num_screens; - // Draw a title... - //strcpy(title, "LCDproc Server"); + // Draw a title... + //strcpy(title, "LCDproc Server"); - // Now get info on the number of connected clients... - num_clients = 0; - num_screens = 0; - LL_Rewind (clients); - do { - c = LL_Get (clients); - if (c) { - num_clients++; - LL_Rewind (c->data->screenlist); - do { - s = LL_Get (c->data->screenlist); - if (s) { - num_screens++; - } - } while (LL_Next (c->data->screenlist) == 0); - } - } while (LL_Next (clients) == 0); + // Now get info on the number of connected clients... + num_clients = 0; + num_screens = 0; + LL_Rewind (clients); + do { + c = LL_Get (clients); + if (c) { + num_clients++; + LL_Rewind (c->data->screenlist); + do { + s = LL_Get (c->data->screenlist); + if (s) { + num_screens++; + } + } while (LL_Next (c->data->screenlist) == 0); + } + } while (LL_Next (clients) == 0); - if (lcd.hgt >= 3) { - sprintf (one, "Clients: %i", num_clients); - sprintf (two, "Screens: %i", num_screens); - } else { - if (lcd.wid >= 20) - sprintf (one, "%i Client%s, %i Screen%s", num_clients, (num_clients == 1) ? "" : "s", num_screens, (num_screens == 1) ? "" : "s"); - else // 16x2 size - sprintf (one, "%i Cli%s, %i Scr%s", num_clients, (num_clients == 1) ? "" : "s", num_screens, (num_screens == 1) ? "" : "s"); - } + if (lcd.hgt >= 3) { + sprintf (one, "Clients: %i", num_clients); + sprintf (two, "Screens: %i", num_screens); + } else { + if (lcd.wid >= 20) + sprintf (one, "%i Client%s, %i Screen%s", num_clients, (num_clients == 1) ? "" : "s", num_screens, (num_screens == 1) ? "" : "s"); + else // 16x2 size + sprintf (one, "%i Cli%s, %i Scr%s", num_clients, (num_clients == 1) ? "" : "s", num_screens, (num_screens == 1) ? "" : "s"); + } - return 0; + return 0; } int no_screen_screen (int timer) { - lcd.clear (); + lcd.clear (); - lcd.string (1, 1, "Error: No screen!"); + lcd.string (1, 1, "Error: No screen!"); - lcd.flush (); + lcd.flush (); - return 0; + return 0; } int goodbye_screen () { - char - *b20 = " ", *t20 = " Thanks for using ", + char + *b20 = " ", *t20 = " Thanks for using ", #ifdef LINUX - *l20 = " LCDproc and Linux! ", + *l20 = " LCDproc and Linux! ", #else - *l20 = " LCDproc! ", + *l20 = " LCDproc! ", #endif - *b16 = " ", *t16 = "Thanks for using", + *b16 = " ", *t16 = "Thanks for using", #ifdef LINUX - *l16 = " LCDproc+Linux! ", + *l16 = " LCDproc+Linux! ", #else - *l16 = " LCDproc! ", + *l16 = " LCDproc! ", #endif - *nil = ""; + *nil = ""; - lcd.clear (); + lcd.clear (); - if (lcd.hgt >= 4) { - if (lcd.wid >= 20) { - lcd.string (1, 1, b20); - lcd.string (1, 2, t20); - lcd.string (1, 3, l20); - lcd.string (1, 4, b20); - } else { - lcd.string (1, 1, b16); - lcd.string (1, 2, t16); - lcd.string (1, 3, l16); - lcd.string (1, 4, b16); - } - } else { - if (lcd.wid >= 20) { - lcd.string (1, 1, t20); - lcd.string (1, 2, l20); - } else { - lcd.string (1, 1, t16); - lcd.string (1, 2, l16); - } - } + if (lcd.hgt >= 4) { + if (lcd.wid >= 20) { + lcd.string (1, 1, b20); + lcd.string (1, 2, t20); + lcd.string (1, 3, l20); + lcd.string (1, 4, b20); + } else { + lcd.string (1, 1, b16); + lcd.string (1, 2, t16); + lcd.string (1, 3, l16); + lcd.string (1, 4, b16); + } + } else { + if (lcd.wid >= 20) { + lcd.string (1, 1, t20); + lcd.string (1, 2, l20); + } else { + lcd.string (1, 1, t16); + lcd.string (1, 2, l16); + } + } - lcd.flush (); + lcd.flush (); - return 0; + return 0; } diff --git a/server/sock.c b/server/sock.c index 60e1ca5..b343237 100644 --- a/server/sock.c +++ b/server/sock.c @@ -36,30 +36,30 @@ int read_from_client (int filedes); int sock_create_inet_socket (unsigned short int port) { - struct sockaddr_in name; - int sock; + struct sockaddr_in name; + int sock; - debug ("sock_create_inet_socket(%i)\n", port); + debug ("sock_create_inet_socket(%i)\n", port); - /* Create the socket. */ - //debug("Creating Inet Socket\n"); - sock = socket (PF_INET, SOCK_STREAM, 0); - if (sock < 0) { - perror ("Error creating socket"); - return -1; - } + /* Create the socket. */ + //debug("Creating Inet Socket\n"); + sock = socket (PF_INET, SOCK_STREAM, 0); + if (sock < 0) { + perror ("Error creating socket"); + return -1; + } - /* Give the socket a name. */ - //debug("Binding Inet Socket\n"); - name.sin_family = AF_INET; - name.sin_port = htons (port); - name.sin_addr.s_addr = htonl (INADDR_ANY); - if (bind (sock, (struct sockaddr *) &name, sizeof (name)) < 0) { - perror ("Error binding socket"); - return -1; - } + /* Give the socket a name. */ + //debug("Binding Inet Socket\n"); + name.sin_family = AF_INET; + name.sin_port = htons (port); + name.sin_addr.s_addr = htonl (INADDR_ANY); + if (bind (sock, (struct sockaddr *) &name, sizeof (name)) < 0) { + perror ("Error binding socket"); + return -1; + } - return sock; + return sock; } @@ -67,27 +67,27 @@ sock_create_inet_socket (unsigned short int port) int sock_create_server () { - int sock; + int sock; - debug ("sock_create_server()\n"); + debug ("sock_create_server()\n"); - /* Create the socket and set it up to accept connections. */ - sock = sock_create_inet_socket (LCDPORT); - if (sock < 0) { - perror ("sock_create_server: Error creating socket"); - return -1; - } + /* Create the socket and set it up to accept connections. */ + sock = sock_create_inet_socket (LCDPORT); + if (sock < 0) { + perror ("sock_create_server: Error creating socket"); + return -1; + } - if (listen (sock, 1) < 0) { - perror ("sock_create_server: Listen error"); - return -1; - } + if (listen (sock, 1) < 0) { + perror ("sock_create_server: Listen error"); + return -1; + } - /* Initialize the set of active sockets. */ - FD_ZERO (&active_fd_set); - FD_SET (sock, &active_fd_set); + /* Initialize the set of active sockets. */ + FD_ZERO (&active_fd_set); + FD_SET (sock, &active_fd_set); - orig_sock = sock; + orig_sock = sock; /* { @@ -104,123 +104,123 @@ sock_create_server () } */ - return sock; + return sock; } int sock_poll_clients () { - int i; - int err; - struct sockaddr_in clientname; - size_t size; - struct timeval t; - client *c; + int i; + int err; + struct sockaddr_in clientname; + size_t size; + struct timeval t; + client *c; - //debug("sock_poll_clients()\n"); + //debug("sock_poll_clients()\n"); - t.tv_sec = 0; - t.tv_usec = 0; + t.tv_sec = 0; + t.tv_usec = 0; - /* Block until input arrives on one or more active sockets. */ - read_fd_set = active_fd_set; + /* Block until input arrives on one or more active sockets. */ + read_fd_set = active_fd_set; - if (select (FD_SETSIZE, &read_fd_set, NULL, NULL, &t) < 0) { - perror ("sock_poll_clients: Select error"); - return -1; - } + if (select (FD_SETSIZE, &read_fd_set, NULL, NULL, &t) < 0) { + perror ("sock_poll_clients: Select error"); + return -1; + } - /* Service all the sockets with input pending. */ - for (i = 0; i < FD_SETSIZE; ++i) { - if (FD_ISSET (i, &read_fd_set)) { - if (i == orig_sock) { - /* Connection request on original socket. */ - int new; - size = sizeof (clientname); - new = accept (orig_sock, (struct sockaddr *) &clientname, &size); - if (new < 0) { - perror ("sock_poll_clients: Accept error"); - return -1; - } - debug ("sock_poll_clients: connect from host %s, port %hd.\n", inet_ntoa (clientname.sin_addr), ntohs (clientname.sin_port)); - FD_SET (new, &active_fd_set); + /* Service all the sockets with input pending. */ + for (i = 0; i < FD_SETSIZE; ++i) { + if (FD_ISSET (i, &read_fd_set)) { + if (i == orig_sock) { + /* Connection request on original socket. */ + int new; + size = sizeof (clientname); + new = accept (orig_sock, (struct sockaddr *) &clientname, &size); + if (new < 0) { + perror ("sock_poll_clients: Accept error"); + return -1; + } + debug ("sock_poll_clients: connect from host %s, port %hd.\n", inet_ntoa (clientname.sin_addr), ntohs (clientname.sin_port)); + FD_SET (new, &active_fd_set); - fcntl (new, F_SETFL, O_NONBLOCK); + fcntl (new, F_SETFL, O_NONBLOCK); - // TODO: Create new "client" here... (done?) - if (client_create (new) == NULL) { - fprintf (stderr, "sock_poll_clients: error creating client %i\n", i); - return -1; - } - } else { - /* Data arriving on an already-connected socket. */ - err = 0; - do { - debug ("sock_poll_clients: reading...\n"); - err = read_from_client (i); - debug ("sock_poll_clients: ...done\n"); - if (err < 0) { - // TODO: Destroy a "client" here... (done?) - c = client_find_sock (i); - if (c) { - //sock_send_string(i, "bye\n"); - client_destroy (c); - close (i); - FD_CLR (i, &active_fd_set); - debug ("sock_poll_clients: Closed connection %i\n", i); - } else - fprintf (stderr, "sock_poll_clients: Can't find client %i\n", i); - } - } while (err > 0); + // TODO: Create new "client" here... (done?) + if (client_create (new) == NULL) { + fprintf (stderr, "sock_poll_clients: error creating client %i\n", i); + return -1; + } + } else { + /* Data arriving on an already-connected socket. */ + err = 0; + do { + debug ("sock_poll_clients: reading...\n"); + err = read_from_client (i); + debug ("sock_poll_clients: ...done\n"); + if (err < 0) { + // TODO: Destroy a "client" here... (done?) + c = client_find_sock (i); + if (c) { + //sock_send_string(i, "bye\n"); + client_destroy (c); + close (i); + FD_CLR (i, &active_fd_set); + debug ("sock_poll_clients: Closed connection %i\n", i); + } else + fprintf (stderr, "sock_poll_clients: Can't find client %i\n", i); + } + } while (err > 0); - } - } - } - return 0; + } + } + } + return 0; } int read_from_client (int filedes) { - char buffer[MAXMSG]; - int nbytes, i; - client *c; + char buffer[MAXMSG]; + int nbytes, i; + client *c; // nbytes = read (filedes, buffer, MAXMSG); - //debug("read_from_client(%i): reading...\n", filedes); - nbytes = sock_recv (filedes, buffer, MAXMSG); - //debug("read_from_client(%i): ...done\n", filedes); - debug ("read_from_client(%i): %i bytes\n", filedes, nbytes); + //debug("read_from_client(%i): reading...\n", filedes); + nbytes = sock_recv (filedes, buffer, MAXMSG); + //debug("read_from_client(%i): ...done\n", filedes); + debug ("read_from_client(%i): %i bytes\n", filedes, nbytes); - if (nbytes < 0) // Read error? No data available? - { - // TODO: check errno here! - //fprintf (stderr,"read_from_client: Read error\n"); - return 0; - } else if (nbytes == 0) // EOF - return -1; - else if (nbytes > (MAXMSG - (MAXMSG / 8))) // Very noisy client... - { - sock_send_string (filedes, "huh? Shut up!\n"); - return -1; - } else // Data Read - { - buffer[nbytes] = 0; - // Now, replace zeros with linefeeds... - for (i = 0; i < nbytes; i++) - if (buffer[i] == 0) - buffer[i] = '\n'; - // Enqueue a "client message" here... - c = client_find_sock (filedes); - if (c) { - client_add_message (c, buffer); - } else - fprintf (stderr, "read_from_client: Can't find client %i\n", filedes); + if (nbytes < 0) // Read error? No data available? + { + // TODO: check errno here! + //fprintf (stderr,"read_from_client: Read error\n"); + return 0; + } else if (nbytes == 0) // EOF + return -1; + else if (nbytes > (MAXMSG - (MAXMSG / 8))) // Very noisy client... + { + sock_send_string (filedes, "huh? Shut up!\n"); + return -1; + } else // Data Read + { + buffer[nbytes] = 0; + // Now, replace zeros with linefeeds... + for (i = 0; i < nbytes; i++) + if (buffer[i] == 0) + buffer[i] = '\n'; + // Enqueue a "client message" here... + c = client_find_sock (filedes); + if (c) { + client_add_message (c, buffer); + } else + fprintf (stderr, "read_from_client: Can't find client %i\n", filedes); - debug ("read_from_client: got message: `%s'\n", buffer); - return nbytes; - } - return nbytes; + debug ("read_from_client: got message: `%s'\n", buffer); + return nbytes; + } + return nbytes; } // FIXME: This talks to all open files, including @@ -229,18 +229,18 @@ read_from_client (int filedes) int sock_close_all () { - int i; + int i; - debug ("sock_close_all()\n"); + debug ("sock_close_all()\n"); - for (i = 0; i < FD_SETSIZE; i++) { - // TODO: Destroy a "client" here...? Nope. - sock_send_string (i, "bye\n"); - close (i); - FD_CLR (i, &active_fd_set); - debug ("sock_close_all: Closed connection %i\n", i); - } + for (i = 0; i < FD_SETSIZE; i++) { + // TODO: Destroy a "client" here...? Nope. + sock_send_string (i, "bye\n"); + close (i); + FD_CLR (i, &active_fd_set); + debug ("sock_close_all: Closed connection %i\n", i); + } - return 0; + return 0; } diff --git a/server/widget.c b/server/widget.c index 07bdc48..fc9a42a 100644 --- a/server/widget.c +++ b/server/widget.c @@ -9,16 +9,16 @@ #include "widget.h" char *types[] = { "none", - "string", - "hbar", - "vbar", - "icon", - "title", - "scroller", - "frame", - "num", - //"", - NULL, + "string", + "hbar", + "vbar", + "icon", + "title", + "scroller", + "frame", + "num", + //"", + NULL, }; static widget *widget_finder (LL * list, char *id); @@ -27,85 +27,85 @@ static int widget_remover (LL * list, widget * w); widget * widget_create () { - widget *w; + widget *w; - debug ("widget_create()\n"); + debug ("widget_create()\n"); - w = malloc (sizeof (widget)); - if (!w) { - fprintf (stderr, "widget_create: Error allocating widget\n"); - return NULL; - } + w = malloc (sizeof (widget)); + if (!w) { + fprintf (stderr, "widget_create: Error allocating widget\n"); + return NULL; + } - w->id = NULL; - w->type = 0; - w->x = 1; - w->y = 1; - w->wid = 0; - w->hgt = 0; - w->left = 1; - w->top = 1; - w->right = 0; - w->bottom = 0; - w->length = 1; - w->speed = 1; - w->text = NULL; - w->kids = NULL; + w->id = NULL; + w->type = 0; + w->x = 1; + w->y = 1; + w->wid = 0; + w->hgt = 0; + w->left = 1; + w->top = 1; + w->right = 0; + w->bottom = 0; + w->length = 1; + w->speed = 1; + w->text = NULL; + w->kids = NULL; - return w; + return w; } int widget_destroy (widget * w) { - LL *list; - widget *foo; + LL *list; + widget *foo; - if (!w) - return -1; + if (!w) + return -1; - debug ("widget_destroy(%s)\n", w->id); + debug ("widget_destroy(%s)\n", w->id); - if (w->id) - free (w->id); - //debug("widget_destroy: id...\n"); - if (w->text) - free (w->text); - //debug("widget_destroy: text...\n"); + if (w->id) + free (w->id); + //debug("widget_destroy: id...\n"); + if (w->text) + free (w->text); + //debug("widget_destroy: text...\n"); - // TODO: Free kids! - if (w->kids) { - list = w->kids; - LL_Rewind (list); - do { - foo = LL_Get (list); - if (foo) - widget_destroy (foo); - } while (0 == LL_Next (list)); + // TODO: Free kids! + if (w->kids) { + list = w->kids; + LL_Rewind (list); + do { + foo = LL_Get (list); + if (foo) + widget_destroy (foo); + } while (0 == LL_Next (list)); - LL_Destroy (list); - w->kids = NULL; - } + LL_Destroy (list); + w->kids = NULL; + } - free (w); - //debug("widget_destroy: widget...\n"); + free (w); + //debug("widget_destroy: widget...\n"); - return 0; + return 0; } widget * widget_find (screen * s, char *id) { - //widget *w, *err; + //widget *w, *err; - if (!s) - return NULL; - if (!id) - return NULL; + if (!s) + return NULL; + if (!id) + return NULL; - 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 { @@ -131,160 +131,160 @@ widget_find (screen * s, char *id) widget * widget_finder (LL * list, char *id) { - widget *w, *err; + widget *w, *err; - if (!list) - return NULL; - if (!id) - return NULL; + if (!list) + return NULL; + if (!id) + return NULL; - debug ("widget_finder(%s)\n", id); + debug ("widget_finder(%s)\n", id); - LL_Rewind (list); - do { - //debug("widget_finder: Iteration\n"); - w = LL_Get (list); - if (w) { - //debug("widget_finder: ...\n"); - if (0 == strcmp (w->id, id)) { - debug ("widget_finder: Found %s\n", id); - return w; - } - // Search kids recursively - //debug("widget_finder: ...\n"); - if (w->type == WID_FRAME) { - err = widget_finder (w->kids, id); - if (err) - return err; - } - //debug("widget_finder: ...\n"); - } + LL_Rewind (list); + do { + //debug("widget_finder: Iteration\n"); + w = LL_Get (list); + if (w) { + //debug("widget_finder: ...\n"); + if (0 == strcmp (w->id, id)) { + debug ("widget_finder: Found %s\n", id); + return w; + } + // Search kids recursively + //debug("widget_finder: ...\n"); + if (w->type == WID_FRAME) { + err = widget_finder (w->kids, id); + if (err) + return err; + } + //debug("widget_finder: ...\n"); + } - } while (LL_Next (list) == 0); + } while (LL_Next (list) == 0); - return NULL; + return NULL; } int widget_add (screen * s, char *id, char *type, char *in, int sock) { - int i; - int valid = 0; - int wid_type = 0; - widget *w, *parent; - LL *list; + int i; + int valid = 0; + int wid_type = 0; + widget *w, *parent; + LL *list; - debug ("widget_add(%s, %s, %s)\n", id, type, in); + debug ("widget_add(%s, %s, %s)\n", id, type, in); - if (!s) - return -1; - if (!id) - return -1; + if (!s) + return -1; + if (!id) + return -1; - list = s->widgets; + list = s->widgets; - if (0 == strcmp (id, "heartbeat")) { - s->heartbeat = 1; - return 0; - } - // Make sure this screen doesn't already exist... - w = widget_find (s, id); - if (w) { - // already exists - sock_send_string (sock, "huh? You already have a widget with that id#\n"); - return 1; - } - // Make sure the container, if any, is real - if (in) { - parent = widget_find (s, in); - if (!parent) { - // no frame to use as parent - sock_send_string (sock, "huh? Frame doesn't exist\n"); - return 3; - } else { - if (parent->type == WID_FRAME) { - list = parent->kids; - if (!list) - fprintf (stderr, "widget_add: Parent has no kids\n"); - } else { - // no frame to use as parent - sock_send_string (sock, "huh? Not a frame\n"); - return 4; - } - } - } - // Make sure it's a valid widget type - for (i = 1; types[i]; i++) { - if (0 == strcmp (types[i], type)) { - valid = 1; - wid_type = i; - } - } - if (!valid) { - // invalid widget type - sock_send_string (sock, "huh? Invalid widget type\n"); - return 2; - } + if (0 == strcmp (id, "heartbeat")) { + s->heartbeat = 1; + return 0; + } + // Make sure this screen doesn't already exist... + w = widget_find (s, id); + if (w) { + // already exists + sock_send_string (sock, "huh? You already have a widget with that id#\n"); + return 1; + } + // Make sure the container, if any, is real + if (in) { + parent = widget_find (s, in); + if (!parent) { + // no frame to use as parent + sock_send_string (sock, "huh? Frame doesn't exist\n"); + return 3; + } else { + if (parent->type == WID_FRAME) { + list = parent->kids; + if (!list) + fprintf (stderr, "widget_add: Parent has no kids\n"); + } else { + // no frame to use as parent + sock_send_string (sock, "huh? Not a frame\n"); + return 4; + } + } + } + // Make sure it's a valid widget type + for (i = 1; types[i]; i++) { + if (0 == strcmp (types[i], type)) { + valid = 1; + wid_type = i; + } + } + if (!valid) { + // invalid widget type + sock_send_string (sock, "huh? Invalid widget type\n"); + return 2; + } - debug ("widget_add: making widget\n"); + debug ("widget_add: making widget\n"); - // Now, make it... - w = widget_create (); - if (!w) { - fprintf (stderr, "widget_add: Error creating widget\n"); - return -1; - } + // Now, make it... + w = widget_create (); + if (!w) { + fprintf (stderr, "widget_add: Error creating widget\n"); + return -1; + } - w->id = strdup (id); - if (!w->id) { - fprintf (stderr, "widget_add: Error allocating id\n"); - return -1; - } + w->id = strdup (id); + if (!w->id) { + fprintf (stderr, "widget_add: Error allocating id\n"); + return -1; + } - w->type = wid_type; + w->type = wid_type; - // Set up the container's widget list... - if (w->type == WID_FRAME) { - if (!w->kids) { - w->kids = LL_new (); - if (!w->kids) { - fprintf (stderr, "widget_add: error allocating kids for frame\n"); - return -1; - } - } - } - // TODO: Check for errors here? - LL_Push (list, (void *) w); + // Set up the container's widget list... + if (w->type == WID_FRAME) { + if (!w->kids) { + w->kids = LL_new (); + if (!w->kids) { + fprintf (stderr, "widget_add: error allocating kids for frame\n"); + return -1; + } + } + } + // TODO: Check for errors here? + LL_Push (list, (void *) w); - return 0; + return 0; } int widget_remove (screen * s, char *id, int sock) { - widget *w; - LL *list; + widget *w; + LL *list; - debug ("widget_remove(%s)\n", id); + debug ("widget_remove(%s)\n", id); - if (!s) - return -1; - if (!id) - return -1; + if (!s) + return -1; + if (!id) + return -1; - list = s->widgets; + list = s->widgets; - if (0 == strcmp (id, "heartbeat")) { - s->heartbeat = 0; - return 0; - } - // Make sure this screen *does* exist... - w = widget_find (s, id); - if (!w) { - sock_send_string (sock, "huh? You don't have a widget with that id#\n"); - debug ("widget_remove: Error finding widget %s\n", id); - return 1; - } + if (0 == strcmp (id, "heartbeat")) { + s->heartbeat = 0; + return 0; + } + // Make sure this screen *does* exist... + w = widget_find (s, id); + if (!w) { + sock_send_string (sock, "huh? You don't have a widget with that id#\n"); + debug ("widget_remove: Error finding widget %s\n", id); + return 1; + } /* // TODO: Check for errors here? @@ -296,7 +296,7 @@ widget_remove (screen * s, char *id, int sock) // widget_destroy(w); */ - return widget_remover (list, w); + return widget_remover (list, w); // return 0; } @@ -304,58 +304,58 @@ widget_remove (screen * s, char *id, int sock) int widget_remover (LL * list, widget * w) { - widget *foo, *bar; - int err; + widget *foo, *bar; + int err; - debug ("widget_remover\n"); + debug ("widget_remover\n"); - if (!list) - return 0; - if (!w) - return 0; + if (!list) + return 0; + if (!w) + return 0; - // Search through the list... - LL_Rewind (list); - do { - // Test each item - foo = LL_Get (list); - if (foo) { - // Frames require recursion to search and/or destroy - if (foo->type == WID_FRAME) { - // If removing a frame, kill all its kids, too... - if (foo == w) { - if (!foo->kids) { - fprintf (stderr, "widget_remover: frame has no kids\n"); - } else // Kill the kids... - { - LL_Rewind (foo->kids); - do { - bar = LL_Get (foo->kids); - err = widget_remover (foo->kids, bar); - } while (0 == LL_Next (foo->kids)); + // Search through the list... + LL_Rewind (list); + do { + // Test each item + foo = LL_Get (list); + if (foo) { + // Frames require recursion to search and/or destroy + if (foo->type == WID_FRAME) { + // If removing a frame, kill all its kids, too... + if (foo == w) { + if (!foo->kids) { + fprintf (stderr, "widget_remover: frame has no kids\n"); + } else // Kill the kids... + { + LL_Rewind (foo->kids); + do { + bar = LL_Get (foo->kids); + err = widget_remover (foo->kids, bar); + } while (0 == LL_Next (foo->kids)); - // Then kill the parent... - LL_Remove (list, (void *) w); - widget_destroy (w); - } + // Then kill the parent... + LL_Remove (list, (void *) w); + widget_destroy (w); + } - } else // Otherwise, search the frame recursively... - { - if (!foo->kids) { - fprintf (stderr, "widget_remover: frame has no kids\n"); - } else - err = widget_remover (foo->kids, w); + } else // Otherwise, search the frame recursively... + { + if (!foo->kids) { + fprintf (stderr, "widget_remover: frame has no kids\n"); + } else + err = widget_remover (foo->kids, w); - } - } else // If not a frame, remove it if it matches... - { - if (foo == w) { - LL_Remove (list, (void *) w); - widget_destroy (w); - } - } - } - } while (0 == LL_Next (list)); + } + } else // If not a frame, remove it if it matches... + { + if (foo == w) { + LL_Remove (list, (void *) w); + widget_destroy (w); + } + } + } + } while (0 == LL_Next (list)); - return 0; + return 0; } diff --git a/server/widget.h b/server/widget.h index 4956977..acb9aee 100644 --- a/server/widget.h +++ b/server/widget.h @@ -4,16 +4,16 @@ #include "screen.h" typedef struct widget { - char *id; - int type; - // some sort of data here... - int x, y; // Position - int wid, hgt; // Size - int left, top, right, bottom; // bounding rectangle - int length; // size or direction - int speed; // For scroller... - char *text; // text or binary data - LL *kids; // Frames can contain more widgets... + char *id; + int type; + // some sort of data here... + int x, y; // Position + int wid, hgt; // Size + int left, top, right, bottom; // bounding rectangle + int length; // size or direction + int speed; // For scroller... + char *text; // text or binary data + LL *kids; // Frames can contain more widgets... } widget; // These correspond to the index into the "types" array... diff --git a/shared/LL.c b/shared/LL.c index 6f751e9..c9139bc 100644 --- a/shared/LL.c +++ b/shared/LL.c @@ -14,21 +14,21 @@ LL * LL_new () { - LL *list; + LL *list; - list = malloc (sizeof (LL)); - if (!list) - return NULL; + list = malloc (sizeof (LL)); + if (!list) + return NULL; - list->head.data = NULL; - list->head.prev = NULL; - list->head.next = &list->tail; - list->tail.data = NULL; - list->tail.prev = &list->head; - list->tail.next = NULL; - list->current = &list->head; + list->head.data = NULL; + list->head.prev = NULL; + list->head.next = &list->tail; + list->tail.data = NULL; + list->tail.prev = &list->head; + list->tail.next = NULL; + list->current = &list->head; - return list; + return list; } ////////////////////////////////////////////////////////////////////// @@ -38,23 +38,23 @@ LL_new () int LL_Destroy (LL * list) { - LL_node *node, *next; + LL_node *node, *next; - if (!list) - return -1; + if (!list) + return -1; - node = &list->head; + node = &list->head; - for (node = node->next; node && node->next; node = next) { - // Avoid accessing "node" after it's freed.. :) - next = node->next; - if (LL_node_Destroy (node) < 0) - return -1; - } + for (node = node->next; node && node->next; node = next) { + // Avoid accessing "node" after it's freed.. :) + next = node->next; + if (LL_node_Destroy (node) < 0) + return -1; + } - free (list); + free (list); - return 0; + return 0; } ////////////////////////////////////////////////////////////////////// @@ -63,38 +63,38 @@ LL_Destroy (LL * list) int LL_node_Destroy (LL_node * node) { - if (!node) - return -1; + if (!node) + return -1; - if (LL_node_Unlink (node) < 0) - return -1; + if (LL_node_Unlink (node) < 0) + return -1; - free (node); + free (node); - return 0; + return 0; } ////////////////////////////////////////////////////////////////////// int LL_node_Unlink (LL_node * node) { - LL_node *next, *prev; + LL_node *next, *prev; - if (!node) - return -1; + if (!node) + return -1; - next = node->next; - prev = node->prev; + next = node->next; + prev = node->prev; - if (next) - next->prev = prev; - if (prev) - prev->next = next; + if (next) + next->prev = prev; + if (prev) + prev->next = next; - node->next = NULL; - node->prev = NULL; + node->next = NULL; + node->prev = NULL; - return 0; + return 0; } ////////////////////////////////////////////////////////////////////// @@ -102,14 +102,14 @@ LL_node_Unlink (LL_node * node) int LL_node_DestroyData (LL_node * node) { - if (!node) - return -1; + if (!node) + return -1; - if (node->data) - free (node->data); - else - return -1; - return 0; + if (node->data) + free (node->data); + else + return -1; + return 0; } ////////////////////////////////////////////////////////////////////// @@ -117,20 +117,20 @@ LL_node_DestroyData (LL_node * node) int LL_Rewind (LL * list) { - if (!list) - return -1; + if (!list) + return -1; /* printf("LL_Rewind: list=%8x\n", list); printf("LL_Rewind: list.head=%8x\n", &list->head); printf("LL_Rewind: list.tail=%8x\n", &list->tail); */ - if (list->head.next != &list->tail) - list->current = list->head.next; - else - list->current = &list->head; + if (list->head.next != &list->tail) + list->current = list->head.next; + else + list->current = &list->head; - return 0; + return 0; } ////////////////////////////////////////////////////////////////////// @@ -138,15 +138,15 @@ LL_Rewind (LL * list) int LL_End (LL * list) { - if (!list) - return -1; + if (!list) + return -1; - if (list->tail.prev != &list->head) - list->current = list->tail.prev; - else - list->current = &list->tail; + if (list->tail.prev != &list->head) + list->current = list->tail.prev; + else + list->current = &list->tail; - return 0; + return 0; } ////////////////////////////////////////////////////////////////////// @@ -154,17 +154,17 @@ LL_End (LL * list) int LL_Next (LL * list) { - if (!list) - return -1; - if (!list->current) - return -1; + if (!list) + return -1; + if (!list->current) + return -1; - if (list->current->next != &list->tail) { - list->current = list->current->next; - return 0; - } else { - return -1; - } + if (list->current->next != &list->tail) { + list->current = list->current->next; + return 0; + } else { + return -1; + } } ////////////////////////////////////////////////////////////////////// @@ -172,17 +172,17 @@ LL_Next (LL * list) int LL_Prev (LL * list) { - if (!list) - return -1; - if (!list->current) - return -1; + if (!list) + return -1; + if (!list->current) + return -1; - if (list->current->prev != &list->head) { - list->current = list->current->prev; - return 0; - } else { - return -1; - } + if (list->current->prev != &list->head) { + list->current = list->current->prev; + return 0; + } else { + return -1; + } } ////////////////////////////////////////////////////////////////////// @@ -190,36 +190,36 @@ LL_Prev (LL * list) void * LL_Get (LL * list) { - if (!list) - return NULL; - if (!list->current) - return NULL; + if (!list) + return NULL; + if (!list->current) + return NULL; - return list->current->data; + return list->current->data; } ////////////////////////////////////////////////////////////////////// int LL_Put (LL * list, void *data) { - if (!list) - return -1; - if (!list->current) - return -1; + if (!list) + return -1; + if (!list->current) + return -1; - list->current->data = data; + list->current->data = data; - return 0; + return 0; } ////////////////////////////////////////////////////////////////////// LL_node * LL_GetNode (LL * list) { - if (!list) - return NULL; + if (!list) + return NULL; - return list->current; + return list->current; } ////////////////////////////////////////////////////////////////////// @@ -227,104 +227,104 @@ LL_GetNode (LL * list) int LL_PutNode (LL * list, LL_node * node) { - if (!list) - return -1; - if (!node) - return -1; + if (!list) + return -1; + if (!node) + return -1; - list->current = node; + list->current = node; - return 0; + return 0; } ////////////////////////////////////////////////////////////////////// void * -LL_GetFirst (LL * list) // gets data from first node +LL_GetFirst (LL * list) // gets data from first node { - if (!list) - return NULL; + if (!list) + return NULL; - if (0 > LL_Rewind (list)) - return NULL; + if (0 > LL_Rewind (list)) + return NULL; - return LL_Get (list); + return LL_Get (list); } ////////////////////////////////////////////////////////////////////// // void * -LL_GetNext (LL * list) // ... next node +LL_GetNext (LL * list) // ... next node { - if (!list) - return NULL; + if (!list) + return NULL; - if (0 > LL_Next (list)) - return NULL; + if (0 > LL_Next (list)) + return NULL; - return LL_Get (list); + return LL_Get (list); } ////////////////////////////////////////////////////////////////////// void * -LL_GetPrev (LL * list) // ... prev node +LL_GetPrev (LL * list) // ... prev node { - if (!list) - return NULL; + if (!list) + return NULL; - if (0 > LL_Prev (list)) - return NULL; + if (0 > LL_Prev (list)) + return NULL; - return LL_Get (list); + return LL_Get (list); } ////////////////////////////////////////////////////////////////////// void * -LL_GetLast (LL * list) // ... last node +LL_GetLast (LL * list) // ... last node { - if (!list) - return NULL; + if (!list) + return NULL; - if (0 > LL_End (list)) - return NULL; + if (0 > LL_End (list)) + return NULL; - return LL_Get (list); + return LL_Get (list); } ////////////////////////////////////////////////////////////////////// int LL_AddNode (LL * list, void *add) // Adds node AFTER current one { - LL_node *node; + LL_node *node; - if (!list) - return -1; - //if(!add) return -1; // Nevermind.. NULL entries can be good... - if (!list->current) - return -1; + if (!list) + return -1; + //if(!add) return -1; // Nevermind.. NULL entries can be good... + if (!list->current) + return -1; - //LL_dprint(list); + //LL_dprint(list); - node = malloc (sizeof (LL_node)); - if (!node) - return -1; - //printf("Allocated node\n"); + node = malloc (sizeof (LL_node)); + if (!node) + return -1; + //printf("Allocated node\n"); /* printf("Current: prev: %8x\tnode: %8x\tnext: %8x\n", */ /* (int)list->current->prev, */ /* (int)list->current, */ /* (int)list->current->next); */ - if (list->current == &list->tail) { - list->current = list->current->prev; + if (list->current == &list->tail) { + list->current = list->current->prev; /* printf("Was at end of list...\n"); */ /* printf("Current: prev: %8x\tnode: %8x\tnext: %8x\n", */ /* (int)list->current->prev, */ /* (int)list->current, */ /* (int)list->current->next); */ - } + } // printf("Setting node data\n"); - node->next = list->current->next; - node->prev = list->current; - node->data = add; + node->next = list->current->next; + node->prev = list->current; + node->data = add; // printf("...done\n"); /* printf("NewNode: prev: %8x\tnode: %8x\tnext: %8x\n", */ /* (int)node->prev, */ @@ -332,52 +332,52 @@ LL_AddNode (LL * list, void *add) // Adds node AFTER current one /* (int)node->next); */ // printf("Relinking...\n"); - if (node->next) - node->next->prev = node; + if (node->next) + node->next->prev = node; // printf("...\n"); - list->current->next = node; + list->current->next = node; // printf("...done\n"); - list->current = node; + list->current = node; // printf("Added node\n"); // LL_dprint(list); - return 0; + return 0; } ////////////////////////////////////////////////////////////////////// int LL_InsertNode (LL * list, void *add) // Adds node BEFORE current one { - LL_node *node; + LL_node *node; - if (!list) - return -1; - if (!add) - return -1; - if (!list->current) - return -1; + if (!list) + return -1; + if (!add) + return -1; + if (!list->current) + return -1; - node = malloc (sizeof (LL_node)); - if (!node) - return -1; + node = malloc (sizeof (LL_node)); + if (!node) + return -1; - if (list->current == &list->head) - list->current = list->current->next; + if (list->current == &list->head) + list->current = list->current->next; - node->next = list->current; - node->prev = list->current->prev; - node->data = add; + node->next = list->current; + node->prev = list->current->prev; + node->data = add; - if (list->current->prev) - list->current->prev->next = node; + if (list->current->prev) + list->current->prev->next = node; - list->current->prev = node; + list->current->prev = node; - list->current = node; + list->current = node; - return 0; + return 0; } //////////////////////////////////////////////////////////////////////// @@ -386,49 +386,49 @@ LL_InsertNode (LL * list, void *add) // Adds node BEFORE current one void * LL_DeleteNode (LL * list) { - LL_node *next, *prev; - void *data; + LL_node *next, *prev; + void *data; - if (!list) - return NULL; - if (!list->current) - return NULL; - if (list->current == &list->head) - return NULL; - if (list->current == &list->tail) - return NULL; + if (!list) + return NULL; + if (!list->current) + return NULL; + if (list->current == &list->head) + return NULL; + if (list->current == &list->tail) + return NULL; #ifdef DEBUG - printf ("LL_DeleteNode: Before...\n"); - LL_dprint (list); + printf ("LL_DeleteNode: Before...\n"); + LL_dprint (list); #endif - next = list->current->next; - prev = list->current->prev; - data = list->current->data; + next = list->current->next; + prev = list->current->prev; + data = list->current->data; - if (prev) - prev->next = next; + if (prev) + prev->next = next; - if (next) - next->prev = prev; + if (next) + next->prev = prev; - list->current->prev = NULL; - list->current->next = NULL; - // This should not free things; the user should do it explicitly. - //if(list->current->data) free(list->current->data); - list->current->data = NULL; + list->current->prev = NULL; + list->current->next = NULL; + // This should not free things; the user should do it explicitly. + //if(list->current->data) free(list->current->data); + list->current->data = NULL; - free (list->current); + free (list->current); - list->current = next; + list->current = next; #ifdef DEBUG - printf ("LL_DeleteNode: After...\n"); - LL_dprint (list); + printf ("LL_DeleteNode: After...\n"); + LL_dprint (list); #endif - return data; + return data; } ////////////////////////////////////////////////////////////////////// @@ -436,174 +436,174 @@ LL_DeleteNode (LL * list) void * LL_Remove (LL * list, void *data) { - void *find; + void *find; - if (!list) - return NULL; + if (!list) + return NULL; - LL_Rewind (list); - do { - find = LL_Get (list); - if (find == data) - return LL_DeleteNode (list); - } while (LL_Next (list) == 0); + LL_Rewind (list); + do { + find = LL_Get (list); + if (find == data) + return LL_DeleteNode (list); + } while (LL_Next (list) == 0); - return NULL; + return NULL; } ////////////////////////////////////////////////////////////////////// // Stack operations int -LL_Push (LL * list, void *add) // Add node to end of list +LL_Push (LL * list, void *add) // Add node to end of list { - if (!list) - return -1; - if (!add) - return -1; + if (!list) + return -1; + if (!add) + return -1; // printf("Going to end of list...\n"); - LL_End (list); + LL_End (list); // printf("Adding node...\n"); - return LL_AddNode (list, add); + return LL_AddNode (list, add); } ////////////////////////////////////////////////////////////////////// void * -LL_Pop (LL * list) // Remove node from end of list +LL_Pop (LL * list) // Remove node from end of list { - if (!list) - return NULL; + if (!list) + return NULL; - if (0 > LL_End (list)) - return NULL; + if (0 > LL_End (list)) + return NULL; - return LL_DeleteNode (list); + return LL_DeleteNode (list); } ////////////////////////////////////////////////////////////////////// void * -LL_Top (LL * list) // Peek at end node +LL_Top (LL * list) // Peek at end node { - return LL_GetLast (list); + return LL_GetLast (list); } ////////////////////////////////////////////////////////////////////// void * -LL_Shift (LL * list) // Remove node from start of list +LL_Shift (LL * list) // Remove node from start of list { - if (!list) - return NULL; + if (!list) + return NULL; - if (0 > LL_Rewind (list)) - return NULL; + if (0 > LL_Rewind (list)) + return NULL; - return LL_DeleteNode (list); + return LL_DeleteNode (list); } ////////////////////////////////////////////////////////////////////// void * -LL_Look (LL * list) // Peek at first node +LL_Look (LL * list) // Peek at first node { - return LL_GetFirst (list); + return LL_GetFirst (list); } ////////////////////////////////////////////////////////////////////// int LL_Unshift (LL * list, void *add) // Add node to beginning of list { - if (!list) - return -1; - if (!add) - return -1; + if (!list) + return -1; + if (!add) + return -1; - LL_Rewind (list); + LL_Rewind (list); - return LL_InsertNode (list, add); + return LL_InsertNode (list, add); } ////////////////////////////////////////////////////////////////////// int -LL_Roll (LL * list) // Make last node first +LL_Roll (LL * list) // Make last node first { - LL_node *node, *next; + LL_node *node, *next; - if (!list) - return -1; - //if(!list->current) return -1; + if (!list) + return -1; + //if(!list->current) return -1; - if (0 > LL_End (list)) - return -1; + if (0 > LL_End (list)) + return -1; - // Avoid rolling an empty list, or unlinking the head/tail... - if (list->current == &list->head) - list->current = list->current->next; - if (list->current == &list->tail) - list->current = list->current->prev; - // List is empty - if (list->current == &list->head) - return 0; - // List has one item - if (list->current->prev == &list->head) - return 0; + // Avoid rolling an empty list, or unlinking the head/tail... + if (list->current == &list->head) + list->current = list->current->next; + if (list->current == &list->tail) + list->current = list->current->prev; + // List is empty + if (list->current == &list->head) + return 0; + // List has one item + if (list->current->prev == &list->head) + return 0; - node = list->current; + node = list->current; - LL_node_Unlink (node); + LL_node_Unlink (node); - if (0 > LL_Rewind (list)) - return -1; + if (0 > LL_Rewind (list)) + return -1; - next = list->head.next; + next = list->head.next; - list->head.next = node; - next->prev = node; - node->prev = &list->head; - node->next = next; + list->head.next = node; + next->prev = node; + node->prev = &list->head; + node->next = next; - return 0; + return 0; } ////////////////////////////////////////////////////////////////////// int -LL_UnRoll (LL * list) // Roll the other way... +LL_UnRoll (LL * list) // Roll the other way... { - LL_node *node, *prev; + LL_node *node, *prev; - if (!list) - return -1; - //if(!list->current) return -1; + if (!list) + return -1; + //if(!list->current) return -1; - if (0 > LL_Rewind (list)) - return -1; + if (0 > LL_Rewind (list)) + return -1; - // Avoid rolling an empty list, or unlinking the head/tail... - if (list->current == &list->tail) - list->current = list->current->prev; - if (list->current == &list->head) - list->current = list->current->next; - // List is empty - if (list->current == &list->tail) - return 0; - // List has one item - if (list->current->next == &list->tail) - return 0; + // Avoid rolling an empty list, or unlinking the head/tail... + if (list->current == &list->tail) + list->current = list->current->prev; + if (list->current == &list->head) + list->current = list->current->next; + // List is empty + if (list->current == &list->tail) + return 0; + // List has one item + if (list->current->next == &list->tail) + return 0; - node = list->current; + node = list->current; - LL_node_Unlink (node); + LL_node_Unlink (node); - if (0 > LL_End (list)) - return -1; + if (0 > LL_End (list)) + return -1; - prev = list->tail.prev; + prev = list->tail.prev; - list->tail.prev = node; - prev->next = node; - node->next = &list->tail; - node->prev = prev; + list->tail.prev = node; + prev->next = node; + node->next = &list->tail; + node->prev = prev; - return 0; + return 0; } ////////////////////////////////////////////////////////////////////// @@ -612,78 +612,78 @@ LL_UnRoll (LL * list) // Roll the other way... int LL_PriorityEnqueue (LL * list, void *add, int compare (void *, void *)) { - void *data; - int i; + void *data; + int i; - if (!list) - return -1; - if (!add) - return -1; - if (!compare) - return -1; + if (!list) + return -1; + if (!add) + return -1; + if (!compare) + return -1; - // From the end of the list, keep searching while we're "less than" - // the given nodes... - LL_End (list); - do { - data = LL_Get (list); - if (data) { - i = compare (add, data); - if (i >= 0) // If we're in the right place, add it and exit - { - LL_AddNode (list, add); - return 0; - } - } - } while (LL_Prev (list) == 0); + // From the end of the list, keep searching while we're "less than" + // the given nodes... + LL_End (list); + do { + data = LL_Get (list); + if (data) { + i = compare (add, data); + if (i >= 0) // If we're in the right place, add it and exit + { + LL_AddNode (list, add); + return 0; + } + } + } while (LL_Prev (list) == 0); - // If we're less than *everything*, put it at the beginning - LL_Unshift (list, add); + // If we're less than *everything*, put it at the beginning + LL_Unshift (list, add); - return 0; + return 0; } ////////////////////////////////////////////////////////////////////// int LL_SwapNodes (LL_node * one, LL_node * two) // Switch two nodes positions... { - LL_node *firstprev, *firstnext; - LL_node *secondprev, *secondnext; + LL_node *firstprev, *firstnext; + LL_node *secondprev, *secondnext; - if (!one || !two) - return -1; - if (one == two) - return 0; // Do nothing + if (!one || !two) + return -1; + if (one == two) + return 0; // Do nothing - firstprev = one->prev; // Look up the nodes neighbors... - firstnext = one->next; - secondprev = two->prev; - secondnext = two->next; + firstprev = one->prev; // Look up the nodes neighbors... + firstnext = one->next; + secondprev = two->prev; + secondnext = two->next; - if (firstprev != NULL) - firstprev->next = two; // Swap the neighboring - if (firstnext != NULL) - firstnext->prev = two; // nodes pointers... - if (secondprev != NULL) - secondprev->next = one; - if (secondprev != NULL) - secondnext->prev = one; + if (firstprev != NULL) + firstprev->next = two; // Swap the neighboring + if (firstnext != NULL) + firstnext->prev = two; // nodes pointers... + if (secondprev != NULL) + secondprev->next = one; + if (secondprev != NULL) + secondnext->prev = one; - one->next = secondnext; // Swap the nodes pointers - one->prev = secondprev; - two->next = firstnext; - two->prev = firstprev; + one->next = secondnext; // Swap the nodes pointers + one->prev = secondprev; + two->next = firstnext; + two->prev = firstprev; - if (firstnext == two) - one->prev = two; // Fix things in case - if (firstprev == two) - one->next = two; // they were next to - if (secondprev == one) - two->next = one; // each other... - if (secondnext == one) - two->prev = one; + if (firstnext == two) + one->prev = two; // Fix things in case + if (firstprev == two) + one->next = two; // they were next to + if (secondprev == one) + two->next = one; // each other... + if (secondnext == one) + two->prev = one; - return 0; + return 0; } @@ -691,25 +691,25 @@ LL_SwapNodes (LL_node * one, LL_node * two) // Switch two nodes positions... int LL_nSwapNodes (int one, int two) // Switch two nodes positions... { - return -1; + return -1; } ////////////////////////////////////////////////////////////////////// int -LL_Length (LL * list) // Returns # of nodes in entire list +LL_Length (LL * list) // Returns # of nodes in entire list { - LL_node *node; - int num = 0; + LL_node *node; + int num = 0; - if (!list) - return -1; + if (!list) + return -1; - node = &list->head; + node = &list->head; - for (num = -1; node != &list->tail; num++) - node = node->next; + for (num = -1; node != &list->tail; num++) + node = node->next; - return num; + return num; } ////////////////////////////////////////////////////////////////////// @@ -724,23 +724,23 @@ LL_Length (LL * list) // Returns # of nodes in entire list void * LL_Find (LL * list, int compare (void *, void *), void *value) { - void *data; + void *data; - if (!list) - return NULL; - if (!compare) - return NULL; - if (!value) - return NULL; + if (!list) + return NULL; + if (!compare) + return NULL; + if (!value) + return NULL; - do { - data = LL_Get (list); - if (0 == compare (data, value)) - return data; + do { + data = LL_Get (list); + if (0 == compare (data, value)) + return data; - } while (LL_Next (list) == 0); + } while (LL_Next (list) == 0); - return NULL; + return NULL; } ////////////////////////////////////////////////////////////////////// @@ -749,66 +749,66 @@ LL_Find (LL * list, int compare (void *, void *), void *value) int LL_Sort (LL * list, int compare (void *, void *)) { - int i, j; // Junk / loop variables - int numnodes; // number of nodes in list - LL_node *best, *last; // best match and last node in the list - LL_node *current; + int i, j; // Junk / loop variables + int numnodes; // number of nodes in list + LL_node *best, *last; // best match and last node in the list + LL_node *current; - if (!list) - return -1; - if (!compare) - return -1; + if (!list) + return -1; + if (!compare) + return -1; - numnodes = LL_Length (list); // get the number of nodes... - if (0 > LL_End (list)) - return -1; // Find the last node. - last = LL_GetNode (list); + numnodes = LL_Length (list); // get the number of nodes... + if (0 > LL_End (list)) + return -1; // Find the last node. + last = LL_GetNode (list); - if (numnodes < 2) - return 0; + if (numnodes < 2) + return 0; - for (i = numnodes - 1; i > 0; i--) { - LL_Rewind (list); // get the first node again - best = last; // reset our "best" node + for (i = numnodes - 1; i > 0; i--) { + LL_Rewind (list); // get the first node again + best = last; // reset our "best" node - for (j = 0; j < i; j++) { - current = LL_GetNode (list); - // If we found a better match... - if (compare (current->data, best->data) > 0) { - best = current; // keep track of the "best" match - } - LL_Next (list); // Go to the next node. - } + for (j = 0; j < i; j++) { + current = LL_GetNode (list); + // If we found a better match... + if (compare (current->data, best->data) > 0) { + best = current; // keep track of the "best" match + } + LL_Next (list); // Go to the next node. + } - LL_SwapNodes (last, best); // Switch two nodes... - if (best) - last = best->prev; - else - return -1; + LL_SwapNodes (last, best); // Switch two nodes... + if (best) + last = best->prev; + else + return -1; - //last = LL_FindPrev(best); // And go backwards by one node. - } + //last = LL_FindPrev(best); // And go backwards by one node. + } - //return LLFindFirst(current); // return pointer to the first node. - LL_Rewind (list); + //return LLFindFirst(current); // return pointer to the first node. + LL_Rewind (list); - return 0; + return 0; } void LL_dprint (LL * list) { - LL_node *current; + LL_node *current; - current = &list->head; + current = &list->head; - printf ("Head: prev:\t0x%8x\taddr:\t0x%8x\tnext:\t0x%8x\n", (int) list->head.prev, (int) &list->head, (int) list->head.next); + printf ("Head: prev:\t0x%8x\taddr:\t0x%8x\tnext:\t0x%8x\n", (int) list->head.prev, (int) &list->head, (int) list->head.next); - for (current = current->next; current != &list->tail; current = current->next) { - printf ("node: prev:\t0x%8x\taddr:\t0x%8x\tnext:\t0x%8x\n", (int) current->prev, (int) current, (int) current->next); + for (current = current->next; current != &list->tail; current = current->next) { + printf ("node: prev:\t0x%8x\taddr:\t0x%8x\tnext:\t0x%8x\n", (int) current->prev, (int) current, (int) current->next); - } + } - printf ("Tail: prev:\t0x%8x\taddr:\t0x%8x\tnext:\t0x%8x\n", (int) list->tail.prev, (int) &list->tail, (int) list->tail.next); + printf ("Tail: prev:\t0x%8x\taddr:\t0x%8x\tnext:\t0x%8x\n", (int) list->tail.prev, (int) &list->tail, (int) list->tail.next); } diff --git a/shared/LL.h b/shared/LL.h index 23f7caa..86c11be 100644 --- a/shared/LL.h +++ b/shared/LL.h @@ -116,13 +116,13 @@ // See LL.c for more detailed descriptions of these functions. typedef struct LL_node { - struct LL_node *next, *prev; - void *data; + struct LL_node *next, *prev; + void *data; } LL_node; typedef struct LL { - LL_node head, tail; - LL_node *current; + LL_node head, tail; + LL_node *current; } LL; // Creates a new list... @@ -149,10 +149,10 @@ int LL_Put (LL * list, void *data); LL_node *LL_GetNode (LL * list); int LL_PutNode (LL * list, LL_node * node); -void *LL_GetFirst (LL * list); // gets data from first node -void *LL_GetNext (LL * list); // ... next node -void *LL_GetPrev (LL * list); // ... prev node -void *LL_GetLast (LL * list); // ... last node +void *LL_GetFirst (LL * list); // gets data from first node +void *LL_GetNext (LL * list); // ... next node +void *LL_GetPrev (LL * list); // ... prev node +void *LL_GetLast (LL * list); // ... last node int LL_AddNode (LL * list, void *add); // Adds node AFTER current one int LL_InsertNode (LL * list, void *add); // Adds node BEFORE current one @@ -163,14 +163,14 @@ void *LL_Remove (LL * list, void *data); // Stack operations int LL_Push (LL * list, void *add); // Add node to end of list -void *LL_Pop (LL * list); // Remove node from end of list -void *LL_Top (LL * list); // Peek at end node -void *LL_Shift (LL * list); // Remove node from start of list -void *LL_Look (LL * list); // Peek at first node +void *LL_Pop (LL * list); // Remove node from end of list +void *LL_Top (LL * list); // Peek at end node +void *LL_Shift (LL * list); // Remove node from start of list +void *LL_Look (LL * list); // Peek at first node int LL_Unshift (LL * list, void *add); // Add node to beginning of list -int LL_Roll (LL * list); // Make first node last -int LL_UnRoll (LL * list); // Roll the other way... +int LL_Roll (LL * list); // Make first node last +int LL_UnRoll (LL * list); // Roll the other way... // Queue operations... //int LL_Enqueue(LL *list, void *add); @@ -186,7 +186,7 @@ int LL_PriorityEnqueue (LL * list, void *add, int compare (void *, void *)); int LL_SwapNodes (LL_node * one, LL_node * two); // Switch two nodes positions... int LL_nSwapNodes (int one, int two); // Switch two nodes positions... -int LL_Length (LL * list); // Returns # of nodes in entire list +int LL_Length (LL * list); // Returns # of nodes in entire list // Searching... void *LL_Find (LL * list, int compare (void *, void *), void *value); diff --git a/shared/debug.h b/shared/debug.h index fe0fa08..52611a2 100644 --- a/shared/debug.h +++ b/shared/debug.h @@ -7,7 +7,7 @@ #else -#define debug /* printf */ +#define debug /* printf */ #endif diff --git a/shared/sockets.c b/shared/sockets.c index b75c8cf..ef80db8 100644 --- a/shared/sockets.c +++ b/shared/sockets.c @@ -30,18 +30,18 @@ typedef struct sockaddr_in sockaddr_in; static int sock_init_sockaddr (sockaddr_in * name, const char *hostname, unsigned short int port) { - struct hostent *hostinfo; + struct hostent *hostinfo; - name->sin_family = AF_INET; - name->sin_port = htons (port); - hostinfo = gethostbyname (hostname); - if (hostinfo == NULL) { - fprintf (stderr, "sock_init_sockaddr: Unknown host %s.\n", hostname); - return -1; - } - name->sin_addr = *(struct in_addr *) hostinfo->h_addr; + name->sin_family = AF_INET; + name->sin_port = htons (port); + hostinfo = gethostbyname (hostname); + if (hostinfo == NULL) { + fprintf (stderr, "sock_init_sockaddr: Unknown host %s.\n", hostname); + return -1; + } + name->sin_addr = *(struct in_addr *) hostinfo->h_addr; - return 0; + return 0; } @@ -49,179 +49,179 @@ sock_init_sockaddr (sockaddr_in * name, const char *hostname, unsigned short int int sock_connect (char *host, unsigned short int port) { - struct sockaddr_in servername; - int sock; - int err = 0; + struct sockaddr_in servername; + int sock; + int err = 0; - debug ("sock_connect: Creating socket\n"); - sock = socket (PF_INET, SOCK_STREAM, 0); - if (sock < 0) { - perror ("sock_connect: Error creating socket"); - return sock; - } - debug ("sock_connect: Created socket (%i)\n", sock); + debug ("sock_connect: Creating socket\n"); + sock = socket (PF_INET, SOCK_STREAM, 0); + if (sock < 0) { + perror ("sock_connect: Error creating socket"); + return sock; + } + debug ("sock_connect: Created socket (%i)\n", sock); - sock_init_sockaddr (&servername, host, port); + sock_init_sockaddr (&servername, host, port); - err = connect (sock, (struct sockaddr *) &servername, sizeof (servername)); - if (err < 0) { - perror ("sock_connect: connect failed"); - shutdown (sock, 2); - return 0; // Normal exit if server doesn't exist... - } + err = connect (sock, (struct sockaddr *) &servername, sizeof (servername)); + if (err < 0) { + perror ("sock_connect: connect failed"); + shutdown (sock, 2); + return 0; // Normal exit if server doesn't exist... + } - fcntl (sock, F_SETFL, O_NONBLOCK); + fcntl (sock, F_SETFL, O_NONBLOCK); - return sock; + return sock; } int sock_close (int fd) { - int err; + int err; - err = shutdown (fd, 2); - if (!err) - close (fd); + err = shutdown (fd, 2); + if (!err) + close (fd); - return err; + return err; } // Send/receive lines of text int sock_send_string (int fd, char *string) { - int len; - int offset = 0; + int len; + int offset = 0; - if (!string) - return -1; + if (!string) + return -1; - len = strlen (string) + 1; - while (offset != len) { - // write isn't guaranteed to send the entire string at once, - // so we have to sent it in a loop like this - int sent = write (fd, string + offset, len - offset); - if (sent == -1) { - if (errno != EAGAIN) { - perror ("sock_send_string: socket write error"); - printf ("Message was: %s\n", string); - //shutdown(fd, 2); - return sent; - } - continue; - } else if (sent == 0) { - // when this returns zero, it generally means - // we got disconnected - return sent + offset; - } + len = strlen (string) + 1; + while (offset != len) { + // write isn't guaranteed to send the entire string at once, + // so we have to sent it in a loop like this + int sent = write (fd, string + offset, len - offset); + if (sent == -1) { + if (errno != EAGAIN) { + perror ("sock_send_string: socket write error"); + printf ("Message was: %s\n", string); + //shutdown(fd, 2); + return sent; + } + continue; + } else if (sent == 0) { + // when this returns zero, it generally means + // we got disconnected + return sent + offset; + } - offset += sent; - } + offset += sent; + } - return offset; + return offset; } // Recv gives only one line per call... int sock_recv_string (int fd, char *dest, size_t maxlen) { - char *ptr = dest; - int recv = 0; + char *ptr = dest; + int recv = 0; - if (!dest) - return -1; - if (maxlen <= 0) - return 0; + if (!dest) + return -1; + if (maxlen <= 0) + return 0; - while (1) { - int err = read (fd, ptr, 1); - if (err == -1) { - if (errno == EAGAIN) { - if (recv) { - // We've begun to read a string, but no bytes are - // available. Loop. - continue; - } - return 0; - } else { - perror ("sock_recv_string: socket read error"); - return err; - } - } else if (err == 0) { - return recv; - } + while (1) { + int err = read (fd, ptr, 1); + if (err == -1) { + if (errno == EAGAIN) { + if (recv) { + // We've begun to read a string, but no bytes are + // available. Loop. + continue; + } + return 0; + } else { + perror ("sock_recv_string: socket read error"); + return err; + } + } else if (err == 0) { + return recv; + } - recv++; + recv++; - if (recv == maxlen || *ptr == 0 || *ptr == 10) { - *ptr = 0; - break; - } - ptr++; - } + if (recv == maxlen || *ptr == 0 || *ptr == 10) { + *ptr = 0; + break; + } + ptr++; + } - if (recv == 1 && dest[0] == 0) { - // Don't return a null string - return 0; - } + if (recv == 1 && dest[0] == 0) { + // Don't return a null string + return 0; + } - if (recv < maxlen - 1) { - dest[recv] = 0; - } + if (recv < maxlen - 1) { + dest[recv] = 0; + } - return recv; + return recv; } // Send/receive raw data int sock_send (int fd, void *src, size_t size) { - int offset = 0; + int offset = 0; - if (!src) - return -1; + if (!src) + return -1; - while (offset != size) { - // write isn't guaranteed to send the entire string at once, - // so we have to sent it in a loop like this - int sent = write (fd, ((char *) src) + offset, size - offset); - if (sent == -1) { - if (errno != EAGAIN) { - perror ("sock_send: socket write error"); - //shutdown(fd, 2); - return sent; - } - continue; - } else if (sent == 0) { - // when this returns zero, it generally means - // we got disconnected - return sent + offset; - } + while (offset != size) { + // write isn't guaranteed to send the entire string at once, + // so we have to sent it in a loop like this + int sent = write (fd, ((char *) src) + offset, size - offset); + if (sent == -1) { + if (errno != EAGAIN) { + perror ("sock_send: socket write error"); + //shutdown(fd, 2); + return sent; + } + continue; + } else if (sent == 0) { + // when this returns zero, it generally means + // we got disconnected + return sent + offset; + } - offset += sent; - } + offset += sent; + } - return offset; + return offset; } int sock_recv (int fd, void *dest, size_t maxlen) { - int err; + int err; - if (!dest) - return -1; - if (maxlen <= 0) - return 0; + if (!dest) + return -1; + if (maxlen <= 0) + return 0; - err = read (fd, dest, maxlen); - if (err < 0) { - //fprintf (stderr,"sock_recv: socket read error\n"); - //shutdown(fd, 2); - return err; - } - //debug("sock_recv: Got message \"%s\"\n", (char *)dest); + err = read (fd, dest, maxlen); + if (err < 0) { + //fprintf (stderr,"sock_recv: socket read error\n"); + //shutdown(fd, 2); + return err; + } + //debug("sock_recv: Got message \"%s\"\n", (char *)dest); - return err; + return err; } diff --git a/shared/str.c b/shared/str.c index 78280a0..61a7da5 100644 --- a/shared/str.c +++ b/shared/str.c @@ -8,28 +8,28 @@ int get_args (char **argv, char *str, int max_args) { - char *delimiters = " \n\0"; - char *item; - int i = 0; + char *delimiters = " \n\0"; + char *item; + int i = 0; - if (!argv) - return -1; - if (!str) - return 0; - if (max_args < 1) - return 0; + if (!argv) + return -1; + if (!str) + return 0; + if (max_args < 1) + return 0; - //debug("get_args(%i): string=%s\n", max_args, str); + //debug("get_args(%i): string=%s\n", max_args, str); - // Parse the command line... - for (item = strtok (str, delimiters); item; item = strtok (NULL, delimiters)) { - //debug("get_args: item=%s\n", item); - if (i < max_args) { - argv[i] = item; - i++; - } else - return i; - } + // Parse the command line... + for (item = strtok (str, delimiters); item; item = strtok (NULL, delimiters)) { + //debug("get_args: item=%s\n", item); + if (i < max_args) { + argv[i] = item; + i++; + } else + return i; + } - return i; + return i; } diff --git a/tags b/tags index d3a3f2f..ae0d827 100644 --- a/tags +++ b/tags @@ -4,21 +4,21 @@ !_TAG_PROGRAM_NAME Exuberant Ctags // !_TAG_PROGRAM_URL http://darren.hiebert.com/ctags/ /official site/ !_TAG_PROGRAM_VERSION 3.2.4 /with C, C++, Eiffel, Fortran, and Java support/ -ACK ./server/drivers/hd44780-low.h 94;" d -BACKLIGHT_BLINK ./server/render.h 17;" d -BACKLIGHT_FLASH ./server/render.h 18;" d -BACKLIGHT_LOAD ./server/render.h 14;" d -BACKLIGHT_OFF ./clients/lcdproc/main.h 28;" d -BACKLIGHT_OFF ./server/render.h 11;" d -BACKLIGHT_ON ./clients/lcdproc/main.h 29;" d -BACKLIGHT_ON ./server/render.h 12;" d -BACKLIGHT_OPEN ./server/render.h 13;" d -BACKLIGHT_VIS ./server/render.h 15;" d +ACK ./server/drivers/hd44780-low.h 92;" d +BACKLIGHT_BLINK ./server/render.h 16;" d +BACKLIGHT_FLASH ./server/render.h 17;" d +BACKLIGHT_LOAD ./server/render.h 13;" d +BACKLIGHT_OFF ./clients/lcdproc/main.h 25;" d +BACKLIGHT_OFF ./server/render.h 10;" d +BACKLIGHT_ON ./clients/lcdproc/main.h 26;" d +BACKLIGHT_ON ./server/render.h 11;" d +BACKLIGHT_OPEN ./server/render.h 12;" d +BACKLIGHT_VIS ./server/render.h 14;" d BATT_H ./clients/lcdproc/batt.h 2;" d -BLINK_OFF ./clients/lcdproc/main.h 27;" d -BLINK_ON ./clients/lcdproc/main.h 26;" d -BUFSIZE ./server/render.c 42;" d file: -BUSY ./server/drivers/hd44780-low.h 95;" d +BLINK_OFF ./clients/lcdproc/main.h 24;" d +BLINK_ON ./clients/lcdproc/main.h 23;" d +BUFSIZE ./server/render.c 38;" d file: +BUSY ./server/drivers/hd44780-low.h 93;" d Backlight_Brightness_func ./server/menus.c /^Backlight_Brightness_func (int input)$/;" f Backlight_Off_Brightness_func ./server/menus.c /^Backlight_Off_Brightness_func (int input)$/;" f Backlight_Off_func ./server/menus.c /^Backlight_Off_func ()$/;" f @@ -26,7 +26,7 @@ Backlight_On_func ./server/menus.c /^Backlight_On_func ()$/;" f Backlight_Open_func ./server/menus.c /^Backlight_Open_func ()$/;" f Backlight_func ./server/menus.c /^Backlight_func (int input)$/;" f Backlight_menu ./server/menus.c /^menu_item Backlight_menu[] = {$/;" v -CFONTZ_DRV ./acconfig.h 20;" d +CFONTZ_DRV ./acconfig.h 19;" d CFONTZ_H ./server/drivers/CFontz.h 2;" d CFontz ./server/drivers/CFontz.c /^lcd_logical_driver *CFontz;$/;" v CFontz_autoscroll ./server/drivers/CFontz.c /^CFontz_autoscroll (int on)$/;" f file: @@ -49,69 +49,69 @@ CFontz_num ./server/drivers/CFontz.c /^CFontz_num (int x, int num)$/;" f CFontz_reboot ./server/drivers/CFontz.c /^CFontz_reboot ()$/;" f file: CFontz_set_char ./server/drivers/CFontz.c /^CFontz_set_char (int n, char *dat)$/;" f CFontz_vbar ./server/drivers/CFontz.c /^CFontz_vbar (int x, int len)$/;" f -CHAR ./server/drivers/hd44780-ext8bit.c 56;" d file: +CHAR ./server/drivers/hd44780-ext8bit.c 55;" d file: CHRONO_H ./clients/lcdproc/chrono.h 2;" d -CLEAR ./server/drivers/hd44780-low.h 39;" d +CLEAR ./server/drivers/hd44780-low.h 38;" d CLIENTS_H ./server/clients.h 2;" d -CLIENT_CHEK ./server/menu.h 117;" d +CLIENT_CHEK ./server/menu.h 114;" d CLIENT_DATA_H ./server/client_data.h 2;" d -CLIENT_FUNC ./server/menu.h 116;" d +CLIENT_FUNC ./server/menu.h 113;" d CLIENT_FUNCTION_H ./server/client_functions.h 2;" d -CLIENT_MENU ./server/menu.h 115;" d +CLIENT_MENU ./server/menu.h 112;" d CLIENT_MENU_H ./server/client_menu.h 2;" d -CLIENT_MOVE ./server/menu.h 119;" d -CLIENT_NAME_SIZE ./server/client_data.h 7;" d -CLIENT_SLID ./server/menu.h 118;" d -CONTINUE ./clients/lcdproc/main.h 31;" d -CPU_BUF_SIZE ./clients/lcdproc/cpu.c 278;" d file: -CPU_BUF_SIZE ./clients/lcdproc/cpu.c 279;" d file: -CPU_BUF_SIZE ./clients/lcdproc/cpu.c 73;" d file: -CPU_BUF_SIZE ./clients/lcdproc/cpu.c 74;" d file: -CPU_BUF_SIZE ./clients/lcdproc/cpu_smp.c 138;" d file: -CPU_BUF_SIZE ./clients/lcdproc/cpu_smp.c 139;" d file: +CLIENT_MOVE ./server/menu.h 116;" d +CLIENT_NAME_SIZE ./server/client_data.h 6;" d +CLIENT_SLID ./server/menu.h 115;" d +CONTINUE ./clients/lcdproc/main.h 28;" d +CPU_BUF_SIZE ./clients/lcdproc/cpu.c 268;" d file: +CPU_BUF_SIZE ./clients/lcdproc/cpu.c 269;" d file: +CPU_BUF_SIZE ./clients/lcdproc/cpu.c 69;" d file: +CPU_BUF_SIZE ./clients/lcdproc/cpu.c 70;" d file: +CPU_BUF_SIZE ./clients/lcdproc/cpu_smp.c 136;" d file: +CPU_BUF_SIZE ./clients/lcdproc/cpu_smp.c 137;" d file: CPU_H ./clients/lcdproc/cpu.h 2;" d CPU_SMP_H ./clients/lcdproc/cpu_smp.h 2;" d -CTRL ./server/drivers/hd44780-ext8bit.c 55;" d file: -CURSES_DRV ./acconfig.h 22;" d -CURSORBLINK ./server/drivers/hd44780-low.h 54;" d -CURSORNOBLINK ./server/drivers/hd44780-low.h 55;" d -CURSOROFF ./server/drivers/hd44780-low.h 53;" d -CURSORON ./server/drivers/hd44780-low.h 52;" d -CURSORSHIFT ./server/drivers/hd44780-low.h 57;" d +CTRL ./server/drivers/hd44780-ext8bit.c 54;" d file: +CURSES_DRV ./acconfig.h 21;" d +CURSORBLINK ./server/drivers/hd44780-low.h 53;" d +CURSORNOBLINK ./server/drivers/hd44780-low.h 54;" d +CURSOROFF ./server/drivers/hd44780-low.h 52;" d +CURSORON ./server/drivers/hd44780-low.h 51;" d +CURSORSHIFT ./server/drivers/hd44780-low.h 56;" d Close_func ./server/menus.c /^Close_func ()$/;" f ConnectionMapping ./server/drivers/hd44780-drivers.h /^static struct ConnectionMapping {$/;" s Contrast_func ./server/menus.c /^Contrast_func (int input)$/;" f -DEBUG ./acconfig.h 24;" d +DEBUG ./acconfig.h 23;" d DEBUG ./shared/LL.c 6;" d file: DEBUG_H ./shared/debug.h 2;" d DISK_H ./clients/lcdproc/disk.h 2;" d -DISPOFF ./server/drivers/hd44780-low.h 51;" d -DISPON ./server/drivers/hd44780-low.h 50;" d -EDGESCROLL ./server/drivers/hd44780-low.h 46;" d +DISPOFF ./server/drivers/hd44780-low.h 50;" d +DISPON ./server/drivers/hd44780-low.h 49;" d +EDGESCROLL ./server/drivers/hd44780-low.h 45;" d ELLIPSIS ./clients/lcdproc/mode.c /^int ELLIPSIS = '-';$/;" v ELLIPSIS ./server/drivers/curses_drv.c /^int ELLIPSIS = 7;$/;" v -EN1 ./server/drivers/hd44780-4bit.c 57;" d file: -EN1 ./server/drivers/hd44780-ext8bit.c 51;" d file: +EN1 ./server/drivers/hd44780-4bit.c 56;" d file: +EN1 ./server/drivers/hd44780-ext8bit.c 50;" d file: EN1 ./server/drivers/hd44780-serialLpt.c 43;" d file: EN1 ./server/drivers/hd44780-winamp.c 41;" d file: -EN2 ./server/drivers/hd44780-4bit.c 58;" d file: +EN2 ./server/drivers/hd44780-4bit.c 57;" d file: EN2 ./server/drivers/hd44780-serialLpt.c 44;" d file: EN2 ./server/drivers/hd44780-winamp.c 42;" d file: -EN3 ./server/drivers/hd44780-4bit.c 59;" d file: +EN3 ./server/drivers/hd44780-4bit.c 58;" d file: EN3 ./server/drivers/hd44780-winamp.c 43;" d file: -ENTRYMODE ./server/drivers/hd44780-low.h 43;" d -E_MOVELEFT ./server/drivers/hd44780-low.h 45;" d -E_MOVERIGHT ./server/drivers/hd44780-low.h 44;" d +ENTRYMODE ./server/drivers/hd44780-low.h 42;" d +E_MOVELEFT ./server/drivers/hd44780-low.h 44;" d +E_MOVERIGHT ./server/drivers/hd44780-low.h 43;" d EnMask ./server/drivers/hd44780-4bit.c /^static unsigned char EnMask[] = { EN1, EN2, EN3, STRB, LF, INIT, SEL };$/;" v file: EnMask ./server/drivers/hd44780-winamp.c /^static unsigned char EnMask[] = { EN1, EN2, EN3 };$/;" v file: EnMaskSize ./server/drivers/hd44780-4bit.c /^static int EnMaskSize = sizeof (EnMask) \/ sizeof (unsigned char);$/;" v file: EnMaskSize ./server/drivers/hd44780-winamp.c /^static int EnMaskSize = sizeof (EnMask) \/ sizeof (unsigned char);$/;" v file: ExpandGroovyFont ./server/drivers/svgalib_drv.c /^ExpandGroovyFont (int w, int ht, unsigned char col, const unsigned char *fnt, unsigned char *ptr)$/;" f -FAULT ./server/drivers/hd44780-low.h 90;" d -FUNCSET ./server/drivers/hd44780-low.h 63;" d +FAULT ./server/drivers/hd44780-low.h 88;" d +FUNCSET ./server/drivers/hd44780-low.h 62;" d HD44780 ./server/drivers/hd44780.c /^lcd_logical_driver *HD44780;$/;" v HD44780_DRIVERS_H ./server/drivers/hd44780-drivers.h 11;" d -HD44780_DRV ./acconfig.h 26;" d +HD44780_DRV ./acconfig.h 25;" d HD44780_H ./server/drivers/hd44780.h 16;" d HD44780_autoscroll ./server/drivers/hd44780.c /^HD44780_autoscroll (int on)$/;" f file: HD44780_backlight ./server/drivers/hd44780.c /^HD44780_backlight (int on)$/;" f @@ -119,7 +119,7 @@ HD44780_contrast ./server/drivers/hd44780.c /^HD44780_contrast (int contrast)$/; HD44780_draw_frame ./server/drivers/hd44780.c /^HD44780_draw_frame (char *dat)$/;" f HD44780_flush ./server/drivers/hd44780.c /^HD44780_flush ()$/;" f HD44780_flush_box ./server/drivers/hd44780.c /^HD44780_flush_box (int lft, int top, int rgt, int bot)$/;" f -HD44780_functions ./server/drivers/hd44780-low.h /^} HD44780_functions; \/* for want of a better name :-) *\/$/;" t +HD44780_functions ./server/drivers/hd44780-low.h /^} HD44780_functions; \/* for want of a better name :-) *\/$/;" t HD44780_hbar ./server/drivers/hd44780.c /^HD44780_hbar (int x, int y, int len)$/;" f HD44780_icon ./server/drivers/hd44780.c /^HD44780_icon (int which, char dest)$/;" f HD44780_init ./server/drivers/hd44780.c /^HD44780_init (lcd_logical_driver * driver, char *args)$/;" f @@ -140,29 +140,29 @@ HD_LOW_H ./server/drivers/hd44780-low.h 5;" d HD_SERIALLPT_H ./server/drivers/hd44780-serialLpt.h 2;" d HD_WINAMP_H ./server/drivers/hd44780-winamp.h 2;" d HD_serialLpt ./server/drivers/hd44780-drivers.h /^enum connectionType { HD_4bit, HD_8bit, HD_serialLpt, HD_winamp,$/;" e enum:connectionType -HD_unknown ./server/drivers/hd44780-drivers.h /^ HD_unknown$/;" e enum:connectionType +HD_unknown ./server/drivers/hd44780-drivers.h /^ HD_unknown$/;" e enum:connectionType HD_winamp ./server/drivers/hd44780-drivers.h /^enum connectionType { HD_4bit, HD_8bit, HD_serialLpt, HD_winamp,$/;" e enum:connectionType -HEART_OFF ./server/render.h 7;" d -HEART_ON ./server/render.h 8;" d -HEART_OPEN ./server/render.h 9;" d -HOLD_SCREEN ./clients/lcdproc/main.h 30;" d -HOMECURSOR ./server/drivers/hd44780-low.h 41;" d +HEART_OFF ./server/render.h 6;" d +HEART_ON ./server/render.h 7;" d +HEART_OPEN ./server/render.h 8;" d +HOLD_SCREEN ./clients/lcdproc/main.h 27;" d +HOMECURSOR ./server/drivers/hd44780-low.h 40;" d Heartbeat_func ./server/menus.c /^Heartbeat_func (int input)$/;" f HelpScreen ./clients/lcdproc/main.c /^HelpScreen ()$/;" f HelpScreen ./server/main.c /^HelpScreen ()$/;" f -IF_4BIT ./server/drivers/hd44780-low.h 65;" d +IF_4BIT ./server/drivers/hd44780-low.h 64;" d IF_4bit ./server/drivers/hd44780-low.h /^enum ifWidth { IF_4bit, IF_8bit };$/;" e enum:ifWidth -IF_8BIT ./server/drivers/hd44780-low.h 64;" d +IF_8BIT ./server/drivers/hd44780-low.h 63;" d IF_8bit ./server/drivers/hd44780-low.h /^enum ifWidth { IF_4bit, IF_8bit };$/;" e enum:ifWidth -INIT ./server/drivers/hd44780-low.h 82;" d -INMASK ./server/drivers/hd44780-low.h 97;" d +INIT ./server/drivers/hd44780-low.h 80;" d +INMASK ./server/drivers/hd44780-low.h 95;" d INPUT_H ./server/input.h 2;" d -IRMANIN_DRV ./acconfig.h 28;" d -JOY_DRV ./acconfig.h 30;" d -LARGECHAR ./server/drivers/hd44780-low.h 68;" d +IRMANIN_DRV ./acconfig.h 27;" d +JOY_DRV ./acconfig.h 29;" d +LARGECHAR ./server/drivers/hd44780-low.h 67;" d LCDCLOCK ./server/drivers/hd44780-serialLpt.c 42;" d file: LCDDATA ./server/drivers/hd44780-serialLpt.c 41;" d file: -LCDPORT ./acconfig.h 32;" d +LCDPORT ./acconfig.h 31;" d LCDPORT ./shared/sockets.h 11;" d LCD_CURSES_H ./server/drivers/curses_drv.h 2;" d LCD_DEBUG_H ./server/drivers/debug.h 2;" d @@ -171,52 +171,52 @@ LCD_H ./server/drivers/lcd.h 2;" d LCD_IRMANIN_H ./server/drivers/irmanin.h 2;" d LCD_JOY_H ./server/drivers/joy.h 2;" d LCD_LIRCIN_H ./server/drivers/lircin.h 2;" d -LCD_MAX_HEIGHT ./clients/lcdproc/main.h 35;" d +LCD_MAX_HEIGHT ./clients/lcdproc/main.h 31;" d LCD_MAX_HEIGHT ./server/drivers/lcd.h 8;" d LCD_MAX_HGT ./server/drivers/lcd.h 7;" d LCD_MAX_WID ./server/drivers/lcd.h 5;" d -LCD_MAX_WIDTH ./clients/lcdproc/main.h 34;" d +LCD_MAX_WIDTH ./clients/lcdproc/main.h 30;" d LCD_MAX_WIDTH ./server/drivers/lcd.h 6;" d LCD_SEM_H ./server/drivers/lcd_sem.h 6;" d LCD_SVGALIB_H ./server/drivers/svgalib_drv.h 2;" d LCD_TEXT_H ./server/drivers/text.h 2;" d -LF ./server/drivers/hd44780-low.h 81;" d -LINUX ./acconfig.h 34;" d -LIRCIN_DRV ./acconfig.h 18;" d +LF ./server/drivers/hd44780-low.h 79;" d +LINUX ./acconfig.h 33;" d +LIRCIN_DRV ./acconfig.h 17;" d LL ./shared/LL.h /^typedef struct LL {$/;" s LL ./shared/LL.h /^} LL;$/;" t LL_AddNode ./shared/LL.c /^LL_AddNode (LL * list, void *add) \/\/ Adds node AFTER current one$/;" f LL_DeleteNode ./shared/LL.c /^LL_DeleteNode (LL * list)$/;" f -LL_Dequeue ./shared/LL.h 187;" d +LL_Dequeue ./shared/LL.h 182;" d LL_Destroy ./shared/LL.c /^LL_Destroy (LL * list)$/;" f LL_End ./shared/LL.c /^LL_End (LL * list)$/;" f -LL_Enqueue ./shared/LL.h 185;" d +LL_Enqueue ./shared/LL.h 180;" d LL_Find ./shared/LL.c /^LL_Find (LL * list, int compare (void *, void *), void *value)$/;" f LL_Get ./shared/LL.c /^LL_Get (LL * list)$/;" f -LL_GetFirst ./shared/LL.c /^LL_GetFirst (LL * list) \/\/ gets data from first node$/;" f -LL_GetLast ./shared/LL.c /^LL_GetLast (LL * list) \/\/ ... last node$/;" f -LL_GetNext ./shared/LL.c /^LL_GetNext (LL * list) \/\/ ... next node$/;" f +LL_GetFirst ./shared/LL.c /^LL_GetFirst (LL * list) \/\/ gets data from first node$/;" f +LL_GetLast ./shared/LL.c /^LL_GetLast (LL * list) \/\/ ... last node$/;" f +LL_GetNext ./shared/LL.c /^LL_GetNext (LL * list) \/\/ ... next node$/;" f LL_GetNode ./shared/LL.c /^LL_GetNode (LL * list)$/;" f -LL_GetPrev ./shared/LL.c /^LL_GetPrev (LL * list) \/\/ ... prev node$/;" f +LL_GetPrev ./shared/LL.c /^LL_GetPrev (LL * list) \/\/ ... prev node$/;" f LL_H ./shared/LL.h 2;" d LL_InsertNode ./shared/LL.c /^LL_InsertNode (LL * list, void *add) \/\/ Adds node BEFORE current one$/;" f -LL_Length ./shared/LL.c /^LL_Length (LL * list) \/\/ Returns # of nodes in entire list$/;" f -LL_Look ./shared/LL.c /^LL_Look (LL * list) \/\/ Peek at first node$/;" f +LL_Length ./shared/LL.c /^LL_Length (LL * list) \/\/ Returns # of nodes in entire list$/;" f +LL_Look ./shared/LL.c /^LL_Look (LL * list) \/\/ Peek at first node$/;" f LL_Next ./shared/LL.c /^LL_Next (LL * list)$/;" f -LL_Pop ./shared/LL.c /^LL_Pop (LL * list) \/\/ Remove node from end of list$/;" f +LL_Pop ./shared/LL.c /^LL_Pop (LL * list) \/\/ Remove node from end of list$/;" f LL_Prev ./shared/LL.c /^LL_Prev (LL * list)$/;" f LL_PriorityEnqueue ./shared/LL.c /^LL_PriorityEnqueue (LL * list, void *add, int compare (void *, void *))$/;" f -LL_Push ./shared/LL.c /^LL_Push (LL * list, void *add) \/\/ Add node to end of list$/;" f +LL_Push ./shared/LL.c /^LL_Push (LL * list, void *add) \/\/ Add node to end of list$/;" f LL_Put ./shared/LL.c /^LL_Put (LL * list, void *data)$/;" f LL_PutNode ./shared/LL.c /^LL_PutNode (LL * list, LL_node * node)$/;" f LL_Remove ./shared/LL.c /^LL_Remove (LL * list, void *data)$/;" f LL_Rewind ./shared/LL.c /^LL_Rewind (LL * list)$/;" f -LL_Roll ./shared/LL.c /^LL_Roll (LL * list) \/\/ Make last node first$/;" f -LL_Shift ./shared/LL.c /^LL_Shift (LL * list) \/\/ Remove node from start of list$/;" f +LL_Roll ./shared/LL.c /^LL_Roll (LL * list) \/\/ Make last node first$/;" f +LL_Shift ./shared/LL.c /^LL_Shift (LL * list) \/\/ Remove node from start of list$/;" f LL_Sort ./shared/LL.c /^LL_Sort (LL * list, int compare (void *, void *))$/;" f LL_SwapNodes ./shared/LL.c /^LL_SwapNodes (LL_node * one, LL_node * two) \/\/ Switch two nodes positions...$/;" f -LL_Top ./shared/LL.c /^LL_Top (LL * list) \/\/ Peek at end node$/;" f -LL_UnRoll ./shared/LL.c /^LL_UnRoll (LL * list) \/\/ Roll the other way...$/;" f +LL_Top ./shared/LL.c /^LL_Top (LL * list) \/\/ Peek at end node$/;" f +LL_UnRoll ./shared/LL.c /^LL_UnRoll (LL * list) \/\/ Roll the other way...$/;" f LL_Unshift ./shared/LL.c /^LL_Unshift (LL * list, void *add) \/\/ Add node to beginning of list$/;" f LL_dprint ./shared/LL.c /^LL_dprint (LL * list)$/;" f LL_nSwapNodes ./shared/LL.c /^LL_nSwapNodes (int one, int two) \/\/ Switch two nodes positions...$/;" f @@ -227,38 +227,38 @@ LL_node_Destroy ./shared/LL.c /^LL_node_Destroy (LL_node * node)$/;" f LL_node_DestroyData ./shared/LL.c /^LL_node_DestroyData (LL_node * node)$/;" f LL_node_Unlink ./shared/LL.c /^LL_node_Unlink (LL_node * node)$/;" f LOAD_H ./clients/lcdproc/load.h 2;" d -LOAD_MAX ./acconfig.h 36;" d +LOAD_MAX ./acconfig.h 35;" d LOAD_MAX ./clients/lcdproc/load.h 5;" d -LOAD_MIN ./acconfig.h 38;" d +LOAD_MIN ./acconfig.h 37;" d LOAD_MIN ./clients/lcdproc/load.h 8;" d -LPTPORT ./server/drivers/hd44780.c 48;" d file: +LPTPORT ./server/drivers/hd44780.c 47;" d file: MAIN_H ./clients/lcdproc/main.h 2;" d MAIN_H ./server/main.h 2;" d -MAXMSG ./server/sock.c 32;" d file: -MAXMSG ./shared/sockets.c 28;" d file: +MAXMSG ./server/sock.c 31;" d file: +MAXMSG ./shared/sockets.c 26;" d file: MAX_CPUS ./clients/lcdproc/cpu_smp.c 59;" d file: -MAX_SEQUENCE ./clients/lcdproc/main.c 46;" d file: +MAX_SEQUENCE ./clients/lcdproc/main.c 43;" d file: MEM_H ./clients/lcdproc/mem.h 2;" d MENUS_H ./server/menus.h 2;" d -MENU_CHECK ./server/menu.h 123;" d -MENU_CLOSE ./server/menu.h 103;" d -MENU_ERROR ./server/menu.h 101;" d +MENU_CHECK ./server/menu.h 120;" d +MENU_CLOSE ./server/menu.h 100;" d +MENU_ERROR ./server/menu.h 98;" d MENU_H ./server/menu.h 2;" d -MENU_KILL ./server/menu.h 105;" d -MENU_MINUS ./server/menu.h 125;" d -MENU_OK ./server/menu.h 102;" d -MENU_PLUS ./server/menu.h 124;" d -MENU_QUIT ./server/menu.h 104;" d -MENU_READ ./server/menu.h 126;" d -MENU_SELECT ./server/menu.h 122;" d -METER_OFF ./server/drivers/hd44780-ext8bit.c 52;" d file: +MENU_KILL ./server/menu.h 102;" d +MENU_MINUS ./server/menu.h 122;" d +MENU_OK ./server/menu.h 99;" d +MENU_PLUS ./server/menu.h 121;" d +MENU_QUIT ./server/menu.h 101;" d +MENU_READ ./server/menu.h 123;" d +MENU_SELECT ./server/menu.h 119;" d +METER_OFF ./server/drivers/hd44780-ext8bit.c 51;" d file: MODE_H ./clients/lcdproc/mode.h 2;" d -MOVECURSOR ./server/drivers/hd44780-low.h 59;" d -MOVELEFT ./server/drivers/hd44780-low.h 61;" d -MOVERIGHT ./server/drivers/hd44780-low.h 60;" d -MTXORB_DRV ./acconfig.h 40;" d +MOVECURSOR ./server/drivers/hd44780-low.h 58;" d +MOVELEFT ./server/drivers/hd44780-low.h 60;" d +MOVERIGHT ./server/drivers/hd44780-low.h 59;" d +MTXORB_DRV ./acconfig.h 39;" d MTXORB_H ./server/drivers/MtxOrb.h 2;" d -Menu ./server/menu.h 136;" d +Menu ./server/menu.h 131;" d MtxOrb ./server/drivers/MtxOrb.c /^lcd_logical_driver *MtxOrb;$/;" v MtxOrb_ask_bar ./server/drivers/MtxOrb.c /^MtxOrb_ask_bar (int type)$/;" f MtxOrb_autoscroll ./server/drivers/MtxOrb.c /^MtxOrb_autoscroll (int on)$/;" f file: @@ -286,93 +286,93 @@ MtxOrb_output ./server/drivers/MtxOrb.c /^MtxOrb_output (int on)$/;" f MtxOrb_set_char ./server/drivers/MtxOrb.c /^MtxOrb_set_char (int n, char *dat)$/;" f MtxOrb_set_known_char ./server/drivers/MtxOrb.c /^MtxOrb_set_known_char (int car, int type)$/;" f MtxOrb_vbar ./server/drivers/MtxOrb.c /^MtxOrb_vbar (int x, int len)$/;" f -NAME_LENGTH ./server/drivers/irmanin.c 25;" d file: -NAME_LENGTH ./server/drivers/joy.c 20;" d file: -NAME_LENGTH ./server/drivers/lircin.c 24;" d file: -NOSCROLL ./server/drivers/hd44780-low.h 47;" d +NAME_LENGTH ./server/drivers/irmanin.c 23;" d file: +NAME_LENGTH ./server/drivers/joy.c 18;" d file: +NAME_LENGTH ./server/drivers/lircin.c 23;" d file: +NOSCROLL ./server/drivers/hd44780-low.h 46;" d OK_func ./server/menus.c /^OK_func ()$/;" f -ONELINE ./server/drivers/hd44780-low.h 67;" d -ONOFFCTRL ./server/drivers/hd44780-low.h 49;" d -OUTMASK ./server/drivers/hd44780-low.h 86;" d -PACKAGE ./acconfig.h 43;" d +ONELINE ./server/drivers/hd44780-low.h 66;" d +ONOFFCTRL ./server/drivers/hd44780-low.h 48;" d +OUTMASK ./server/drivers/hd44780-low.h 84;" d +PACKAGE ./acconfig.h 42;" d PAD ./server/drivers/curses_drv.c /^int PAD = 255;$/;" v PAD ./server/menu.c /^static int PAD = 255;$/;" v file: -PAPEREND ./server/drivers/hd44780-low.h 92;" d +PAPEREND ./server/drivers/hd44780-low.h 90;" d PARSE_H ./server/parse.h 2;" d PORT_H ./server/drivers/port.h 14;" d -POSITION ./server/drivers/hd44780-low.h 73;" d -PROTOCOL_VERSION ./acconfig.h 46;" d +POSITION ./server/drivers/hd44780-low.h 72;" d +PROTOCOL_VERSION ./acconfig.h 45;" d Quit ./clients/lcdproc/main.c /^int Quit = 0;$/;" v -RENDER_BACK ./server/screenlist.h 12;" d +RENDER_BACK ./server/screenlist.h 11;" d RENDER_H ./server/render.h 2;" d -RENDER_HOLD ./server/screenlist.h 10;" d -RENDER_SKIP ./server/screenlist.h 11;" d -RS ./server/drivers/hd44780-4bit.c 55;" d file: +RENDER_HOLD ./server/screenlist.h 9;" d +RENDER_SKIP ./server/screenlist.h 10;" d +RS ./server/drivers/hd44780-4bit.c 54;" d file: RS ./server/drivers/hd44780-serialLpt.c 40;" d file: RS ./server/drivers/hd44780-winamp.c 44;" d file: RS_DATA ./server/drivers/hd44780-low.h 35;" d RS_INSTR ./server/drivers/hd44780-low.h 36;" d -RW ./server/drivers/hd44780-4bit.c 56;" d file: +RW ./server/drivers/hd44780-4bit.c 55;" d file: Reboot_func ./server/menus.c /^Reboot_func ()$/;" f SCREENLIST_H ./server/screenlist.h 2;" d SCREEN_H ./server/screen.h 2;" d -SCROLLDISP ./server/drivers/hd44780-low.h 58;" d -SCR_BACK ./server/screenlist.h 9;" d -SCR_HOLD ./server/screenlist.h 7;" d -SCR_SKIP ./server/screenlist.h 8;" d -SEL ./server/drivers/hd44780-low.h 84;" d -SELIN ./server/drivers/hd44780-low.h 91;" d +SCROLLDISP ./server/drivers/hd44780-low.h 57;" d +SCR_BACK ./server/screenlist.h 8;" d +SCR_HOLD ./server/screenlist.h 6;" d +SCR_SKIP ./server/screenlist.h 7;" d +SEL ./server/drivers/hd44780-low.h 82;" d +SELIN ./server/drivers/hd44780-low.h 89;" d SEMAPHORE ./server/drivers/lcd_sem.c 33;" d file: SEMCOUNT ./server/drivers/lcd_sem.c 35;" d file: SEMKEY ./server/drivers/lcd_sem.c 34;" d file: SEM_SIGNAL ./server/drivers/lcd_sem.c 38;" d file: SEM_WAIT ./server/drivers/lcd_sem.c 39;" d file: -SETCHAR ./server/drivers/hd44780-low.h 71;" d -SETUPLCD ./server/drivers/hd44780-ext8bit.c 54;" d file: -SLI_DRV ./acconfig.h 48;" d +SETCHAR ./server/drivers/hd44780-low.h 70;" d +SETUPLCD ./server/drivers/hd44780-ext8bit.c 53;" d file: +SLI_DRV ./acconfig.h 47;" d SLI_H ./server/drivers/wirz-sli.h 8;" d -SMALLCHAR ./server/drivers/hd44780-low.h 69;" d +SMALLCHAR ./server/drivers/hd44780-low.h 68;" d SOCKETS_H ./server/sock.h 2;" d SOCKETS_H ./shared/sockets.h 2;" d SRVSTATS_H ./server/serverscreens.h 2;" d -STAT_NFS ./acconfig.h 50;" d -STAT_SMBFS ./acconfig.h 52;" d -STAT_STATFS2_BSIZE ./acconfig.h 55;" d -STAT_STATFS2_FSIZE ./acconfig.h 58;" d -STAT_STATFS2_FS_DATA ./acconfig.h 61;" d -STAT_STATFS3_OSF1 ./acconfig.h 64;" d -STAT_STATFS4 ./acconfig.h 67;" d -STAT_STATVFS ./acconfig.h 70;" d -STRB ./server/drivers/hd44780-low.h 79;" d +STAT_NFS ./acconfig.h 49;" d +STAT_SMBFS ./acconfig.h 51;" d +STAT_STATFS2_BSIZE ./acconfig.h 54;" d +STAT_STATFS2_FSIZE ./acconfig.h 57;" d +STAT_STATFS2_FS_DATA ./acconfig.h 60;" d +STAT_STATFS3_OSF1 ./acconfig.h 63;" d +STAT_STATFS4 ./acconfig.h 66;" d +STAT_STATVFS ./acconfig.h 69;" d +STRB ./server/drivers/hd44780-low.h 77;" d STR_H ./shared/str.h 2;" d SVGALIB_ELLIPSIS ./server/drivers/svgalib_drv.c /^int SVGALIB_ELLIPSIS = 7;$/;" v -SVGALIB_FONT_VER ./server/drivers/svgalib_drv.c 174;" d file: +SVGALIB_FONT_VER ./server/drivers/svgalib_drv.c 169;" d file: SVGALIB_PAD ./server/drivers/svgalib_drv.c /^int SVGALIB_PAD = 255;$/;" v -SVGALIB_Y_OFFSET ./server/drivers/svgalib_drv.c 175;" d file: +SVGALIB_Y_OFFSET ./server/drivers/svgalib_drv.c 170;" d file: SVGALIB_figure_mappings ./server/drivers/svgalib_drv.c /^int SVGALIB_figure_mappings = 0;$/;" v -SVGALIB_font ./server/drivers/svgalib_drv.c /^void *SVGALIB_font; \/* normal font *\/$/;" v -SVGALIB_highfont ./server/drivers/svgalib_drv.c /^void *SVGALIB_highfont; \/* highlighted font (not used yet) *\/$/;" v -SVGALIB_warnfont ./server/drivers/svgalib_drv.c /^void *SVGALIB_warnfont; \/* warning font (not used yet) *\/$/;" v +SVGALIB_font ./server/drivers/svgalib_drv.c /^void *SVGALIB_font; \/* normal font *\/$/;" v +SVGALIB_highfont ./server/drivers/svgalib_drv.c /^void *SVGALIB_highfont; \/* highlighted font (not used yet) *\/$/;" v +SVGALIB_warnfont ./server/drivers/svgalib_drv.c /^void *SVGALIB_warnfont; \/* warning font (not used yet) *\/$/;" v Server_screen_func ./server/menus.c /^Server_screen_func (int input)$/;" f Shutdown_func ./server/menus.c /^Shutdown_func ()$/;" f System_halt_func ./server/menus.c /^System_halt_func ()$/;" f -TEXT_DRV ./acconfig.h 72;" d -TIME_UNIT ./clients/lcdproc/main.c 48;" d file: +TEXT_DRV ./acconfig.h 71;" d +TIME_UNIT ./clients/lcdproc/main.c 45;" d file: TIME_UNIT ./server/main.h 20;" d -TWOLINE ./server/drivers/hd44780-low.h 66;" d -TYPE_CHEK ./server/menu.h 111;" d -TYPE_FUNC ./server/menu.h 110;" d -TYPE_MENU ./server/menu.h 109;" d -TYPE_MOVE ./server/menu.h 113;" d -TYPE_SLID ./server/menu.h 112;" d -TYPE_TITL ./server/menu.h 108;" d +TWOLINE ./server/drivers/hd44780-low.h 65;" d +TYPE_CHEK ./server/menu.h 108;" d +TYPE_FUNC ./server/menu.h 107;" d +TYPE_MENU ./server/menu.h 106;" d +TYPE_MOVE ./server/menu.h 110;" d +TYPE_SLID ./server/menu.h 109;" d +TYPE_TITL ./server/menu.h 105;" d Time24_func ./server/menus.c /^Time24_func (int input)$/;" f TwentyFourHour ./clients/lcdproc/chrono.c /^int TwentyFourHour = 1;$/;" v -VERSION ./acconfig.h 75;" d -VGAKEY_DOWN ./server/drivers/svgalib_drv.c 183;" d file: -VGAKEY_LEFT ./server/drivers/svgalib_drv.c 185;" d file: -VGAKEY_RIGHT ./server/drivers/svgalib_drv.c 184;" d file: -VGAKEY_UP ./server/drivers/svgalib_drv.c 182;" d file: +VERSION ./acconfig.h 74;" d +VGAKEY_DOWN ./server/drivers/svgalib_drv.c 177;" d file: +VGAKEY_LEFT ./server/drivers/svgalib_drv.c 179;" d file: +VGAKEY_RIGHT ./server/drivers/svgalib_drv.c 178;" d file: +VGAKEY_UP ./server/drivers/svgalib_drv.c 176;" d file: WIDGET_H ./server/widget.h 2;" d WID_FRAME ./server/widget.h 27;" d WID_HBAR ./server/widget.h 22;" d @@ -385,83 +385,83 @@ WID_STRING ./server/widget.h 21;" d WID_TITLE ./server/widget.h 25;" d WID_VBAR ./server/widget.h 23;" d WMODE ./server/drivers/lcd_sem.c 36;" d file: -__u32 ./server/drivers/irmanin.c 18;" d file: -__u32 ./server/drivers/joy.c 12;" d file: +__u32 ./server/drivers/irmanin.c 17;" d file: +__u32 ./server/drivers/joy.c 11;" d file: __u32 ./server/drivers/lircin.c 17;" d file: -__u8 ./server/drivers/irmanin.c 19;" d file: -__u8 ./server/drivers/joy.c 13;" d file: +__u8 ./server/drivers/irmanin.c 18;" d file: +__u8 ./server/drivers/joy.c 12;" d file: __u8 ./server/drivers/lircin.c 18;" d file: -ack ./server/client_data.h /^ int ack;$/;" m struct:client_data +ack ./server/client_data.h /^ int ack;$/;" m struct:client_data active_fd_set ./server/sock.c /^fd_set active_fd_set, read_fd_set;$/;" v addr ./server/drivers/lircin.c /^struct sockaddr_un addr;$/;" v args ./server/main.c /^static parameter args[] = {$/;" v file: -autoscroll ./server/drivers/hd44780-low.h /^ void (*autoscroll) (int on);$/;" m struct:hwDependentFns +autoscroll ./server/drivers/hd44780-low.h /^ void (*autoscroll) (int on);$/;" m struct:hwDependentFns axes ./server/drivers/joy.c /^char axes = 2;$/;" v axis ./server/drivers/joy.c /^int *axis;$/;" v axismap ./server/drivers/joy.c /^char *axismap = "EFGHIJKLMNOPQRST";$/;" v -backlight ./server/drivers/lcd.h /^ void (*backlight) (int on);$/;" m struct:lcd_logical_driver +backlight ./server/drivers/lcd.h /^ void (*backlight) (int on);$/;" m struct:lcd_logical_driver backlight ./server/render.c /^int backlight = BACKLIGHT_OPEN;$/;" v backlight_brightness ./server/render.c /^int backlight_brightness = 255;$/;" v backlight_func ./server/client_functions.c /^backlight_func (client * c, int argc, char **argv)$/;" f backlight_off_brightness ./server/render.c /^int backlight_off_brightness = 0;$/;" v backlight_state ./server/render.c /^int backlight_state = BACKLIGHT_OPEN;$/;" v bar_type ./server/drivers/MtxOrb.c /^} bar_type;$/;" t file: -barb ./server/drivers/MtxOrb.c /^ barb = 255$/;" e file: -bard1 ./server/drivers/MtxOrb.c /^ bard1 = 7,$/;" e file: -bard2 ./server/drivers/MtxOrb.c /^ bard2 = 8,$/;" e file: -bard3 ./server/drivers/MtxOrb.c /^ bard3 = 9,$/;" e file: -bard4 ./server/drivers/MtxOrb.c /^ bard4 = 10,$/;" e file: -bard5 ./server/drivers/MtxOrb.c /^ bard5 = 11,$/;" e file: -bard6 ./server/drivers/MtxOrb.c /^ bard6 = 12,$/;" e file: -bard7 ./server/drivers/MtxOrb.c /^ bard7 = 13,$/;" e file: -barl1 ./server/drivers/MtxOrb.c /^ barl1 = 18,$/;" e file: -barl2 ./server/drivers/MtxOrb.c /^ barl2 = 19,$/;" e file: -barl3 ./server/drivers/MtxOrb.c /^ barl3 = 20,$/;" e file: -barl4 ./server/drivers/MtxOrb.c /^ barl4 = 21,$/;" e file: -barr1 ./server/drivers/MtxOrb.c /^ barr1 = 14,$/;" e file: -barr2 ./server/drivers/MtxOrb.c /^ barr2 = 15,$/;" e file: -barr3 ./server/drivers/MtxOrb.c /^ barr3 = 16,$/;" e file: -barr4 ./server/drivers/MtxOrb.c /^ barr4 = 17,$/;" e file: -baru1 ./server/drivers/MtxOrb.c /^ baru1 = 0,$/;" e file: -baru2 ./server/drivers/MtxOrb.c /^ baru2 = 1,$/;" e file: -baru3 ./server/drivers/MtxOrb.c /^ baru3 = 2,$/;" e file: -baru4 ./server/drivers/MtxOrb.c /^ baru4 = 3,$/;" e file: -baru5 ./server/drivers/MtxOrb.c /^ baru5 = 4,$/;" e file: -baru6 ./server/drivers/MtxOrb.c /^ baru6 = 5,$/;" e file: -baru7 ./server/drivers/MtxOrb.c /^ baru7 = 6,$/;" e file: -barw ./server/drivers/MtxOrb.c /^ barw = 32,$/;" e file: +barb ./server/drivers/MtxOrb.c /^ barb = 255$/;" e file: +bard1 ./server/drivers/MtxOrb.c /^ bard1 = 7,$/;" e file: +bard2 ./server/drivers/MtxOrb.c /^ bard2 = 8,$/;" e file: +bard3 ./server/drivers/MtxOrb.c /^ bard3 = 9,$/;" e file: +bard4 ./server/drivers/MtxOrb.c /^ bard4 = 10,$/;" e file: +bard5 ./server/drivers/MtxOrb.c /^ bard5 = 11,$/;" e file: +bard6 ./server/drivers/MtxOrb.c /^ bard6 = 12,$/;" e file: +bard7 ./server/drivers/MtxOrb.c /^ bard7 = 13,$/;" e file: +barl1 ./server/drivers/MtxOrb.c /^ barl1 = 18,$/;" e file: +barl2 ./server/drivers/MtxOrb.c /^ barl2 = 19,$/;" e file: +barl3 ./server/drivers/MtxOrb.c /^ barl3 = 20,$/;" e file: +barl4 ./server/drivers/MtxOrb.c /^ barl4 = 21,$/;" e file: +barr1 ./server/drivers/MtxOrb.c /^ barr1 = 14,$/;" e file: +barr2 ./server/drivers/MtxOrb.c /^ barr2 = 15,$/;" e file: +barr3 ./server/drivers/MtxOrb.c /^ barr3 = 16,$/;" e file: +barr4 ./server/drivers/MtxOrb.c /^ barr4 = 17,$/;" e file: +baru1 ./server/drivers/MtxOrb.c /^ baru1 = 0,$/;" e file: +baru2 ./server/drivers/MtxOrb.c /^ baru2 = 1,$/;" e file: +baru3 ./server/drivers/MtxOrb.c /^ baru3 = 2,$/;" e file: +baru4 ./server/drivers/MtxOrb.c /^ baru4 = 3,$/;" e file: +baru5 ./server/drivers/MtxOrb.c /^ baru5 = 4,$/;" e file: +baru6 ./server/drivers/MtxOrb.c /^ baru6 = 5,$/;" e file: +baru7 ./server/drivers/MtxOrb.c /^ baru7 = 6,$/;" e file: +barw ./server/drivers/MtxOrb.c /^ barw = 32,$/;" e file: batt_close ./clients/lcdproc/batt.c /^batt_close ()$/;" f batt_fd ./clients/lcdproc/batt.c /^int batt_fd = 0;$/;" v batt_init ./clients/lcdproc/batt.c /^batt_init ()$/;" f battery_screen ./clients/lcdproc/batt.c /^battery_screen (int rep, int display)$/;" f -beat ./server/drivers/CFontz.c /^ beat = 8$/;" e file: -beat ./server/drivers/MtxOrb.c /^ beat = 8$/;" e file: -beat ./server/drivers/wirz-sli.c /^ beat = 8$/;" e file: -bfree ./clients/lcdproc/disk.c /^ long bsize, blocks, bfree, files, ffree;$/;" m struct:mounts +beat ./server/drivers/CFontz.c /^ beat = 8$/;" e file: +beat ./server/drivers/MtxOrb.c /^ beat = 8$/;" e file: +beat ./server/drivers/wirz-sli.c /^ beat = 8$/;" e file: +bfree ./clients/lcdproc/disk.c /^ long bsize, blocks, bfree, files, ffree;$/;" m struct:mounts big_clock_screen ./clients/lcdproc/chrono.c /^big_clock_screen (int rep, int display)$/;" f -bign ./server/drivers/CFontz.c /^ bign = 4,$/;" e file: -bign ./server/drivers/MtxOrb.c /^ bign = 4,$/;" e file: -bign ./server/drivers/wirz-sli.c /^ bign = 4,$/;" e file: -blocks ./clients/lcdproc/disk.c /^ long bsize, blocks, bfree, files, ffree;$/;" m struct:mounts -bottom ./server/widget.h /^ int left, top, right, bottom; \/\/ bounding rectangle$/;" m struct:widget -bsize ./clients/lcdproc/disk.c /^ long bsize, blocks, bfree, files, ffree;$/;" m struct:mounts +bign ./server/drivers/CFontz.c /^ bign = 4,$/;" e file: +bign ./server/drivers/MtxOrb.c /^ bign = 4,$/;" e file: +bign ./server/drivers/wirz-sli.c /^ bign = 4,$/;" e file: +blocks ./clients/lcdproc/disk.c /^ long bsize, blocks, bfree, files, ffree;$/;" m struct:mounts +bottom ./server/widget.h /^ int left, top, right, bottom; \/\/ bounding rectangle$/;" m struct:widget +bsize ./clients/lcdproc/disk.c /^ long bsize, blocks, bfree, files, ffree;$/;" m struct:mounts buf ./server/drivers/lircin.c /^char buf[256];$/;" v buffer ./clients/lcdproc/mode.c /^char buffer[1024];$/;" v -buffers ./clients/lcdproc/mem.c /^ int total, cache, buffers, free, shared;$/;" m struct:meminfo +buffers ./clients/lcdproc/mem.c /^ int total, cache, buffers, free, shared;$/;" m struct:meminfo build_date ./clients/lcdproc/main.c /^char *build_date = __DATE__;$/;" v build_date ./server/main.c /^char *build_date = __DATE__;$/;" v button ./server/drivers/joy.c /^int *button;$/;" v buttonmap ./server/drivers/joy.c /^char *buttonmap = "BDACEFGHIJKLMNOP";$/;" v buttons ./server/drivers/joy.c /^char buttons = 2;$/;" v -cache ./clients/lcdproc/mem.c /^ int total, cache, buffers, free, shared;$/;" m struct:meminfo -cellhgt ./server/drivers/lcd.h /^ int cellwid, cellhgt;$/;" m struct:lcd_logical_driver -cellwid ./server/drivers/lcd.h /^ int cellwid, cellhgt;$/;" m struct:lcd_logical_driver -child ./server/client_menu.h /^ char child[]; \/\/ For the "submenu" type$/;" m struct:client_menu_item -chr ./server/drivers/lcd.h /^ void (*chr) (int x, int y, char c);$/;" m struct:lcd_logical_driver +cache ./clients/lcdproc/mem.c /^ int total, cache, buffers, free, shared;$/;" m struct:meminfo +cellhgt ./server/drivers/lcd.h /^ int cellwid, cellhgt;$/;" m struct:lcd_logical_driver +cellwid ./server/drivers/lcd.h /^ int cellwid, cellhgt;$/;" m struct:lcd_logical_driver +child ./server/client_menu.h /^ char child[]; \/\/ For the "submenu" type$/;" m struct:client_menu_item +chr ./server/drivers/lcd.h /^ void (*chr) (int x, int y, char c);$/;" m struct:lcd_logical_driver chrono_close ./clients/lcdproc/chrono.c /^chrono_close ()$/;" f chrono_init ./clients/lcdproc/chrono.c /^chrono_init ()$/;" f clear ./server/drivers/MtxOrb.c /^static int clear = 1;$/;" v file: -clear ./server/drivers/lcd.h /^ void (*clear) ();$/;" m struct:lcd_logical_driver +clear ./server/drivers/lcd.h /^ void (*clear) ();$/;" m struct:lcd_logical_driver client ./server/clients.h /^typedef struct client {$/;" s client ./server/clients.h /^} client;$/;" t client_add_key_func ./server/client_functions.c /^client_add_key_func (client * c, int argc, char **argv)$/;" f @@ -487,7 +487,7 @@ client_set_func ./server/client_functions.c /^client_set_func (client * c, int a client_shutdown ./server/clients.c /^client_shutdown ()$/;" f clients ./server/clients.c /^LL *clients;$/;" v clock_screen ./clients/lcdproc/chrono.c /^clock_screen (int rep, int display)$/;" f -close ./server/drivers/lcd.h /^ void (*close) ();$/;" m struct:lcd_logical_driver +close ./server/drivers/lcd.h /^ void (*close) ();$/;" m struct:lcd_logical_driver codes ./server/drivers/irmanin.c /^char *codes[] = {$/;" v commands ./server/client_functions.c /^client_function commands[] = {$/;" v common_autoscroll ./server/drivers/hd44780.c /^common_autoscroll (int on)$/;" f @@ -500,8 +500,8 @@ connIdx ./server/drivers/hd44780.c /^static int connIdx = 0;$/;" v file: connection ./server/drivers/hd44780.c /^static enum connectionType connection = HD_4bit;$/;" v file: connectionMapping ./server/drivers/hd44780-drivers.h /^} connectionMapping[] = {$/;" v connectionType ./server/drivers/hd44780-drivers.h /^enum connectionType { HD_4bit, HD_8bit, HD_serialLpt, HD_winamp,$/;" g -connectionTypeStr ./server/drivers/hd44780-drivers.h /^ char *connectionTypeStr;$/;" m struct:ConnectionMapping -contrast ./server/drivers/lcd.h /^ int (*contrast) (int contrast);$/;" m struct:lcd_logical_driver +connectionTypeStr ./server/drivers/hd44780-drivers.h /^ char *connectionTypeStr;$/;" m struct:ConnectionMapping +contrast ./server/drivers/lcd.h /^ int (*contrast) (int contrast);$/;" m struct:lcd_logical_driver cpu_close ./clients/lcdproc/cpu.c /^cpu_close ()$/;" f cpu_graph_screen ./clients/lcdproc/cpu.c /^cpu_graph_screen (int rep, int display)$/;" f cpu_init ./clients/lcdproc/cpu.c /^cpu_init ()$/;" f @@ -510,7 +510,7 @@ cpu_smp_close ./clients/lcdproc/cpu_smp.c /^cpu_smp_close ()$/;" f cpu_smp_init ./clients/lcdproc/cpu_smp.c /^cpu_smp_init ()$/;" f cpu_smp_screen ./clients/lcdproc/cpu_smp.c /^cpu_smp_screen (int rep, int display)$/;" f credit_screen ./clients/lcdproc/mode.c /^credit_screen (int rep, int display)$/;" f -current ./shared/LL.h /^ LL_node *current;$/;" m struct:LL +current ./shared/LL.h /^ LL_node *current;$/;" m struct:LL curses_drv ./server/drivers/curses_drv.c /^lcd_logical_driver *curses_drv;$/;" v curses_drv_chr ./server/drivers/curses_drv.c /^curses_drv_chr (int x, int y, char c)$/;" f curses_drv_clear ./server/drivers/curses_drv.c /^curses_drv_clear ()$/;" f @@ -532,9 +532,9 @@ custom ./server/drivers/wirz-sli.c /^static int custom = 0;$/;" v file: custom_type ./server/drivers/CFontz.c /^} custom_type;$/;" t file: custom_type ./server/drivers/MtxOrb.c /^} custom_type;$/;" t file: custom_type ./server/drivers/wirz-sli.c /^} custom_type;$/;" t file: -data ./server/clients.h /^ client_data *data;$/;" m struct:client -data ./server/menu.h /^ void *data;$/;" m struct:menu_item -data ./shared/LL.h /^ void *data;$/;" m struct:LL_node +data ./server/clients.h /^ client_data *data;$/;" m struct:client +data ./server/menu.h /^ void *data;$/;" m struct:menu_item +data ./shared/LL.h /^ void *data;$/;" m struct:LL_node days ./clients/lcdproc/chrono.c /^static char *days[] = {$/;" v file: debug ./shared/debug.h 10;" d debug ./shared/debug.h 6;" d @@ -559,14 +559,14 @@ debug_string ./server/drivers/debug.c /^debug_string (int x, int y, char string[ debug_vbar ./server/drivers/debug.c /^debug_vbar (int x, int len)$/;" f def ./server/drivers/MtxOrb.c /^static int def[9] = { -1, -1, -1, -1, -1, -1, -1, -1, -1 };$/;" v file: default_sequence ./clients/lcdproc/main.c /^mode default_sequence[] = {$/;" v -dev ./clients/lcdproc/disk.c /^ char dev[256], type[64], mpoint[256];$/;" m struct:mounts +dev ./clients/lcdproc/disk.c /^ char dev[256], type[64], mpoint[256];$/;" m struct:mounts disk_close ./clients/lcdproc/disk.c /^disk_close ()$/;" f disk_init ./clients/lcdproc/disk.c /^disk_init ()$/;" f disk_screen ./clients/lcdproc/disk.c /^disk_screen (int rep, int display)$/;" f dispSizes ./server/drivers/hd44780.c /^static int *dispSizes = NULL;$/;" v file: dispVOffset ./server/drivers/hd44780.c /^static int *dispVOffset = NULL;$/;" v file: do_menu ./server/menu.c /^do_menu (Menu menu)$/;" f -draw_frame ./server/drivers/lcd.h /^ void (*draw_frame) ();$/;" m struct:lcd_logical_driver +draw_frame ./server/drivers/lcd.h /^ void (*draw_frame) ();$/;" m struct:lcd_logical_driver draw_frame ./server/render.c /^draw_frame (LL * list, char fscroll, int left, int top, int right, int bottom, int fwid, int fhgt, int fspeed, int timer)$/;" f file: draw_heartbeat ./server/menu.c /^draw_heartbeat ()$/;" f file: draw_menu ./server/menu.c /^draw_menu (Menu menu, menu_info * info)$/;" f file: @@ -592,25 +592,25 @@ drv_base_num ./server/drivers/drv_base.c /^drv_base_num (int x, int num)$/;" f drv_base_set_char ./server/drivers/drv_base.c /^drv_base_set_char (int n, char *dat)$/;" f drv_base_string ./server/drivers/drv_base.c /^drv_base_string (int x, int y, char string[])$/;" f drv_base_vbar ./server/drivers/drv_base.c /^drv_base_vbar (int x, int len)$/;" f -duration ./server/screen.h /^ int duration;$/;" m struct:screen +duration ./server/screen.h /^ int duration;$/;" m struct:screen exit_program ./clients/lcdproc/main.c /^exit_program (int val)$/;" f exit_program ./server/main.c /^exit_program (int val)$/;" f -extIF ./server/drivers/hd44780-4bit.c /^static int extIF = 0; \/\/ non-zero if extended interface$/;" v file: -extIF ./server/drivers/hd44780-winamp.c /^static int extIF = 0; \/\/ non-zero if extended interface$/;" v file: +extIF ./server/drivers/hd44780-4bit.c /^static int extIF = 0; \/\/ non-zero if extended interface$/;" v file: +extIF ./server/drivers/hd44780-winamp.c /^static int extIF = 0; \/\/ non-zero if extended interface$/;" v file: fd ./server/drivers/CFontz.c /^static int fd;$/;" v file: fd ./server/drivers/MtxOrb.c /^static int fd;$/;" v file: fd ./server/drivers/joy.c /^int fd;$/;" v fd ./server/drivers/lircin.c /^int fd;$/;" v fd ./server/drivers/wirz-sli.c /^static int fd;$/;" v file: -ffree ./clients/lcdproc/disk.c /^ long bsize, blocks, bfree, files, ffree;$/;" m struct:mounts -files ./clients/lcdproc/disk.c /^ long bsize, blocks, bfree, files, ffree;$/;" m struct:mounts +ffree ./clients/lcdproc/disk.c /^ long bsize, blocks, bfree, files, ffree;$/;" m struct:mounts +files ./clients/lcdproc/disk.c /^ long bsize, blocks, bfree, files, ffree;$/;" m struct:mounts fill_menu_info ./server/menu.c /^fill_menu_info (Menu menu, menu_info * info)$/;" f file: -flush ./server/drivers/lcd.h /^ void (*flush) ();$/;" m struct:lcd_logical_driver -flush_box ./server/drivers/lcd.h /^ void (*flush_box) (int lft, int top, int rgt, int bot);$/;" m struct:lcd_logical_driver -framebuf ./server/drivers/lcd.h /^ char *framebuf;$/;" m struct:lcd_logical_driver +flush ./server/drivers/lcd.h /^ void (*flush) ();$/;" m struct:lcd_logical_driver +flush_box ./server/drivers/lcd.h /^ void (*flush_box) (int lft, int top, int rgt, int bot);$/;" m struct:lcd_logical_driver +framebuf ./server/drivers/lcd.h /^ char *framebuf;$/;" m struct:lcd_logical_driver framedelay ./server/menu.c /^framedelay ()$/;" f -free ./clients/lcdproc/mem.c /^ int total, cache, buffers, free, shared;$/;" m struct:meminfo -function ./server/client_functions.h /^ int (*function) (client * c, int argc, char **argv);$/;" m struct:client_function +free ./clients/lcdproc/mem.c /^ int total, cache, buffers, free, shared;$/;" m struct:meminfo +function ./server/client_functions.h /^ int (*function) (client * c, int argc, char **argv);$/;" m struct:client_function get_args ./shared/str.c /^get_args (char **argv, char *str, int max_args)$/;" f get_batt_stat ./clients/lcdproc/batt.c /^get_batt_stat (int *acstat, int *battstat, int *battflag, int *percent)$/;" f file: get_fs ./clients/lcdproc/disk.c /^get_fs (mounts fs[])$/;" f file: @@ -620,54 +620,54 @@ get_loadavg ./clients/lcdproc/load.c /^get_loadavg (void)$/;" f file: get_mem_info ./clients/lcdproc/mem.c /^get_mem_info (struct meminfo *result)$/;" f file: get_uptime ./clients/lcdproc/chrono.c /^get_uptime (double *up, double *idle)$/;" f file: getentry ./clients/lcdproc/mode.c /^getentry (const char *tag, const char *bufptr)$/;" f -getkey ./server/drivers/lcd.h /^ char (*getkey) ();$/;" m struct:lcd_logical_driver +getkey ./server/drivers/lcd.h /^ char (*getkey) ();$/;" m struct:lcd_logical_driver getkey ./server/drivers/lcd_sem.c /^getkey (register char *p)$/;" f file: goodbye_screen ./server/serverscreens.c /^goodbye_screen ()$/;" f handle_input ./server/input.c /^handle_input ()$/;" f -hbar ./server/drivers/CFontz.c /^ hbar = 1,$/;" e file: -hbar ./server/drivers/MtxOrb.c /^ hbar = 1,$/;" e file: -hbar ./server/drivers/lcd.h /^ void (*hbar) (int x, int y, int len);$/;" m struct:lcd_logical_driver -hbar ./server/drivers/wirz-sli.c /^ hbar = 1,$/;" e file: +hbar ./server/drivers/CFontz.c /^ hbar = 1,$/;" e file: +hbar ./server/drivers/MtxOrb.c /^ hbar = 1,$/;" e file: +hbar ./server/drivers/lcd.h /^ void (*hbar) (int x, int y, int len);$/;" m struct:lcd_logical_driver +hbar ./server/drivers/wirz-sli.c /^ hbar = 1,$/;" e file: hd44780_functions ./server/drivers/hd44780.c /^HD44780_functions *hd44780_functions;$/;" v hd_init_4bit ./server/drivers/hd44780-4bit.c /^hd_init_4bit (HD44780_functions * hd44780_functions, lcd_logical_driver * driver, char *args, unsigned int port)$/;" f hd_init_ext8bit ./server/drivers/hd44780-ext8bit.c /^hd_init_ext8bit (HD44780_functions * hd44780_functions, lcd_logical_driver * driver, char *args, unsigned int port)$/;" f hd_init_serialLpt ./server/drivers/hd44780-serialLpt.c /^hd_init_serialLpt (HD44780_functions * hd44780_functions, lcd_logical_driver * driver, char *args, unsigned int port)$/;" f hd_init_winamp ./server/drivers/hd44780-winamp.c /^hd_init_winamp (HD44780_functions * hd44780_functions, lcd_logical_driver * driver, char *args, unsigned int port)$/;" f -head ./shared/LL.h /^ LL_node head, tail;$/;" m struct:LL +head ./shared/LL.h /^ LL_node head, tail;$/;" m struct:LL heartbeat ./server/render.c /^int heartbeat = HEART_OPEN;$/;" v -heartbeat ./server/screen.h /^ int heartbeat;$/;" m struct:screen +heartbeat ./server/screen.h /^ int heartbeat;$/;" m struct:screen hello_func ./server/client_functions.c /^hello_func (client * c, int argc, char **argv)$/;" f -helpMsg ./server/drivers/hd44780-drivers.h /^ const char *helpMsg;$/;" m struct:ConnectionMapping -hgt ./server/drivers/lcd.h /^ int wid, hgt;$/;" m struct:lcd_logical_driver -hgt ./server/main.h /^ int wid, hgt;$/;" m struct:screen_size -hgt ./server/screen.h /^ int wid, hgt;$/;" m struct:screen -hgt ./server/widget.h /^ int wid, hgt; \/\/ Size$/;" m struct:widget +helpMsg ./server/drivers/hd44780-drivers.h /^ const char *helpMsg;$/;" m struct:ConnectionMapping +hgt ./server/drivers/lcd.h /^ int wid, hgt;$/;" m struct:lcd_logical_driver +hgt ./server/main.h /^ int wid, hgt;$/;" m struct:screen_size +hgt ./server/screen.h /^ int wid, hgt;$/;" m struct:screen +hgt ./server/widget.h /^ int wid, hgt; \/\/ Size$/;" m struct:widget host ./clients/lcdproc/mode.c /^char host[16];$/;" v -huge ./clients/lcdproc/disk.c 143;" d file: -huge ./clients/lcdproc/disk.c 255;" d file: +huge ./clients/lcdproc/disk.c 138;" d file: +huge ./clients/lcdproc/disk.c 243;" d file: hwDependentFns ./server/drivers/hd44780-low.h /^typedef struct hwDependentFns {$/;" s -icon ./server/drivers/lcd.h /^ void (*icon) (int which, char dest);$/;" m struct:lcd_logical_driver +icon ./server/drivers/lcd.h /^ void (*icon) (int which, char dest);$/;" m struct:lcd_logical_driver icon_char ./server/drivers/curses_drv.c /^static char icon_char = '@';$/;" v file: icon_char ./server/drivers/svgalib_drv.c /^static char icon_char = '@';$/;" v file: -id ./server/client_menu.h /^ char id[];$/;" m struct:client_menu -id ./server/client_menu.h /^ char id[];$/;" m struct:client_menu_item -id ./server/screen.h /^ char *id;$/;" m struct:screen +id ./server/client_menu.h /^ char id[];$/;" m struct:client_menu +id ./server/client_menu.h /^ char id[];$/;" m struct:client_menu_item +id ./server/screen.h /^ char *id;$/;" m struct:screen id ./server/serverscreens.c /^char *id = "ClientList";$/;" v -id ./server/widget.h /^ char *id;$/;" m struct:widget -idle ./clients/lcdproc/cpu.c /^ unsigned long total, user, system, nice, idle;$/;" m struct:load -idle ./clients/lcdproc/cpu_smp.c /^ unsigned long total, user, system, nice, idle;$/;" m struct:load +id ./server/widget.h /^ char *id;$/;" m struct:widget +idle ./clients/lcdproc/cpu.c /^ unsigned long total, user, system, nice, idle;$/;" m struct:load +idle ./clients/lcdproc/cpu_smp.c /^ unsigned long total, user, system, nice, idle;$/;" m struct:load ifWidth ./server/drivers/hd44780-low.h /^enum ifWidth { IF_4bit, IF_8bit };$/;" g -init ./server/drivers/lcd.h /^ int (*init) (struct lcd_logical_driver * driver, char *args);$/;" m struct:lcd_logical_driver -init ./server/drivers/lcd.h /^ int (*init) (struct lcd_logical_driver * driver, char *device);$/;" m struct:lcd_physical_driver -init_fn ./server/drivers/hd44780-drivers.h /^ int (*init_fn) (HD44780_functions * hd44780_functions, lcd_logical_driver * driver, char *args, unsigned int port);$/;" m struct:ConnectionMapping -init_hbar ./server/drivers/lcd.h /^ void (*init_hbar) ();$/;" m struct:lcd_logical_driver -init_num ./server/drivers/lcd.h /^ void (*init_num) ();$/;" m struct:lcd_logical_driver -init_vbar ./server/drivers/lcd.h /^ void (*init_vbar) ();$/;" m struct:lcd_logical_driver +init ./server/drivers/lcd.h /^ int (*init) (struct lcd_logical_driver * driver, char *args);$/;" m struct:lcd_logical_driver +init ./server/drivers/lcd.h /^ int (*init) (struct lcd_logical_driver * driver, char *device);$/;" m struct:lcd_physical_driver +init_fn ./server/drivers/hd44780-drivers.h /^ int (*init_fn) (HD44780_functions * hd44780_functions, lcd_logical_driver * driver, char *args, unsigned int port);$/;" m struct:ConnectionMapping +init_hbar ./server/drivers/lcd.h /^ void (*init_hbar) ();$/;" m struct:lcd_logical_driver +init_num ./server/drivers/lcd.h /^ void (*init_num) ();$/;" m struct:lcd_logical_driver +init_vbar ./server/drivers/lcd.h /^ void (*init_vbar) ();$/;" m struct:lcd_logical_driver irmanin ./server/drivers/irmanin.c /^lcd_logical_driver *irmanin;$/;" v irmanin_close ./server/drivers/irmanin.c /^irmanin_close ()$/;" f irmanin_getkey ./server/drivers/irmanin.c /^irmanin_getkey ()$/;" f irmanin_init ./server/drivers/irmanin.c /^irmanin_init (struct lcd_logical_driver *driver, char *args)$/;" f -items ./server/client_menu.h /^ LL *items;$/;" m struct:client_menu +items ./server/client_menu.h /^ LL *items;$/;" m struct:client_menu joy ./server/drivers/joy.c /^lcd_logical_driver *joy;$/;" v joy_close ./server/drivers/joy.c /^joy_close ()$/;" f joy_getkey ./server/drivers/joy.c /^joy_getkey ()$/;" f @@ -675,8 +675,8 @@ joy_init ./server/drivers/joy.c /^joy_init (struct lcd_logical_driver *driver, c js ./server/drivers/joy.c /^struct js_event js;$/;" v jsname ./server/drivers/joy.c /^char jsname[NAME_LENGTH] = "Unknown";$/;" v jsversion ./server/drivers/joy.c /^int jsversion = 0x000800;$/;" v -keyword ./server/client_functions.h /^ char *keyword;$/;" m struct:client_function -kids ./server/widget.h /^ LL *kids; \/\/ Frames can contain more widgets...$/;" m struct:widget +keyword ./server/client_functions.h /^ char *keyword;$/;" m struct:client_function +kids ./server/widget.h /^ LL *kids; \/\/ Frames can contain more widgets...$/;" m struct:widget kver ./clients/lcdproc/chrono.c /^static char kver[SYS_NMLN];$/;" v file: lastframe ./server/drivers/wirz-sli.c /^static char lastframe[32];$/;" v file: lastkey ./server/drivers/hd44780-serialLpt.c /^static char lastkey = 0;$/;" v file: @@ -717,10 +717,10 @@ lcdserLpt_HD44780_senddata ./server/drivers/hd44780-serialLpt.c /^lcdserLpt_HD44 lcdstat_HD44780_senddata ./server/drivers/hd44780-4bit.c /^lcdstat_HD44780_senddata (unsigned char displayID, unsigned char iflags, unsigned char ch)$/;" f lcdtime_HD44780_senddata ./server/drivers/hd44780-ext8bit.c /^lcdtime_HD44780_senddata (unsigned char displayID, unsigned char flags, unsigned char ch)$/;" f lcdwinamp_HD44780_senddata ./server/drivers/hd44780-winamp.c /^lcdwinamp_HD44780_senddata (unsigned char displayID, unsigned char flags, unsigned char ch)$/;" f -left ./server/widget.h /^ int left, top, right, bottom; \/\/ bounding rectangle$/;" m struct:widget -length ./server/menu.c /^ int length;$/;" m struct:menu_info -length ./server/widget.h /^ int length; \/\/ size or direction$/;" m struct:widget -lg ./server/main.h /^ char *sh, *lg; \/\/ short and long versions$/;" m struct:parameter +left ./server/widget.h /^ int left, top, right, bottom; \/\/ bounding rectangle$/;" m struct:widget +length ./server/menu.c /^ int length;$/;" m struct:menu_info +length ./server/widget.h /^ int length; \/\/ size or direction$/;" m struct:widget +lg ./server/main.h /^ char *sh, *lg; \/\/ short and long versions$/;" m struct:parameter lircin ./server/drivers/lircin.c /^lcd_logical_driver *lircin;$/;" v lircin_close ./server/drivers/lircin.c /^lircin_close ()$/;" f lircin_getkey ./server/drivers/lircin.c /^lircin_getkey ()$/;" f @@ -758,8 +758,8 @@ menu_item_add_func ./server/client_functions.c /^menu_item_add_func (client * c, menu_item_del_func ./server/client_functions.c /^menu_item_del_func (client * c, int argc, char **argv)$/;" f menu_item_set_func ./server/client_functions.c /^menu_item_set_func (client * c, int argc, char **argv)$/;" f menu_set_func ./server/client_functions.c /^menu_set_func (client * c, int argc, char **argv)$/;" f -menulist ./server/client_data.h /^ LL *menulist;$/;" m struct:client_data -messages ./server/clients.h /^ LL *messages;$/;" m struct:client +menulist ./server/client_data.h /^ LL *menulist;$/;" m struct:client_data +messages ./server/clients.h /^ LL *messages;$/;" m struct:client mode ./clients/lcdproc/main.h /^typedef struct mode {$/;" s mode ./clients/lcdproc/main.h /^} mode;$/;" t mode_close ./clients/lcdproc/mode.c /^mode_close ()$/;" f @@ -767,49 +767,49 @@ mode_init ./clients/lcdproc/mode.c /^mode_init (mode * sequence)$/;" f months ./clients/lcdproc/chrono.c /^static char *months[] = {$/;" v file: mounts ./clients/lcdproc/disk.c /^typedef struct mounts {$/;" s file: mounts ./clients/lcdproc/disk.c /^} mounts;$/;" t file: -mpoint ./clients/lcdproc/disk.c /^ char dev[256], type[64], mpoint[256];$/;" m struct:mounts +mpoint ./clients/lcdproc/disk.c /^ char dev[256], type[64], mpoint[256];$/;" m struct:mounts mtab_fd ./clients/lcdproc/disk.c /^FILE *mtab_fd;$/;" v -nACK ./server/drivers/hd44780-low.h 93;" d -nFAULT ./server/drivers/hd44780-low.h 89;" d -nLF ./server/drivers/hd44780-low.h 80;" d -nRS ./server/drivers/hd44780-ext8bit.c 49;" d file: -nRW ./server/drivers/hd44780-ext8bit.c 50;" d file: -nSEL ./server/drivers/hd44780-low.h 83;" d -nSTRB ./server/drivers/hd44780-low.h 78;" d -name ./clients/lcdproc/mem.c /^ char name[16]; \/\/ Is this really long enough?$/;" m struct:proc_mem_info -name ./server/client_data.h /^ char *name;$/;" m struct:client_data -name ./server/drivers/lcd.h /^ char *name;$/;" m struct:lcd_physical_driver -name ./server/screen.h /^ char *name;$/;" m struct:screen +nACK ./server/drivers/hd44780-low.h 91;" d +nFAULT ./server/drivers/hd44780-low.h 87;" d +nLF ./server/drivers/hd44780-low.h 78;" d +nRS ./server/drivers/hd44780-ext8bit.c 48;" d file: +nRW ./server/drivers/hd44780-ext8bit.c 49;" d file: +nSEL ./server/drivers/hd44780-low.h 81;" d +nSTRB ./server/drivers/hd44780-low.h 76;" d +name ./clients/lcdproc/mem.c /^ char name[16]; \/\/ Is this really long enough?$/;" m struct:proc_mem_info +name ./server/client_data.h /^ char *name;$/;" m struct:client_data +name ./server/drivers/lcd.h /^ char *name;$/;" m struct:lcd_physical_driver +name ./server/screen.h /^ char *name;$/;" m struct:screen name ./server/serverscreens.c /^char *name = "Client List";$/;" v -next ./shared/LL.h /^ struct LL_node *next, *prev;$/;" m struct:LL_node -nice ./clients/lcdproc/cpu.c /^ unsigned long total, user, system, nice, idle;$/;" m struct:load -nice ./clients/lcdproc/cpu_smp.c /^ unsigned long total, user, system, nice, idle;$/;" m struct:load +next ./shared/LL.h /^ struct LL_node *next, *prev;$/;" m struct:LL_node +nice ./clients/lcdproc/cpu.c /^ unsigned long total, user, system, nice, idle;$/;" m struct:load +nice ./clients/lcdproc/cpu_smp.c /^ unsigned long total, user, system, nice, idle;$/;" m struct:load no_screen_screen ./server/serverscreens.c /^no_screen_screen (int timer)$/;" f -num ./server/drivers/lcd.h /^ void (*num) (int x, int num);$/;" m struct:lcd_logical_driver +num ./server/drivers/lcd.h /^ void (*num) (int x, int num);$/;" m struct:lcd_logical_driver numDisplays ./server/drivers/hd44780.c /^static int numDisplays = 0;$/;" v file: numLines ./server/drivers/hd44780.c /^static int numLines = 0;$/;" v file: -number ./clients/lcdproc/mem.c /^ int number;$/;" m struct:proc_mem_info +number ./clients/lcdproc/mem.c /^ int number;$/;" m struct:proc_mem_info numnames ./clients/lcdproc/cpu_smp.c /^static char *numnames[MAX_CPUS] = { "one", "two", "three", "four", "five", "six", "seven", "eight" };$/;" v file: -off_time ./clients/lcdproc/main.h /^ int off_time; \/\/ How often to get stats while not visible?$/;" m struct:mode -on_time ./clients/lcdproc/main.h /^ int on_time; \/\/ How often to update while visible?$/;" m struct:mode +off_time ./clients/lcdproc/main.h /^ int off_time; \/\/ How often to get stats while not visible?$/;" m struct:mode +on_time ./clients/lcdproc/main.h /^ int on_time; \/\/ How often to update while visible?$/;" m struct:mode one ./server/serverscreens.c /^char one[256] = "";$/;" v options_menu ./server/menus.c /^menu_item options_menu[] = {$/;" v orig_sock ./server/sock.c /^int orig_sock;$/;" v -output ./server/drivers/lcd.h /^ void (*output) (int on);$/;" m struct:lcd_logical_driver +output ./server/drivers/lcd.h /^ void (*output) (int on);$/;" m struct:lcd_logical_driver output_func ./server/client_functions.c /^output_func (client * c, int argc, char **argv)$/;" f output_state ./server/render.c /^int output_state = 0;$/;" v parameter ./server/main.h /^typedef struct parameter {$/;" s parameter ./server/main.h /^} parameter;$/;" t -parent ./server/screen.h /^ client *parent;$/;" m struct:screen +parent ./server/screen.h /^ client *parent;$/;" m struct:screen parse_all_client_messages ./server/parse.c /^parse_all_client_messages ()$/;" f parse_span_list ./server/drivers/hd44780.c /^parse_span_list (int *spanListArray[], int *spLsize, int *dispOffsets[], int *dOffsize, int *dispSizeArray[], char *spanlist)$/;" f port ./server/drivers/hd44780.c /^unsigned int port = LPTPORT;$/;" v port_in ./server/drivers/port.h /^port_in (int port)$/;" f port_out ./server/drivers/port.h /^port_out (unsigned int port, unsigned char val)$/;" f port_out ./server/drivers/port.h /^port_out (unsigned short int port, unsigned char val)$/;" f -position ./server/drivers/hd44780-low.h /^ void (*position) (int dispID, int DDaddr);$/;" m struct:hwDependentFns -prev ./shared/LL.h /^ struct LL_node *next, *prev;$/;" m struct:LL_node -priority ./server/screen.h /^ int priority;$/;" m struct:screen +position ./server/drivers/hd44780-low.h /^ void (*position) (int dispID, int DDaddr);$/;" m struct:hwDependentFns +prev ./shared/LL.h /^ struct LL_node *next, *prev;$/;" m struct:LL_node +priority ./server/screen.h /^ int priority;$/;" m struct:screen proc_mem_info ./clients/lcdproc/mem.c /^typedef struct proc_mem_info {$/;" s file: proc_mem_info ./clients/lcdproc/mem.c /^} proc_mem_info;$/;" t file: progname ./server/drivers/irmanin.c /^char *progname = "irmanin";$/;" v @@ -821,7 +821,7 @@ read_fd_set ./server/sock.c /^fd_set active_fd_set, read_fd_set;$/;" v read_from_client ./server/sock.c /^read_from_client (int filedes)$/;" f reread ./clients/lcdproc/mode.c /^reread (int f, char *errmsg)$/;" f reset ./server/render.c /^static int reset;$/;" v file: -right ./server/widget.h /^ int left, top, right, bottom; \/\/ bounding rectangle$/;" m struct:widget +right ./server/widget.h /^ int left, top, right, bottom; \/\/ bounding rectangle$/;" m struct:widget screen ./server/screen.h /^typedef struct screen {$/;" s screen ./server/screen.h /^} screen;$/;" t screen_add ./server/screen.c /^screen_add (client * c, char *id)$/;" f @@ -834,7 +834,7 @@ screen_remove ./server/screen.c /^screen_remove (client * c, char *id)$/;" f screen_set_func ./server/client_functions.c /^screen_set_func (client * c, int argc, char **argv)$/;" f screen_size ./server/main.h /^typedef struct screen_size {$/;" s screen_size ./server/main.h /^} screen_size;$/;" t -screenlist ./server/client_data.h /^ LL *screenlist;$/;" m struct:client_data +screenlist ./server/client_data.h /^ LL *screenlist;$/;" m struct:client_data screenlist ./server/screenlist.c /^LL *screenlist;$/;" v screenlist_action ./server/screenlist.c /^int screenlist_action = 0;$/;" v screenlist_add ./server/screenlist.c /^screenlist_add (screen * s)$/;" f @@ -851,7 +851,7 @@ screenlist_remove ./server/screenlist.c /^screenlist_remove (screen * s)$/;" f screenlist_remove_all ./server/screenlist.c /^screenlist_remove_all (screen * s)$/;" f screenlist_shutdown ./server/screenlist.c /^screenlist_shutdown ()$/;" f screens_menu ./server/menus.c /^menu_item screens_menu[] = {$/;" v -selected ./server/menu.c /^ int selected;$/;" m struct:menu_info +selected ./server/menu.c /^ int selected;$/;" m struct:menu_info sem_get ./server/drivers/lcd_sem.c /^sem_get (void)$/;" f sem_remove ./server/drivers/lcd_sem.c /^sem_remove (int sid)$/;" f sem_signal ./server/drivers/lcd_sem.c /^sem_signal (int sid)$/;" f @@ -859,22 +859,22 @@ sem_wait ./server/drivers/lcd_sem.c /^sem_wait (int sid)$/;" f semaphore_signal ./server/drivers/lcd_sem.c /^static struct sembuf semaphore_signal = { SEM_SIGNAL };$/;" v file: semaphore_wait ./server/drivers/lcd_sem.c /^static struct sembuf semaphore_wait = { SEM_WAIT };$/;" v file: semid ./server/drivers/hd44780-ext8bit.c /^static int semid;$/;" v file: -senddata ./server/drivers/hd44780-low.h /^ void (*senddata) (unsigned char dispID, unsigned char flags, unsigned char ch);$/;" m struct:hwDependentFns +senddata ./server/drivers/hd44780-low.h /^ void (*senddata) (unsigned char dispID, unsigned char flags, unsigned char ch);$/;" m struct:hwDependentFns server_input ./server/input.c /^server_input (int key)$/;" f server_menu ./server/menus.c /^server_menu ()$/;" f server_screen ./server/serverscreens.c /^screen *server_screen;$/;" v server_screen_init ./server/serverscreens.c /^server_screen_init ()$/;" f -set_char ./server/drivers/lcd.h /^ void (*set_char) (int n, char *dat);$/;" m struct:lcd_logical_driver -sh ./server/main.h /^ char *sh, *lg; \/\/ short and long versions$/;" m struct:parameter -shared ./clients/lcdproc/mem.c /^ int total, cache, buffers, free, shared;$/;" m struct:meminfo +set_char ./server/drivers/lcd.h /^ void (*set_char) (int n, char *dat);$/;" m struct:lcd_logical_driver +sh ./server/main.h /^ char *sh, *lg; \/\/ short and long versions$/;" m struct:parameter +shared ./clients/lcdproc/mem.c /^ int total, cache, buffers, free, shared;$/;" m struct:meminfo shiftreg ./server/drivers/hd44780-serialLpt.c /^shiftreg (unsigned char displayID, unsigned char r)$/;" f shortdays ./clients/lcdproc/chrono.c /^static char *shortdays[] = {$/;" v file: shortmonths ./clients/lcdproc/chrono.c /^static char *shortmonths[] = {$/;" v file: -show_invisible ./clients/lcdproc/main.h /^ int show_invisible; \/\/ Send stats while not visible?$/;" m struct:mode +show_invisible ./clients/lcdproc/main.h /^ int show_invisible; \/\/ Send stats while not visible?$/;" m struct:mode shutdown_menu ./server/menus.c /^menu_item shutdown_menu[] = {$/;" v simple_font5x7 ./server/drivers/svgalib_drv.c /^const unsigned char simple_font5x7[] = {$/;" v -size ./clients/lcdproc/mem.c /^ int size, totl;$/;" m struct:proc_mem_info -size ./server/main.h /^ char *size;$/;" m struct:screen_size +size ./clients/lcdproc/mem.c /^ int size, totl;$/;" m struct:proc_mem_info +size ./server/main.h /^ char *size;$/;" m struct:screen_size sli ./server/drivers/wirz-sli.c /^lcd_logical_driver *sli;$/;" v sli_chr ./server/drivers/wirz-sli.c /^sli_chr (int x, int y, char c)$/;" f sli_close ./server/drivers/wirz-sli.c /^sli_close ()$/;" f @@ -890,7 +890,7 @@ sli_set_char ./server/drivers/wirz-sli.c /^sli_set_char (int n, char *dat)$/;" f sli_vbar ./server/drivers/wirz-sli.c /^sli_vbar (int x, int len)$/;" f slid_func ./server/menu.c /^slid_func (menu_item * item)$/;" f file: sock ./clients/lcdproc/main.c /^int sock;$/;" v -sock ./server/clients.h /^ int sock;$/;" m struct:client +sock ./server/clients.h /^ int sock;$/;" m struct:client sock_close ./shared/sockets.c /^sock_close (int fd)$/;" f sock_close_all ./server/sock.c /^sock_close_all ()$/;" f sock_connect ./shared/sockets.c /^sock_connect (char *host, unsigned short int port)$/;" f @@ -907,8 +907,8 @@ sockaddr_in ./shared/sockets.c /^typedef struct sockaddr_in sockaddr_in;$/;" t f sort_procs ./clients/lcdproc/mem.c /^sort_procs (void *a, void *b)$/;" f file: spaced_gl_writen ./server/drivers/svgalib_drv.c /^spaced_gl_writen (int x, int y, int count, char *text)$/;" f spanList ./server/drivers/hd44780.c /^static int *spanList = NULL;$/;" v file: -speed ./server/widget.h /^ int speed; \/\/ For scroller...$/;" m struct:widget -string ./server/drivers/lcd.h /^ void (*string) (int x, int y, char lcd[]);$/;" m struct:lcd_logical_driver +speed ./server/widget.h /^ int speed; \/\/ For scroller...$/;" m struct:widget +string ./server/drivers/lcd.h /^ void (*string) (int x, int y, char lcd[]);$/;" m struct:lcd_logical_driver svgalib_drv ./server/drivers/svgalib_drv.c /^lcd_logical_driver *svgalib_drv;$/;" v svgalib_drv_chr ./server/drivers/svgalib_drv.c /^svgalib_drv_chr (int x, int y, char c)$/;" f svgalib_drv_clear ./server/drivers/svgalib_drv.c /^svgalib_drv_clear ()$/;" f @@ -925,14 +925,14 @@ svgalib_drv_num ./server/drivers/svgalib_drv.c /^svgalib_drv_num (int x, int num svgalib_drv_string ./server/drivers/svgalib_drv.c /^svgalib_drv_string (int x, int y, char string[])$/;" f svgalib_drv_vbar ./server/drivers/svgalib_drv.c /^svgalib_drv_vbar (int x, int len)$/;" f sysname ./clients/lcdproc/chrono.c /^static char sysname[SYS_NMLN];$/;" v file: -system ./clients/lcdproc/cpu.c /^ unsigned long total, user, system, nice, idle;$/;" m struct:load -system ./clients/lcdproc/cpu_smp.c /^ unsigned long total, user, system, nice, idle;$/;" m struct:load -tail ./shared/LL.h /^ LL_node head, tail;$/;" m struct:LL +system ./clients/lcdproc/cpu.c /^ unsigned long total, user, system, nice, idle;$/;" m struct:load +system ./clients/lcdproc/cpu_smp.c /^ unsigned long total, user, system, nice, idle;$/;" m struct:load +tail ./shared/LL.h /^ LL_node head, tail;$/;" m struct:LL test_func_func ./server/client_functions.c /^test_func_func (client * c, int argc, char **argv)$/;" f -text ./server/client_menu.h /^ char text[]; \/\/ Text to display here...$/;" m struct:client_menu_item +text ./server/client_menu.h /^ char text[]; \/\/ Text to display here...$/;" m struct:client_menu_item text ./server/drivers/text.c /^lcd_logical_driver *text;$/;" v -text ./server/menu.h /^ char *text;$/;" m struct:menu_item -text ./server/widget.h /^ char *text; \/\/ text or binary data$/;" m struct:widget +text ./server/menu.h /^ char *text;$/;" m struct:menu_item +text ./server/widget.h /^ char *text; \/\/ text or binary data$/;" m struct:widget text_backlight ./server/drivers/text.c /^text_backlight (int on)$/;" f text_chr ./server/drivers/text.c /^text_chr (int x, int y, char c)$/;" f text_clear ./server/drivers/text.c /^text_clear ()$/;" f @@ -952,44 +952,44 @@ text_string ./server/drivers/text.c /^text_string (int x, int y, char string[])$ text_vbar ./server/drivers/text.c /^text_vbar (int x, int len)$/;" f three ./server/serverscreens.c /^char three[256] = "";$/;" v time_screen ./clients/lcdproc/chrono.c /^time_screen (int rep, int display)$/;" f -timer ./clients/lcdproc/main.h /^ int timer; \/\/ Time since last update$/;" m struct:mode +timer ./clients/lcdproc/main.h /^ int timer; \/\/ Time since last update$/;" m struct:mode timer ./server/screenlist.c /^int timer = 0;$/;" v title ./server/serverscreens.c /^char title[256] = "LCDproc Server";$/;" v tmp ./clients/lcdproc/mode.c /^char tmp[1024];$/;" v -top ./server/widget.h /^ int left, top, right, bottom; \/\/ bounding rectangle$/;" m struct:widget -total ./clients/lcdproc/cpu.c /^ unsigned long total, user, system, nice, idle;$/;" m struct:load -total ./clients/lcdproc/cpu_smp.c /^ unsigned long total, user, system, nice, idle;$/;" m struct:load -total ./clients/lcdproc/mem.c /^ int total, cache, buffers, free, shared;$/;" m struct:meminfo -totl ./clients/lcdproc/mem.c /^ int size, totl;$/;" m struct:proc_mem_info +top ./server/widget.h /^ int left, top, right, bottom; \/\/ bounding rectangle$/;" m struct:widget +total ./clients/lcdproc/cpu.c /^ unsigned long total, user, system, nice, idle;$/;" m struct:load +total ./clients/lcdproc/cpu_smp.c /^ unsigned long total, user, system, nice, idle;$/;" m struct:load +total ./clients/lcdproc/mem.c /^ int total, cache, buffers, free, shared;$/;" m struct:meminfo +totl ./clients/lcdproc/mem.c /^ int size, totl;$/;" m struct:proc_mem_info two ./server/serverscreens.c /^char two[256] = "";$/;" v -type ./clients/lcdproc/disk.c /^ char dev[256], type[64], mpoint[256];$/;" m struct:mounts -type ./server/client_menu.h /^ int type; \/\/ Title, function, submenu, slider, checkbox, etc...$/;" m struct:client_menu_item -type ./server/drivers/hd44780-drivers.h /^ enum connectionType type;$/;" m struct:ConnectionMapping -type ./server/menu.h /^ int type;$/;" m struct:menu_item -type ./server/widget.h /^ int type;$/;" m struct:widget +type ./clients/lcdproc/disk.c /^ char dev[256], type[64], mpoint[256];$/;" m struct:mounts +type ./server/client_menu.h /^ int type; \/\/ Title, function, submenu, slider, checkbox, etc...$/;" m struct:client_menu_item +type ./server/drivers/hd44780-drivers.h /^ enum connectionType type;$/;" m struct:ConnectionMapping +type ./server/menu.h /^ int type;$/;" m struct:menu_item +type ./server/widget.h /^ int type;$/;" m struct:widget types ./server/widget.c /^char *types[] = { "none",$/;" v -uPause ./server/drivers/hd44780-low.h /^ void (*uPause) (int microSecondsTenths);$/;" m struct:hwDependentFns +uPause ./server/drivers/hd44780-low.h /^ void (*uPause) (int microSecondsTenths);$/;" m struct:hwDependentFns uPause ./server/drivers/hd44780.c /^uPause (int delayCalls)$/;" f update_screen ./clients/lcdproc/mode.c /^update_screen (mode * m, int display)$/;" f update_server_screen ./server/serverscreens.c /^update_server_screen (int timer)$/;" f uptime_fd ./clients/lcdproc/chrono.c /^int uptime_fd = 0;$/;" v uptime_screen ./clients/lcdproc/chrono.c /^uptime_screen (int rep, int display)$/;" f use ./server/drivers/MtxOrb.c /^static int use[9] = { 1, 0, 0, 0, 0, 0, 0, 0, 0 };$/;" v file: -user ./clients/lcdproc/cpu.c /^ unsigned long total, user, system, nice, idle;$/;" m struct:load -user ./clients/lcdproc/cpu_smp.c /^ unsigned long total, user, system, nice, idle;$/;" m struct:load -value ./server/client_menu.h /^ int value; \/\/ Holds stuff like "true", 43, etc...$/;" m struct:client_menu_item -vbar ./server/drivers/CFontz.c /^ vbar = 2,$/;" e file: -vbar ./server/drivers/MtxOrb.c /^ vbar = 2,$/;" e file: -vbar ./server/drivers/lcd.h /^ void (*vbar) (int x, int len);$/;" m struct:lcd_logical_driver -vbar ./server/drivers/wirz-sli.c /^ vbar = 2,$/;" e file: +user ./clients/lcdproc/cpu.c /^ unsigned long total, user, system, nice, idle;$/;" m struct:load +user ./clients/lcdproc/cpu_smp.c /^ unsigned long total, user, system, nice, idle;$/;" m struct:load +value ./server/client_menu.h /^ int value; \/\/ Holds stuff like "true", 43, etc...$/;" m struct:client_menu_item +vbar ./server/drivers/CFontz.c /^ vbar = 2,$/;" e file: +vbar ./server/drivers/MtxOrb.c /^ vbar = 2,$/;" e file: +vbar ./server/drivers/lcd.h /^ void (*vbar) (int x, int len);$/;" m struct:lcd_logical_driver +vbar ./server/drivers/wirz-sli.c /^ vbar = 2,$/;" e file: version ./clients/lcdproc/main.c /^char *version = VERSION;$/;" v version ./server/main.c /^char *version = VERSION;$/;" v -visible ./clients/lcdproc/main.h /^ int visible; \/\/ Can we be seen right now?$/;" m struct:mode -which ./clients/lcdproc/main.h /^ char which; \/\/ Which screen is it?$/;" m struct:mode -wid ./server/drivers/lcd.h /^ int wid, hgt;$/;" m struct:lcd_logical_driver -wid ./server/main.h /^ int wid, hgt;$/;" m struct:screen_size -wid ./server/screen.h /^ int wid, hgt;$/;" m struct:screen -wid ./server/widget.h /^ int wid, hgt; \/\/ Size$/;" m struct:widget +visible ./clients/lcdproc/main.h /^ int visible; \/\/ Can we be seen right now?$/;" m struct:mode +which ./clients/lcdproc/main.h /^ char which; \/\/ Which screen is it?$/;" m struct:mode +wid ./server/drivers/lcd.h /^ int wid, hgt;$/;" m struct:lcd_logical_driver +wid ./server/main.h /^ int wid, hgt;$/;" m struct:screen_size +wid ./server/screen.h /^ int wid, hgt;$/;" m struct:screen +wid ./server/widget.h /^ int wid, hgt; \/\/ Size$/;" m struct:widget widget ./server/widget.h /^typedef struct widget {$/;" s widget ./server/widget.h /^} widget;$/;" t widget_add ./server/widget.c /^widget_add (screen * s, char *id, char *type, char *in, int sock)$/;" f @@ -1002,7 +1002,7 @@ widget_finder ./server/widget.c /^widget_finder (LL * list, char *id)$/;" f widget_remove ./server/widget.c /^widget_remove (screen * s, char *id, int sock)$/;" f widget_remover ./server/widget.c /^widget_remover (LL * list, widget * w)$/;" f widget_set_func ./server/client_functions.c /^widget_set_func (client * c, int argc, char **argv)$/;" f -widgets ./server/screen.h /^ LL *widgets;$/;" m struct:screen -x ./server/widget.h /^ int x, y; \/\/ Position$/;" m struct:widget +widgets ./server/screen.h /^ LL *widgets;$/;" m struct:screen +x ./server/widget.h /^ int x, y; \/\/ Position$/;" m struct:widget xload_screen ./clients/lcdproc/load.c /^xload_screen (int rep, int display)$/;" f -y ./server/widget.h /^ int x, y; \/\/ Position$/;" m struct:widget +y ./server/widget.h /^ int x, y; \/\/ Position$/;" m struct:widget