Date: April 2019. Version: 1.0.2. Can Library RX/TX, IDadress and data position. 3 independent timers for sending

Dependents:   CAN_Library_Example Ekran CAN-library

Revision:
1:dade5cf64d0e
Parent:
0:9cbaaaf1768f
Child:
3:a142cf0e7c37
--- a/CANlibrary.cpp	Thu Mar 07 23:15:11 2019 +0000
+++ b/CANlibrary.cpp	Tue Apr 02 11:57:10 2019 +0000
@@ -2,7 +2,9 @@
 
 
 extern CAN can;
-Ticker tick; //!!!!!!!!!!!!!!!!!!!!!!!!!!!!! nije hteo da se prevede kao extern
+Ticker tick1; //!!!!!!!!!!!!!!!!!!!!!!!!!!!!! nije hteo da se prevede kao extern
+Ticker tick2;
+Ticker tick3;
 
 /******************************************
  - - - - - VAZNO! - - - - -
@@ -15,9 +17,9 @@
 
 bool can_flag[16];
 CANMessage msgs[16];
-char data[8];
-char idTX;
-float msgInterval=0;
+char data[8],data1[8],data2[8],data3[8];
+char idTX=0,idTX1=0,idTX2=0,idTX3=0;
+float msgInterval1=0,msgInterval2=0,msgInterval3=0;
 
 void can_initRX(){
     can.attach(can_msg_receive, CAN::RxIrq); 
@@ -44,18 +46,55 @@
 //-------------------------------------------------------------------
 //-------------------------------------------------------------------
 // Funkcije slanja poruka:
-
 void canTX_set_Interval(float inter){ 
     
     //Zadavanje fiksnog intervala slanja CAN poruke
     //Vrednost je realna. Jedinica zadavanja je u sekundama.
-    msgInterval=inter;
+    msgInterval1=inter;
+}
+
+void canTX_set_Interval_1(float inter){ 
+    
+    //Zadavanje fiksnog intervala slanja CAN poruke
+    //Vrednost je realna. Jedinica zadavanja je u sekundama.
+    msgInterval1=inter;
 }
 
+void canTX_set_Interval_2(float inter){ 
+    
+    //Zadavanje fiksnog intervala slanja CAN poruke
+    //Vrednost je realna. Jedinica zadavanja je u sekundama.
+    msgInterval2=inter;
+}
+
+void canTX_set_Interval_3(float inter){ 
+    
+    //Zadavanje fiksnog intervala slanja CAN poruke
+    //Vrednost je realna. Jedinica zadavanja je u sekundama.
+    msgInterval3=inter;
+}
 void  can_initTX(char idtx){
     
     //Fukcija koja zadaje fiksnu adresu slanja poruke
-    idTX=idtx;
+    idTX1=idtx;
+}
+
+void  can_initTX1(char idtx){
+    
+    //Fukcija koja zadaje fiksnu adresu slanja poruke
+    idTX1=idtx;
+}
+
+void  can_initTX2(char idtx){
+    
+    //Fukcija koja zadaje fiksnu adresu slanja poruke
+    idTX2=idtx;
+}
+
+void  can_initTX3(char idtx){
+    
+    //Fukcija koja zadaje fiksnu adresu slanja poruke
+    idTX3=idtx;
 }
 void can_msg_send(){
     
@@ -63,12 +102,60 @@
      *  Fukcija koja salje podatke na CAN mrezu po zadatom,setovanom, IDju. 
      *  Duzina poruke podesena je fiksno na 8B.
      */
-    can.write(CANMessage((uint16_t)idTX, data, 8));
+    can.write(CANMessage((uint16_t)idTX1, data1, 8));
+}
+void can_msg_send1(){
+    
+    /*
+     *  Fukcija koja salje podatke na CAN mrezu po zadatom,setovanom, IDju. 
+     *  Duzina poruke podesena je fiksno na 8B.
+     */
+    can.write(CANMessage((uint16_t)idTX1, data1, 8));
 }
+void can_msg_send2(){
+    
+    /*
+     *  Fukcija koja salje podatke na CAN mrezu po zadatom,setovanom, IDju. 
+     *  Duzina poruke podesena je fiksno na 8B.
+     */
+    can.write(CANMessage((uint16_t)idTX2, data2, 8));
+}
+void can_msg_send3(){
+    
+    /*
+     *  Fukcija koja salje podatke na CAN mrezu po zadatom,setovanom, IDju. 
+     *  Duzina poruke podesena je fiksno na 8B.
+     */
+    can.write(CANMessage((uint16_t)idTX3, data3, 8));
+}
+
 void can_msg_send_tick(){
     
     //Funkcija koja se poziva za slanje poruka u okviru fiksnog intervala
-    tick.attach(can_msg_send, msgInterval);
+    idTX=idTX1;
+     //strcpy(data,data1);
+    tick1.attach(can_msg_send1, msgInterval1);
+}
+void can_msg_send_tick1(){
+    
+    //Funkcija koja se poziva za slanje poruka u okviru fiksnog intervala
+    idTX=idTX1;
+     //strcpy(data,data1);
+    tick1.attach(can_msg_send1, msgInterval1);
+}
+void can_msg_send_tick2(){
+    
+    //Funkcija koja se poziva za slanje poruka u okviru fiksnog intervala
+    idTX=idTX2;
+    //strcpy(data,data2);
+    tick2.attach(can_msg_send2, msgInterval2);
+}
+void can_msg_send_tick3(){
+    
+    //Funkcija koja se poziva za slanje poruka u okviru fiksnog intervala
+    idTX=idTX3;
+    //strcpy(data,data3);
+    tick3.attach(can_msg_send3, msgInterval3);
 }
 //----------------------------------------------------------------------------
 /*  Pomocne funkcije za pakovanje podataka prilikom slanja:
@@ -87,19 +174,50 @@
  *  Maximalno se mogu poslati 4 podatka od po 2B (pos polje u opsegu od 0 do 3) 
  *  ili 8 od po 1B (pos polje u opsegu od 0 do 7). 
  */
-
 void pack_data(uint16_t dta, char pos){
     
     //Pakuje unit16_t u dva podatka od po 1B, na poziciji pos u CAN poruci
-    data[pos<<1] = dta;
-    data[(pos<<1)+1] = dta >> 8;
+    data1[pos<<1] = dta;
+    data1[(pos<<1)+1] = dta >> 8;
+}
+
+void pack_data1(uint16_t dta, char pos){
+    
+    //Pakuje unit16_t u dva podatka od po 1B, na poziciji pos u CAN poruci
+    data1[pos<<1] = dta;
+    data1[(pos<<1)+1] = dta >> 8;
+}
+
+void pack_data1(char dta, char pos){
+     
+     //Pakuje char u jedan podatka od 1B, na poziciji pos u CAN poruci
+    data1[pos<<1] = dta;
 }
 
-void pack_data(char dta, char pos){
+void pack_data2(uint16_t dta, char pos){
+    
+    //Pakuje unit16_t u dva podatka od po 1B, na poziciji pos u CAN poruci
+    data2[pos<<1] = dta;
+    data2[(pos<<1)+1] = dta >> 8;
+}
+
+void pack_data2(char dta, char pos){
      
      //Pakuje char u jedan podatka od 1B, na poziciji pos u CAN poruci
-    data[pos<<1] = dta;
+    data2[pos<<1] = dta;
+}
+
+void pack_data3(uint16_t dta, char pos){
+    
+    //Pakuje unit16_t u dva podatka od po 1B, na poziciji pos u CAN poruci
+    data3[pos<<1] = dta;
+    data3[(pos<<1)+1] = dta >> 8;
+}
+
+void pack_data3(char dta, char pos){
+     
+     //Pakuje char u jedan podatka od 1B, na poziciji pos u CAN poruci
+    data3[pos<<1] = dta;
 }
 
 
-