[Asterisk-cvs] zaptel wcfxs.c,1.84.2.13,1.84.2.14

kpfleming at lists.digium.com kpfleming at lists.digium.com
Wed Jul 27 18:25:52 CDT 2005


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

Modified Files:
      Tag: v1-0
	wcfxs.c 
Log Message:
make memory layout of private structures a little more sensible


Index: wcfxs.c
===================================================================
RCS file: /usr/cvsroot/zaptel/Attic/wcfxs.c,v
retrieving revision 1.84.2.13
retrieving revision 1.84.2.14
diff -u -d -r1.84.2.13 -r1.84.2.14
--- wcfxs.c	25 Jul 2005 14:30:39 -0000	1.84.2.13
+++ wcfxs.c	27 Jul 2005 22:32:19 -0000	1.84.2.14
@@ -295,34 +295,34 @@
 	union {
 		struct {
 #ifdef AUDIO_RINGCHECK
-			unsigned int pegtimer[NUM_CARDS];
-			int pegcount[NUM_CARDS];
-			int peg[NUM_CARDS];
-			int ring[NUM_CARDS];
+			unsigned int pegtimer;
+			int pegcount;
+			int peg;
+			int ring;
 #else			
-			int wasringing[NUM_CARDS];
+			int wasringing;
 #endif			
-			int ringdebounce[NUM_CARDS];
-			int offhook[NUM_CARDS];
-			int battdebounce[NUM_CARDS];
-			int nobatttimer[NUM_CARDS];
-			int battery[NUM_CARDS];
-		        int lastpol[NUM_CARDS];
-		        int polarity[NUM_CARDS];
-		        int polaritydebounce[NUM_CARDS];
+			int ringdebounce;
+			int offhook;
+			int battdebounce;
+			int nobatttimer;
+			int battery;
+		        int lastpol;
+		        int polarity;
+		        int polaritydebounce;
 		} fxo;
 		struct {
-			int oldrxhook[NUM_CARDS];
-			int debouncehook[NUM_CARDS];
-			int lastrxhook[NUM_CARDS];
-			int debounce[NUM_CARDS];
-			int ohttimer[NUM_CARDS];
-			int idletxhookstate[NUM_CARDS];		/* IDLE changing hook state */
-			int lasttxhook[NUM_CARDS];
-			int palarms[NUM_CARDS];
-			struct calregs calregs[NUM_CARDS];
+			int oldrxhook;
+			int debouncehook;
+			int lastrxhook;
+			int debounce;
+			int ohttimer;
+			int idletxhookstate;		/* IDLE changing hook state */
+			int lasttxhook;
+			int palarms;
+			struct calregs calregs;
 		} fxs;
-	} mod;
+	} mod[NUM_CARDS];
 
 	/* Receive hook state and debouncing */
 	int modtype[NUM_CARDS];
@@ -397,46 +397,46 @@
 	short sample;
 	if (wc->modtype[card] != MOD_TYPE_FXO)
 		return;
-	wc->mod.fxo.pegtimer[card] += ZT_CHUNKSIZE;
+	wc->mod[card].fxo.pegtimer += ZT_CHUNKSIZE;
 	for (x=0;x<ZT_CHUNKSIZE;x++) {
 		/* Look for pegging to indicate ringing */
 		sample = ZT_XLAW(wc->chans[card].readchunk[x], (&(wc->chans[card])));
-		if ((sample > 10000) && (wc->mod.fxo.peg[card] != 1)) {
+		if ((sample > 10000) && (wc->mod[card].fxo.peg != 1)) {
 			if (debug > 1) printk("High peg!\n");
-			if ((wc->mod.fxo.pegtimer[card] < PEGTIME) && (wc->mod.fxo.pegtimer[card] > MINPEGTIME))
-				wc->mod.fxo.pegcount[card]++;
-			wc->mod.fxo.pegtimer[card] = 0;
-			wc->mod.fxo.peg[card] = 1;
-		} else if ((sample < -10000) && (wc->mod.fxo.peg[card] != -1)) {
+			if ((wc->mod[card].fxo.pegtimer < PEGTIME) && (wc->mod[card].fxo.pegtimer > MINPEGTIME))
+				wc->mod[card].fxo.pegcount++;
+			wc->mod[card].fxo.pegtimer = 0;
+			wc->mod[card].fxo.peg = 1;
+		} else if ((sample < -10000) && (wc->mod[card].fxo.peg != -1)) {
 			if (debug > 1) printk("Low peg!\n");
-			if ((wc->mod.fxo.pegtimer[card] < (PEGTIME >> 2)) && (wc->mod.fxo.pegtimer[card] > (MINPEGTIME >> 2)))
-				wc->mod.fxo.pegcount[card]++;
-			wc->mod.fxo.pegtimer[card] = 0;
-			wc->mod.fxo.peg[card] = -1;
+			if ((wc->mod[card].fxo.pegtimer < (PEGTIME >> 2)) && (wc->mod[card].fxo.pegtimer > (MINPEGTIME >> 2)))
+				wc->mod[card].fxo.pegcount++;
+			wc->mod[card].fxo.pegtimer = 0;
+			wc->mod[card].fxo.peg = -1;
 		}
 	}
-	if (wc->mod.fxo.pegtimer[card] > PEGTIME) {
+	if (wc->mod[card].fxo.pegtimer > PEGTIME) {
 		/* Reset pegcount if our timer expires */
-		wc->mod.fxo.pegcount[card] = 0;
+		wc->mod[card].fxo.pegcount = 0;
 	}
 	/* Decrement debouncer if appropriate */
-	if (wc->mod.fxo.ringdebounce[card])
-		wc->mod.fxo.ringdebounce[card]--;
-	if (!wc->mod.fxo.offhook[card] && !wc->mod.fxo.ringdebounce[card]) {
-		if (!wc->mod.fxo.ring[card] && (wc->mod.fxo.pegcount[card] > PEGCOUNT)) {
+	if (wc->mod[card].fxo.ringdebounce)
+		wc->mod[card].fxo.ringdebounce--;
+	if (!wc->mod[card].fxo.offhook && !wc->mod[card].fxo.ringdebounce) {
+		if (!wc->mod[card].fxo.ring && (wc->mod[card].fxo.pegcount > PEGCOUNT)) {
 			/* It's ringing */
 			if (debug)
 				printk("RING on %d/%d!\n", wc->span.spanno, card + 1);
-			if (!wc->mod.fxo.offhook[card])
+			if (!wc->mod[card].fxo.offhook)
 				zt_hooksig(&wc->chans[card], ZT_RXSIG_RING);
-			wc->mod.fxo.ring[card] = 1;
+			wc->mod[card].fxo.ring = 1;
 		}
-		if (wc->mod.fxo.ring[card] && !wc->mod.fxo.pegcount[card]) {
+		if (wc->mod[card].fxo.ring && !wc->mod[card].fxo.pegcount) {
 			/* No more ring */
 			if (debug)
 				printk("NO RING on %d/%d!\n", wc->span.spanno, card + 1);
 			zt_hooksig(&wc->chans[card], ZT_RXSIG_OFFHOOK);
-			wc->mod.fxo.ring[card] = 0;
+			wc->mod[card].fxo.ring = 0;
 		}
 	}
 }
@@ -781,7 +781,7 @@
 		poopy++;
 	}
 	b &= 0x9b;
-	if (wc->mod.fxo.offhook[card]) {
+	if (wc->mod[card].fxo.offhook) {
 		if (b != 0x9)
 			wcfxs_setreg(wc, card, 5, 0x9);
 	} else {
@@ -791,29 +791,29 @@
 	if (poopy)
 		return;
 #ifndef AUDIO_RINGCHECK
-	if (!wc->mod.fxo.offhook[card]) {
+	if (!wc->mod[card].fxo.offhook) {
 		res = wcfxs_getreg(wc, card, 5);
-		if ((res & 0x60) && wc->mod.fxo.battery[card]) {
-			wc->mod.fxo.ringdebounce[card] += (ZT_CHUNKSIZE * 4);
-			if (wc->mod.fxo.ringdebounce[card] >= ZT_CHUNKSIZE * 64) {
-				if (!wc->mod.fxo.wasringing[card]) {
-					wc->mod.fxo.wasringing[card] = 1;
+		if ((res & 0x60) && wc->mod[card].fxo.battery) {
+			wc->mod[card].fxo.ringdebounce += (ZT_CHUNKSIZE * 4);
+			if (wc->mod[card].fxo.ringdebounce >= ZT_CHUNKSIZE * 64) {
+				if (!wc->mod[card].fxo.wasringing) {
+					wc->mod[card].fxo.wasringing = 1;
 					zt_hooksig(&wc->chans[card], ZT_RXSIG_RING);
 					if (debug)
 						printk("RING on %d/%d!\n", wc->span.spanno, card + 1);
 				}
-				wc->mod.fxo.ringdebounce[card] = ZT_CHUNKSIZE * 64;
+				wc->mod[card].fxo.ringdebounce = ZT_CHUNKSIZE * 64;
 			}
 		} else {
-			wc->mod.fxo.ringdebounce[card] -= ZT_CHUNKSIZE;
-			if (wc->mod.fxo.ringdebounce[card] <= 0) {
-				if (wc->mod.fxo.wasringing[card]) {
-					wc->mod.fxo.wasringing[card] =0;
+			wc->mod[card].fxo.ringdebounce -= ZT_CHUNKSIZE;
+			if (wc->mod[card].fxo.ringdebounce <= 0) {
+				if (wc->mod[card].fxo.wasringing) {
+					wc->mod[card].fxo.wasringing =0;
 					zt_hooksig(&wc->chans[card], ZT_RXSIG_OFFHOOK);
 					if (debug)
 						printk("NO RING on %d/%d!\n", wc->span.spanno, card + 1);
 				}
-				wc->mod.fxo.ringdebounce[card] = 0;
+				wc->mod[card].fxo.ringdebounce = 0;
 			}
 				
 		}
@@ -825,20 +825,20 @@
 		static int count = 0;
 		if (!(count++ % 100)) {
 			printk("Card %d: Voltage: %d  Debounce %d\n", card + 1, 
-			       b, wc->mod.fxo.battdebounce[card]);
+			       b, wc->mod[card].fxo.battdebounce);
 		}
 	}
 #endif	
 	if (abs(b) < BATT_THRESH) {
-		wc->mod.fxo.nobatttimer[card]++;
+		wc->mod[card].fxo.nobatttimer++;
 #if 0
-		if (wc->mod.fxo.battery[card])
-			printk("Battery loss: %d (%d debounce)\n", b, wc->mod.fxo.battdebounce[card]);
+		if (wc->mod[card].fxo.battery)
+			printk("Battery loss: %d (%d debounce)\n", b, wc->mod[card].fxo.battdebounce);
 #endif
-		if (wc->mod.fxo.battery[card] && !wc->mod.fxo.battdebounce[card]) {
+		if (wc->mod[card].fxo.battery && !wc->mod[card].fxo.battdebounce) {
 			if (debug)
 				printk("NO BATTERY on %d/%d!\n", wc->span.spanno, card + 1);
-			wc->mod.fxo.battery[card] =  0;
+			wc->mod[card].fxo.battery =  0;
 #ifdef	JAPAN
 			if ((!wc->ohdebounce) && wc->offhook) {
 				zt_hooksig(&wc->chans[card], ZT_RXSIG_ONHOOK);
@@ -851,11 +851,11 @@
 #else
 			zt_hooksig(&wc->chans[card], ZT_RXSIG_ONHOOK);
 #endif
-			wc->mod.fxo.battdebounce[card] = BATT_DEBOUNCE;
-		} else if (!wc->mod.fxo.battery[card])
-			wc->mod.fxo.battdebounce[card] = BATT_DEBOUNCE;
+			wc->mod[card].fxo.battdebounce = BATT_DEBOUNCE;
+		} else if (!wc->mod[card].fxo.battery)
+			wc->mod[card].fxo.battdebounce = BATT_DEBOUNCE;
 	} else if (abs(b) > BATT_THRESH) {
-		if (!wc->mod.fxo.battery[card] && !wc->mod.fxo.battdebounce[card]) {
+		if (!wc->mod[card].fxo.battery && !wc->mod[card].fxo.battdebounce) {
 			if (debug)
 				printk("BATTERY on %d/%d (%s)!\n", wc->span.spanno, card + 1, 
 					(b < 0) ? "-" : "+");			    
@@ -869,41 +869,41 @@
 #else
 			zt_hooksig(&wc->chans[card], ZT_RXSIG_OFFHOOK);
 #endif
-			wc->mod.fxo.battery[card] = 1;
-			wc->mod.fxo.nobatttimer[card] = 0;
-			wc->mod.fxo.battdebounce[card] = BATT_DEBOUNCE;
-		} else if (wc->mod.fxo.battery[card])
-			wc->mod.fxo.battdebounce[card] = BATT_DEBOUNCE;
+			wc->mod[card].fxo.battery = 1;
+			wc->mod[card].fxo.nobatttimer = 0;
+			wc->mod[card].fxo.battdebounce = BATT_DEBOUNCE;
+		} else if (wc->mod[card].fxo.battery)
+			wc->mod[card].fxo.battdebounce = BATT_DEBOUNCE;
 
-		if (wc->mod.fxo.lastpol[card] >= 0) {
+		if (wc->mod[card].fxo.lastpol >= 0) {
 		    if (b < 0) {
-			wc->mod.fxo.lastpol[card] = -1;
-			wc->mod.fxo.polaritydebounce[card] = POLARITY_DEBOUNCE;
+			wc->mod[card].fxo.lastpol = -1;
+			wc->mod[card].fxo.polaritydebounce = POLARITY_DEBOUNCE;
 		    }
 		} 
-		if (wc->mod.fxo.lastpol[card] <= 0) {
+		if (wc->mod[card].fxo.lastpol <= 0) {
 		    if (b > 0) {
-			wc->mod.fxo.lastpol[card] = 1;
-			wc->mod.fxo.polaritydebounce[card] = POLARITY_DEBOUNCE;
+			wc->mod[card].fxo.lastpol = 1;
+			wc->mod[card].fxo.polaritydebounce = POLARITY_DEBOUNCE;
 		    }
 		}
 	} else {
 		/* It's something else... */
-		wc->mod.fxo.battdebounce[card] = BATT_DEBOUNCE;
+		wc->mod[card].fxo.battdebounce = BATT_DEBOUNCE;
 	}
-	if (wc->mod.fxo.battdebounce[card])
-		wc->mod.fxo.battdebounce[card]--;
-	if (wc->mod.fxo.polaritydebounce[card]) {
-	        wc->mod.fxo.polaritydebounce[card]--;
-		if (wc->mod.fxo.polaritydebounce[card] < 1) {
-		    if (wc->mod.fxo.lastpol[card] != wc->mod.fxo.polarity[card]) {
+	if (wc->mod[card].fxo.battdebounce)
+		wc->mod[card].fxo.battdebounce--;
+	if (wc->mod[card].fxo.polaritydebounce) {
+	        wc->mod[card].fxo.polaritydebounce--;
+		if (wc->mod[card].fxo.polaritydebounce < 1) {
+		    if (wc->mod[card].fxo.lastpol != wc->mod[card].fxo.polarity) {
 			if (debug)
 				printk("%lu Polarity reversed (%d -> %d)\n", jiffies, 
-			       wc->mod.fxo.polarity[card], 
-			       wc->mod.fxo.lastpol[card]);
-			if (wc->mod.fxo.polarity[card])
+			       wc->mod[card].fxo.polarity, 
+			       wc->mod[card].fxo.lastpol);
+			if (wc->mod[card].fxo.polarity)
 			    zt_qevent_lock(&wc->chans[card], ZT_EVENT_POLARITY);
-			wc->mod.fxo.polarity[card] = wc->mod.fxo.lastpol[card];
+			wc->mod[card].fxo.polarity = wc->mod[card].fxo.lastpol;
 		    }
 		}
 	}
@@ -919,25 +919,25 @@
 
 	res = wcfxs_getreg(wc, card, 68);
 	hook = (res & 1);
-	if (hook != wc->mod.fxs.lastrxhook[card]) {
+	if (hook != wc->mod[card].fxs.lastrxhook) {
 		/* Reset the debounce (must be multiple of 4ms) */
-		wc->mod.fxs.debounce[card] = 8 * (4 * 8);
+		wc->mod[card].fxs.debounce = 8 * (4 * 8);
 #if 0
-		printk("Resetting debounce card %d hook %d, %d\n", card, hook, wc->mod.fxs.debounce[card]);
+		printk("Resetting debounce card %d hook %d, %d\n", card, hook, wc->mod[card].fxs.debounce);
 #endif
 	} else {
-		if (wc->mod.fxs.debounce[card] > 0) {
-			wc->mod.fxs.debounce[card]-= 4 * ZT_CHUNKSIZE;
+		if (wc->mod[card].fxs.debounce > 0) {
+			wc->mod[card].fxs.debounce-= 4 * ZT_CHUNKSIZE;
 #if 0
-			printk("Sustaining hook %d, %d\n", hook, wc->mod.fxs.debounce[card]);
+			printk("Sustaining hook %d, %d\n", hook, wc->mod[card].fxs.debounce);
 #endif
-			if (!wc->mod.fxs.debounce[card]) {
+			if (!wc->mod[card].fxs.debounce) {
 #if 0
 				printk("Counted down debounce, newhook: %d...\n", hook);
 #endif
-				wc->mod.fxs.debouncehook[card] = hook;
+				wc->mod[card].fxs.debouncehook = hook;
 			}
-			if (!wc->mod.fxs.oldrxhook[card] && wc->mod.fxs.debouncehook[card]) {
+			if (!wc->mod[card].fxs.oldrxhook && wc->mod[card].fxs.debouncehook) {
 				/* Off hook */
 #if 1
 				if (debug)
@@ -946,20 +946,20 @@
 				zt_hooksig(&wc->chans[card], ZT_RXSIG_OFFHOOK);
 				if (robust)
 					wcfxs_init_proslic(wc, card, 1, 0, 1);
-				wc->mod.fxs.oldrxhook[card] = 1;
+				wc->mod[card].fxs.oldrxhook = 1;
 			
-			} else if (wc->mod.fxs.oldrxhook[card] && !wc->mod.fxs.debouncehook[card]) {
+			} else if (wc->mod[card].fxs.oldrxhook && !wc->mod[card].fxs.debouncehook) {
 				/* On hook */
 #if 1
 				if (debug)
 #endif				
 					printk("wcfxs: Card %d Going on hook\n", card);
 				zt_hooksig(&wc->chans[card], ZT_RXSIG_ONHOOK);
-				wc->mod.fxs.oldrxhook[card] = 0;
+				wc->mod[card].fxs.oldrxhook = 0;
 			}
 		}
 	}
-	wc->mod.fxs.lastrxhook[card] = hook;
+	wc->mod[card].fxs.lastrxhook = hook;
 
 	
 }
@@ -974,14 +974,14 @@
 		wcfxs_init_proslic(wc, card, 1, 0, 1);
 	} else {
 		res = wcfxs_getreg(wc, card, 64);
-		if (!res && (res != wc->mod.fxs.lasttxhook[card])) {
-			if (wc->mod.fxs.palarms[card]++ < MAX_ALARMS) {
+		if (!res && (res != wc->mod[card].fxs.lasttxhook)) {
+			if (wc->mod[card].fxs.palarms++ < MAX_ALARMS) {
 				printk("Power alarm on module %d, resetting!\n", card + 1);
-				if (wc->mod.fxs.lasttxhook[card] == 4)
-					wc->mod.fxs.lasttxhook[card] = 1;
-				wcfxs_setreg(wc, card, 64, wc->mod.fxs.lasttxhook[card]);
+				if (wc->mod[card].fxs.lasttxhook == 4)
+					wc->mod[card].fxs.lasttxhook = 1;
+				wcfxs_setreg(wc, card, 64, wc->mod[card].fxs.lasttxhook);
 			} else {
-				if (wc->mod.fxs.palarms[card] == MAX_ALARMS)
+				if (wc->mod[card].fxs.palarms == MAX_ALARMS)
 					printk("Too many power alarms on card %d, NOT resetting!\n", card + 1);
 			}
 		}
@@ -1031,19 +1031,19 @@
 	for (x=0;x<4;x++) {
 		if ((x < wc->cards) && (wc->cardflag & (1 << x)) &&
 			(wc->modtype[x] == MOD_TYPE_FXS)) {
-			if (wc->mod.fxs.lasttxhook[x] == 0x4) {
+			if (wc->mod[x].fxs.lasttxhook == 0x4) {
 				/* RINGing, prepare for OHT */
-				wc->mod.fxs.ohttimer[x] = OHT_TIMER << 3;
-				wc->mod.fxs.idletxhookstate[x] = 0x2;	/* OHT mode when idle */
+				wc->mod[x].fxs.ohttimer = OHT_TIMER << 3;
+				wc->mod[x].fxs.idletxhookstate = 0x2;	/* OHT mode when idle */
 			} else {
-				if (wc->mod.fxs.ohttimer[x]) {
-					wc->mod.fxs.ohttimer[x]-= ZT_CHUNKSIZE;
-					if (!wc->mod.fxs.ohttimer[x]) {
-						wc->mod.fxs.idletxhookstate[x] = 0x1;	/* Switch to active */
-						if (wc->mod.fxs.lasttxhook[x] == 0x2) {
+				if (wc->mod[x].fxs.ohttimer) {
+					wc->mod[x].fxs.ohttimer-= ZT_CHUNKSIZE;
+					if (!wc->mod[x].fxs.ohttimer) {
+						wc->mod[x].fxs.idletxhookstate = 0x1;	/* Switch to active */
+						if (wc->mod[x].fxs.lasttxhook == 0x2) {
 							/* Apply the change if appropriate */
-							wc->mod.fxs.lasttxhook[x] = 0x1;
-							wcfxs_setreg(wc, x, 64, wc->mod.fxs.lasttxhook[x]);
+							wc->mod[x].fxs.lasttxhook = 0x1;
+							wcfxs_setreg(wc, x, 64, wc->mod[x].fxs.lasttxhook);
 						}
 					}
 				}
@@ -1067,8 +1067,8 @@
 			/* Accept an alarm once per 10 seconds */
 			for (x=0;x<4;x++) 
 				if (wc->modtype[x] == MOD_TYPE_FXS) {
-					if (wc->mod.fxs.palarms[x])
-						wc->mod.fxs.palarms[x]--;
+					if (wc->mod[x].fxs.palarms)
+						wc->mod[x].fxs.palarms--;
 				}
 		}
 		wcfxs_receiveprep(wc, ints);
@@ -1439,7 +1439,7 @@
 	int fxsmode=0;
 
 	/* By default, don't send on hook */
-	wc->mod.fxs.idletxhookstate [card] = 1;
+	wc->mod[card].fxs.idletxhookstate  = 1;
 
 	/* Sanity check the ProSLIC */
 	if (!sane && wcfxs_proslic_insane(wc, card))
@@ -1527,13 +1527,13 @@
 
 		/* Save calibration vectors */
 		for (x=0;x<NUM_CAL_REGS;x++)
-			wc->mod.fxs.calregs[card].vals[x] = wcfxs_getreg(wc, card, 96 + x);
+			wc->mod[card].fxs.calregs.vals[x] = wcfxs_getreg(wc, card, 96 + x);
 #endif
 
 	} else {
 		/* Restore calibration registers */
 		for (x=0;x<NUM_CAL_REGS;x++)
-			wcfxs_setreg(wc, card, 96 + x, wc->mod.fxs.calregs[card].vals[x]);
+			wcfxs_setreg(wc, card, 96 + x, wc->mod[card].fxs.calregs.vals[x]);
 	}
 	/* Calibration complete, restore original values */
 	for (x=0;x<5;x++) {
@@ -1621,12 +1621,12 @@
 			return -EINVAL;
 		if (get_user(x, (int *)data))
 			return -EFAULT;
-		wc->mod.fxs.ohttimer[chan->chanpos - 1] = x << 3;
-		wc->mod.fxs.idletxhookstate[chan->chanpos - 1] = 0x2;	/* OHT mode when idle */
-		if (wc->mod.fxs.lasttxhook[chan->chanpos - 1] == 0x1) {
+		wc->mod[chan->chanpos - 1].fxs.ohttimer = x << 3;
+		wc->mod[chan->chanpos - 1].fxs.idletxhookstate = 0x2;	/* OHT mode when idle */
+		if (wc->mod[chan->chanpos - 1].fxs.lasttxhook == 0x1) {
 				/* Apply the change if appropriate */
-				wc->mod.fxs.lasttxhook[chan->chanpos - 1] = 0x2;
-				wcfxs_setreg(wc, chan->chanpos - 1, 64, wc->mod.fxs.lasttxhook[chan->chanpos - 1]);
+				wc->mod[chan->chanpos - 1].fxs.lasttxhook = 0x2;
+				wcfxs_setreg(wc, chan->chanpos - 1, 64, wc->mod[chan->chanpos - 1].fxs.lasttxhook);
 		}
 		break;
 	case WCFXS_GET_STATS:
@@ -1711,7 +1711,7 @@
 	module_put(THIS_MODULE);
 #endif
 	if (wc->modtype[chan->chanpos - 1] == MOD_TYPE_FXS)
-		wc->mod.fxs.idletxhookstate[chan->chanpos - 1] = 1;
+		wc->mod[chan->chanpos - 1].fxs.idletxhookstate = 1;
 
 	/* If we're dead, release us now */
 	if (!wc->usecount && wc->dead) 
@@ -1728,11 +1728,11 @@
 		switch(txsig) {
 		case ZT_TXSIG_START:
 		case ZT_TXSIG_OFFHOOK:
-			wc->mod.fxo.offhook[chan->chanpos - 1] = 1;
+			wc->mod[chan->chanpos - 1].fxo.offhook = 1;
 			wcfxs_setreg(wc, chan->chanpos - 1, 5, 0x9);
 			break;
 		case ZT_TXSIG_ONHOOK:
-			wc->mod.fxo.offhook[chan->chanpos - 1] = 0;
+			wc->mod[chan->chanpos - 1].fxo.offhook = 0;
 			wcfxs_setreg(wc, chan->chanpos - 1, 5, 0x8);
 			break;
 		default:
@@ -1745,28 +1745,28 @@
 			case ZT_SIG_EM:
 			case ZT_SIG_FXOKS:
 			case ZT_SIG_FXOLS:
-				wc->mod.fxs.lasttxhook[chan->chanpos-1] = wc->mod.fxs.idletxhookstate[chan->chanpos-1];
+				wc->mod[chan->chanpos-1].fxs.lasttxhook = wc->mod[chan->chanpos-1].fxs.idletxhookstate;
 				break;
 			case ZT_SIG_FXOGS:
-				wc->mod.fxs.lasttxhook[chan->chanpos-1] = 3;
+				wc->mod[chan->chanpos-1].fxs.lasttxhook = 3;
 				break;
 			}
 			break;
 		case ZT_TXSIG_OFFHOOK:
 			switch(chan->sig) {
 			case ZT_SIG_EM:
-				wc->mod.fxs.lasttxhook[chan->chanpos-1] = 5;
+				wc->mod[chan->chanpos-1].fxs.lasttxhook = 5;
 				break;
 			default:
-				wc->mod.fxs.lasttxhook[chan->chanpos-1] = wc->mod.fxs.idletxhookstate[chan->chanpos-1];
+				wc->mod[chan->chanpos-1].fxs.lasttxhook = wc->mod[chan->chanpos-1].fxs.idletxhookstate;
 				break;
 			}
 			break;
 		case ZT_TXSIG_START:
-			wc->mod.fxs.lasttxhook[chan->chanpos-1] = 4;
+			wc->mod[chan->chanpos-1].fxs.lasttxhook = 4;
 			break;
 		case ZT_TXSIG_KEWL:
-			wc->mod.fxs.lasttxhook[chan->chanpos-1] = 0;
+			wc->mod[chan->chanpos-1].fxs.lasttxhook = 0;
 			break;
 		default:
 			printk("wcfxs: Can't set tx state to %d\n", txsig);
@@ -1775,7 +1775,7 @@
 			printk("Setting FXS hook state to %d (%02x)\n", txsig, reg);
 
 #if 1
-		wcfxs_setreg(wc, chan->chanpos - 1, 64, wc->mod.fxs.lasttxhook[chan->chanpos-1]);
+		wcfxs_setreg(wc, chan->chanpos - 1, 64, wc->mod[chan->chanpos-1].fxs.lasttxhook);
 #endif
 	}
 	return 0;




More information about the svn-commits mailing list