Move verbose logging of device capabilities to dumpsys.
Change-Id: I5d55eaebfdf049bd1ac1e7bab2758886cfefc9d7
This commit is contained in:
parent
9e681f5374
commit
26c94ff615
|
@ -308,9 +308,6 @@ private:
|
||||||
GetStateFunc getStateFunc);
|
GetStateFunc getStateFunc);
|
||||||
bool markSupportedKeyCodes(int32_t deviceId, uint32_t sourceMask, size_t numCodes,
|
bool markSupportedKeyCodes(int32_t deviceId, uint32_t sourceMask, size_t numCodes,
|
||||||
const int32_t* keyCodes, uint8_t* outFlags);
|
const int32_t* keyCodes, uint8_t* outFlags);
|
||||||
|
|
||||||
// dump state
|
|
||||||
void dumpDeviceInfo(String8& dump);
|
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
||||||
|
@ -340,6 +337,7 @@ public:
|
||||||
|
|
||||||
inline bool isIgnored() { return mMappers.isEmpty(); }
|
inline bool isIgnored() { return mMappers.isEmpty(); }
|
||||||
|
|
||||||
|
void dump(String8& dump);
|
||||||
void addMapper(InputMapper* mapper);
|
void addMapper(InputMapper* mapper);
|
||||||
void configure();
|
void configure();
|
||||||
void reset();
|
void reset();
|
||||||
|
@ -393,6 +391,7 @@ public:
|
||||||
|
|
||||||
virtual uint32_t getSources() = 0;
|
virtual uint32_t getSources() = 0;
|
||||||
virtual void populateDeviceInfo(InputDeviceInfo* deviceInfo);
|
virtual void populateDeviceInfo(InputDeviceInfo* deviceInfo);
|
||||||
|
virtual void dump(String8& dump);
|
||||||
virtual void configure();
|
virtual void configure();
|
||||||
virtual void reset();
|
virtual void reset();
|
||||||
virtual void process(const RawEvent* rawEvent) = 0;
|
virtual void process(const RawEvent* rawEvent) = 0;
|
||||||
|
@ -436,6 +435,7 @@ public:
|
||||||
|
|
||||||
virtual uint32_t getSources();
|
virtual uint32_t getSources();
|
||||||
virtual void populateDeviceInfo(InputDeviceInfo* deviceInfo);
|
virtual void populateDeviceInfo(InputDeviceInfo* deviceInfo);
|
||||||
|
virtual void dump(String8& dump);
|
||||||
virtual void reset();
|
virtual void reset();
|
||||||
virtual void process(const RawEvent* rawEvent);
|
virtual void process(const RawEvent* rawEvent);
|
||||||
|
|
||||||
|
@ -484,6 +484,7 @@ public:
|
||||||
|
|
||||||
virtual uint32_t getSources();
|
virtual uint32_t getSources();
|
||||||
virtual void populateDeviceInfo(InputDeviceInfo* deviceInfo);
|
virtual void populateDeviceInfo(InputDeviceInfo* deviceInfo);
|
||||||
|
virtual void dump(String8& dump);
|
||||||
virtual void reset();
|
virtual void reset();
|
||||||
virtual void process(const RawEvent* rawEvent);
|
virtual void process(const RawEvent* rawEvent);
|
||||||
|
|
||||||
|
@ -540,6 +541,7 @@ public:
|
||||||
|
|
||||||
virtual uint32_t getSources();
|
virtual uint32_t getSources();
|
||||||
virtual void populateDeviceInfo(InputDeviceInfo* deviceInfo);
|
virtual void populateDeviceInfo(InputDeviceInfo* deviceInfo);
|
||||||
|
virtual void dump(String8& dump);
|
||||||
virtual void configure();
|
virtual void configure();
|
||||||
virtual void reset();
|
virtual void reset();
|
||||||
|
|
||||||
|
@ -761,15 +763,16 @@ protected:
|
||||||
} mLocked;
|
} mLocked;
|
||||||
|
|
||||||
virtual void configureParameters();
|
virtual void configureParameters();
|
||||||
virtual void logParameters();
|
virtual void dumpParameters(String8& dump);
|
||||||
virtual void configureRawAxes();
|
virtual void configureRawAxes();
|
||||||
virtual void logRawAxes();
|
virtual void dumpRawAxes(String8& dump);
|
||||||
virtual bool configureSurfaceLocked();
|
virtual bool configureSurfaceLocked();
|
||||||
virtual void logMotionRangesLocked();
|
virtual void dumpSurfaceLocked(String8& dump);
|
||||||
virtual void configureVirtualKeysLocked();
|
virtual void configureVirtualKeysLocked();
|
||||||
|
virtual void dumpVirtualKeysLocked(String8& dump);
|
||||||
virtual void parseCalibration();
|
virtual void parseCalibration();
|
||||||
virtual void resolveCalibration();
|
virtual void resolveCalibration();
|
||||||
virtual void logCalibration();
|
virtual void dumpCalibration(String8& dump);
|
||||||
|
|
||||||
enum TouchResult {
|
enum TouchResult {
|
||||||
// Dispatch the touch normally.
|
// Dispatch the touch normally.
|
||||||
|
|
|
@ -33,6 +33,9 @@
|
||||||
#include <math.h>
|
#include <math.h>
|
||||||
|
|
||||||
#define INDENT " "
|
#define INDENT " "
|
||||||
|
#define INDENT2 " "
|
||||||
|
#define INDENT3 " "
|
||||||
|
#define INDENT4 " "
|
||||||
|
|
||||||
namespace android {
|
namespace android {
|
||||||
|
|
||||||
|
@ -63,6 +66,10 @@ inline static float pythag(float x, float y) {
|
||||||
return sqrtf(x * x + y * y);
|
return sqrtf(x * x + y * y);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static inline const char* toString(bool value) {
|
||||||
|
return value ? "true" : "false";
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
int32_t updateMetaState(int32_t keyCode, bool down, int32_t oldMetaState) {
|
int32_t updateMetaState(int32_t keyCode, bool down, int32_t oldMetaState) {
|
||||||
int32_t mask;
|
int32_t mask;
|
||||||
|
@ -236,16 +243,14 @@ void InputReader::addDevice(nsecs_t when, int32_t deviceId) {
|
||||||
String8 name = mEventHub->getDeviceName(deviceId);
|
String8 name = mEventHub->getDeviceName(deviceId);
|
||||||
uint32_t classes = mEventHub->getDeviceClasses(deviceId);
|
uint32_t classes = mEventHub->getDeviceClasses(deviceId);
|
||||||
|
|
||||||
// Write a log message about the added device as a heading for subsequent log messages.
|
|
||||||
LOGI("Device added: id=0x%x, name=%s", deviceId, name.string());
|
|
||||||
|
|
||||||
InputDevice* device = createDevice(deviceId, name, classes);
|
InputDevice* device = createDevice(deviceId, name, classes);
|
||||||
device->configure();
|
device->configure();
|
||||||
|
|
||||||
if (device->isIgnored()) {
|
if (device->isIgnored()) {
|
||||||
LOGI(INDENT "Sources: none (device is ignored)");
|
LOGI("Device added: id=0x%x, name=%s (ignored non-input device)", deviceId, name.string());
|
||||||
} else {
|
} else {
|
||||||
LOGI(INDENT "Sources: 0x%08x", device->getSources());
|
LOGI("Device added: id=0x%x, name=%s, sources=%08x", deviceId, name.string(),
|
||||||
|
device->getSources());
|
||||||
}
|
}
|
||||||
|
|
||||||
bool added = false;
|
bool added = false;
|
||||||
|
@ -287,7 +292,6 @@ void InputReader::removeDevice(nsecs_t when, int32_t deviceId) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Write a log message about the removed device as a heading for subsequent log messages.
|
|
||||||
if (device->isIgnored()) {
|
if (device->isIgnored()) {
|
||||||
LOGI("Device removed: id=0x%x, name=%s (ignored non-input device)",
|
LOGI("Device removed: id=0x%x, name=%s (ignored non-input device)",
|
||||||
device->getId(), device->getName().string());
|
device->getId(), device->getName().string());
|
||||||
|
@ -571,59 +575,15 @@ bool InputReader::markSupportedKeyCodes(int32_t deviceId, uint32_t sourceMask, s
|
||||||
}
|
}
|
||||||
|
|
||||||
void InputReader::dump(String8& dump) {
|
void InputReader::dump(String8& dump) {
|
||||||
dumpDeviceInfo(dump);
|
{ // acquire device registry reader lock
|
||||||
}
|
RWLock::AutoRLock _rl(mDeviceRegistryLock);
|
||||||
|
|
||||||
static void dumpMotionRange(String8& dump,
|
for (size_t i = 0; i < mDevices.size(); i++) {
|
||||||
const char* name, const InputDeviceInfo::MotionRange* range) {
|
mDevices.valueAt(i)->dump(dump);
|
||||||
if (range) {
|
|
||||||
dump.appendFormat(" %s = { min: %0.3f, max: %0.3f, flat: %0.3f, fuzz: %0.3f }\n",
|
|
||||||
name, range->min, range->max, range->flat, range->fuzz);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
#define DUMP_MOTION_RANGE(range) \
|
|
||||||
dumpMotionRange(dump, #range, deviceInfo.getMotionRange(AINPUT_MOTION_RANGE_##range));
|
|
||||||
|
|
||||||
void InputReader::dumpDeviceInfo(String8& dump) {
|
|
||||||
Vector<int32_t> deviceIds;
|
|
||||||
getInputDeviceIds(deviceIds);
|
|
||||||
|
|
||||||
InputDeviceInfo deviceInfo;
|
|
||||||
for (size_t i = 0; i < deviceIds.size(); i++) {
|
|
||||||
int32_t deviceId = deviceIds[i];
|
|
||||||
|
|
||||||
status_t result = getInputDeviceInfo(deviceId, & deviceInfo);
|
|
||||||
if (result == NAME_NOT_FOUND) {
|
|
||||||
continue;
|
|
||||||
} else if (result != OK) {
|
|
||||||
dump.appendFormat(" ** Unexpected error %d getting information about input devices.\n",
|
|
||||||
result);
|
|
||||||
continue;
|
|
||||||
}
|
}
|
||||||
|
} // release device registy reader lock
|
||||||
dump.appendFormat(" Device %d: '%s'\n",
|
|
||||||
deviceInfo.getId(), deviceInfo.getName().string());
|
|
||||||
dump.appendFormat(" sources = 0x%08x\n",
|
|
||||||
deviceInfo.getSources());
|
|
||||||
dump.appendFormat(" keyboardType = %d\n",
|
|
||||||
deviceInfo.getKeyboardType());
|
|
||||||
|
|
||||||
dump.append(" motion ranges:\n");
|
|
||||||
DUMP_MOTION_RANGE(X);
|
|
||||||
DUMP_MOTION_RANGE(Y);
|
|
||||||
DUMP_MOTION_RANGE(PRESSURE);
|
|
||||||
DUMP_MOTION_RANGE(SIZE);
|
|
||||||
DUMP_MOTION_RANGE(TOUCH_MAJOR);
|
|
||||||
DUMP_MOTION_RANGE(TOUCH_MINOR);
|
|
||||||
DUMP_MOTION_RANGE(TOOL_MAJOR);
|
|
||||||
DUMP_MOTION_RANGE(TOOL_MINOR);
|
|
||||||
DUMP_MOTION_RANGE(ORIENTATION);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
#undef DUMP_MOTION_RANGE
|
|
||||||
|
|
||||||
|
|
||||||
// --- InputReaderThread ---
|
// --- InputReaderThread ---
|
||||||
|
|
||||||
|
@ -654,6 +614,43 @@ InputDevice::~InputDevice() {
|
||||||
mMappers.clear();
|
mMappers.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
static void dumpMotionRange(String8& dump, const InputDeviceInfo& deviceInfo,
|
||||||
|
int32_t rangeType, const char* name) {
|
||||||
|
const InputDeviceInfo::MotionRange* range = deviceInfo.getMotionRange(rangeType);
|
||||||
|
if (range) {
|
||||||
|
dump.appendFormat(INDENT3 "%s: min=%0.3f, max=%0.3f, flat=%0.3f, fuzz=%0.3f\n",
|
||||||
|
name, range->min, range->max, range->flat, range->fuzz);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
void InputDevice::dump(String8& dump) {
|
||||||
|
InputDeviceInfo deviceInfo;
|
||||||
|
getDeviceInfo(& deviceInfo);
|
||||||
|
|
||||||
|
dump.appendFormat(INDENT "Device 0x%x: %s\n", deviceInfo.getId(),
|
||||||
|
deviceInfo.getName().string());
|
||||||
|
dump.appendFormat(INDENT2 "Sources: 0x%08x\n", deviceInfo.getSources());
|
||||||
|
dump.appendFormat(INDENT2 "KeyboardType: %d\n", deviceInfo.getKeyboardType());
|
||||||
|
if (!deviceInfo.getMotionRanges().isEmpty()) {
|
||||||
|
dump.append(INDENT2 "Motion Ranges:\n");
|
||||||
|
dumpMotionRange(dump, deviceInfo, AINPUT_MOTION_RANGE_X, "X");
|
||||||
|
dumpMotionRange(dump, deviceInfo, AINPUT_MOTION_RANGE_Y, "Y");
|
||||||
|
dumpMotionRange(dump, deviceInfo, AINPUT_MOTION_RANGE_PRESSURE, "Pressure");
|
||||||
|
dumpMotionRange(dump, deviceInfo, AINPUT_MOTION_RANGE_SIZE, "Size");
|
||||||
|
dumpMotionRange(dump, deviceInfo, AINPUT_MOTION_RANGE_TOUCH_MAJOR, "TouchMajor");
|
||||||
|
dumpMotionRange(dump, deviceInfo, AINPUT_MOTION_RANGE_TOUCH_MINOR, "TouchMinor");
|
||||||
|
dumpMotionRange(dump, deviceInfo, AINPUT_MOTION_RANGE_TOOL_MAJOR, "ToolMajor");
|
||||||
|
dumpMotionRange(dump, deviceInfo, AINPUT_MOTION_RANGE_TOOL_MINOR, "ToolMinor");
|
||||||
|
dumpMotionRange(dump, deviceInfo, AINPUT_MOTION_RANGE_ORIENTATION, "Orientation");
|
||||||
|
}
|
||||||
|
|
||||||
|
size_t numMappers = mMappers.size();
|
||||||
|
for (size_t i = 0; i < numMappers; i++) {
|
||||||
|
InputMapper* mapper = mMappers[i];
|
||||||
|
mapper->dump(dump);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
void InputDevice::addMapper(InputMapper* mapper) {
|
void InputDevice::addMapper(InputMapper* mapper) {
|
||||||
mMappers.add(mapper);
|
mMappers.add(mapper);
|
||||||
}
|
}
|
||||||
|
@ -763,6 +760,9 @@ void InputMapper::populateDeviceInfo(InputDeviceInfo* info) {
|
||||||
info->addSource(getSources());
|
info->addSource(getSources());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void InputMapper::dump(String8& dump) {
|
||||||
|
}
|
||||||
|
|
||||||
void InputMapper::configure() {
|
void InputMapper::configure() {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -856,6 +856,19 @@ void KeyboardInputMapper::populateDeviceInfo(InputDeviceInfo* info) {
|
||||||
info->setKeyboardType(mKeyboardType);
|
info->setKeyboardType(mKeyboardType);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void KeyboardInputMapper::dump(String8& dump) {
|
||||||
|
{ // acquire lock
|
||||||
|
AutoMutex _l(mLock);
|
||||||
|
dump.append(INDENT2 "Keyboard Input Mapper:\n");
|
||||||
|
dump.appendFormat(INDENT3 "AssociatedDisplayId: %d\n", mAssociatedDisplayId);
|
||||||
|
dump.appendFormat(INDENT3 "Sources: 0x%x\n", mSources);
|
||||||
|
dump.appendFormat(INDENT3 "KeyboardType: %d\n", mKeyboardType);
|
||||||
|
dump.appendFormat(INDENT3 "KeyDowns: %d keys currently down\n", mLocked.keyDowns.size());
|
||||||
|
dump.appendFormat(INDENT3 "MetaState: 0x%0x\n", mLocked.metaState);
|
||||||
|
dump.appendFormat(INDENT3 "DownTime: %lld\n", mLocked.downTime);
|
||||||
|
} // release lock
|
||||||
|
}
|
||||||
|
|
||||||
void KeyboardInputMapper::reset() {
|
void KeyboardInputMapper::reset() {
|
||||||
for (;;) {
|
for (;;) {
|
||||||
int32_t keyCode, scanCode;
|
int32_t keyCode, scanCode;
|
||||||
|
@ -1044,6 +1057,18 @@ void TrackballInputMapper::populateDeviceInfo(InputDeviceInfo* info) {
|
||||||
info->addMotionRange(AINPUT_MOTION_RANGE_Y, -1.0f, 1.0f, 0.0f, mYScale);
|
info->addMotionRange(AINPUT_MOTION_RANGE_Y, -1.0f, 1.0f, 0.0f, mYScale);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TrackballInputMapper::dump(String8& dump) {
|
||||||
|
{ // acquire lock
|
||||||
|
AutoMutex _l(mLock);
|
||||||
|
dump.append(INDENT2 "Trackball Input Mapper:\n");
|
||||||
|
dump.appendFormat(INDENT3 "AssociatedDisplayId: %d\n", mAssociatedDisplayId);
|
||||||
|
dump.appendFormat(INDENT3 "XPrecision: %0.3f\n", mXPrecision);
|
||||||
|
dump.appendFormat(INDENT3 "YPrecision: %0.3f\n", mYPrecision);
|
||||||
|
dump.appendFormat(INDENT3 "Down: %s\n", toString(mLocked.down));
|
||||||
|
dump.appendFormat(INDENT3 "DownTime: %lld\n", mLocked.downTime);
|
||||||
|
} // release lock
|
||||||
|
}
|
||||||
|
|
||||||
void TrackballInputMapper::initializeLocked() {
|
void TrackballInputMapper::initializeLocked() {
|
||||||
mAccumulator.clear();
|
mAccumulator.clear();
|
||||||
|
|
||||||
|
@ -1275,6 +1300,21 @@ void TouchInputMapper::populateDeviceInfo(InputDeviceInfo* info) {
|
||||||
} // release lock
|
} // release lock
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void TouchInputMapper::dump(String8& dump) {
|
||||||
|
{ // acquire lock
|
||||||
|
AutoMutex _l(mLock);
|
||||||
|
dump.append(INDENT2 "Touch Input Mapper:\n");
|
||||||
|
dump.appendFormat(INDENT3 "AssociatedDisplayId: %d\n", mAssociatedDisplayId);
|
||||||
|
dumpParameters(dump);
|
||||||
|
dumpVirtualKeysLocked(dump);
|
||||||
|
dumpRawAxes(dump);
|
||||||
|
dumpCalibration(dump);
|
||||||
|
dumpSurfaceLocked(dump);
|
||||||
|
dump.appendFormat(INDENT3 "XPrecision: %0.3f\n", mLocked.xPrecision);
|
||||||
|
dump.appendFormat(INDENT3 "YPrecision: %0.3f\n", mLocked.yPrecision);
|
||||||
|
} // release lock
|
||||||
|
}
|
||||||
|
|
||||||
void TouchInputMapper::initializeLocked() {
|
void TouchInputMapper::initializeLocked() {
|
||||||
mCurrentTouch.clear();
|
mCurrentTouch.clear();
|
||||||
mLastTouch.clear();
|
mLastTouch.clear();
|
||||||
|
@ -1301,16 +1341,13 @@ void TouchInputMapper::configure() {
|
||||||
|
|
||||||
// Configure basic parameters.
|
// Configure basic parameters.
|
||||||
configureParameters();
|
configureParameters();
|
||||||
logParameters();
|
|
||||||
|
|
||||||
// Configure absolute axis information.
|
// Configure absolute axis information.
|
||||||
configureRawAxes();
|
configureRawAxes();
|
||||||
logRawAxes();
|
|
||||||
|
|
||||||
// Prepare input device calibration.
|
// Prepare input device calibration.
|
||||||
parseCalibration();
|
parseCalibration();
|
||||||
resolveCalibration();
|
resolveCalibration();
|
||||||
logCalibration();
|
|
||||||
|
|
||||||
{ // acquire lock
|
{ // acquire lock
|
||||||
AutoMutex _l(mLock);
|
AutoMutex _l(mLock);
|
||||||
|
@ -1326,16 +1363,13 @@ void TouchInputMapper::configureParameters() {
|
||||||
mParameters.useJumpyTouchFilter = getPolicy()->filterJumpyTouchEvents();
|
mParameters.useJumpyTouchFilter = getPolicy()->filterJumpyTouchEvents();
|
||||||
}
|
}
|
||||||
|
|
||||||
void TouchInputMapper::logParameters() {
|
void TouchInputMapper::dumpParameters(String8& dump) {
|
||||||
if (mParameters.useBadTouchFilter) {
|
dump.appendFormat(INDENT3 "UseBadTouchFilter: %s\n",
|
||||||
LOGI(INDENT "Bad touch filter enabled.");
|
toString(mParameters.useBadTouchFilter));
|
||||||
}
|
dump.appendFormat(INDENT3 "UseAveragingTouchFilter: %s\n",
|
||||||
if (mParameters.useAveragingTouchFilter) {
|
toString(mParameters.useAveragingTouchFilter));
|
||||||
LOGI(INDENT "Averaging touch filter enabled.");
|
dump.appendFormat(INDENT3 "UseJumpyTouchFilter: %s\n",
|
||||||
}
|
toString(mParameters.useJumpyTouchFilter));
|
||||||
if (mParameters.useJumpyTouchFilter) {
|
|
||||||
LOGI(INDENT "Jumpy touch filter enabled.");
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TouchInputMapper::configureRawAxes() {
|
void TouchInputMapper::configureRawAxes() {
|
||||||
|
@ -1349,24 +1383,25 @@ void TouchInputMapper::configureRawAxes() {
|
||||||
mRawAxes.orientation.clear();
|
mRawAxes.orientation.clear();
|
||||||
}
|
}
|
||||||
|
|
||||||
static void logAxisInfo(RawAbsoluteAxisInfo axis, const char* name) {
|
static void dumpAxisInfo(String8& dump, RawAbsoluteAxisInfo axis, const char* name) {
|
||||||
if (axis.valid) {
|
if (axis.valid) {
|
||||||
LOGI(INDENT "Raw %s axis: min=%d, max=%d, flat=%d, fuzz=%d",
|
dump.appendFormat(INDENT4 "%s: min=%d, max=%d, flat=%d, fuzz=%d\n",
|
||||||
name, axis.minValue, axis.maxValue, axis.flat, axis.fuzz);
|
name, axis.minValue, axis.maxValue, axis.flat, axis.fuzz);
|
||||||
} else {
|
} else {
|
||||||
LOGI(INDENT "Raw %s axis: unknown range", name);
|
dump.appendFormat(INDENT4 "%s: unknown range\n", name);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void TouchInputMapper::logRawAxes() {
|
void TouchInputMapper::dumpRawAxes(String8& dump) {
|
||||||
logAxisInfo(mRawAxes.x, "x");
|
dump.append(INDENT3 "Raw Axes:\n");
|
||||||
logAxisInfo(mRawAxes.y, "y");
|
dumpAxisInfo(dump, mRawAxes.x, "X");
|
||||||
logAxisInfo(mRawAxes.pressure, "pressure");
|
dumpAxisInfo(dump, mRawAxes.y, "Y");
|
||||||
logAxisInfo(mRawAxes.touchMajor, "touchMajor");
|
dumpAxisInfo(dump, mRawAxes.pressure, "Pressure");
|
||||||
logAxisInfo(mRawAxes.touchMinor, "touchMinor");
|
dumpAxisInfo(dump, mRawAxes.touchMajor, "TouchMajor");
|
||||||
logAxisInfo(mRawAxes.toolMajor, "toolMajor");
|
dumpAxisInfo(dump, mRawAxes.touchMinor, "TouchMinor");
|
||||||
logAxisInfo(mRawAxes.toolMinor, "toolMinor");
|
dumpAxisInfo(dump, mRawAxes.toolMajor, "ToolMajor");
|
||||||
logAxisInfo(mRawAxes.orientation, "orientation");
|
dumpAxisInfo(dump, mRawAxes.toolMinor, "ToolMinor");
|
||||||
|
dumpAxisInfo(dump, mRawAxes.orientation, "Orientation");
|
||||||
}
|
}
|
||||||
|
|
||||||
bool TouchInputMapper::configureSurfaceLocked() {
|
bool TouchInputMapper::configureSurfaceLocked() {
|
||||||
|
@ -1391,10 +1426,8 @@ bool TouchInputMapper::configureSurfaceLocked() {
|
||||||
|
|
||||||
bool sizeChanged = mLocked.surfaceWidth != width || mLocked.surfaceHeight != height;
|
bool sizeChanged = mLocked.surfaceWidth != width || mLocked.surfaceHeight != height;
|
||||||
if (sizeChanged) {
|
if (sizeChanged) {
|
||||||
LOGI("Device reconfigured (display size changed): id=0x%x, name=%s",
|
LOGI("Device reconfigured: id=0x%x, name=%s, display size is now %dx%d",
|
||||||
getDeviceId(), getDeviceName().string());
|
getDeviceId(), getDeviceName().string(), width, height);
|
||||||
LOGI(INDENT "Width: %dpx", width);
|
|
||||||
LOGI(INDENT "Height: %dpx", height);
|
|
||||||
|
|
||||||
mLocked.surfaceWidth = width;
|
mLocked.surfaceWidth = width;
|
||||||
mLocked.surfaceHeight = height;
|
mLocked.surfaceHeight = height;
|
||||||
|
@ -1562,39 +1595,13 @@ bool TouchInputMapper::configureSurfaceLocked() {
|
||||||
mLocked.orientedRanges.y.fuzz = orientedYScale;
|
mLocked.orientedRanges.y.fuzz = orientedYScale;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (sizeChanged) {
|
|
||||||
logMotionRangesLocked();
|
|
||||||
}
|
|
||||||
|
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
static void logMotionRangeInfo(InputDeviceInfo::MotionRange* range, const char* name) {
|
void TouchInputMapper::dumpSurfaceLocked(String8& dump) {
|
||||||
if (range) {
|
dump.appendFormat(INDENT3 "SurfaceWidth: %dpx\n", mLocked.surfaceWidth);
|
||||||
LOGI(INDENT "Output %s range: min=%f, max=%f, flat=%f, fuzz=%f",
|
dump.appendFormat(INDENT3 "SurfaceHeight: %dpx\n", mLocked.surfaceHeight);
|
||||||
name, range->min, range->max, range->flat, range->fuzz);
|
dump.appendFormat(INDENT3 "SurfaceOrientation: %d\n", mLocked.surfaceOrientation);
|
||||||
} else {
|
|
||||||
LOGI(INDENT "Output %s range: unsupported", name);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
void TouchInputMapper::logMotionRangesLocked() {
|
|
||||||
logMotionRangeInfo(& mLocked.orientedRanges.x, "x");
|
|
||||||
logMotionRangeInfo(& mLocked.orientedRanges.y, "y");
|
|
||||||
logMotionRangeInfo(mLocked.orientedRanges.havePressure
|
|
||||||
? & mLocked.orientedRanges.pressure : NULL, "pressure");
|
|
||||||
logMotionRangeInfo(mLocked.orientedRanges.haveSize
|
|
||||||
? & mLocked.orientedRanges.size : NULL, "size");
|
|
||||||
logMotionRangeInfo(mLocked.orientedRanges.haveTouchArea
|
|
||||||
? & mLocked.orientedRanges.touchMajor : NULL, "touchMajor");
|
|
||||||
logMotionRangeInfo(mLocked.orientedRanges.haveTouchArea
|
|
||||||
? & mLocked.orientedRanges.touchMinor : NULL, "touchMinor");
|
|
||||||
logMotionRangeInfo(mLocked.orientedRanges.haveToolArea
|
|
||||||
? & mLocked.orientedRanges.toolMajor : NULL, "toolMajor");
|
|
||||||
logMotionRangeInfo(mLocked.orientedRanges.haveToolArea
|
|
||||||
? & mLocked.orientedRanges.toolMinor : NULL, "toolMinor");
|
|
||||||
logMotionRangeInfo(mLocked.orientedRanges.haveOrientation
|
|
||||||
? & mLocked.orientedRanges.orientation : NULL, "orientation");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
void TouchInputMapper::configureVirtualKeysLocked() {
|
void TouchInputMapper::configureVirtualKeysLocked() {
|
||||||
|
@ -1651,9 +1658,21 @@ void TouchInputMapper::configureVirtualKeysLocked() {
|
||||||
virtualKey.hitBottom = (virtualKeyDefinition.centerY + halfHeight)
|
virtualKey.hitBottom = (virtualKeyDefinition.centerY + halfHeight)
|
||||||
* touchScreenHeight / mLocked.surfaceHeight + touchScreenTop;
|
* touchScreenHeight / mLocked.surfaceHeight + touchScreenTop;
|
||||||
|
|
||||||
LOGI(INDENT "VirtualKey %d: keyCode=%d hitLeft=%d hitRight=%d hitTop=%d hitBottom=%d",
|
}
|
||||||
virtualKey.scanCode, virtualKey.keyCode,
|
}
|
||||||
virtualKey.hitLeft, virtualKey.hitRight, virtualKey.hitTop, virtualKey.hitBottom);
|
|
||||||
|
void TouchInputMapper::dumpVirtualKeysLocked(String8& dump) {
|
||||||
|
if (!mLocked.virtualKeys.isEmpty()) {
|
||||||
|
dump.append(INDENT3 "Virtual Keys:\n");
|
||||||
|
|
||||||
|
for (size_t i = 0; i < mLocked.virtualKeys.size(); i++) {
|
||||||
|
const VirtualKey& virtualKey = mLocked.virtualKeys.itemAt(i);
|
||||||
|
dump.appendFormat(INDENT4 "%d: scanCode=%d, keyCode=%d, "
|
||||||
|
"hitLeft=%d, hitRight=%d, hitTop=%d, hitBottom=%d\n",
|
||||||
|
i, virtualKey.scanCode, virtualKey.keyCode,
|
||||||
|
virtualKey.hitLeft, virtualKey.hitRight,
|
||||||
|
virtualKey.hitTop, virtualKey.hitBottom);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1861,19 +1880,19 @@ void TouchInputMapper::resolveCalibration() {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void TouchInputMapper::logCalibration() {
|
void TouchInputMapper::dumpCalibration(String8& dump) {
|
||||||
LOGI(INDENT "Calibration:");
|
dump.append(INDENT3 "Calibration:\n");
|
||||||
|
|
||||||
// Touch Area
|
// Touch Area
|
||||||
switch (mCalibration.touchAreaCalibration) {
|
switch (mCalibration.touchAreaCalibration) {
|
||||||
case Calibration::TOUCH_AREA_CALIBRATION_NONE:
|
case Calibration::TOUCH_AREA_CALIBRATION_NONE:
|
||||||
LOGI(INDENT INDENT "touch.touchArea.calibration: none");
|
dump.append(INDENT4 "touch.touchArea.calibration: none\n");
|
||||||
break;
|
break;
|
||||||
case Calibration::TOUCH_AREA_CALIBRATION_GEOMETRIC:
|
case Calibration::TOUCH_AREA_CALIBRATION_GEOMETRIC:
|
||||||
LOGI(INDENT INDENT "touch.touchArea.calibration: geometric");
|
dump.append(INDENT4 "touch.touchArea.calibration: geometric\n");
|
||||||
break;
|
break;
|
||||||
case Calibration::TOUCH_AREA_CALIBRATION_PRESSURE:
|
case Calibration::TOUCH_AREA_CALIBRATION_PRESSURE:
|
||||||
LOGI(INDENT INDENT "touch.touchArea.calibration: pressure");
|
dump.append(INDENT4 "touch.touchArea.calibration: pressure\n");
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
assert(false);
|
assert(false);
|
||||||
|
@ -1882,40 +1901,43 @@ void TouchInputMapper::logCalibration() {
|
||||||
// Tool Area
|
// Tool Area
|
||||||
switch (mCalibration.toolAreaCalibration) {
|
switch (mCalibration.toolAreaCalibration) {
|
||||||
case Calibration::TOOL_AREA_CALIBRATION_NONE:
|
case Calibration::TOOL_AREA_CALIBRATION_NONE:
|
||||||
LOGI(INDENT INDENT "touch.toolArea.calibration: none");
|
dump.append(INDENT4 "touch.toolArea.calibration: none\n");
|
||||||
break;
|
break;
|
||||||
case Calibration::TOOL_AREA_CALIBRATION_GEOMETRIC:
|
case Calibration::TOOL_AREA_CALIBRATION_GEOMETRIC:
|
||||||
LOGI(INDENT INDENT "touch.toolArea.calibration: geometric");
|
dump.append(INDENT4 "touch.toolArea.calibration: geometric\n");
|
||||||
break;
|
break;
|
||||||
case Calibration::TOOL_AREA_CALIBRATION_LINEAR:
|
case Calibration::TOOL_AREA_CALIBRATION_LINEAR:
|
||||||
LOGI(INDENT INDENT "touch.toolArea.calibration: linear");
|
dump.append(INDENT4 "touch.toolArea.calibration: linear\n");
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
assert(false);
|
assert(false);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mCalibration.haveToolAreaLinearScale) {
|
if (mCalibration.haveToolAreaLinearScale) {
|
||||||
LOGI(INDENT INDENT "touch.toolArea.linearScale: %f", mCalibration.toolAreaLinearScale);
|
dump.appendFormat(INDENT4 "touch.toolArea.linearScale: %0.3f\n",
|
||||||
|
mCalibration.toolAreaLinearScale);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mCalibration.haveToolAreaLinearBias) {
|
if (mCalibration.haveToolAreaLinearBias) {
|
||||||
LOGI(INDENT INDENT "touch.toolArea.linearBias: %f", mCalibration.toolAreaLinearBias);
|
dump.appendFormat(INDENT4 "touch.toolArea.linearBias: %0.3f\n",
|
||||||
|
mCalibration.toolAreaLinearBias);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mCalibration.haveToolAreaIsSummed) {
|
if (mCalibration.haveToolAreaIsSummed) {
|
||||||
LOGI(INDENT INDENT "touch.toolArea.isSummed: %d", mCalibration.toolAreaIsSummed);
|
dump.appendFormat(INDENT4 "touch.toolArea.isSummed: %d\n",
|
||||||
|
mCalibration.toolAreaIsSummed);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Pressure
|
// Pressure
|
||||||
switch (mCalibration.pressureCalibration) {
|
switch (mCalibration.pressureCalibration) {
|
||||||
case Calibration::PRESSURE_CALIBRATION_NONE:
|
case Calibration::PRESSURE_CALIBRATION_NONE:
|
||||||
LOGI(INDENT INDENT "touch.pressure.calibration: none");
|
dump.append(INDENT4 "touch.pressure.calibration: none\n");
|
||||||
break;
|
break;
|
||||||
case Calibration::PRESSURE_CALIBRATION_PHYSICAL:
|
case Calibration::PRESSURE_CALIBRATION_PHYSICAL:
|
||||||
LOGI(INDENT INDENT "touch.pressure.calibration: physical");
|
dump.append(INDENT4 "touch.pressure.calibration: physical\n");
|
||||||
break;
|
break;
|
||||||
case Calibration::PRESSURE_CALIBRATION_AMPLITUDE:
|
case Calibration::PRESSURE_CALIBRATION_AMPLITUDE:
|
||||||
LOGI(INDENT INDENT "touch.pressure.calibration: amplitude");
|
dump.append(INDENT4 "touch.pressure.calibration: amplitude\n");
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
assert(false);
|
assert(false);
|
||||||
|
@ -1923,10 +1945,10 @@ void TouchInputMapper::logCalibration() {
|
||||||
|
|
||||||
switch (mCalibration.pressureSource) {
|
switch (mCalibration.pressureSource) {
|
||||||
case Calibration::PRESSURE_SOURCE_PRESSURE:
|
case Calibration::PRESSURE_SOURCE_PRESSURE:
|
||||||
LOGI(INDENT INDENT "touch.pressure.source: pressure");
|
dump.append(INDENT4 "touch.pressure.source: pressure\n");
|
||||||
break;
|
break;
|
||||||
case Calibration::PRESSURE_SOURCE_TOUCH:
|
case Calibration::PRESSURE_SOURCE_TOUCH:
|
||||||
LOGI(INDENT INDENT "touch.pressure.source: touch");
|
dump.append(INDENT4 "touch.pressure.source: touch\n");
|
||||||
break;
|
break;
|
||||||
case Calibration::PRESSURE_SOURCE_DEFAULT:
|
case Calibration::PRESSURE_SOURCE_DEFAULT:
|
||||||
break;
|
break;
|
||||||
|
@ -1935,16 +1957,17 @@ void TouchInputMapper::logCalibration() {
|
||||||
}
|
}
|
||||||
|
|
||||||
if (mCalibration.havePressureScale) {
|
if (mCalibration.havePressureScale) {
|
||||||
LOGI(INDENT INDENT "touch.pressure.scale: %f", mCalibration.pressureScale);
|
dump.appendFormat(INDENT4 "touch.pressure.scale: %0.3f\n",
|
||||||
|
mCalibration.pressureScale);
|
||||||
}
|
}
|
||||||
|
|
||||||
// Size
|
// Size
|
||||||
switch (mCalibration.sizeCalibration) {
|
switch (mCalibration.sizeCalibration) {
|
||||||
case Calibration::SIZE_CALIBRATION_NONE:
|
case Calibration::SIZE_CALIBRATION_NONE:
|
||||||
LOGI(INDENT INDENT "touch.size.calibration: none");
|
dump.append(INDENT4 "touch.size.calibration: none\n");
|
||||||
break;
|
break;
|
||||||
case Calibration::SIZE_CALIBRATION_NORMALIZED:
|
case Calibration::SIZE_CALIBRATION_NORMALIZED:
|
||||||
LOGI(INDENT INDENT "touch.size.calibration: normalized");
|
dump.append(INDENT4 "touch.size.calibration: normalized\n");
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
assert(false);
|
assert(false);
|
||||||
|
@ -1953,10 +1976,10 @@ void TouchInputMapper::logCalibration() {
|
||||||
// Orientation
|
// Orientation
|
||||||
switch (mCalibration.orientationCalibration) {
|
switch (mCalibration.orientationCalibration) {
|
||||||
case Calibration::ORIENTATION_CALIBRATION_NONE:
|
case Calibration::ORIENTATION_CALIBRATION_NONE:
|
||||||
LOGI(INDENT INDENT "touch.orientation.calibration: none");
|
dump.append(INDENT4 "touch.orientation.calibration: none\n");
|
||||||
break;
|
break;
|
||||||
case Calibration::ORIENTATION_CALIBRATION_INTERPOLATED:
|
case Calibration::ORIENTATION_CALIBRATION_INTERPOLATED:
|
||||||
LOGI(INDENT INDENT "touch.orientation.calibration: interpolated");
|
dump.append(INDENT4 "touch.orientation.calibration: interpolated\n");
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
assert(false);
|
assert(false);
|
||||||
|
|
Loading…
Reference in New Issue