{
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
* 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;
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;