Loading core/java/com/android/internal/util/BitwiseInputStream.java +4 −4 Original line number Diff line number Diff line Loading @@ -69,19 +69,19 @@ public class BitwiseInputStream { * * @return byte of read data (possibly partially filled, from lsb) */ public byte read(int bits) throws AccessException { public int read(int bits) throws AccessException { int index = mPos >>> 3; int offset = 16 - (mPos & 0x07) - bits; // &7==%8 if ((bits < 0) || (bits > 8) || ((mPos + bits) > mEnd)) { throw new AccessException("illegal read " + "(pos " + mPos + ", end " + mEnd + ", bits " + bits + ")"); } int data = (mBuf[index] & 0x00FF) << 8; if (offset < 8) data |= (mBuf[index + 1] & 0xFF); int data = (mBuf[index] & 0xFF) << 8; if (offset < 8) data |= mBuf[index + 1] & 0xFF; data >>>= offset; data &= (-1 >>> (32 - bits)); mPos += bits; return (byte)data; return data; } /** Loading core/java/com/android/internal/util/BitwiseOutputStream.java +2 −2 Original line number Diff line number Diff line Loading @@ -95,8 +95,8 @@ public class BitwiseOutputStream { int offset = 16 - (mPos & 0x07) - bits; // &7==%8 data <<= offset; mPos += bits; mBuf[index] |= (data >>> 8); if (offset < 8) mBuf[index + 1] |= (data & 0x00FF); mBuf[index] |= data >>> 8; if (offset < 8) mBuf[index + 1] |= data & 0xFF; } /** Loading telephony/java/com/android/internal/telephony/cdma/sms/BearerData.java +11 −11 Original line number Diff line number Diff line Loading @@ -789,7 +789,7 @@ public final class BearerData { if (inStream.read(8) != 3) { throw new CodingException("MESSAGE_IDENTIFIER subparam size incorrect"); } bData.messageType = inStream.read(4); bData.messageType = (byte)inStream.read(4); bData.messageId = inStream.read(8) << 8; bData.messageId |= inStream.read(8); bData.hasUserDataHeader = (inStream.read(1) == 1); Loading @@ -799,7 +799,7 @@ public final class BearerData { private static void decodeUserData(BearerData bData, BitwiseInputStream inStream) throws BitwiseInputStream.AccessException { byte paramBytes = inStream.read(8); int paramBytes = inStream.read(8); bData.userData = new UserData(); bData.userData.msgEncoding = inStream.read(5); bData.userData.msgEncodingSet = true; Loading Loading @@ -867,7 +867,7 @@ public final class BearerData { inStream.skip(offset); byte[] expandedData = new byte[numFields]; for (int i = 0; i < numFields; i++) { expandedData[i] = inStream.read(7); expandedData[i] = (byte)inStream.read(7); } return new String(expandedData, 0, numFields, "US-ASCII"); } catch (java.io.UnsupportedEncodingException ex) { Loading Loading @@ -922,7 +922,7 @@ public final class BearerData { private static void decodeReplyOption(BearerData bData, BitwiseInputStream inStream) throws BitwiseInputStream.AccessException, CodingException { byte paramBytes = inStream.read(8); int paramBytes = inStream.read(8); if (paramBytes != 1) { throw new CodingException("REPLY_OPTION subparam size incorrect"); } Loading Loading @@ -985,18 +985,18 @@ public final class BearerData { private static void decodeCallbackNumber(BearerData bData, BitwiseInputStream inStream) throws BitwiseInputStream.AccessException, CodingException { byte paramBytes = inStream.read(8); int paramBytes = inStream.read(8); CdmaSmsAddress addr = new CdmaSmsAddress(); addr.digitMode = inStream.read(1); addr.digitMode = (byte)inStream.read(1); byte fieldBits = 4; byte consumedBits = 1; if (addr.digitMode == CdmaSmsAddress.DIGIT_MODE_8BIT_CHAR) { addr.ton = inStream.read(3); addr.numberPlan = inStream.read(4); addr.numberPlan = (byte)inStream.read(4); fieldBits = 8; consumedBits += 7; } addr.numberOfDigits = inStream.read(8); addr.numberOfDigits = (byte)inStream.read(8); consumedBits += 8; int remainingBits = (paramBytes * 8) - consumedBits; int dataBits = addr.numberOfDigits * fieldBits; Loading Loading @@ -1076,7 +1076,7 @@ public final class BearerData { if (inStream.read(8) != 1) { throw new CodingException("PRIVACY_INDICATOR subparam size incorrect"); } bData.privacy = inStream.read(2); bData.privacy = (byte)inStream.read(2); inStream.skip(6); bData.privacyIndicatorSet = true; } Loading @@ -1097,7 +1097,7 @@ public final class BearerData { if (inStream.read(8) != 1) { throw new CodingException("DISPLAY_MODE subparam size incorrect"); } bData.displayMode = inStream.read(2); bData.displayMode = (byte)inStream.read(2); inStream.skip(6); bData.displayModeSet = true; } Loading @@ -1108,7 +1108,7 @@ public final class BearerData { if (inStream.read(8) != 1) { throw new CodingException("PRIORITY_INDICATOR subparam size incorrect"); } bData.priority = inStream.read(2); bData.priority = (byte)inStream.read(2); inStream.skip(6); bData.priorityIndicatorSet = true; } Loading tests/AndroidTests/src/com/android/unit_tests/BitwiseStreamsTest.java +28 −5 Original line number Diff line number Diff line Loading @@ -25,6 +25,8 @@ import android.test.suitebuilder.annotation.SmallTest; import android.util.Log; import java.util.Random; public class BitwiseStreamsTest extends AndroidTestCase { private final static String LOG_TAG = "BitwiseStreamsTest"; Loading @@ -39,7 +41,7 @@ public class BitwiseStreamsTest extends AndroidTestCase { BitwiseInputStream inStream = new BitwiseInputStream(outBuf); byte[] inBufDup = new byte[inBuf.length]; inStream.skip(offset); for (int i = 0; i < inBufDup.length; i++) inBufDup[i] = inStream.read(8); for (int i = 0; i < inBufDup.length; i++) inBufDup[i] = (byte)inStream.read(8); assertEquals(HexDump.toHexString(inBuf), HexDump.toHexString(inBufDup)); } Loading @@ -53,7 +55,7 @@ public class BitwiseStreamsTest extends AndroidTestCase { BitwiseInputStream inStream = new BitwiseInputStream(outStream.toByteArray()); inStream.skip(offset); byte[] inBufDup = new byte[inBuf.length]; for (int i = 0; i < inBufDup.length; i++) inBufDup[i] = inStream.read(8); for (int i = 0; i < inBufDup.length; i++) inBufDup[i] = (byte)inStream.read(8); assertEquals(HexDump.toHexString(inBuf), HexDump.toHexString(inBufDup)); } Loading @@ -67,7 +69,7 @@ public class BitwiseStreamsTest extends AndroidTestCase { BitwiseInputStream inStream = new BitwiseInputStream(outStream.toByteArray()); inStream.skip(offset); byte[] inBufDup = new byte[inBuf.length]; for (int i = 0; i < inBufDup.length; i++) inBufDup[i] = inStream.read(8); for (int i = 0; i < inBufDup.length; i++) inBufDup[i] = (byte)inStream.read(8); assertEquals(HexDump.toHexString(inBuf), HexDump.toHexString(inBufDup)); } Loading @@ -84,12 +86,33 @@ public class BitwiseStreamsTest extends AndroidTestCase { BitwiseInputStream inStream = new BitwiseInputStream(outStream.toByteArray()); inStream.skip(offset); byte[] inBufDup = new byte[inBuf.length]; for (int i = 0; i < inBufDup.length; i++) inBufDup[i] = inStream.read(8); for (int i = 0; i < inBufDup.length; i++) inBufDup[i] = (byte)inStream.read(8); assertEquals(HexDump.toHexString(inBuf), HexDump.toHexString(inBufDup)); } @SmallTest public void testFive() throws Exception { Random random = new Random(); int iterations = 10000; int[] sizeArr = new int[iterations]; int[] valueArr = new int[iterations]; BitwiseOutputStream outStream = new BitwiseOutputStream(iterations * 4); for (int i = 0; i < iterations; i++) { int x = random.nextInt(); int size = (x & 0x07) + 1; int value = x & (-1 >>> (32 - size)); sizeArr[i] = size; valueArr[i] = value; outStream.write(size, value); } BitwiseInputStream inStream = new BitwiseInputStream(outStream.toByteArray()); for (int i = 0; i < iterations; i++) { assertEquals(valueArr[i], inStream.read(sizeArr[i])); } } @SmallTest public void testSix() throws Exception { int num_runs = 10; long start = android.os.SystemClock.elapsedRealtime(); for (int run = 0; run < num_runs; run++) { Loading @@ -104,7 +127,7 @@ public class BitwiseStreamsTest extends AndroidTestCase { BitwiseInputStream inStream = new BitwiseInputStream(outStream.toByteArray()); inStream.skip(offset); byte[] inBufDup = new byte[inBuf.length]; for (int i = 0; i < inBufDup.length; i++) inBufDup[i] = inStream.read(8); for (int i = 0; i < inBufDup.length; i++) inBufDup[i] = (byte)inStream.read(8); assertEquals(HexDump.toHexString(inBuf), HexDump.toHexString(inBufDup)); } long end = android.os.SystemClock.elapsedRealtime(); Loading tests/AndroidTests/src/com/android/unit_tests/CdmaSmsTest.java +3 −3 Original line number Diff line number Diff line Loading @@ -171,14 +171,14 @@ public class CdmaSmsTest extends AndroidTestCase { assertEquals(bearerData.msgCenterTimeStamp.minute, 1); assertEquals(bearerData.msgCenterTimeStamp.second, 59); assertEquals(bearerData.validityPeriodAbsolute, null); assertEquals(bearerData.validityPeriodRelative, -63); assertEquals(bearerData.validityPeriodRelative, 193); assertEquals(bearerData.deferredDeliveryTimeAbsolute.year, 1997); assertEquals(bearerData.deferredDeliveryTimeAbsolute.month, 5); assertEquals(bearerData.deferredDeliveryTimeAbsolute.monthDay, 18); assertEquals(bearerData.deferredDeliveryTimeAbsolute.hour, 0); assertEquals(bearerData.deferredDeliveryTimeAbsolute.minute, 0); assertEquals(bearerData.deferredDeliveryTimeAbsolute.second, 0); assertEquals(bearerData.deferredDeliveryTimeRelative, -57); assertEquals(bearerData.deferredDeliveryTimeRelative, 199); assertEquals(bearerData.hasUserDataHeader, false); assertEquals(bearerData.userData.msgEncoding, UserData.ENCODING_7BIT_ASCII); assertEquals(bearerData.userData.numFields, 2); Loading Loading @@ -225,7 +225,7 @@ public class CdmaSmsTest extends AndroidTestCase { assertEquals(bearerData.deferredDeliveryTimeAbsolute.hour, 0); assertEquals(bearerData.deferredDeliveryTimeAbsolute.minute, 0); assertEquals(bearerData.deferredDeliveryTimeAbsolute.second, 0); assertEquals(bearerData.deferredDeliveryTimeRelative, -110); assertEquals(bearerData.deferredDeliveryTimeRelative, 146); assertEquals(bearerData.hasUserDataHeader, false); assertEquals(bearerData.userData.msgEncoding, UserData.ENCODING_7BIT_ASCII); assertEquals(bearerData.userData.numFields, 2); Loading Loading
core/java/com/android/internal/util/BitwiseInputStream.java +4 −4 Original line number Diff line number Diff line Loading @@ -69,19 +69,19 @@ public class BitwiseInputStream { * * @return byte of read data (possibly partially filled, from lsb) */ public byte read(int bits) throws AccessException { public int read(int bits) throws AccessException { int index = mPos >>> 3; int offset = 16 - (mPos & 0x07) - bits; // &7==%8 if ((bits < 0) || (bits > 8) || ((mPos + bits) > mEnd)) { throw new AccessException("illegal read " + "(pos " + mPos + ", end " + mEnd + ", bits " + bits + ")"); } int data = (mBuf[index] & 0x00FF) << 8; if (offset < 8) data |= (mBuf[index + 1] & 0xFF); int data = (mBuf[index] & 0xFF) << 8; if (offset < 8) data |= mBuf[index + 1] & 0xFF; data >>>= offset; data &= (-1 >>> (32 - bits)); mPos += bits; return (byte)data; return data; } /** Loading
core/java/com/android/internal/util/BitwiseOutputStream.java +2 −2 Original line number Diff line number Diff line Loading @@ -95,8 +95,8 @@ public class BitwiseOutputStream { int offset = 16 - (mPos & 0x07) - bits; // &7==%8 data <<= offset; mPos += bits; mBuf[index] |= (data >>> 8); if (offset < 8) mBuf[index + 1] |= (data & 0x00FF); mBuf[index] |= data >>> 8; if (offset < 8) mBuf[index + 1] |= data & 0xFF; } /** Loading
telephony/java/com/android/internal/telephony/cdma/sms/BearerData.java +11 −11 Original line number Diff line number Diff line Loading @@ -789,7 +789,7 @@ public final class BearerData { if (inStream.read(8) != 3) { throw new CodingException("MESSAGE_IDENTIFIER subparam size incorrect"); } bData.messageType = inStream.read(4); bData.messageType = (byte)inStream.read(4); bData.messageId = inStream.read(8) << 8; bData.messageId |= inStream.read(8); bData.hasUserDataHeader = (inStream.read(1) == 1); Loading @@ -799,7 +799,7 @@ public final class BearerData { private static void decodeUserData(BearerData bData, BitwiseInputStream inStream) throws BitwiseInputStream.AccessException { byte paramBytes = inStream.read(8); int paramBytes = inStream.read(8); bData.userData = new UserData(); bData.userData.msgEncoding = inStream.read(5); bData.userData.msgEncodingSet = true; Loading Loading @@ -867,7 +867,7 @@ public final class BearerData { inStream.skip(offset); byte[] expandedData = new byte[numFields]; for (int i = 0; i < numFields; i++) { expandedData[i] = inStream.read(7); expandedData[i] = (byte)inStream.read(7); } return new String(expandedData, 0, numFields, "US-ASCII"); } catch (java.io.UnsupportedEncodingException ex) { Loading Loading @@ -922,7 +922,7 @@ public final class BearerData { private static void decodeReplyOption(BearerData bData, BitwiseInputStream inStream) throws BitwiseInputStream.AccessException, CodingException { byte paramBytes = inStream.read(8); int paramBytes = inStream.read(8); if (paramBytes != 1) { throw new CodingException("REPLY_OPTION subparam size incorrect"); } Loading Loading @@ -985,18 +985,18 @@ public final class BearerData { private static void decodeCallbackNumber(BearerData bData, BitwiseInputStream inStream) throws BitwiseInputStream.AccessException, CodingException { byte paramBytes = inStream.read(8); int paramBytes = inStream.read(8); CdmaSmsAddress addr = new CdmaSmsAddress(); addr.digitMode = inStream.read(1); addr.digitMode = (byte)inStream.read(1); byte fieldBits = 4; byte consumedBits = 1; if (addr.digitMode == CdmaSmsAddress.DIGIT_MODE_8BIT_CHAR) { addr.ton = inStream.read(3); addr.numberPlan = inStream.read(4); addr.numberPlan = (byte)inStream.read(4); fieldBits = 8; consumedBits += 7; } addr.numberOfDigits = inStream.read(8); addr.numberOfDigits = (byte)inStream.read(8); consumedBits += 8; int remainingBits = (paramBytes * 8) - consumedBits; int dataBits = addr.numberOfDigits * fieldBits; Loading Loading @@ -1076,7 +1076,7 @@ public final class BearerData { if (inStream.read(8) != 1) { throw new CodingException("PRIVACY_INDICATOR subparam size incorrect"); } bData.privacy = inStream.read(2); bData.privacy = (byte)inStream.read(2); inStream.skip(6); bData.privacyIndicatorSet = true; } Loading @@ -1097,7 +1097,7 @@ public final class BearerData { if (inStream.read(8) != 1) { throw new CodingException("DISPLAY_MODE subparam size incorrect"); } bData.displayMode = inStream.read(2); bData.displayMode = (byte)inStream.read(2); inStream.skip(6); bData.displayModeSet = true; } Loading @@ -1108,7 +1108,7 @@ public final class BearerData { if (inStream.read(8) != 1) { throw new CodingException("PRIORITY_INDICATOR subparam size incorrect"); } bData.priority = inStream.read(2); bData.priority = (byte)inStream.read(2); inStream.skip(6); bData.priorityIndicatorSet = true; } Loading
tests/AndroidTests/src/com/android/unit_tests/BitwiseStreamsTest.java +28 −5 Original line number Diff line number Diff line Loading @@ -25,6 +25,8 @@ import android.test.suitebuilder.annotation.SmallTest; import android.util.Log; import java.util.Random; public class BitwiseStreamsTest extends AndroidTestCase { private final static String LOG_TAG = "BitwiseStreamsTest"; Loading @@ -39,7 +41,7 @@ public class BitwiseStreamsTest extends AndroidTestCase { BitwiseInputStream inStream = new BitwiseInputStream(outBuf); byte[] inBufDup = new byte[inBuf.length]; inStream.skip(offset); for (int i = 0; i < inBufDup.length; i++) inBufDup[i] = inStream.read(8); for (int i = 0; i < inBufDup.length; i++) inBufDup[i] = (byte)inStream.read(8); assertEquals(HexDump.toHexString(inBuf), HexDump.toHexString(inBufDup)); } Loading @@ -53,7 +55,7 @@ public class BitwiseStreamsTest extends AndroidTestCase { BitwiseInputStream inStream = new BitwiseInputStream(outStream.toByteArray()); inStream.skip(offset); byte[] inBufDup = new byte[inBuf.length]; for (int i = 0; i < inBufDup.length; i++) inBufDup[i] = inStream.read(8); for (int i = 0; i < inBufDup.length; i++) inBufDup[i] = (byte)inStream.read(8); assertEquals(HexDump.toHexString(inBuf), HexDump.toHexString(inBufDup)); } Loading @@ -67,7 +69,7 @@ public class BitwiseStreamsTest extends AndroidTestCase { BitwiseInputStream inStream = new BitwiseInputStream(outStream.toByteArray()); inStream.skip(offset); byte[] inBufDup = new byte[inBuf.length]; for (int i = 0; i < inBufDup.length; i++) inBufDup[i] = inStream.read(8); for (int i = 0; i < inBufDup.length; i++) inBufDup[i] = (byte)inStream.read(8); assertEquals(HexDump.toHexString(inBuf), HexDump.toHexString(inBufDup)); } Loading @@ -84,12 +86,33 @@ public class BitwiseStreamsTest extends AndroidTestCase { BitwiseInputStream inStream = new BitwiseInputStream(outStream.toByteArray()); inStream.skip(offset); byte[] inBufDup = new byte[inBuf.length]; for (int i = 0; i < inBufDup.length; i++) inBufDup[i] = inStream.read(8); for (int i = 0; i < inBufDup.length; i++) inBufDup[i] = (byte)inStream.read(8); assertEquals(HexDump.toHexString(inBuf), HexDump.toHexString(inBufDup)); } @SmallTest public void testFive() throws Exception { Random random = new Random(); int iterations = 10000; int[] sizeArr = new int[iterations]; int[] valueArr = new int[iterations]; BitwiseOutputStream outStream = new BitwiseOutputStream(iterations * 4); for (int i = 0; i < iterations; i++) { int x = random.nextInt(); int size = (x & 0x07) + 1; int value = x & (-1 >>> (32 - size)); sizeArr[i] = size; valueArr[i] = value; outStream.write(size, value); } BitwiseInputStream inStream = new BitwiseInputStream(outStream.toByteArray()); for (int i = 0; i < iterations; i++) { assertEquals(valueArr[i], inStream.read(sizeArr[i])); } } @SmallTest public void testSix() throws Exception { int num_runs = 10; long start = android.os.SystemClock.elapsedRealtime(); for (int run = 0; run < num_runs; run++) { Loading @@ -104,7 +127,7 @@ public class BitwiseStreamsTest extends AndroidTestCase { BitwiseInputStream inStream = new BitwiseInputStream(outStream.toByteArray()); inStream.skip(offset); byte[] inBufDup = new byte[inBuf.length]; for (int i = 0; i < inBufDup.length; i++) inBufDup[i] = inStream.read(8); for (int i = 0; i < inBufDup.length; i++) inBufDup[i] = (byte)inStream.read(8); assertEquals(HexDump.toHexString(inBuf), HexDump.toHexString(inBufDup)); } long end = android.os.SystemClock.elapsedRealtime(); Loading
tests/AndroidTests/src/com/android/unit_tests/CdmaSmsTest.java +3 −3 Original line number Diff line number Diff line Loading @@ -171,14 +171,14 @@ public class CdmaSmsTest extends AndroidTestCase { assertEquals(bearerData.msgCenterTimeStamp.minute, 1); assertEquals(bearerData.msgCenterTimeStamp.second, 59); assertEquals(bearerData.validityPeriodAbsolute, null); assertEquals(bearerData.validityPeriodRelative, -63); assertEquals(bearerData.validityPeriodRelative, 193); assertEquals(bearerData.deferredDeliveryTimeAbsolute.year, 1997); assertEquals(bearerData.deferredDeliveryTimeAbsolute.month, 5); assertEquals(bearerData.deferredDeliveryTimeAbsolute.monthDay, 18); assertEquals(bearerData.deferredDeliveryTimeAbsolute.hour, 0); assertEquals(bearerData.deferredDeliveryTimeAbsolute.minute, 0); assertEquals(bearerData.deferredDeliveryTimeAbsolute.second, 0); assertEquals(bearerData.deferredDeliveryTimeRelative, -57); assertEquals(bearerData.deferredDeliveryTimeRelative, 199); assertEquals(bearerData.hasUserDataHeader, false); assertEquals(bearerData.userData.msgEncoding, UserData.ENCODING_7BIT_ASCII); assertEquals(bearerData.userData.numFields, 2); Loading Loading @@ -225,7 +225,7 @@ public class CdmaSmsTest extends AndroidTestCase { assertEquals(bearerData.deferredDeliveryTimeAbsolute.hour, 0); assertEquals(bearerData.deferredDeliveryTimeAbsolute.minute, 0); assertEquals(bearerData.deferredDeliveryTimeAbsolute.second, 0); assertEquals(bearerData.deferredDeliveryTimeRelative, -110); assertEquals(bearerData.deferredDeliveryTimeRelative, 146); assertEquals(bearerData.hasUserDataHeader, false); assertEquals(bearerData.userData.msgEncoding, UserData.ENCODING_7BIT_ASCII); assertEquals(bearerData.userData.numFields, 2); Loading