sysfs: refactor lineconfig string representation

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@10685 a0bf4364-ded3-4de4-8d8a-66a801d63aff
This commit is contained in:
Shaun Ruffell
2012-05-23 12:36:42 +00:00
committed by Tzafrir Cohen
parent bb2c15c103
commit 1058502286
3 changed files with 47 additions and 36 deletions

View File

@@ -774,6 +774,48 @@ const char *dahdi_lineconfig_bit_name(int lineconfig_bit)
}
EXPORT_SYMBOL(dahdi_lineconfig_bit_name);
ssize_t lineconfig_str(int lineconfig, char buf[], size_t size)
{
int framing_bit = 0;
int coding_bit = 0;
int crc4_bit = 0;
int len = 0;
int bit;
for (bit = 4; bit <= 12; bit++) {
int mask = (1 << bit);
if (!(lineconfig & mask))
continue;
if (!framing_bit) {
switch (mask) {
case DAHDI_CONFIG_B8ZS:
case DAHDI_CONFIG_AMI:
case DAHDI_CONFIG_HDB3:
framing_bit = bit;
len += snprintf(buf + len, size, "%s/",
dahdi_lineconfig_bit_name(bit));
}
}
if (!coding_bit) {
switch (mask) {
case DAHDI_CONFIG_ESF:
case DAHDI_CONFIG_D4:
case DAHDI_CONFIG_CCS:
coding_bit = bit;
len += snprintf(buf + len, size, "%s",
dahdi_lineconfig_bit_name(bit));
}
}
if (!crc4_bit && mask == DAHDI_CONFIG_CRC4) {
crc4_bit = bit;
len += snprintf(buf + len, size, "/%s",
dahdi_lineconfig_bit_name(bit));
}
}
return len;
}
EXPORT_SYMBOL(lineconfig_str);
#ifdef CONFIG_PROC_FS
static const char *sigstr(int sig)
{
@@ -873,23 +915,9 @@ static int dahdi_seq_show(struct seq_file *sfile, void *v)
seq_printf(sfile, " (MASTER)");
if (s->lineconfig) {
/* framing first */
if (s->lineconfig & DAHDI_CONFIG_B8ZS)
seq_printf(sfile, " B8ZS/");
else if (s->lineconfig & DAHDI_CONFIG_AMI)
seq_printf(sfile, " AMI/");
else if (s->lineconfig & DAHDI_CONFIG_HDB3)
seq_printf(sfile, " HDB3/");
/* then coding */
if (s->lineconfig & DAHDI_CONFIG_ESF)
seq_printf(sfile, "ESF");
else if (s->lineconfig & DAHDI_CONFIG_D4)
seq_printf(sfile, "D4");
else if (s->lineconfig & DAHDI_CONFIG_CCS)
seq_printf(sfile, "CCS");
/* E1's can enable CRC checking */
if (s->lineconfig & DAHDI_CONFIG_CRC4)
seq_printf(sfile, "/CRC4");
char tmpbuf[20];
lineconfig_str(s->lineconfig, tmpbuf, sizeof(tmpbuf));
seq_printf(sfile, " %s", tmpbuf);
}
seq_printf(sfile, " ");

View File

@@ -179,25 +179,7 @@ static BUS_ATTR_READER(lineconfig_show, dev, buf)
int len = 0;
span = dev_to_span(dev);
if (span->lineconfig) {
/* framing first */
if (span->lineconfig & DAHDI_CONFIG_B8ZS)
len += sprintf(buf + len, "B8ZS/");
else if (span->lineconfig & DAHDI_CONFIG_AMI)
len += sprintf(buf + len, "AMI/");
else if (span->lineconfig & DAHDI_CONFIG_HDB3)
len += sprintf(buf + len, "HDB3/");
/* then coding */
if (span->lineconfig & DAHDI_CONFIG_ESF)
len += sprintf(buf + len, "ESF");
else if (span->lineconfig & DAHDI_CONFIG_D4)
len += sprintf(buf + len, "D4");
else if (span->lineconfig & DAHDI_CONFIG_CCS)
len += sprintf(buf + len, "CCS");
/* E1's can enable CRC checking */
if (span->lineconfig & DAHDI_CONFIG_CRC4)
len += sprintf(buf + len, "/CRC4");
}
len += lineconfig_str(span->lineconfig, buf, 20);
len += sprintf(buf + len, "\n");
return len;
}

View File

@@ -807,6 +807,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);
ssize_t lineconfig_str(int lineconfig, char buf[], size_t size);
struct file;