summaryrefslogtreecommitdiffstats
path: root/media/mtp/MtpProperty.cpp
diff options
context:
space:
mode:
authorMike Lockwood <lockwood@android.com>2010-09-25 08:37:59 -0400
committerMike Lockwood <lockwood@android.com>2010-09-25 08:37:59 -0400
commit7cee5d3c3673d9a325d8096eea0ba48258fc656c (patch)
tree5fa5872aae1d612c7408764b24a58a2d20c3927b /media/mtp/MtpProperty.cpp
parent74aa142af3eefd53e676b0a57e6032c9340f561e (diff)
downloadframeworks_av-7cee5d3c3673d9a325d8096eea0ba48258fc656c.zip
frameworks_av-7cee5d3c3673d9a325d8096eea0ba48258fc656c.tar.gz
frameworks_av-7cee5d3c3673d9a325d8096eea0ba48258fc656c.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/MtpProperty.cpp')
-rw-r--r--media/mtp/MtpProperty.cpp18
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);