|
|
|
@ -71,7 +71,8 @@ char display_clear_screen[] = { 0x0c };
|
|
|
|
|
|
|
|
|
|
// activate timer display in lower right corner.
|
|
|
|
|
// actual time has to be set via display_set_timer.
|
|
|
|
|
char display_time[] = {0x1f,0x55};
|
|
|
|
|
char display_time[] = { 0x1f, 0x55 };
|
|
|
|
|
|
|
|
|
|
// configures hour and minutes of the internal clock and
|
|
|
|
|
// displays the time in the lower right corner.
|
|
|
|
|
// turns off when something gets written into the line.
|
|
|
|
@ -129,7 +130,7 @@ void
|
|
|
|
|
display_putstring (char *s)
|
|
|
|
|
{
|
|
|
|
|
screensaver = 0;
|
|
|
|
|
SEND_TEXT(s);
|
|
|
|
|
SEND_TEXT (s);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
|
|
|
|
@ -175,7 +176,7 @@ display_dim (short i)
|
|
|
|
|
SEND_CURSOR_OFF;
|
|
|
|
|
// turn display on again
|
|
|
|
|
SEND_DISPLAY_ON;
|
|
|
|
|
SEND_MODE_OVERWRITE;
|
|
|
|
|
SEND_MODE_OVERWRITE;
|
|
|
|
|
char c[4] = { 0x1f, 0x58, 0x04, 0x00 };
|
|
|
|
|
l = 6;
|
|
|
|
|
//c[5]=i;
|
|
|
|
@ -243,7 +244,10 @@ sighandler (int sig)
|
|
|
|
|
SEND_DISPLAY_OFF;
|
|
|
|
|
|
|
|
|
|
close (fd);
|
|
|
|
|
if (fifo) {unlink(fifo);}
|
|
|
|
|
if (fifo)
|
|
|
|
|
{
|
|
|
|
|
unlink (fifo);
|
|
|
|
|
}
|
|
|
|
|
exit (0);
|
|
|
|
|
//signal(sig, sighandler);
|
|
|
|
|
}
|
|
|
|
@ -252,18 +256,20 @@ sighandler (int sig)
|
|
|
|
|
int
|
|
|
|
|
main (int argc, char **argv)
|
|
|
|
|
{
|
|
|
|
|
char *devnode ;
|
|
|
|
|
char *devnode;
|
|
|
|
|
|
|
|
|
|
//TODO: arg parser!
|
|
|
|
|
fifo=strdup("/tmp/display");
|
|
|
|
|
fifo = strdup ("/tmp/display");
|
|
|
|
|
|
|
|
|
|
if (argc != 2)
|
|
|
|
|
{
|
|
|
|
|
devnode=strdup(DEVICE);
|
|
|
|
|
printf ("no device specified, using default %s\n",devnode);
|
|
|
|
|
}else{
|
|
|
|
|
devnode=strdup(argv[1]);
|
|
|
|
|
}
|
|
|
|
|
devnode = strdup (DEVICE);
|
|
|
|
|
printf ("no device specified, using default %s\n", devnode);
|
|
|
|
|
}
|
|
|
|
|
else
|
|
|
|
|
{
|
|
|
|
|
devnode = strdup (argv[1]);
|
|
|
|
|
}
|
|
|
|
|
fd = open (devnode, O_RDWR | O_NOCTTY | O_NDELAY);
|
|
|
|
|
if (fd == -1)
|
|
|
|
|
{
|
|
|
|
@ -304,13 +310,20 @@ main (int argc, char **argv)
|
|
|
|
|
|
|
|
|
|
while (1)
|
|
|
|
|
{
|
|
|
|
|
usleep(TIME_BASE);
|
|
|
|
|
//printf ("screensaver = %05d brightness: %d\n", screensaver, brightness);
|
|
|
|
|
if (screensaver < 10000)
|
|
|
|
|
usleep (TIME_BASE);
|
|
|
|
|
|
|
|
|
|
if (0 == (screensaver) % TB_TO_SECS (1))
|
|
|
|
|
{
|
|
|
|
|
screensaver++;
|
|
|
|
|
//one-second event comes HERE:
|
|
|
|
|
printf
|
|
|
|
|
("debug: screensaver: %d time until clock: %d time until dim: %d time until off: %d\n",
|
|
|
|
|
screensaver, TIME_CLOCK - screensaver, TIME_DIM - screensaver,
|
|
|
|
|
TIME_OFF - screensaver);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//printf ("screensaver = %05d brightness: %d\n", screensaver, brightness);
|
|
|
|
|
screensaver = (screensaver + 1) % TIME_CLOCK + TIME_OFF + TIME_DIM;
|
|
|
|
|
|
|
|
|
|
if (screensaver == TIME_CLOCK)
|
|
|
|
|
{
|
|
|
|
|
showtime ();
|
|
|
|
@ -322,17 +335,22 @@ main (int argc, char **argv)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
//show a scroll text while the screensaver is active...
|
|
|
|
|
if ((screensaver > (TIME_CLOCK+10)) && (screensaver < TIME_OFF)){
|
|
|
|
|
char *message = calloc(LINELEN+1,sizeof(char));
|
|
|
|
|
strncpy(message,PAUSEMSG+((screensaver-TIME_CLOCK-1)%strlen(PAUSEMSG)),LINELEN);
|
|
|
|
|
int l = strlen(message);
|
|
|
|
|
if (l<LINELEN){
|
|
|
|
|
message = strncat(message, PAUSEMSG , LINELEN-l);
|
|
|
|
|
}
|
|
|
|
|
SEND_TEXT("\x0b");
|
|
|
|
|
SEND_TEXT(message);
|
|
|
|
|
free(message);
|
|
|
|
|
}
|
|
|
|
|
if ((screensaver > (TIME_CLOCK + 10)) && (screensaver < TIME_OFF))
|
|
|
|
|
{
|
|
|
|
|
char *message = calloc (LINELEN + 1, sizeof (char));
|
|
|
|
|
strncpy (message,
|
|
|
|
|
PAUSEMSG +
|
|
|
|
|
((screensaver - TIME_CLOCK - 1) % strlen (PAUSEMSG)),
|
|
|
|
|
LINELEN);
|
|
|
|
|
int l = strlen (message);
|
|
|
|
|
if (l < LINELEN)
|
|
|
|
|
{
|
|
|
|
|
message = strncat (message, PAUSEMSG, LINELEN - l);
|
|
|
|
|
}
|
|
|
|
|
SEND_TEXT ("\x0b");
|
|
|
|
|
SEND_TEXT (message);
|
|
|
|
|
free (message);
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
//after some more seconds of inactivity dim display and finally turn off
|
|
|
|
|
if ((screensaver > TIME_DIM) && (brightness > 1))
|
|
|
|
|