Skip to content

Commit bb9cd96

Browse files
committed
new 'Cmdl.set.wakeword' + improved state broadcasting (cmdl);
1 parent 28b21d7 commit bb9cd96

File tree

3 files changed

+50
-5
lines changed

3 files changed

+50
-5
lines changed

www/scripts/sepiaFW.inputControls.cmdl.js

Lines changed: 28 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -95,10 +95,17 @@ function sepiaFW_build_input_controls_cmdl() {
9595
}
9696
}
9797
function wakeWordBroadcaster(ev){
98-
if (Cmdl.broadcasters.wakeWord && ev.detail && ev.detail.keyword){
99-
broadcastEvent("sepia-wake-word", {
100-
word: ev.detail.keyword
101-
});
98+
if (Cmdl.broadcasters.wakeWord && ev.detail && ev.detail.state){
99+
var d = {
100+
state: ev.detail.state
101+
}
102+
if (ev.detail.keyword){
103+
d.word = ev.detail.keyword;
104+
}
105+
if (ev.detail.msg){
106+
d.msg = ev.detail.msg;
107+
}
108+
broadcastEvent("sepia-wake-word", d);
102109
}
103110
}
104111

@@ -162,6 +169,23 @@ function sepiaFW_build_input_controls_cmdl() {
162169

163170
Cmdl.set = {};
164171

172+
Cmdl.set.wakeword = function(ev){
173+
if (ev.state){
174+
if (ev.state == "on" || ev.state == "active" || ev.state == "activate"){
175+
SepiaFW.wakeTriggers.useWakeWord = true;
176+
if (!SepiaFW.wakeTriggers.engineLoaded){
177+
SepiaFW.wakeTriggers.setupWakeWords(); //will auto-start after setup
178+
}else if (!SepiaFW.wakeTriggers.isListening()){
179+
SepiaFW.wakeTriggers.listenToWakeWords();
180+
}
181+
}else if (ev.state == "off" || ev.state == "inactive" || ev.state == "deactivate"){
182+
if (SepiaFW.wakeTriggers.engineLoaded && SepiaFW.wakeTriggers.isListening()){
183+
SepiaFW.wakeTriggers.stopListeningToWakeWords();
184+
}
185+
}
186+
}
187+
}
188+
165189
//---------- GET ------------
166190

167191
Cmdl.get = {};

www/scripts/sepiaFW.ui.animate.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -195,9 +195,19 @@ function sepiaFW_build_animate(){
195195

196196
Animate.wakeWord.active = function(){
197197
$('#sepiaFW-nav-label-online-status').addClass("wake-word-active");
198+
//dispatch event
199+
var event = new CustomEvent('sepia_wake_word', { detail: {
200+
state: "active"
201+
}});
202+
document.dispatchEvent(event);
198203
}
199204
Animate.wakeWord.inactive = function(){
200205
$('#sepiaFW-nav-label-online-status').removeClass("wake-word-active");
206+
//dispatch event
207+
var event = new CustomEvent('sepia_wake_word', { detail: {
208+
state: "inactive"
209+
}});
210+
document.dispatchEvent(event);
201211
}
202212

203213
//channel animations for missed off-channel messages:

www/scripts/sepiaFW.wakeTriggers.js

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@ function sepiaFW_build_wake_triggers() {
1818

1919
//dispatch event
2020
var event = new CustomEvent('sepia_wake_word', { detail: {
21-
keyword: keyword
21+
keyword: keyword,
22+
state: "triggered"
2223
}});
2324
document.dispatchEvent(event);
2425

@@ -33,6 +34,15 @@ function sepiaFW_build_wake_triggers() {
3334
});
3435
}
3536
}
37+
function broadcastWakeWordError(error){
38+
//dispatch event
39+
var event = new CustomEvent('sepia_wake_word', { detail: {
40+
msg: error,
41+
state: "error"
42+
}});
43+
document.dispatchEvent(event);
44+
}
45+
//NOTE: active, inactive: see ui.animate.wakeWord...
3646

3747
//Interface
3848

@@ -399,6 +409,7 @@ function sepiaFW_build_wake_triggers() {
399409
}
400410
SepiaFW.debug.error("Porcupine: " + errMsg);
401411
SepiaFW.ui.showPopup("Porcupine error: " + errMsg);
412+
broadcastWakeWordError(errMsg);
402413
};
403414

404415
//-------------------------------------------------

0 commit comments

Comments
 (0)