9
0
Fork 0

svn_rev_377

remove special params, all params are strings now
This commit is contained in:
Sascha Hauer 2007-07-05 18:01:48 +02:00 committed by Sascha Hauer
parent 4320cc59b5
commit e454ad437a
2 changed files with 10 additions and 40 deletions

View File

@ -1,39 +1,22 @@
#ifndef PARAM_H
#define PARAM_H
#include <net.h>
#define PARAM_TYPE_STRING 1
#define PARAM_TYPE_ULONG 2
#define PARAM_TYPE_IPADDR 3
#define PARAM_FLAG_RO (1 << 0)
struct device_d;
typedef union {
char *val_str;
ulong val_ulong;
IPaddr_t val_ip;
} value_t;
struct param_d {
struct param_d* (*get)(struct device_d *, struct param_d *param);
int (*set)(struct device_d *, struct param_d *param, value_t val);
ulong type;
char* (*get)(struct device_d *, struct param_d *param);
int (*set)(struct device_d *, struct param_d *param, const char *val);
ulong flags;
char *name;
ulong cookie;
struct param_d *next;
value_t value;
char *name;
struct param_d *next;
char *value;
};
struct param_d* dev_get_param(struct device_d *dev, char *name);
int dev_set_param(struct device_d *dev, char *name, value_t val);
struct param_d *get_param_by_name(struct device_d *dev, char *name);
void print_param(struct param_d *param);
IPaddr_t dev_get_param_ip(struct device_d *dev, char *name);
int dev_set_param_ip(struct device_d *dev, char *name, IPaddr_t ip);
char *dev_get_param(struct device_d *dev, const char *name);
int dev_set_param(struct device_d *dev, const char *name, const char *val);
struct param_d *get_param_by_name(struct device_d *dev, const char *name);
int dev_add_parameter(struct device_d *dev, struct param_d *par);

View File

@ -50,7 +50,7 @@ static int do_get( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
}
param = dev_get_param(dev, argv[2]);
print_param(param);
printf("%s\n", param->value);
printf("\n");
return 0;
@ -68,7 +68,6 @@ static int do_set( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
char *endp;
int ret;
struct param_d *param;
value_t val;
if (argc < 4) {
printf ("Usage:\n%s\n", cmdtp->usage);
@ -87,19 +86,7 @@ static int do_set( cmd_tbl_t *cmdtp, int flag, int argc, char *argv[])
return 1;
}
switch (param->type) {
case PARAM_TYPE_STRING:
val.val_str = argv[3];
break;
case PARAM_TYPE_ULONG:
val.val_ulong = simple_strtoul(argv[3], NULL, 0);
break;
case PARAM_TYPE_IPADDR:
val.val_ip = string_to_ip(argv[3]);
break;
}
ret = dev_set_param(dev, argv[2], val);
ret = dev_set_param(dev, argv[2], argv[3]);
if (ret)
perror("set parameter");