susi-forge
Version:
60 lines (55 loc) • 2.11 kB
JavaScript
var MorseController = {
code : {
"a": "._", "b": "_...", "c": "_._.", "d": "_..",
"e": ".", "f": ".._.", "g": "__.", "h": "....",
"i": "..", "j": ".___", "k": "_._", "l": "._..",
"m": "__", "n": "_.", "o": "___", "p": ".__.",
"q": "__._", "r": "._.", "s": "...", "t": "_",
"u": ".._", "v": "..._", "w": ".__", "x": "_.._",
"y": "_.__", "z": "__..", " ": " ",
"1": ".____", "2": "..___", "3": "...__", "4": "...._", "5": ".....",
"6": "_....", "7": "__...", "8": "___..", "9": "____.", "0": "_____",
".": "._._._", ",": "__..__", "?": "..__..", "'": ".____.",
"/": "_.._.", "(": "_.__.", ")": "_.__._", "&": "._...",
":": "___...", ";": "_._._.", "=": "_..._", "+": "._._.",
"-": "_...._", "_": "..__._", "\"": "._.._.", "$": "..._.._",
"!": "_._.__", "@": ".__._."
},
init: function(){
susi.registerProcessor("demo::morse",this.morse.bind(this));
log("Morse-Controller init ready.");
},
morse: function(event){
var msg = event.payload;
if(msg === undefined){
msg = "?";
}
var command = this.strToCommand(msg);
log("exec led pattern: "+command);
susi.publish({
topic: 'syscall::exec',
payload: {
cmd: 'exec-pattern',
args: {
PATTERN: command
}
}
});
},
strToCommand: function(str){
var pattern = "";
for (var i = 0 - 1; i < str.length; i++) {
var charPattern = this.code[str[i]] || this.code["?"];
for(var idx=0;idx<charPattern.length;idx++){
if(charPattern[idx] === '.'){
pattern += "hsslss";
}else if(charPattern[idx] === '_'){
pattern += "hsssslss";
}else if(charPattern[idx] === ' '){
pattern += "ssss";
}
}
}
return pattern;
}
};