aboutsummaryrefslogtreecommitdiffstats
AgeCommit message (Expand)AuthorFilesLines
2008-12-31format characters in qprintf() with optional length (r821) ported from volker...michael1-9/+63
2008-12-31short circuit evaluation ported from volker_dev (r820,r822,r824)michael1-8/+52
2008-12-31Fixes a buffer underrun error and possible array index issues by mcarey@...michael1-6/+13
2008-12-27ported r819 from volker_devmichael1-17/+21
2008-12-27ported and modified r818 from volker_devmichael3-11/+151
2008-12-27port r817 from volker_devmichael3-24/+944
2008-12-27ported (modified) r815 from voker_devmichael1-3/+23
2008-12-24cleanup & cosmeticsmichael5-22/+31
2008-12-24driver for the PHAnderson serial-to-HD44780 adapter boards by Nicolas Weillmichael5-5/+444
2008-12-24w1retap plugin by Jonathan Hudsonmichael7-0/+298
2008-12-24Enables/controls the backlight on the Pertelian LCD device by Jonathan Hudsonmichael1-10/+13
2008-12-23hddtemp plugin from Scott Bronsonmichael7-0/+343
2008-12-23keypad bug fixedmichael1-1/+1
2008-12-23patch from a.nielsen: inverted parport signals, support GPI on HD44780michael2-24/+89
2008-12-23indent runmichael1-4/+4
2008-11-25fix lcd4linux driver for multible onboard controllersmichux1-4/+4
2008-11-23fix automake - check for libftdimichux4-9/+173
2008-11-22update button_exec plugin - fix segfaultmichux1-3/+2
2008-11-22update fifo plugin - untestedmichux1-1/+1
2008-10-07Replace write to external variable usb_debug by calling usb_set_debug().bwalle7-16/+7
2008-10-06adding GPI to picoLCD for reading button events by Igor Mammedov <niallain@g...michael1-1/+22
2008-10-06properties fixedmichael11-3290/+2675
2008-10-05Rebuild auto-generated autoconf stuff due to last change in drivers.m4.bwalle3-2657/+3297
2008-10-05Add 'ULA200' driver when --with-drivers=all is specifiedbwalle1-0/+1
2008-09-14strftime_tz patch from Bernhard Wallemichael1-0/+11
2008-09-08strftime_tz() plugin by Bernhard Wallemichael1-0/+25
2008-09-03ULA200 driver by Bernhard Wallemichael7-2/+825
2008-09-03indentmichael1-4/+4
2008-08-31-60/+140
2008-07-15widget_keypad.h added to drv_HD44780michael1-0/+1
2008-07-15indent runmichael1-4/+4
2008-07-15automake-1.10.1michael4-214/+522
2008-04-15forgot includemichux1-0/+1
2008-04-15add signal handler, improve error checkmichux1-4/+10
2008-04-14minor updatemichux1-4/+9
2008-04-12Makefiles again, this time libiconv stuff is fixedmichux6-357/+2445
2008-04-12fix error, introduced in r857michux1-1/+1
2008-04-12update Makefilesmichux3-0/+17
2008-04-12clean upmichux1-171/+188
2008-04-10Add the year 2008 to the copyrightmichux1-1/+1
2008-04-10Add basic FIFO pluginmichux4-0/+197
span> * Revision 1.13 2004/06/26 09:27:21 reinelt * * added '-W' to CFLAGS * changed all C++ comments to C ones * cleaned up a lot of signed/unsigned mistakes * * Revision 1.12 2004/06/20 10:09:56 reinelt * * 'const'ified the whole source * * Revision 1.11 2004/03/11 06:39:59 reinelt * big patch from Martin: * - reuse filehandles * - memory leaks fixed * - earlier busy-flag checking with HD44780 * - reuse memory for strings in RESULT and hash * - netdev_fast to wavid time-consuming regex * * Revision 1.10 2004/03/06 20:31:16 reinelt * Complete rewrite of the evaluator to get rid of the code * from mark Morley (because of license issues). * The new Evaluator does a pre-compile of expressions, and * stores them in trees. Therefore it should be reasonable faster... * * Revision 1.9 2004/03/03 04:44:16 reinelt * changes (cosmetics?) to the big patch from Martin * hash patch un-applied * * Revision 1.8 2004/03/03 03:47:04 reinelt * big patch from Martin Hejl: * - use qprintf() where appropriate * - save CPU cycles on gettimeofday() * - add quit() functions to free allocated memory * - fixed lots of memory leaks * * Revision 1.7 2004/02/15 21:43:43 reinelt * T6963 driver nearly finished * framework for graphic displays done * i2c_sensors patch from Xavier * some more old generation files removed * * Revision 1.6 2004/02/07 13:45:23 reinelt * icon visibility patch #2 from Xavier * * Revision 1.5 2004/02/04 19:11:44 reinelt * icon visibility patch from Xavier * * Revision 1.4 2004/01/30 20:57:56 reinelt * HD44780 patch from Martin Hejl * dmalloc integrated * * Revision 1.3 2004/01/29 04:40:03 reinelt * every .c file includes "config.h" now * * Revision 1.2 2004/01/23 07:04:39 reinelt * icons finished! * * Revision 1.1 2004/01/23 04:54:03 reinelt * icon widget added (not finished yet!) * */ /* * exported functions: * * WIDGET_CLASS Widget_Icon * the icon widget * */ #include "config.h" #include <stdlib.h> #include <stdio.h> #include <string.h> #include <ctype.h> #include "debug.h" #include "cfg.h" #include "qprintf.h" #include "evaluator.h" #include "timer.h" #include "widget.h" #include "widget_icon.h" #ifdef WITH_DMALLOC #include <dmalloc.h> #endif /* icons always are 8 pixels high */ #define YRES 8 static void widget_icon_read_bitmap (const char *section, WIDGET_ICON *Icon) { int row, n; char key[15]; char *val, *v; unsigned char *map; for (row=0; row<YRES; row++) { qprintf(key, sizeof(key), "Bitmap.Row%d", row+1); val=cfg_get(section, key, ""); map=Icon->bitmap+row; n=0; for (v=val; *v!='\0'; v++) { if (n>=Icon->maxmap) { Icon->maxmap++; Icon->bitmap=realloc(Icon->bitmap, Icon->maxmap*YRES*sizeof(char)); memset (Icon->bitmap+n*YRES, 0, YRES*sizeof(char)); map=Icon->bitmap+n*YRES+row; } switch (*v) { case '|': n++; map+=YRES; break; case '*': (*map)<<=1; (*map)|=1; break; default: (*map)<<=1; } } free(val); } } void widget_icon_update (void *Self) { WIDGET *W = (WIDGET*)Self; WIDGET_ICON *Icon = W->data; RESULT result = {0, 0, 0, NULL}; /* evaluate expressions */ Icon->speed = 100; if (Icon->speed_tree!=NULL) { Eval(Icon->speed_tree, &result); Icon->speed = R2N(&result); if (Icon->speed<10) Icon->speed=10; DelResult(&result); } Icon->visible = 1; if (Icon->visible_tree!=NULL) { Eval(Icon->visible_tree, &result); Icon->visible = R2N(&result); if (Icon->visible<1) Icon->visible=0; DelResult(&result); } /* rotate icon bitmap */ Icon->curmap++; if (Icon->curmap >= Icon->maxmap) Icon->curmap = 0; /* finally, draw it! */ if (W->class->draw) W->class->draw(W); /* add a new one-shot timer */ timer_add (widget_icon_update, Self, Icon->speed, 1); } int widget_icon_init (WIDGET *Self) { char *section; WIDGET_ICON *Icon; /* prepare config section */ /* strlen("Widget:")=7 */ section=malloc(strlen(Self->name)+8); strcpy(section, "Widget:"); strcat(section, Self->name); Icon=malloc(sizeof(WIDGET_ICON)); memset (Icon, 0, sizeof(WIDGET_ICON)); /* get raw expressions (we evaluate them ourselves) */ Icon->speed_expr = cfg_get_raw (section, "speed", NULL); Icon->visible_expr = cfg_get_raw (section, "visible", NULL); /* compile'em */ Compile (Icon->speed_expr, &Icon->speed_tree); Compile (Icon->visible_expr, &Icon->visible_tree); /* sanity check */ if (Icon->speed_expr==NULL || *Icon->speed_expr=='\0') { error ("Icon %s has no speed, using '100'", Self->name); Icon->speed_expr="100"; } /* read bitmap */ widget_icon_read_bitmap (section, Icon); free (section); Self->data=Icon; /* as the speed is evaluatod on every call, we use 'one-shot'-timers. */ /* The timer will be reactivated on every call to widget_icon_update(). */ /* We do the initial call here... */ Icon->prvmap=-1; /* reset ascii */ Icon->ascii=-1; /* just do it! */ widget_icon_update(Self); return 0; } int widget_icon_quit (WIDGET *Self) { if (Self) { if (Self->data) { WIDGET_ICON *Icon = Self->data; DelTree(Icon->speed_tree); DelTree(Icon->visible_tree); if (Icon->bitmap) free (Icon->bitmap); free(Self->data); Self->data=NULL; } } return 0; } WIDGET_CLASS Widget_Icon = { name: "icon", init: widget_icon_init, draw: NULL, quit: widget_icon_quit, };