Update example daemons to use the new component/trait APIs
Using AddStateDefinitionsFromJson/AddComponent instead of old and
deprecated AddCommandDefinitions.../AddStateDefinitions... methods.
BUG: 26070118, 25917541
Change-Id: I1f264c737cc19a577a0026e6d6212d63bdc480cf
Reviewed-on: https://weave-review.googlesource.com/1802
Reviewed-by: Alex Vakulenko <avakulenko@google.com>
diff --git a/examples/daemon/lock/lock.cc b/examples/daemon/lock/lock.cc
index 10bea00..a4bd213 100644
--- a/examples/daemon/lock/lock.cc
+++ b/examples/daemon/lock/lock.cc
@@ -25,6 +25,39 @@
: EnumToStringMap(lockstate::kLockMapMethod) {}
} // namespace weave
+namespace {
+
+const char kTraits[] = R"({
+ "lock": {
+ "commands": {
+ "setConfig": {
+ "minimalRole": "user",
+ "parameters": {
+ "lockedState": {
+ "type": "string",
+ "enum": [ "locked", "unlocked" ]
+ }
+ }
+ }
+ },
+ "state": {
+ "lockedState": {
+ "type": "string",
+ "enum": [ "locked", "unlocked", "partiallyLocked" ]
+ },
+ "isLockingSupported": { "type": "boolean" }
+ }
+ }
+})";
+
+const char kDefaultState[] = R"({
+ "lock":{"isLockingSupported": true}
+})";
+
+const char kComponent[] = "lock";
+
+} // anonymous namespace
+
// LockHandler is a command handler example that shows
// how to handle commands for a Weave lock.
class LockHandler {
@@ -33,35 +66,13 @@
void Register(weave::Device* device) {
device_ = device;
- device->AddStateDefinitionsFromJson(R"({
- "lock": {
- "lockedState": {
- "type": "string",
- "enum": ["locked", "unlocked", "partiallyLocked"]
- },
- "isLockingSupported": {"type": "boolean"}
- }
- })");
+ device->AddTraitDefinitionsFromJson(kTraits);
+ CHECK(device->AddComponent(kComponent, {"lock"}, nullptr));
+ CHECK(device->SetStatePropertiesFromJson(kComponent, kDefaultState,
+ nullptr));
+ UpdateLockState();
- device->SetStatePropertiesFromJson(R"({
- "lock":{
- "lockedState": "locked",
- "isLockingSupported": true
- }
- })",
- nullptr);
-
- device->AddCommandDefinitionsFromJson(R"({
- "lock": {
- "setConfig":{
- "minimalRole": "user",
- "parameters": {
- "lockedState": {"type": "string", "enum":["locked", "unlocked"]}
- }
- }
- }
- })");
- device->AddCommandHandler("lock.setConfig",
+ device->AddCommandHandler(kComponent, "lock.setConfig",
base::Bind(&LockHandler::OnLockSetConfig,
weak_ptr_factory_.GetWeakPtr()));
}
@@ -104,10 +115,9 @@
}
void UpdateLockState() {
- base::DictionaryValue state;
std::string updated_state = weave::EnumToString(lock_state_);
- state.SetString("lock.lockedState", updated_state);
- device_->SetStateProperties(state, nullptr);
+ device_->SetStateProperty(kComponent, "lock.lockedState",
+ base::StringValue{updated_state}, nullptr);
}
weave::Device* device_{nullptr};