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:
committed by
Tzafrir Cohen
parent
579132bb89
commit
bb2c15c103
@@ -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)
|
||||
{
|
||||
|
||||
@@ -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,
|
||||
};
|
||||
|
||||
|
||||
@@ -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;
|
||||
|
||||
|
||||
Reference in New Issue
Block a user