diff options
author | tzafrir <tzafrir@5390a7c7-147a-4af0-8ec9-7488f05a26cb> | 2008-03-07 01:01:42 +0000 |
---|---|---|
committer | tzafrir <tzafrir@5390a7c7-147a-4af0-8ec9-7488f05a26cb> | 2008-03-07 01:01:42 +0000 |
commit | 6ef8eb9d00ee602c2fbec09984ec1bfd53cfa7db (patch) | |
tree | e0132ef0f310e483ac9d8a1f4697ea47837f1e52 | |
parent | 1a571d19740d87e24b92ef49a2d38b26256112ae (diff) |
Also print channel alarms in /proc/zaptel files.
git-svn-id: http://svn.digium.com/svn/zaptel/branches/1.4@3958 5390a7c7-147a-4af0-8ec9-7488f05a26cb
-rw-r--r-- | kernel/zaptel-base.c | 42 |
1 files changed, 27 insertions, 15 deletions
diff --git a/kernel/zaptel-base.c b/kernel/zaptel-base.c index 0a16462..3ecee1a 100644 --- a/kernel/zaptel-base.c +++ b/kernel/zaptel-base.c @@ -513,6 +513,31 @@ static char *sigstr(int sig) } +static inline int fill_alarm_string(char *buf, int count, int alarms) +{ + int len = 0; + + if (alarms > 0) { + if (alarms & ZT_ALARM_BLUE) + len += snprintf(buf + len, count - len, "BLUE "); + if (alarms & ZT_ALARM_YELLOW) + len += snprintf(buf + len, count - len, "YELLOW "); + if (alarms & ZT_ALARM_RED) + len += snprintf(buf + len, count - len, "RED "); + if (alarms & ZT_ALARM_LOOPBACK) + len += snprintf(buf + len, count - len, "LOOP "); + if (alarms & ZT_ALARM_RECOVER) + len += snprintf(buf + len, count - len, "RECOVERING "); + if (alarms & ZT_ALARM_NOTOPEN) + len += snprintf(buf + len, count - len, "NOTOPEN "); + } + if(len > 0) { + len--; + buf[len] = '\0'; /* strip last space */ + } + return len; +} + static int zaptel_proc_read(char *page, char **start, off_t off, int count, int *eof, void *data) { int x, len = 0; @@ -558,21 +583,7 @@ static int zaptel_proc_read(char *page, char **start, off_t off, int count, int len += sprintf(page + len, " "); /* list alarms */ - if (spans[span]->alarms && (spans[span]->alarms > 0)) { - if (spans[span]->alarms & ZT_ALARM_BLUE) - len += sprintf(page + len, "BLUE "); - if (spans[span]->alarms & ZT_ALARM_YELLOW) - len += sprintf(page + len, "YELLOW "); - if (spans[span]->alarms & ZT_ALARM_RED) - len += sprintf(page + len, "RED "); - if (spans[span]->alarms & ZT_ALARM_LOOPBACK) - len += sprintf(page + len, "LOOP "); - if (spans[span]->alarms & ZT_ALARM_RECOVER) - len += sprintf(page + len, "RECOVERING "); - if (spans[span]->alarms & ZT_ALARM_NOTOPEN) - len += sprintf(page + len, "NOTOPEN "); - - } + len += fill_alarm_string(page + len, count - len, spans[span]->alarms); if (spans[span]->syncsrc && (spans[span]->syncsrc == spans[span]->spanno)) len += sprintf(page + len, "ClockSource "); len += sprintf(page + len, "\n"); @@ -613,6 +624,7 @@ static int zaptel_proc_read(char *page, char **start, off_t off, int count, int len += sprintf(page + len, "(no pcm) "); } #endif + len += fill_alarm_string(page + len, count - len, chans[x]->chan_alarms); len += sprintf(page + len, "\n"); } if (len <= off) { /* If everything printed so far is before beginning of request */ |