Merge remote-tracking branch 'origin/master'

This commit is contained in:
Michal Bielicki 2012-01-02 14:58:19 +01:00
commit 65fcd074de
4 changed files with 41 additions and 14 deletions

View File

@ -1016,7 +1016,7 @@ static FIO_READ_FUNCTION(wanpipe_read)
memset(&hdrframe, 0, sizeof(hdrframe)); memset(&hdrframe, 0, sizeof(hdrframe));
rx_len = sangoma_readmsg_tdm(ftdmchan->sockfd, &hdrframe, (int)sizeof(hdrframe), data, (int)*datalen, 0); rx_len = sangoma_readmsg_tdm(ftdmchan->sockfd, &hdrframe, (int)sizeof(hdrframe), data, (int)*datalen, 0);
*datalen = rx_len; *datalen = 0;
if (rx_len == 0) { if (rx_len == 0) {
ftdm_log_chan_msg(ftdmchan, FTDM_LOG_WARNING, "Read 0 bytes\n"); ftdm_log_chan_msg(ftdmchan, FTDM_LOG_WARNING, "Read 0 bytes\n");
@ -1033,6 +1033,7 @@ static FIO_READ_FUNCTION(wanpipe_read)
#endif #endif
return FTDM_FAIL; return FTDM_FAIL;
} }
*datalen = rx_len;
if (ftdm_channel_test_feature(ftdmchan, FTDM_CHANNEL_FEATURE_IO_STATS)) { if (ftdm_channel_test_feature(ftdmchan, FTDM_CHANNEL_FEATURE_IO_STATS)) {
wanpipe_read_stats(ftdmchan, &hdrframe); wanpipe_read_stats(ftdmchan, &hdrframe);

View File

@ -34,6 +34,7 @@
* *
* Moises Silva <moy@sangoma.com> * Moises Silva <moy@sangoma.com>
* W McRoberts <fs@whmcr.com> * W McRoberts <fs@whmcr.com>
* Puskás Zsolt <errotan@gmail.com>
* *
*/ */
@ -877,10 +878,13 @@ static FIO_COMMAND_FUNCTION(zt_command)
static FIO_GET_ALARMS_FUNCTION(zt_get_alarms) static FIO_GET_ALARMS_FUNCTION(zt_get_alarms)
{ {
struct zt_spaninfo info; struct zt_spaninfo info;
zt_params_t params;
memset(&info, 0, sizeof(info)); memset(&info, 0, sizeof(info));
info.span_no = ftdmchan->physical_span_id; info.span_no = ftdmchan->physical_span_id;
memset(&params, 0, sizeof(params));
if (ioctl(CONTROL_FD, codes.SPANSTAT, &info)) { if (ioctl(CONTROL_FD, codes.SPANSTAT, &info)) {
snprintf(ftdmchan->last_error, sizeof(ftdmchan->last_error), "ioctl failed (%s)", strerror(errno)); snprintf(ftdmchan->last_error, sizeof(ftdmchan->last_error), "ioctl failed (%s)", strerror(errno));
snprintf(ftdmchan->span->last_error, sizeof(ftdmchan->span->last_error), "ioctl failed (%s)", strerror(errno)); snprintf(ftdmchan->span->last_error, sizeof(ftdmchan->span->last_error), "ioctl failed (%s)", strerror(errno));
@ -889,6 +893,27 @@ static FIO_GET_ALARMS_FUNCTION(zt_get_alarms)
ftdmchan->alarm_flags = info.alarms; ftdmchan->alarm_flags = info.alarms;
/* get channel alarms if span has no alarms */
if (info.alarms == FTDM_ALARM_NONE) {
if (ioctl(ftdmchan->sockfd, codes.GET_PARAMS, &params)) {
snprintf(ftdmchan->last_error, sizeof(ftdmchan->last_error), "ioctl failed (%s)", strerror(errno));
snprintf(ftdmchan->span->last_error, sizeof(ftdmchan->span->last_error), "ioctl failed (%s)", strerror(errno));
return FTDM_FAIL;
}
if (params.chan_alarms > 0) {
if (params.chan_alarms == DAHDI_ALARM_YELLOW) {
ftdmchan->alarm_flags = FTDM_ALARM_YELLOW;
}
else if (params.chan_alarms == DAHDI_ALARM_BLUE) {
ftdmchan->alarm_flags = FTDM_ALARM_BLUE;
}
else {
ftdmchan->alarm_flags = FTDM_ALARM_RED;
}
}
}
return FTDM_SUCCESS; return FTDM_SUCCESS;
} }

View File

@ -339,6 +339,10 @@ ZT_ABIT = 8
#define DAHDI_HDLCRAWMODE _IOW (DAHDI_CODE, 36, int) /* Set a clear channel into HDLC w/out FCS checking/calculation mode */ #define DAHDI_HDLCRAWMODE _IOW (DAHDI_CODE, 36, int) /* Set a clear channel into HDLC w/out FCS checking/calculation mode */
#define DAHDI_HDLCFCSMODE _IOW (DAHDI_CODE, 37, int) /* Set a clear channel into HDLC w/ FCS mode */ #define DAHDI_HDLCFCSMODE _IOW (DAHDI_CODE, 37, int) /* Set a clear channel into HDLC w/ FCS mode */
/* Dahdi channel alarms */
#define DAHDI_ALARM_YELLOW (1 << 2) /* Yellow Alarm */
#define DAHDI_ALARM_BLUE (1 << 4) /* Blue Alarm */
/* Specify a channel on /dev/dahdi/chan -- must be done before any other ioctl's and is only valid on /dev/dahdi/chan */ /* Specify a channel on /dev/dahdi/chan -- must be done before any other ioctl's and is only valid on /dev/dahdi/chan */
#define DAHDI_SPECIFY _IOW (DAHDI_CODE, 38, int) #define DAHDI_SPECIFY _IOW (DAHDI_CODE, 38, int)

View File

@ -2342,6 +2342,9 @@ SWITCH_DECLARE(int) switch_fulldate_cmp(const char *exp, switch_time_t *ts)
char *sTime; char *sTime;
switch_time_t tsStart; switch_time_t tsStart;
switch_time_t tsEnd; switch_time_t tsEnd;
struct tm tmTmp;
int year, month, day;
int hour, min, sec;
switch_assert(dup); switch_assert(dup);
@ -2350,16 +2353,13 @@ SWITCH_DECLARE(int) switch_fulldate_cmp(const char *exp, switch_time_t *ts)
*sEnd++ = '\0'; *sEnd++ = '\0';
sDate = sStart; sDate = sStart;
if ((sTime=strchr(sStart, ' '))) { if ((sTime=strchr(sStart, ' '))) {
struct tm tmTmp;
int year, month, day;
int hour, min, sec;
*sTime++ = '\0'; *sTime++ = '\0';
memset(&tmTmp, 0, sizeof(tmTmp));
switch_split_date(sDate, &year, &month, &day); switch_split_date(sDate, &year, &month, &day);
switch_split_time(sTime, &hour, &min, &sec); switch_split_time(sTime, &hour, &min, &sec);
tmTmp.tm_year = year; tmTmp.tm_year = year-1900;
tmTmp.tm_mon = month; tmTmp.tm_mon = month-1;
tmTmp.tm_mday = day; tmTmp.tm_mday = day;
tmTmp.tm_hour = hour; tmTmp.tm_hour = hour;
@ -2370,16 +2370,13 @@ SWITCH_DECLARE(int) switch_fulldate_cmp(const char *exp, switch_time_t *ts)
sDate = sEnd; sDate = sEnd;
if ((sTime=strchr(sEnd, ' '))) { if ((sTime=strchr(sEnd, ' '))) {
struct tm tmTmp;
int year, month, day;
int hour, min, sec;
*sTime++ = '\0'; *sTime++ = '\0';
memset(&tmTmp, 0, sizeof(tmTmp));
switch_split_date(sDate, &year, &month, &day); switch_split_date(sDate, &year, &month, &day);
switch_split_time(sTime, &hour, &min, &sec); switch_split_time(sTime, &hour, &min, &sec);
tmTmp.tm_year = year; tmTmp.tm_year = year-1900;
tmTmp.tm_mon = month; tmTmp.tm_mon = month-1;
tmTmp.tm_mday = day; tmTmp.tm_mday = day;
tmTmp.tm_hour = hour; tmTmp.tm_hour = hour;
@ -2388,7 +2385,7 @@ SWITCH_DECLARE(int) switch_fulldate_cmp(const char *exp, switch_time_t *ts)
tmTmp.tm_isdst = 0; tmTmp.tm_isdst = 0;
tsEnd = mktime(&tmTmp); tsEnd = mktime(&tmTmp);
if (tsStart <= *ts && tsEnd > *ts) { if (tsStart <= *ts/1000000 && tsEnd > *ts/1000000) {
switch_safe_free(dup); switch_safe_free(dup);
return 1; return 1;
} }