Update of /usr/cvsroot/zaptel
In directory mongoose.digium.com:/tmp/cvs-serv9516

Modified Files:
        wct4xxp.c 
Log Message:
minor optimizations


Index: wct4xxp.c
===================================================================
RCS file: /usr/cvsroot/zaptel/wct4xxp.c,v
retrieving revision 1.80
retrieving revision 1.81
diff -u -d -r1.80 -r1.81
--- wct4xxp.c   27 Jul 2005 22:05:47 -0000      1.80
+++ wct4xxp.c   8 Aug 2005 22:03:11 -0000       1.81
@@ -523,9 +523,12 @@
        spin_unlock_irqrestore(&wc->reglock, flags);
 }
 
+static const char vpm_digits[] = {'0', '1', '2', '3', '4', '5', '6', '7', '8', 
'9', 'A', 'B', 'C', 'D', '*', '#'};
+
 static void __t4_check_vpm(struct t4 *wc, unsigned int newio)
 {
        unsigned int digit, regval = 0;
+       unsigned int regbyte;
        int x, i;
        short energy;
        static unsigned int lastio = 0;
@@ -541,27 +544,22 @@
                        continue;
                ts = wc->tspans[x%4];
                /* Start of DTMF detection process */   
-               regval = __t4_vpm_in(wc, x, 0xb8);
-               __t4_vpm_out(wc, x, 0xb8, regval); /* Write 1 to clear */
-               regval = regval << 8;
-               regval |= __t4_vpm_in(wc, x, 0xb9);
-               __t4_vpm_out(wc, x, 0xb9, regval & 0xff);
+               regbyte = __t4_vpm_in(wc, x, 0xb8);
+               __t4_vpm_out(wc, x, 0xb8, regbyte); /* Write 1 to clear */
+               regval = regbyte << 8;
+               regbyte = __t4_vpm_in(wc, x, 0xb9);
+               __t4_vpm_out(wc, x, 0xb9, regbyte);
+               regval |= regbyte;
 
                for(i = 0; (i < MAX_DTMF_DET) && regval; i++) {
                        if(regval & 0x0001) {
                                int channel = (i << 1) + (x >> 2);
                                int base = channel - 1;
+
                                if (!wc->t1e1)
                                        base -= 4;
-                               digit = __t4_vpm_in(wc, x, 0xa8 + i);
-                               if (digit < 10) 
-                                       digit += '0'; 
-                               else if (digit < 0xe) 
-                                       digit += 'A' - 0xe; 
-                               else if (digit == 0xe) 
-                                       digit = '*';
-                               else if (digit == 0xf) 
-                                       digit = '#';
+                               regbyte = __t4_vpm_in(wc, x, 0xa8 + i);
+                               digit = vpm_digits[regbyte];
                                energy = __t4_vpm_in(wc, x, 0x58 + channel);
                                energy = ZT_XLAW(energy, ts->chans);
                                ts->dtmfactive |= (1 << base);

_______________________________________________
Asterisk-Cvs mailing list
[email protected]
http://lists.digium.com/mailman/listinfo/asterisk-cvs

Reply via email to