Switching to Dalek app

master
hopkira 2020-06-01 18:42:35 +01:00
parent 93f818eef4
commit 5c2bf29850
2 changed files with 255 additions and 255 deletions

View File

@ -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);

View File

@ -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);