summaryrefslogtreecommitdiffstats
path: root/ahl-binding/interrupt.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'ahl-binding/interrupt.cpp')
-rw-r--r--ahl-binding/interrupt.cpp220
1 files changed, 110 insertions, 110 deletions
diff --git a/ahl-binding/interrupt.cpp b/ahl-binding/interrupt.cpp
index 5bf0b79..a0fa563 100644
--- a/ahl-binding/interrupt.cpp
+++ b/ahl-binding/interrupt.cpp
@@ -5,147 +5,147 @@
interrupt_t::interrupt_t(json_object* o)
{
- jcast(type_, o, "type");
- json_object * value = NULL;
- json_object_object_get_ex(o, "args", &value);
- args_ = value;
+ jcast(type_, o, "type");
+ json_object * value = NULL;
+ json_object_object_get_ex(o, "args", &value);
+ args_ = value;
}
interrupt_t& interrupt_t::operator<<(json_object* o)
{
- jcast(type_, o, "type");
- json_object * value = NULL;
- json_object_object_get_ex(o, "args", &value);
- args_ = value;
- return *this;
+ jcast(type_, o, "type");
+ json_object * value = NULL;
+ json_object_object_get_ex(o, "args", &value);
+ args_ = value;
+ return *this;
}
std::string interrupt_t::type() const
{
- return type_;
+ return type_;
}
json_object* interrupt_t::args() const
{
- return args_;
+ return args_;
}
void interrupt_t::type(std::string v)
{
- type_ = v;
+ type_ = v;
}
void interrupt_t::args(json_object* v)
{
- args_ = v;
+ args_ = v;
}
int interrupt_t::apply(afb_req_t req, const role_t& role)
{
- /*if (type_ == "mute")
- {
- }
- else if (type_ == "continue")
- {
- }
- else if (type_ == "cancel")
- {
- }
- else */if (type_ == "ramp")
- {
- for(const auto& r: ahl_binding_t::instance().roles())
- {
- if (r.opened() && role.priority() > r.priority())
- {
- // { "ramp" : { "uid" : "ramp-slow", "volume" : 30 } }
- json_object* arg = json_object_new_object();
- json_object_object_add(arg, "ramp", args_);
- json_object_get(args_);
- json_object* result = nullptr;
+ /*if (type_ == "mute")
+ {
+ }
+ else if (type_ == "continue")
+ {
+ }
+ else if (type_ == "cancel")
+ {
+ }
+ else */if (type_ == "ramp")
+ {
+ for(const auto& r: ahl_binding_t::instance().roles())
+ {
+ if (r.opened() && role.priority() > r.priority())
+ {
+ // { "ramp" : { "uid" : "ramp-slow", "volume" : 30 } }
+ json_object* arg = json_object_new_object();
+ json_object_object_add(arg, "ramp", args_);
+ json_object_get(args_);
+ json_object* result = nullptr;
- AFB_API_DEBUG(ahl_binding_t::instance().handle(),
- "Call '%s'/'%s' '%s'",
- r.hal().c_str(), r.stream().c_str(), json_object_to_json_string(arg));
+ AFB_API_DEBUG(ahl_binding_t::instance().handle(),
+ "Call '%s'/'%s' '%s'",
+ r.hal().c_str(), r.stream().c_str(), json_object_to_json_string(arg));
- if(afb_api_call_sync(ahl_binding_t::instance().handle(), r.hal().c_str(), r.stream().c_str(), arg, &result, nullptr, nullptr))
- {
- afb_req_fail(req, "Failed to call 'ramp' action on stream", nullptr);
- return -1;
- }
- json_object* jvolold = nullptr;
- if (json_object_object_get_ex(result, "volold", &jvolold))
- {
- applied_on_.push_back(std::make_tuple<std::string, int>(r.uid(), json_object_get_int(jvolold)));
- AFB_API_DEBUG(ahl_binding_t::instance().handle(),
- "POLICY: Applying a ramp to '%s' stream because '%s' is opened and have higher priority!",
- r.stream().c_str(), role.stream().c_str());
- }
- }
- }
- return 0;
- }
- else
- {
- afb_req_fail(req, "Unkown interrupt uid!", nullptr);
- return -1;
- }
+ if(afb_api_call_sync(ahl_binding_t::instance().handle(), r.hal().c_str(), r.stream().c_str(), arg, &result, nullptr, nullptr))
+ {
+ afb_req_fail(req, "Failed to call 'ramp' action on stream", nullptr);
+ return -1;
+ }
+ json_object* jvolold = nullptr;
+ if (json_object_object_get_ex(result, "volold", &jvolold))
+ {
+ applied_on_.push_back(std::make_tuple<std::string, int>(r.uid(), json_object_get_int(jvolold)));
+ AFB_API_DEBUG(ahl_binding_t::instance().handle(),
+ "POLICY: Applying a ramp to '%s' stream because '%s' is opened and have higher priority!",
+ r.stream().c_str(), role.stream().c_str());
+ }
+ }
+ }
+ return 0;
+ }
+ else
+ {
+ afb_req_fail(req, "Unkown interrupt uid!", nullptr);
+ return -1;
+ }
}
void interrupt_t::clear()
{
- for (const std::tuple<std::string, int>& state : applied_on_)
- {
- std::string role;
- int vol;
- std::tie(role, vol) = state;
- /*if (type_ == "mute")
- {
- }
- else if (type_ == "continue")
- {
- }
- else if (type_ == "cancel")
- {
- }
- else */if (type_ == "ramp")
- {
- for(const auto& r: ahl_binding_t::instance().roles())
- {
- if (r.uid() == role)
- {
- // { "ramp" : { "uid" : "ramp-slow", "volume" : 30 } }
- // Create an fake-interrupt, with the old volume
- json_object* interrupt = json_tokener_parse(json_object_to_json_string(args_));
- json_object_object_add(interrupt, "volume", json_object_new_int(vol)); // Replace the volume
- /*
- json_object* volume = nullptr;
- if (json_object_object_get_ex(interrupt, "volume", &volume))
- {
- json_object_set_int(volume, vol);
- }
- */
+ for (const std::tuple<std::string, int>& state : applied_on_)
+ {
+ std::string role;
+ int vol;
+ std::tie(role, vol) = state;
+ /*if (type_ == "mute")
+ {
+ }
+ else if (type_ == "continue")
+ {
+ }
+ else if (type_ == "cancel")
+ {
+ }
+ else */if (type_ == "ramp")
+ {
+ for(const auto& r: ahl_binding_t::instance().roles())
+ {
+ if (r.uid() == role)
+ {
+ // { "ramp" : { "uid" : "ramp-slow", "volume" : 30 } }
+ // Create an fake-interrupt, with the old volume
+ json_object* interrupt = json_tokener_parse(json_object_to_json_string(args_));
+ json_object_object_add(interrupt, "volume", json_object_new_int(vol)); // Replace the volume
+ /*
+ json_object* volume = nullptr;
+ if (json_object_object_get_ex(interrupt, "volume", &volume))
+ {
+ json_object_set_int(volume, vol);
+ }
+ */
- json_object* arg = json_object_new_object();
- json_object_object_add(arg, "ramp", interrupt);
- json_object* result = nullptr;
+ json_object* arg = json_object_new_object();
+ json_object_object_add(arg, "ramp", interrupt);
+ json_object* result = nullptr;
- AFB_API_DEBUG(ahl_binding_t::instance().handle(),
- "Call '%s'/'%s' '%s",
- r.hal().c_str(), r.stream().c_str(), json_object_to_json_string(arg));
+ AFB_API_DEBUG(ahl_binding_t::instance().handle(),
+ "Call '%s'/'%s' '%s",
+ r.hal().c_str(), r.stream().c_str(), json_object_to_json_string(arg));
- if(afb_api_call_sync(ahl_binding_t::instance().handle(), r.hal().c_str(), r.stream().c_str(), arg, &result, nullptr, nullptr))
- {
- AFB_API_ERROR(ahl_binding_t::instance().handle(),
- "Failed to call 'ramp' action on '%s'", role.c_str());
- }
- else
- {
- AFB_API_DEBUG(ahl_binding_t::instance().handle(),
- "Called 'ramp' action on '%s'", role.c_str());
- }
- }
- }
- }
- }
- applied_on_.clear();
+ if(afb_api_call_sync(ahl_binding_t::instance().handle(), r.hal().c_str(), r.stream().c_str(), arg, &result, nullptr, nullptr))
+ {
+ AFB_API_ERROR(ahl_binding_t::instance().handle(),
+ "Failed to call 'ramp' action on '%s'", role.c_str());
+ }
+ else
+ {
+ AFB_API_DEBUG(ahl_binding_t::instance().handle(),
+ "Called 'ramp' action on '%s'", role.c_str());
+ }
+ }
+ }
+ }
+ }
+ applied_on_.clear();
}