Oleg Bogachev / Mbed 2 deprecated PLC1608-V1

Dependencies:   PCAL955x mbed mbed-rtos AT45

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers can.cpp Source File

can.cpp

00001 
00002 #include <mbed.h>
00003 #include "rtos.h"
00004 #include "can.h"
00005 #include "ext_vars.h"
00006 
00007 
00008 //-------------хранение полученного  сообщения --------------
00009 //
00010 //                             [b1  b2  b3  b4]
00011 //                             -----------------
00012 // r_mess id[0] -> r_mess_data [ 0   1   2   3] - новое сообщение
00013 // r_mess id[1] -> r_mess_data [ 4   5   6   7] - новое сообщение
00014 // r_mess id[2] -> r_mess_data [ 8   9  10  11] - новое сообщение
00015 // r_mess id[3] -> r_mess_data [12  13  14  15] - новое сообщение
00016 // r_mess id[4] -> r_mess_data [16  17  18  19] - новое сообщение
00017 // r_mess id[5] -> r_mess_data [20  21  22  23] - новое сообщение
00018 // r_mess id[6] -> r_mess_data [24  25  26  27] - новое сообщение
00019 // r_mess id[7] -> r_mess_data [28  29  30  31] - новое сообщение
00020 // r_mess id[8] -> r_mess_data [32  33  34  35] - новое сообщение
00021 // r_mess id[9] -> r_mess_data [36  37  38  39] - новое сообщение
00022 
00023 
00024 //--------- очередь сообщений на отправку ------------------
00025 //
00026 //                             [b1  b2  b3  b4]
00027 //                             -----------------
00028 // w_mess id[0] -> w_mess_data [ 0   1   2   3] - новое сообщение
00029 // w_mess id[1] -> w_mess_data [ 4   5   6   7] - новое сообщение
00030 // w_mess id[2] -> w_mess_data [ 8   9  10  11] - новое сообщение
00031 // w_mess id[3] -> w_mess_data [12  13  14  15] - новое сообщение
00032 // w_mess id[4] -> w_mess_data [16  17  18  19] - новое сообщение
00033 // w_mess id[5] -> w_mess_data [20  21  22  23] - новое сообщение
00034 // w_mess id[6] -> w_mess_data [24  25  26  27] - новое сообщение
00035 // w_mess id[7] -> w_mess_data [28  29  30  31] - новое сообщение
00036 // w_mess id[8] -> w_mess_data [32  33  34  35] - новое сообщение
00037 // w_mess id[9] -> w_mess_data [36  37  38  39] - новое сообщение
00038 
00039 
00040 
00041 
00042 //  помещаем в очередь полученное сообщение 
00043 int  can_save_rd(int id, char b1, char b2, char b3, char b4)
00044 {
00045     int res = 0 ; 
00046     for(int i=0; i<9; i++){
00047         if( r_mess_id[i]==0 && res==0){
00048             r_mess_id[i] = id;
00049             r_mess_data[i*3+i+0] = b1;
00050             r_mess_data[i*3+i+1] = b2;
00051             r_mess_data[i*3+i+2] = b3;
00052             r_mess_data[i*3+i+3] = b4;
00053             res = 1;
00054         }
00055     }
00056     return res;
00057 }
00058 
00059 
00060 //  помещаем в очередь сообщения для отправки
00061 int  can_save_wr(int id, char b1, char b2, char b3, char b4)
00062 {
00063     int res = 0 ; 
00064     for(int i=0; i<9; i++){
00065         if( w_mess_id[i]==0 && res==0){
00066             w_mess_id[i] = id;
00067             w_mess_data[i*3+i+0] = b1;
00068             w_mess_data[i*3+i+1] = b2;
00069             w_mess_data[i*3+i+2] = b3;
00070             w_mess_data[i*3+i+3] = b4;
00071             res = 1;
00072         }
00073     }
00074     return res;
00075 }
00076 
00077 // выбираем сообщение из очереди для обработки
00078 // и  помещаем в раб. переменные
00079 int  can_select_rd()
00080 {
00081     int res = 0;
00082     
00083     r_id=0;
00084     r_b1=0;
00085     r_b2=0;
00086     r_b3=0;
00087     r_b4=0;
00088     
00089     for(int i=0; i<9; i++){
00090         if( r_mess_id[i] != 0  && res==0 ) {
00091             r_id = r_mess_id[i] ;  
00092             r_b1 = r_mess_data[i*3+i+0];
00093             r_b2 = r_mess_data[i*3+i+1];
00094             r_b3 = r_mess_data[i*3+i+2];
00095             r_b4 = r_mess_data[i*3+i+3];
00096             r_mess_id[i] = 0 ;
00097             res=1;
00098         }
00099     }
00100     return res;
00101 }
00102 
00103 
00104 
00105 
00106 // выбираем сообщение из очереди для отправки
00107 // и  помещаем в раб. переменные
00108 int  can_select_wr()
00109 {
00110 
00111     int res = 0;
00112     
00113     w_id=0;
00114     w_b1=0;
00115     w_b2=0;
00116     w_b3=0;
00117     w_b4=0;
00118     
00119     for(int i=0; i<9; i++){
00120         if( w_mess_id[i] != 0  && res==0 ) {
00121             w_id = w_mess_id[i] ; 
00122             w_b1 = w_mess_data[i*3+i+0];
00123             w_b2 = w_mess_data[i*3+i+1];
00124             w_b3 = w_mess_data[i*3+i+2];
00125             w_b4 = w_mess_data[i*3+i+3];
00126             w_mess_id[i] = 0 ;
00127             res=1;
00128         }
00129     }
00130     
00131     return res;
00132 }
00133 
00134 
00135 
00136 
00137 
00138 
00139 
00140 
00141 
00142