a.binder 5 سال پیش
والد
کامیت
f695320bd6

+ 1 - 1
SE/stuff/P5_Automation_can-dev-res/P5_Automation_can-dev-res.ino

@@ -81,7 +81,7 @@
 //#define HAS_LCD1602 
 //#define HAS_ROTTARY_SW
 
-#define DEBUG_I2C_driver_Adafruit_PWMServoDriver
+//#define DEBUG_I2C_driver_Adafruit_PWMServoDriver
 //#define DEBUG_CAN
 //#define DEBUG_QUEUE
 //#define DEBUG_QUEUE_ASSERT

+ 51 - 0
SE/stuff/P5_Automation_can-dev-res/_CAN/_Slave_Ports_Protocol_CAN_struct.h

@@ -74,6 +74,23 @@ typedef struct _Slave_Ports_Protocol_CAN_broadcast_S _Slave_Ports_Protocol_CAN_b
 
 
 
+
+ 
+ struct _Slave_Ports_Protocol_CAN_request_set_new_Exp_state_S {
+  _CAN_REMOTE_ID_T  _CAN_REMOTE_ID ;   // 1remote id - use FF for broadcast
+  const _CAN_SENDER_ID_T  _CAN_SENDER_ID = Active_ControllerID_HEX ; //2 sender //Device which orginated port 
+  int  Port_ID ; //3 global id for device //const char * const _Protocol;
+  PortTypes_T  PortTypes;  //4 0xFF  =  1111 1111 s
+  Exp_state_T  Exp_state;    //5
+  int  Exp_state_ttl;  //6
+  Exp_state_level_T  Exp_state_level_A;  //6
+  const int _CAN_8 = 0x03; // TASK_TYPE_T_request_set_new_Exp_state = 0x03 ; // _CAN_8_EMPTY; //0x07 ; //8 - nbot used
+} ;
+
+typedef struct _Slave_Ports_Protocol_CAN_request_set_new_Exp_state_S _Slave_Ports_Protocol_CAN_request_set_new_Exp_state_T ;
+
+
+
 typedef int _CAN_SEND_1_T  ; //1 byte = 0
 typedef int _CAN_SEND_2_T  ; //2 byte = 8 
 
@@ -172,6 +189,40 @@ void CAN_MSG8_A_ptr(_Slave_Ports_Protocol_CAN_broadcast_T
 
 
 
+void CAN_MSG8_A_Slave_Ports_Protocol_CAN_request_set_new_Exp_state_T(_Slave_Ports_Protocol_CAN_request_set_new_Exp_state_T 
+            &_Slave_Ports_Protocol_CAN_A ,
+            byte* CAN_MSG8_A
+            ) {
+        //_Slave_Ports_Protocol_CAN_broadcast_AS
+        
+            //CAN_MSG8_BIT_1_T
+          
+        //#ifdef DEBUG_CAN
+                Serial.print("#155 CAN_broadcast_to_data_ptr   [  ");
+                   Serial.print(" "); Serial.print("1["); Serial.print(_Slave_Ports_Protocol_CAN_A._CAN_REMOTE_ID); Serial.print("] ");
+                   Serial.print(" "); Serial.print("2["); Serial.print(_Slave_Ports_Protocol_CAN_A._CAN_SENDER_ID); Serial.print("] ");
+                   Serial.print(" "); Serial.print("3["); Serial.print(_Slave_Ports_Protocol_CAN_A.Port_ID); Serial.print("]  ");
+                   Serial.print(" "); Serial.print("4["); Serial.print(_Slave_Ports_Protocol_CAN_A.PortTypes); Serial.print("]  ");
+                   Serial.print(" "); Serial.print("5["); Serial.print(_Slave_Ports_Protocol_CAN_A.Exp_state); Serial.print("]  ");
+                   Serial.print(" "); Serial.print("6["); Serial.print(_Slave_Ports_Protocol_CAN_A.Exp_state_ttl); Serial.print("]  ");
+                   Serial.print(" "); Serial.print("7["); Serial.print(_Slave_Ports_Protocol_CAN_A.Exp_state_level_A); Serial.print("]  ");
+                   Serial.print(" "); Serial.print("8["); Serial.print(_Slave_Ports_Protocol_CAN_A._CAN_8); Serial.print("]  "); 
+                Serial.println("   "); 
+        // #endif
+         CAN_MSG8_A[0] = _Slave_Ports_Protocol_CAN_A._CAN_REMOTE_ID; // 0xFF;
+         CAN_MSG8_A[1] = _Slave_Ports_Protocol_CAN_A._CAN_SENDER_ID; // 0xFF;
+         CAN_MSG8_A[2] =_Slave_Ports_Protocol_CAN_A.Port_ID ; //0xFF;
+          CAN_MSG8_A[3] = _Slave_Ports_Protocol_CAN_A.PortTypes ;//0xFF;
+         CAN_MSG8_A[4] = _Slave_Ports_Protocol_CAN_A.Exp_state; // 0xFF;
+          CAN_MSG8_A[5] =  _Slave_Ports_Protocol_CAN_A.Exp_state_ttl ;// 0xFF;
+         CAN_MSG8_A[6] =  _Slave_Ports_Protocol_CAN_A.Exp_state_level_A;// 0xFF;
+          CAN_MSG8_A[7] =  _Slave_Ports_Protocol_CAN_A._CAN_8; // 0xFF;
+        
+}
+
+
+
+
 
 
 void CAN_data_debug(byte data[8]) {

+ 7 - 1
SE/stuff/P5_Automation_can-dev-res/_ROTTARY_SW/_ROTTARY_SW_loop.h

@@ -8,11 +8,17 @@
     int pwmVal = encoderPos * 5 ;
     if (pwmVal == 0 ) pwmVal = 1; 
    
-   TASK_PORT_ASSOC_T TASK_PORT_ASSOC_A={
+   /*TASK_PORT_ASSOC_T TASK_PORT_ASSOC_A={
         2,
         Active_ControllerID_HEX,
         0
    };
+   */
+   TASK_PORT_ASSOC_T TASK_PORT_ASSOC_A={
+        1,
+        0x13,
+        0
+   };
    
    Slave_Ports_action_func(Slave_Ports_Status_QUEUE_A,  Slave_Ports_Status_QUEUE_T_ARDUINO_ATTR_ARRAY_A, Slave_Ports_Status_A ,
     Slave_Ports_Status_T_ARDUINO_ATTR_ARRAY_A , TASK_TYPE_T_request_set_new_Exp_state , //TASK_TYPE_T TASK_TYPE_A,

+ 1 - 1
SE/stuff/P5_Automation_can-dev-res/_Slave_Ports_I2C_func.h

@@ -206,7 +206,7 @@
                                                         #if defined(DEBUG_I2C_driver_Adafruit_PWMServoDrive)
                                                         Serial.print("#149 I2C_driver ->Exp_state_ON_USE_LEVEL Exp_state [SET]"); Serial.print(Slave_Ports_Status_A[i].Exp_state); Serial.print("]   after   [");
                                                         #endif
-                                                        Serial.print("[I2C_INDEX_DRIVER_A[");Serial.print(I2C_INDEX_DRIVER_A);Serial.print("] [LocalPort["); Serial.print(Slave_Ports_Status_A[i].LocalPort); Serial.print("]  "); 
+                                                        //Serial.print("[I2C_INDEX_DRIVER_A[");Serial.print(I2C_INDEX_DRIVER_A);Serial.print("] [LocalPort["); Serial.print(Slave_Ports_Status_A[i].LocalPort); Serial.print("]  "); 
                                                         //Serial.print("[D209]Bef[");Serial.print(Slave_Ports_Status_A[i].Exp_state, BIN);Serial.print("]");
                                                         Slave_Ports_Status_A[i].Exp_state = Slave_Ports_Status_A[i].Exp_state | Exp_state_SET; //TODO BITTEST
                                                         //Serial.print("[D209]Aft[");Serial.print(Slave_Ports_Status_A[i].Exp_state , BIN);Serial.print("]");

+ 8 - 0
SE/stuff/P5_Automation_can-dev-res/_Slave_Ports_Status_func.h

@@ -60,10 +60,12 @@
             //valid if is uniq
             boolean found  ;
             found = false ; 
+            int found_id ; 
             for(i = ARDUINO_ARRAY_INDEX_FIRST; i<= Slave_Ports_Status_T_ARDUINO_ATTR_ARRAY_A.ARDUINO_ARRAY_INDEX_NEXT_A  ; i++ ) {
                 if((Slave_Ports_Status_A[i].Port_ID == Port_ID) and (Slave_Ports_Status_A[i]._Slave_ID == _Slave_ID ))  {
                     found = true ;
                         Serial.print("+D");Serial.print(i);
+                        found_id = i;
                    }
             }
                
@@ -90,6 +92,12 @@
                    
                } else {
                     //duplicated
+                    //update
+                   
+                     if(Broadcast_state>0) Slave_Ports_Status_A[found_id].Broadcast_state = Broadcast_state ;
+                     if(Exp_state>0) Slave_Ports_Status_A[found_id].Exp_state = Exp_state ;
+                     if(Exp_state_ttl>0) Slave_Ports_Status_A[found_id].Exp_state_ttl = Exp_state_ttl ;
+                     
                  
                }
 }

+ 22 - 0
SE/stuff/P5_Automation_can-dev-res/_Slave_Ports_action_func.h

@@ -52,6 +52,28 @@ Slave_Ports_Status_QUEUE_T* Slave_Ports_Status_QUEUE_A,
     if(flag_sent_CAN > 0 ) {
         Serial.println("51[ACTION][CAN][todo]");
     
+    
+    
+                                 _Slave_Ports_Protocol_CAN_request_set_new_Exp_state_T CAN_request_set_new_Exp_state_T={};
+                                    CAN_request_set_new_Exp_state_T._CAN_REMOTE_ID = Slave_Ports_Status_A[TASK_PORT_ASSOC_A.Slave_Ports_Status_T_INDEX]._Slave_ID;
+                                  //  CAN_broadcast_A._CAN_SENDER_ID = Active_ControllerID_HEX ;
+                                    CAN_request_set_new_Exp_state_T.Port_ID = Slave_Ports_Status_A[TASK_PORT_ASSOC_A.Slave_Ports_Status_T_INDEX].Port_ID ;
+                                    CAN_request_set_new_Exp_state_T.PortTypes = Slave_Ports_Status_A[TASK_PORT_ASSOC_A.Slave_Ports_Status_T_INDEX].PortTypes ; 
+                                    CAN_request_set_new_Exp_state_T.Exp_state = Slave_Ports_Status_A[TASK_PORT_ASSOC_A.Slave_Ports_Status_T_INDEX].Exp_state ;
+                                    CAN_request_set_new_Exp_state_T.Exp_state_ttl = Slave_Ports_Status_A[TASK_PORT_ASSOC_A.Slave_Ports_Status_T_INDEX].Exp_state_ttl ;
+                                    CAN_request_set_new_Exp_state_T.Exp_state_level_A = Slave_Ports_Status_A[TASK_PORT_ASSOC_A.Slave_Ports_Status_T_INDEX].Exp_state_level_A ;
+                                   // CAN_broadcast_A._CAN_8 = TASK_TYPE_T_Slave_Ports_broadcast____ ;
+                       
+                         // CAN_broadcast_A._CAN_8 = _CAN_8_EMPTY ;
+                         
+    
+    
+                       byte CAN_MSG8_A_Slave_Ports_Protocol_CAN_request_set_new_Exp_state_A[8];
+                       CAN_MSG8_A_Slave_Ports_Protocol_CAN_request_set_new_Exp_state_T(CAN_request_set_new_Exp_state_T,CAN_MSG8_A_Slave_Ports_Protocol_CAN_request_set_new_Exp_state_A);
+                       CAN_data_debug(CAN_MSG8_A_Slave_Ports_Protocol_CAN_request_set_new_Exp_state_A);
+    
+    
+    
     } else if(flag_set_LOCAL > 0 ) {
         Serial.println("51[ACTION][LOCAL][ADD][TASK_TYPE_T_Slave_Ports_set_I2C______]");
          _Slave_Ports_queue__add(  Slave_Ports_Status_QUEUE_A, Slave_Ports_Status_QUEUE_T_ARDUINO_ATTR_ARRAY_A ,