_CAN_func.h 9.2 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141
  1. void CAN_READ(
  2. Slave_Ports_Status_T* Slave_Ports_Status_A ,
  3. Slave_Ports_Status_T_ARDUINO_ATTR_ARRAY_T &Slave_Ports_Status_T_ARDUINO_ATTR_ARRAY_A ,
  4. Slave_Ports_Status_T_ARDUINO_ARRAY_INDEX_TABLE_T* Slave_Ports_Status_T_ARDUINO_ARRAY_INDEX_TABLE_A,
  5. Slave_Ports_Status_T_ARDUINO_ARRAY_INDEX_T_TO_DELETE_T* Slave_Ports_Status_T_ARDUINO_ARRAY_INDEX_T_TO_DELETE_A,
  6. Slave_Ports_Status_T_ARDUINO_ARRAY_ASSOC_TABLE_S_Port_ID_T* Slave_Ports_Status_T_ARDUINO_ARRAY_ASSOC_TABLE_S_Port_ID_A,
  7. DISPLAY_T* DISPLAY_A , DISPLAY_T_ARDUINO_ATTR_ARRAY_T &DISPLAY_T_ARDUINO_ATTR_ARRAY_A
  8. ) {
  9. // If pin 2 is low, read receive buffer
  10. {
  11. CAN0.readMsgBuf(&CANrxId, &CANlen, CANrxBuf); // Read data: len = data length, buf = data byte(s)
  12. Serial.print("#5555CAN_READ read ID: ");
  13. Serial.print(CANrxId, HEX);
  14. Serial.print(" Data: [");Serial.print(CANlen); Serial.print("]");
  15. if(CANlen == CAN_MSG_DATA8_LEN) {
  16. // DISPLAY__print_loop(DISPLAY_CURSOR_Y_CHARS_CAN_DEBUG, "CAN RECV DATA", 13, DISPLAY__print_loop_ACTION_ADD ) ;
  17. _CAN_REMOTE_ID_T _CAN_REMOTE_ID = CANrxId ;
  18. CAN_MSG8_BIT_1_T CAN_MSG8_BIT_1_A = CANrxBuf[0] ;//< 0x10
  19. CAN_MSG8_BIT_2_T CAN_MSG8_BIT_2_A = CANrxBuf[1] ;
  20. CAN_MSG8_BIT_3_T CAN_MSG8_BIT_3_A = CANrxBuf[2] ;
  21. CAN_MSG8_BIT_4_T CAN_MSG8_BIT_4_A = CANrxBuf[3] ;
  22. CAN_MSG8_BIT_5_T CAN_MSG8_BIT_5_A = CANrxBuf[4] ;
  23. CAN_MSG8_BIT_6_T CAN_MSG8_BIT_6_A = CANrxBuf[5] ;
  24. CAN_MSG8_BIT_7_T CAN_MSG8_BIT_7_A = CANrxBuf[6] ;
  25. CAN_MSG8_BIT_8_T CAN_MSG8_BIT_8_A = CANrxBuf[7] ;
  26. // Serial.print();
  27. Serial.print("1.REM::");Serial.print(CAN_MSG8_BIT_1_A, HEX);
  28. Serial.print(", 2.SEND:");Serial.print(CAN_MSG8_BIT_2_A, HEX);
  29. Serial.print(", PortID.3:");Serial.print(CAN_MSG8_BIT_3_A, BIN);
  30. Serial.print(", PortTyp.4:");Serial.print(CAN_MSG8_BIT_4_A, BIN);
  31. Serial.print(", ExpS.5:");Serial.print(CAN_MSG8_BIT_5_A, BIN);
  32. Serial.print(", ExpT.6:");Serial.print(CAN_MSG8_BIT_6_A, HEX);
  33. Serial.print(", BcSt.7:");Serial.print(CAN_MSG8_BIT_7_A, HEX);
  34. Serial.print(", TaskT?.8:");Serial.print(CAN_MSG8_BIT_8_A, HEX);Serial.println(" ] ");
  35. Serial.println("64[ Debug STD]") ;
  36. for(int i = 0; i<CANlen; i++) // Print each byte of the data
  37. {
  38. Serial.print("[");Serial.print(i);Serial.print("]");
  39. if(CANrxBuf[i] < 0x10) // If data byte is less than 0x10, add a leading zero
  40. {
  41. Serial.print("0");
  42. }
  43. Serial.print(CANrxBuf[i], HEX);
  44. Serial.print(" ");
  45. }
  46. if(CAN_MSG8_BIT_2_A == _CAN_REMOTE_ID ) {
  47. if(CAN_MSG8_BIT_8_A == TASK_TYPE_T_Slave_Ports_broadcast____) {
  48. Serial.println("[CAN_MSG8_BIT_8_A]==[T_BCAST]->[ADD][PORTS]") ;
  49. Slave_Ports_Status_add_port(
  50. Slave_Ports_Status_A ,
  51. Slave_Ports_Status_T_ARDUINO_ATTR_ARRAY_A,
  52. Slave_Ports_Status_T_ARDUINO_ARRAY_INDEX_TABLE_A,
  53. Slave_Ports_Status_T_ARDUINO_ARRAY_INDEX_T_TO_DELETE_A,
  54. Slave_Ports_Status_T_ARDUINO_ARRAY_ASSOC_TABLE_S_Port_ID_A,
  55. CAN_MSG8_BIT_3_A, // int Port_ID,
  56. CANrxId , //int _Slave_ID,
  57. CAN_MSG8_BIT_4_A , //int PortTypes,
  58. 0 , //int Address,
  59. 0 , //int LocalPort,
  60. CAN_MSG8_BIT_5_A , //Exp_state_BLINK, //int Exp_state,
  61. CAN_MSG8_BIT_6_A, //Exp_state_ttl_TO_REFRESH, //int Exp_state_ttl,
  62. CAN_MSG8_BIT_7_A, //Broadcast_state_TO_REFRESH, //int Broadcast_state,
  63. 0 , //int I2C_port,
  64. 0 ,//int I2C_driver
  65. IS_Local_FALSE
  66. );
  67. } else if(CAN_MSG8_BIT_8_A == TASK_TYPE_T_request_set_new_Exp_state) { // if(CAN_MSG8_BIT_8_A == TASK_TYPE_T_Slave_Ports_broadcast____)
  68. /*CAN_MSG8_A_Slave_Ports_Protocol_CAN_request_set_new_Exp_state_T
  69. 1 _Slave_Ports_Protocol_CAN_A._CAN_REMOTE_ID; // 0xFF;
  70. 2 = _Slave_Ports_Protocol_CAN_A._CAN_SENDER_ID; // 0xFF;
  71. 3 =_Slave_Ports_Protocol_CAN_A.Port_ID ; //0xFF;
  72. 4 = _Slave_Ports_Protocol_CAN_A.PortTypes ;//0xFF;
  73. 5 = _Slave_Ports_Protocol_CAN_A.Exp_state; // 0xFF;
  74. 6 _Slave_Ports_Protocol_CAN_A.Exp_state_ttl ;// 0xFF;
  75. 7= _Slave_Ports_Protocol_CAN_A.Exp_state_level_A;// 0xFF;
  76. 8 = _Slave_Ports_Protocol_CAN_A._CAN_8; // 0xFF;
  77. */
  78. Serial.println("[CAN_MSG8_BIT_8_A]==[request_set_new_Exp_state]->[SET][PORTS]") ;
  79. TASK_PORT_ASSOC_T TASK_PORT_ASSOC_A={
  80. CAN_MSG8_BIT_3_A,
  81. CAN_MSG8_BIT_1_A,
  82. 0
  83. };
  84. 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 ,
  85. TASK_TYPE_T_request_set_new_Exp_state , TASK_PORT_ASSOC_A, 0, 0, ARDUINO_ARRAY_INDEX_NOT_SET ,
  86. CAN_MSG8_BIT_5_A , CAN_MSG8_BIT_7_A);
  87. } else {
  88. Serial.println("81[CAN][RECV][UNKNOWN][CAN_MSG8_BIT_8_A][") ;
  89. Serial.print(CAN_MSG8_BIT_8_A, HEX) ;
  90. Serial.print("] ");
  91. }
  92. } else { //if(CAN_MSG8_BIT_2_A == _CAN_REMOTE_ID ) {
  93. Serial.println("81[CAN][RECV][ERROR][_CAN_REMOTE_ID<>CAN_MSG8_BIT_2_A][") ;
  94. Serial.print(CAN_MSG8_BIT_2_A, HEX) ; Serial.print("]["); Serial.print(_CAN_REMOTE_ID, HEX) ;
  95. Serial.print("] ");
  96. }
  97. } else { //if(CANlen == CAN_MSG_DATA8_LEN)
  98. for(int i = 0; i<CANlen; i++) // Print each byte of the data
  99. {
  100. if(CANrxBuf[i] < 0x10) // If data byte is less than 0x10, add a leading zero
  101. {
  102. Serial.print("0");
  103. }
  104. Serial.print(CANrxBuf[i], HEX);
  105. Serial.print(" ");
  106. }
  107. }
  108. Serial.println();
  109. // else Serial.println(" [CAN] [NOT][digitalRead(CAN_INTpin)] ");
  110. }
  111. }