a.binder il y a 5 ans
Parent
commit
735da98745

+ 36 - 0
SE/stuff/P5_Automation_can-dev/LCD1602.h

@@ -301,6 +301,42 @@ void updateQty(int id, int new_qty, Record* records) {
 
 
 
 
 }           
 }           
+
+
+
+
+void LCD_print1(String LCDarray1, int LCDtim) {
+
+      delay(LCDtim);   
+      unsigned char LCDarray1buf[16];
+      LCDarray1.toCharArray(LCDarray1buf, 16);
+ 
+     
+
+                                        lcd.setCursor(16,1); 
+ 
+                                         for ( int positionCounter1 = 0;
+                                        positionCounter1 <= 24 ;//LCDarray1.length(); // 24;
+                                        positionCounter1++)
+                                            {
+                                              lcd.scrollDisplayLeft();  //Scrolls the contents of the display one space to the left.
+                                              if(positionCounter1 >= LCDarray1.length())  lcd.print(" ");
+                                              else lcd.print(LCDarray1[positionCounter1]);  // Print a message to the LCD.
+                                              delay(LCDtim);  //wait for 250 microseconds
+                                              if(positionCounter1==10) delay(LCDtim *7 ); 
+                                            }
+                                          //  lcd.clear();  //Clears the LCD screen and positions the cursor in the upper-left corner.
+
+
+
+
+                                       
+                                            delay(LCDtim  * 5);  //wait for 250 microseconds
+                                          //  lcd.clear();  //Clears the LCD screen and positions the cursor in the upper-left corner.
+   
+
+}           
+    
                             
                             
 String make_str16(String str){
 String make_str16(String str){
     for(int i = 0; i < (16 - str.length()); i++)
     for(int i = 0; i < (16 - str.length()); i++)

+ 47 - 13
SE/stuff/P5_Automation_can-dev/P5_Automation_can-dev.ino

@@ -78,20 +78,27 @@
 #include "Queue.h"
 #include "Queue.h"
  
  
  Queue<int> _Slave_Ports_queue = Queue<int>(10);
  Queue<int> _Slave_Ports_queue = Queue<int>(10);
-#include "Slave_Ports_Status.h"
-
-
-
+ 
+ 
+ 
 #define  _ControllerID   0x101 
 #define  _ControllerID   0x101 
 #define  _Slave1_ID   0x103 
 #define  _Slave1_ID   0x103 
 
 
 #define Active_ControllerID _ControllerID 
 #define Active_ControllerID _ControllerID 
 //#define Active_ControllerID _Slave1_ID 
 //#define Active_ControllerID _Slave1_ID 
+ 
+#include "Slave_Ports_Status.h"
+    Slave_Ports_Status  Slave_Ports_Status_C;
+    
+#include "_Slave_Ports_queue_task_type_LIST.h"
+#include "_Slave_Ports_Protocol.h"
+
+
 
 
 
 
  #if Active_ControllerID == _ControllerID 
  #if Active_ControllerID == _ControllerID 
     String lcdPattern = "s" ;
     String lcdPattern = "s" ;
-    #define HAS_LCD1602 
+   // #define HAS_LCD1602 
    //  #define HAS_TFT_ILI9163C 
    //  #define HAS_TFT_ILI9163C 
    #define HAS_ROTTARY_SW
    #define HAS_ROTTARY_SW
  #endif
  #endif
@@ -110,6 +117,7 @@
   const int LCD1602rs=12, LCD1602en=11, LCD1602db4=5, LCD1602db5=4, LCD1602db6=3, LCD1602db7=2; // lcd keypad shield pins
   const int LCD1602rs=12, LCD1602en=11, LCD1602db4=5, LCD1602db5=4, LCD1602db6=3, LCD1602db7=2; // lcd keypad shield pins
   LiquidCrystal lcd(LCD1602rs, LCD1602en, LCD1602db4, LCD1602db5, LCD1602db6, LCD1602db7);
   LiquidCrystal lcd(LCD1602rs, LCD1602en, LCD1602db4, LCD1602db5, LCD1602db6, LCD1602db7);
   int lcdPos = 0 ;
   int lcdPos = 0 ;
+  
   #include "LCD1602.h"
   #include "LCD1602.h"
 #endif
 #endif
 
 
@@ -183,13 +191,36 @@ void setup() {
 
 
  Serial.begin(115200);
  Serial.begin(115200);
  #include "_Slave_Ports_LOCAL_LIST.h"
  #include "_Slave_Ports_LOCAL_LIST.h"
+  #if defined(HAS_LCD1602)
+    lcd.begin(16, 2);
+  #endif
  Slave_Ports_Status_T _add[] = { 1, Active_ControllerID, 0x01, 0x00, 1, 0x01, 0x01, 0x01 };
  Slave_Ports_Status_T _add[] = { 1, Active_ControllerID, 0x01, 0x00, 1, 0x01, 0x01, 0x01 };
  
  
 
 
- Slave_Ports_Status_C.list_ports();
+
+/*Slave_Ports_Status_C.add_port(
+             1, // int  Port_ID,
+            Active_ControllerID,  //  int  _Slave_ID,
+                0x01, //  int  PortTypes,
+                     0x00, //  int  Address,
+                      1, // int  LocalPort,
+                       0x01, //   int  Exp_state,
+                       0x01, // int  Exp_state_ttl,
+                       0x01, //  int  Broadcast_state,
+                       0x01, // int I2C_port,
+                      _NOT_USED_ ); //  int I2C_driver
+*/
+Slave_Ports_Status_C.add_port( 2, Active_ControllerID, 0x01, 0x00, 1, 0x01, 0x01, 0x01, 0x01, _NOT_USED_); // Slave_Ports_Status_C.I2C_driver_F(Adafruit_PWMServoDriver)
+
+Slave_Ports_Status_C.add_port( 3, Active_ControllerID, 0x01, 0x00, 1, 0x01, 0x01, 0x01, 0x01, Adafruit_PWMServoDriver ); // Slave_Ports_Status_C.I2C_driver_F(Adafruit_PWMServoDriver)
+
+//Slave_Ports_Status_C.add_port( 4, _Slave1_ID, 0x01, 0x00, 1, 0x01, 0x01, 0x01, 0x01, Adafruit_PWMServoDriver ); // Slave_Ports_Status_C.I2C_driver_F(Adafruit_PWMServoDriver)
+
+
+
+ //Slave_Ports_Status_C.list_ports();
 
 
 //Slave_Ports_Status_C.add_empty();
 //Slave_Ports_Status_C.add_empty();
- delay(10000);
 //Queue<int> _Slave_Ports_queue = Queue<int>(10);
 //Queue<int> _Slave_Ports_queue = Queue<int>(10);
 //  LiquidCrystal lcd(LCD1602rs, LCD1602en, LCD1602db4, LCD1602db5, LCD1602db6, LCD1602db7);
 //  LiquidCrystal lcd(LCD1602rs, LCD1602en, LCD1602db4, LCD1602db5, LCD1602db6, LCD1602db7);
 
 
@@ -214,6 +245,7 @@ void setup() {
  // LCD_print_background_add( _LCD_print_buffors,            1,           0,           0,              "H",              5000,              6000);
  // LCD_print_background_add( _LCD_print_buffors,            1,           0,           0,              "H",              5000,              6000);
  // LCD_print_background_add( _LCD_print_buffors,            2,           0,           0,              "W",              5000,              6000);
  // LCD_print_background_add( _LCD_print_buffors,            2,           0,           0,              "W",              5000,              6000);
  // LCD_print_background_add( _LCD_print_buffors,            3,           0,           0,              "K",              5000,              6000);
  // LCD_print_background_add( _LCD_print_buffors,            3,           0,           0,              "K",              5000,              6000);
+ Serial.println("#221");
 
 
  
  
 //todo PCINT service
 //todo PCINT service
@@ -224,18 +256,19 @@ void setup() {
 #if defined(HAS_ROTTARY_SW)
 #if defined(HAS_ROTTARY_SW)
  #include "_ROTTARY_SW_setup.h"
  #include "_ROTTARY_SW_setup.h"
 #endif
 #endif
-
+ Serial.println("#231");
+ 
 
 
 
 
  String LCDarray1="CAN_1602_LCD           ";  //the string to print onthe LCD
  String LCDarray1="CAN_1602_LCD           ";  //the string to print onthe LCD
  String LCDarray2="Testing id   ";  //the string to print onthe LCD
  String LCDarray2="Testing id   ";  //the string to print onthe LCD
  LCDarray2.concat(String(Active_ControllerID, HEX) ) ;
  LCDarray2.concat(String(Active_ControllerID, HEX) ) ;
  
  
-
+delay(1000);
   
   
   // put your setup code here, to run once:
   // put your setup code here, to run once:
   #if defined(HAS_LCD1602)
   #if defined(HAS_LCD1602)
-  lcd.begin(16, 2);
+  
      LCD_print(LCDarray1, LCDarray2, LCDtim/5);
      LCD_print(LCDarray1, LCDarray2, LCDtim/5);
   #endif
   #endif
 
 
@@ -315,9 +348,9 @@ void setup() {
 
 
   //EOF CAN
   //EOF CAN
    #if defined(HAS_LCD1602) 
    #if defined(HAS_LCD1602) 
-      LCDarray1 = "loop.... ";
-      LCDarray2 = "....";
-     LCD_print(LCDarray1, LCDarray2, LCDtim/10);
+      LCDarray1 = "#323 loop.... ";
+      //LCDarray2 = "....";
+     LCD_print1(LCDarray1, LCDtim/10);
      
      
     #endif
     #endif
 
 
@@ -401,6 +434,7 @@ void loop() {
  _Slave_Ports_queue_peek,
  _Slave_Ports_queue_peek,
  LCDtim, _Slave_Ports);
  LCDtim, _Slave_Ports);
 
 
+ delay(5000);
   //_LCD_print_buffors_list(_LCD_print_buffors) ;
   //_LCD_print_buffors_list(_LCD_print_buffors) ;
   //_LCD_print_screens_list(_LCD_print_screens);
   //_LCD_print_screens_list(_LCD_print_screens);
 }
 }

+ 131 - 16
SE/stuff/P5_Automation_can-dev/Slave_Ports_Status.cpp

@@ -33,7 +33,8 @@ void Slave_Ports_Status::push() { //
 Slave_Ports_Status::Slave_Ports_Status(){
 Slave_Ports_Status::Slave_Ports_Status(){
     Serial.print("#35 Slave_Ports_Status::Slave_Ports_Status():");
     Serial.print("#35 Slave_Ports_Status::Slave_Ports_Status():");
     _count = 0 ;
     _count = 0 ;
-    //Slave_Ports_Status_T Slave_Ports_Status_A[10];
+    Slave_Ports_Status_T Slave_Ports_Status_A[10];
+    
 }
 }
 
 
 
 
@@ -58,6 +59,46 @@ inline int Slave_Ports_Status::add(Slave_Ports_Status_T item)
 }
 }
 */
 */
 
 
+ bool Slave_Ports_Status::I2C_driver_F(I2C_driver_T  I2C_driver_A) {
+    
+    
+ //    Serial.print("I2C_driver_A: [");
+ //    Serial.print(I2C_driver_A.CNF1);
+ //    Serial.println("] "); 
+     return I2C_driver_A.CNF1 ;
+ }
+ 
+
+  char* Slave_Ports_Status::I2C_driver_FS(int  I2C_driver) {
+  
+   
+    // Serial.print("I2C_driver_FS[");
+     //Serial.print(I2C_driver_F(_NOT_USED_));
+     if(I2C_driver_F(_NOT_USED_) == I2C_driver) {
+       Serial.println("_NOT_USED_");
+                       
+      // I2C_driver_FT =  "_NOT_USED______________";
+       return  "_NOT_USED______________";
+     }
+       else if(I2C_driver_F(Adafruit_PWMServoDriver)==I2C_driver) {
+       Serial.println("Adafruit_PWMServoDriver");
+                       //12345678901234567890134
+     //   I2C_driver_FT = "Adafruit_PWMServoDriver";
+       return  "Adafruit_PWMServoDriver";
+     } else {
+        Serial.print("_UNKNOWN_");
+       //  I2C_driver_FT = "_UNKNOWN_______________";
+        return  "_UNKNOWN_______________";
+     }
+   
+     
+ // sprintf(I2C_driver_FT, "%02d", 1);
+ // return I2C_driver_FT;
+ }
+ 
+
+
+
  void Slave_Ports_Status::add_port(
  void Slave_Ports_Status::add_port(
                 int  Port_ID,
                 int  Port_ID,
                 int  _Slave_ID,
                 int  _Slave_ID,
@@ -66,11 +107,15 @@ inline int Slave_Ports_Status::add(Slave_Ports_Status_T item)
                 int  LocalPort,
                 int  LocalPort,
                 int  Exp_state,
                 int  Exp_state,
                 int  Exp_state_ttl,
                 int  Exp_state_ttl,
-                int  Broadcast_state
+                int  Broadcast_state,
+                int I2C_port,
+                //int I2C_driver
+                I2C_driver_T I2C_driver
                 )
                 )
 {
 {
   
   
   Serial.print("add_port   _count["); Serial.print(_count);
   Serial.print("add_port   _count["); Serial.print(_count);
+   Serial.print("]  _count + 1["); Serial.print(_count + 1);
    Serial.print("] Port_ID["); Serial.print(Port_ID);
    Serial.print("] Port_ID["); Serial.print(Port_ID);
    Serial.print("] _Slave_ID[0x"); Serial.print( _Slave_ID, HEX );
    Serial.print("] _Slave_ID[0x"); Serial.print( _Slave_ID, HEX );
    Serial.print("] PortTypes["); Serial.print(PortTypes, HEX);
    Serial.print("] PortTypes["); Serial.print(PortTypes, HEX);
@@ -79,19 +124,57 @@ inline int Slave_Ports_Status::add(Slave_Ports_Status_T item)
    Serial.print("] Exp_state["); Serial.print(Exp_state, HEX);
    Serial.print("] Exp_state["); Serial.print(Exp_state, HEX);
    Serial.print("] Exp_state_ttl["); Serial.print(Exp_state_ttl, HEX);
    Serial.print("] Exp_state_ttl["); Serial.print(Exp_state_ttl, HEX);
    Serial.print("] Broadcast_state["); Serial.print(Broadcast_state, HEX);
    Serial.print("] Broadcast_state["); Serial.print(Broadcast_state, HEX);
+   Serial.print("] I2C_port["); Serial.print(I2C_port, HEX);
+   Serial.print("] I2C_driver["); Serial.print(I2C_driver_F(I2C_driver));
+   //Serial.print("] I2C_driver_Rev["); 
+      //unsigned char LCDarray1buf[24];
+      //LCDarray1.toCharArray(LCDarray1buf, 24);
+  //  I2C_driver_FT[24]  =   I2C_driver_FS(I2C_driver_F(I2C_driver)) ;
    Serial.println("]"); 
    Serial.println("]"); 
     //Slave_Ports_Status_A[_count + 1].Port_ID = Port_ID ;
     //Slave_Ports_Status_A[_count + 1].Port_ID = Port_ID ;
     
     
+    if(_count == 0) {
     
     
-    this->Slave_Ports_Status_A[_count + 1].Port_ID = Port_ID ;
-    this->Slave_Ports_Status_A[_count + 1]._Slave_ID = _Slave_ID ;
-    this->Slave_Ports_Status_A[_count + 1].PortTypes = PortTypes ;
-    this->Slave_Ports_Status_A[_count + 1].Address = Address ;
-    this->Slave_Ports_Status_A[_count + 1].LocalPort = LocalPort ;
-    this->Slave_Ports_Status_A[_count + 1].Exp_state = Exp_state ;
-    this->Slave_Ports_Status_A[_count + 1].Broadcast_state = Broadcast_state ;
-  
-    this->_count ++;
+     Slave_Ports_Status_A[_count ].Port_ID=0x00;
+     Slave_Ports_Status_A[_count ]._Slave_ID=0x00;
+     Slave_Ports_Status_A[_count ].PortTypes=0x00;
+     Slave_Ports_Status_A[_count ].Address=0x00;
+     Slave_Ports_Status_A[_count ].LocalPort=0x00;
+     Slave_Ports_Status_A[_count ].Exp_state=0x00;
+     Slave_Ports_Status_A[_count ].Exp_state_ttl=0x00;
+     Slave_Ports_Status_A[_count ].Broadcast_state=0x00;
+     Slave_Ports_Status_A[_count ].I2C_port=0x00;
+     Slave_Ports_Status_A[_count ].I2C_driver=0x00;
+     //_count ++;
+     
+     _count ++;
+    /* Slave_Ports_Status::add_port(
+                  Port_ID,
+                  _Slave_ID,
+                  PortTypes,
+                  Address,
+                  LocalPort,
+                  Exp_state,
+                  Exp_state_ttl,
+                  Broadcast_state,
+                 I2C_port,
+                 I2C_driver
+                );
+     */
+    }
+    
+    Slave_Ports_Status_A[_count + 1].Port_ID = Port_ID ;
+    Slave_Ports_Status_A[_count + 1]._Slave_ID = _Slave_ID ;
+    Slave_Ports_Status_A[_count + 1].PortTypes = PortTypes ;
+    Slave_Ports_Status_A[_count + 1].Address = Address ;
+    Slave_Ports_Status_A[_count + 1].LocalPort = LocalPort ;
+    Slave_Ports_Status_A[_count + 1].Exp_state = Exp_state ;
+    Slave_Ports_Status_A[_count + 1].Exp_state_ttl = Exp_state_ttl ;
+    Slave_Ports_Status_A[_count + 1].Broadcast_state = Broadcast_state ;
+    Slave_Ports_Status_A[_count + 1].I2C_port = I2C_port ;
+//    Slave_Ports_Status_A[_count + 1].I2C_driver = I2C_driver ;
+    Slave_Ports_Status_A[_count + 1].I2C_driver = I2C_driver_F(I2C_driver) ;
+    _count ++;
   
   
 }
 }
 
 
@@ -104,21 +187,27 @@ bool Slave_Ports_Status::add_empty()
 
 
 void Slave_Ports_Status::list_ports()
 void Slave_Ports_Status::list_ports()
 {
 {
-  Serial.print("list_ports   _count["); Serial.print(_count); Serial.println("] ");
+  Serial.print("print_ports#154   _count["); Serial.print(_count); Serial.println("] ");
     int i;
     int i;
-    for(i=1;i<=_count;i++) {
+    for(i=2;i<=_count;i++) {
  
  
          Serial.print(" #IND["); Serial.print(i); 
          Serial.print(" #IND["); Serial.print(i); 
          Serial.print("] Port_ID["); Serial.print(Slave_Ports_Status_A[i].Port_ID, HEX);
          Serial.print("] Port_ID["); Serial.print(Slave_Ports_Status_A[i].Port_ID, HEX);
          Serial.print("] _Slave_ID[0x"); Serial.print( Slave_Ports_Status_A[i]._Slave_ID, HEX );
          Serial.print("] _Slave_ID[0x"); Serial.print( Slave_Ports_Status_A[i]._Slave_ID, HEX );
          Serial.print("] PortTypes["); Serial.print(Slave_Ports_Status_A[i].PortTypes, HEX);
          Serial.print("] PortTypes["); Serial.print(Slave_Ports_Status_A[i].PortTypes, HEX);
-         Serial.print("] Address["); Serial.print(Slave_Ports_Status_A[i].Address, HEX);
-         Serial.print("] LocalPort["); Serial.print(Slave_Ports_Status_A[i].LocalPort, HEX);
+      //   Serial.println("] Address [");
+         Serial.print("] Address["); //Serial.print(Slave_Ports_Status_A[i].Address, HEX);
+         Serial.print("] LocalPort["); Serial.print(Slave_Ports_Status_A[i].LocalPort);
          Serial.print("] Exp_state["); Serial.print(Slave_Ports_Status_A[i].Exp_state, HEX);
          Serial.print("] Exp_state["); Serial.print(Slave_Ports_Status_A[i].Exp_state, HEX);
-         Serial.print("] Exp_state_ttl["); Serial.print(Slave_Ports_Status_A[i].Exp_state_ttl, HEX);
+        Serial.print("] Exp_state_ttl["); Serial.print(Slave_Ports_Status_A[i].Exp_state_ttl, HEX);
          Serial.print("] Broadcast_state["); Serial.print(Slave_Ports_Status_A[i].Broadcast_state, HEX);
          Serial.print("] Broadcast_state["); Serial.print(Slave_Ports_Status_A[i].Broadcast_state, HEX);
+         Serial.print("] I2C_port["); Serial.print(Slave_Ports_Status_A[i].I2C_port, HEX);
+         Serial.print("] I2C_driver[");//  Serial.print(Slave_Ports_Status_A[i].I2C_driver, HEX);
+           I2C_driver_FT[24]  = I2C_driver_FS(Slave_Ports_Status_A[i].I2C_driver);
+            Serial.print(I2C_driver_FT[24]);
          Serial.println("]"); 
          Serial.println("]"); 
          
          
+         
    }
    }
    
    
    
    
@@ -126,8 +215,34 @@ void Slave_Ports_Status::list_ports()
 
 
 
 
 
 
+Slave_Ports_Status_S Slave_Ports_Status::get_port(int  Port_ID)
+{
+ // Serial.print("list_ports#154   _count["); Serial.print(_count); Serial.println("] ");
+    //int i;
+    //for(i=2;i<=_count;i++) {
+        return Slave_Ports_Status_A[Port_ID];         
+         
+  // }
+   //return Slave_Ports_Status_A;
+}
+
+
+
+
 Slave_Ports_Status::~Slave_Ports_Status(){
 Slave_Ports_Status::~Slave_Ports_Status(){
      delete[] Slave_Ports_Status_A;
      delete[] Slave_Ports_Status_A;
     //Serial.print("#40 free ~Slave_Ports_Status");
     //Serial.print("#40 free ~Slave_Ports_Status");
 }
 }
 
 
+/*
+int Slave_Ports_Status::get_count()
+    {
+            return _count;         
+    }
+
+*/
+
+/*
+ byte Slave_Ports_Status::_Slave_Ports_Protocol_CAN_broadcast_F() {
+}
+*/

+ 56 - 12
SE/stuff/P5_Automation_can-dev/Slave_Ports_Status.h

@@ -20,6 +20,30 @@
             #endif
             #endif
 
 
 
 
+typedef struct
+{
+  uint8_t CNF1;
+} I2C_driver_T;
+
+
+static I2C_driver_T constexpr _NOT_USED_  = {0x00};
+static I2C_driver_T constexpr Adafruit_PWMServoDriver  = {0x01};
+
+/*
+typedef struct  {
+   char I2C_driver_TA[32];
+} I2C_driver_TS ;
+*/
+//typedef struct I2C_driver_TS I2C_driver_TT;
+
+
+//I2C_driver_TS I2C_driver_AA = { "_NOT_USED_" };
+                                
+//I2C_driver_AA[0] =  "_NOT_USED_" ;
+//I2C_driver_AA[0x01] =  "Adafruit_PWMServoDriver" ; 
+
+
+
  struct Slave_Ports_Status_S {
  struct Slave_Ports_Status_S {
   int  Port_ID ; //global id for device //const char * const _Protocol;
   int  Port_ID ; //global id for device //const char * const _Protocol;
   int  _Slave_ID; //Device which orginated port   //remote id - use FF for broadcast
   int  _Slave_ID; //Device which orginated port   //remote id - use FF for broadcast
@@ -57,16 +81,15 @@
                                     }*/
                                     }*/
   int  Exp_state_ttl;  // 0x00 = odswiezyc
   int  Exp_state_ttl;  // 0x00 = odswiezyc
   int  Broadcast_state; //0x00 - not broadcast; 0x01
   int  Broadcast_state; //0x00 - not broadcast; 0x01
+  int I2C_port ; //0x01 - default port, 0x00 - not I2C connected
+  int I2C_driver; //0x00 - not driver, 0x01 Adafruit_PWMServoDriver.h
+ // int IS_Local; // Define if port is local or remote added
+  
 } ;
 } ;
 
 
 typedef struct Slave_Ports_Status_S Slave_Ports_Status_T;
 typedef struct Slave_Ports_Status_S Slave_Ports_Status_T;
 
 
-struct Slave_Ports_Status_LIST_S {
-       Slave_Ports_Status_T;
-};
-typedef struct Slave_Ports_Status_LIST_S Slave_Ports_Status_LIST_T;
-
-
+/*
 enum class Mode : uint8_t
 enum class Mode : uint8_t
 {
 {
   Normal     = 0x00,
   Normal     = 0x00,
@@ -77,21 +100,30 @@ enum class Mode : uint8_t
 };
 };
 
 
 
 
+*/
+
+
+  //char I2C_driver_FT[32] ;
+ static char I2C_driver_FT[24];
+
+
 
 
 class Slave_Ports_Status
 class Slave_Ports_Status
 {
 {
 
 
 
 
 private:
 private:
-    int _count;
-    Slave_Ports_Status *_data;
-    Slave_Ports_Status_LIST_T *Slave_Ports_Status_LIST_A;
-   
+    
+  
+  
+    
 //public:
 //public:
   //  static Slave_Ports_Status *first;
   //  static Slave_Ports_Status *first;
     //static Slave_Ports_Status *_data;
     //static Slave_Ports_Status *_data;
 public:
 public:
-         Slave_Ports_Status_T *Slave_Ports_Status_A;
+        Slave_Ports_Status_T *Slave_Ports_Status_A;
+        int _count;
+       
         //  void push(Slave_Ports_Status_S const &item);
         //  void push(Slave_Ports_Status_S const &item);
           //void push();
           //void push();
           //Slave_Ports_Status();
           //Slave_Ports_Status();
@@ -113,10 +145,22 @@ public:
                 int  LocalPort,
                 int  LocalPort,
                 int  Exp_state,
                 int  Exp_state,
                 int  Exp_state_ttl,
                 int  Exp_state_ttl,
-                int  Broadcast_state
+                int  Broadcast_state,
+                int I2C_port,
+                //int I2C_driver
+                I2C_driver_T I2C_driver
                 );
                 );
           bool add_empty();
           bool add_empty();
+          void print_ports();
           void list_ports();
           void list_ports();
+          Slave_Ports_Status_S get_port(int Port_ID);
+        //  int get_count();
+           
+            bool I2C_driver_F(I2C_driver_T  I2C_driver_A);
+           char* I2C_driver_FS(int  I2C_driver) ;
+           
+           // byte _Slave_Ports_Protocol_CAN_broadcast_F();
+           
           ~Slave_Ports_Status();
           ~Slave_Ports_Status();
 };
 };
 
 

+ 1 - 1
SE/stuff/P5_Automation_can-dev/_SlaveID_loop1.h

@@ -77,6 +77,6 @@ if(!digitalRead(CAN_INTpin))                    // If pin 2 is low, read receive
           #if defined(HAS_TFT_ILI9163C)
           #if defined(HAS_TFT_ILI9163C)
             delay(LCDtim);  
             delay(LCDtim);  
             display.setCursor(0,60); 
             display.setCursor(0,60); 
-            display.print("loop....");
+            display.print("#80 loop....");
           #endif
           #endif
           
           

+ 102 - 103
SE/stuff/P5_Automation_can-dev/_Slave_Ports.h

@@ -1,4 +1,4 @@
-#include "_Slave_Ports_ttl_decrement.h"
+//#include "_Slave_Ports_ttl_decrement.h"
 
 
 
 
 
 
@@ -39,7 +39,7 @@ typedef struct  {
                                       bit 8 - not allocated
                                       bit 8 - not allocated
                                     }*/
                                     }*/
   int Exp_state_ttl;  // 0x00 = odswiezyc
   int Exp_state_ttl;  // 0x00 = odswiezyc
-  //int Broadcast_state; //0x00 - not broadcast; 0x01
+  int Broadcast_state; //0x00 - not broadcast; 0x01
 } _Slave_Port;
 } _Slave_Port;
 
 
 
 
@@ -53,7 +53,6 @@ _Slave_Port _Slave_Ports[] = {
 };
 };
 */
 */
 #include "_Slave_Ports_LOCAL.h"
 #include "_Slave_Ports_LOCAL.h"
-#include "_Slave_Ports_queue_task_type_LIST.h"
 
 
 
 
  struct _Slave_Ports_queue_tasksS {
  struct _Slave_Ports_queue_tasksS {
@@ -95,7 +94,7 @@ void _Slave_Ports_queue__INIT( _Slave_Ports_queue_tasksT* _Slave_Ports_queue_tas
 }
 }
 
 
 
 
-String _Slave_Ports_queue_task_type_DESC( int _Slave_Ports_queue_task_type ) {//, int* res
+void _Slave_Ports_queue_task_type_DESC( int _Slave_Ports_queue_task_type ) {//, int* res
  /* if(_Slave_Ports_queue_task_type == 0x01) res=0x99; //res="_Slave_Ports_ttl_decrement";
  /* if(_Slave_Ports_queue_task_type == 0x01) res=0x99; //res="_Slave_Ports_ttl_decrement";
   else if(_Slave_Ports_queue_task_type == 0x02) res=0x99; //res="request_confirm_Exp_state";
   else if(_Slave_Ports_queue_task_type == 0x02) res=0x99; //res="request_confirm_Exp_state";
   else if(_Slave_Ports_queue_task_type == 0x03) res=0x99; //res="request_set_new_Exp_state";
   else if(_Slave_Ports_queue_task_type == 0x03) res=0x99; //res="request_set_new_Exp_state";
@@ -115,7 +114,7 @@ String _Slave_Ports_queue_task_type_DESC( int _Slave_Ports_queue_task_type ) {//
 //  return return_i ;
 //  return return_i ;
 */
 */
  //Serial.print(_Slave_Ports_queue_task_type[_Slave_Ports_queue_task_type]); 
  //Serial.print(_Slave_Ports_queue_task_type[_Slave_Ports_queue_task_type]); 
-  return _Slave_Ports_queue_task_type_LIST[_Slave_Ports_queue_task_type]; 
+  Serial.print(_Slave_Ports_queue_task_type_LIST[_Slave_Ports_queue_task_type]); 
  //  String ret = "aaaaxxx";
  //  String ret = "aaaaxxx";
    //return ret;
    //return ret;
 }
 }
@@ -145,7 +144,7 @@ void _Slave_Ports_queue__list( _Slave_Ports_queue_tasksT* _Slave_Ports_queue_tas
                  //Slave_Ports_queue_task_type_DESC(_Slave_Ports_queue_tasks_LIST[i]._Slave_Ports_queue_task_type);
                  //Slave_Ports_queue_task_type_DESC(_Slave_Ports_queue_tasks_LIST[i]._Slave_Ports_queue_task_type);
                  //char res;
                  //char res;
                  // res = _Slave_Ports_queue_task_type_DESC(_Slave_Ports_queue_tasks_LIST[i]._Slave_Ports_queue_task_type);  Serial.print(res);
                  // res = _Slave_Ports_queue_task_type_DESC(_Slave_Ports_queue_tasks_LIST[i]._Slave_Ports_queue_task_type);  Serial.print(res);
-                  Serial.print(_Slave_Ports_queue_task_type_DESC(_Slave_Ports_queue_tasks_LIST[i]._Slave_Ports_queue_task_type));
+                  _Slave_Ports_queue_task_type_DESC(_Slave_Ports_queue_tasks_LIST[i]._Slave_Ports_queue_task_type);
                   Serial.print(" - map[");  Serial.print(_Slave_Ports_queue_task_type_LIST[_Slave_Ports_queue_tasks_LIST[i]._Slave_Ports_queue_task_type]);  Serial.print("]"); 
                   Serial.print(" - map[");  Serial.print(_Slave_Ports_queue_task_type_LIST[_Slave_Ports_queue_tasks_LIST[i]._Slave_Ports_queue_task_type]);  Serial.print("]"); 
                // Serial.print(_Slave_Ports_queue_task_type_DESC(_Slave_Ports_queue_tasks_LIST[i]._Slave_Ports_queue_task_type)) ; //(res); //_Slave_Ports_queue_task_type_DESC(_Slave_Ports_queue_tasks_LIST[i]._Slave_Ports_queue_task_type
                // Serial.print(_Slave_Ports_queue_task_type_DESC(_Slave_Ports_queue_tasks_LIST[i]._Slave_Ports_queue_task_type)) ; //(res); //_Slave_Ports_queue_task_type_DESC(_Slave_Ports_queue_tasks_LIST[i]._Slave_Ports_queue_task_type
 
 
@@ -284,8 +283,22 @@ int _Slave_Ports_queue_task_type, int _Slave_Port_link, long time_seq_id, long t
 
 
  void _Slave_Ports_broadcast_POP(_Slave_Ports_queue_tasksT*  _Slave_Ports_queue_tasks_LIST, int _Slave_Ports_queue_pop ,  _Slave_Port*  _Slave_Ports, int LCDtim ) {
  void _Slave_Ports_broadcast_POP(_Slave_Ports_queue_tasksT*  _Slave_Ports_queue_tasks_LIST, int _Slave_Ports_queue_pop ,  _Slave_Port*  _Slave_Ports, int LCDtim ) {
         Serial.println("#251 _Slave_Ports_broadcast_POP");
         Serial.println("#251 _Slave_Ports_broadcast_POP");
-          int i;
-          for(i=0;i<=100;i++) {
+          int i = 0;
+        //  int count = Slave_Ports_Status_C.get_count() ; 
+          //Slave_Ports_Status_S Slave_Ports_Status_A[1] ;
+       /*   for(i=0;i<=10;i++) {
+                       Slave_Ports_Status_S  Slave_Ports_Status_AP =  Slave_Ports_Status_C.get_port(i);
+                       //i++;
+                      // if( Slave_Ports_Status_A[i].Port_ID == 0 ) break;
+                      Serial.print("#293 i["); 
+                        Serial.print(i); Serial.print("] Port_ID[");
+                      Serial.print(Slave_Ports_Status_AP.Port_ID); Serial.print("] PortTypes[");
+                        Serial.print(Slave_Ports_Status_AP.PortTypes); Serial.println("] ");
+                         delay(5000); 
+                      
+          }
+        */
+            /*for(i=0;i<=100;i++) {
             if(_Slave_Ports[i]._Protocol == "CAN") {
             if(_Slave_Ports[i]._Protocol == "CAN") {
               Serial.print(" ind:"); Serial.print(i);  Serial.print("] Prot:");
               Serial.print(" ind:"); Serial.print(i);  Serial.print("] Prot:");
               Serial.print(_Slave_Ports[i]._Protocol);
               Serial.print(_Slave_Ports[i]._Protocol);
@@ -297,35 +310,78 @@ int _Slave_Ports_queue_task_type, int _Slave_Port_link, long time_seq_id, long t
                 Serial.print(" , Exp_state_ttl"); Serial.println(_Slave_Ports[i].Exp_state_ttl);  
                 Serial.print(" , Exp_state_ttl"); Serial.println(_Slave_Ports[i].Exp_state_ttl);  
 
 
 
 
-                        Serial.println(" Prepared data");
+                        Serial.println("#299 Prepared data");
                         #if defined(HAS_LCD1602)                              
                         #if defined(HAS_LCD1602)                              
-                             String LCDarray1 = "P[";
-                             LCDarray1.concat(_Slave_Ports[i]._Protocol); LCDarray1.concat("] ID["); LCDarray1.concat(String(_Slave_Ports[i]._Slave_ID, HEX)); LCDarray1.concat("] T["); LCDarray1.concat(String(_Slave_Ports[i].PortTypes, HEX));
+                            // String LCDarray1 = "P[";
+                            LCD_print1(" Prepared data  P[", LCDtim / 2);
+                             Serial.println("#303");
+                            LCD_print1(_Slave_Ports[i]._Protocol, LCDtim / 2);
+                            Serial.println("#305");
+                          //   LCDarray1.concat(_Slave_Ports[i]._Protocol); LCDarray1.concat("] ID["); LCDarray1.concat(String(_Slave_Ports[i]._Slave_ID, HEX)); LCDarray1.concat("] T["); LCDarray1.concat(String(_Slave_Ports[i].PortTypes, HEX));
                             // lcd.print(LCDarray1);
                             // lcd.print(LCDarray1);
-                            String LCDarray2 = " >"; LCDarray2.concat(String(_Slave_Ports[i].Address, HEX)); LCDarray2.concat( "< {"); LCDarray2.concat( String(_Slave_Ports[i].LocalPort, HEX)); LCDarray2.concat( "} =[" ); LCDarray2.concat(String(_Slave_Ports[i].Exp_state, HEX) ); LCDarray2.concat("] ?[" ) ;
-                                 LCDarray2.concat(String(_Slave_Ports[i].Exp_state_ttl, HEX)) ; LCDarray2.concat("]") ;
-                                 LCD_print(LCDarray1, LCDarray2, LCDtim / 2 ) ;
+                           // String LCDarray2 = " >"; LCDarray2.concat(String(_Slave_Ports[i].Address, HEX)); LCDarray2.concat( "< {"); LCDarray2.concat( String(_Slave_Ports[i].LocalPort, HEX)); LCDarray2.concat( "} =[" ); LCDarray2.concat(String(_Slave_Ports[i].Exp_state, HEX) ); LCDarray2.concat("] ?[" ) ;
+                            //     LCDarray2.concat(String(_Slave_Ports[i].Exp_state_ttl, HEX)) ; LCDarray2.concat("]") ;
+                            //     LCD_print(LCDarray1, LCDarray2, LCDtim / 2 ) ;
                         #endif
                         #endif
                         //                        (0)           (1)           (2)                       (3)                         (4)                         (5)                     (6)                   
                         //                        (0)           (1)           (2)                       (3)                         (4)                         (5)                     (6)                   
-                      byte data[8] = {_Slave_Ports[i].Address,  0x04, _Slave_Ports[i].LocalPort, _Slave_Ports[i].PortTypes, _Slave_Ports[i].LocalPort, _Slave_Ports[i].Exp_state, _Slave_Ports[i].Exp_state_ttl, 0x07};
-                     // byte data[8] = {element.Address,          0x04, element.LocalPort,          element.PortTypes,                element.LocalPort,         element.Exp_state,         element.Exp_state_ttl, 0x07};
-                  Serial.print("#303 byte data[8] 1[");   Serial.print(_Slave_Ports[i].Address);   Serial.print("] 2[");  Serial.print(0x04);   Serial.print("] 3["); 
+                  
+                   
+                 _Slave_Ports_Protocol_CAN_broadcast_T _Slave_Ports_Protocol_CAN_broadcast_A;
+                  // _Slave_Ports_Protocol_CAN_broadcast_A[1]._Slave_ID_BROADCAST = 0xFF;
+                   // _Slave_Ports_Protocol_CAN_broadcast_A[1]._SENDER = Active_ControllerID ;
+                    _Slave_Ports_Protocol_CAN_broadcast_A.Port_ID = i ;
+                     _Slave_Ports_Protocol_CAN_broadcast_A.PortTypes = _Slave_Ports[i].PortTypes ;
+                  
+                     _Slave_Ports_Protocol_CAN_broadcast_A.Exp_state = _Slave_Ports[i].Exp_state ;
+                      _Slave_Ports_Protocol_CAN_broadcast_A.Exp_state_ttl = _Slave_Ports[i].Exp_state_ttl ;
+                     _Slave_Ports_Protocol_CAN_broadcast_A.Broadcast_state = _Slave_Ports[i].Broadcast_state ;
+                     //_Slave_Ports_Protocol_CAN_broadcast_A[1]._CAN_8 = 0x07 ;
+                   
+                /* byte data[8]  = { _Slave_Ports_Protocol_CAN_broadcast_A._Slave_ID_BROADCAST,
+                    _Slave_Ports_Protocol_CAN_broadcast_A._SENDER,
+                    _Slave_Ports_Protocol_CAN_broadcast_A.Port_ID,
+                    _Slave_Ports_Protocol_CAN_broadcast_A.PortTypes,
+                   _Slave_Ports_Protocol_CAN_broadcast_A.Exp_state,
+                   _Slave_Ports_Protocol_CAN_broadcast_A.Exp_state_ttl,
+                   _Slave_Ports_Protocol_CAN_broadcast_A.Broadcast_state,
+                   _Slave_Ports_Protocol_CAN_broadcast_A._CAN_8
+                    } ;
+                     //_Slave_Ports_Protocol_CAN_broadcast_AS _Slave_Ports_Protocol_CAN_broadcast_B[8]; 
+                     //byte  _Slave_Ports_Protocol_CAN_broadcast_B[8] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07};
+                     byte  _Slave_Ports_Protocol_CAN_broadcast_B[8] ;
+                     _Slave_Ports_Protocol_CAN_broadcast_AF(_Slave_Ports_Protocol_CAN_broadcast_A, _Slave_Ports_Protocol_CAN_broadcast_B);
+                     //byte data[8] = {_Slave_Ports[i].Address,  0x04, _Slave_Ports[i].LocalPort, _Slave_Ports[i].PortTypes, _Slave_Ports[i].LocalPort, _Slave_Ports[i].Exp_state, _Slave_Ports[i].Exp_state_ttl, 0x07};
+                   //_Slave_Ports_Protocol_CAN_broadcast_AS data = _Slave_Ports_Protocol_CAN_broadcast_F(_Slave_Ports_Protocol_CAN_broadcast_A) ;
+                //      byte data[8] = {element.Address,          0x04, element.LocalPort,          element.PortTypes,                element.LocalPort,         element.Exp_state,         element.Exp_state_ttl, 0x07};
+                // byte data[8] = { _Slave_Ports_Protocol_CAN_broadcast_A };
+              // _Slave_Ports_Protocol_CAN_broadcast_AS  data = _Slave_Ports_Protocol_CAN_broadcast_AF(_Slave_Ports_Protocol_CAN_broadcast_A);
+                /*  Serial.print("#303 byte data[8] 1[");   Serial.print(_Slave_Ports[i].Address);   Serial.print("] 2[");  Serial.print(0x04);   Serial.print("] 3["); 
                        Serial.print(_Slave_Ports[i].LocalPort);   Serial.print("] 4[");    Serial.print(_Slave_Ports[i].PortTypes);   Serial.print("] 5[");  Serial.print(_Slave_Ports[i].Exp_state);   Serial.print("] 6[");
                        Serial.print(_Slave_Ports[i].LocalPort);   Serial.print("] 4[");    Serial.print(_Slave_Ports[i].PortTypes);   Serial.print("] 5[");  Serial.print(_Slave_Ports[i].Exp_state);   Serial.print("] 6[");
                         Serial.print( _Slave_Ports[i].Exp_state_ttl);   Serial.print("] 7[");  Serial.print(0x07);   Serial.println("] ");
                         Serial.print( _Slave_Ports[i].Exp_state_ttl);   Serial.print("] 7[");  Serial.print(0x07);   Serial.println("] ");
-                 byte sndStat = CAN0.sendMsgBuf(_Slave_Ports[i]._Slave_ID, 0, 8, data);
+                        
+                        Serial.print("#343 byte data[8] ");
+                       // Serial.print((char)data);
+                        Serial.println("]");
+                 byte sndStat = CAN0.sendMsgBuf(_Slave_Ports[i]._Slave_ID, 0, 8, _Slave_Ports_Protocol_CAN_broadcast_B); //_Slave_Ports_Protocol_CAN_broadcast_A //data
               //    byte sndStat ;
               //    byte sndStat ;
                           if(sndStat == CAN_OK){
                           if(sndStat == CAN_OK){
-                            Serial.println("Message Sent Successfully!");
+                            Serial.println("#349 Message Sent Successfully!");
                              String LCDarray1 = "Message Sent";
                              String LCDarray1 = "Message Sent";
                              String LCDarray2 = "Successfully";
                              String LCDarray2 = "Successfully";
+                              #if defined(HAS_LCD1602)
+                               LCD_print(LCDarray1,LCDarray2,LCDtim);
+                              #endif
                           } else {
                           } else {
-                            Serial.println("Error Sending Message...");
+                            Serial.println("#356 Error Sending Message...");
                             String LCDarray1 = "Error Sending";
                             String LCDarray1 = "Error Sending";
                             String LCDarray2 = "Message...";
                             String LCDarray2 = "Message...";
+                              #if defined(HAS_LCD1602)
+                               LCD_print(LCDarray1,LCDarray2,LCDtim);
+                              #endif
                           }
                           }
-
+                            /*
                             #if defined(HAS_LCD1602)
                             #if defined(HAS_LCD1602)
-                                    LCD_print(LCDarray1,LCDarray2,LCDtim);
+                                 //   LCD_print(LCDarray1,LCDarray2,LCDtim);
                                   /*
                                   /*
                                    delay(LCDtim * 5);  
                                    delay(LCDtim * 5);  
                                     //lcd.setCursor(0,1); 
                                     //lcd.setCursor(0,1); 
@@ -339,17 +395,18 @@ int _Slave_Ports_queue_task_type, int _Slave_Port_link, long time_seq_id, long t
                                     else lcdPattern = "s" ;
                                     else lcdPattern = "s" ;
                                   }
                                   }
                                     lcdPos ++;
                                     lcdPos ++;
-                                    |*/
+                                    |
                                  #endif
                                  #endif
                                   #if defined(HAS_TFT_ILI9163C)
                                   #if defined(HAS_TFT_ILI9163C)
                                     delay(LCDtim);  
                                     delay(LCDtim);  
                                     display.setCursor(0,60); 
                                     display.setCursor(0,60); 
                                     display.print(LCDarray1); display.print(" "); display.print(LCDarray2);
                                     display.print(LCDarray1); display.print(" "); display.print(LCDarray2);
-                                  #endif
+                              #endif
+                              
 
 
-                                      delay(5000);   // send data per 100ms
+                                      delay(1000);   // send data per 100ms
                 }
                 }
-
+                */
 
 
                           
                           
                                 
                                 
@@ -359,76 +416,9 @@ int _Slave_Ports_queue_task_type, int _Slave_Port_link, long time_seq_id, long t
 
 
 
 
                 
                 
-            }
+           // }
           
           
 
 
-          /*
-           for (auto element: _Slave_Ports) {
-            ind++;
-              Serial.print(" ind:"); Serial.print(ind);  Serial.print("] Prot:"); Serial.print(element._Protocol); Serial.print(" , ID:"); Serial.print(element._Slave_ID); Serial.print(" , PortTypes:");
-             Serial.print(element.PortTypes); Serial.print(" , Addr:"); Serial.print(element.Address);
-              Serial.print(" , Local:"); Serial.print(element.LocalPort);
-              Serial.print(" , Exp state:"); Serial.print(element.Exp_state);
-                Serial.print(" , Exp_state_ttl"); Serial.println(element.Exp_state_ttl);  
-                if(element._Protocol == "CAN") { 
-                       Serial.println(" Prepared data");
-                        #if defined(HAS_LCD1602)                              
-                               
-                             String LCDarray1 = "P[";
-                             LCDarray1.concat(element._Protocol); LCDarray1.concat("] ID["); LCDarray1.concat(String(element._Slave_ID, HEX)); LCDarray1.concat("] T["); LCDarray1.concat(String(element.PortTypes, HEX));
-                            // lcd.print(LCDarray1);
-                            String LCDarray2 = " >"; LCDarray2.concat(String(element.Address, HEX)); LCDarray2.concat( "< {"); LCDarray2.concat( String(element.LocalPort, HEX)); LCDarray2.concat( "} =[" ); LCDarray2.concat(String(element.Exp_state, HEX) ); LCDarray2.concat("] ?[" ) ;
-                                 LCDarray2.concat(String(element.Exp_state_ttl, HEX)) ; LCDarray2.concat("]") ;
-                                 LCD_print(LCDarray1, LCDarray2, LCDtim / 2 ) ;
-                        #endif
-                      byte data[8] = {element.Address, 0x04, element.LocalPort, element.PortTypes, element.LocalPort, element.Exp_state, element.Exp_state_ttl, 0x07};
-                  // }
-                 byte sndStat = CAN0.sendMsgBuf(element._Slave_ID, 0, 8, data);
-                 
-                          if(sndStat == CAN_OK){
-                            Serial.println("Message Sent Successfully!");
-                             String LCDarray1 = "Message Sent";
-                             String LCDarray2 = "Successfully";
-                          } else {
-                            Serial.println("Error Sending Message...");
-                            String LCDarray1 = "Error Sending";
-                            String LCDarray2 = "Message...";
-                          }
-                }
-
-
-                          
-                                  #if defined(HAS_LCD1602)
-
-                                  
-                                   delay(LCDtim * 5);  
-                                    //lcd.setCursor(0,1); 
-                                    lcd.print(lcdPattern);
-                                    //lcd.print(lcdPos % 10);
-                                  if(lcdPos >= 16) { 
-                                    //lcd.print("N");
-                                    lcd.setCursor(0,1); 
-                                    lcdPos = 0;
-                                    if(lcdPattern=="s") lcdPattern = "S" ;
-                                    else lcdPattern = "s" ;
-                                  }
-                                    lcdPos ++;
-                          #endif
-                                  #if defined(HAS_TFT_ILI9163C)
-                                    delay(LCDtim);  
-                                    display.setCursor(0,60); 
-                                    display.print(LCDarray1); display.print(" "); display.print(LCDarray2);
-                                  #endif
-                          delay(5000);   // send data per 100ms
-
-             
-            }*/
-          
-          
-           
-          
-         // byte sndStat = CAN0.sendMsgBuf(_Slave1_ID, 0, 8, data);
-
 
 
  } //EOF _Slave_Ports_broadcast_POP
  } //EOF _Slave_Ports_broadcast_POP
  
  
@@ -446,15 +436,18 @@ int _Slave_Ports_queue_task_type, int _Slave_Port_link, long time_seq_id, long t
 
 
    
    
     if (_Slave_Ports_queue_count > 0) {
     if (_Slave_Ports_queue_count > 0) {
-
-                             String LCDarray1 = "`Slave_Ports_queue size [";
+            Serial.println("#472");
+           /*                  String LCDarray1 = "`Slave_Ports_queue size [";
+                              Serial.println("#474");
                              LCDarray1.concat(_Slave_Ports_queue_count);
                              LCDarray1.concat(_Slave_Ports_queue_count);
-                             LCDarray1.concat("] Oldest["); 
+                             Serial.println("#476");
+                             //LCDarray1.concat("] Oldest["); 
+                             Serial.println("#477");
                              LCDarray1.concat(_Slave_Ports_queue_pop);
                              LCDarray1.concat(_Slave_Ports_queue_pop);
-                             
+                             Serial.println("#478");
                              LCDarray1.concat("] Curr[");
                              LCDarray1.concat("] Curr[");
                              LCDarray1.concat(_Slave_Ports_queue_front);
                              LCDarray1.concat(_Slave_Ports_queue_front);
-
+                    
                              String LCDarray2 = "]  last[";
                              String LCDarray2 = "]  last[";
                              LCDarray2.concat(_Slave_Ports_queue_back);
                              LCDarray2.concat(_Slave_Ports_queue_back);
                              LCDarray2.concat("] Next[");
                              LCDarray2.concat("] Next[");
@@ -464,20 +457,24 @@ int _Slave_Ports_queue_task_type, int _Slave_Port_link, long time_seq_id, long t
     Serial.print(LCDarray1);
     Serial.print(LCDarray1);
     Serial.println(LCDarray2);
     Serial.println(LCDarray2);
     LCD_print(LCDarray1, LCDarray2, LCDtim / 3 ) ;
     LCD_print(LCDarray1, LCDarray2, LCDtim / 3 ) ;
-
+            */
               if(_Slave_Ports_queue_tasks_LIST[_Slave_Ports_queue_pop].queueID == 0 and 
               if(_Slave_Ports_queue_tasks_LIST[_Slave_Ports_queue_pop].queueID == 0 and 
                 _Slave_Ports_queue_tasks_LIST[_Slave_Ports_queue_pop].queueID == 0 and 
                 _Slave_Ports_queue_tasks_LIST[_Slave_Ports_queue_pop].queueID == 0 and 
                   _Slave_Ports_queue_tasks_LIST[_Slave_Ports_queue_pop]._Slave_Ports_queue_task_type == 0 and 
                   _Slave_Ports_queue_tasks_LIST[_Slave_Ports_queue_pop]._Slave_Ports_queue_task_type == 0 and 
                     _Slave_Ports_queue_tasks_LIST[_Slave_Ports_queue_pop]._Slave_Port_link == 0 and 
                     _Slave_Ports_queue_tasks_LIST[_Slave_Ports_queue_pop]._Slave_Port_link == 0 and 
                       _Slave_Ports_queue_tasks_LIST[_Slave_Ports_queue_pop].time_seq_id == 0 and 
                       _Slave_Ports_queue_tasks_LIST[_Slave_Ports_queue_pop].time_seq_id == 0 and 
                         _Slave_Ports_queue_tasks_LIST[_Slave_Ports_queue_pop].time_min_run == 0 ) {
                         _Slave_Ports_queue_tasks_LIST[_Slave_Ports_queue_pop].time_min_run == 0 ) {
-                   String LCDarray1 = "#206 Error with queue";
+                  /* String LCDarray1 = "#206 Error with queue";
                    String LCDarray2 = "ID: ";
                    String LCDarray2 = "ID: ";
                     LCDarray2.concat( _Slave_Ports_queue_pop);  LCDarray2.concat("] ");
                     LCDarray2.concat( _Slave_Ports_queue_pop);  LCDarray2.concat("] ");
                    Serial.print(LCDarray1);
                    Serial.print(LCDarray1);
                    Serial.println(LCDarray2);
                    Serial.println(LCDarray2);
                     LCD_print(LCDarray1, LCDarray2, LCDtim / 3 ) ;
                     LCD_print(LCDarray1, LCDarray2, LCDtim / 3 ) ;
+                    */
+                       Serial.println("#507");
               } else {
               } else {
+                   Serial.println("#509");
+                   /*
                    String LCDarray1 = "#407 Running task";
                    String LCDarray1 = "#407 Running task";
                    String LCDarray2 = "ID: ";
                    String LCDarray2 = "ID: ";
                     LCDarray2.concat( _Slave_Ports_queue_pop);  LCDarray2.concat("] task_type[");
                     LCDarray2.concat( _Slave_Ports_queue_pop);  LCDarray2.concat("] task_type[");
@@ -487,7 +484,7 @@ int _Slave_Ports_queue_task_type, int _Slave_Port_link, long time_seq_id, long t
                    Serial.print(LCDarray1);
                    Serial.print(LCDarray1);
                    Serial.println(LCDarray2);
                    Serial.println(LCDarray2);
                     LCD_print(LCDarray1, LCDarray2, LCDtim / 3 ) ;
                     LCD_print(LCDarray1, LCDarray2, LCDtim / 3 ) ;
-
+                    */
                         if( _Slave_Ports_queue_tasks_LIST[_Slave_Ports_queue_pop]._Slave_Ports_queue_task_type == 0x01 ) {
                         if( _Slave_Ports_queue_tasks_LIST[_Slave_Ports_queue_pop]._Slave_Ports_queue_task_type == 0x01 ) {
                            Serial.print("#224 running _Slave_Ports_ttl_decrement = ");     Serial.println( _Slave_Ports_queue_tasks_LIST[_Slave_Ports_queue_pop]._Slave_Ports_queue_task_type);
                            Serial.print("#224 running _Slave_Ports_ttl_decrement = ");     Serial.println( _Slave_Ports_queue_tasks_LIST[_Slave_Ports_queue_pop]._Slave_Ports_queue_task_type);
                             #include "_Slave_Ports_ttl_decrement.h"
                             #include "_Slave_Ports_ttl_decrement.h"
@@ -537,7 +534,9 @@ int _Slave_Ports_queue_task_type, int _Slave_Port_link, long time_seq_id, long t
      Serial.print(_Slave_Ports_queue_back); 
      Serial.print(_Slave_Ports_queue_back); 
      Serial.print(" _Slave_Ports_queue.peek(): "); 
      Serial.print(" _Slave_Ports_queue.peek(): "); 
      Serial.println(_Slave_Ports_queue_peek); 
      Serial.println(_Slave_Ports_queue_peek); 
-     LCD_print(LCDarray1, LCDarray2, LCDtim / 3 ) ;
+      #if defined(HAS_LCD1602) 
+        LCD_print(LCDarray1, LCDarray2, LCDtim / 3 ) ;
+      #endif
   }
   }
  }
  }
 
 

+ 11 - 2
SE/stuff/P5_Automation_can-dev/_Slave_Ports_LOCAL_LIST.h

@@ -2,6 +2,15 @@
 Slave_Ports_Status  Slave_Ports_Status_C;
 Slave_Ports_Status  Slave_Ports_Status_C;
 
 
 
 
-Slave_Ports_Status_C.add_port( 1, Active_ControllerID, 0x01, 0x00, 1, 0x01, 0x01, 0x01);
-Slave_Ports_Status_C.add_port( 2, Active_ControllerID, 0x01, 0x00, 1, 0x01, 0x01, 0x01);
+ #if ! defined(Active_ControllerID)
+    #error "#9 not defined Active_ControllerID"
+ 
+ #endif
+
+
+ #if ! defined(_Slave1_ID)
+    #error "#12 not defined _Slave1_ID"
+ 
+ #endif
+
 
 

+ 9 - 0
SE/stuff/P5_Automation_can-dev/_Slave_Ports_Protocol.cppppp

@@ -0,0 +1,9 @@
+#include "_Slave_Ports_Protocol.h"
+
+
+/*
+
+ _Slave_Ports_Protocol_CAN_broadcast_AS  _Slave_Ports_Protocol_CAN_broadcast_F( _Slave_Ports_Protocol_CAN_broadcast_T _Slave_Ports_Protocol_CAN_broadcast_A ) {
+  return {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07};
+}
+*/

+ 102 - 0
SE/stuff/P5_Automation_can-dev/_Slave_Ports_Protocol.h

@@ -0,0 +1,102 @@
+
+typedef int _Slave_ID_BROADCAST_T  ;
+typedef int _SENDER_T  ;
+
+
+//#define _Slave_ID_BROADCAST_T  _Slave_ID_BROADCAST  0xFF ; 
+
+ #if ! defined(Active_ControllerID)
+    #error "#9 not defined Active_ControllerID"
+ 
+ #endif 
+
+ struct _Slave_Ports_Protocol_CAN_broadcast_S {
+  const   _Slave_ID_BROADCAST_T  _Slave_ID_BROADCAST = 0xFF ;   // 1remote id - use FF for broadcast
+  const _SENDER_T _SENDER = Active_ControllerID ; //2 sender //Device which orginated port 
+  int  Port_ID ; //3 global id for device //const char * const _Protocol;
+  int  PortTypes;  //4 0xFF  =  1111 1111 s
+  //int  Address ; //
+  //int  LocalPort; //
+  int  Exp_state;    //5
+  int  Exp_state_ttl;  //6
+  int  Broadcast_state;  //7
+  const int _CAN_8 = 0x07 ; //8 - nbot used
+} ;
+
+typedef struct _Slave_Ports_Protocol_CAN_broadcast_S _Slave_Ports_Protocol_CAN_broadcast_T;
+
+
+
+typedef int _CAN_SEND_1_T  ; //1 byte = 0
+typedef int _CAN_SEND_2_T  ; //2 byte = 8 
+
+ struct _Slave_Ports_Protocol_CAN_SEND_S {
+     const _SENDER_T _SENDER = Active_ControllerID ;
+     const  _CAN_SEND_1_T  _CAN_SEND_1 = 0 ;
+     const  _CAN_SEND_2_T  _CAN_SEND_2 = 8 ;
+     _Slave_Ports_Protocol_CAN_broadcast_T _Slave_Ports_Protocol_CAN_broadcast_A ;
+} ;
+
+//typedef  byte _Slave_Ports_Protocol_CAN_broadcast_AS[8] ;
+
+/*
+
+ struct _Slave_Ports_Protocol_CAN_broadcast_AS {
+  const byte  _Slave_ID_BROADCAST = 0xFF ;   // 1remote id - use FF for broadcast
+  const byte _SENDER = Active_ControllerID ; //2 sender //Device which orginated port 
+  byte  Port_ID ; //3 global id for device //const char * const _Protocol;
+  byte  PortTypes;  //4 0xFF  =  1111 1111 s
+  //int  Address ; //
+  //int  LocalPort; //
+  byte  Exp_state;    //5
+  byte  Exp_state_ttl;  //6
+  byte  Broadcast_state;  //7
+  const byte _CAN_8 = 0x07 ; //8 - nbot used
+} ;
+*/
+typedef  byte _Slave_Ports_Protocol_CAN_broadcast_AS[8]  ;
+
+void _Slave_Ports_Protocol_CAN_broadcast_AF(_Slave_Ports_Protocol_CAN_broadcast_T _Slave_Ports_Protocol_CAN_broadcast_A, byte* _Slave_Ports_Protocol_CAN_broadcast_B ) {
+   //byte dataa = {10, 12, 13, 4, 5, 6, 7, 8}; 
+    //   return dataa;
+     _Slave_Ports_Protocol_CAN_broadcast_B[1] = _Slave_Ports_Protocol_CAN_broadcast_A._Slave_ID_BROADCAST ;
+     _Slave_Ports_Protocol_CAN_broadcast_B[2] = _Slave_Ports_Protocol_CAN_broadcast_A._SENDER ;
+     _Slave_Ports_Protocol_CAN_broadcast_B[3] = _Slave_Ports_Protocol_CAN_broadcast_A.Port_ID ;
+     _Slave_Ports_Protocol_CAN_broadcast_B[4] = _Slave_Ports_Protocol_CAN_broadcast_A.PortTypes ;
+     _Slave_Ports_Protocol_CAN_broadcast_B[5] =  _Slave_Ports_Protocol_CAN_broadcast_A.Exp_state ;
+     _Slave_Ports_Protocol_CAN_broadcast_B[6] =  _Slave_Ports_Protocol_CAN_broadcast_A.Exp_state_ttl ;
+     _Slave_Ports_Protocol_CAN_broadcast_B[7] = _Slave_Ports_Protocol_CAN_broadcast_A.Broadcast_state ;
+     _Slave_Ports_Protocol_CAN_broadcast_B[8] = _Slave_Ports_Protocol_CAN_broadcast_A._CAN_8 ;
+        
+        
+}
+
+
+/*
+ _Slave_Ports_Protocol_CAN_broadcast_AS  _Slave_Ports_Protocol_CAN_broadcast_F( _Slave_Ports_Protocol_CAN_broadcast_T _Slave_Ports_Protocol_CAN_broadcast_A ) {
+       byte data[8] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07}; 
+       return data;
+}
+*/
+/*byte data[8] = {
+                int  _Slave_ID --1 sender addr
+                 int 0x04, -2 task type
+                 int  Port_ID ; -3 //global id for device //const char * const _Protocol;
+                 _Slave_Ports[i].PortTypes, -4
+                   _Slave_Ports[i].Exp_state, -5
+                    _Slave_Ports[i].Exp_state_ttl, -6 
+                     Broadcast_state}; -7
+                     0x07 -8 not used
+
+byte data[8] = {_Slave_Ports[i].Address,  1
+            0x04, 2
+            _Slave_Ports[i].LocalPort, 3
+            _Slave_Ports[i].PortTypes,4
+             _Slave_Ports[i].LocalPort, 5
+             _Slave_Ports[i].Exp_state,6
+              _Slave_Ports[i].Exp_state_ttl,7
+               0x07};8
+
+                     
+byte sndStat = CAN0.sendMsgBuf(_Slave_Ports[i]._Slave_ID, 0, 8, data);
+*/

+ 2 - 0
SE/stuff/P5_Automation_can-dev/_Slave_Ports_Protocol_CAN.h

@@ -30,3 +30,5 @@ const char _Slave_Ports_Protocol_CAN_LIST[][_Slave_Ports_Protocol_CAN_COUNT] = {
         }; 
         }; 
         
         
         
         
+
+