summaryrefslogtreecommitdiff
path: root/kernel/zaptel-base.c
diff options
context:
space:
mode:
authortzafrir <tzafrir@5390a7c7-147a-4af0-8ec9-7488f05a26cb>2008-03-07 01:01:42 +0000
committertzafrir <tzafrir@5390a7c7-147a-4af0-8ec9-7488f05a26cb>2008-03-07 01:01:42 +0000
commit6ef8eb9d00ee602c2fbec09984ec1bfd53cfa7db (patch)
treee0132ef0f310e483ac9d8a1f4697ea47837f1e52 /kernel/zaptel-base.c
parent1a571d19740d87e24b92ef49a2d38b26256112ae (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
Diffstat (limited to 'kernel/zaptel-base.c')
-rw-r--r--kernel/zaptel-base.c42
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 */