diff options
| -rw-r--r-- | cfg.c | 23 | ||||
| -rw-r--r-- | drv_MatrixOrbital.c | 11 | ||||
| -rw-r--r-- | layout.c | 43 | ||||
| -rw-r--r-- | widget.c | 9 | 
4 files changed, 67 insertions, 19 deletions
| @@ -1,4 +1,4 @@ -/* $Id: cfg.c,v 1.24 2004/01/10 20:22:33 reinelt Exp $^ +/* $Id: cfg.c,v 1.25 2004/01/11 09:26:15 reinelt Exp $^   *   * config file stuff   * @@ -23,6 +23,9 @@   *   *   * $Log: cfg.c,v $ + * Revision 1.25  2004/01/11 09:26:15  reinelt + * layout starts to exist... + *   * Revision 1.24  2004/01/10 20:22:33  reinelt   * added new function 'cfg_list()' (not finished yet)   * added layout.c (will replace processor.c someday) @@ -150,6 +153,11 @@   *   cfg_cmd can be called _before_ cfg_read()   *   returns 0 if ok, -1 if arg cannot be parsed   * + * cfg_list (section) + *   returns a list of all keys in the specified section + *   This list was allocated be cfg_list() and must be  + *   freed by the caller! + *   * cfg_get (section, key, defval)    *   return the a value for a given key in a given section    *   or <defval> if key does not exist @@ -323,7 +331,7 @@ int l4l_cfg_cmd (char *arg)  char *l4l_cfg_list (char *section)  {    int i, len; -  char *key; +  char *key, *list;    // calculate key length    len=strlen(section)+1; @@ -333,14 +341,21 @@ char *l4l_cfg_list (char *section)    strcpy (key, section);    strcat (key, "."); +  // start with empty string +  list=malloc(1); +  *list='\0'; +      // search matching entries    for (i=0; i<nConfig; i++) {      if (strncasecmp(Config[i].key, key, len)==0) { -      debug ("found list: %s", Config[i].key); +      list=realloc(list, strlen(list)+strlen(Config[i].key)-len+2); +      strcat (list, "|"); +      strcat (list, Config[i].key+len);      }    } -  return NULL; +  free (key); +  return list;  } diff --git a/drv_MatrixOrbital.c b/drv_MatrixOrbital.c index c0e8da1..03fc5b4 100644 --- a/drv_MatrixOrbital.c +++ b/drv_MatrixOrbital.c @@ -1,4 +1,4 @@ -/* $Id: drv_MatrixOrbital.c,v 1.4 2004/01/10 20:22:33 reinelt Exp $ +/* $Id: drv_MatrixOrbital.c,v 1.5 2004/01/11 09:26:15 reinelt Exp $   *   * new style driver for Matrix Orbital serial display modules   * @@ -23,6 +23,9 @@   *   *   * $Log: drv_MatrixOrbital.c,v $ + * Revision 1.5  2004/01/11 09:26:15  reinelt + * layout starts to exist... + *   * Revision 1.4  2004/01/10 20:22:33  reinelt   * added new function 'cfg_list()' (not finished yet)   * added layout.c (will replace processor.c someday) @@ -381,7 +384,7 @@ static int drv_MO_start (char *section)    for (i=0; Models[i].type!=0xff; i++) {      if (Models[i].type == (int)*buffer) break;    } -  info ("MatrixOrbital: Display identifies itself as a '%s' (type 0x%02x)",  +  info ("MatrixOrbital: display identifies itself as a '%s' (type 0x%02x)",   	Models[i].name, Models[i].type);    // auto-dedection @@ -398,13 +401,13 @@ static int drv_MO_start (char *section)    drv_MO_write ("\3765", 2);    usleep(100000);    drv_MO_read (buffer, 2); -  info ("MatrixOrbital: Display reports Serial Number 0x%x", *(short*)buffer); +  info ("MatrixOrbital: display reports serial number 0x%x", *(short*)buffer);    // read version number    drv_MO_write ("\3766", 2);    usleep(100000);    drv_MO_read (buffer, 1); -  info ("MatrixOrbital: Display reports Firmware Version 0x%x", *buffer); +  info ("MatrixOrbital: display reports firmware version 0x%x", *buffer);    // initialize global variables @@ -1,4 +1,4 @@ -/* $Id: layout.c,v 1.1 2004/01/10 20:22:33 reinelt Exp $ +/* $Id: layout.c,v 1.2 2004/01/11 09:26:15 reinelt Exp $   *   * new layouter framework   * @@ -23,6 +23,9 @@   *   *   * $Log: layout.c,v $ + * Revision 1.2  2004/01/11 09:26:15  reinelt + * layout starts to exist... + *   * Revision 1.1  2004/01/10 20:22:33  reinelt   * added new function 'cfg_list()' (not finished yet)   * added layout.c (will replace processor.c someday) @@ -44,31 +47,55 @@  #include <stdlib.h>  #include <stdio.h>  #include <string.h> +#include <ctype.h>  #include "debug.h"  #include "cfg.h"  #include "layout.h" -#define MAX_ROWS 32 -#define MAX_COLS 80 +void layout_addItem (char *name, int row, int col) +{ + +  debug ("layout_addItem(%s, %d, %d)", name, row, col); +} +  int layout_init (char *layout)  { -  char *section, *widget; -  char  buffer[15]; +  char *section; +  char *list; +  char *key; +  char *widget;    int row, col; +  char buffer[32]; +      info ("initializing layout '%s'", layout);    // prepare config section -  // strlen("Layout:")=7, +1=8 +  // strlen("Layout:")=7    section=malloc(strlen(layout)+8);    strcpy(section, "Layout:");    strcat(section, layout); -  cfg_list(section); - +  list=cfg_list(section); +  key=strtok(list, "|"); +  while (key!=NULL) { +    int i, n; +    char *k; +    // map to lower char for scanf() +    for (k=key; *k!='\0'; k++) *k=tolower(*k); +    i=sscanf (key, "row%d.col%d%n", &row, &col, &n); +    if (i==2 && key[n]=='\0') { +      widget=cfg_get(section, key, NULL); +      if (widget!=NULL && *widget!='\0') { +	layout_addItem (widget, row, col); +      } +    } +    key=strtok(NULL, "|"); +  } +  free (list);    return 0;  } @@ -1,4 +1,4 @@ -/* $Id: widget.c,v 1.4 2004/01/10 20:22:33 reinelt Exp $ +/* $Id: widget.c,v 1.5 2004/01/11 09:26:15 reinelt Exp $   *   * generic widget handling   * @@ -21,6 +21,9 @@   *   *   * $Log: widget.c,v $ + * Revision 1.5  2004/01/11 09:26:15  reinelt + * layout starts to exist... + *   * Revision 1.4  2004/01/10 20:22:33  reinelt   * added new function 'cfg_list()' (not finished yet)   * added layout.c (will replace processor.c someday) @@ -60,8 +63,8 @@  static WIDGET_CLASS *Classes=NULL;  static int          nClasses=0; -static WIDGET *Widgets=NULL; -static int    nWidgets=0; +static WIDGET       *Widgets=NULL; +static int          nWidgets=0;  int widget_register (WIDGET_CLASS *widget) | 
