hidl: touch: Add binderized service implementation

* Change default ::implementation namespace to ::samsung
* Fill in required methods for used impls
* Cleanup passthrough code for used impls
* Add and setup binderized service

Change-Id: Iadc3b6e385233d103c3349ce31a08d6d040886c7
diff --git a/lineagehw/hidl/touch/TouchscreenGesture.h b/lineagehw/hidl/touch/TouchscreenGesture.h
index bb2d336..c1d7c70 100644
--- a/lineagehw/hidl/touch/TouchscreenGesture.h
+++ b/lineagehw/hidl/touch/TouchscreenGesture.h
@@ -25,7 +25,7 @@
 namespace lineage {
 namespace touch {
 namespace V1_0 {
-namespace implementation {
+namespace samsung {
 
 using ::android::hardware::hidl_array;
 using ::android::hardware::hidl_memory;
@@ -35,19 +35,28 @@
 using ::android::hardware::Void;
 using ::android::sp;
 
-struct TouchscreenGesture : public ITouchscreenGesture {
-    // Methods from ::vendor::lineage::touch::V1_0::ITouchscreenGesture follow.
-    Return<void> getSupportedGestures(getSupportedGestures_cb _hidl_cb) override;
-    Return<void> setGestureEnabled(const ::vendor::lineage::touch::V1_0::Gesture& gesture, bool enabled) override;
+class TouchscreenGesture : public ITouchscreenGesture {
+  public:
+    bool isSupported();
 
-    // Methods from ::android::hidl::base::V1_0::IBase follow.
+    // Methods from ::vendor::lineage::touch::V1_0::ITouchscreenGesture follow.
+    Return<void> getSupportedGestures(getSupportedGestures_cb resultCb) override;
+    Return<bool> setGestureEnabled(const ::vendor::lineage::touch::V1_0::Gesture& gesture,
+                                   bool enabled) override;
+
+  private:
+    typedef struct {
+        int32_t keycode;
+        const char* name;
+    } GestureInfo;
+    static const std::map<int32_t, GestureInfo> kGestureInfoMap;  // id -> info
 
 };
 
 // FIXME: most likely delete, this is only for passthrough implementations
 // extern "C" ITouchscreenGesture* HIDL_FETCH_ITouchscreenGesture(const char* name);
 
-}  // namespace implementation
+}  // namespace samsung
 }  // namespace V1_0
 }  // namespace touch
 }  // namespace lineage