Merge "ledflasher: Update to use new component/trait APIs from weaved"
diff --git a/src/ledflasher/Android.mk b/src/ledflasher/Android.mk
index e1f7456..12d9cac 100644
--- a/src/ledflasher/Android.mk
+++ b/src/ledflasher/Android.mk
@@ -17,9 +17,7 @@
 include $(CLEAR_VARS)
 LOCAL_MODULE := ledflasher
 LOCAL_INIT_RC := ledflasher.rc
-LOCAL_REQUIRED_MODULES := \
-	ledflasher.json \
-	ledflasher.schema.json \
+LOCAL_REQUIRED_MODULES := ledflasher.json
 
 LOCAL_SRC_FILES := \
 	animation.cpp \
@@ -48,13 +46,6 @@
 include $(CLEAR_VARS)
 LOCAL_MODULE := ledflasher.json
 LOCAL_MODULE_CLASS := ETC
-LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/weaved/commands
-LOCAL_SRC_FILES := etc/weaved/commands/$(LOCAL_MODULE)
-include $(BUILD_PREBUILT)
-
-include $(CLEAR_VARS)
-LOCAL_MODULE := ledflasher.schema.json
-LOCAL_MODULE_CLASS := ETC
-LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/weaved/states
-LOCAL_SRC_FILES := etc/weaved/states/$(LOCAL_MODULE)
+LOCAL_MODULE_PATH := $(TARGET_OUT_ETC)/weaved/traits
+LOCAL_SRC_FILES := etc/weaved/traits/$(LOCAL_MODULE)
 include $(BUILD_PREBUILT)
diff --git a/src/ledflasher/etc/weaved/commands/ledflasher.json b/src/ledflasher/etc/weaved/commands/ledflasher.json
deleted file mode 100644
index eab757c..0000000
--- a/src/ledflasher/etc/weaved/commands/ledflasher.json
+++ /dev/null
@@ -1,39 +0,0 @@
-{
-  "_ledflasher": {
-    "_set": {
-      "minimalRole": "user",
-      "parameters": {
-        "_led": {
-          "type": "integer",
-          "minimum": 1,
-          "maximum": 4
-        },
-        "_on": {"type": "boolean"}
-      }
-    },
-    "_toggle": {
-      "minimalRole": "user",
-      "parameters": {
-        "_led": {
-          "type": "integer",
-          "minimum": 1,
-          "maximum": 4
-        }
-      }
-    },
-    "_animate": {
-      "minimalRole": "user",
-      "parameters": {
-        "_duration": {
-          "type": "number",
-          "minimum": 0.1,
-          "maximum": 100.0
-        },
-        "_type": {
-          "type": "string",
-          "enum": ["none", "marquee_left", "marquee_right", "blink"]
-        }
-      }
-    }
-  }
-}
diff --git a/src/ledflasher/etc/weaved/states/ledflasher.schema.json b/src/ledflasher/etc/weaved/states/ledflasher.schema.json
deleted file mode 100644
index 0f0e37e..0000000
--- a/src/ledflasher/etc/weaved/states/ledflasher.schema.json
+++ /dev/null
@@ -1,14 +0,0 @@
-{
-  "_ledflasher": {
-    "_status": {
-      "enum": {
-        "type": "string",
-        "enum": [ "idle", "animating" ]
-      }
-    },
-    "_leds": {
-      "type": "array",
-      "items": { "type": "boolean" }
-    }
-  }
-}
diff --git a/src/ledflasher/etc/weaved/traits/ledflasher.json b/src/ledflasher/etc/weaved/traits/ledflasher.json
new file mode 100644
index 0000000..7eefa5e
--- /dev/null
+++ b/src/ledflasher/etc/weaved/traits/ledflasher.json
@@ -0,0 +1,53 @@
+{
+  "_ledflasher": {
+    "commands": {
+      "_set": {
+        "minimalRole": "user",
+        "parameters": {
+          "_led": {
+            "type": "integer",
+            "minimum": 1,
+            "maximum": 4
+          },
+          "_on": { "type": "boolean" }
+        }
+      },
+      "_toggle": {
+        "minimalRole": "user",
+        "parameters": {
+          "_led": {
+            "type": "integer",
+            "minimum": 1,
+            "maximum": 4
+          }
+        }
+      },
+      "_animate": {
+        "minimalRole": "user",
+        "parameters": {
+          "_duration": {
+            "type": "number",
+            "minimum": 0.1,
+            "maximum": 100.0
+          },
+          "_type": {
+            "type": "string",
+            "enum": [ "none", "marquee_left", "marquee_right", "blink" ]
+          }
+        }
+      }
+    },
+    "states": {
+      "_status": {
+        "enum": {
+          "type": "string",
+          "enum": [ "idle", "animating" ]
+        }
+      },
+      "_leds": {
+        "type": "array",
+        "items": { "type": "boolean" }
+      }
+    }
+  }
+}
diff --git a/src/ledflasher/ledflasher.cpp b/src/ledflasher/ledflasher.cpp
index e9bfa3c..5a3524f 100644
--- a/src/ledflasher/ledflasher.cpp
+++ b/src/ledflasher/ledflasher.cpp
@@ -29,6 +29,10 @@
 
 using com::android::LEDService::ServiceProxyInterface;
 
+namespace {
+const char kWeaveComponent[] = "ledflasher";
+}  // anonymous namespace
+
 class Daemon final : public brillo::DBusDaemon {
  public:
   Daemon() = default;
@@ -73,13 +77,17 @@
 
   device_ = weaved::Device::CreateInstance(
       bus_, base::Bind(&Daemon::UpdateDeviceState, base::Unretained(this)));
+  device_->AddComponent(kWeaveComponent, {"_ledflasher"});
   device_->AddCommandHandler(
+      kWeaveComponent,
       "_ledflasher._set",
       base::Bind(&Daemon::OnSet, base::Unretained(this)));
   device_->AddCommandHandler(
+      kWeaveComponent,
       "_ledflasher._toggle",
       base::Bind(&Daemon::OnToggle, base::Unretained(this)));
   device_->AddCommandHandler(
+      kWeaveComponent,
       "_ledflasher._animate",
       base::Bind(&Daemon::OnAnimate, base::Unretained(this)));
 
@@ -201,7 +209,7 @@
   };
   // TODO: Come up with a design for ledflasher.cpp such that this call never
   // fails.
-  device_->SetStateProperties(state_change, nullptr);
+  device_->SetStateProperties(kWeaveComponent, state_change, nullptr);
 }
 
 int main(int argc, char* argv[]) {