diff options
author | Johan Euphrosine <proppy@google.com> | 2016-04-28 22:46:49 -0700 |
---|---|---|
committer | Johan Euphrosine <proppy@google.com> | 2016-05-05 23:00:45 +0000 |
commit | d1f98a07056edc27b2b5b8b780f761796a1d8b1d (patch) | |
tree | 91c9ff9091061533b932a8726ec96bcc96f9c15a | |
parent | 369d2f07313abebfd3db6d541cc15e7e7d770f23 (diff) | |
download | libweave-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.cc | 290 | ||||
-rw-r--r-- | examples/daemon/speaker/speaker.cc | 178 | ||||
-rw-r--r-- | examples/examples.mk | 12 |
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 |