examples/daemon: cherrypick traits fix

BUG: 27276010
Change-Id: I1c87df45681331eaf35c618cb72a975f273b44e8

daemon: register device after component init
7f2a5dcefb7e5d9785efeb4c68542fd3b2e4865f
daemon/light: fix light trait def
9e9023e1855760dd7545086f4204631ddf38703b
examples/speaker: fix volume trait
f7bfb6af844f3df9ef04ea8ddf8061763a21a837
examples/lock: fix lock trait
c96ee4e4e61dc308f685757b6fd5adcec3dd1614
Change-Id: I06d468faab07863f9af1eb81cf68a82707857fa4
Reviewed-on: https://weave-review.googlesource.com/2850
Reviewed-by: Vitaly Buka <vitalybuka@google.com>
diff --git a/examples/daemon/common/daemon.h b/examples/daemon/common/daemon.h
index 0b3c25a..22591a2 100644
--- a/examples/daemon/common/daemon.h
+++ b/examples/daemon/common/daemon.h
@@ -92,16 +92,18 @@
                                     http_client_.get(), network_.get(),
                                     dns_sd_.get(), http_server_.get(),
                                     wifi_.get(), bluetooth_.get());
-
     if (!opts.registration_ticket.empty()) {
-      weave::RegistrationData data;
-      data.ticket_id = opts.registration_ticket;
-      data.service_url = opts.service_url;
-      device_->Register(data, base::Bind(&OnRegisterDeviceDone, device_.get()));
+      registration_data_.ticket_id = opts.registration_ticket;
+      registration_data_.service_url = opts.service_url;
     }
   }
 
-  void Run() { task_runner_->Run(); }
+  void Run() {
+    if (!registration_data_.ticket_id.empty()) {
+      device_->Register(registration_data_, base::Bind(&OnRegisterDeviceDone, device_.get()));
+    }
+    task_runner_->Run();
+  }
 
   weave::Device* GetDevice() const { return device_.get(); }
 
@@ -127,4 +129,5 @@
   std::unique_ptr<weave::examples::HttpServerImpl> http_server_;
   std::unique_ptr<weave::examples::WifiImpl> wifi_;
   std::unique_ptr<weave::Device> device_;
+  weave::RegistrationData registration_data_;
 };
diff --git a/examples/daemon/light/light.cc b/examples/daemon/light/light.cc
index 4cbf9b4..07c0231 100644
--- a/examples/daemon/light/light.cc
+++ b/examples/daemon/light/light.cc
@@ -19,7 +19,7 @@
         "parameters": {
           "state": {
             "type": "string",
-            "enum": [ "on", "standby" ]
+            "enum": [ "on", "off" ]
           }
         }
       }
@@ -27,7 +27,7 @@
     "state": {
       "state": {
         "type": "string",
-        "enum": [ "on", "standby" ],
+        "enum": [ "on", "off" ],
         "isRequired": true
       }
     }
@@ -38,23 +38,23 @@
         "minimalRole": "user",
         "parameters": {
           "brightness": {
-            "type": "integer",
-            "minimum": 0,
-            "maximum": 100
+            "type": "number",
+            "minimum": 0.0,
+            "maximum": 1.0
           }
         }
       }
     },
     "state": {
       "brightness": {
-        "type": "integer",
+        "type": "number",
         "isRequired": true,
-        "minimum": 0,
-        "maximum": 100
+        "minimum": 0.0,
+        "maximum": 1.0
       }
     }
   },
-  "colorXY": {
+  "colorXy": {
     "commands": {
       "setConfig": {
         "minimalRole": "user",
@@ -157,7 +157,7 @@
 })";
 
 const char kDefaultState[] = R"({
-  "colorXY": {
+  "colorXy": {
     "colorSetting": {"colorX": 0, "colorY": 0},
     "colorCapRed":  {"colorX": 0.674, "colorY": 0.322},
     "colorCapGreen":{"colorX": 0.408, "colorY": 0.517},
@@ -178,7 +178,7 @@
     device_ = device;
 
     device->AddTraitDefinitionsFromJson(kTraits);
-    CHECK(device->AddComponent(kComponent, {"onOff", "brightness", "colorXY"},
+    CHECK(device->AddComponent(kComponent, {"onOff", "brightness", "colorXy"},
                                nullptr));
     CHECK(
         device->SetStatePropertiesFromJson(kComponent, kDefaultState, nullptr));
@@ -190,7 +190,7 @@
     device->AddCommandHandler(kComponent, "brightness.setConfig",
                               base::Bind(&LightHandler::OnBrightnessSetConfig,
                                          weak_ptr_factory_.GetWeakPtr()));
-    device->AddCommandHandler(kComponent, "colorXY.setConfig",
+    device->AddCommandHandler(kComponent, "colorXy.setConfig",
                               base::Bind(&LightHandler::OnColorXYSetConfig,
                                          weak_ptr_factory_.GetWeakPtr()));
   }
@@ -252,17 +252,17 @@
       return;
     LOG(INFO) << "received command: " << cmd->GetName();
     const auto& params = cmd->GetParameters();
-    const base::DictionaryValue* colorXY = nullptr;
-    if (params.GetDictionary("colorSetting", &colorXY)) {
+    const base::DictionaryValue* colorXy = nullptr;
+    if (params.GetDictionary("colorSetting", &colorXy)) {
       bool updateState = false;
       double X = 0.0;
       double Y = 0.0;
-      if (colorXY->GetDouble("colorX", &X)) {
+      if (colorXy->GetDouble("colorX", &X)) {
         color_X_ = X;
         updateState = true;
       }
 
-      if (colorXY->GetDouble("colorY", &Y)) {
+      if (colorXy->GetDouble("colorY", &Y)) {
         color_Y_ = Y;
         updateState = true;
       }
@@ -282,13 +282,13 @@
 
   void UpdateLightState() {
     base::DictionaryValue state;
-    state.SetString("onOff.state", light_status_ ? "on" : "standby");
+    state.SetString("onOff.state", light_status_ ? "on" : "off");
     state.SetInteger("brightness.brightness", brightness_state_);
 
-    std::unique_ptr<base::DictionaryValue> colorXY(new base::DictionaryValue());
-    colorXY->SetDouble("colorX", color_X_);
-    colorXY->SetDouble("colorY", color_Y_);
-    state.Set("colorXY.colorSetting", colorXY.release());
+    std::unique_ptr<base::DictionaryValue> colorXy(new base::DictionaryValue());
+    colorXy->SetDouble("colorX", color_X_);
+    colorXy->SetDouble("colorY", color_Y_);
+    state.Set("colorXy.colorSetting", colorXy.release());
     device_->SetStateProperties(kComponent, state, nullptr);
   }
 
diff --git a/examples/daemon/lock/lock.cc b/examples/daemon/lock/lock.cc
index a2da9cf..32ce12d 100644
--- a/examples/daemon/lock/lock.cc
+++ b/examples/daemon/lock/lock.cc
@@ -38,7 +38,7 @@
             "enum": [ "locked", "unlocked" ]
           }
         },
-        "errors": ["batteryTooLow", "jammed", "lockingNotSupported"]
+        "errors": [ "jammed", "lockingNotSupported" ]
       }
     },
     "state": {
diff --git a/examples/daemon/speaker/speaker.cc b/examples/daemon/speaker/speaker.cc
index 35eee2f..56da840 100644
--- a/examples/daemon/speaker/speaker.cc
+++ b/examples/daemon/speaker/speaker.cc
@@ -19,7 +19,7 @@
         "parameters": {
           "state": {
             "type": "string",
-            "enum": [ "on", "standby" ]
+            "enum": [ "on", "off" ]
           }
         }
       }
@@ -27,7 +27,7 @@
     "state": {
       "state": {
         "type": "string",
-        "enum": [ "on", "standby" ],
+        "enum": [ "on", "off" ],
         "isRequired": true
       }
     }
@@ -149,7 +149,7 @@
 
   void UpdateSpeakerState() {
     base::DictionaryValue state;
-    state.SetString("onOff.state", speaker_status_ ? "on" : "standby");
+    state.SetString("onOff.state", speaker_status_ ? "on" : "off");
     state.SetBoolean("volume.isMuted", isMuted_status_);
     state.SetInteger("volume.volume", volume_value_);
     device_->SetStateProperties(kComponent, state, nullptr);