Compare commits
6 Commits
nightly-fi
...
stable-v1.
Author | SHA1 | Date | |
---|---|---|---|
5e98be43ed | |||
a924b6d243 | |||
21c20db83e | |||
94d8cd9c53 | |||
9263e47355 | |||
969e449376 |
41
README.md
41
README.md
@ -1,39 +1,6 @@
|
|||||||
# ⚠️ TESTED FIRMWARE IS IN [RELEASES](https://github.com/Lexzach/antigneous/releases) ⚠️
|
# Stable Release v1.5
|
||||||
|
|
||||||
[](https://forthebadge.com) [](https://forthebadge.com) [](https://forthebadge.com)
|
## Instruction Manuals 📄
|
||||||

|
📕 [Basic Assembly and Operation Manual](https://code.lexza.ch/Lexzach/antigneous/src/branch/stable-v1.5/instructions/antigneous_instructions.pdf) - [Download](https://code.lexza.ch/Lexzach/antigneous/raw/branch/stable-v1.5/instructions/antigneous_instructions.pdf)
|
||||||
# What is this? 🔥
|
|
||||||
Antigneous is an open-source conventional fire alarm control panel, 3 years in the making. A fire alarm control panel is the device responsible for controlling all of the devices in a fire alarm system, such as smoke detectors, pull stations, and notification devices. Normally, a fire alarm control panel will run you back hundreds, if not thousands of dollars. This project strives to fix that issue by allowing for anyone to build their own reliable fire alarm control panel without breaking the bank.
|
|
||||||
|
|
||||||
# What do you mean by "open-source" 🔓
|
|
||||||
**You do not have to give a single cent to me in order to build this panel.**
|
|
||||||
|
|
||||||
The code that is being ran in an Antigneous fire alarm control panel is completely visible to everyone and anyone, [right here](https://github.com/Lexzach/antigneous/blob/official-firmware/main/main.ino)! Don't like something about Antigneous, you can change it (or even better submit an issue or pull request). All hardware that is used in the making of an Antigneous panel is available to anyone. The wiring diagram for making your own is also available to anyone.
|
|
||||||
|
|
||||||
# Instruction Manuals 📄
|
|
||||||
📕 [Basic Assembly and Operation Manual](https://github.com/Lexzach/antigneous/blob/official-firmware/instructions/antigneous_instructions.pdf) - [Download](https://github.com/Lexzach/antigneous/raw/official-firmware/instructions/antigneous_instructions.pdf)
|
|
||||||
|
|
||||||
📚 [Technical Instruction Manual](https://github.com/Lexzach/antigneous/blob/official-firmware/instructions/antigneous_tech_instructions.pdf) - [Download](https://github.com/Lexzach/antigneous/raw/official-firmware/instructions/antigneous_tech_instructions.pdf)
|
|
||||||
|
|
||||||
# Features and Limitations ⚖️
|
|
||||||
Although I have tried to make Antigneous as feature-rich as possible, there are some limitations to take into consideration...
|
|
||||||
|
|
||||||
## Features ✅
|
|
||||||
- LCD display
|
|
||||||
- Very customizable, tinker friendly design
|
|
||||||
- Many coding selections: Temporal three, Code 4-4, Marchtime, Continuous, California Code, and Slower Marchtime
|
|
||||||
- Togglable keyless silence
|
|
||||||
- Walk test, silent walk test, and strobe test
|
|
||||||
- EOL resistor support for activating loop
|
|
||||||
- Pull station and smoke detector verification
|
|
||||||
- Fail-safe mode in case of unbootable panel
|
|
||||||
- Selectable security levels, electronic keyswitch or no keyswitch
|
|
||||||
- Strobe Sync support for System Sensor and Wheelock (more will be added)
|
|
||||||
|
|
||||||
## Current Limitations ❎
|
|
||||||
- **NOT OFFICIALLY TESTED**! This should *not* be used in place of a fire panel from a name brand company
|
|
||||||
- No EOL support for NAC circuit
|
|
||||||
- No SmartSync, or two wire sync (CURRENTLY)
|
|
||||||
- No support for 2 wire smoke detectors
|
|
||||||
- Only 2 zones
|
|
||||||
|
|
||||||
|
📚 [Technical Instruction Manual](https://code.lexza.ch/Lexzach/antigneous/src/branch/stable-v1.5/instructions/antigneous_tech_instructions.pdf) - [Download](https://code.lexza.ch/Lexzach/antigneous/raw/branch/stable-v1.5/instructions/antigneous_tech_instructions.pdf)
|
||||||
|
BIN
gh_icon.png
BIN
gh_icon.png
Binary file not shown.
Before Width: | Height: | Size: 294 KiB |
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
125
main/main.ino
125
main/main.ino
@ -13,15 +13,6 @@ char *firmwareRev = "v1.5"; //VERSION
|
|||||||
int EEPROMVersion = 1; //version control to rewrite eeprom after update
|
int EEPROMVersion = 1; //version control to rewrite eeprom after update
|
||||||
int EEPROMBuild = 5;
|
int EEPROMBuild = 5;
|
||||||
|
|
||||||
//patents
|
|
||||||
// https://patents.google.com/patent/US5559492 - simplex
|
|
||||||
// https://patents.google.com/patent/US6281789 - simplex smartsync
|
|
||||||
// https://patents.google.com/patent/US6194994 - wheelock
|
|
||||||
// https://patents.google.com/patent/US5659287A/en - gentex strobe sync
|
|
||||||
// https://patents.google.com/patent/US5959528 - gentex smartsync
|
|
||||||
// https://patents.google.com/patent/US8928191B2/en - potter weird universal sync
|
|
||||||
|
|
||||||
|
|
||||||
//----------------------------------------------------------------------------- RUNTIME VARIABLES
|
//----------------------------------------------------------------------------- RUNTIME VARIABLES
|
||||||
bool fullAlarm = false; //bool to control if this is a full alarm that requres a panel reset to clear
|
bool fullAlarm = false; //bool to control if this is a full alarm that requres a panel reset to clear
|
||||||
bool silenced = false;
|
bool silenced = false;
|
||||||
@ -86,8 +77,6 @@ bool preAlarm = false; //use pre-alarm?
|
|||||||
bool smokeDetectorVerification = false; //should smoke detectors activate first stage
|
bool smokeDetectorVerification = false; //should smoke detectors activate first stage
|
||||||
bool smokeDetectorCurrentlyInVerification = false; //Is a smoke detector currently in verification?
|
bool smokeDetectorCurrentlyInVerification = false; //Is a smoke detector currently in verification?
|
||||||
bool audibleSilence = true;
|
bool audibleSilence = true;
|
||||||
bool useTwoWire = false; //does the panel use 2 wire for alarms
|
|
||||||
int twoWireTimer = 0; //timer for 2 wire alarms
|
|
||||||
int smokeDetectorTimeout = 60000; //how long to wait before toggling smoke detectors back on
|
int smokeDetectorTimeout = 60000; //how long to wait before toggling smoke detectors back on
|
||||||
int smokeDetectorPostRestartTimer = 0; //variable to keep track of the 60 seconds post-power up that the panel watches the smoke detector
|
int smokeDetectorPostRestartTimer = 0; //variable to keep track of the 60 seconds post-power up that the panel watches the smoke detector
|
||||||
int smokeDetectorPostRestartVerificationTime = 120000; //time in ms that the smoke detector should be monitored
|
int smokeDetectorPostRestartVerificationTime = 120000; //time in ms that the smoke detector should be monitored
|
||||||
@ -325,11 +314,7 @@ void setup() {
|
|||||||
Serial.println("EEPROM verification failed.");
|
Serial.println("EEPROM verification failed.");
|
||||||
lcd.clear();
|
lcd.clear();
|
||||||
lcd.setCursor(0,0);
|
lcd.setCursor(0,0);
|
||||||
if (EEPROM.read(50) != EEPROMVersion or EEPROM.read(51) != EEPROMBuild){ //display error 2 if the firmware is different
|
|
||||||
lcd.print("ERROR 2");
|
|
||||||
} else {
|
|
||||||
lcd.print("ERROR 1");
|
lcd.print("ERROR 1");
|
||||||
}
|
|
||||||
lcd.setCursor(0,1);
|
lcd.setCursor(0,1);
|
||||||
lcd.print("check manual");
|
lcd.print("check manual");
|
||||||
while(not digitalRead(resetButtonPin) and not digitalRead(drillButtonPin)){ //wait until button is pressed
|
while(not digitalRead(resetButtonPin) and not digitalRead(drillButtonPin)){ //wait until button is pressed
|
||||||
@ -373,7 +358,6 @@ void setup() {
|
|||||||
smokeDetectorVerification = EEPROM.read(76) == 1 ? true : false;
|
smokeDetectorVerification = EEPROM.read(76) == 1 ? true : false;
|
||||||
audibleSilence = EEPROM.read(79) == 1 ? true : false;
|
audibleSilence = EEPROM.read(79) == 1 ? true : false;
|
||||||
keylessSilence = EEPROM.read(27) == 1 ? true : false;
|
keylessSilence = EEPROM.read(27) == 1 ? true : false;
|
||||||
useTwoWire = EEPROM.read(30) == 1 ? true : false;
|
|
||||||
smokeDetectorTimeout = EEPROM.read(77)*5000;
|
smokeDetectorTimeout = EEPROM.read(77)*5000;
|
||||||
smokeDetectorPostRestartVerificationTime = EEPROM.read(28)*5000;
|
smokeDetectorPostRestartVerificationTime = EEPROM.read(28)*5000;
|
||||||
firstStageTime = EEPROM.read(75)*60000;
|
firstStageTime = EEPROM.read(75)*60000;
|
||||||
@ -745,7 +729,7 @@ void alarm(){
|
|||||||
strobeOn(false);
|
strobeOn(false);
|
||||||
strobeSyncTimer = 0;
|
strobeSyncTimer = 0;
|
||||||
}
|
}
|
||||||
if (horn and not useTwoWire){
|
if (horn){
|
||||||
if (not preAlarm or secondStage){ //yes, preAlarm == false is redundant but in the case that second stage == false, but pre-alarm is off, the full alarm will still sound
|
if (not preAlarm or secondStage){ //yes, preAlarm == false is redundant but in the case that second stage == false, but pre-alarm is off, the full alarm will still sound
|
||||||
if (codeWheel == 0){
|
if (codeWheel == 0){
|
||||||
|
|
||||||
@ -847,42 +831,6 @@ void alarm(){
|
|||||||
codeWheelTimer = -1;
|
codeWheelTimer = -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
codeWheelTimer++;
|
|
||||||
firstStageTimer++;
|
|
||||||
if (firstStageTimer>=firstStageTime){
|
|
||||||
codeWheelTimer = 0;
|
|
||||||
secondStage = true;
|
|
||||||
currentScreen = -1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
} else if (useTwoWire){ //-------------------------------- DO MORE TESTING WITH THIS!!!!
|
|
||||||
if (horn and (not preAlarm or secondStage)){
|
|
||||||
if (twoWireTimer >= 1000){
|
|
||||||
twoWireTimer = 0;
|
|
||||||
} else if (twoWireTimer >= 975){
|
|
||||||
hornOn(false);
|
|
||||||
} else if (twoWireTimer <= 10){
|
|
||||||
hornOn(true);
|
|
||||||
}
|
|
||||||
twoWireTimer++;
|
|
||||||
} else if (not horn and silenced and audibleSilence){
|
|
||||||
if (twoWireTimer >= 1000){
|
|
||||||
twoWireTimer = 0;
|
|
||||||
} else if (twoWireTimer >= 965){
|
|
||||||
hornOn(false);
|
|
||||||
} else if (twoWireTimer <= 10){
|
|
||||||
hornOn(true);
|
|
||||||
}
|
|
||||||
twoWireTimer++;
|
|
||||||
} else if (horn and preAlarm and not secondStage){
|
|
||||||
if (codeWheelTimer == 0){
|
|
||||||
hornOn(true);
|
|
||||||
} else if (codeWheelTimer == 75){
|
|
||||||
hornOn(false);
|
|
||||||
} else if (codeWheelTimer >= 5075){
|
|
||||||
codeWheelTimer = -1;
|
|
||||||
}
|
|
||||||
|
|
||||||
codeWheelTimer++;
|
codeWheelTimer++;
|
||||||
firstStageTimer++;
|
firstStageTimer++;
|
||||||
if (firstStageTimer>=firstStageTime){
|
if (firstStageTimer>=firstStageTime){
|
||||||
@ -894,7 +842,6 @@ void alarm(){
|
|||||||
} else {
|
} else {
|
||||||
hornOn(false);
|
hornOn(false);
|
||||||
codeWheelTimer = 0;
|
codeWheelTimer = 0;
|
||||||
twoWireTimer = 0;
|
|
||||||
}
|
}
|
||||||
if (fullAlarm){
|
if (fullAlarm){
|
||||||
alarmLedTimer++;
|
alarmLedTimer++;
|
||||||
@ -1036,15 +983,15 @@ void config(){
|
|||||||
char *main[] = {"Testing","Settings"}; //menu 0
|
char *main[] = {"Testing","Settings"}; //menu 0
|
||||||
char *mainTesting[] = {"Walk Test","Silent Wlk Test","Strobe Test"}; //menu 1
|
char *mainTesting[] = {"Walk Test","Silent Wlk Test","Strobe Test"}; //menu 1
|
||||||
char *mainSettings[] = {"Fire Alarm","Panel"}; //menu 2
|
char *mainSettings[] = {"Fire Alarm","Panel"}; //menu 2
|
||||||
char *mainSettingsFireAlarmSettings[] = {"Coding","Verification","Pre-Alarm","Audible Sil.:","No-Key Sil.:","Strobe Sync","2 Wire:"}; //menu 3
|
char *mainSettingsFireAlarmSettings[] = {"Coding","Verification","Pre-Alarm","Audible Sil.:","No-Key Sil.:","Strobe Sync"}; //menu 3
|
||||||
char *mainSettingsVerificationSettings[] = {"Verification:","V.Time:","Det.Verif.:","Det.Timeout:","Det.Watch:"}; //menu 4
|
char *mainSettingsVerificationSettings[] = {"Verification:","V.Time:","Det.Verif.:","Det.Timeout:","Det.Watch:"}; //menu 4
|
||||||
char *mainSettingsFireAlarmSettingsCoding[] = {"Temporal Three","Marchtime","4-4","Continuous","California","Slow Marchtime"}; //menu 5
|
char *mainSettingsFireAlarmSettingsCoding[] = {"Temporal Three","Marchtime","4-4","Continuous","California","Slow Marchtime"}; //menu 5
|
||||||
char *mainSettingsFireAlarmSettingsPreAlarmSettings[] = {"Pre-Alarm:","Stage1 Time:"}; //menu 6
|
char *mainSettingsFireAlarmSettingsPreAlarmSettings[] = {"Pre-Alarm:","Stage1 Time:"}; //menu 6
|
||||||
char *mainPanelSettings[] = {"Panel Name","Panel Security","LCD Dim:","Factory Reset","About"}; //menu 8
|
char *mainPanelSettings[] = {"Panel Name","Panel Security","LCD Dim:","Factory Reset","About"}; //menu 8
|
||||||
char *mainPanelSettingsPanelSecurity[] = {"None","Keyswitch","Passcode"}; //menu 9
|
char *mainPanelSettingsPanelSecurity[] = {"None","Keyswitch","Passcode"}; //menu 9
|
||||||
char *mainPanelSettingsPanelName[] = {"Enter Name:"}; //menu 10
|
char *mainPanelSettingsPanelName[] = {"Enter Name:"}; //menu 10
|
||||||
char *mainSettingsFireAlarmSettingsStrobeSync[] = {"None","System Sensor","Wheelock", "Gentex","Simplex"}; //menu 11
|
char *mainSettingsFireAlarmSettingsStrobeSync[] = {"None","System Sensor","Wheelock"}; //menu 11
|
||||||
char *mainPanelSettingsAbout[] = {"Antigneous FACP","Nightly ","Made by Lexzach","Hrs On: "}; //menu 12
|
char *mainPanelSettingsAbout[] = {"Antigneous FACP","Stable ","Made by Lexzach","Hrs On: "}; //menu 12
|
||||||
|
|
||||||
if (digitalRead(resetButtonPin)){ //RESET BUTTON
|
if (digitalRead(resetButtonPin)){ //RESET BUTTON
|
||||||
resetPressed = true;
|
resetPressed = true;
|
||||||
@ -1147,11 +1094,7 @@ void config(){
|
|||||||
} else if (drillPressed and not drillStillPressed){
|
} else if (drillPressed and not drillStillPressed){
|
||||||
if (cursorPosition == 0){
|
if (cursorPosition == 0){
|
||||||
configPage = 3; //change screen to facp settings
|
configPage = 3; //change screen to facp settings
|
||||||
if (useTwoWire){
|
|
||||||
configLCDUpdate(0, (String)mainSettingsFireAlarmSettings[0] + " off", (String)mainSettingsFireAlarmSettings[1]);
|
|
||||||
} else {
|
|
||||||
configLCDUpdate(0, (String)mainSettingsFireAlarmSettings[0], (String)mainSettingsFireAlarmSettings[1]);
|
configLCDUpdate(0, (String)mainSettingsFireAlarmSettings[0], (String)mainSettingsFireAlarmSettings[1]);
|
||||||
}
|
|
||||||
} else if (cursorPosition == 1){
|
} else if (cursorPosition == 1){
|
||||||
configPage = 8; //change screen to facp settings
|
configPage = 8; //change screen to facp settings
|
||||||
configLCDUpdate(0, (String)mainPanelSettings[0], (String)mainPanelSettings[1]);
|
configLCDUpdate(0, (String)mainPanelSettings[0], (String)mainPanelSettings[1]);
|
||||||
@ -1179,25 +1122,15 @@ void config(){
|
|||||||
configLCDUpdate(4, (String)mainSettingsFireAlarmSettings[4]+"off", (String)mainSettingsFireAlarmSettings[5], false, false);
|
configLCDUpdate(4, (String)mainSettingsFireAlarmSettings[4]+"off", (String)mainSettingsFireAlarmSettings[5], false, false);
|
||||||
}
|
}
|
||||||
} else if (cursorPosition == 4) {
|
} else if (cursorPosition == 4) {
|
||||||
configLCDUpdate(5, (String)mainSettingsFireAlarmSettings[5], (String)mainSettingsFireAlarmSettings[6]+useTwoWire, false, true);
|
configLCDUpdate(5, (String)mainSettingsFireAlarmSettings[5], (String)mainSettingsFireAlarmSettings[0], false, false);
|
||||||
} else if (cursorPosition == 5){
|
} else if (cursorPosition == 5){
|
||||||
if (useTwoWire){
|
|
||||||
configLCDUpdate(6, (String)mainSettingsFireAlarmSettings[6]+useTwoWire, (String)mainSettingsFireAlarmSettings[0]+"off", true, false);
|
|
||||||
} else {
|
|
||||||
configLCDUpdate(6, (String)mainSettingsFireAlarmSettings[6]+useTwoWire, (String)mainSettingsFireAlarmSettings[0], true, false);
|
|
||||||
}
|
|
||||||
} else if (cursorPosition == 6){
|
|
||||||
if (useTwoWire){
|
|
||||||
configLCDUpdate(0, (String)mainSettingsFireAlarmSettings[0] + " off", (String)mainSettingsFireAlarmSettings[1]);
|
|
||||||
} else {
|
|
||||||
configLCDUpdate(0, (String)mainSettingsFireAlarmSettings[0], (String)mainSettingsFireAlarmSettings[1]);
|
configLCDUpdate(0, (String)mainSettingsFireAlarmSettings[0], (String)mainSettingsFireAlarmSettings[1]);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
} else if (silencePressed and not silenceStillPressed){
|
} else if (silencePressed and not silenceStillPressed){
|
||||||
configPage = 2;
|
configPage = 2;
|
||||||
configLCDUpdate(0, (String)mainSettings[0], (String)mainSettings[1]);
|
configLCDUpdate(0, (String)mainSettings[0], (String)mainSettings[1]);
|
||||||
} else if (drillPressed and not drillStillPressed){
|
} else if (drillPressed and not drillStillPressed){
|
||||||
if (cursorPosition == 0 and not useTwoWire){
|
if (cursorPosition == 0){
|
||||||
configPage = 5;
|
configPage = 5;
|
||||||
if (codeWheel == 0){
|
if (codeWheel == 0){
|
||||||
configLCDUpdate(0, (String)mainSettingsFireAlarmSettingsCoding[0] + "*", (String)mainSettingsFireAlarmSettingsCoding[1]);
|
configLCDUpdate(0, (String)mainSettingsFireAlarmSettingsCoding[0] + "*", (String)mainSettingsFireAlarmSettingsCoding[1]);
|
||||||
@ -1253,20 +1186,6 @@ void config(){
|
|||||||
} else {
|
} else {
|
||||||
configLCDUpdate(0, (String)mainSettingsFireAlarmSettingsStrobeSync[0], (String)mainSettingsFireAlarmSettingsStrobeSync[1]);
|
configLCDUpdate(0, (String)mainSettingsFireAlarmSettingsStrobeSync[0], (String)mainSettingsFireAlarmSettingsStrobeSync[1]);
|
||||||
}
|
}
|
||||||
} else if (cursorPosition == 6){
|
|
||||||
if (useTwoWire){
|
|
||||||
useTwoWire = false;
|
|
||||||
EEPROM.write(30,0);
|
|
||||||
} else {
|
|
||||||
useTwoWire = true;
|
|
||||||
EEPROM.write(30,1);
|
|
||||||
}
|
|
||||||
EEPROM.commit();
|
|
||||||
if (useTwoWire){
|
|
||||||
configLCDUpdate(cursorPosition, (String)mainSettingsFireAlarmSettings[6]+useTwoWire, (String)mainSettingsFireAlarmSettings[0] + " off", true, false);
|
|
||||||
} else {
|
|
||||||
configLCDUpdate(cursorPosition, (String)mainSettingsFireAlarmSettings[6]+useTwoWire, (String)mainSettingsFireAlarmSettings[0], true, false);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
//----------------------------------------------------------------------------- SETTINGS > FIRE ALARM
|
//----------------------------------------------------------------------------- SETTINGS > FIRE ALARM
|
||||||
@ -1481,11 +1400,7 @@ void config(){
|
|||||||
}
|
}
|
||||||
} else if (silencePressed and not silenceStillPressed){
|
} else if (silencePressed and not silenceStillPressed){
|
||||||
configPage = 3; //change screen to facp settings
|
configPage = 3; //change screen to facp settings
|
||||||
if (useTwoWire){
|
|
||||||
configLCDUpdate(0, (String)mainSettingsFireAlarmSettings[0] + " off", (String)mainSettingsFireAlarmSettings[1]);
|
|
||||||
} else {
|
|
||||||
configLCDUpdate(0, (String)mainSettingsFireAlarmSettings[0], (String)mainSettingsFireAlarmSettings[1]);
|
configLCDUpdate(0, (String)mainSettingsFireAlarmSettings[0], (String)mainSettingsFireAlarmSettings[1]);
|
||||||
}
|
|
||||||
} else if (drillPressed and not drillStillPressed){
|
} else if (drillPressed and not drillStillPressed){
|
||||||
EEPROM.write(7,cursorPosition); //write the new codewheel settings to eeprom
|
EEPROM.write(7,cursorPosition); //write the new codewheel settings to eeprom
|
||||||
EEPROM.commit();
|
EEPROM.commit();
|
||||||
@ -1838,29 +1753,13 @@ void config(){
|
|||||||
}
|
}
|
||||||
} else if (cursorPosition == 1) {
|
} else if (cursorPosition == 1) {
|
||||||
if (strobeSync == 2){
|
if (strobeSync == 2){
|
||||||
configLCDUpdate(2, (String)mainSettingsFireAlarmSettingsStrobeSync[2]+"*", (String)mainSettingsFireAlarmSettingsStrobeSync[3]);
|
configLCDUpdate(2, (String)mainSettingsFireAlarmSettingsStrobeSync[2]+"*", (String)mainSettingsFireAlarmSettingsStrobeSync[0]);
|
||||||
} else if (strobeSync == 3){
|
} else if (strobeSync == 0){
|
||||||
configLCDUpdate(2, (String)mainSettingsFireAlarmSettingsStrobeSync[2], (String)mainSettingsFireAlarmSettingsStrobeSync[3]+"*");
|
configLCDUpdate(2, (String)mainSettingsFireAlarmSettingsStrobeSync[2], (String)mainSettingsFireAlarmSettingsStrobeSync[0]+"*");
|
||||||
} else{
|
} else{
|
||||||
configLCDUpdate(2, (String)mainSettingsFireAlarmSettingsStrobeSync[2], (String)mainSettingsFireAlarmSettingsStrobeSync[3]);
|
configLCDUpdate(2, (String)mainSettingsFireAlarmSettingsStrobeSync[2], (String)mainSettingsFireAlarmSettingsStrobeSync[0]);
|
||||||
}
|
}
|
||||||
} else if (cursorPosition == 2) {
|
} else if (cursorPosition == 2) {
|
||||||
if (strobeSync == 3){
|
|
||||||
configLCDUpdate(3, (String)mainSettingsFireAlarmSettingsStrobeSync[3]+"*", (String)mainSettingsFireAlarmSettingsStrobeSync[4]);
|
|
||||||
} else if (strobeSync == 4){
|
|
||||||
configLCDUpdate(3, (String)mainSettingsFireAlarmSettingsStrobeSync[3], (String)mainSettingsFireAlarmSettingsStrobeSync[4]+"*");
|
|
||||||
} else{
|
|
||||||
configLCDUpdate(3, (String)mainSettingsFireAlarmSettingsStrobeSync[3], (String)mainSettingsFireAlarmSettingsStrobeSync[4]);
|
|
||||||
}
|
|
||||||
} else if (cursorPosition == 3) {
|
|
||||||
if (strobeSync == 4){
|
|
||||||
configLCDUpdate(4, (String)mainSettingsFireAlarmSettingsStrobeSync[4]+"*", (String)mainSettingsFireAlarmSettingsStrobeSync[0]);
|
|
||||||
} else if (strobeSync == 5){
|
|
||||||
configLCDUpdate(4, (String)mainSettingsFireAlarmSettingsStrobeSync[4], (String)mainSettingsFireAlarmSettingsStrobeSync[0]+"*");
|
|
||||||
} else{
|
|
||||||
configLCDUpdate(4, (String)mainSettingsFireAlarmSettingsStrobeSync[4], (String)mainSettingsFireAlarmSettingsStrobeSync[0]);
|
|
||||||
}
|
|
||||||
} else if (cursorPosition == 4) {
|
|
||||||
if (strobeSync == 0){
|
if (strobeSync == 0){
|
||||||
configLCDUpdate(0, (String)mainSettingsFireAlarmSettingsStrobeSync[0]+"*", (String)mainSettingsFireAlarmSettingsStrobeSync[1]);
|
configLCDUpdate(0, (String)mainSettingsFireAlarmSettingsStrobeSync[0]+"*", (String)mainSettingsFireAlarmSettingsStrobeSync[1]);
|
||||||
} else if (strobeSync == 1){
|
} else if (strobeSync == 1){
|
||||||
@ -1871,11 +1770,11 @@ void config(){
|
|||||||
}
|
}
|
||||||
} else if (silencePressed and not silenceStillPressed){
|
} else if (silencePressed and not silenceStillPressed){
|
||||||
configPage = 3; //change screen to facp settings
|
configPage = 3; //change screen to facp settings
|
||||||
configLCDUpdate(5, (String)mainSettingsFireAlarmSettings[5], (String)mainSettingsFireAlarmSettings[6]+useTwoWire, false, true);
|
configLCDUpdate(5, (String)mainSettingsFireAlarmSettings[5], (String)mainSettingsFireAlarmSettings[0], false, false);
|
||||||
} else if (drillPressed and not drillStillPressed){
|
} else if (drillPressed and not drillStillPressed){
|
||||||
EEPROM.write(29,cursorPosition); //write strobe sync settings
|
EEPROM.write(29,cursorPosition); //write strobe sync settings
|
||||||
EEPROM.commit();
|
EEPROM.commit();
|
||||||
if (cursorPosition == 4){
|
if (cursorPosition == 2){
|
||||||
configLCDUpdate(cursorPosition, (String)mainSettingsFireAlarmSettingsStrobeSync[cursorPosition]+"*", (String)mainSettingsFireAlarmSettingsStrobeSync[0]);
|
configLCDUpdate(cursorPosition, (String)mainSettingsFireAlarmSettingsStrobeSync[cursorPosition]+"*", (String)mainSettingsFireAlarmSettingsStrobeSync[0]);
|
||||||
} else {
|
} else {
|
||||||
configLCDUpdate(cursorPosition, (String)mainSettingsFireAlarmSettingsStrobeSync[cursorPosition]+"*", (String)mainSettingsFireAlarmSettingsStrobeSync[cursorPosition+1]);
|
configLCDUpdate(cursorPosition, (String)mainSettingsFireAlarmSettingsStrobeSync[cursorPosition]+"*", (String)mainSettingsFireAlarmSettingsStrobeSync[cursorPosition+1]);
|
||||||
|
Binary file not shown.
Before Width: | Height: | Size: 582 KiB |
BIN
misc/ascii.jpg
BIN
misc/ascii.jpg
Binary file not shown.
Before Width: | Height: | Size: 533 KiB |
BIN
misc/eol.png
BIN
misc/eol.png
Binary file not shown.
Before Width: | Height: | Size: 21 KiB |
Loading…
x
Reference in New Issue
Block a user