aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJohan Euphrosine <proppy@google.com>2016-04-28 22:46:49 -0700
committerJohan Euphrosine <proppy@google.com>2016-05-05 23:00:45 +0000
commitd1f98a07056edc27b2b5b8b780f761796a1d8b1d (patch)
tree91c9ff9091061533b932a8726ec96bcc96f9c15a
parent369d2f07313abebfd3db6d541cc15e7e7d770f23 (diff)
downloadlibweave-d1f98a07056edc27b2b5b8b780f761796a1d8b1d.tar.gz
examples: remove samples with private traits
Change-Id: Icd89ae8db2d73c398ab779748a35eeb35617bbe4 Reviewed-on: https://weave-review.googlesource.com/3270 Reviewed-by: Paul Westbrook <pwestbro@google.com>
-rw-r--r--examples/daemon/oven/oven.cc290
-rw-r--r--examples/daemon/speaker/speaker.cc178
-rw-r--r--examples/examples.mk12
3 files changed, 2 insertions, 478 deletions
diff --git a/examples/daemon/oven/oven.cc b/examples/daemon/oven/oven.cc
deleted file mode 100644
index f92c838..0000000
--- a/examples/daemon/oven/oven.cc
+++ /dev/null
@@ -1,290 +0,0 @@
-// Copyright 2015 The Weave Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "examples/daemon/common/daemon.h"
-
-#include <weave/device.h>
-#include <weave/provider/task_runner.h>
-
-#include <base/bind.h>
-#include <base/memory/weak_ptr.h>
-
-namespace {
-// Time for sensor temperature to match setting temperature
-const double kWarmUpTime = 60.0;
-// Oven max temp
-const double kMaxTemp = 300.0;
-// Oven min temp
-const double kMinTemp = 20.0;
-
-const char kTraits[] = R"({
- "temperatureSetting": {
- "commands": {
- "setConfig": {
- "minimalRole": "user",
- "parameters": {
- "units": {
- "type": "string"
- },
- "tempSetting": {
- "type": "number"
- }
- },
- "errors": ["tempOutOfRange", "unsupportedUnits"]
- }
- },
- "state": {
- "supportedUnits": {
- "type": "array",
- "items": {
- "type": "string",
- "enum": [ "celsius", "fahrenheit", "kelvin" ]
- },
- "minItems": 1,
- "uniqueItems": true,
- "isRequired": true
- },
- "units": {
- "type": "string",
- "enum": [ "celsius", "fahrenheit", "kelvin" ],
- "isRequired": true
- },
- "tempSetting": {
- "type": "number",
- "isRequired": true
- },
- "maxTempSetting": {
- "type": "number",
- "isRequired": true
- },
- "minTempSetting": {
- "type": "number",
- "isRequired": true
- }
- }
- },
- "temperatureSensor": {
- "commands": {
- "setConfig": {
- "minimalRole": "user",
- "parameters": {
- "units": {
- "type": "string"
- }
- },
- "errors": ["unsupportedUnits"]
- }
- },
- "state": {
- "supportedUnits": {
- "type": "array",
- "items": {
- "type": "string",
- "enum": [
- "celsius",
- "fahrenheit",
- "kelvin"
- ]
- },
- "minItems": 1,
- "uniqueItems": true,
- "isRequired": true
- },
- "units": {
- "type": "string",
- "enum": [ "celsius", "fahrenheit", "kelvin" ],
- "isRequired": true
- },
- "value": {
- "type": "number",
- "isRequired": true
- }
- }
- },
- "brightness": {
- "commands": {
- "setConfig": {
- "minimalRole": "user",
- "parameters": {
- "brightness": {
- "type": "integer",
- "minimum": 0,
- "maximum": 100
- }
- }
- }
- },
- "state": {
- "brightness": {
- "type": "integer",
- "isRequired": true,
- "minimum": 0,
- "maximum": 100
- }
- }
- }
-})";
-
-const char kComponent[] = "oven";
-} // anonymous namespace
-
-// OvenHandler is a virtual oven example
-// It implements the following commands from traits:
-// - temperatureSetting: sets the temperature for the oven
-// - brightness: sets the brightness of the oven light
-// It exposes the following states from traits:
-// - temperatureSetting: temperature setting for the oven
-// - temperatureSensor: current oven temperature
-// - brightness: current oven brightness
-class OvenHandler {
- public:
- OvenHandler(weave::provider::TaskRunner* task_runner)
- : task_runner_{task_runner} {}
-
- void Register(weave::Device* device) {
- device_ = device;
-
- device->AddTraitDefinitionsFromJson(kTraits);
- CHECK(device->AddComponent(
- kComponent, {"temperatureSetting", "temperatureSensor", "brightness"},
- nullptr));
-
- UpdateOvenState();
-
- device->AddCommandHandler(kComponent, "temperatureSetting.setConfig",
- base::Bind(&OvenHandler::OnSetTempCommand,
- weak_ptr_factory_.GetWeakPtr()));
-
- device->AddCommandHandler(kComponent, "brightness.setConfig",
- base::Bind(&OvenHandler::OnSetBrightnessCommand,
- weak_ptr_factory_.GetWeakPtr()));
- }
-
- private:
- void OnSetTempCommand(const std::weak_ptr<weave::Command>& command) {
- auto cmd = command.lock();
- if (!cmd)
- return;
- LOG(INFO) << "received command: " << cmd->GetName();
-
- const auto& params = cmd->GetParameters();
- std::string units;
- double temp;
-
- if (params.GetString("units", &units) &&
- params.GetDouble("tempSetting", &temp)) {
- units_ = units;
- target_temperature_ = temp;
-
- UpdateOvenState();
-
- cmd->Complete({}, nullptr);
- LOG(INFO) << cmd->GetName() << " updated oven, matching temp";
-
- if (target_temperature_ != current_temperature_ && !is_match_ticking_) {
- double tickIncrement =
- ((target_temperature_ - current_temperature_) / kWarmUpTime);
- DoTick(tickIncrement);
- }
- return;
- }
-
- weave::ErrorPtr error;
- weave::Error::AddTo(&error, FROM_HERE, "invalid_parameter_value",
- "Invalid parameters");
- cmd->Abort(error.get(), nullptr);
- }
-
- void OnSetBrightnessCommand(const std::weak_ptr<weave::Command>& command) {
- auto cmd = command.lock();
- if (!cmd)
- return;
- LOG(INFO) << "received command: " << cmd->GetName();
-
- const auto& params = cmd->GetParameters();
-
- int brightness;
- if (params.GetInteger("brightness", &brightness)) {
- brightness_ = brightness;
-
- UpdateOvenState();
-
- cmd->Complete({}, nullptr);
- return;
- }
-
- weave::ErrorPtr error;
- weave::Error::AddTo(&error, FROM_HERE, "invalid_parameter_value",
- "Invalid parameters");
- cmd->Abort(error.get(), nullptr);
- }
-
- void UpdateOvenState() {
- base::DictionaryValue state;
- base::ListValue supportedUnits;
- supportedUnits.AppendStrings({"celsius"});
-
- state.SetString("temperatureSensor.units", units_);
- state.SetDouble("temperatureSensor.value", current_temperature_);
- state.Set("temperatureSensor.supportedUnits",
- supportedUnits.CreateDeepCopy());
-
- state.SetString("temperatureSetting.units", units_);
- state.SetDouble("temperatureSetting.tempSetting", target_temperature_);
- state.Set("temperatureSetting.supportedUnits",
- supportedUnits.CreateDeepCopy());
- state.SetDouble("temperatureSetting.maxTempSetting", kMaxTemp);
- state.SetDouble("temperatureSetting.minTempSetting", kMinTemp);
-
- state.SetInteger("brightness.brightness", brightness_);
-
- device_->SetStateProperties(kComponent, state, nullptr);
- }
-
- void DoTick(double tickIncrement) {
- LOG(INFO) << "Oven matching temp tick";
-
- if (std::fabs(target_temperature_ - current_temperature_) >=
- tickIncrement) {
- is_match_ticking_ = true;
- current_temperature_ += tickIncrement;
- UpdateOvenState();
- task_runner_->PostDelayedTask(
- FROM_HERE, base::Bind(&OvenHandler::DoTick,
- weak_ptr_factory_.GetWeakPtr(), tickIncrement),
- base::TimeDelta::FromSeconds(1));
- return;
- }
-
- is_match_ticking_ = false;
- current_temperature_ = target_temperature_;
- UpdateOvenState();
-
- LOG(INFO) << "Oven temp matched";
- }
-
- weave::Device* device_{nullptr};
- weave::provider::TaskRunner* task_runner_{nullptr};
-
- std::string units_ = "celsius";
- double target_temperature_ = 0.0;
- double current_temperature_ = 0.0;
- int brightness_ = 0;
- bool is_match_ticking_ = false;
-
- base::WeakPtrFactory<OvenHandler> weak_ptr_factory_{this};
-};
-
-int main(int argc, char** argv) {
- Daemon::Options opts;
- if (!opts.Parse(argc, argv)) {
- Daemon::Options::ShowUsage(argv[0]);
- return 1;
- }
- Daemon daemon{opts};
- OvenHandler handler{daemon.GetTaskRunner()};
- handler.Register(daemon.GetDevice());
- daemon.Run();
- return 0;
-}
diff --git a/examples/daemon/speaker/speaker.cc b/examples/daemon/speaker/speaker.cc
deleted file mode 100644
index 56da840..0000000
--- a/examples/daemon/speaker/speaker.cc
+++ /dev/null
@@ -1,178 +0,0 @@
-// Copyright 2015 The Weave Authors. All rights reserved.
-// Use of this source code is governed by a BSD-style license that can be
-// found in the LICENSE file.
-
-#include "examples/daemon/common/daemon.h"
-
-#include <weave/device.h>
-
-#include <base/bind.h>
-#include <base/memory/weak_ptr.h>
-
-namespace {
-
-const char kTraits[] = R"({
- "onOff": {
- "commands": {
- "setConfig": {
- "minimalRole": "user",
- "parameters": {
- "state": {
- "type": "string",
- "enum": [ "on", "off" ]
- }
- }
- }
- },
- "state": {
- "state": {
- "type": "string",
- "enum": [ "on", "off" ],
- "isRequired": true
- }
- }
- },
- "volume": {
- "commands": {
- "setConfig": {
- "minimalRole": "user",
- "parameters": {
- "volume": {
- "type": "integer",
- "minimum": 0,
- "maximum": 100
- },
- "isMuted": { "type": "boolean" }
- }
- }
- },
- "state": {
- "isMuted": {
- "type": "boolean",
- "isRequired": true
- },
- "volume": {
- "type": "integer",
- "minimum": 0,
- "maximum": 100,
- "isRequired": true
- }
- }
- }
-})";
-
-const char kComponent[] = "speaker";
-
-} // anonymous namespace
-
-// SpeakerHandler is a command handler example that shows
-// how to handle commands for a Weave speaker.
-class SpeakerHandler {
- public:
- SpeakerHandler() = default;
- void Register(weave::Device* device) {
- device_ = device;
-
- device->AddTraitDefinitionsFromJson(kTraits);
- CHECK(device->AddComponent(kComponent, {"onOff", "volume"}, nullptr));
- UpdateSpeakerState();
-
- device->AddCommandHandler(kComponent, "onOff.setConfig",
- base::Bind(&SpeakerHandler::OnOnOffSetConfig,
- weak_ptr_factory_.GetWeakPtr()));
- device->AddCommandHandler(kComponent, "volume.setConfig",
- base::Bind(&SpeakerHandler::OnVolumeSetConfig,
- weak_ptr_factory_.GetWeakPtr()));
- }
-
- private:
- void OnVolumeSetConfig(const std::weak_ptr<weave::Command>& command) {
- auto cmd = command.lock();
- if (!cmd)
- return;
- LOG(INFO) << "received command: " << cmd->GetName();
-
- const auto& params = cmd->GetParameters();
- // Handle volume parameter
- int32_t volume_value = 0;
- if (params.GetInteger("volume", &volume_value)) {
- // Display this command in terminal.
- LOG(INFO) << cmd->GetName() << " volume: " << volume_value;
-
- if (volume_value_ != volume_value) {
- volume_value_ = volume_value;
- UpdateSpeakerState();
- }
- cmd->Complete({}, nullptr);
- return;
- }
-
- // Handle isMuted parameter
- bool isMuted_status = false;
- if (params.GetBoolean("isMuted", &isMuted_status)) {
- // Display this command in terminal.
- LOG(INFO) << cmd->GetName() << " is "
- << (isMuted_status ? "muted" : "not muted");
-
- if (isMuted_status_ != isMuted_status) {
- isMuted_status_ = isMuted_status;
-
- LOG(INFO) << "Speaker is now: "
- << (isMuted_status ? "muted" : "not muted");
- UpdateSpeakerState();
- }
- }
-
- cmd->Complete({}, nullptr);
- }
-
- void OnOnOffSetConfig(const std::weak_ptr<weave::Command>& command) {
- auto cmd = command.lock();
- if (!cmd)
- return;
- LOG(INFO) << "received command: " << cmd->GetName();
- const auto& params = cmd->GetParameters();
- std::string requested_state;
- if (params.GetString("state", &requested_state)) {
- LOG(INFO) << cmd->GetName() << " state: " << requested_state;
-
- bool new_speaker_status = requested_state == "on";
- if (new_speaker_status != speaker_status_) {
- speaker_status_ = new_speaker_status;
-
- LOG(INFO) << "Speaker is now: " << (speaker_status_ ? "ON" : "OFF");
- UpdateSpeakerState();
- }
- }
- cmd->Complete({}, nullptr);
- }
-
- void UpdateSpeakerState() {
- base::DictionaryValue state;
- 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);
- }
-
- weave::Device* device_{nullptr};
-
- // Simulate the state of the speaker.
- bool speaker_status_;
- bool isMuted_status_;
- int32_t volume_value_;
- base::WeakPtrFactory<SpeakerHandler> weak_ptr_factory_{this};
-};
-
-int main(int argc, char** argv) {
- Daemon::Options opts;
- if (!opts.Parse(argc, argv)) {
- Daemon::Options::ShowUsage(argv[0]);
- return 1;
- }
- Daemon daemon{opts};
- SpeakerHandler speaker;
- speaker.Register(daemon.GetDevice());
- daemon.Run();
- return 0;
-}
diff --git a/examples/examples.mk b/examples/examples.mk
index 555322c..cb64e2b 100644
--- a/examples/examples.mk
+++ b/examples/examples.mk
@@ -21,9 +21,7 @@ EXAMPLES_DAEMON_SRC_FILES := \
examples/daemon/ledflasher/ledflasher.cc \
examples/daemon/light/light.cc \
examples/daemon/lock/lock.cc \
- examples/daemon/oven/oven.cc \
- examples/daemon/sample/sample.cc \
- examples/daemon/speaker/speaker.cc
+ examples/daemon/sample/sample.cc
examples_daemon_obj_files := $(EXAMPLES_DAEMON_SRC_FILES:%.cc=out/$(BUILD_MODE)/%.o)
@@ -62,16 +60,10 @@ out/$(BUILD_MODE)/weave_daemon_light : out/$(BUILD_MODE)/examples/daemon/light/l
out/$(BUILD_MODE)/weave_daemon_lock : out/$(BUILD_MODE)/examples/daemon/lock/lock.o $(example_daemon_deps)
$(CXX) -o $@ $^ $(CFLAGS) $(example_daemon_common_flags)
-out/$(BUILD_MODE)/weave_daemon_oven : out/$(BUILD_MODE)/examples/daemon/oven/oven.o $(example_daemon_deps)
- $(CXX) -o $@ $^ $(CFLAGS) $(example_daemon_common_flags)
-
out/$(BUILD_MODE)/weave_daemon_sample : out/$(BUILD_MODE)/examples/daemon/sample/sample.o $(example_daemon_deps)
$(CXX) -o $@ $^ $(CFLAGS) $(example_daemon_common_flags)
-out/$(BUILD_MODE)/weave_daemon_speaker : out/$(BUILD_MODE)/examples/daemon/speaker/speaker.o $(example_daemon_deps)
- $(CXX) -o $@ $^ $(CFLAGS) $(example_daemon_common_flags)
-
-all-examples : out/$(BUILD_MODE)/weave_daemon_ledflasher out/$(BUILD_MODE)/weave_daemon_light out/$(BUILD_MODE)/weave_daemon_lock out/$(BUILD_MODE)/weave_daemon_oven out/$(BUILD_MODE)/weave_daemon_sample out/$(BUILD_MODE)/weave_daemon_speaker
+all-examples : out/$(BUILD_MODE)/weave_daemon_ledflasher out/$(BUILD_MODE)/weave_daemon_light out/$(BUILD_MODE)/weave_daemon_lock out/$(BUILD_MODE)/weave_daemon_sample
.PHONY : all-examples