diff options
author | Mike Lockwood <lockwood@android.com> | 2010-09-25 08:37:59 -0400 |
---|---|---|
committer | Mike Lockwood <lockwood@android.com> | 2010-09-25 08:37:59 -0400 |
commit | 564ff8432173545137ac8c658dac52306bc070be (patch) | |
tree | 7d8492520bd887bd81d0e688071eeffbd906a58e /media/mtp | |
parent | 409a90cd785b82d426f3f22b47133dd8a738bdec (diff) | |
download | frameworks_base-564ff8432173545137ac8c658dac52306bc070be.zip frameworks_base-564ff8432173545137ac8c658dac52306bc070be.tar.gz frameworks_base-564ff8432173545137ac8c658dac52306bc070be.tar.bz2 |
MTP: Fix reading and writing device property descriptors
Change-Id: I8d9653ceedfed688addd6c4194c097d7090c3468
Signed-off-by: Mike Lockwood <lockwood@android.com>
Diffstat (limited to 'media/mtp')
-rw-r--r-- | media/mtp/MtpProperty.cpp | 18 |
1 files changed, 14 insertions, 4 deletions
diff --git a/media/mtp/MtpProperty.cpp b/media/mtp/MtpProperty.cpp index c7a91d6..995f589 100644 --- a/media/mtp/MtpProperty.cpp +++ b/media/mtp/MtpProperty.cpp @@ -121,6 +121,7 @@ MtpProperty::~MtpProperty() { } void MtpProperty::read(MtpDataPacket& packet) { + bool deviceProp = isDeviceProperty(); mCode = packet.getUInt16(); mType = packet.getUInt16(); @@ -137,14 +138,16 @@ void MtpProperty::read(MtpDataPacket& packet) { case MTP_TYPE_AINT128: case MTP_TYPE_AUINT128: mDefaultArrayValues = readArrayValues(packet, mDefaultArrayLength); - mCurrentArrayValues = readArrayValues(packet, mCurrentArrayLength); + if (deviceProp) + mCurrentArrayValues = readArrayValues(packet, mCurrentArrayLength); break; default: readValue(packet, mDefaultValue); - if (isDeviceProperty()) + if (deviceProp) readValue(packet, mCurrentValue); } - mGroupCode = packet.getUInt32(); + if (!deviceProp) + mGroupCode = packet.getUInt32(); mFormFlag = packet.getUInt8(); if (mFormFlag == kFormRange) { @@ -160,6 +163,8 @@ void MtpProperty::read(MtpDataPacket& packet) { } void MtpProperty::write(MtpDataPacket& packet) { + bool deviceProp = isDeviceProperty(); + packet.putUInt16(mCode); packet.putUInt16(mType); packet.putUInt8(mWriteable ? 1 : 0); @@ -176,12 +181,17 @@ void MtpProperty::write(MtpDataPacket& packet) { case MTP_TYPE_AINT128: case MTP_TYPE_AUINT128: writeArrayValues(packet, mDefaultArrayValues, mDefaultArrayLength); + if (deviceProp) + writeArrayValues(packet, mCurrentArrayValues, mCurrentArrayLength); break; default: writeValue(packet, mDefaultValue); + if (deviceProp) + writeValue(packet, mCurrentValue); } packet.putUInt32(mGroupCode); - packet.putUInt8(mFormFlag); + if (!deviceProp) + packet.putUInt8(mFormFlag); if (mFormFlag == kFormRange) { writeValue(packet, mMinimumValue); writeValue(packet, mMaximumValue); |