#include <EEPROM.h>
#include <SoftwareSerial.h>
#include <SendOnlySoftwareSerial.h>
SendOnlySoftwareSerial mySerial(3); // RX, TX
SoftwareSerial HMISerial(4, 5); // RX, TX
bool U_R[8][4], U_Mode[8], Slave_Change_Flag[8], Slave_Comm_Status[8];
int Slave_Att_Cnt[8];
long Slave_Att_Timer[8], Start_Time[8];
byte RxBuff[50];
byte pageNo = 1;
bool EndData, StartData, changeVar;
int bufferPtr;
byte RxBuffer[50] = "";
int NameEdit;
int UnitNo=1;
char Unit_S[8][10];
long blinkTime ;
void setup()
{
Serial.begin(9600);
mySerial.begin(9600); // used for RF communication but only used tx of mySerial and used RX of hardware Serial
HMISerial.begin(9600);
FirstTimeCheck(); //check whether system is first time started to fill EEPROM with default
EEPROM_Read(); // Load name for EEPROM
Serial.println(F("Starting Master_1105"));
HMISerial.print("page logo");
HMISerial.write(0xFF);
HMISerial.write(0xFF);
HMISerial.write(0xFF);
delay(2000);
long startTime = millis();
for (int i = 0; i < 8; i++) {
SlaveCheck(i);
startTime = millis();
while (millis() - startTime <= 500)
{
checkSlaveResp();
}
}
for (int i = 0; i < 8; i++) {
Start_Time[i] = millis();
}
}
void FirstTimeCheck(void)
{
if (EEPROM.read(7) != 7) { // eeprom default status
for (int j = 0; j < 8; j++) {
sprintf(Unit_S[j], "Unit-%d", (j + 1));
for (int i = 0; i < 10; i++) {
EEPROM.update(100 + i + (j * 10), Unit_S[j][i]);
}
}
EEPROM.update(7, 7);
}
}
void EEPROM_Read(void)
{
for (int j = 0; j < 8; j++)
{
for (int i = 0; i < 10; i++) {
Unit_S[j][i] = EEPROM.read(100 + i + (j * 10));
}
}
}
void SlaveCheck (byte ADDR)
{
Serial.println("Checking Slave");
byte buff[4];
buff[0] = 2;
buff[1] = ADDR + 48;
buff[2] = 0X00;
buff[3] = 3;
//Serial.println(F("Checking Slave"));
mySerial.write(buff[0]);
mySerial.write(buff[1]);
mySerial.write(buff[2]);
mySerial.write(buff[3]);
Serial.println("Sending");
Serial.println(buff[0], BIN);
Serial.println(buff[1], BIN);
Serial.println(buff[2], BIN);
Serial.println(buff[3], BIN);
Slave_Comm_Status[ADDR] = 0;
delay(100);
}
void checkSlaveResp (void)
{
if (Serial.available() > 0)
{
readSerial();
}
}
void readSerial (void)
{
Serial.println(F("getting Data"));
for (int i = 0; i < 50; i++)
{
RxBuff[i] = 0;
}
while (Serial.available() > 0)
{
Serial.println(F("checking Data"));
byte dataByte = Serial.read();
Serial.println(dataByte, BIN);
if (dataByte == 2) {
Serial.println(F("In # loop"));
bufferPtr = 0;
for (int i = 0; i < 50; i++)
{
RxBuffer[i] = 0;
}
EndData = 0;
StartData = 1;
}
else if (dataByte == 3 && StartData == 1) {
Serial.println(F("In * loop"));
EndData = 1;
StartData = 0;
RxBuffer[bufferPtr] = '\0';
Serial.print("Byte1=");
Serial.println(RxBuffer[0], BIN);
Serial.print("Byte2=");
Serial.println(RxBuffer[1], BIN);
Serial.print("Byte3=");
Serial.println((RxBuffer[2]), BIN);
Serial.println(RxBuffer[3]);
break;
}
else if (StartData == 1) {
Serial.print("dataByte=");
Serial.println(dataByte, HEX);
RxBuffer[bufferPtr] = dataByte;
bufferPtr++;
}
}
if (EndData == 1)
{
EndData = 0;
Serial.print("ReceivedData=");
Serial.println(RxBuffer[0],BIN);
Serial.println(RxBuffer[1],BIN);
Serial.println(RxBuffer[2],BIN);
Serial.println(RxBuffer[3],BIN);
Serial.println(RxBuffer[4],BIN);
decodeBuffer();
bufferPtr = 0;
}
else
{
Serial.println(F("Intrupted"));
}
}
void decodeBuffer() {
char buff[10];
int SlaveAddr = RxBuffer[0] - 48;
bool SlaveMode = RxBuffer[1] >> 7 & 1;
bool Rel4_St = RxBuffer[1] >> 6 & 1;
bool Rel3_St = RxBuffer[1] >> 5 & 1;
bool Rel2_St = RxBuffer[1] >> 4 & 1;
bool Rel1_St = RxBuffer[1] >> 3 & 1;
U_Mode[SlaveAddr] = SlaveMode;
U_R[SlaveAddr][0] = Rel1_St;
U_R[SlaveAddr][1] = Rel2_St;
U_R[SlaveAddr][2] = Rel3_St;
U_R[SlaveAddr][3] = Rel4_St;
Serial.print("SlaveAddr=");
Serial.print(SlaveAddr);
Serial.print("\tSlaveMode=");
Serial.print(U_Mode[SlaveAddr]);
Serial.print("\tRel4_St=");
Serial.print(U_R[SlaveAddr][3]);
Serial.print("\tRel3_St=");
Serial.print(U_R[SlaveAddr][2]);
Serial.print("\tRel2_St=");
Serial.print(U_R[SlaveAddr][1]);
Serial.print("\tRel1_St=");
Serial.println(U_R[SlaveAddr][0]);
Start_Time[SlaveAddr] = millis();
Slave_Comm_Status[SlaveAddr] = 1;
Slave_Att_Cnt[SlaveAddr] = 0;
Serial.print(F("\tSlave communicated ="));
Serial.print(SlaveAddr);
changeVar = 1;
}
void NameUpdate()
{
char txt[25];
for (int j = 0; j < 8; j++) {
sprintf(txt, "t%d.txt=\"%s\"", j, Unit_S[j]);
//Serial.print(F("txt="));
Serial.println(txt);
HMISerial.print(txt);
HMISerial.write(0xFF);
HMISerial.write(0xFF);
HMISerial.write(0xFF);
delay(10);
}
}
void Name1Update()
{
char txt[25];
//for (int j = 0; j < 4; j++) {
sprintf(txt, "t%d.txt=\"%s\"", (pageNo-2), Unit_S[pageNo-2]);
Serial.print(F("txt="));
Serial.println(txt);
HMISerial.print(txt);
HMISerial.write(0xFF);
HMISerial.write(0xFF);
HMISerial.write(0xFF);
delay(10);
//}
}
void Name2Update()
{
char txt[25];
for (int j = 4; j < 8; j++) {
sprintf(txt, "t%d.txt=\"%s\"", (j - 4), Unit_S[j]);
Serial.print(F("txt="));
Serial.println(txt);
HMISerial.print(txt);
HMISerial.write(0xFF);
HMISerial.write(0xFF);
HMISerial.write(0xFF);
delay(10);
}
}
void set_Led(void)
{
if ( changeVar == 1) {
changeVar = 0;
/* Serial.print(F("Slave 1 comm status="));
Serial.print(Slave_Comm_Status[1]);
Serial.print(F("\t\t Slave_Att_Cnt="));
Serial.println(Slave_Att_Cnt[1]);
Serial.print(F("Slave 3 comm status="));
Serial.print(Slave_Comm_Status[3]);
Serial.print(F("\t\t Slave3_U_Mode="));
Serial.println(U_Mode[3]);*/
if (pageNo == 1) {
NameUpdate();
char txt[15] = {""};
for (int j = 0; j < 8; j++) {
for (int i = 0; i < 4; i++) {
if (Slave_Comm_Status[j] == 0 && Slave_Att_Cnt[j] >= 3) {
sprintf(txt, "p%d.pic=24",((j*4)+i+2));
// txt[1] = i + 48 + 2;
HMISerial.print(txt);
//Serial.println(txt);
}
else if (U_R[j][i]) {
sprintf(txt, "p%d.pic=23",((j*4)+i+2));
// txt[1] = i + 48 + 2;
HMISerial.print(txt);
// Serial.println(txt);
}
else {
sprintf(txt, "p%d.pic=25",((j*4)+i+2));
// txt[1] = i + 48 + 2;
HMISerial.print(txt);
// Serial.println(txt);
}
HMISerial.write(0xFF);
HMISerial.write(0xFF);
HMISerial.write(0xFF);
}
}
for (int i = 0; i < 8; i++) {
if (U_Mode[i] && Slave_Comm_Status[i]) {
char txt[15] = {""};
sprintf(txt, "p%d.pic=8",(i+34));
HMISerial.print(txt);
// Serial.println(txt);
}
else if (U_Mode[i] == 0 && Slave_Comm_Status[i]) {
char txt[15] = {""};
sprintf(txt, "p%d.pic=9",(i+34));
HMISerial.print(txt);
// Serial.println(txt);
}
else if (Slave_Comm_Status[i] == 0 && Slave_Att_Cnt[i] >= 3) {
// Serial.print(F("Cant receive for "));
// Serial.println(i);
char txt[15] = {""};
sprintf(txt, "p%d.pic=16",(i+34));
HMISerial.print(txt);
// Serial.println(txt);
}
HMISerial.write(0xFF);
HMISerial.write(0xFF);
HMISerial.write(0xFF);
}
//Serial.println("Modigying");
}
else if (pageNo == 2) {
//Name1Update();
//Serial.println("Modifying");
char txt[15] = {""};
//sprintf(txt, "t0.txt=UNIT-%d",UnitNo);
sprintf(txt, "t0.txt=\"%s\"",Unit_S[UnitNo-1]);
HMISerial.print(txt);
HMISerial.write(0xFF);
HMISerial.write(0xFF);
HMISerial.write(0xFF);
/* if(UnitNo==1){
sprintf(txt, "t5.txt=\"Master Control\"");
}
else
{
sprintf(txt, "t5.txt=\"Previous Page\"");
}*/
HMISerial.print(txt);
HMISerial.write(0xFF);
HMISerial.write(0xFF);
HMISerial.write(0xFF);
if(UnitNo==8){
sprintf(txt, "p10.pic=26");
HMISerial.print(txt);
HMISerial.write(0xFF);
HMISerial.write(0xFF);
HMISerial.write(0xFF);
}
else{
sprintf(txt, "p10.pic=12");
HMISerial.print(txt);
HMISerial.write(0xFF);
HMISerial.write(0xFF);
HMISerial.write(0xFF);
}
bool Green=1,red=1;
// Serial.println(txt);
for (int i = 0; i < 4; i++) {
if (Slave_Comm_Status[UnitNo-1] == 0 && Slave_Att_Cnt[UnitNo-1] >= 3) {
sprintf(txt, "p%d.pic=18",i+1);
// txt[1] = i + 48 + 1;
HMISerial.print(txt);
HMISerial.write(0xFF);
HMISerial.write(0xFF);
HMISerial.write(0xFF);
}
else if (U_R[UnitNo-1][i]) {
sprintf(txt, "p%d.pic=4",i+1);
red=0;
// txt[1] = i + 48 + 1;
HMISerial.print(txt);
HMISerial.write(0xFF);
HMISerial.write(0xFF);
HMISerial.write(0xFF);
// Serial.println(txt);
}
else {
sprintf(txt, "p%d.pic=3",i+1);
// txt[1] = i + 48 + 1;
HMISerial.print(txt);
HMISerial.write(0xFF);
HMISerial.write(0xFF);
HMISerial.write(0xFF);
// Serial.println(txt);
Green=0;
}
/* for (int i = 0; i < 4; i++) {
if (Slave_Comm_Status[i] == 0 && Slave_Att_Cnt[i] >= 3) {
sprintf(txt, "p1.pic=18");
txt[1] = i + 48 + 1;
HMISerial.print(txt);
}
else if (U_R[i]) {
sprintf(txt, "p1.pic=4");
txt[1] = i + 48 + 1;
HMISerial.print(txt);
// Serial.println(txt);
}
else {
sprintf(txt, "p1.pic=3");
txt[1] = i + 48 + 1;
HMISerial.print(txt);
// Serial.println(txt);
}
HMISerial.write(0xFF);
HMISerial.write(0xFF);
HMISerial.write(0xFF);
*/
Serial.print("UnitNo");
Serial.println(UnitNo);
Serial.print("U_Mode[UnitNo-1]");
Serial.println(U_Mode[UnitNo-1]);
Serial.print("Slave_Comm_Status[UnitNo-1]");
Serial.println(Slave_Comm_Status[UnitNo-1]);
}
if (U_Mode[UnitNo-1] && Slave_Comm_Status[UnitNo-1]) {
sprintf(txt, "p5.pic=1");
// txt[1] = i + 48 + 5;
HMISerial.print(txt);
// HMISerial.print("p5.pic=1");
}
else if (U_Mode[UnitNo-1] == 0 && Slave_Comm_Status[UnitNo-1]) {
sprintf(txt, "p5.pic=2");
// txt[1] = i + 48 + 5;
HMISerial.print(txt);
//HMISerial.print("p5.pic=2");
}
else if (Slave_Comm_Status[UnitNo-1] == 0 && Slave_Att_Cnt[UnitNo-1] >= 3) {
sprintf(txt, "p5.pic=17");
// txt[1] = i + 48 + 5;
HMISerial.print(txt);
// HMISerial.print("p5.pic=17");
}
HMISerial.write(0xFF);
HMISerial.write(0xFF);
HMISerial.write(0xFF);
if(Green==1)
{
sprintf(txt, "p11.pic=7");
HMISerial.print(txt);
HMISerial.write(0xFF);
HMISerial.write(0xFF);
HMISerial.write(0xFF);
}
else if( red ==1)
{
sprintf(txt, "p11.pic=6");
HMISerial.print(txt);
HMISerial.write(0xFF);
HMISerial.write(0xFF);
HMISerial.write(0xFF);
}
}
else if (pageNo == 3)
{
Name2Update();
char txt[15] = {""};
for (int i = 4; i < 8; i++)
{
if (Slave_Comm_Status[i] == 0 && Slave_Att_Cnt[i] >= 3) {
sprintf(txt, "p1.pic=18");
txt[1] = i + 48 - 3;
HMISerial.print(txt);
}
else if (U_R[i]) {
sprintf(txt, "p1.pic=4");
txt[1] = i + 48 - 3;
HMISerial.print(txt);
// Serial.println(txt);
}
else {
sprintf(txt, "p1.pic=3");
txt[1] = i + 48 - 3;
HMISerial.print(txt);
// Serial.println(txt);
}
HMISerial.write(0xFF);
HMISerial.write(0xFF);
HMISerial.write(0xFF);
}
for (int i = 4; i < 8; i++) {
if (Slave_Comm_Status[i] == 0 && Slave_Att_Cnt[i] >= 3) {
sprintf(txt, "p1.pic=18");
txt[1] = i + 48 - 3;
HMISerial.print(txt);
}
else if (U_R[i]) {
sprintf(txt, "p1.pic=4");
txt[1] = i + 48 - 3;
HMISerial.print(txt);
// Serial.println(txt);
}
else {
sprintf(txt, "p1.pic=3");
txt[1] = i + 48 - 3;
HMISerial.print(txt);
// Serial.println(txt);
}
HMISerial.write(0xFF);
HMISerial.write(0xFF);
HMISerial.write(0xFF);
if (U_Mode[i] && Slave_Comm_Status[i]) {
sprintf(txt, "p5.pic=1");
txt[1] = i + 48 + 1;
HMISerial.print(txt);
// HMISerial.print("p5.pic=1");
}
else if (U_Mode[i] == 0 && Slave_Comm_Status[i]) {
sprintf(txt, "p5.pic=2");
txt[1] = i + 48 + 1;
HMISerial.print(txt);
//HMISerial.print("p5.pic=2");
}
else if (Slave_Comm_Status[i] == 0 && Slave_Att_Cnt[i] >= 3) {
sprintf(txt, "p5.pic=17");
txt[1] = i + 48 + 1;
HMISerial.print(txt);
// HMISerial.print("p5.pic=17");
}
HMISerial.write(0xFF);
HMISerial.write(0xFF);
HMISerial.write(0xFF);
}
}
else if (pageNo == 4)
{
char txt[25];
for (int j = 0; j < 8; j++) {
sprintf(txt, "t%d.txt=\"%s\"", (j + 10), Unit_S[j]);
Serial.print(F("TXT="));
Serial.println(txt);
HMISerial.print(txt);
HMISerial.write(0xFF);
HMISerial.write(0xFF);
HMISerial.write(0xFF);
}
}
else if (pageNo == 5)
{
Serial.println(F("Page No =5"));
}
}
}
void scanSwitch(void)
{
//HMISerial.listen();
if (HMISerial.available())
{
int ptr = 0, RxData = 0;
char ac;
char t;
// Serial.println(F("HMI data="));
while (HMISerial.available())
{
t = HMISerial.read();
Serial.print("HMI data=");
Serial.println(t, BIN);
if (t == '*' || t == '^') {
ac = t;
break;
}
RxData *= 10;
RxData += t - 48;
delay(2);
changeVar = 1;
}
Serial.println(RxData);
// HMISerial.listen();
if (RxData > 9 && RxData < 90) {
Serial.print("Sw Loop=");
Serial.println(RxData);
int SwNo = (RxData / 10) - 1;
int relStat = RxData % 10;
Serial.print("UnitNo=");
Serial.println(UnitNo);
Serial.print("SwNo=");
Serial.println(SwNo);
Serial.print("relStat=");
Serial.println(relStat);
Slave_Change_Flag[UnitNo-1] = 1;
U_R[UnitNo-1][SwNo] = relStat;
}
else if (RxData > 2000 && RxData < 2009) {
Serial.println("Name Loop=");
NameEdit = RxData - 2001;
HMISerial.print("page Setting");
HMISerial.write(0xFF);
HMISerial.write(0xFF);
HMISerial.write(0xFF);
delay(10);
char txt[25];
sprintf(txt, "t0.txt=\"%s\"", Unit_S[NameEdit]);
HMISerial.print(txt);
HMISerial.write(0xFF);
HMISerial.write(0xFF);
HMISerial.write(0xFF);
pageNo = 5;
changeVar = 1;
}
else if(RxData > 1009 && RxData < 1019)
{
pageNo = 2;
UnitNo = RxData-1009;
changeVar = 1;
HMISerial.print("page page2");
Serial.println("Saving and exiting");
HMISerial.write(0xFF);
HMISerial.write(0xFF);
HMISerial.write(0xFF);
}
else if (t == '*')
{
Serial.println("Name Rx=");
char Name[10] = "";
int cnt = 0;
char t;
while (HMISerial.available())
{
t = HMISerial.read();
if (t == '!') {
break;
}
Name[cnt] = t;
cnt++;
}
Name[cnt] = '\0';
sprintf(Unit_S[NameEdit], "%s", Name);
for (int i = 0; i < 10; i++) {
EEPROM.update(100 + i + (NameEdit * 10) , Unit_S[NameEdit][i]);
}
}
else if(t== '^')
{
Serial.println("Closing Name tab");
}
else
{
Serial.print("Page Loop=");
Serial.println(RxData);
switch (RxData) {
case 1000:
if(UnitNo==1)
{
pageNo = 1;
}
else
{
pageNo = 2;
UnitNo--;
}
pageNo=1;
UnitNo=1;
changeVar = 1;
if(pageNo==1){
HMISerial.print("page page1");
}
//else{
// HMISerial.print("page page2");
// }
HMISerial.write(0xFF);
HMISerial.write(0xFF);
HMISerial.write(0xFF);
break;
case 1001:
pageNo = 2;
changeVar = 1;
HMISerial.print("page page2");
HMISerial.write(0xFF);
HMISerial.write(0xFF);
HMISerial.write(0xFF);
break;
case 1002:
pageNo = 2;
UnitNo++;
if(UnitNo>8){
UnitNo=8;
HMISerial.print("p10.pic=26");
HMISerial.write(0xFF);
HMISerial.write(0xFF);
HMISerial.write(0xFF);
}
else{
HMISerial.print("p10.pic=12");
HMISerial.write(0xFF);
HMISerial.write(0xFF);
HMISerial.write(0xFF);
}
changeVar = 1;
/*HMISerial.print("page page2");
HMISerial.write(0xFF);
HMISerial.write(0xFF);
HMISerial.write(0xFF);*/
break;
case 1003:
pageNo = 4;
changeVar = 1;
HMISerial.print("page Name");
HMISerial.write(0xFF);
HMISerial.write(0xFF);
HMISerial.write(0xFF);
HMISerial.print("line 155,2,155,480,WHITE");
HMISerial.write(0xFF);
HMISerial.write(0xFF);
HMISerial.write(0xFF);
HMISerial.print("line 375,2,375,480,WHITE");
HMISerial.write(0xFF);
HMISerial.write(0xFF);
HMISerial.write(0xFF);
HMISerial.print("line 585,2,585,480,WHITE");
HMISerial.write(0xFF);
HMISerial.write(0xFF);
HMISerial.write(0xFF);
HMISerial.print("line 155,40,585,40,WHITE");
HMISerial.write(0xFF);
HMISerial.write(0xFF);
HMISerial.write(0xFF);
HMISerial.print("line 155,90,585,90,WHITE");
HMISerial.write(0xFF);
HMISerial.write(0xFF);
HMISerial.write(0xFF);
HMISerial.print("line 155,145,585,145,WHITE");
HMISerial.write(0xFF);
HMISerial.write(0xFF);
HMISerial.write(0xFF);
HMISerial.print("line 155,200,585,200,WHITE");
HMISerial.write(0xFF);
HMISerial.write(0xFF);
HMISerial.write(0xFF);
HMISerial.print("line 155,255,585,255,WHITE");
HMISerial.write(0xFF);
HMISerial.write(0xFF);
HMISerial.write(0xFF);
HMISerial.print("line 155,310,585,310,WHITE");
HMISerial.write(0xFF);
HMISerial.write(0xFF);
HMISerial.write(0xFF);
HMISerial.print("line 155,365,585,365,WHITE");
HMISerial.write(0xFF);
HMISerial.write(0xFF);
HMISerial.write(0xFF);
HMISerial.print("line 155,420,585,420,WHITE");
HMISerial.write(0xFF);
HMISerial.write(0xFF);
HMISerial.write(0xFF);
HMISerial.print("line 155,475,585,475,WHITE");
HMISerial.write(0xFF);
HMISerial.write(0xFF);
HMISerial.write(0xFF);
break;
case 1004:
pageNo = 5;
changeVar = 1;
HMISerial.print("page Setting");
HMISerial.write(0xFF);
HMISerial.write(0xFF);
HMISerial.write(0xFF);
break;
case 1007:
pageNo = 1;
changeVar = 1;
HMISerial.print("page page1");
Serial.println("Saving and exiting");
HMISerial.write(0xFF);
HMISerial.write(0xFF);
HMISerial.write(0xFF);
break;
case 98:
if(pageNo==1){
for (int j = 0; j < 8; j++) {
for (int i = 0; i < 4; i++) {
Slave_Change_Flag[j] = 1;
U_R[j][i] = 0;
}
}
}
else if(pageNo==2)
{
for (int i = 0; i < 4; i++) {
Slave_Change_Flag[UnitNo-1] = 1;
U_R[UnitNo-1][i] = 0;
}
}
break;
case 99:
if(pageNo==1){
for (int j = 0; j < 8; j++) {
for (int i = 0; i < 4; i++) {
Slave_Change_Flag[j] = 1;
U_R[j][i] = 1;
}
}
}
else if(pageNo==2)
{
for (int i = 0; i < 4; i++) {
Slave_Change_Flag[UnitNo-1] = 1;
U_R[UnitNo-1][i] = 1;
}
}
break;
}
}
Serial.print("Page No=");
Serial.println(pageNo);
//Serial.println(F("Lets try it out");
//delay(2000);
}
}
void slaverfUpdate (int i)
{
byte buff[8];
buff[0] = 2;
buff[1] = i + 48;
buff[2] = 0X0F << 4 | U_R[i][3] | U_R[i][2] << 1| U_R[i][1] << 2| U_R[i][0]<< 3 ;
buff[3] = 3;
//buff[4]='\0';
Serial.println(F("Sending Data1="));
//Serial.println(buff);
Serial.print("\t 1=");
Serial.print(buff[1], BIN);
Serial.print("\t 2=");
Serial.println(buff[2], BIN);
byte test = buff[2];
Serial.print("Test=");
Serial.println(test, BIN);
//for(int i=0;i<3;i++){
for (int a = 0; a < 4; a++) {
mySerial.write(buff[a]);
}
delay(50);
//}
delay(150);
}
void loop()
{
// put your main code here, to run repeatedly:
scanSwitch();
set_Led();
for (int i = 0; i < 8; i++) {
if (Slave_Change_Flag[i]) {
Serial.print("Slave Change Flag=");
Serial.println(i);
slaverfUpdate(i);
Slave_Change_Flag[i] = 0;
Slave_Comm_Status[i] = 0;
Slave_Att_Cnt[i] = 0;
Slave_Att_Timer[i] = millis();
changeVar = 1;
}
}
checkSlaveResp();
for (int i = 0; i < 8; i++) {
if ( Slave_Comm_Status[i] == 0 && Slave_Att_Cnt[i] < 3 && ( (Slave_Att_Timer[i] > millis()) || (millis() - Slave_Att_Timer[i]) > 3000 )) {
Slave_Att_Timer[i] = millis();
slaverfUpdate(i);
Slave_Att_Cnt[i]++;
if (Slave_Att_Cnt[i] >= 3)
{
changeVar = 1;
}
}
}
for (int i = 0; i < 8; i++) {
if ((millis() - Start_Time[i]) >= 300000 || Start_Time[i] > millis()) {
SlaveCheck(i);
Start_Time[i] = millis();
// Serial.print(F("Checking Slave Status "));
// Serial.println(i);
}
}
}