Switching to Dalek app
parent
93f818eef4
commit
5c2bf29850
|
|
@ -19,19 +19,18 @@ bottom_btn = false;
|
||||||
|
|
||||||
msgNum = 0; // message number
|
msgNum = 0; // message number
|
||||||
|
|
||||||
NRF.setConnectionInterval(100);
|
|
||||||
Bangle.loadWidgets();
|
|
||||||
Bangle.drawWidgets();
|
|
||||||
/*
|
/*
|
||||||
CONFIGURATION AREA - STATE VARIABLES
|
CONFIGURATION AREA - STATE VARIABLES
|
||||||
declare global variables for the toggle button
|
declare global variables for the toggle button
|
||||||
statuses; if you add an additional toggle button
|
statuses; if you add an additional toggle button
|
||||||
you should declare it and initiase it here */
|
you should declare it and initiase it here */
|
||||||
|
|
||||||
var status_printer = {value: false};
|
var status_spk = {value: true};
|
||||||
var status_tv = {value: false};
|
var status_face = {value: true};
|
||||||
var status_light_hall = {value: false};
|
var status_iris_light = {value: false};
|
||||||
var status_light_study = {value: false};
|
var status_iris = {value: false};
|
||||||
|
var status_hover = {value: false};
|
||||||
|
var status_dome = {value: false};
|
||||||
|
|
||||||
/* trsnsmit message
|
/* trsnsmit message
|
||||||
where
|
where
|
||||||
|
|
@ -71,16 +70,52 @@ with a unique name and the data from the Image Object
|
||||||
*/
|
*/
|
||||||
const icons = [
|
const icons = [
|
||||||
{
|
{
|
||||||
name: "switch",
|
name: "back",
|
||||||
data: "gEBAP4B/AP4B/AP4B/AMgA3HPJdlVvI7/Hf47/Hf47/Hf47/Hf47/Hf4AvIPKRXAP4B/AP4B/AP4B/AJgA=="
|
data: "gEBAP4B/AP4B/AKgADHPI71HP45/HP45/HP45/HP45/Hf49/Hv49/Hv49/Hv49/Hv497He4B/AP4B/AJAA=="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "spk_on",
|
||||||
|
data: "gEBAP4B/AP4Bic/YAFPP4v1HrYZRVJo7ZDKp5jMJYvZHaYAHVL4LHACZrhADLBTJKI7dPLI7/Hf47/HeZBVFqZHZRJp1lAJ47LOtZTnHbIZDKLpHNAL69ZANp1tQbY5/AP4B/ANQ"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "spk_off",
|
||||||
|
data: "gEBAPhB7P/o9rFKI9pFKY9tXNYZNHrZXfMaoAHPOZhNF7LdXHpKpZEJpvPDZK1ZAB49NPLo9jHdI9NHd49PHebvxEJY9NI6I7dHpaDXcKqfPHLKjZHcpTjHbIZDKa73JHa4BXGY45xe5Y7zV+o9/Hv49JHe4BEA="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "facerecog",
|
||||||
|
data: "gEBAP4BSLuozNH9YpTHsolXPsYfdDraZhELIZhHeLtJELY1VC4Y7HHqoXJABYdNHa5bJDrLvfHfbrPZJI7nGZpdVNJ4lRIpaznRqp1hCq55ZC6IRPd8oPjW8Y5jSr45dEJppNHcIjLHZY5ja6rrhFK45pVqI5rGI4AHHNpx3ANA="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "sleep",
|
||||||
|
data: "gEBAP4B/AP4B2ACY7/Quq95HP45/HP4APOdY7fACZfnHcaZZAL45/HP45/E7YAHCaZFZHfbh/HP45/HOoAHHf4B/AP4B/AP4BIA="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "awake",
|
||||||
|
data: "gEBAP4B/AKyb7HfIAFHPI77Ov451Hf453Hf453HdoAbHf45/Hf5HrHNY7NHNo7/HO47/HO47HHPJ1/Heo51HfoB/ALg="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "happy",
|
||||||
|
data: "gEBAP4B/AP4BKa+oAXHNITfHK4ZtD5JZfHOojZaMYlXHMYnXHfI5nFaYPLaaIRNHf47/d/47/HtInTCZrfZHa4vNABYlVKLI3PbLrzfD7qTXDLaphHMIpLAB45hIKY1pAP4B/AMA"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "sad",
|
||||||
|
data: "gEBAP4B/AP4BKa+oAXHNITfHK4ZtD5JZfHOojZaMYlXHMYnXHfI5nFaYPLaaIRNHf47/d/47/CK4njCZ4APHcIVJBbbdTecYjZHr4fdSa4ZbEZ4lNCaY9dAB45hIKY1pAP4B/AMA"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "hover",
|
||||||
|
data: "gEBAP4B/AP7NedL4fZK7ojNHeJ35DJI7vC5Y7tVMI7XHNYnNYro7hHKI7lAK47/HdoAhHPI7/Hf47/Hf4AtHPI7/Hf47/Hd45LAP4B/ANwA="
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "light",
|
name: "light",
|
||||||
data: "gEBAP4B/APi/Na67lfACZ/nNaI9lE6o9jEbI9hD7Y7dDsJZ3D6YRJHdIJHHfaz7Hf5Z/Hf4hZHMIjFEqIVVHsY5hDpI7TEqL1jVsqlTdM55THOJvHOuY7/HfI9JHOI9HHOoBgA=="
|
data: "gEBAP4B/APi/Na67lfACZ/nNaI9lE6o9jEbI9hD7Y7dDsJZ3D6YRJHdIJHHfaz7Hf5Z/Hf4hZHMIjFEqIVVHsY5hDpI7TEqL1jVsqlTdM55THOJvHOuY7/HfI9JHOI9HHOoBgA=="
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "back",
|
name: "speak",
|
||||||
data: "gEBAP4B/AP4B/AKgADHPI71HP45/HP45/HP45/HP45/Hf49/Hv49/Hv49/Hv49/Hv497He4B/AP4B/AJAA=="
|
data: "gEBAP4B/AP4BIbO4AXG+4/hAEY55HqoArHPI9PHfIAzHf47/Hf47/HeY9xHJI79Hto5NHtY5RHc45THco5VHcI3XHJpHRG7I7LEro5ZG+IB/AP4BwA=="
|
||||||
|
},
|
||||||
|
{
|
||||||
|
name: "dalek",
|
||||||
|
data: "gEBAP4B/AP4B/AJMQwQBBGucIoMAkADBhFhAoZBcAAQfJhEgB45BCHYMBjGiB4ZLCK5APDFpphBC5AbEJosY0YfCG4IAEJIYdGFYR5LHJYlEAI0Y4cY8YXMOpQBFlNFlMkOZA7MKII7JOAXkE4T1UERKtFHoxJBABY5QiGiD5kANYTnCiFiWIJVOgDZCOra3FoKxFDKI7hADQ7PkEIaoIHEaKYfJAoKPFAJcIGYIJHkI7UgMY8ZFHC5rVDKIZTCDIJhBA4ILBBoYFHC4QBEBogpBjHDdsJJEAoYAHKoTxWWb5tNWZOiHZRbBHbwtLF5ynBL7wtLjHjd6oAZkHkI5JJKAAZ3TkAjJhALBsJ5K0a/KkLvfkMEFpVhO8hrIU4QLGG4QAzkCdVAP4B/AP4Bb"
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
@ -110,61 +145,78 @@ the program and it may be adviable to use the 'status_name'
|
||||||
format to ensure it is clear.
|
format to ensure it is clear.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
var lightBtn = {
|
var happyBtn = {
|
||||||
primary_colour: 0x653E,
|
primary_colour: 0x653E,
|
||||||
primary_text: 'Lights',
|
primary_text: 'Speak',
|
||||||
primary_icon: 'light',
|
primary_icon: 'happy',
|
||||||
};
|
};
|
||||||
|
|
||||||
var socketsBtn = {
|
var sadBtn = {
|
||||||
primary_colour: 0x33F9,
|
primary_colour: 0x33F9,
|
||||||
primary_text: 'Sockets',
|
primary_text: 'Speak',
|
||||||
primary_icon: 'switch',
|
primary_icon: 'sad',
|
||||||
};
|
};
|
||||||
|
|
||||||
var lightHallBtn = {
|
var speakBtn = {
|
||||||
|
primary_colour: 0x33F9,
|
||||||
|
primary_text: 'Speak',
|
||||||
|
primary_icon: 'speak',
|
||||||
|
};
|
||||||
|
|
||||||
|
var faceBtn = {
|
||||||
primary_colour: 0xE9C7,
|
primary_colour: 0xE9C7,
|
||||||
primary_text: 'Hall Off',
|
primary_text: 'Off',
|
||||||
|
primary_icon: 'facerecog',
|
||||||
|
toggle: true,
|
||||||
|
secondary_colour: 0x3F48,
|
||||||
|
secondary_text: 'On',
|
||||||
|
secondary_icon : 'facerecog',
|
||||||
|
value: status_face
|
||||||
|
};
|
||||||
|
|
||||||
|
var irisLightBtn = {
|
||||||
|
primary_colour: 0xE9C7,
|
||||||
|
primary_text: 'Off',
|
||||||
primary_icon: 'light',
|
primary_icon: 'light',
|
||||||
toggle: true,
|
toggle: true,
|
||||||
secondary_colour: 0x3F48,
|
secondary_colour: 0x3F48,
|
||||||
secondary_text: 'Hall On',
|
secondary_text: 'On',
|
||||||
secondary_icon : 'light',
|
secondary_icon : 'light',
|
||||||
value: status_light_hall
|
value: status_iris_light
|
||||||
};
|
};
|
||||||
|
|
||||||
var lightStudyBtn = {
|
var irisBtn = {
|
||||||
primary_colour: 0xE9C7,
|
primary_colour: 0xE9C7,
|
||||||
primary_text: 'Study Off',
|
primary_text: 'Closed',
|
||||||
primary_icon: 'light',
|
primary_icon: 'sleep',
|
||||||
toggle: true,
|
toggle: true,
|
||||||
secondary_colour: 0x3F48,
|
secondary_colour: 0x3F48,
|
||||||
secondary_text: 'Study On',
|
secondary_text: 'Open',
|
||||||
secondary_icon : 'light',
|
secondary_icon : 'awake',
|
||||||
value: status_light_study
|
value: status_iris
|
||||||
};
|
|
||||||
|
|
||||||
var socketTVBtn = {
|
|
||||||
primary_colour: 0xE9C7,
|
|
||||||
primary_text: 'TV Off',
|
|
||||||
primary_icon: 'switch',
|
|
||||||
toggle: true,
|
|
||||||
secondary_colour: 0x3F48,
|
|
||||||
secondary_text: 'TV On',
|
|
||||||
secondary_icon : 'switch',
|
|
||||||
value: status_tv
|
|
||||||
};
|
};
|
||||||
|
|
||||||
var socketPrinterBtn = {
|
var hoverBtn = {
|
||||||
primary_colour: 0xE9C7,
|
primary_colour: 0xE9C7,
|
||||||
primary_text: 'Printer Off',
|
primary_text: 'Off',
|
||||||
primary_icon: 'switch',
|
primary_icon: 'hover',
|
||||||
toggle: true,
|
toggle: true,
|
||||||
secondary_colour: 0x3F48,
|
secondary_colour: 0x3F48,
|
||||||
secondary_text: 'Printer On',
|
secondary_text: 'On',
|
||||||
secondary_icon : 'switch',
|
secondary_icon : 'hover',
|
||||||
value: status_printer
|
value: status_hover
|
||||||
};
|
};
|
||||||
|
|
||||||
|
var domeBtn = {
|
||||||
|
primary_colour: 0xE9C7,
|
||||||
|
primary_text: 'Off',
|
||||||
|
primary_icon: 'dalek',
|
||||||
|
toggle: true,
|
||||||
|
secondary_colour: 0x3F48,
|
||||||
|
secondary_text: 'On',
|
||||||
|
secondary_icon : 'dalek',
|
||||||
|
value: status_dome
|
||||||
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
CONFIGURATION AREA - SCREEN DEFINITIONS
|
CONFIGURATION AREA - SCREEN DEFINITIONS
|
||||||
|
|
@ -176,20 +228,30 @@ the left hand side of the screen. These
|
||||||
are defined as btn1, bt2 and bt3. The
|
are defined as btn1, bt2 and bt3. The
|
||||||
values are names from the icon array.
|
values are names from the icon array.
|
||||||
*/
|
*/
|
||||||
const homeScreen = {
|
|
||||||
left: lightBtn,
|
|
||||||
right: socketsBtn,
|
|
||||||
};
|
|
||||||
|
|
||||||
const lightsScreen = {
|
const menuScreen = {
|
||||||
left: lightHallBtn,
|
left: faceBtn,
|
||||||
right: lightStudyBtn,
|
right: speakBtn,
|
||||||
|
btn1: "hover",
|
||||||
|
btn2: "light",
|
||||||
btn3: "back"
|
btn3: "back"
|
||||||
};
|
};
|
||||||
|
|
||||||
const socketsScreen = {
|
const speakScreen = {
|
||||||
left: socketTVBtn,
|
left: happyBtn,
|
||||||
right: socketPrinterBtn,
|
right: sadBtn,
|
||||||
|
btn3: "back"
|
||||||
|
};
|
||||||
|
|
||||||
|
const irisScreen = {
|
||||||
|
left: irisBtn,
|
||||||
|
right: irisLightBtn,
|
||||||
|
btn3: "back"
|
||||||
|
};
|
||||||
|
|
||||||
|
const lightsScreen = {
|
||||||
|
left: hoverBtn,
|
||||||
|
right: domeBtn,
|
||||||
btn3: "back"
|
btn3: "back"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -227,63 +289,78 @@ one, then the state machine will change to that new State and redrsw
|
||||||
the screen appropriately.
|
the screen appropriately.
|
||||||
To add in additional capabilities for button presses, simply add
|
To add in additional capabilities for button presses, simply add
|
||||||
an additional 'if' statement.
|
an additional 'if' statement.
|
||||||
For toggle buttons, the value of the appropiate status object is
|
For toggle buttons, the value of the sppropiate status object is
|
||||||
inversed and the new value transmitted.
|
inversed and the new value transmitted.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* The Home State/Page is where the application beings */
|
/* The Home State/Page is where the application beings */
|
||||||
|
|
||||||
const Home = new State({
|
const Home = new State({
|
||||||
state: "Home",
|
state: "DalekMenu",
|
||||||
screen: homeScreen,
|
screen: menuScreen,
|
||||||
events: (event) => {
|
events: (event) => {
|
||||||
if ((event.object == "right") && (event.status == "end")) {
|
if ((event.object == "right") && (event.status == "end")) {
|
||||||
return SocketsMenu;
|
return Speak;
|
||||||
}
|
}
|
||||||
if ((event.object == "left") && (event.status == "end")) {
|
if ((event.object == "left") && (event.status == "end")) {
|
||||||
return LightsMenu;
|
status_face.value = !status_face.value;
|
||||||
|
transmit(this.state, "face", onOff(status_face.value));
|
||||||
|
return this;
|
||||||
}
|
}
|
||||||
transmit(this.state, event.object, event.status);
|
transmit(this.state, event.object, event.status);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
const LightsMenu = new State({
|
const Speak = new State({
|
||||||
state: "LightsMenu",
|
state: "Speak",
|
||||||
|
screen: speakScreen,
|
||||||
|
events: (event) => {
|
||||||
|
if ((event.object == "bottom") && (event.status == "end")) {
|
||||||
|
return Home;
|
||||||
|
}
|
||||||
|
transmit(this.state, event.object, event.status);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const Iris = new State({
|
||||||
|
state: "Iris",
|
||||||
|
screen: irisScreen,
|
||||||
|
events: (event) => {
|
||||||
|
if ((event.object == "bottom") && (event.status == "end")) {
|
||||||
|
return Home;
|
||||||
|
}
|
||||||
|
if ((event.object == "right") && (event.status == "end")) {
|
||||||
|
status_iris_light.value = !status_iris_light.value;
|
||||||
|
transmit(this.state, "iris_light", onOff(status_iris_light.value));
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
if ((event.object == "left") && (event.status == "end")) {
|
||||||
|
status_iris.value = !status_iris.value;
|
||||||
|
transmit(this.state, "iris_servo", onOff(status_iris.value));
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
transmit(this.state, event.object, event.status);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const Lights = new State({
|
||||||
|
state: "Lights",
|
||||||
screen: lightsScreen,
|
screen: lightsScreen,
|
||||||
events: (event) => {
|
events: (event) => {
|
||||||
if ((event.object == "bottom") && (event.status == "end")) {
|
if ((event.object == "bottom") && (event.status == "end")) {
|
||||||
return Home;
|
return Home;
|
||||||
}
|
}
|
||||||
if ((event.object == "right") && (event.status == "end")) {
|
if ((event.object == "right") && (event.status == "end")) {
|
||||||
status_light_study.value = !status_light_study.value;
|
status_dome.value = !status_dome.value;
|
||||||
transmit(this.state, "study", onOff(status_light_study.value));
|
transmit(this.state, "dome", onOff(status_dome.value));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
if ((event.object == "left") && (event.status == "end")) {
|
if ((event.object == "left") && (event.status == "end")) {
|
||||||
status_light_hall.value = !status_light_hall.value;
|
status_hover.value = !status_hover.value;
|
||||||
transmit(this.state, "hall", onOff(status_light_hall.value));
|
transmit(this.state, "hover", onOff(status_hover.value));
|
||||||
return this;
|
|
||||||
}
|
|
||||||
transmit(this.state, event.object, event.status);
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
const SocketsMenu = new State({
|
|
||||||
state: "SocketsMenu",
|
|
||||||
screen: socketsScreen,
|
|
||||||
events: (event) => {
|
|
||||||
if ((event.object == "bottom") && (event.status == "end")) {
|
|
||||||
return Home;
|
|
||||||
}
|
|
||||||
if ((event.object == "right") && (event.status == "end")) {
|
|
||||||
status_printer.value = !status_printer.value;
|
|
||||||
transmit(this.state, "printer", onOff(status_printer.value));
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
if ((event.object == "left") && (event.status == "end")) {
|
|
||||||
status_tv.value = !status_tv.value;
|
|
||||||
transmit(this.state, "tv", onOff(status_tv.value));
|
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
transmit(this.state, event.object, event.status);
|
transmit(this.state, event.object, event.status);
|
||||||
|
|
@ -344,7 +421,7 @@ const drawButton = (params,side) => {
|
||||||
text = params.secondary_text;
|
text = params.secondary_text;
|
||||||
icon = drawIcon(params.secondary_icon);
|
icon = drawIcon(params.secondary_icon);
|
||||||
}
|
}
|
||||||
g.fillRect(0+x,28,119+x, 239);
|
g.fillRect(0+x,24,119+x, 239);
|
||||||
g.setColor(0x000);
|
g.setColor(0x000);
|
||||||
g.setFont("Vector",15);
|
g.setFont("Vector",15);
|
||||||
g.setFontAlign(0,0.0);
|
g.setFontAlign(0,0.0);
|
||||||
|
|
|
||||||
|
|
@ -19,18 +19,19 @@ bottom_btn = false;
|
||||||
|
|
||||||
msgNum = 0; // message number
|
msgNum = 0; // message number
|
||||||
|
|
||||||
|
NRF.setConnectionInterval(100);
|
||||||
|
Bangle.loadWidgets();
|
||||||
|
Bangle.drawWidgets();
|
||||||
/*
|
/*
|
||||||
CONFIGURATION AREA - STATE VARIABLES
|
CONFIGURATION AREA - STATE VARIABLES
|
||||||
declare global variables for the toggle button
|
declare global variables for the toggle button
|
||||||
statuses; if you add an additional toggle button
|
statuses; if you add an additional toggle button
|
||||||
you should declare it and initiase it here */
|
you should declare it and initiase it here */
|
||||||
|
|
||||||
var status_spk = {value: true};
|
var status_printer = {value: false};
|
||||||
var status_face = {value: true};
|
var status_tv = {value: false};
|
||||||
var status_iris_light = {value: false};
|
var status_light_hall = {value: false};
|
||||||
var status_iris = {value: false};
|
var status_light_study = {value: false};
|
||||||
var status_hover = {value: false};
|
|
||||||
var status_dome = {value: false};
|
|
||||||
|
|
||||||
/* trsnsmit message
|
/* trsnsmit message
|
||||||
where
|
where
|
||||||
|
|
@ -70,52 +71,16 @@ with a unique name and the data from the Image Object
|
||||||
*/
|
*/
|
||||||
const icons = [
|
const icons = [
|
||||||
{
|
{
|
||||||
name: "back",
|
name: "switch",
|
||||||
data: "gEBAP4B/AP4B/AKgADHPI71HP45/HP45/HP45/HP45/Hf49/Hv49/Hv49/Hv49/Hv497He4B/AP4B/AJAA=="
|
data: "gEBAP4B/AP4B/AP4B/AMgA3HPJdlVvI7/Hf47/Hf47/Hf47/Hf47/Hf4AvIPKRXAP4B/AP4B/AP4B/AJgA=="
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "spk_on",
|
|
||||||
data: "gEBAP4B/AP4Bic/YAFPP4v1HrYZRVJo7ZDKp5jMJYvZHaYAHVL4LHACZrhADLBTJKI7dPLI7/Hf47/HeZBVFqZHZRJp1lAJ47LOtZTnHbIZDKLpHNAL69ZANp1tQbY5/AP4B/ANQ"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "spk_off",
|
|
||||||
data: "gEBAPhB7P/o9rFKI9pFKY9tXNYZNHrZXfMaoAHPOZhNF7LdXHpKpZEJpvPDZK1ZAB49NPLo9jHdI9NHd49PHebvxEJY9NI6I7dHpaDXcKqfPHLKjZHcpTjHbIZDKa73JHa4BXGY45xe5Y7zV+o9/Hv49JHe4BEA="
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "facerecog",
|
|
||||||
data: "gEBAP4BSLuozNH9YpTHsolXPsYfdDraZhELIZhHeLtJELY1VC4Y7HHqoXJABYdNHa5bJDrLvfHfbrPZJI7nGZpdVNJ4lRIpaznRqp1hCq55ZC6IRPd8oPjW8Y5jSr45dEJppNHcIjLHZY5ja6rrhFK45pVqI5rGI4AHHNpx3ANA="
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "sleep",
|
|
||||||
data: "gEBAP4B/AP4B2ACY7/Quq95HP45/HP4APOdY7fACZfnHcaZZAL45/HP45/E7YAHCaZFZHfbh/HP45/HOoAHHf4B/AP4B/AP4BIA="
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "awake",
|
|
||||||
data: "gEBAP4B/AKyb7HfIAFHPI77Ov451Hf453Hf453HdoAbHf45/Hf5HrHNY7NHNo7/HO47/HO47HHPJ1/Heo51HfoB/ALg="
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "happy",
|
|
||||||
data: "gEBAP4B/AP4BKa+oAXHNITfHK4ZtD5JZfHOojZaMYlXHMYnXHfI5nFaYPLaaIRNHf47/d/47/HtInTCZrfZHa4vNABYlVKLI3PbLrzfD7qTXDLaphHMIpLAB45hIKY1pAP4B/AMA"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "sad",
|
|
||||||
data: "gEBAP4B/AP4BKa+oAXHNITfHK4ZtD5JZfHOojZaMYlXHMYnXHfI5nFaYPLaaIRNHf47/d/47/CK4njCZ4APHcIVJBbbdTecYjZHr4fdSa4ZbEZ4lNCaY9dAB45hIKY1pAP4B/AMA"
|
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "hover",
|
|
||||||
data: "gEBAP4B/AP7NedL4fZK7ojNHeJ35DJI7vC5Y7tVMI7XHNYnNYro7hHKI7lAK47/HdoAhHPI7/Hf47/Hf4AtHPI7/Hf47/Hd45LAP4B/ANwA="
|
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "light",
|
name: "light",
|
||||||
data: "gEBAP4B/APi/Na67lfACZ/nNaI9lE6o9jEbI9hD7Y7dDsJZ3D6YRJHdIJHHfaz7Hf5Z/Hf4hZHMIjFEqIVVHsY5hDpI7TEqL1jVsqlTdM55THOJvHOuY7/HfI9JHOI9HHOoBgA=="
|
data: "gEBAP4B/APi/Na67lfACZ/nNaI9lE6o9jEbI9hD7Y7dDsJZ3D6YRJHdIJHHfaz7Hf5Z/Hf4hZHMIjFEqIVVHsY5hDpI7TEqL1jVsqlTdM55THOJvHOuY7/HfI9JHOI9HHOoBgA=="
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
name: "speak",
|
name: "back",
|
||||||
data: "gEBAP4B/AP4BIbO4AXG+4/hAEY55HqoArHPI9PHfIAzHf47/Hf47/HeY9xHJI79Hto5NHtY5RHc45THco5VHcI3XHJpHRG7I7LEro5ZG+IB/AP4BwA=="
|
data: "gEBAP4B/AP4B/AKgADHPI71HP45/HP45/HP45/HP45/Hf49/Hv49/Hv49/Hv49/Hv497He4B/AP4B/AJAA=="
|
||||||
},
|
|
||||||
{
|
|
||||||
name: "dalek",
|
|
||||||
data: "gEBAP4B/AP4B/AJMQwQBBGucIoMAkADBhFhAoZBcAAQfJhEgB45BCHYMBjGiB4ZLCK5APDFpphBC5AbEJosY0YfCG4IAEJIYdGFYR5LHJYlEAI0Y4cY8YXMOpQBFlNFlMkOZA7MKII7JOAXkE4T1UERKtFHoxJBABY5QiGiD5kANYTnCiFiWIJVOgDZCOra3FoKxFDKI7hADQ7PkEIaoIHEaKYfJAoKPFAJcIGYIJHkI7UgMY8ZFHC5rVDKIZTCDIJhBA4ILBBoYFHC4QBEBogpBjHDdsJJEAoYAHKoTxWWb5tNWZOiHZRbBHbwtLF5ynBL7wtLjHjd6oAZkHkI5JJKAAZ3TkAjJhALBsJ5K0a/KkLvfkMEFpVhO8hrIU4QLGG4QAzkCdVAP4B/AP4Bb"
|
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
|
|
@ -145,78 +110,61 @@ the program and it may be adviable to use the 'status_name'
|
||||||
format to ensure it is clear.
|
format to ensure it is clear.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
var happyBtn = {
|
var lightBtn = {
|
||||||
primary_colour: 0x653E,
|
primary_colour: 0x653E,
|
||||||
primary_text: 'Speak',
|
primary_text: 'Lights',
|
||||||
primary_icon: 'happy',
|
primary_icon: 'light',
|
||||||
};
|
};
|
||||||
|
|
||||||
var sadBtn = {
|
var socketsBtn = {
|
||||||
primary_colour: 0x33F9,
|
primary_colour: 0x33F9,
|
||||||
primary_text: 'Speak',
|
primary_text: 'Sockets',
|
||||||
primary_icon: 'sad',
|
primary_icon: 'switch',
|
||||||
};
|
};
|
||||||
|
|
||||||
var speakBtn = {
|
var lightHallBtn = {
|
||||||
primary_colour: 0x33F9,
|
|
||||||
primary_text: 'Speak',
|
|
||||||
primary_icon: 'speak',
|
|
||||||
};
|
|
||||||
|
|
||||||
var faceBtn = {
|
|
||||||
primary_colour: 0xE9C7,
|
primary_colour: 0xE9C7,
|
||||||
primary_text: 'Off',
|
primary_text: 'Hall Off',
|
||||||
primary_icon: 'facerecog',
|
|
||||||
toggle: true,
|
|
||||||
secondary_colour: 0x3F48,
|
|
||||||
secondary_text: 'On',
|
|
||||||
secondary_icon : 'facerecog',
|
|
||||||
value: status_face
|
|
||||||
};
|
|
||||||
|
|
||||||
var irisLightBtn = {
|
|
||||||
primary_colour: 0xE9C7,
|
|
||||||
primary_text: 'Off',
|
|
||||||
primary_icon: 'light',
|
primary_icon: 'light',
|
||||||
toggle: true,
|
toggle: true,
|
||||||
secondary_colour: 0x3F48,
|
secondary_colour: 0x3F48,
|
||||||
secondary_text: 'On',
|
secondary_text: 'Hall On',
|
||||||
secondary_icon : 'light',
|
secondary_icon : 'light',
|
||||||
value: status_iris_light
|
value: status_light_hall
|
||||||
};
|
};
|
||||||
|
|
||||||
var irisBtn = {
|
var lightStudyBtn = {
|
||||||
primary_colour: 0xE9C7,
|
primary_colour: 0xE9C7,
|
||||||
primary_text: 'Closed',
|
primary_text: 'Study Off',
|
||||||
primary_icon: 'sleep',
|
primary_icon: 'light',
|
||||||
toggle: true,
|
toggle: true,
|
||||||
secondary_colour: 0x3F48,
|
secondary_colour: 0x3F48,
|
||||||
secondary_text: 'Open',
|
secondary_text: 'Study On',
|
||||||
secondary_icon : 'awake',
|
secondary_icon : 'light',
|
||||||
value: status_iris
|
value: status_light_study
|
||||||
};
|
};
|
||||||
|
|
||||||
var hoverBtn = {
|
var socketTVBtn = {
|
||||||
primary_colour: 0xE9C7,
|
primary_colour: 0xE9C7,
|
||||||
primary_text: 'Off',
|
primary_text: 'TV Off',
|
||||||
primary_icon: 'hover',
|
primary_icon: 'switch',
|
||||||
toggle: true,
|
toggle: true,
|
||||||
secondary_colour: 0x3F48,
|
secondary_colour: 0x3F48,
|
||||||
secondary_text: 'On',
|
secondary_text: 'TV On',
|
||||||
secondary_icon : 'hover',
|
secondary_icon : 'switch',
|
||||||
value: status_hover
|
value: status_tv
|
||||||
};
|
};
|
||||||
|
|
||||||
var domeBtn = {
|
var socketPrinterBtn = {
|
||||||
primary_colour: 0xE9C7,
|
primary_colour: 0xE9C7,
|
||||||
primary_text: 'Off',
|
primary_text: 'Printer Off',
|
||||||
primary_icon: 'dalek',
|
primary_icon: 'switch',
|
||||||
toggle: true,
|
toggle: true,
|
||||||
secondary_colour: 0x3F48,
|
secondary_colour: 0x3F48,
|
||||||
secondary_text: 'On',
|
secondary_text: 'Printer On',
|
||||||
secondary_icon : 'dalek',
|
secondary_icon : 'switch',
|
||||||
value: status_dome
|
value: status_printer
|
||||||
};
|
};
|
||||||
|
|
||||||
/*
|
/*
|
||||||
CONFIGURATION AREA - SCREEN DEFINITIONS
|
CONFIGURATION AREA - SCREEN DEFINITIONS
|
||||||
|
|
@ -228,30 +176,20 @@ the left hand side of the screen. These
|
||||||
are defined as btn1, bt2 and bt3. The
|
are defined as btn1, bt2 and bt3. The
|
||||||
values are names from the icon array.
|
values are names from the icon array.
|
||||||
*/
|
*/
|
||||||
|
const homeScreen = {
|
||||||
const menuScreen = {
|
left: lightBtn,
|
||||||
left: faceBtn,
|
right: socketsBtn,
|
||||||
right: speakBtn,
|
|
||||||
btn1: "hover",
|
|
||||||
btn2: "light",
|
|
||||||
btn3: "back"
|
|
||||||
};
|
|
||||||
|
|
||||||
const speakScreen = {
|
|
||||||
left: happyBtn,
|
|
||||||
right: sadBtn,
|
|
||||||
btn3: "back"
|
|
||||||
};
|
|
||||||
|
|
||||||
const irisScreen = {
|
|
||||||
left: irisBtn,
|
|
||||||
right: irisLightBtn,
|
|
||||||
btn3: "back"
|
|
||||||
};
|
};
|
||||||
|
|
||||||
const lightsScreen = {
|
const lightsScreen = {
|
||||||
left: hoverBtn,
|
left: lightHallBtn,
|
||||||
right: domeBtn,
|
right: lightStudyBtn,
|
||||||
|
btn3: "back"
|
||||||
|
};
|
||||||
|
|
||||||
|
const socketsScreen = {
|
||||||
|
left: socketTVBtn,
|
||||||
|
right: socketPrinterBtn,
|
||||||
btn3: "back"
|
btn3: "back"
|
||||||
};
|
};
|
||||||
|
|
||||||
|
|
@ -289,78 +227,63 @@ one, then the state machine will change to that new State and redrsw
|
||||||
the screen appropriately.
|
the screen appropriately.
|
||||||
To add in additional capabilities for button presses, simply add
|
To add in additional capabilities for button presses, simply add
|
||||||
an additional 'if' statement.
|
an additional 'if' statement.
|
||||||
For toggle buttons, the value of the sppropiate status object is
|
For toggle buttons, the value of the appropiate status object is
|
||||||
inversed and the new value transmitted.
|
inversed and the new value transmitted.
|
||||||
*/
|
*/
|
||||||
|
|
||||||
/* The Home State/Page is where the application beings */
|
/* The Home State/Page is where the application beings */
|
||||||
|
|
||||||
const Home = new State({
|
const Home = new State({
|
||||||
state: "DalekMenu",
|
state: "Home",
|
||||||
screen: menuScreen,
|
screen: homeScreen,
|
||||||
events: (event) => {
|
events: (event) => {
|
||||||
if ((event.object == "right") && (event.status == "end")) {
|
if ((event.object == "right") && (event.status == "end")) {
|
||||||
return Speak;
|
return SocketsMenu;
|
||||||
}
|
}
|
||||||
if ((event.object == "left") && (event.status == "end")) {
|
if ((event.object == "left") && (event.status == "end")) {
|
||||||
status_face.value = !status_face.value;
|
return LightsMenu;
|
||||||
transmit(this.state, "face", onOff(status_face.value));
|
|
||||||
return this;
|
|
||||||
}
|
}
|
||||||
transmit(this.state, event.object, event.status);
|
transmit(this.state, event.object, event.status);
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
const Speak = new State({
|
const LightsMenu = new State({
|
||||||
state: "Speak",
|
state: "LightsMenu",
|
||||||
screen: speakScreen,
|
|
||||||
events: (event) => {
|
|
||||||
if ((event.object == "bottom") && (event.status == "end")) {
|
|
||||||
return Home;
|
|
||||||
}
|
|
||||||
transmit(this.state, event.object, event.status);
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
const Iris = new State({
|
|
||||||
state: "Iris",
|
|
||||||
screen: irisScreen,
|
|
||||||
events: (event) => {
|
|
||||||
if ((event.object == "bottom") && (event.status == "end")) {
|
|
||||||
return Home;
|
|
||||||
}
|
|
||||||
if ((event.object == "right") && (event.status == "end")) {
|
|
||||||
status_iris_light.value = !status_iris_light.value;
|
|
||||||
transmit(this.state, "iris_light", onOff(status_iris_light.value));
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
if ((event.object == "left") && (event.status == "end")) {
|
|
||||||
status_iris.value = !status_iris.value;
|
|
||||||
transmit(this.state, "iris_servo", onOff(status_iris.value));
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
transmit(this.state, event.object, event.status);
|
|
||||||
return this;
|
|
||||||
}
|
|
||||||
});
|
|
||||||
|
|
||||||
const Lights = new State({
|
|
||||||
state: "Lights",
|
|
||||||
screen: lightsScreen,
|
screen: lightsScreen,
|
||||||
events: (event) => {
|
events: (event) => {
|
||||||
if ((event.object == "bottom") && (event.status == "end")) {
|
if ((event.object == "bottom") && (event.status == "end")) {
|
||||||
return Home;
|
return Home;
|
||||||
}
|
}
|
||||||
if ((event.object == "right") && (event.status == "end")) {
|
if ((event.object == "right") && (event.status == "end")) {
|
||||||
status_dome.value = !status_dome.value;
|
status_light_study.value = !status_light_study.value;
|
||||||
transmit(this.state, "dome", onOff(status_dome.value));
|
transmit(this.state, "study", onOff(status_light_study.value));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
if ((event.object == "left") && (event.status == "end")) {
|
if ((event.object == "left") && (event.status == "end")) {
|
||||||
status_hover.value = !status_hover.value;
|
status_light_hall.value = !status_light_hall.value;
|
||||||
transmit(this.state, "hover", onOff(status_hover.value));
|
transmit(this.state, "hall", onOff(status_light_hall.value));
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
transmit(this.state, event.object, event.status);
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
});
|
||||||
|
|
||||||
|
const SocketsMenu = new State({
|
||||||
|
state: "SocketsMenu",
|
||||||
|
screen: socketsScreen,
|
||||||
|
events: (event) => {
|
||||||
|
if ((event.object == "bottom") && (event.status == "end")) {
|
||||||
|
return Home;
|
||||||
|
}
|
||||||
|
if ((event.object == "right") && (event.status == "end")) {
|
||||||
|
status_printer.value = !status_printer.value;
|
||||||
|
transmit(this.state, "printer", onOff(status_printer.value));
|
||||||
|
return this;
|
||||||
|
}
|
||||||
|
if ((event.object == "left") && (event.status == "end")) {
|
||||||
|
status_tv.value = !status_tv.value;
|
||||||
|
transmit(this.state, "tv", onOff(status_tv.value));
|
||||||
return this;
|
return this;
|
||||||
}
|
}
|
||||||
transmit(this.state, event.object, event.status);
|
transmit(this.state, event.object, event.status);
|
||||||
|
|
@ -421,7 +344,7 @@ const drawButton = (params,side) => {
|
||||||
text = params.secondary_text;
|
text = params.secondary_text;
|
||||||
icon = drawIcon(params.secondary_icon);
|
icon = drawIcon(params.secondary_icon);
|
||||||
}
|
}
|
||||||
g.fillRect(0+x,24,119+x, 239);
|
g.fillRect(0+x,28,119+x, 239);
|
||||||
g.setColor(0x000);
|
g.setColor(0x000);
|
||||||
g.setFont("Vector",15);
|
g.setFont("Vector",15);
|
||||||
g.setFontAlign(0,0.0);
|
g.setFontAlign(0,0.0);
|
||||||
Loading…
Reference in New Issue