Merge changes I49b383d3,I70809401
* changes: MTP: Don't dump data packets twice in debug output. Add support for range and enum forms in MTP ObjectPropDescs
This commit is contained in:
committed by
Android (Google) Code Review
commit
f1094227f8
@@ -373,7 +373,6 @@ int MtpDataPacket::readDataHeader(int fd) {
|
||||
int MtpDataPacket::write(int fd) {
|
||||
MtpPacket::putUInt32(MTP_CONTAINER_LENGTH_OFFSET, mPacketSize);
|
||||
MtpPacket::putUInt16(MTP_CONTAINER_TYPE_OFFSET, MTP_CONTAINER_TYPE_DATA);
|
||||
dump();
|
||||
// send header separately from data
|
||||
int ret = ::write(fd, mBuffer, MTP_CONTAINER_HEADER_SIZE);
|
||||
if (ret == MTP_CONTAINER_HEADER_SIZE)
|
||||
|
||||
@@ -63,7 +63,6 @@ static const CodeEntry sOperationCodes[] = {
|
||||
};
|
||||
|
||||
static const CodeEntry sFormatCodes[] = {
|
||||
{ "MTP_OPERATION_GET_DEVICE_INFO", 0x1001 },
|
||||
{ "MTP_FORMAT_UNDEFINED", 0x3000 },
|
||||
{ "MTP_FORMAT_ASSOCIATION", 0x3001 },
|
||||
{ "MTP_FORMAT_SCRIPT", 0x3002 },
|
||||
|
||||
@@ -223,6 +223,95 @@ void MtpProperty::setCurrentValue(const uint16_t* string) {
|
||||
mCurrentValue.str = NULL;
|
||||
}
|
||||
|
||||
void MtpProperty::setFormRange(int min, int max, int step) {
|
||||
mFormFlag = kFormRange;
|
||||
switch (mType) {
|
||||
case MTP_TYPE_INT8:
|
||||
mMinimumValue.u.i8 = min;
|
||||
mMaximumValue.u.i8 = max;
|
||||
mStepSize.u.i8 = step;
|
||||
break;
|
||||
case MTP_TYPE_UINT8:
|
||||
mMinimumValue.u.u8 = min;
|
||||
mMaximumValue.u.u8 = max;
|
||||
mStepSize.u.u8 = step;
|
||||
break;
|
||||
case MTP_TYPE_INT16:
|
||||
mMinimumValue.u.i16 = min;
|
||||
mMaximumValue.u.i16 = max;
|
||||
mStepSize.u.i16 = step;
|
||||
break;
|
||||
case MTP_TYPE_UINT16:
|
||||
mMinimumValue.u.u16 = min;
|
||||
mMaximumValue.u.u16 = max;
|
||||
mStepSize.u.u16 = step;
|
||||
break;
|
||||
case MTP_TYPE_INT32:
|
||||
mMinimumValue.u.i32 = min;
|
||||
mMaximumValue.u.i32 = max;
|
||||
mStepSize.u.i32 = step;
|
||||
break;
|
||||
case MTP_TYPE_UINT32:
|
||||
mMinimumValue.u.u32 = min;
|
||||
mMaximumValue.u.u32 = max;
|
||||
mStepSize.u.u32 = step;
|
||||
break;
|
||||
case MTP_TYPE_INT64:
|
||||
mMinimumValue.u.i64 = min;
|
||||
mMaximumValue.u.i64 = max;
|
||||
mStepSize.u.i64 = step;
|
||||
break;
|
||||
case MTP_TYPE_UINT64:
|
||||
mMinimumValue.u.u64 = min;
|
||||
mMaximumValue.u.u64 = max;
|
||||
mStepSize.u.u64 = step;
|
||||
break;
|
||||
default:
|
||||
LOGE("unsupported type for MtpProperty::setRange");
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
void MtpProperty::setFormEnum(const int* values, int count) {
|
||||
mFormFlag = kFormEnum;
|
||||
delete[] mEnumValues;
|
||||
mEnumValues = new MtpPropertyValue[count];
|
||||
mEnumLength = count;
|
||||
|
||||
for (int i = 0; i < count; i++) {
|
||||
int value = *values++;
|
||||
switch (mType) {
|
||||
case MTP_TYPE_INT8:
|
||||
mEnumValues[i].u.i8 = value;
|
||||
break;
|
||||
case MTP_TYPE_UINT8:
|
||||
mEnumValues[i].u.u8 = value;
|
||||
break;
|
||||
case MTP_TYPE_INT16:
|
||||
mEnumValues[i].u.i16 = value;
|
||||
break;
|
||||
case MTP_TYPE_UINT16:
|
||||
mEnumValues[i].u.u16 = value;
|
||||
break;
|
||||
case MTP_TYPE_INT32:
|
||||
mEnumValues[i].u.i32 = value;
|
||||
break;
|
||||
case MTP_TYPE_UINT32:
|
||||
mEnumValues[i].u.u32 = value;
|
||||
break;
|
||||
case MTP_TYPE_INT64:
|
||||
mEnumValues[i].u.i64 = value;
|
||||
break;
|
||||
case MTP_TYPE_UINT64:
|
||||
mEnumValues[i].u.u64 = value;
|
||||
break;
|
||||
default:
|
||||
LOGE("unsupported type for MtpProperty::setEnum");
|
||||
break;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
void MtpProperty::print() {
|
||||
LOGV("MtpProperty %04X\n", mCode);
|
||||
LOGV(" type %04X\n", mType);
|
||||
|
||||
@@ -88,6 +88,9 @@ public:
|
||||
void setDefaultValue(const uint16_t* string);
|
||||
void setCurrentValue(const uint16_t* string);
|
||||
|
||||
void setFormRange(int min, int max, int step);
|
||||
void setFormEnum(const int* values, int count);
|
||||
|
||||
void print();
|
||||
|
||||
inline bool isDeviceProperty() const {
|
||||
|
||||
Reference in New Issue
Block a user