Made changes to go with pciradio zaptel driver changes
authorJim Dixon <telesistant@hotmail.com>
Wed, 22 Dec 2004 05:02:00 +0000 (05:02 +0000)
committerJim Dixon <telesistant@hotmail.com>
Wed, 22 Dec 2004 05:02:00 +0000 (05:02 +0000)
git-svn-id: https://origsvn.digium.com/svn/asterisk/trunk@4525 65c4cc65-6c06-0410-ace0-fbb531ad65f3

apps/app_rpt.c

index 1eb8782..702f465 100755 (executable)
@@ -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;