Exemplo n.º 1
0
static int __pri_lpwrap_read(struct pri *pri, void *buf, int buflen)
{
	struct lpwrap_pri *spri = (struct lpwrap_pri *) pri_get_userdata(pri);
	ftdm_size_t len = buflen;
	ftdm_status_t zst;
	int res;

	if ((zst = ftdm_channel_read(spri->dchan, buf, &len)) != FTDM_SUCCESS) {
		if (zst == FTDM_FAIL) {
			ftdm_log(FTDM_LOG_CRIT, "span %d D-READ FAIL! [%s]\n", spri->span->span_id, spri->dchan->last_error);
			spri->errs++;
		} else {
			ftdm_log(FTDM_LOG_CRIT, "span %d D-READ TIMEOUT\n", spri->span->span_id);
		}
		/* we cannot return -1, libpri seems to expect values >= 0 */
		return 0;
	}
	spri->errs = 0;
	res = (int)len;

	if (res > 0) {
		memset(&((unsigned char*)buf)[res], 0, 2);
		res += 2;
#ifdef IODEBUG
		{
			char bb[2048] = { 0 };

			print_hex_bytes(buf, res - 2, bb, sizeof(bb));
			ftdm_log(FTDM_LOG_DEBUG, "READ %d\n", res - 2);
		}
#endif
	}
	return res;
}
Exemplo n.º 2
0
static int __pri_lpwrap_read(struct pri *pri, void *buf, int buflen)
{
	struct lpwrap_pri *spri = (struct lpwrap_pri *) pri_get_userdata(pri);
	zap_size_t len = buflen;
	int res;
	zap_status_t zst;

	if ((zst = zap_channel_read(spri->dchan, buf, &len)) != ZAP_SUCCESS) {
		if (zst == ZAP_FAIL) {
			zap_log(ZAP_LOG_CRIT, "span %d D-READ FAIL! [%s]\n", spri->span->span_id, spri->dchan->last_error);
			spri->errs++;
		} else {
			zap_log(ZAP_LOG_CRIT, "span %d D-READ TIMEOUT\n", spri->span->span_id);
		}
		
		zap_clear_flag(spri, LPWRAP_PRI_READY);
		return -1;
	}
	spri->errs = 0;
	res = (int)len;
	memset(&((unsigned char*)buf)[res],0,2);
	res+=2;

#ifdef IODEBUG
	{
		char bb[2048] = { 0 };

		print_hex_bytes(buf, res - 2, bb, sizeof(bb));
		zap_log(ZAP_LOG_DEBUG, "READ %d\n", res-2);
	}
#endif

	return res;
}
Exemplo n.º 3
0
static int pri_io_read(struct pri *pri, void *buf, int buflen)
{
    int res;
    ftdm_status_t zst;
    pritap_t *pritap = pri_get_userdata(pri);
    ftdm_size_t len = buflen;

    if ((zst = ftdm_channel_read(pritap->dchan, buf, &len)) != FTDM_SUCCESS) {
        if (zst == FTDM_FAIL) {
            ftdm_log(FTDM_LOG_CRIT, "span %d D channel read fail! [%s]\n", pritap->span->span_id, pritap->dchan->last_error);
        } else {
            ftdm_log(FTDM_LOG_CRIT, "span %d D channel read timeout!\n", pritap->span->span_id);
        }
        return -1;
    }

    res = (int)len;

    memset(&((unsigned char*)buf)[res],0,2);
    res += 2;

    /* libpri passive q921 raw dump does not work for all frames */
    if (pritap->debug & PRI_DEBUG_Q921_RAW) {
        char hbuf[2048] = { 0 };

        print_hex_bytes(buf, len, hbuf, sizeof(hbuf));
        ftdm_log_chan(pritap->dchan, FTDM_LOG_DEBUG, "READ %"FTDM_SIZE_FMT"\n%s\n", len, hbuf);
    }
    return res;
}
Exemplo n.º 4
0
static void s_pri_message(struct pri *pri, char *s)
{
    pritap_t *pritap = pri_get_userdata(pri);

    if (pritap && pritap->dchan) {
        ftdm_log_chan(pritap->dchan, FTDM_LOG_DEBUG, "%s", s);
    } else {
        ftdm_log(FTDM_LOG_DEBUG, "%s", s);
    }
}
Exemplo n.º 5
0
static void s_pri_error(struct pri *pri, char *s)
{
    pritap_t *pritap = pri_get_userdata(pri);

    if (pritap && pritap->dchan) {
        ftdm_log_chan(pritap->dchan, FTDM_LOG_ERROR, "%s", s);
    } else {
        ftdm_log(FTDM_LOG_ERROR, "%s", s);
    }
}
Exemplo n.º 6
0
static int pri_io_write(struct pri *pri, void *buf, int buflen)
{
    pritap_t *pritap = pri_get_userdata(pri);
    ftdm_size_t len = buflen - 2;

    /* libpri passive q921 raw dump does not work for all frames */
    if (pritap->debug & PRI_DEBUG_Q921_RAW) {
        char hbuf[2048] = { 0 };

        print_hex_bytes(buf, len, hbuf, sizeof(hbuf));
        ftdm_log_chan(pritap->dchan, FTDM_LOG_DEBUG, "WRITE %"FTDM_SIZE_FMT"\n%s\n", len, hbuf);
    }

    if (ftdm_channel_write(pritap->dchan, buf, buflen, &len) != FTDM_SUCCESS) {
        ftdm_log(FTDM_LOG_CRIT, "span %d D channel write failed! [%s]\n", pritap->span->span_id, pritap->dchan->last_error);
        return -1;
    }

    return (int)buflen;
}
Exemplo n.º 7
0
static int __pri_lpwrap_write(struct pri *pri, void *buf, int buflen)
{
	struct lpwrap_pri *spri = (struct lpwrap_pri *) pri_get_userdata(pri);
	ftdm_size_t len = buflen - 2;

	if (ftdm_channel_write(spri->dchan, buf, buflen, &len) != FTDM_SUCCESS) {
		ftdm_log(FTDM_LOG_CRIT, "span %d D-WRITE FAIL! [%s]\n", spri->span->span_id, spri->dchan->last_error);
		/* we cannot return -1, libpri seems to expect values >= 0 */
		return 0;
	}

#ifdef IODEBUG
	{
		char bb[2048] = { 0 };

		print_hex_bytes(buf, buflen - 2, bb, sizeof(bb));
		ftdm_log(FTDM_LOG_DEBUG, "WRITE %d\n", (int)buflen - 2);
	}
#endif
	return (int)buflen;
}
Exemplo n.º 8
0
static int __pri_lpwrap_write(struct pri *pri, void *buf, int buflen)
{
	struct lpwrap_pri *spri = (struct lpwrap_pri *) pri_get_userdata(pri);
	zap_size_t len = buflen -2;

	if (zap_channel_write(spri->dchan, buf, buflen, &len) != ZAP_SUCCESS) {
		zap_log(ZAP_LOG_CRIT, "span %d D-WRITE FAIL! [%s]\n", spri->span->span_id, spri->dchan->last_error);
		zap_clear_flag(spri, LPWRAP_PRI_READY);
		return -1;
	}

#ifdef IODEBUG
	{
		char bb[2048] = { 0 };

		print_hex_bytes(buf, buflen - 2, bb, sizeof(bb));
		zap_log(ZAP_LOG_DEBUG, "WRITE %d\n", (int)buflen-2);
	}
#endif

	return (int) buflen;
}