patch-2.3.99-pre3 linux/drivers/isdn/isdn_v110.c

Next file: linux/drivers/isdn/isdn_v110.h
Previous file: linux/drivers/isdn/isdn_ppp.c
Back to the patch index
Back to the overall index

diff -u --recursive --new-file v2.3.99-pre2/linux/drivers/isdn/isdn_v110.c linux/drivers/isdn/isdn_v110.c
@@ -1,4 +1,4 @@
-/* $Id: isdn_v110.c,v 1.3 1999/10/30 09:49:28 keil Exp $
+/* $Id: isdn_v110.c,v 1.4 2000/03/16 16:34:12 kai Exp $
 
  * Linux ISDN subsystem, V.110 related functions (linklevel).
  *
@@ -19,6 +19,11 @@
  * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
  *
  * $Log: isdn_v110.c,v $
+ * Revision 1.4  2000/03/16 16:34:12  kai
+ * some translation work
+ *
+ * there shouldn't be any German comments lurking around anymore ;-)
+ *
  * Revision 1.3  1999/10/30 09:49:28  keil
  * Reinit of v110 structs
  *
@@ -39,14 +44,15 @@
 
 #undef ISDN_V110_DEBUG
 
-char *isdn_v110_revision = "$Revision: 1.3 $";
+char *isdn_v110_revision = "$Revision: 1.4 $";
 
 #define V110_38400 255
 #define V110_19200  15
 #define V110_9600    3
 
-/* Die folgenden Daten sind fertig kodierte Matrizen, jeweils
-   als online und offline matrix für 9600, 19200 und 38400
+/* 
+ * The following data are precoded matrices, online and offline matrix 
+ * for 9600, 19200 und 38400, respectively
  */
 static unsigned char V110_OnMatrix_9600[] =
 {0xfc, 0xfc, 0xfc, 0xfc, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff,
@@ -74,13 +80,12 @@
 static unsigned char V110_OffMatrix_38400[] =
 {0x00, 0xff, 0xff, 0xff, 0xff, 0xfd, 0xff, 0xff, 0xff, 0xff};
 
-
-/* FlipBits dreht die Reihenfolge von jeweils keylen bits in einem byte um.
-   Aus der Bitreihenfolge 76543210 werden bei keylen=4 die bits 45670123,
-   bei keylen=2 die bits 67452301. Dies ist notwendig, weil die reihenfolge
-   auf der isdn-leitung falsch herum ist.
+/* 
+ * FlipBits reorders sequences of keylen bits in one byte.
+ * E.g. source order 7654321 will be converted to 45670123 when keylen = 4,
+ * and to 67452301 when keylen = 2. This is necessary because ordering on
+ * the isdn line is the the other way.
  */
-
 static __inline unsigned char
 FlipBits(unsigned char c, int keylen)
 {
@@ -164,8 +169,9 @@
 }
 
 
-/* ValidHeaderBytes prüft, wieviele bytes in v->decodebuf gültig sind */
-
+/* 
+ * ValidHeaderBytes return the number of valid bytes in v->decodebuf 
+ */
 static int
 ValidHeaderBytes(isdn_v110_stream * v)
 {
@@ -176,8 +182,9 @@
 	return i;
 }
 
-/* SyncHeader schiebt den decodebuf pointer auf den nächsten gültigen header */
-
+/* 
+ * SyncHeader moves the decodebuf ptr to the next valid header 
+ */
 static void
 SyncHeader(isdn_v110_stream * v)
 {
@@ -214,68 +221,60 @@
 	int dbit = v->dbit;
 	unsigned char b = v->b;
 
-	while (line < len) {    /* sind schon alle matrizenzeilen abgearbeitet? */
-		if ((line % 10) == 0) {	/* die 0. zeile der matrix ist immer null ! */
-			if (m[line] != 0x00) {	/* nicht 0 ? dann fehler! */
+	while (line < len) {    /* Are we done with all lines of the matrix? */
+		if ((line % 10) == 0) {	/* the 0. line of the matrix is always 0 ! */
+			if (m[line] != 0x00) {	/* not 0 ? -> error! */
 #ifdef ISDN_V110_DEBUG
 				printk(KERN_DEBUG "isdn_v110: DecodeMatrix, V110 Bad Header\n");
+				/* returning now is not the right thing, though :-( */
 #endif
-
-/*
-  dann einen return zu machen, ist auch irgendwie nicht das richtige! :-(
-  v->introducer = 0; v->dbit = 1; v->b = 0;
-  return buflen;                                                                                                     anzahl schon erzeugter daten zurückgeben!
-  */
-			}
-			line++; /* sonst die nächste matrixzeile nehmen */
+			} 
+			line++; /* next line of matrix */
 			continue;
-		} else if ((line % 10) == 5) {	/* in zeile 5 stehen nur e-bits ! */
-			if ((m[line] & 0x70) != 0x30) {	/* 011 muß am anfang stehen! */
+		} else if ((line % 10) == 5) {	/* in line 5 there's only e-bits ! */
+			if ((m[line] & 0x70) != 0x30) {	/* 011 has to be at the beginning! */
 #ifdef ISDN_V110_DEBUG
 				printk(KERN_DEBUG "isdn_v110: DecodeMatrix, V110 Bad 5th line\n");
+				/* returning now is not the right thing, though :-( */
 #endif
-/* dann einen return zu machen, ist auch irgendwie nicht das richtige! :-(
-   v->introducer = 0; v->dbit = 1; v->b = 0;
-   return buflen;
- */
 			}
-			line++; /* alles klar, nächste zeile */
+			line++; /* next line */
 			continue;
 		} else if (!introducer) {	/* every byte starts with 10 (stopbit, startbit) */
-			introducer = (m[line] & mbit) ? 0 : 1;	/* aktuelles bit der matrix */
+			introducer = (m[line] & mbit) ? 0 : 1;	/* current bit of the matrix */
 		      next_byte:
-			if (mbit > 2) {	/* war es das letzte bit dieser matrixzeile ? */
-				mbit >>= 1;	/* nein, nimm das nächste in dieser zeile */
+			if (mbit > 2) {	/* was it the last bit in this line ? */
+				mbit >>= 1;	/* no -> take next */
 				continue;
-			}       /* sonst links in der nächsten zeile anfangen */
+			}       /* otherwise start with leftmost bit in the next line */
 			mbit = 64;
 			line++;
 			continue;
-		} else {        /* sonst müssen wir ein datenbit setzen */
-			if (m[line] & mbit)	/* war das bit in der matrix gesetzt ? */
-				b |= dbit;	/* ja, dann setz es auch im datenbyte  */
+		} else {        /* otherwise we need to set a data bit */
+			if (m[line] & mbit)	/* was that bit set in the matrix ? */
+				b |= dbit;	/* yes -> set it in the data byte */
 			else
-				b &= dbit - 1;	/* nein, lösch bit im datenbyte */
-			if (dbit < 128)	/* haben wir schon ein ganzes byte voll ? */
-				dbit <<= 1;	/* nein, auf zum nächsten datenbit */
-			else {  /* ein ganzes datenbyte ist voll */
-				buf[buflen++] = b;	/* byte in den output buffer kopieren */
-				introducer = b = 0;	/* Init der Introsequenz und des datenbytes */
-				dbit = 1;	/* als nächstes suchen wir das nullte bit */
+				b &= dbit - 1;	/* no -> clear it in the data byte */
+			if (dbit < 128)	/* is that data byte done ? */
+				dbit <<= 1;	/* no, got the next bit */
+			else {  /* data byte is done */
+				buf[buflen++] = b;	/* copy byte into the output buffer */
+				introducer = b = 0;	/* init of the intro sequence and of the data byte */
+				dbit = 1;	/* next we look for the 0th bit */
 			}
-			goto next_byte;	/* suche das nächste bit in der matrix */
+			goto next_byte;	/* look for next bit in the matrix */
 		}
 	}
 	v->introducer = introducer;
 	v->dbit = dbit;
 	v->b = b;
-	return buflen;          /* return anzahl der bytes im output buffer */
+	return buflen;          /* return number of bytes in the output buffer */
 }
 
-/* DecodeStream erhält vom input stream V110 kodierte Daten, die zu den
-   V110 frames zusammengepackt werden müssen. Die Daten können an diese
-   Schnittstelle so übergeben werden, wie sie von der Leitung kommen, ohne
-   darauf achten zu müssen, das frames usw. eingehalten werden.
+/* 
+ * DecodeStream receives V.110 coded data from the input stream. It recovers the 
+ * original frames.
+ * The input stream doesn't need to be framed
  */
 struct sk_buff *
 isdn_v110_decode(isdn_v110_stream * v, struct sk_buff *skb)
@@ -314,8 +313,8 @@
 		dev_kfree_skb(skb);
 		return NULL;    /* no, try later      */
 	}
-	if (ValidHeaderBytes(v) != v->nbytes) {	/* ist es ein ungültiger header ? */
-		SyncHeader(v);  /* nein, such einen header */
+	if (ValidHeaderBytes(v) != v->nbytes) {	/* is that a valid header? */
+		SyncHeader(v);  /* no -> look for header */
 		goto ReSync;
 	}
 	len = (v->decodelen - (v->decodelen % (10 * v->nbytes))) / v->nbytes;
@@ -357,15 +356,15 @@
 	int introducer = 3;
 	int ibit[] = {0, 1, 1};
 
-	while ((i < len) && (line < mlen)) {	/* solange noch input da ist */
-		switch (line % 10) {	/* in welcher matrixzeile sind wir ? */
+	while ((i < len) && (line < mlen)) {	/* while we still have input data */
+		switch (line % 10) {	/* in which line of the matrix are we? */
 			case 0:
-				m[line++] = 0x00;	/* zeile 0 ist immer 0 */
-				mbit = 128;	/* und es geht mit dem 7. bit weiter */
+				m[line++] = 0x00;	/* line 0 is always 0 */
+				mbit = 128;	/* go on with the 7th bit */
 				break;
 			case 5:
-				m[line++] = 0xbf;	/* zeile 5 ist immer 10111111 */
-				mbit = 128;	/* und es geht mit dem 7. bit weiter */
+				m[line++] = 0xbf;	/* line 5 is always 10111111 */
+				mbit = 128;	/* go on with the 7th bit */
 				break;
 		}
 		if (line >= mlen) {
@@ -373,41 +372,41 @@
 			return line;
 		}
 	next_bit:
-		switch (mbit) { /* ganz linkes oder rechtes bit ? */
+		switch (mbit) { /* leftmost or rightmost bit ? */
 			case 1:
-				line++;	/* ganz rechts ! dann in die nächste */
+				line++;	/* rightmost -> go to next line */
 				if (line >= mlen) {
 					printk(KERN_WARNING "isdn_v110 (EncodeMatrix): buffer full!\n");
 					return line;
 				}
 			case 128:
-				m[line] = 128;	/* ganz links byte auf 1000000 setzen */
-				mbit = 64;	/* aktuelles bit in der matrixzeile */
+				m[line] = 128;	/* leftmost -> set byte to 1000000 */
+				mbit = 64;	/* current bit in the matrix line */
 				continue;
 		}
-		if (introducer) {	/* 110 sequenz setzen ? */
-			introducer--;	/* ein digit weniger setzen */
-			m[line] |= ibit[introducer] ? mbit : 0;	/* entsprechendes bit setzen */
-			mbit >>= 1;	/* bit der matrixzeile >> 1 */
-			goto next_bit;	/* und dort weiter machen */
-		}               /* else datenbits in die matrix packen! */
-		m[line] |= (buf[i] & dbit) ? mbit : 0;	/* datenbit in matrix setzen */
-		if (dbit == 128) {	/* war es das letzte datenbit ? */
-			dbit = 1;	/* dann mach beim nächsten weiter */
-			i++;    /* nächste datenbyte des input buffers */
-			if (i < len)	/* war es schon das letzte ? */
-				introducer = 3;	/* nein, schreib den introducer 110 */
-			else {  /* war das letzte datenbyte ! */
-				m[line] |= (mbit - 1) & 0xfe;	/* setz restliche bits der zeile auf 1 */
+		if (introducer) {	/* set 110 sequence ? */
+			introducer--;	/* set on digit less */
+			m[line] |= ibit[introducer] ? mbit : 0;	/* set corresponding bit */
+			mbit >>= 1;	/* bit of matrix line  >> 1 */
+			goto next_bit;	/* and go on there */
+		}               /* else push data bits into the matrix! */
+		m[line] |= (buf[i] & dbit) ? mbit : 0;	/* set data bit in matrix */
+		if (dbit == 128) {	/* was it the last one? */
+			dbit = 1;	/* then go on with first bit of  */
+			i++;            /* next byte in input buffer */
+			if (i < len)	/* input buffer done ? */
+				introducer = 3;	/* no, write introducer 110 */
+			else {  /* input buffer done ! */
+				m[line] |= (mbit - 1) & 0xfe;	/* set remaining bits in line to 1 */
 				break;
 			}
-		} else          /* nicht das letzte datenbit */
-			dbit <<= 1;	/* dann gehe zum nächsten datenbit */
-		mbit >>= 1;     /* und setz bit der matrix weiter */
+		} else          /* not the last data bit */
+			dbit <<= 1;	/* then go to next data bit */
+		mbit >>= 1;     /* go to next bit of matrix */
 		goto next_bit;
 
 	}
-	/* evtl. noch restliche zeilen in der matrix generieren... */
+	/* if necessary, generate remaining lines of the matrix... */
 	if ((line) && ((line + 10) < mlen))
 		switch (++line % 10) {
 			case 1:
@@ -429,7 +428,7 @@
 			case 9:
 				m[line++] = 0xfe;
 		}
-	return line;            /* soviele matrixzeilen sind es */
+	return line;            /* that's how many lines we have */
 }
 
 /*
@@ -517,7 +516,7 @@
 		return nskb;
 	}
 	mlen = EncodeMatrix(skb->data, rlen, v110buf, size);
-	/* jetzt noch jeweils 2 oder 4 bits auf den output stream verteilen! */
+	/* now distribute 2 or 4 bits each to the output stream! */
 	rbuf = skb_put(nskb, size);
 	olen = 0;
 	sval1 = 8 - v->nbits;

FUNET's LINUX-ADM group, linux-adm@nic.funet.fi
TCL-scripts by Sam Shen (who was at: slshen@lbl.gov)