arkadiusz binder 5 سال پیش
والد
کامیت
a05ff89a92

+ 24 - 13
SE/stuff/P5_Automation_can-dev/LCD1602.h

@@ -210,42 +210,48 @@ void _LCD_print_buffors_list(_LCD_print_bufforT* _LCD_print_buffors, int LCDtim
 void LCD_print(String LCDarray1, String LCDarray2 ,int LCDtim) {
 
       delay(LCDtim);   
-      unsigned char LCDarray1buf[15];
-      LCDarray1.toCharArray(LCDarray1buf, 15);
+      unsigned char LCDarray1buf[16];
+      LCDarray1.toCharArray(LCDarray1buf, 16);
  
-      unsigned char LCDarray2buf;
-       LCDarray2.toCharArray(LCDarray2buf, 15);
+      unsigned char LCDarray2buf[16];
+       LCDarray2.toCharArray(LCDarray2buf, 16);
 
      // lcd.setCursor(0,0); 
      // lcd.print(LCDarray1);
      // lcd.setCursor(0,1); 
      // lcd.print(LCDarray1);
 
-                                        lcd.setCursor(0,16); 
+                                        lcd.setCursor(16,0); 
  
                                          for ( int positionCounter1 = 0;
-                                        positionCounter1 < 24; positionCounter1++)
+                                        positionCounter1 <= 24 ;//LCDarray1.length(); // 24;
+                                        positionCounter1++)
                                             {
                                               lcd.scrollDisplayLeft();  //Scrolls the contents of the display one space to the left.
-                                              lcd.print(LCDarray1[positionCounter1]);  // Print a message to the LCD.
+                                              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.
+                                          //  lcd.clear();  //Clears the LCD screen and positions the cursor in the upper-left corner.
 
 
 
 
                                           
-                                          lcd.setCursor(15,1); 
+                                          lcd.setCursor(16,1); 
                                          for ( int positionCounter2 = 0;
-                                        positionCounter2 < 24; positionCounter2++)
+                                        positionCounter2 <= 24;//LCDarray2.length();//24; 
+                                        positionCounter2++)
                                             {
                                               lcd.scrollDisplayLeft();  //Scrolls the contents of the display one space to the left.
-                                              lcd.print(LCDarray2[positionCounter2]);  // Print a message to the LCD.
+                                              if(positionCounter2 >= LCDarray2.length())  lcd.print(" "); 
+                                              else lcd.print(LCDarray2[positionCounter2]);  // Print a message to the LCD.
                                               delay(LCDtim);  //wait for 250 microseconds
+                                               if(positionCounter2==10) delay(LCDtim *7 );
                                             }
                                             delay(LCDtim  * 5);  //wait for 250 microseconds
-                                            lcd.clear();  //Clears the LCD screen and positions the cursor in the upper-left corner.
+                                          //  lcd.clear();  //Clears the LCD screen and positions the cursor in the upper-left corner.
                                            
 
       
@@ -296,5 +302,10 @@ void updateQty(int id, int new_qty, Record* records) {
 
 }           
                             
-                       
+String make_str16(String str){
+    for(int i = 0; i < (16 - str.length()); i++)
+        str += ' ';  
+    return str;
+}
+                
                                       

+ 665 - 0
SE/stuff/P5_Automation_can-dev/P5_Automation_can-dev.graphml

@@ -0,0 +1,665 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<graphml xmlns="http://graphml.graphdrawing.org/xmlns" xmlns:java="http://www.yworks.com/xml/yfiles-common/1.0/java" xmlns:sys="http://www.yworks.com/xml/yfiles-common/markup/primitives/2.0" xmlns:x="http://www.yworks.com/xml/yfiles-common/markup/2.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:y="http://www.yworks.com/xml/graphml" xmlns:yed="http://www.yworks.com/xml/yed/3" xsi:schemaLocation="http://graphml.graphdrawing.org/xmlns http://www.yworks.com/xml/schema/graphml/1.1/ygraphml.xsd">
+  <!--Created by yEd 3.18.1-->
+  <key attr.name="Description" attr.type="string" for="graph" id="d0"/>
+  <key for="port" id="d1" yfiles.type="portgraphics"/>
+  <key for="port" id="d2" yfiles.type="portgeometry"/>
+  <key for="port" id="d3" yfiles.type="portuserdata"/>
+  <key attr.name="url" attr.type="string" for="node" id="d4"/>
+  <key attr.name="description" attr.type="string" for="node" id="d5"/>
+  <key for="node" id="d6" yfiles.type="nodegraphics"/>
+  <key for="graphml" id="d7" yfiles.type="resources"/>
+  <key attr.name="url" attr.type="string" for="edge" id="d8"/>
+  <key attr.name="description" attr.type="string" for="edge" id="d9"/>
+  <key for="edge" id="d10" yfiles.type="edgegraphics"/>
+  <graph edgedefault="directed" id="G">
+    <data key="d0"/>
+    <node id="n0" yfiles.foldertype="group">
+      <data key="d4" xml:space="preserve"/>
+      <data key="d5"/>
+      <data key="d6">
+        <y:ProxyAutoBoundsNode>
+          <y:Realizers active="0">
+            <y:GroupNode>
+              <y:Geometry height="64.0" width="155.0" x="877.0" y="558.0"/>
+              <y:Fill color="#F2F0D8" transparent="false"/>
+              <y:BorderStyle color="#000000" type="line" width="1.0"/>
+              <y:NodeLabel alignment="right" autoSizePolicy="node_width" backgroundColor="#B7B69E" borderDistance="0.0" fontFamily="Dialog" fontSize="15" fontStyle="plain" hasLineColor="false" height="21.666015625" horizontalTextPosition="center" iconTextGap="4" modelName="internal" modelPosition="t" textColor="#000000" verticalTextPosition="bottom" visible="true" width="155.0" x="0.0" xml:space="preserve" y="0.0">1602_LCD</y:NodeLabel>
+              <y:Shape type="rectangle"/>
+              <y:DropShadow color="#D2D2D2" offsetX="4" offsetY="4"/>
+              <y:State closed="false" closedHeight="50.0" closedWidth="50.0" innerGraphDisplayEnabled="false"/>
+              <y:Insets bottom="15" bottomF="15.0" left="15" leftF="15.0" right="15" rightF="15.0" top="15" topF="15.0"/>
+              <y:BorderInsets bottom="0" bottomF="0.0" left="0" leftF="0.0" right="0" rightF="0.0" top="0" topF="0.0"/>
+            </y:GroupNode>
+            <y:GroupNode>
+              <y:Geometry height="50.0" width="50.0" x="927.0" y="181.0"/>
+              <y:Fill color="#F2F0D8" transparent="false"/>
+              <y:BorderStyle color="#000000" type="line" width="1.0"/>
+              <y:NodeLabel alignment="right" autoSizePolicy="node_width" backgroundColor="#B7B69E" borderDistance="0.0" fontFamily="Dialog" fontSize="15" fontStyle="plain" hasLineColor="false" height="21.666015625" horizontalTextPosition="center" iconTextGap="4" modelName="internal" modelPosition="t" textColor="#000000" verticalTextPosition="bottom" visible="true" width="50.0" x="0.0" xml:space="preserve" y="0.0">3</y:NodeLabel>
+              <y:Shape type="rectangle"/>
+              <y:DropShadow color="#D2D2D2" offsetX="4" offsetY="4"/>
+              <y:State closed="true" closedHeight="50.0" closedWidth="50.0" innerGraphDisplayEnabled="false"/>
+              <y:Insets bottom="15" bottomF="15.0" left="15" leftF="15.0" right="15" rightF="15.0" top="15" topF="15.0"/>
+              <y:BorderInsets bottom="0" bottomF="0.0" left="0" leftF="0.0" right="0" rightF="0.0" top="0" topF="0.0"/>
+            </y:GroupNode>
+          </y:Realizers>
+        </y:ProxyAutoBoundsNode>
+      </data>
+      <graph edgedefault="directed" id="n0:"/>
+    </node>
+    <node id="n1" yfiles.foldertype="group">
+      <data key="d4" xml:space="preserve"/>
+      <data key="d5"/>
+      <data key="d6">
+        <y:ProxyAutoBoundsNode>
+          <y:Realizers active="0">
+            <y:GroupNode>
+              <y:Geometry height="134.666015625" width="123.0" x="704.0" y="558.0"/>
+              <y:Fill color="#F2F0D8" transparent="false"/>
+              <y:BorderStyle color="#000000" type="line" width="1.0"/>
+              <y:NodeLabel alignment="right" autoSizePolicy="node_width" backgroundColor="#B7B69E" borderDistance="0.0" fontFamily="Dialog" fontSize="15" fontStyle="plain" hasLineColor="false" height="21.666015625" horizontalTextPosition="center" iconTextGap="4" modelName="internal" modelPosition="t" textColor="#000000" verticalTextPosition="bottom" visible="true" width="123.0" x="0.0" xml:space="preserve" y="0.0">ATMEGA</y:NodeLabel>
+              <y:Shape type="rectangle"/>
+              <y:DropShadow color="#D2D2D2" offsetX="4" offsetY="4"/>
+              <y:State closed="false" closedHeight="50.0" closedWidth="50.0" innerGraphDisplayEnabled="false"/>
+              <y:Insets bottom="15" bottomF="15.0" left="15" leftF="15.0" right="15" rightF="15.0" top="15" topF="15.0"/>
+              <y:BorderInsets bottom="0" bottomF="0.0" left="1" leftF="1.0" right="1" rightF="1.0" top="0" topF="0.0"/>
+            </y:GroupNode>
+            <y:GroupNode>
+              <y:Geometry height="50.0" width="50.0" x="156.0" y="163.0"/>
+              <y:Fill color="#F2F0D8" transparent="false"/>
+              <y:BorderStyle color="#000000" type="line" width="1.0"/>
+              <y:NodeLabel alignment="right" autoSizePolicy="node_width" backgroundColor="#B7B69E" borderDistance="0.0" fontFamily="Dialog" fontSize="15" fontStyle="plain" hasLineColor="false" height="21.666015625" horizontalTextPosition="center" iconTextGap="4" modelName="internal" modelPosition="t" textColor="#000000" verticalTextPosition="bottom" visible="true" width="50.0" x="0.0" xml:space="preserve" y="0.0">3</y:NodeLabel>
+              <y:Shape type="rectangle"/>
+              <y:DropShadow color="#D2D2D2" offsetX="4" offsetY="4"/>
+              <y:State closed="true" closedHeight="50.0" closedWidth="50.0" innerGraphDisplayEnabled="false"/>
+              <y:Insets bottom="15" bottomF="15.0" left="15" leftF="15.0" right="15" rightF="15.0" top="15" topF="15.0"/>
+              <y:BorderInsets bottom="0" bottomF="0.0" left="0" leftF="0.0" right="0" rightF="0.0" top="0" topF="0.0"/>
+            </y:GroupNode>
+          </y:Realizers>
+        </y:ProxyAutoBoundsNode>
+      </data>
+      <graph edgedefault="directed" id="n1:">
+        <node id="n1::n0" yfiles.foldertype="group">
+          <data key="d4" xml:space="preserve"/>
+          <data key="d5"/>
+          <data key="d6">
+            <y:ProxyAutoBoundsNode>
+              <y:Realizers active="0">
+                <y:GroupNode>
+                  <y:Geometry height="83.0" width="91.0" x="720.0" y="594.666015625"/>
+                  <y:Fill color="#CAECFF84" transparent="false"/>
+                  <y:BorderStyle color="#666699" type="dotted" width="1.0"/>
+                  <y:NodeLabel alignment="right" autoSizePolicy="node_width" backgroundColor="#99CCFF" borderDistance="0.0" fontFamily="Dialog" fontSize="15" fontStyle="plain" hasLineColor="false" height="21.666015625" horizontalTextPosition="center" iconTextGap="4" modelName="internal" modelPosition="t" textColor="#000000" verticalTextPosition="bottom" visible="true" width="91.0" x="0.0" xml:space="preserve" y="0.0">_PCINT</y:NodeLabel>
+                  <y:Shape type="roundrectangle"/>
+                  <y:State closed="false" closedHeight="50.0" closedWidth="50.0" innerGraphDisplayEnabled="false"/>
+                  <y:Insets bottom="15" bottomF="15.0" left="15" leftF="15.0" right="15" rightF="15.0" top="15" topF="15.0"/>
+                  <y:BorderInsets bottom="0" bottomF="0.0" left="0" leftF="0.0" right="0" rightF="0.0" top="0" topF="0.0"/>
+                </y:GroupNode>
+                <y:GroupNode>
+                  <y:Geometry height="50.0" width="50.0" x="262.0" y="261.0"/>
+                  <y:Fill color="#CAECFF84" transparent="false"/>
+                  <y:BorderStyle color="#666699" type="dotted" width="1.0"/>
+                  <y:NodeLabel alignment="right" autoSizePolicy="node_width" backgroundColor="#99CCFF" borderDistance="0.0" fontFamily="Dialog" fontSize="15" fontStyle="plain" hasLineColor="false" height="21.666015625" horizontalTextPosition="center" iconTextGap="4" modelName="internal" modelPosition="t" textColor="#000000" verticalTextPosition="bottom" visible="true" width="50.0" x="0.0" xml:space="preserve" y="0.0">2</y:NodeLabel>
+                  <y:Shape type="roundrectangle"/>
+                  <y:State closed="true" closedHeight="50.0" closedWidth="50.0" innerGraphDisplayEnabled="false"/>
+                  <y:Insets bottom="15" bottomF="15.0" left="15" leftF="15.0" right="15" rightF="15.0" top="15" topF="15.0"/>
+                  <y:BorderInsets bottom="0" bottomF="0.0" left="0" leftF="0.0" right="0" rightF="0.0" top="0" topF="0.0"/>
+                </y:GroupNode>
+              </y:Realizers>
+            </y:ProxyAutoBoundsNode>
+          </data>
+          <graph edgedefault="directed" id="n1::n0:"/>
+        </node>
+      </graph>
+    </node>
+    <node id="n2" yfiles.foldertype="group">
+      <data key="d4" xml:space="preserve"/>
+      <data key="d5"/>
+      <data key="d6">
+        <y:ProxyAutoBoundsNode>
+          <y:Realizers active="0">
+            <y:GroupNode>
+              <y:Geometry height="171.0" width="208.0" x="450.0" y="558.0"/>
+              <y:Fill color="#CAECFF84" transparent="false"/>
+              <y:BorderStyle color="#666699" type="dotted" width="1.0"/>
+              <y:NodeLabel alignment="right" autoSizePolicy="node_width" backgroundColor="#99CCFF" borderDistance="0.0" fontFamily="Dialog" fontSize="15" fontStyle="plain" hasLineColor="false" height="21.666015625" horizontalTextPosition="center" iconTextGap="4" modelName="internal" modelPosition="t" textColor="#000000" verticalTextPosition="bottom" visible="true" width="208.0" x="0.0" xml:space="preserve" y="0.0">_Slave_Ports[]</y:NodeLabel>
+              <y:Shape type="roundrectangle"/>
+              <y:State closed="false" closedHeight="50.0" closedWidth="50.0" innerGraphDisplayEnabled="false"/>
+              <y:Insets bottom="15" bottomF="15.0" left="15" leftF="15.0" right="15" rightF="15.0" top="15" topF="15.0"/>
+              <y:BorderInsets bottom="0" bottomF="0.0" left="0" leftF="0.0" right="0" rightF="0.0" top="0" topF="0.0"/>
+            </y:GroupNode>
+            <y:GroupNode>
+              <y:Geometry height="50.0" width="50.0" x="145.0" y="606.0"/>
+              <y:Fill color="#CAECFF84" transparent="false"/>
+              <y:BorderStyle color="#666699" type="dotted" width="1.0"/>
+              <y:NodeLabel alignment="right" autoSizePolicy="node_width" backgroundColor="#99CCFF" borderDistance="0.0" fontFamily="Dialog" fontSize="15" fontStyle="plain" hasLineColor="false" height="21.666015625" horizontalTextPosition="center" iconTextGap="4" modelName="internal" modelPosition="t" textColor="#000000" verticalTextPosition="bottom" visible="true" width="50.0" x="0.0" xml:space="preserve" y="0.0">2</y:NodeLabel>
+              <y:Shape type="roundrectangle"/>
+              <y:State closed="true" closedHeight="50.0" closedWidth="50.0" innerGraphDisplayEnabled="false"/>
+              <y:Insets bottom="15" bottomF="15.0" left="15" leftF="15.0" right="15" rightF="15.0" top="15" topF="15.0"/>
+              <y:BorderInsets bottom="0" bottomF="0.0" left="0" leftF="0.0" right="0" rightF="0.0" top="0" topF="0.0"/>
+            </y:GroupNode>
+          </y:Realizers>
+        </y:ProxyAutoBoundsNode>
+      </data>
+      <graph edgedefault="directed" id="n2:"/>
+    </node>
+    <node id="n3" yfiles.foldertype="group">
+      <data key="d5"/>
+      <data key="d6">
+        <y:TableNode configuration="YED_TABLE_NODE">
+          <y:Geometry height="512.0859375" width="202.0" x="362.0" y="0.0"/>
+          <y:Fill color="#ECF5FF" color2="#0042F440" transparent="false"/>
+          <y:BorderStyle color="#000000" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="15" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="21.666015625" horizontalTextPosition="center" iconTextGap="4" modelName="internal" modelPosition="t" textColor="#000000" verticalTextPosition="bottom" visible="true" width="102.47412109375" x="49.762939453125" xml:space="preserve" y="4.0">_Slave_Ports[]</y:NodeLabel>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" rotationAngle="270.0" textColor="#000000" verticalTextPosition="bottom" visible="true" width="57.759765625" x="3.0" xml:space="preserve" y="38.1201171875">_Protocol<y:LabelModel><y:RowNodeLabelModel offset="3.0"/></y:LabelModel><y:ModelParameter><y:RowNodeLabelModelParameter horizontalPosition="0.0" id="row_0" inside="true"/></y:ModelParameter></y:NodeLabel>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" rotationAngle="270.0" textColor="#000000" verticalTextPosition="bottom" visible="true" width="57.900390625" x="3.0" xml:space="preserve" y="101.3212890625">_Slave_ID<y:LabelModel><y:RowNodeLabelModel offset="3.0"/></y:LabelModel><y:ModelParameter><y:RowNodeLabelModelParameter horizontalPosition="0.0" id="row_1" inside="true"/></y:ModelParameter></y:NodeLabel>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" rotationAngle="270.0" textColor="#000000" verticalTextPosition="bottom" visible="true" width="56.798828125" x="3.0" xml:space="preserve" y="154.4150390625">New Row<y:LabelModel><y:RowNodeLabelModel offset="3.0"/></y:LabelModel><y:ModelParameter><y:RowNodeLabelModelParameter horizontalPosition="0.0" id="row_2" inside="true"/></y:ModelParameter></y:NodeLabel>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" rotationAngle="270.0" textColor="#000000" verticalTextPosition="bottom" visible="true" width="56.798828125" x="3.0" xml:space="preserve" y="205.6865234375">New Row<y:LabelModel><y:RowNodeLabelModel offset="3.0"/></y:LabelModel><y:ModelParameter><y:RowNodeLabelModelParameter horizontalPosition="0.0" id="row_3" inside="true"/></y:ModelParameter></y:NodeLabel>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" rotationAngle="270.0" textColor="#000000" verticalTextPosition="bottom" visible="true" width="56.798828125" x="3.0" xml:space="preserve" y="255.6865234375">New Row<y:LabelModel><y:RowNodeLabelModel offset="3.0"/></y:LabelModel><y:ModelParameter><y:RowNodeLabelModelParameter horizontalPosition="0.0" id="row_4" inside="true"/></y:ModelParameter></y:NodeLabel>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" rotationAngle="270.0" textColor="#000000" verticalTextPosition="bottom" visible="true" width="56.798828125" x="3.0" xml:space="preserve" y="382.1865234375">New Row<y:LabelModel><y:RowNodeLabelModel offset="3.0"/></y:LabelModel><y:ModelParameter><y:RowNodeLabelModelParameter horizontalPosition="0.0" id="row_5" inside="true"/></y:ModelParameter></y:NodeLabel>
+          <y:StyleProperties>
+            <y:Property class="java.awt.Color" name="yed.table.section.color" value="#7192b2"/>
+            <y:Property class="java.lang.Double" name="yed.table.header.height" value="24.0"/>
+            <y:Property class="java.awt.Color" name="yed.table.lane.color.main" value="#c4d7ed"/>
+            <y:Property class="java.awt.Color" name="yed.table.lane.color.alternating" value="#abc8e2"/>
+            <y:Property class="java.awt.Color" name="yed.table.header.color.alternating" value="#abc8e2"/>
+            <y:Property class="java.lang.String" name="yed.table.lane.style" value="lane.style.rows"/>
+            <y:Property class="java.awt.Color" name="yed.table.header.color.main" value="#c4d7ed"/>
+          </y:StyleProperties>
+          <y:State autoResize="true" closed="false" closedHeight="80.0" closedWidth="100.0"/>
+          <y:Insets bottom="0" bottomF="0.0" left="0" leftF="0.0" right="0" rightF="0.0" top="0" topF="0.0"/>
+          <y:BorderInsets bottom="385" bottomF="384.953125" left="15" leftF="15.0" right="15" rightF="15.0" top="79" topF="79.0"/>
+          <y:Table autoResizeTable="true" defaultColumnWidth="120.0" defaultMinimumColumnWidth="80.0" defaultMinimumRowHeight="50.0" defaultRowHeight="80.0">
+            <y:DefaultColumnInsets bottom="0.0" left="0.0" right="0.0" top="0.0"/>
+            <y:DefaultRowInsets bottom="0.0" left="24.0" right="0.0" top="0.0"/>
+            <y:Insets bottom="0.0" left="0.0" right="0.0" top="30.0"/>
+            <y:Columns>
+              <y:Column id="column_0" minimumWidth="80.0" width="80.0">
+                <y:Insets bottom="0.0" left="0.0" right="0.0" top="0.0"/>
+              </y:Column>
+            </y:Columns>
+            <y:Rows>
+              <y:Row height="74.0" id="row_0" minimumHeight="50.0">
+                <y:Insets bottom="0.0" left="24.0" right="0.0" top="0.0"/>
+              </y:Row>
+              <y:Row height="52.54296875" id="row_1" minimumHeight="50.0">
+                <y:Insets bottom="0.0" left="24.0" right="0.0" top="0.0"/>
+              </y:Row>
+              <y:Row height="52.54296875" id="row_2" minimumHeight="50.0">
+                <y:Insets bottom="0.0" left="24.0" right="0.0" top="0.0"/>
+              </y:Row>
+              <y:Row height="50.0" id="row_3" minimumHeight="50.0">
+                <y:Insets bottom="0.0" left="24.0" right="0.0" top="0.0"/>
+              </y:Row>
+              <y:Row height="50.0" id="row_4" minimumHeight="50.0">
+                <y:Insets bottom="0.0" left="24.0" right="0.0" top="0.0"/>
+              </y:Row>
+              <y:Row height="203.0" id="row_5" minimumHeight="50.0">
+                <y:Insets bottom="0.0" left="24.0" right="0.0" top="0.0"/>
+              </y:Row>
+            </y:Rows>
+          </y:Table>
+        </y:TableNode>
+      </data>
+      <graph edgedefault="directed" id="n3:">
+        <node id="n3::n0">
+          <data key="d5"/>
+          <data key="d6">
+            <y:ShapeNode>
+              <y:Geometry height="15.0" width="148.0" x="401.0" y="110.56640625"/>
+              <y:Fill color="#FFCC00" transparent="false"/>
+              <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
+              <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="57.900390625" x="45.0498046875" xml:space="preserve" y="-1.56640625">_Slave_ID<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
+              <y:Shape type="hexagon"/>
+            </y:ShapeNode>
+          </data>
+        </node>
+      </graph>
+    </node>
+    <node id="n4" yfiles.foldertype="group">
+      <data key="d5"/>
+      <data key="d6">
+        <y:TableNode configuration="YED_TABLE_NODE">
+          <y:Geometry height="512.0859375" width="316.0" x="0.0" y="0.0"/>
+          <y:Fill color="#ECF5FF" color2="#0042F440" transparent="false"/>
+          <y:BorderStyle color="#000000" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="15" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="21.666015625" horizontalTextPosition="center" iconTextGap="4" modelName="internal" modelPosition="t" textColor="#000000" verticalTextPosition="bottom" visible="true" width="268.6826171875" x="23.65869140625" xml:space="preserve" y="4.0">_Slave_Ports_queue_task_type_LIST[]</y:NodeLabel>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" rotationAngle="270.0" textColor="#000000" verticalTextPosition="bottom" visible="true" width="11.587890625" x="3.0" xml:space="preserve" y="73.2060546875">0<y:LabelModel><y:RowNodeLabelModel offset="3.0"/></y:LabelModel><y:ModelParameter><y:RowNodeLabelModelParameter horizontalPosition="0.0" id="row_0" inside="true"/></y:ModelParameter></y:NodeLabel>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" rotationAngle="270.0" textColor="#000000" verticalTextPosition="bottom" visible="true" width="11.587890625" x="3.0" xml:space="preserve" y="124.4775390625">1<y:LabelModel><y:RowNodeLabelModel offset="3.0"/></y:LabelModel><y:ModelParameter><y:RowNodeLabelModelParameter horizontalPosition="0.0" id="row_1" inside="true"/></y:ModelParameter></y:NodeLabel>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" rotationAngle="270.0" textColor="#000000" verticalTextPosition="bottom" visible="true" width="11.587890625" x="3.0" xml:space="preserve" y="177.0205078125">2<y:LabelModel><y:RowNodeLabelModel offset="3.0"/></y:LabelModel><y:ModelParameter><y:RowNodeLabelModelParameter horizontalPosition="0.0" id="row_2" inside="true"/></y:ModelParameter></y:NodeLabel>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" rotationAngle="270.0" textColor="#000000" verticalTextPosition="bottom" visible="true" width="11.587890625" x="3.0" xml:space="preserve" y="228.2919921875">3<y:LabelModel><y:RowNodeLabelModel offset="3.0"/></y:LabelModel><y:ModelParameter><y:RowNodeLabelModelParameter horizontalPosition="0.0" id="row_3" inside="true"/></y:ModelParameter></y:NodeLabel>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" rotationAngle="270.0" textColor="#000000" verticalTextPosition="bottom" visible="true" width="11.587890625" x="3.0" xml:space="preserve" y="278.2919921875">4<y:LabelModel><y:RowNodeLabelModel offset="3.0"/></y:LabelModel><y:ModelParameter><y:RowNodeLabelModelParameter horizontalPosition="0.0" id="row_4" inside="true"/></y:ModelParameter></y:NodeLabel>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" rotationAngle="270.0" textColor="#000000" verticalTextPosition="bottom" visible="true" width="11.587890625" x="3.0" xml:space="preserve" y="404.7919921875">5<y:LabelModel><y:RowNodeLabelModel offset="3.0"/></y:LabelModel><y:ModelParameter><y:RowNodeLabelModelParameter horizontalPosition="0.0" id="row_5" inside="true"/></y:ModelParameter></y:NodeLabel>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="25.4921875" x="51.25390625" xml:space="preserve" y="33.0">hex<y:LabelModel><y:ColumnNodeLabelModel offset="3.0"/></y:LabelModel><y:ModelParameter><y:ColumnNodeLabelModelParameter id="column_0" inside="true" verticalPosition="0.0"/></y:ModelParameter></y:NodeLabel>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="30.501953125" x="128.7490234375" xml:space="preserve" y="33.0">desc<y:LabelModel><y:ColumnNodeLabelModel offset="3.0"/></y:LabelModel><y:ModelParameter><y:ColumnNodeLabelModelParameter id="column_1" inside="true" verticalPosition="0.0"/></y:ModelParameter></y:NodeLabel>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" hasText="false" height="4.0" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="4.0" x="156.0" y="254.04296875">
+            <y:LabelModel>
+              <y:SmartNodeLabelModel distance="4.0"/>
+            </y:LabelModel>
+            <y:ModelParameter>
+              <y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/>
+            </y:ModelParameter>
+          </y:NodeLabel>
+          <y:StyleProperties>
+            <y:Property class="java.awt.Color" name="yed.table.section.color" value="#7192b2"/>
+            <y:Property class="java.lang.Double" name="yed.table.header.height" value="24.0"/>
+            <y:Property class="java.awt.Color" name="yed.table.lane.color.main" value="#c4d7ed"/>
+            <y:Property class="java.awt.Color" name="yed.table.lane.color.alternating" value="#abc8e2"/>
+            <y:Property class="java.awt.Color" name="yed.table.header.color.alternating" value="#abc8e2"/>
+            <y:Property class="java.lang.String" name="yed.table.lane.style" value="lane.style.rows"/>
+            <y:Property class="java.awt.Color" name="yed.table.header.color.main" value="#c4d7ed"/>
+          </y:StyleProperties>
+          <y:State autoResize="true" closed="false" closedHeight="80.0" closedWidth="100.0"/>
+          <y:Insets bottom="0" bottomF="0.0" left="0" leftF="0.0" right="0" rightF="0.0" top="0" topF="0.0"/>
+          <y:BorderInsets bottom="180" bottomF="179.8671875" left="15" leftF="15.0" right="15" rightF="15.0" top="5" topF="5.0"/>
+          <y:Table autoResizeTable="true" defaultColumnWidth="120.0" defaultMinimumColumnWidth="80.0" defaultMinimumRowHeight="50.0" defaultRowHeight="80.0">
+            <y:DefaultColumnInsets bottom="0.0" left="0.0" right="0.0" top="24.0"/>
+            <y:DefaultRowInsets bottom="0.0" left="24.0" right="0.0" top="0.0"/>
+            <y:Insets bottom="0.0" left="0.0" right="0.0" top="30.0"/>
+            <y:Columns>
+              <y:Column id="column_0" minimumWidth="80.0" width="80.0">
+                <y:Insets bottom="0.0" left="0.0" right="0.0" top="24.0"/>
+              </y:Column>
+              <y:Column id="column_1" minimumWidth="80.0" width="80.0">
+                <y:Insets bottom="0.0" left="0.0" right="0.0" top="24.0"/>
+              </y:Column>
+            </y:Columns>
+            <y:Rows>
+              <y:Row height="50.0" id="row_0" minimumHeight="50.0">
+                <y:Insets bottom="0.0" left="24.0" right="0.0" top="0.0"/>
+              </y:Row>
+              <y:Row height="52.54296875" id="row_1" minimumHeight="50.0">
+                <y:Insets bottom="0.0" left="24.0" right="0.0" top="0.0"/>
+              </y:Row>
+              <y:Row height="52.54296875" id="row_2" minimumHeight="50.0">
+                <y:Insets bottom="0.0" left="24.0" right="0.0" top="0.0"/>
+              </y:Row>
+              <y:Row height="50.0" id="row_3" minimumHeight="50.0">
+                <y:Insets bottom="0.0" left="24.0" right="0.0" top="0.0"/>
+              </y:Row>
+              <y:Row height="50.0" id="row_4" minimumHeight="50.0">
+                <y:Insets bottom="0.0" left="24.0" right="0.0" top="0.0"/>
+              </y:Row>
+              <y:Row height="203.0" id="row_5" minimumHeight="50.0">
+                <y:Insets bottom="0.0" left="24.0" right="0.0" top="0.0"/>
+              </y:Row>
+            </y:Rows>
+          </y:Table>
+        </y:TableNode>
+      </data>
+      <graph edgedefault="directed" id="n4:">
+        <node id="n4::n0">
+          <data key="d5"/>
+          <data key="d6">
+            <y:ShapeNode>
+              <y:Geometry height="22.0" width="48.0" x="39.0" y="59.0"/>
+              <y:Fill color="#FFCC00" transparent="false"/>
+              <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
+              <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="34.123046875" x="6.9384765625" xml:space="preserve" y="1.93359375">0x00<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
+              <y:Shape type="hexagon"/>
+            </y:ShapeNode>
+          </data>
+        </node>
+        <node id="n4::n1">
+          <data key="d5"/>
+          <data key="d6">
+            <y:ShapeNode>
+              <y:Geometry height="22.0" width="48.0" x="39.0" y="109.0"/>
+              <y:Fill color="#FFCC00" transparent="false"/>
+              <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
+              <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="34.123046875" x="6.9384765625" xml:space="preserve" y="1.93359375">0x01<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
+              <y:Shape type="hexagon"/>
+            </y:ShapeNode>
+          </data>
+        </node>
+        <node id="n4::n2">
+          <data key="d5"/>
+          <data key="d6">
+            <y:ShapeNode>
+              <y:Geometry height="15.0" width="48.0" x="39.0" y="163.109375"/>
+              <y:Fill color="#FFCC00" transparent="false"/>
+              <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
+              <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="34.123046875" x="6.9384765625" xml:space="preserve" y="-1.56640625">0x02<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
+              <y:Shape type="hexagon"/>
+            </y:ShapeNode>
+          </data>
+        </node>
+        <node id="n4::n3">
+          <data key="d5"/>
+          <data key="d6">
+            <y:ShapeNode>
+              <y:Geometry height="15.0" width="48.0" x="39.0" y="215.65234375"/>
+              <y:Fill color="#FFCC00" transparent="false"/>
+              <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
+              <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="34.123046875" x="6.9384765625" xml:space="preserve" y="-1.56640625">0x03<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
+              <y:Shape type="hexagon"/>
+            </y:ShapeNode>
+          </data>
+        </node>
+        <node id="n4::n4">
+          <data key="d5"/>
+          <data key="d6">
+            <y:ShapeNode>
+              <y:Geometry height="15.0" width="48.0" x="39.0" y="265.65234375"/>
+              <y:Fill color="#FFCC00" transparent="false"/>
+              <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
+              <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="34.123046875" x="6.9384765625" xml:space="preserve" y="-1.56640625">0x04<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
+              <y:Shape type="hexagon"/>
+            </y:ShapeNode>
+          </data>
+        </node>
+        <node id="n4::n5">
+          <data key="d5"/>
+          <data key="d6">
+            <y:ShapeNode>
+              <y:Geometry height="15.0" width="48.0" x="39.0" y="315.65234375"/>
+              <y:Fill color="#FFCC00" transparent="false"/>
+              <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
+              <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="34.123046875" x="6.9384765625" xml:space="preserve" y="-1.56640625">0x05<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
+              <y:Shape type="hexagon"/>
+            </y:ShapeNode>
+          </data>
+        </node>
+        <node id="n4::n6">
+          <data key="d5"/>
+          <data key="d6">
+            <y:ShapeNode>
+              <y:Geometry height="15.0" width="104.0" x="119.0" y="62.5"/>
+              <y:Fill color="#FFCC00" transparent="false"/>
+              <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
+              <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="72.044921875" x="15.9775390625" xml:space="preserve" y="-1.56640625">_NOT_USED<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
+              <y:Shape type="hexagon"/>
+            </y:ShapeNode>
+          </data>
+        </node>
+        <node id="n4::n7">
+          <data key="d5"/>
+          <data key="d6">
+            <y:ShapeNode>
+              <y:Geometry height="15.0" width="182.0" x="119.0" y="112.5"/>
+              <y:Fill color="#FFCC00" transparent="false"/>
+              <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
+              <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="161.224609375" x="10.3876953125" xml:space="preserve" y="-1.56640625">_Slave_Ports_ttl_decrement<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
+              <y:Shape type="hexagon"/>
+            </y:ShapeNode>
+          </data>
+        </node>
+        <node id="n4::n8">
+          <data key="d5"/>
+          <data key="d6">
+            <y:ShapeNode>
+              <y:Geometry height="15.0" width="182.0" x="119.0" y="163.109375"/>
+              <y:Fill color="#FFCC00" transparent="false"/>
+              <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
+              <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="160.66796875" x="10.666015625" xml:space="preserve" y="-1.56640625">request_confirm_Exp_state<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
+              <y:Shape type="hexagon"/>
+            </y:ShapeNode>
+          </data>
+        </node>
+        <node id="n4::n9">
+          <data key="d5"/>
+          <data key="d6">
+            <y:ShapeNode>
+              <y:Geometry height="15.0" width="182.0" x="119.0" y="215.65234375"/>
+              <y:Fill color="#FFCC00" transparent="false"/>
+              <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
+              <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="162.37890625" x="9.810546875" xml:space="preserve" y="-1.56640625">request_set_new_Exp_state<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
+              <y:Shape type="hexagon"/>
+            </y:ShapeNode>
+          </data>
+        </node>
+        <node id="n4::n10">
+          <data key="d5"/>
+          <data key="d6">
+            <y:ShapeNode>
+              <y:Geometry height="15.0" width="182.0" x="119.0" y="265.65234375"/>
+              <y:Fill color="#FFCC00" transparent="false"/>
+              <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
+              <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="138.3671875" x="21.81640625" xml:space="preserve" y="-1.56640625">_Slave_Ports_broadcast<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
+              <y:Shape type="hexagon"/>
+            </y:ShapeNode>
+          </data>
+        </node>
+        <node id="n4::n11">
+          <data key="d5"/>
+          <data key="d6">
+            <y:ShapeNode>
+              <y:Geometry height="15.0" width="182.0" x="119.0" y="315.65234375"/>
+              <y:Fill color="#FFCC00" transparent="false"/>
+              <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
+              <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="123.61328125" x="29.193359375" xml:space="preserve" y="-1.56640625">_Slave_Ports_set_I2C<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
+              <y:Shape type="hexagon"/>
+            </y:ShapeNode>
+          </data>
+        </node>
+      </graph>
+    </node>
+    <node id="n5" yfiles.foldertype="group">
+      <data key="d5"/>
+      <data key="d6">
+        <y:TableNode configuration="YED_TABLE_NODE">
+          <y:Geometry height="512.0859375" width="104.0" x="0.0" y="558.0"/>
+          <y:Fill color="#ECF5FF" color2="#0042F440" transparent="false"/>
+          <y:BorderStyle color="#000000" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="15" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="21.666015625" horizontalTextPosition="center" iconTextGap="4" modelName="internal" modelPosition="t" textColor="#000000" verticalTextPosition="bottom" visible="true" width="101.69775390625" x="1.151123046875" xml:space="preserve" y="4.0">ROTTARY_SW</y:NodeLabel>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" rotationAngle="270.0" textColor="#000000" verticalTextPosition="bottom" visible="true" width="42.54296875" x="3.0" xml:space="preserve" y="45.728515625">Lane 0<y:LabelModel><y:RowNodeLabelModel offset="3.0"/></y:LabelModel><y:ModelParameter><y:RowNodeLabelModelParameter horizontalPosition="0.0" id="row_0" inside="true"/></y:ModelParameter></y:NodeLabel>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" rotationAngle="270.0" textColor="#000000" verticalTextPosition="bottom" visible="true" width="42.54296875" x="3.0" xml:space="preserve" y="286.771484375">Lane 1<y:LabelModel><y:RowNodeLabelModel offset="3.0"/></y:LabelModel><y:ModelParameter><y:RowNodeLabelModelParameter horizontalPosition="0.0" id="row_1" inside="true"/></y:ModelParameter></y:NodeLabel>
+          <y:StyleProperties>
+            <y:Property class="java.awt.Color" name="yed.table.section.color" value="#7192b2"/>
+            <y:Property class="java.lang.Double" name="yed.table.header.height" value="24.0"/>
+            <y:Property class="java.awt.Color" name="yed.table.lane.color.main" value="#c4d7ed"/>
+            <y:Property class="java.awt.Color" name="yed.table.lane.color.alternating" value="#abc8e2"/>
+            <y:Property class="java.awt.Color" name="yed.table.header.color.alternating" value="#abc8e2"/>
+            <y:Property class="java.lang.String" name="yed.table.lane.style" value="lane.style.rows"/>
+            <y:Property class="java.awt.Color" name="yed.table.header.color.main" value="#c4d7ed"/>
+          </y:StyleProperties>
+          <y:State autoResize="true" closed="false" closedHeight="80.0" closedWidth="100.0"/>
+          <y:Insets bottom="0" bottomF="0.0" left="0" leftF="0.0" right="0" rightF="0.0" top="0" topF="0.0"/>
+          <y:BorderInsets bottom="0" bottomF="0.0" left="0" leftF="0.0" right="0" rightF="0.0" top="0" topF="0.0"/>
+          <y:Table autoResizeTable="true" defaultColumnWidth="120.0" defaultMinimumColumnWidth="80.0" defaultMinimumRowHeight="50.0" defaultRowHeight="80.0">
+            <y:DefaultColumnInsets bottom="0.0" left="0.0" right="0.0" top="0.0"/>
+            <y:DefaultRowInsets bottom="0.0" left="24.0" right="0.0" top="0.0"/>
+            <y:Insets bottom="0.0" left="0.0" right="0.0" top="30.0"/>
+            <y:Columns>
+              <y:Column id="column_0" minimumWidth="80.0" width="80.0">
+                <y:Insets bottom="0.0" left="0.0" right="0.0" top="0.0"/>
+              </y:Column>
+            </y:Columns>
+            <y:Rows>
+              <y:Row height="74.0" id="row_0" minimumHeight="50.0">
+                <y:Insets bottom="0.0" left="24.0" right="0.0" top="0.0"/>
+              </y:Row>
+              <y:Row height="408.0859375" id="row_1" minimumHeight="50.0">
+                <y:Insets bottom="0.0" left="24.0" right="0.0" top="0.0"/>
+              </y:Row>
+            </y:Rows>
+          </y:Table>
+        </y:TableNode>
+      </data>
+      <graph edgedefault="directed" id="n5:"/>
+    </node>
+    <node id="n6" yfiles.foldertype="group">
+      <data key="d5"/>
+      <data key="d6">
+        <y:TableNode configuration="YED_TABLE_NODE">
+          <y:Geometry height="512.0859375" width="104.0" x="150.0" y="558.0"/>
+          <y:Fill color="#ECF5FF" color2="#0042F440" transparent="false"/>
+          <y:BorderStyle color="#000000" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="15" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="21.666015625" horizontalTextPosition="center" iconTextGap="4" modelName="internal" modelPosition="t" textColor="#000000" verticalTextPosition="bottom" visible="true" width="103.47021484375" x="0.264892578125" xml:space="preserve" y="4.0">TFT_ILI9163C</y:NodeLabel>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" rotationAngle="270.0" textColor="#000000" verticalTextPosition="bottom" visible="true" width="35.76953125" x="3.0" xml:space="preserve" y="49.115234375">L0,L1<y:LabelModel><y:RowNodeLabelModel offset="3.0"/></y:LabelModel><y:ModelParameter><y:RowNodeLabelModelParameter horizontalPosition="0.0" id="row_0" inside="true"/></y:ModelParameter></y:NodeLabel>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" rotationAngle="270.0" textColor="#000000" verticalTextPosition="bottom" visible="true" width="35.76953125" x="3.0" xml:space="preserve" y="290.158203125">L2,L3<y:LabelModel><y:RowNodeLabelModel offset="3.0"/></y:LabelModel><y:ModelParameter><y:RowNodeLabelModelParameter horizontalPosition="0.0" id="row_1" inside="true"/></y:ModelParameter></y:NodeLabel>
+          <y:StyleProperties>
+            <y:Property class="java.awt.Color" name="yed.table.section.color" value="#7192b2"/>
+            <y:Property class="java.lang.Double" name="yed.table.header.height" value="24.0"/>
+            <y:Property class="java.awt.Color" name="yed.table.lane.color.main" value="#c4d7ed"/>
+            <y:Property class="java.awt.Color" name="yed.table.lane.color.alternating" value="#abc8e2"/>
+            <y:Property class="java.awt.Color" name="yed.table.header.color.alternating" value="#abc8e2"/>
+            <y:Property class="java.lang.String" name="yed.table.lane.style" value="lane.style.rows"/>
+            <y:Property class="java.awt.Color" name="yed.table.header.color.main" value="#c4d7ed"/>
+          </y:StyleProperties>
+          <y:State autoResize="true" closed="false" closedHeight="80.0" closedWidth="100.0"/>
+          <y:Insets bottom="0" bottomF="0.0" left="0" leftF="0.0" right="0" rightF="0.0" top="0" topF="0.0"/>
+          <y:BorderInsets bottom="0" bottomF="0.0" left="0" leftF="0.0" right="0" rightF="0.0" top="0" topF="0.0"/>
+          <y:Table autoResizeTable="true" defaultColumnWidth="120.0" defaultMinimumColumnWidth="80.0" defaultMinimumRowHeight="50.0" defaultRowHeight="80.0">
+            <y:DefaultColumnInsets bottom="0.0" left="0.0" right="0.0" top="0.0"/>
+            <y:DefaultRowInsets bottom="0.0" left="24.0" right="0.0" top="0.0"/>
+            <y:Insets bottom="0.0" left="0.0" right="0.0" top="30.0"/>
+            <y:Columns>
+              <y:Column id="column_0" minimumWidth="80.0" width="80.0">
+                <y:Insets bottom="0.0" left="0.0" right="0.0" top="0.0"/>
+              </y:Column>
+            </y:Columns>
+            <y:Rows>
+              <y:Row height="74.0" id="row_0" minimumHeight="50.0">
+                <y:Insets bottom="0.0" left="24.0" right="0.0" top="0.0"/>
+              </y:Row>
+              <y:Row height="408.0859375" id="row_1" minimumHeight="50.0">
+                <y:Insets bottom="0.0" left="24.0" right="0.0" top="0.0"/>
+              </y:Row>
+            </y:Rows>
+          </y:Table>
+        </y:TableNode>
+      </data>
+      <graph edgedefault="directed" id="n6:"/>
+    </node>
+    <node id="n7" yfiles.foldertype="group">
+      <data key="d5"/>
+      <data key="d6">
+        <y:TableNode configuration="YED_TABLE_NODE">
+          <y:Geometry height="512.0859375" width="104.0" x="300.0" y="558.0"/>
+          <y:Fill color="#ECF5FF" color2="#0042F440" transparent="false"/>
+          <y:BorderStyle color="#000000" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="15" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="21.666015625" horizontalTextPosition="center" iconTextGap="4" modelName="internal" modelPosition="t" textColor="#000000" verticalTextPosition="bottom" visible="true" width="79.05126953125" x="12.474365234375" xml:space="preserve" y="4.0">1602_LCD</y:NodeLabel>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" rotationAngle="270.0" textColor="#000000" verticalTextPosition="bottom" visible="true" width="17.986328125" x="3.0" xml:space="preserve" y="58.0068359375">L0<y:LabelModel><y:RowNodeLabelModel offset="3.0"/></y:LabelModel><y:ModelParameter><y:RowNodeLabelModelParameter horizontalPosition="0.0" id="row_0" inside="true"/></y:ModelParameter></y:NodeLabel>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" rotationAngle="270.0" textColor="#000000" verticalTextPosition="bottom" visible="true" width="17.986328125" x="3.0" xml:space="preserve" y="299.0498046875">L1<y:LabelModel><y:RowNodeLabelModel offset="3.0"/></y:LabelModel><y:ModelParameter><y:RowNodeLabelModelParameter horizontalPosition="0.0" id="row_1" inside="true"/></y:ModelParameter></y:NodeLabel>
+          <y:StyleProperties>
+            <y:Property class="java.awt.Color" name="yed.table.section.color" value="#7192b2"/>
+            <y:Property class="java.lang.Double" name="yed.table.header.height" value="24.0"/>
+            <y:Property class="java.awt.Color" name="yed.table.lane.color.main" value="#c4d7ed"/>
+            <y:Property class="java.awt.Color" name="yed.table.lane.color.alternating" value="#abc8e2"/>
+            <y:Property class="java.awt.Color" name="yed.table.header.color.alternating" value="#abc8e2"/>
+            <y:Property class="java.lang.String" name="yed.table.lane.style" value="lane.style.rows"/>
+            <y:Property class="java.awt.Color" name="yed.table.header.color.main" value="#c4d7ed"/>
+          </y:StyleProperties>
+          <y:State autoResize="true" closed="false" closedHeight="80.0" closedWidth="100.0"/>
+          <y:Insets bottom="0" bottomF="0.0" left="0" leftF="0.0" right="0" rightF="0.0" top="0" topF="0.0"/>
+          <y:BorderInsets bottom="0" bottomF="0.0" left="0" leftF="0.0" right="0" rightF="0.0" top="0" topF="0.0"/>
+          <y:Table autoResizeTable="true" defaultColumnWidth="120.0" defaultMinimumColumnWidth="80.0" defaultMinimumRowHeight="50.0" defaultRowHeight="80.0">
+            <y:DefaultColumnInsets bottom="0.0" left="0.0" right="0.0" top="0.0"/>
+            <y:DefaultRowInsets bottom="0.0" left="24.0" right="0.0" top="0.0"/>
+            <y:Insets bottom="0.0" left="0.0" right="0.0" top="30.0"/>
+            <y:Columns>
+              <y:Column id="column_0" minimumWidth="80.0" width="80.0">
+                <y:Insets bottom="0.0" left="0.0" right="0.0" top="0.0"/>
+              </y:Column>
+            </y:Columns>
+            <y:Rows>
+              <y:Row height="74.0" id="row_0" minimumHeight="50.0">
+                <y:Insets bottom="0.0" left="24.0" right="0.0" top="0.0"/>
+              </y:Row>
+              <y:Row height="408.0859375" id="row_1" minimumHeight="50.0">
+                <y:Insets bottom="0.0" left="24.0" right="0.0" top="0.0"/>
+              </y:Row>
+            </y:Rows>
+          </y:Table>
+        </y:TableNode>
+      </data>
+      <graph edgedefault="directed" id="n7:"/>
+    </node>
+    <node id="n8" yfiles.foldertype="group">
+      <data key="d5"/>
+      <data key="d6">
+        <y:TableNode configuration="com.yworks.bpmn.Pool">
+          <y:Geometry height="512.0859375" width="181.62109375" x="834.37890625" y="0.0"/>
+          <y:Fill color="#FFF2BC" color2="#D4D4D4CC" transparent="false"/>
+          <y:BorderStyle color="#000000" type="line" width="1.0"/>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="15" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="21.666015625" horizontalTextPosition="center" iconTextGap="4" modelName="internal" modelPosition="l" rotationAngle="270.0" textColor="#000000" verticalTextPosition="bottom" visible="true" width="147.4521484375" x="4.0" xml:space="preserve" y="182.31689453125">_CAN_MSG_STRUCT</y:NodeLabel>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" rotationAngle="270.0" textColor="#000000" verticalTextPosition="bottom" visible="true" width="57.900390625" x="33.0" xml:space="preserve" y="33.0498046875">_Slave_ID<y:LabelModel><y:RowNodeLabelModel offset="3.0"/></y:LabelModel><y:ModelParameter><y:RowNodeLabelModelParameter horizontalPosition="0.0" id="row_0" inside="true"/></y:ModelParameter></y:NodeLabel>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" rotationAngle="270.0" textColor="#000000" verticalTextPosition="bottom" visible="true" width="42.54296875" x="33.0" xml:space="preserve" y="109.0">Lane 2<y:LabelModel><y:RowNodeLabelModel offset="3.0"/></y:LabelModel><y:ModelParameter><y:RowNodeLabelModelParameter horizontalPosition="0.0" id="row_1" inside="true"/></y:ModelParameter></y:NodeLabel>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" rotationAngle="270.0" textColor="#000000" verticalTextPosition="bottom" visible="true" width="42.54296875" x="33.0" xml:space="preserve" y="161.54296875">Lane 3<y:LabelModel><y:RowNodeLabelModel offset="3.0"/></y:LabelModel><y:ModelParameter><y:RowNodeLabelModelParameter horizontalPosition="0.0" id="row_2" inside="true"/></y:ModelParameter></y:NodeLabel>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" rotationAngle="270.0" textColor="#000000" verticalTextPosition="bottom" visible="true" width="56.798828125" x="33.0" xml:space="preserve" y="205.6865234375">New Row<y:LabelModel><y:RowNodeLabelModel offset="3.0"/></y:LabelModel><y:ModelParameter><y:RowNodeLabelModelParameter horizontalPosition="0.0" id="row_3" inside="true"/></y:ModelParameter></y:NodeLabel>
+          <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" rotationAngle="270.0" textColor="#000000" verticalTextPosition="bottom" visible="true" width="56.798828125" x="33.0" xml:space="preserve" y="355.6865234375">New Row<y:LabelModel><y:RowNodeLabelModel offset="3.0"/></y:LabelModel><y:ModelParameter><y:RowNodeLabelModelParameter horizontalPosition="0.0" id="row_4" inside="true"/></y:ModelParameter></y:NodeLabel>
+          <y:StyleProperties>
+            <y:Property name="y.view.tabular.TableNodePainter.ALTERNATE_ROW_STYLE">
+              <y:SimpleStyle fillColor="#474A4340" lineColor="#000000" lineType="line" lineWidth="1.0"/>
+            </y:Property>
+            <y:Property class="java.awt.Color" name="com.yworks.bpmn.icon.line.color" value="#000000"/>
+            <y:Property name="y.view.tabular.TableNodePainter.ALTERNATE_COLUMN_SELECTION_STYLE">
+              <y:SimpleStyle fillColor="#474A4380" lineColor="#000000" lineType="line" lineWidth="3.0"/>
+            </y:Property>
+            <y:Property name="y.view.tabular.TableNodePainter.ALTERNATE_ROW_SELECTION_STYLE">
+              <y:SimpleStyle fillColor="#474A4380" lineColor="#000000" lineType="line" lineWidth="3.0"/>
+            </y:Property>
+            <y:Property class="java.awt.Color" name="POOL_LANE_COLOR_ALTERNATING" value="#ffffff"/>
+            <y:Property class="java.awt.Color" name="POOL_LANE_COLOR_MAIN" value="#ffffff"/>
+            <y:Property class="java.lang.String" name="POOL_LANE_STYLE" value="LANE_STYLE_COLUMNS"/>
+            <y:Property class="java.awt.Color" name="com.yworks.bpmn.icon.fill2" value="#d4d4d4cc"/>
+            <y:Property class="java.awt.Color" name="com.yworks.bpmn.icon.fill" value="#ffffffe6"/>
+            <y:Property class="com.yworks.yfiles.bpmn.view.BPMNTypeEnum" name="com.yworks.bpmn.type" value="POOL_TYPE_LANE"/>
+            <y:Property name="y.view.tabular.TableNodePainter.ALTERNATE_COLUMN_STYLE">
+              <y:SimpleStyle fillColor="#474A4340" lineColor="#000000" lineType="line" lineWidth="1.0"/>
+            </y:Property>
+          </y:StyleProperties>
+          <y:State autoResize="true" closed="false" closedHeight="80.0" closedWidth="100.0"/>
+          <y:Insets bottom="0" bottomF="0.0" left="0" leftF="0.0" right="0" rightF="0.0" top="0" topF="0.0"/>
+          <y:BorderInsets bottom="318" bottomF="317.54296875" left="30" leftF="29.62109375" right="0" rightF="0.0" top="142" topF="141.54296875"/>
+          <y:Table autoResizeTable="true" defaultColumnWidth="360.0" defaultMinimumColumnWidth="30.0" defaultMinimumRowHeight="30.0" defaultRowHeight="107.0">
+            <y:DefaultColumnInsets bottom="3.0" left="3.0" right="3.0" top="20.0"/>
+            <y:DefaultRowInsets bottom="3.0" left="20.0" right="3.0" top="3.0"/>
+            <y:Insets bottom="0.0" left="30.0" right="0.0" top="0.0"/>
+            <y:Columns>
+              <y:Column id="column_0" minimumWidth="30.0" width="128.62109375">
+                <y:Insets bottom="3.0" left="3.0" right="3.0" top="20.0"/>
+              </y:Column>
+            </y:Columns>
+            <y:Rows>
+              <y:Row height="84.0" id="row_0" minimumHeight="52.54296875">
+                <y:Insets bottom="3.0" left="20.0" right="3.0" top="3.0"/>
+              </y:Row>
+              <y:Row height="52.54296875" id="row_1" minimumHeight="52.54296875">
+                <y:Insets bottom="3.0" left="20.0" right="3.0" top="3.0"/>
+              </y:Row>
+              <y:Row height="52.54296875" id="row_2" minimumHeight="52.54296875">
+                <y:Insets bottom="3.0" left="20.0" right="3.0" top="3.0"/>
+              </y:Row>
+              <y:Row height="50.0" id="row_3" minimumHeight="30.0">
+                <y:Insets bottom="3.0" left="20.0" right="3.0" top="3.0"/>
+              </y:Row>
+              <y:Row height="250.0" id="row_4" minimumHeight="30.0">
+                <y:Insets bottom="3.0" left="20.0" right="3.0" top="3.0"/>
+              </y:Row>
+            </y:Rows>
+          </y:Table>
+        </y:TableNode>
+      </data>
+      <graph edgedefault="directed" id="n8:">
+        <node id="n8::n0">
+          <data key="d5"/>
+          <data key="d6">
+            <y:ShapeNode>
+              <y:Geometry height="30.0" width="99.0" x="914.0" y="161.54296875"/>
+              <y:Fill color="#FFCC00" transparent="false"/>
+              <y:BorderStyle color="#000000" raised="false" type="line" width="1.0"/>
+              <y:NodeLabel alignment="center" autoSizePolicy="content" fontFamily="Dialog" fontSize="12" fontStyle="plain" hasBackgroundColor="false" hasLineColor="false" height="18.1328125" horizontalTextPosition="center" iconTextGap="4" modelName="custom" textColor="#000000" verticalTextPosition="bottom" visible="true" width="59.2421875" x="19.87890625" xml:space="preserve" y="5.93359375">task_type<y:LabelModel><y:SmartNodeLabelModel distance="4.0"/></y:LabelModel><y:ModelParameter><y:SmartNodeLabelModelParameter labelRatioX="0.0" labelRatioY="0.0" nodeRatioX="0.0" nodeRatioY="0.0" offsetX="0.0" offsetY="0.0" upX="0.0" upY="-1.0"/></y:ModelParameter></y:NodeLabel>
+              <y:Shape type="hexagon"/>
+            </y:ShapeNode>
+          </data>
+        </node>
+      </graph>
+    </node>
+    <edge id="e0" source="n4" target="n8::n0">
+      <data key="d9"/>
+      <data key="d10">
+        <y:PolyLineEdge>
+          <y:Path sx="0.0" sy="0.0" tx="0.0" ty="0.0"/>
+          <y:LineStyle color="#000000" type="line" width="1.0"/>
+          <y:Arrows source="none" target="standard"/>
+          <y:BendStyle smoothed="false"/>
+        </y:PolyLineEdge>
+      </data>
+    </edge>
+  </graph>
+  <data key="d7">
+    <y:Resources/>
+  </data>
+</graphml>

+ 48 - 41
SE/stuff/P5_Automation_can-dev/P5_Automation_can-dev.ino

@@ -113,6 +113,36 @@
   int lcdPos = 0 ;
   #include "LCD1602.h"
 #endif
+
+
+#if defined(HAS_TFT_ILI9163C)
+
+  #include <SPI.h>
+  #include <Adafruit_GFX.h>
+  #include <TFT_ILI9163C.h>
+  #include "TFT_ILI9163C.h"
+
+#endif
+
+
+
+//BEGIN CAN
+
+
+#include <mcp_can.h>
+#include <SPI.h>
+
+long unsigned int CANrxId;
+unsigned char CANlen = 0;
+unsigned char CANrxBuf[8];
+const int CAN_CSpin = 53 , CAN_INTpin = 10 ;
+MCP_CAN CAN0(CAN_CSpin);                          // Set CS to pin 10
+//EOF CAN
+
+
+
+
+
  //REMOTE PORTS DEFINITIONS
 
   #include "_Slave_Ports.h"
@@ -144,28 +174,6 @@
 /**********************************************************/
 //EOF BEGIN 1602
 
-#if defined(HAS_TFT_ILI9163C)
-
-  #include <SPI.h>
-  #include <Adafruit_GFX.h>
-  #include <TFT_ILI9163C.h>
-  #include "TFT_ILI9163C.h"
-
-#endif
-
-
-//BEGIN CAN
-
-
-#include <mcp_can.h>
-#include <SPI.h>
-
-long unsigned int CANrxId;
-unsigned char CANlen = 0;
-unsigned char CANrxBuf[8];
-const int CAN_CSpin = 53 , CAN_INTpin = 10 ;
-MCP_CAN CAN0(CAN_CSpin);                          // Set CS to pin 10
-//EOF CAN
 
 #include "_PCINT.h"
 
@@ -205,17 +213,15 @@ void setup() {
   
   // put your setup code here, to run once:
   #if defined(HAS_LCD1602)
-    lcd.begin(16, 2);  // set up the LCD's number of columns and rows:
-    lcd.print("TESTING id:");
-    lcd.print(Active_ControllerID);
-    lcd.setCursor(0,1);
-    lcd.print(LCDarray2);
-    delay(LCDtim * 5);
-     
-    
+  lcd.begin(16, 2);
+     LCD_print(LCDarray1, LCDarray2, LCDtim/5);
   #endif
 
   #if defined(HAS_TFT_ILI9163C)
+
+  
+  TFT_ILI9163C display = TFT_ILI9163C(TFT_ILI9163C_CSpin, TFT_ILI9163C_DCpin, TFT_ILI9163C__RSTpin);
+  float p = 3.1415926;
      display.begin();
      display.clearScreen();
      display.setCursor(0,0);
@@ -229,14 +235,11 @@ void setup() {
  
   //if(CAN0.begin(MCP_STDEXT, CAN_500KBPS, MCP_16MHZ) == CAN_OK) {
   if(CAN0.begin(MCP_ANY, CAN_500KBPS, MCP_16MHZ) == CAN_OK) {
-    
-   Serial.print("MCP2515 Init Okay!!\r\n");
+     LCDarray1="MCP2515 Init Okay";
+     LCDarray2="500KBPS 16MHZ";
+   Serial.print(LCDarray1 + LCDarray2);
     #if defined(HAS_LCD1602)
-      delay(LCDtim);  
-      lcd.setCursor(0,1); 
-      lcd.print("MCP2515 Init Okay!!\r\n");
-      delay(LCDtim); 
-   //  lcd.clear();  
+      LCD_print(LCDarray1, LCDarray2, LCDtim/5);
     #endif
     #if defined(HAS_TFT_ILI9163C)
       delay(LCDtim);  
@@ -290,9 +293,10 @@ void setup() {
 
   //EOF CAN
    #if defined(HAS_LCD1602) 
-      lcd.setCursor(0,1); 
-      lcd.print("loop...");
-      lcdPos = 7;
+      LCDarray1 = "loop.... ";
+      LCDarray2 = "....";
+     LCD_print(LCDarray1, LCDarray2, LCDtim/10);
+     
     #endif
 
 
@@ -303,7 +307,10 @@ _Slave_Ports_queue__list(_Slave_Ports_queue_tasks_LIST);
   int _Slave_Ports_queue_peek =  _Slave_Ports_queue.peek() ;
 //  int _Slave_Ports_queue_push = _Slave_Ports_queue.push(_Slave_Ports_queue.peek() + 1) ; 
   //int _Slave_Ports_queue_peek_new = _Slave_Ports_queue.peek() ; _Slave_Ports_queue__add(  *_Slave_Ports_queue_tasks_LIST, 0x01 ,0x00 ,100, 5000 ) ;  // _Slave_Ports_queue_peek, _Slave_Ports_queue.push(_Slave_Ports_queue.peek() + 1), _Slave_Ports_queue.peek());
-_Slave_Ports_queue__add(  _Slave_Ports_queue_tasks_LIST, 0x01 ,0x00 ,100, 5000 ) ;  
+//void _Slave_Ports_queue__add( _Slave_Ports_queue_tasksT* _Slave_Ports_queue_tasks_LIST,int _Slave_Ports_queue_task_type,int _Slave_Port_link,long time_seq_id, long time_min_run //, 
+_Slave_Ports_queue__add(     _Slave_Ports_queue_tasks_LIST,  int(0x04) ,0x00 ,100, 5000 ) ;  //        "_Slave_Ports_broadcast", //4
+_Slave_Ports_queue__add(  _Slave_Ports_queue_tasks_LIST, 0x05 ,0x00 ,100, 5000 ) ;  //"_Slave_Ports_set_I2C" //5  - to set ports associated on PW
+
  //  _Slave_Ports_queue_peek =  _Slave_Ports_queue.peek() ; 
    //_Slave_Ports_queue_push =  _Slave_Ports_queue.push(_Slave_Ports_queue.peek() + 1) ;  
    //_Slave_Ports_queue_peek_new = _Slave_Ports_queue.peek() ; 

BIN
SE/stuff/P5_Automation_can-dev/P5_Automation_can-dev.numbers


+ 2 - 2
SE/stuff/P5_Automation_can-dev/TFT_ILI9163C..h

@@ -18,5 +18,5 @@
   #define YELLOW  0xFFE0  
   #define WHITE   0xFFFF
 
-  TFT_ILI9163C display = TFT_ILI9163C(TFT_ILI9163C_CSpin, TFT_ILI9163C_DCpin, TFT_ILI9163C__RSTpin);
-  float p = 3.1415926;
+ // TFT_ILI9163C display = TFT_ILI9163C(TFT_ILI9163C_CSpin, TFT_ILI9163C_DCpin, TFT_ILI9163C__RSTpin);
+ // float p = 3.1415926;

+ 1 - 127
SE/stuff/P5_Automation_can-dev/_ControllerID_loop1.h

@@ -3,132 +3,6 @@
          
           
           
-           Serial.println("For tesing init remote ports");
-      
-           for (auto element: _Slave_Ports) {
-             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") { 
-
-                //  if(element.PortTypes == 0x80) {
-                       Serial.println(" Prepared data");
-
-
-                        #if defined(HAS_LCD1602)
-                               delay(LCDtim);  
-                              
-                               
-                             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));
-                             LCDarray1.concat("                "); //1234567890ABCDEFGHIJKLMNOPQRTSWabcdefghijklmnopqrstwquwz
-                            // 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, element.LocalPort, element.PortTypes, element.LocalPort, element.Exp_state, element.Exp_state_ttl, 0x06, 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)
-
-                                    /*
-                                           Serial.print("_LCD_print_queue.push: " );
-                                           Serial.print(_LCD_print_queue.back());
-                                             Serial.println(" + 1 " );
-                                                lcd.clear(); 
-                                               lcd.setCursor(0,0);
-                                                lcd.print("Q:"); lcd.print(_LCD_print_queue.back());  lcd.print(" + 1, PQ:" );   lcd.print( _LCD_print_queue.peek());
-                                               
-                                            _LCD_print_queue.push(_LCD_print_queue.peek() + 1);
-                                           
-                                             LCD_print_background_screen_add( _LCD_print_screens, _LCD_print_queue.peek() ,time, time + 1000,  LCDarray1a, 
-                                             LCDarray2buf  );
-                                                  lcd.setCursor(0,1);
-                                                  lcd.print("Q:"); lcd.print(_LCD_print_queue.back()); lcd.print(" Fr:"); lcd.print( _LCD_print_queue.front()); lcd.print(" PQ:" );  lcd.print( _LCD_print_queue.peek());
-                                                 delay(LCDtim * 10);
-                                          //EOF QUEUE
-
-                                    */
-
-
-
-
-
-                                  
-                                   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);
-
-
+     
           
         

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

@@ -40,8 +40,24 @@ if(!digitalRead(CAN_INTpin))                    // If pin 2 is low, read receive
                   display.print(CANrxBuf[i], HEX);
                   display.print(" ");
                #endif
+
+               if(_Slave_Ports_queue_task_type_LIST[i]) {
+                   Serial.print(" [");  Serial.print(_Slave_Ports_queue_task_type_LIST[i]);   Serial.print("] "); 
+               }
+               
             }
             Serial.println();
+
+
+
+         
+
+
+
+
+
+
+            
           }
         //EOF CAN
           #if defined(HAS_LCD1602)
@@ -63,4 +79,4 @@ if(!digitalRead(CAN_INTpin))                    // If pin 2 is low, read receive
             display.setCursor(0,60); 
             display.print("loop....");
           #endif
-          
+          

+ 227 - 22
SE/stuff/P5_Automation_can-dev/_Slave_Ports.h

@@ -1,9 +1,25 @@
 #include "_Slave_Ports_ttl_decrement.h"
 
+
+
+
 typedef struct  {
   const char * const _Protocol;
-  int _Slave_ID;
-  int PortTypes;  //0xFF  =  1111 1111 {  PWM,  .....} = 0x80
+  int _Slave_ID; //remote id - use FF for broadcast
+  int PortTypes;  //0xFF  =  1111 1111 s
+                                          /*
+                                          {
+                                      bit 1 - PWM port
+                                      bit 2 - on I2C managed port
+                                      bit 3 - expanded port with LocalPort address
+                                      bit 4 - not allocated
+                                      bit 2 - not allocated
+                                      bit 5 - not allocated
+                                      bit 6 - not allocated
+                                      bit 7 - not allocated
+                                      bit 8 - not allocated
+                                    } 
+                                           */
  // byte has_Address;
   int Address ;
  // byte has_Local_Port;
@@ -23,19 +39,21 @@ typedef struct  {
                                       bit 8 - not allocated
                                     }*/
   int Exp_state_ttl;  // 0x00 = odswiezyc
+  //int Broadcast_state; //0x00 - not broadcast; 0x01
 } _Slave_Port;
 
+
+
+/*
+ * 
 _Slave_Port _Slave_Ports[] = {
   {"CAN", 0x102, 0x01, 0x00, 0x00, 0x00, 0x00 }
   //,
   //{"CAN", 0x102, 0x01, 0x00, 0x01, 0xFF, 0x6d } //testowy ttl
 };
-
-
-
-
-
-
+*/
+#include "_Slave_Ports_LOCAL.h"
+#include "_Slave_Ports_queue_task_type_LIST.h"
 
 
  struct _Slave_Ports_queue_tasksS {
@@ -43,7 +61,8 @@ _Slave_Port _Slave_Ports[] = {
   int _Slave_Ports_queue_task_type ; /*
               { 0x01 _Slave_Ports_ttl_decrement, 
                  0x02  request_confirm_Exp_state ,
-                 0x03  request_set__new_Exp_state,
+                 0x03  request_set_new_Exp_state,
+                 0x04 
                   }
   */
   int _Slave_Port_link; //todo link
@@ -76,24 +95,29 @@ void _Slave_Ports_queue__INIT( _Slave_Ports_queue_tasksT* _Slave_Ports_queue_tas
 }
 
 
-char _Slave_Ports_queue_task_type_DESC( int _Slave_Ports_queue_task_type ) {//, int* res
+String _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";
   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";
   else {
     res=0x99; // res="_UNKNOIWN";
     Serial.print("#82 Get [");  Serial.print(_Slave_Ports_queue_task_type); Serial.println("] #82 [U] ");
   }
-  */
+  *//*
  // char return_i;
   Serial.print("=["); Serial.print(_Slave_Ports_queue_task_type); Serial.print("] ");
  if(_Slave_Ports_queue_task_type == 0x01)   Serial.print("_Slave_Ports_ttl_decrement"); // return "_Slave_Ports_ttl_decrement";
   else if(_Slave_Ports_queue_task_type == 0x02)  Serial.print("request_confirm_Exp_state"); //return "request_confirm_Exp_state";
-  else if(_Slave_Ports_queue_task_type == 0x03)   Serial.print("request_set__new_Exp_state"); //return "request_set__new_Exp_state";
+  else if(_Slave_Ports_queue_task_type == 0x03)   Serial.print("request_set_new_Exp_state"); //return "request_set__new_Exp_state";
   else //return_i = "_UNKNOIWN"; //return "_UNKNOIWN";
    Serial.print("_UNKNOIWN");
 // Serial.print((String)return_i);
 //  return return_i ;
+*/
+ //Serial.print(_Slave_Ports_queue_task_type[_Slave_Ports_queue_task_type]); 
+  return _Slave_Ports_queue_task_type_LIST[_Slave_Ports_queue_task_type]; 
+ //  String ret = "aaaaxxx";
+   //return ret;
 }
 
 
@@ -113,10 +137,16 @@ void _Slave_Ports_queue__list( _Slave_Ports_queue_tasksT* _Slave_Ports_queue_tas
                  Serial.print("] queueID: ");
                 Serial.print(_Slave_Ports_queue_tasks_LIST[i].queueID);
 
-                
+                   
+
                  Serial.print("] _Slave_Ports_queue_task_type: ");
+                                 Serial.print(_Slave_Ports_queue_tasks_LIST[i]._Slave_Ports_queue_task_type);
+                  Serial.print("] desc: ");
                  //Slave_Ports_queue_task_type_DESC(_Slave_Ports_queue_tasks_LIST[i]._Slave_Ports_queue_task_type);
-                 int res = _Slave_Ports_queue_task_type_DESC(_Slave_Ports_queue_tasks_LIST[i]._Slave_Ports_queue_task_type);  Serial.print(res);
+                 //char 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));
+                  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
 
   
@@ -140,7 +170,7 @@ void _Slave_Ports_queue__list( _Slave_Ports_queue_tasksT* _Slave_Ports_queue_tas
   int _Slave_Ports_queue_task_type ; /*
               { 0x01 _Slave_Ports_ttl_decrement, 
                  0x02  request_confirm_Exp_state ,
-                 0x03  request_set__new_Exp_state,
+                 0x03  request_set_new_Exp_state,
                  0x04   _Slave_Ports_ttl_decrement }
  
   int _Slave_Port_link; //todo link
@@ -220,7 +250,8 @@ int _Slave_Ports_queue_task_type, int _Slave_Port_link, long time_seq_id, long t
 
       }
     }
-   
+
+
  /*
    const char * const _Protocol;
   int _Slave_ID;
@@ -250,6 +281,156 @@ 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 ) {
+        Serial.println("#251 _Slave_Ports_broadcast_POP");
+          int i;
+          for(i=0;i<=100;i++) {
+            if(_Slave_Ports[i]._Protocol == "CAN") {
+              Serial.print(" ind:"); Serial.print(i);  Serial.print("] Prot:");
+              Serial.print(_Slave_Ports[i]._Protocol);
+              Serial.print(" , ID:"); 
+              Serial.print(_Slave_Ports[i]._Slave_ID, HEX); Serial.print(" , PortTypes:");
+             Serial.print(_Slave_Ports[i].PortTypes, HEX); Serial.print(" , Addr:"); Serial.print(_Slave_Ports[i].Address, HEX);
+              Serial.print(" , Local:"); Serial.print(_Slave_Ports[i].LocalPort);
+              Serial.print(" , Exp state:"); Serial.print(_Slave_Ports[i].Exp_state);
+                Serial.print(" , Exp_state_ttl"); Serial.println(_Slave_Ports[i].Exp_state_ttl);  
+
+
+                        Serial.println(" Prepared data");
+                        #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));
+                            // 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 ) ;
+                        #endif
+                        //                        (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["); 
+                       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("] ");
+                 byte sndStat = CAN0.sendMsgBuf(_Slave_Ports[i]._Slave_ID, 0, 8, data);
+              //    byte sndStat ;
+                          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)
+                                    LCD_print(LCDarray1,LCDarray2,LCDtim);
+                                  /*
+                                   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
+                }
+
+
+                          
+                                
+                     
+
+             
+
+
+                
+            }
+          
+
+          /*
+           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
  
 
  void _Slave_Ports_queue__POP( _Slave_Ports_queue_tasksT* _Slave_Ports_queue_tasks_LIST, 
@@ -297,20 +478,27 @@ int _Slave_Ports_queue_task_type, int _Slave_Port_link, long time_seq_id, long t
                    Serial.println(LCDarray2);
                     LCD_print(LCDarray1, LCDarray2, LCDtim / 3 ) ;
               } else {
-                   String LCDarray1 = " Running task";
+                   String LCDarray1 = "#407 Running task";
                    String LCDarray2 = "ID: ";
-                    LCDarray2.concat( _Slave_Ports_queue_pop);  LCDarray2.concat("] ");
+                    LCDarray2.concat( _Slave_Ports_queue_pop);  LCDarray2.concat("] task_type[");
+                      
+                        LCDarray2.concat( _Slave_Ports_queue_tasks_LIST[_Slave_Ports_queue_pop]._Slave_Ports_queue_task_type);  LCDarray2.concat("] ");
+                   
                    Serial.print(LCDarray1);
                    Serial.println(LCDarray2);
                     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);
                             #include "_Slave_Ports_ttl_decrement.h"
                            _Slave_Ports_ttl_decrement_POP(_Slave_Ports_queue_tasks_LIST, _Slave_Ports_queue_pop ,  _Slave_Ports ) ; 
-
                            
-                        } else {
+                        } else if( _Slave_Ports_queue_tasks_LIST[_Slave_Ports_queue_pop]._Slave_Ports_queue_task_type == 0x04 ) {
+                           Serial.print("#337 running _Slave_Ports_broadcast = ");     Serial.println( _Slave_Ports_queue_tasks_LIST[_Slave_Ports_queue_pop]._Slave_Ports_queue_task_type);
+                            #include "_Slave_Ports_ttl_decrement.h"
+                           _Slave_Ports_broadcast_POP(_Slave_Ports_queue_tasks_LIST, _Slave_Ports_queue_pop ,  _Slave_Ports, LCDtim ) ; 
+                           
+                        }  else {
                             Serial.print("Error unsupported type ");     Serial.println( _Slave_Ports_queue_tasks_LIST[_Slave_Ports_queue_pop]._Slave_Ports_queue_task_type);
                         }
 
@@ -322,8 +510,25 @@ int _Slave_Ports_queue_task_type, int _Slave_Port_link, long time_seq_id, long t
   } else {
     String LCDarray1 = "Nothing to";
     String LCDarray2 = "process...";
+    //LCDarray2.reserve(16);
     Serial.print(LCDarray1); 
     Serial.println(LCDarray2); 
+
+   //  Serial.print("#32 String LCDarray2 len"); 
+    // int LCDarray2_length = LCDarray2.length;
+   /*  Serial.print(LCDarray2.length()); 
+     Serial.println("] now "); 
+     LCDarray2 = make_str16(LCDarray2);
+    Serial.print(LCDarray2.length()); 
+     Serial.println("]  next #338"); 
+
+      for(int i = 0; i < (17 - LCDarray2.length()); i++)
+        LCDarray2 += 'x';  
+       
+      Serial.print(LCDarray2.length()); 
+     Serial.println("]  "); 
+ */
+    
     Serial.print(" #364 scount "); 
      Serial.print(_Slave_Ports_queue_count); 
      Serial.print(" _Slave_Ports_queue.front(): "); 

+ 46 - 0
SE/stuff/P5_Automation_can-dev/_Slave_Ports_LOCAL.h

@@ -0,0 +1,46 @@
+
+_Slave_Port _Slave_Ports[] = {
+  {"CAN", 0x102, 0x07, 0x00, 0x00, 0x00, 0x00 }
+  //,
+  //{"CAN", 0x102, 0x01, 0x00, 0x01, 0xFF, 0x6d } //testowy ttl
+};
+
+/*
+typedef struct  {
+  const char * const _Protocol;
+  int _Slave_ID;
+  int PortTypes;  //0xFF  =  1111 1111 
+                                          {
+                                      bit 1 - PWM port
+                                      bit 2 - on I2C managed port
+                                      bit 3 - expanded port with LocalPort address
+                                      bit 4 - not allocated
+                                      bit 2 - not allocated
+                                      bit 5 - not allocated
+                                      bit 6 - not allocated
+                                      bit 7 - not allocated
+                                      bit 8 - not allocated
+                                    } 
+                                        
+ // byte has_Address;
+  int Address ;
+ // byte has_Local_Port;
+  int LocalPort;
+  int Exp_state;                  0xFF  =  1111 1111
+                                    0x00  =  0000 0000  = OFF = 0V
+                                    0x01  =  0000 0001  = ON = PWM max
+                                    {
+                                      bit 1 - OFF = 0V
+                                      bit 2 - ON = PWM max
+                                      bit 3 - not allocated
+                                      bit 4 - not allocated
+                                      bit 2 - not allocated
+                                      bit 5 - not allocated
+                                      bit 6 - not allocated
+                                      bit 7 - not allocated
+                                      bit 8 - not allocated
+                                    }
+  int Exp_state_ttl;  // 0x00 = odswiezyc
+} _Slave_Port;
+
+*/

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

@@ -0,0 +1,32 @@
+
+
+
+/*
+byte data[8] = {element.Address, -1 
+                 _Slave_Ports_queue_task_type_LIST, -2  type of protocol task
+                 element.LocalPort, -3
+                 element.PortTypes, -4
+                 element.LocalPort, -5
+                 element.Exp_state, -6
+                  element.Exp_state_ttl, -7
+                  packet_ttl }; 
+*/
+
+const byte _Slave_Ports_Protocol_CAN_COUNT = 32;
+
+//byte sndStat = CAN0.sendMsgBuf(_Slave_Ports[i]._Slave_ID, 0, 8, data);
+
+
+const char _Slave_Ports_Protocol_CAN_LIST[][_Slave_Ports_Protocol_CAN_COUNT] = {
+        "REMOTE_ID", //0 - use 0xFF fof broadcast
+        "NOT_USED_ZERO", //1
+        "_Slave_Ports_queue_task_type",  //2
+        "LocalPort",  //3
+        "PortTypes", //4
+         "LocalPort", //5  - to set ports associated on PW
+          "Exp_state", //6
+           "Exp_state_ttl", //7
+          "_MSG_TTL" //8 like in tcp/ip
+        }; 
+        
+        

+ 19 - 0
SE/stuff/P5_Automation_can-dev/_Slave_Ports_queue_task_type_LIST.h

@@ -0,0 +1,19 @@
+
+const byte _Slave_Ports_queue_task_type_COUNT = 32;
+const char _Slave_Ports_queue_task_type_LIST[][_Slave_Ports_queue_task_type_COUNT] = {
+        "_NOT_USED", //0
+        "_Slave_Ports_ttl_decrement", //1
+        "request_confirm_Exp_state",  //2
+        "request_set_new_Exp_state",  //3
+        "_Slave_Ports_broadcast", //4
+         "_Slave_Ports_set_I2C" //5  - to set ports associated on PW
+        }; 
+        
+//void  _Slave_Ports_message_queue_to_CAN() ;//
+//void  _Slave_Ports_message_queue_to_PWM() ;//
+
+//char _Slave_Ports_queue_task_type[10] = {};
+// _Slave_Ports_queue_task_type = { "_Slave_Ports_ttl_decrement" , "request_confirm_Exp_state" , "request_set_new_Exp_state"} ;
+// { HEX  0x02, "request_confirm_Exp_state" }, 
+// { HEX  0x03, "request_set_new_Exp_state" }
+//};