sysfs: add a linecompat span attribute

This way, dahdi_genconf may gather needed information without issuing
ioctl()'s

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@10684 a0bf4364-ded3-4de4-8d8a-66a801d63aff
This commit is contained in:
Shaun Ruffell
2012-05-23 12:35:56 +00:00
committed by Tzafrir Cohen
parent 579132bb89
commit bb2c15c103
3 changed files with 49 additions and 0 deletions

View File

@@ -749,6 +749,31 @@ const char *dahdi_spantype2str(enum spantypes st)
}
EXPORT_SYMBOL(dahdi_spantype2str);
const char *dahdi_lineconfig_bit_name(int lineconfig_bit)
{
static const char * const table[] = {
/* These apply to T1 */
[4] = "D4",
[5] = "ESF",
[6] = "AMI",
[7] = "B8ZS",
/* These apply to E1 */
[8] = "CCS",
[9] = "HDB3",
[10] = "CRC4",
/* These apply to BRI */
[11] = "NTTE",
[12] = "TERM",
/* Finish */
[16] = "NOTOPEN",
};
if (lineconfig_bit < 0 || lineconfig_bit >= ARRAY_SIZE(table))
return NULL;
return table[lineconfig_bit];
}
EXPORT_SYMBOL(dahdi_lineconfig_bit_name);
#ifdef CONFIG_PROC_FS
static const char *sigstr(int sig)
{

View File

@@ -26,6 +26,7 @@
#include <dahdi/kernel.h>
#include <linux/device.h>
#include <linux/slab.h>
#include <linux/ctype.h>
#include "dahdi.h"
#include "dahdi-sysfs.h"
@@ -201,6 +202,27 @@ static BUS_ATTR_READER(lineconfig_show, dev, buf)
return len;
}
static BUS_ATTR_READER(linecompat_show, dev, buf)
{
struct dahdi_span *span;
int bit;
int len = 0;
span = dev_to_span(dev);
for (bit = 4; bit <= 12; bit++) {
if (span->linecompat & (1 << bit)) {
const char *name = dahdi_lineconfig_bit_name(bit);
if (name)
len += sprintf(buf + len, "%s ", name);
}
}
/* chomp */
while (len > 0 && isspace(buf[len - 1]))
buf[--len] = '\0';
len += sprintf(buf + len, "\n");
return len;
}
static struct device_attribute span_dev_attrs[] = {
__ATTR_RO(name),
__ATTR_RO(desc),
@@ -214,6 +236,7 @@ static struct device_attribute span_dev_attrs[] = {
__ATTR_RO(basechan),
__ATTR_RO(channels),
__ATTR_RO(lineconfig),
__ATTR_RO(linecompat),
__ATTR_NULL,
};

View File

@@ -806,6 +806,7 @@ enum spantypes {
};
const char *dahdi_spantype2str(enum spantypes st);
enum spantypes dahdi_str2spantype(const char *name);
const char *dahdi_lineconfig_bit_name(int lineconfig_bit);
struct file;