diff options
author | Tzafrir Cohen <tzafrir.cohen@xorcom.com> | 2012-05-23 12:20:23 +0000 |
---|---|---|
committer | Tzafrir Cohen <tzafrir.cohen@xorcom.com> | 2012-05-23 12:20:23 +0000 |
commit | fa1d3ba9465064f7a1551fe7369525d8b355861d (patch) | |
tree | e69ab4124842248fc84b8534dd05ebe90a091cfb /drivers/dahdi/dahdi-sysfs.c | |
parent | 45a4b3459991f23fc17240886d1435d67ff2e89c (diff) |
convert span->spantype to enumerated type
* This is a minimal convertion -- everything compiles and looks OK.
* We print a warning for spans registering without a spantype.
* Low-level drivers may later want (but not required)
to fold their internal representations to this canonical
representation -- it will save code and make it more readable.
Signed-off-by: Shaun Ruffell <sruffell@digium.com>
Acked-by: Tzafrir Cohen <tzafrir.cohen@xorcom.com>
git-svn-id: http://svn.asterisk.org/svn/dahdi/linux/trunk@10683 a0bf4364-ded3-4de4-8d8a-66a801d63aff
Diffstat (limited to 'drivers/dahdi/dahdi-sysfs.c')
-rw-r--r-- | drivers/dahdi/dahdi-sysfs.c | 27 |
1 files changed, 21 insertions, 6 deletions
diff --git a/drivers/dahdi/dahdi-sysfs.c b/drivers/dahdi/dahdi-sysfs.c index 0756af4..8bfbb9a 100644 --- a/drivers/dahdi/dahdi-sysfs.c +++ b/drivers/dahdi/dahdi-sysfs.c @@ -118,11 +118,18 @@ static BUS_ATTR_READER(field##_show, dev, buf) \ span_attr(name, "%s\n"); span_attr(desc, "%s\n"); -span_attr(spantype, "%s\n"); span_attr(alarms, "0x%x\n"); span_attr(lbo, "%d\n"); span_attr(syncsrc, "%d\n"); +static BUS_ATTR_READER(spantype_show, dev, buf) +{ + struct dahdi_span *span; + + span = dev_to_span(dev); + return sprintf(buf, "%s\n", dahdi_spantype2str(span->spantype)); +} + static BUS_ATTR_READER(local_spanno_show, dev, buf) { struct dahdi_span *span; @@ -474,7 +481,7 @@ dahdi_spantype_show(struct device *dev, /* TODO: Make sure this doesn't overflow the page. */ list_for_each_entry(span, &ddev->spans, device_node) { count = sprintf(buf, "%d:%s\n", - local_spanno(span), span->spantype); + local_spanno(span), dahdi_spantype2str(span->spantype)); buf += count; total += count; } @@ -490,11 +497,19 @@ dahdi_spantype_store(struct device *dev, struct device_attribute *attr, int ret; struct dahdi_span *span; unsigned int local_span_number; - char desired_spantype[80]; + char spantype_name[80]; + enum spantypes spantype; - ret = sscanf(buf, "%u:%70s", &local_span_number, desired_spantype); - if (ret != 2) + ret = sscanf(buf, "%u:%70s", &local_span_number, spantype_name); + if (ret != 2) { + dev_err(&ddev->dev, "Wrong input format: '%s'\n", buf); + return -EINVAL; + } + spantype = dahdi_str2spantype(spantype_name); + if (spantype == SPANTYPE_INVALID) { + dev_err(&ddev->dev, "Invalid spantype: '%s'\n", buf); return -EINVAL; + } list_for_each_entry(span, &ddev->spans, device_node) { if (local_spanno(span) == local_span_number) @@ -520,7 +535,7 @@ dahdi_spantype_store(struct device *dev, struct device_attribute *attr, return -EINVAL; } - ret = span->ops->set_spantype(span, &desired_spantype[0]); + ret = span->ops->set_spantype(span, spantype); return (ret < 0) ? ret : count; } |