diff --git a/apps/app_rpt.c b/apps/app_rpt.c index 1eb878234631052f2b834563522d4efbe5914fb4..702f465e285360013d606e682fd9f7f3daa70d1d 100755 --- a/apps/app_rpt.c +++ b/apps/app_rpt.c @@ -329,18 +329,13 @@ static int play_tone_pair(struct ast_channel *chan, int f1, int f2, int duration { int flags = ZT_IOMUX_WRITEEMPTY; int res; - struct ast_frame *f; if ((res = ast_tonepair_start(chan, f1, f2, duration, amplitude))) return res; while(chan->generatordata) { - f = ast_read(chan); - if (f) - ast_frfree(f); - else - return -1; - } + if (ast_safe_sleep(chan,1)) return -1; + } /* * Wait for the zaptel driver to physically write the tone blocks to the hardware @@ -2577,7 +2572,7 @@ char *s; * Shift out a formatted serial bit stream */ -static void rbi_out(struct rpt *myrpt,unsigned char *data) +static void rbi_out_parallel(struct rpt *myrpt,unsigned char *data) { int i,j; unsigned char od,d; @@ -2603,6 +2598,28 @@ static void rbi_out(struct rpt *myrpt,unsigned char *data) for(delayvar = 1; delayvar < 50000; delayvar++); } +static void rbi_out(struct rpt *myrpt,unsigned char *data) +{ +struct zt_radio_param r; + + memset(&r,0,sizeof(struct zt_radio_param)); + r.radpar = ZT_RADPAR_REMMODE; + r.data = ZT_RADPAR_REM_RBI1; + /* if setparam ioctl fails, its probably not a pciradio card */ + if (ioctl(myrpt->rxchannel->fds[0],ZT_RADIO_SETPARAM,&r) == -1) + { + rbi_out_parallel(myrpt,data); + return; + } + r.radpar = ZT_RADPAR_REMCOMMAND; + memcpy(&r.data,data,5); + if (ioctl(myrpt->rxchannel->fds[0],ZT_RADIO_SETPARAM,&r) == -1) + { + ast_log(LOG_WARNING,"Cannot send RBI command for channel %s\n",myrpt->rxchannel->name); + return; + } +} + static int setrbi(struct rpt *myrpt) { char tmp[MAXREMSTR] = "",rbicmd[5],*s;