Add logging for switch state

Bug: 17004602
Change-Id: I15c9feb7b28274183742936c20e34e7fb07e0b70
diff --git a/services/inputflinger/InputReader.cpp b/services/inputflinger/InputReader.cpp
index 8295c4c..b7c7ff4 100644
--- a/services/inputflinger/InputReader.cpp
+++ b/services/inputflinger/InputReader.cpp
@@ -1815,7 +1815,7 @@
 // --- SwitchInputMapper ---
 
 SwitchInputMapper::SwitchInputMapper(InputDevice* device) :
-        InputMapper(device), mUpdatedSwitchValues(0), mUpdatedSwitchMask(0) {
+        InputMapper(device), mSwitchValues(0), mUpdatedSwitchMask(0) {
 }
 
 SwitchInputMapper::~SwitchInputMapper() {
@@ -1841,7 +1841,9 @@
 void SwitchInputMapper::processSwitch(int32_t switchCode, int32_t switchValue) {
     if (switchCode >= 0 && switchCode < 32) {
         if (switchValue) {
-            mUpdatedSwitchValues |= 1 << switchCode;
+            mSwitchValues |= 1 << switchCode;
+        } else {
+            mSwitchValues &= ~(1 << switchCode);
         }
         mUpdatedSwitchMask |= 1 << switchCode;
     }
@@ -1849,10 +1851,10 @@
 
 void SwitchInputMapper::sync(nsecs_t when) {
     if (mUpdatedSwitchMask) {
-        NotifySwitchArgs args(when, 0, mUpdatedSwitchValues, mUpdatedSwitchMask);
+        int32_t updatedSwitchValues = mSwitchValues & mUpdatedSwitchMask;
+        NotifySwitchArgs args(when, 0, updatedSwitchValues, mUpdatedSwitchMask);
         getListener()->notifySwitch(&args);
 
-        mUpdatedSwitchValues = 0;
         mUpdatedSwitchMask = 0;
     }
 }
@@ -1861,6 +1863,10 @@
     return getEventHub()->getSwitchState(getDeviceId(), switchCode);
 }
 
+void SwitchInputMapper::dump(String8& dump) {
+    dump.append(INDENT2 "Switch Input Mapper:\n");
+    dump.appendFormat(INDENT3 "SwitchValues: %x\n", mSwitchValues);
+}
 
 // --- VibratorInputMapper ---