omar medjdoub / Mbed 2 deprecated canbus2

Dependencies:   mbed

Committer:
ninomedj
Date:
Tue Jun 15 10:29:50 2021 +0000
Revision:
0:aa420961d99b
receive;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ninomedj 0:aa420961d99b 1 #include"mbed.h"
ninomedj 0:aa420961d99b 2 #include"string.h"
ninomedj 0:aa420961d99b 3 #include "CAN.h"
ninomedj 0:aa420961d99b 4 #include"can.h"
ninomedj 0:aa420961d99b 5 #define node_ID 4
ninomedj 0:aa420961d99b 6 CAN can1(p30, p29); // rd, td Monitor
ninomedj 0:aa420961d99b 7 DigitalOut myled1(LED1);
ninomedj 0:aa420961d99b 8 DigitalOut myled2(LED2);
ninomedj 0:aa420961d99b 9 DigitalOut myled3(LED3);
ninomedj 0:aa420961d99b 10 DigitalOut myled4(LED4);
ninomedj 0:aa420961d99b 11
ninomedj 0:aa420961d99b 12 bool newData = false;
ninomedj 0:aa420961d99b 13
ninomedj 0:aa420961d99b 14
ninomedj 0:aa420961d99b 15 int counter = 0;
ninomedj 0:aa420961d99b 16 int counter1 = 0;
ninomedj 0:aa420961d99b 17 float vspeed = 0.0;
ninomedj 0:aa420961d99b 18 float vattitude = 0.0;
ninomedj 0:aa420961d99b 19
ninomedj 0:aa420961d99b 20
ninomedj 0:aa420961d99b 21
ninomedj 0:aa420961d99b 22 void can::CAN2_wrFilter (uint32_t id) {
ninomedj 0:aa420961d99b 23 static int CAN_std_cnt = 0;
ninomedj 0:aa420961d99b 24 uint32_t buf0, buf1;
ninomedj 0:aa420961d99b 25 int cnt1, cnt2, bound1;
ninomedj 0:aa420961d99b 26
ninomedj 0:aa420961d99b 27 /* Acceptance Filter Memory full */
ninomedj 0:aa420961d99b 28 if (((CAN_std_cnt + 1) >> 1) >= 512)
ninomedj 0:aa420961d99b 29 return; /* error: objects full */
ninomedj 0:aa420961d99b 30
ninomedj 0:aa420961d99b 31 /* Setup Acceptance Filter Configuration
ninomedj 0:aa420961d99b 32 Acceptance Filter Mode Register = Off */
ninomedj 0:aa420961d99b 33 LPC_CANAF->AFMR = 0x00000001;
ninomedj 0:aa420961d99b 34
ninomedj 0:aa420961d99b 35 id |= 1 << 13; /* Add controller number(2) */
ninomedj 0:aa420961d99b 36 id &= 0x0000F7FF; /* Mask out 16-bits of ID */
ninomedj 0:aa420961d99b 37
ninomedj 0:aa420961d99b 38 if (CAN_std_cnt == 0) { /* For entering first ID */
ninomedj 0:aa420961d99b 39 LPC_CANAF_RAM->mask[0] = 0x0000FFFF | (id << 16);
ninomedj 0:aa420961d99b 40 } else if (CAN_std_cnt == 1) { /* For entering second ID */
ninomedj 0:aa420961d99b 41 if ((LPC_CANAF_RAM->mask[0] >> 16) > id)
ninomedj 0:aa420961d99b 42 LPC_CANAF_RAM->mask[0] = (LPC_CANAF_RAM->mask[0] >> 16) | (id << 16);
ninomedj 0:aa420961d99b 43 else
ninomedj 0:aa420961d99b 44 LPC_CANAF_RAM->mask[0] = (LPC_CANAF_RAM->mask[0] & 0xFFFF0000) | id;
ninomedj 0:aa420961d99b 45 } else {
ninomedj 0:aa420961d99b 46 /* Find where to insert new ID */
ninomedj 0:aa420961d99b 47 cnt1 = 0;
ninomedj 0:aa420961d99b 48 cnt2 = CAN_std_cnt;
ninomedj 0:aa420961d99b 49 bound1 = (CAN_std_cnt - 1) >> 1;
ninomedj 0:aa420961d99b 50 while (cnt1 <= bound1) { /* Loop through standard existing IDs */
ninomedj 0:aa420961d99b 51 if ((LPC_CANAF_RAM->mask[cnt1] >> 16) > id) {
ninomedj 0:aa420961d99b 52 cnt2 = cnt1 * 2;
ninomedj 0:aa420961d99b 53 break;
ninomedj 0:aa420961d99b 54 }
ninomedj 0:aa420961d99b 55 if ((LPC_CANAF_RAM->mask[cnt1] & 0x0000FFFF) > id) {
ninomedj 0:aa420961d99b 56 cnt2 = cnt1 * 2 + 1;
ninomedj 0:aa420961d99b 57 break;
ninomedj 0:aa420961d99b 58 }
ninomedj 0:aa420961d99b 59 cnt1++; /* cnt1 = U32 where to insert new ID */
ninomedj 0:aa420961d99b 60 } /* cnt2 = U16 where to insert new ID */
ninomedj 0:aa420961d99b 61
ninomedj 0:aa420961d99b 62 if (cnt1 > bound1) { /* Adding ID as last entry */
ninomedj 0:aa420961d99b 63 if ((CAN_std_cnt & 0x0001) == 0) /* Even number of IDs exists */
ninomedj 0:aa420961d99b 64 LPC_CANAF_RAM->mask[cnt1] = 0x0000FFFF | (id << 16);
ninomedj 0:aa420961d99b 65 else /* Odd number of IDs exists */
ninomedj 0:aa420961d99b 66 LPC_CANAF_RAM->mask[cnt1] = (LPC_CANAF_RAM->mask[cnt1] & 0xFFFF0000) | id;
ninomedj 0:aa420961d99b 67 } else {
ninomedj 0:aa420961d99b 68 buf0 = LPC_CANAF_RAM->mask[cnt1]; /* Remember current entry */
ninomedj 0:aa420961d99b 69 if ((cnt2 & 0x0001) == 0) /* Insert new mask to even address */
ninomedj 0:aa420961d99b 70 buf1 = (id << 16) | (buf0 >> 16);
ninomedj 0:aa420961d99b 71 else /* Insert new mask to odd address */
ninomedj 0:aa420961d99b 72 buf1 = (buf0 & 0xFFFF0000) | id;
ninomedj 0:aa420961d99b 73
ninomedj 0:aa420961d99b 74 LPC_CANAF_RAM->mask[cnt1] = buf1; /* Insert mask */
ninomedj 0:aa420961d99b 75
ninomedj 0:aa420961d99b 76 bound1 = CAN_std_cnt >> 1;
ninomedj 0:aa420961d99b 77 /* Move all remaining standard mask entries one place up */
ninomedj 0:aa420961d99b 78 while (cnt1 < bound1) {
ninomedj 0:aa420961d99b 79 cnt1++;
ninomedj 0:aa420961d99b 80 buf1 = LPC_CANAF_RAM->mask[cnt1];
ninomedj 0:aa420961d99b 81 LPC_CANAF_RAM->mask[cnt1] = (buf1 >> 16) | (buf0 << 16);
ninomedj 0:aa420961d99b 82 buf0 = buf1;
ninomedj 0:aa420961d99b 83 }
ninomedj 0:aa420961d99b 84
ninomedj 0:aa420961d99b 85 if ((CAN_std_cnt & 0x0001) == 0) /* Even number of IDs exists */
ninomedj 0:aa420961d99b 86 LPC_CANAF_RAM->mask[cnt1] = (LPC_CANAF_RAM->mask[cnt1] & 0xFFFF0000) | (0x0000FFFF);
ninomedj 0:aa420961d99b 87 }
ninomedj 0:aa420961d99b 88 }
ninomedj 0:aa420961d99b 89 CAN_std_cnt++;
ninomedj 0:aa420961d99b 90
ninomedj 0:aa420961d99b 91 /* Calculate std ID start address (buf0) and ext ID start address <- none (buf1) */
ninomedj 0:aa420961d99b 92 buf0 = ((CAN_std_cnt + 1) >> 1) << 2;
ninomedj 0:aa420961d99b 93 buf1 = buf0;
ninomedj 0:aa420961d99b 94
ninomedj 0:aa420961d99b 95 /* Setup acceptance filter pointers */
ninomedj 0:aa420961d99b 96 LPC_CANAF->SFF_sa = 0;
ninomedj 0:aa420961d99b 97 LPC_CANAF->SFF_GRP_sa = buf0;
ninomedj 0:aa420961d99b 98 LPC_CANAF->EFF_sa = buf0;
ninomedj 0:aa420961d99b 99 LPC_CANAF->EFF_GRP_sa = buf1;
ninomedj 0:aa420961d99b 100 LPC_CANAF->ENDofTable = buf1;
ninomedj 0:aa420961d99b 101
ninomedj 0:aa420961d99b 102 LPC_CANAF->AFMR = 0xFFFF; /* Use acceptance filter */
ninomedj 0:aa420961d99b 103 } // CAN2_wrFilter
ninomedj 0:aa420961d99b 104
ninomedj 0:aa420961d99b 105
ninomedj 0:aa420961d99b 106 void can::sendtocanvattitude(){
ninomedj 0:aa420961d99b 107 char datas[4];
ninomedj 0:aa420961d99b 108 char data1[4];
ninomedj 0:aa420961d99b 109 char canmsg[8];
ninomedj 0:aa420961d99b 110 if(newData==true){
ninomedj 0:aa420961d99b 111
ninomedj 0:aa420961d99b 112 if (counter==255){
ninomedj 0:aa420961d99b 113 counter=0;
ninomedj 0:aa420961d99b 114 }
ninomedj 0:aa420961d99b 115 else{
ninomedj 0:aa420961d99b 116 counter=++counter;
ninomedj 0:aa420961d99b 117 datas[0] = (char)(0x00);
ninomedj 0:aa420961d99b 118 datas[1] = (char)(0x02);
ninomedj 0:aa420961d99b 119 datas[2] = (char)(0x00);
ninomedj 0:aa420961d99b 120 datas[3] = (char)(counter);
ninomedj 0:aa420961d99b 121 memcpy(data1,&vattitude,4);
ninomedj 0:aa420961d99b 122 memcpy(canmsg, datas, 4);
ninomedj 0:aa420961d99b 123 memcpy(canmsg+4, data1, 8);
ninomedj 0:aa420961d99b 124 if(can1.write(CANMessage(311,canmsg,8))) {
ninomedj 0:aa420961d99b 125 printf("Node_ID 311 sent \n");
ninomedj 0:aa420961d99b 126 }
ninomedj 0:aa420961d99b 127 myled1 = !myled1;
ninomedj 0:aa420961d99b 128 newData = false;
ninomedj 0:aa420961d99b 129 }
ninomedj 0:aa420961d99b 130 }
ninomedj 0:aa420961d99b 131 }
ninomedj 0:aa420961d99b 132
ninomedj 0:aa420961d99b 133 void can::sendtocanvspeed(){
ninomedj 0:aa420961d99b 134 char data2[4];
ninomedj 0:aa420961d99b 135 char datass[4];
ninomedj 0:aa420961d99b 136 char canmsg1[8];
ninomedj 0:aa420961d99b 137 if(newData==true){
ninomedj 0:aa420961d99b 138 if (counter1==255){
ninomedj 0:aa420961d99b 139 counter1=0;
ninomedj 0:aa420961d99b 140 }else
ninomedj 0:aa420961d99b 141 {
ninomedj 0:aa420961d99b 142 counter1=++counter1;
ninomedj 0:aa420961d99b 143 datass[0] = (char)(0x00);
ninomedj 0:aa420961d99b 144 datass[1] = (char)(0x02);
ninomedj 0:aa420961d99b 145 datass[2] = (char)(0x00);
ninomedj 0:aa420961d99b 146 datass[3] = (char)(counter1);
ninomedj 0:aa420961d99b 147 memcpy(data2,&vspeed,4);
ninomedj 0:aa420961d99b 148 memcpy(canmsg1, datass, 4);
ninomedj 0:aa420961d99b 149 memcpy(canmsg1+4, data2, 8);
ninomedj 0:aa420961d99b 150
ninomedj 0:aa420961d99b 151
ninomedj 0:aa420961d99b 152 if(can1.write(CANMessage(1124,canmsg1,8))) {
ninomedj 0:aa420961d99b 153 printf("Node_ID 1124 sent \n");
ninomedj 0:aa420961d99b 154 }
ninomedj 0:aa420961d99b 155 myled2 = !myled2;
ninomedj 0:aa420961d99b 156 newData = false;
ninomedj 0:aa420961d99b 157 }
ninomedj 0:aa420961d99b 158 }
ninomedj 0:aa420961d99b 159 }
ninomedj 0:aa420961d99b 160
ninomedj 0:aa420961d99b 161
ninomedj 0:aa420961d99b 162
ninomedj 0:aa420961d99b 163
ninomedj 0:aa420961d99b 164
ninomedj 0:aa420961d99b 165 void can::tick(){
ninomedj 0:aa420961d99b 166 ticker.attach(callback(this, &can::sendtocanvspeed), 1.0 );
ninomedj 0:aa420961d99b 167 }
ninomedj 0:aa420961d99b 168
ninomedj 0:aa420961d99b 169
ninomedj 0:aa420961d99b 170
ninomedj 0:aa420961d99b 171 ////////////////////////////////////////////////////////////
ninomedj 0:aa420961d99b 172 ////////////////////////////////////////////////////////////
ninomedj 0:aa420961d99b 173 ///////////////////////////////////////////////////////////
ninomedj 0:aa420961d99b 174 ////////////////NODE SERVICE PROTOCOL///////////////////////
ninomedj 0:aa420961d99b 175 ////////////////////////////////////////////////////////////
ninomedj 0:aa420961d99b 176 ////////////////////////////////////////////////////////////
ninomedj 0:aa420961d99b 177 ///////////////////////////////////////////////////////////
ninomedj 0:aa420961d99b 178 //////// identifiction service:
ninomedj 0:aa420961d99b 179 void nodespresponse::ids(){
ninomedj 0:aa420961d99b 180 char data[8];
ninomedj 0:aa420961d99b 181 data[0] = (char)(node_ID);//node_id
ninomedj 0:aa420961d99b 182 data[1] = (char)(0x10);//data type:uchar4
ninomedj 0:aa420961d99b 183 data[2] = (char)(0x00);//service code 0 ids
ninomedj 0:aa420961d99b 184 data[3] = (char)(0x00);//message code as in request
ninomedj 0:aa420961d99b 185 data[4] = (char)(0x00);//hardware revision
ninomedj 0:aa420961d99b 186 data[5] = (char)(0x00);//software revision
ninomedj 0:aa420961d99b 187 data[6] = (char)(0x00);//identifier distribution (0=CANaerospace distribution)
ninomedj 0:aa420961d99b 188 data[7] = (char)(0x00);//header type (0 = CANaerospace standard header)
ninomedj 0:aa420961d99b 189 if(can1.write(CANMessage(129,data,8))) {
ninomedj 0:aa420961d99b 190 printf("ids responce from %d is sent",node_ID);
ninomedj 0:aa420961d99b 191 }
ninomedj 0:aa420961d99b 192 }
ninomedj 0:aa420961d99b 193 /* nss dont request a response
ninomedj 0:aa420961d99b 194 void nodespresponse::nss(unsigned long time){
ninomedj 0:aa420961d99b 195 char data[8];
ninomedj 0:aa420961d99b 196 char data1[4];
ninomedj 0:aa420961d99b 197 char data2[4]
ninomedj 0:aa420961d99b 198 char canmsg[8];
ninomedj 0:aa420961d99b 199 data1[0] = (char)(node_ID);//node_id
ninomedj 0:aa420961d99b 200 data1[1] = (char)(0x04);//data type:no data
ninomedj 0:aa420961d99b 201 data1[2] = (char)(0x01);//service code 1
ninomedj 0:aa420961d99b 202 data1[3] = (char)(0x00);//message code as in request
ninomedj 0:aa420961d99b 203 memcpy(data2,&time,4);
ninomedj 0:aa420961d99b 204 memcpy(canmsg, data1, 4);
ninomedj 0:aa420961d99b 205 memcpy(canmsg+4, data2, 8);
ninomedj 0:aa420961d99b 206 can1.write(CANMessage(1124,canmsg,8));
ninomedj 0:aa420961d99b 207 }
ninomedj 0:aa420961d99b 208 */
ninomedj 0:aa420961d99b 209
ninomedj 0:aa420961d99b 210
ninomedj 0:aa420961d99b 211 /////////////////////////data download service
ninomedj 0:aa420961d99b 212 //////first response a start download request message
ninomedj 0:aa420961d99b 213 void nodespresponse::dds1(){
ninomedj 0:aa420961d99b 214 char data[8];
ninomedj 0:aa420961d99b 215 data[0] = (char)(node_ID);//node_id
ninomedj 0:aa420961d99b 216 data[1] = (char)(0x03);//data type:long
ninomedj 0:aa420961d99b 217 data[2] = (char)(0x02);//service code 2
ninomedj 0:aa420961d99b 218 data[3] = (char)(0x00);//as in request
ninomedj 0:aa420961d99b 219 data[4] = (char)(0x00);/////-2=invalid//-1=abort//0=xoff//1=xon
ninomedj 0:aa420961d99b 220 data[5] = (char)(0x00);
ninomedj 0:aa420961d99b 221 data[6] = (char)(0x00);
ninomedj 0:aa420961d99b 222 data[7] = (char)(0x00);
ninomedj 0:aa420961d99b 223 }
ninomedj 0:aa420961d99b 224 ////////second response the message
ninomedj 0:aa420961d99b 225 void nodespresponse::dds2(){
ninomedj 0:aa420961d99b 226 char data[8];
ninomedj 0:aa420961d99b 227 data[0] = (char)(node_ID);//node_id
ninomedj 0:aa420961d99b 228 data[1] = (char)(0x16);//data type:chksum
ninomedj 0:aa420961d99b 229 data[2] = (char)(0x02);//service code 2
ninomedj 0:aa420961d99b 230 data[3] = (char)(0x00);//last number
ninomedj 0:aa420961d99b 231 data[4] = (char)(0x00);//checksum
ninomedj 0:aa420961d99b 232 data[5] = (char)(0x00);
ninomedj 0:aa420961d99b 233 data[6] = (char)(0x00);
ninomedj 0:aa420961d99b 234 data[7] = (char)(0x00);
ninomedj 0:aa420961d99b 235 }
ninomedj 0:aa420961d99b 236 /////////////////////////data upload service
ninomedj 0:aa420961d99b 237 //////first response a start download request message
ninomedj 0:aa420961d99b 238 void nodespresponse::dus1(){
ninomedj 0:aa420961d99b 239 char data[8];
ninomedj 0:aa420961d99b 240 data[0] = (char)(node_ID);//node_id
ninomedj 0:aa420961d99b 241 data[1] = (char)(0x15);//data type:MEMID
ninomedj 0:aa420961d99b 242 data[2] = (char)(0x03);//service code 3
ninomedj 0:aa420961d99b 243 data[3] = (char)(0x00);
ninomedj 0:aa420961d99b 244 data[4] = (char)(0x00);
ninomedj 0:aa420961d99b 245 data[5] = (char)(0x00);
ninomedj 0:aa420961d99b 246 data[6] = (char)(0x00);
ninomedj 0:aa420961d99b 247 data[7] = (char)(0x00);
ninomedj 0:aa420961d99b 248 }
ninomedj 0:aa420961d99b 249 ////////second response the message
ninomedj 0:aa420961d99b 250 void nodespresponse::dus2(){
ninomedj 0:aa420961d99b 251 char data[8];
ninomedj 0:aa420961d99b 252 data[0] = (char)(node_ID);//node_id
ninomedj 0:aa420961d99b 253 data[1] = (char)(0x15);//data type:MEMID
ninomedj 0:aa420961d99b 254 data[2] = (char)(0x03);//service code 3
ninomedj 0:aa420961d99b 255 data[3] = (char)(0x00);
ninomedj 0:aa420961d99b 256 data[4] = (char)(0x00);
ninomedj 0:aa420961d99b 257 data[5] = (char)(0x00);
ninomedj 0:aa420961d99b 258 data[6] = (char)(0x00);
ninomedj 0:aa420961d99b 259 data[7] = (char)(0x00);
ninomedj 0:aa420961d99b 260 }
ninomedj 0:aa420961d99b 261
ninomedj 0:aa420961d99b 262 ////////////simulation control service
ninomedj 0:aa420961d99b 263
ninomedj 0:aa420961d99b 264 void nodespresponse::scs(){
ninomedj 0:aa420961d99b 265 char data[8];
ninomedj 0:aa420961d99b 266 data[0] = (char)(node_ID);//node_id
ninomedj 0:aa420961d99b 267 data[1] = (char)(0x00);//data type:??????????? user defined
ninomedj 0:aa420961d99b 268 data[2] = (char)(0x04);//service code 4
ninomedj 0:aa420961d99b 269 data[3] = (char)(0x00);//message code:????????????
ninomedj 0:aa420961d99b 270 data[4] = (char)(0x00);/////user defined
ninomedj 0:aa420961d99b 271 data[5] = (char)(0x00);
ninomedj 0:aa420961d99b 272 data[6] = (char)(0x00);
ninomedj 0:aa420961d99b 273 data[7] = (char)(0x00);
ninomedj 0:aa420961d99b 274 }
ninomedj 0:aa420961d99b 275
ninomedj 0:aa420961d99b 276 //////Transmission Interval Service
ninomedj 0:aa420961d99b 277
ninomedj 0:aa420961d99b 278 void nodespresponse::tis(){
ninomedj 0:aa420961d99b 279 char data[8];
ninomedj 0:aa420961d99b 280 data[0] = (char)(node_ID);//node_id
ninomedj 0:aa420961d99b 281 data[1] = (char)(0x00);//data type:no data
ninomedj 0:aa420961d99b 282 data[2] = (char)(0x05);//service code
ninomedj 0:aa420961d99b 283 data[3] = (char)(0x00);//message code:0=ok//-6 =CAN identifier or transmission rate out of range
ninomedj 0:aa420961d99b 284 data[4] = (char)(0x00);/////na
ninomedj 0:aa420961d99b 285 data[5] = (char)(0x00);/////na
ninomedj 0:aa420961d99b 286 data[6] = (char)(0x00);////na
ninomedj 0:aa420961d99b 287 data[7] = (char)(0x00);////na
ninomedj 0:aa420961d99b 288 }
ninomedj 0:aa420961d99b 289 //////FLASH Programming Service
ninomedj 0:aa420961d99b 290
ninomedj 0:aa420961d99b 291 void nodespresponse::fps(){
ninomedj 0:aa420961d99b 292 char data[8];
ninomedj 0:aa420961d99b 293 data[0] = (char)(node_ID);//node_id
ninomedj 0:aa420961d99b 294 data[1] = (char)(0x00);//data type:nodata
ninomedj 0:aa420961d99b 295 data[2] = (char)(0x06);//service code 6
ninomedj 0:aa420961d99b 296 data[3] = (char)(0x00);//message code:0 = OK ///-3 = invalid security code
ninomedj 0:aa420961d99b 297 data[4] = (char)(0x00);/////na
ninomedj 0:aa420961d99b 298 data[5] = (char)(0x00);
ninomedj 0:aa420961d99b 299 data[6] = (char)(0x00);
ninomedj 0:aa420961d99b 300 data[7] = (char)(0x00);
ninomedj 0:aa420961d99b 301 }
ninomedj 0:aa420961d99b 302
ninomedj 0:aa420961d99b 303 /* no response
ninomedj 0:aa420961d99b 304 //////State Transmission Service
ninomedj 0:aa420961d99b 305
ninomedj 0:aa420961d99b 306 void nodespresponse::sts(){
ninomedj 0:aa420961d99b 307 char data[8];
ninomedj 0:aa420961d99b 308 data[0] = (char)(node_ID);//node_id
ninomedj 0:aa420961d99b 309 data[1] = (char)(0x00);//data type:nodata
ninomedj 0:aa420961d99b 310 data[2] = (char)(0x07);//service code 7
ninomedj 0:aa420961d99b 311 data[3] = (char)(0x00);//message code:0
ninomedj 0:aa420961d99b 312 data[4] = (char)(0x00);/////na
ninomedj 0:aa420961d99b 313 data[5] = (char)(0x00);
ninomedj 0:aa420961d99b 314 data[6] = (char)(0x00);
ninomedj 0:aa420961d99b 315 data[7] = (char)(0x00);
ninomedj 0:aa420961d99b 316 }
ninomedj 0:aa420961d99b 317 */
ninomedj 0:aa420961d99b 318
ninomedj 0:aa420961d99b 319 //////Filter setting services
ninomedj 0:aa420961d99b 320
ninomedj 0:aa420961d99b 321 void nodespresponse::fss(){
ninomedj 0:aa420961d99b 322 char data[8];
ninomedj 0:aa420961d99b 323 data[0] = (char)(node_ID);//node_id
ninomedj 0:aa420961d99b 324 data[1] = (char)(0x00);//data type:no data
ninomedj 0:aa420961d99b 325 data[2] = (char)(0x08);//service code 8
ninomedj 0:aa420961d99b 326 data[3] = (char)(0x00);//message code:0 = OK -6 = limit frequency or filter number out of rang
ninomedj 0:aa420961d99b 327 data[4] = (char)(0x00);/////na
ninomedj 0:aa420961d99b 328 data[5] = (char)(0x00);
ninomedj 0:aa420961d99b 329 data[6] = (char)(0x00);
ninomedj 0:aa420961d99b 330 data[7] = (char)(0x00);
ninomedj 0:aa420961d99b 331 }
ninomedj 0:aa420961d99b 332
ninomedj 0:aa420961d99b 333
ninomedj 0:aa420961d99b 334
ninomedj 0:aa420961d99b 335 //////Test Control Service
ninomedj 0:aa420961d99b 336
ninomedj 0:aa420961d99b 337 void nodespresponse::tcs(){
ninomedj 0:aa420961d99b 338 char data[8];
ninomedj 0:aa420961d99b 339 data[0] = (char)(node_ID);//node_id
ninomedj 0:aa420961d99b 340 data[1] = (char)(0x00);//data type:user defined
ninomedj 0:aa420961d99b 341 data[2] = (char)(0x09);//service code 9
ninomedj 0:aa420961d99b 342 data[3] = (char)(0x00);//message code:user defined
ninomedj 0:aa420961d99b 343 data[4] = (char)(0x00);/////user defined
ninomedj 0:aa420961d99b 344 data[5] = (char)(0x00);
ninomedj 0:aa420961d99b 345 data[6] = (char)(0x00);
ninomedj 0:aa420961d99b 346 data[7] = (char)(0x00);
ninomedj 0:aa420961d99b 347 }
ninomedj 0:aa420961d99b 348
ninomedj 0:aa420961d99b 349
ninomedj 0:aa420961d99b 350
ninomedj 0:aa420961d99b 351 //////Baudrate Setting Service
ninomedj 0:aa420961d99b 352
ninomedj 0:aa420961d99b 353 void nodespresponse::bss(){
ninomedj 0:aa420961d99b 354 char data[8];
ninomedj 0:aa420961d99b 355 data[0] = (char)(node_ID);//node_id
ninomedj 0:aa420961d99b 356 data[1] = (char)(0x06);//data type:short
ninomedj 0:aa420961d99b 357 data[2] = (char)(0xA);//service code 10
ninomedj 0:aa420961d99b 358 data[3] = (char)(0x00);//message code:-1 = baudrate code unknown
ninomedj 0:aa420961d99b 359 data[4] = (char)(0x00);/////na
ninomedj 0:aa420961d99b 360 data[5] = (char)(0x00);/////na
ninomedj 0:aa420961d99b 361 data[6] = (char)(0x00);///na
ninomedj 0:aa420961d99b 362 data[7] = (char)(0x00);////na
ninomedj 0:aa420961d99b 363 }
ninomedj 0:aa420961d99b 364
ninomedj 0:aa420961d99b 365
ninomedj 0:aa420961d99b 366 //////Node-ID Setting Service
ninomedj 0:aa420961d99b 367
ninomedj 0:aa420961d99b 368 void nodespresponse::nis(){
ninomedj 0:aa420961d99b 369 char data[8];
ninomedj 0:aa420961d99b 370 data[0] = (char)(node_ID);//node_id
ninomedj 0:aa420961d99b 371 data[1] = (char)(0x00);//data type:no data
ninomedj 0:aa420961d99b 372 data[2] = (char)(0xB);//service code 11
ninomedj 0:aa420961d99b 373 data[3] = (char)(0x00);//message code:0 = OK -6 = node-ID out of range
ninomedj 0:aa420961d99b 374 data[4] = (char)(0x00);/////na
ninomedj 0:aa420961d99b 375 data[5] = (char)(0x00);
ninomedj 0:aa420961d99b 376 data[6] = (char)(0x00);
ninomedj 0:aa420961d99b 377 data[7] = (char)(0x00);
ninomedj 0:aa420961d99b 378 }
ninomedj 0:aa420961d99b 379
ninomedj 0:aa420961d99b 380 ////// Module Information Service
ninomedj 0:aa420961d99b 381
ninomedj 0:aa420961d99b 382 void nodespresponse::mis(){
ninomedj 0:aa420961d99b 383 char data[8];
ninomedj 0:aa420961d99b 384 data[0] = (char)(node_ID);//node_id
ninomedj 0:aa420961d99b 385 data[1] = (char)(0x00);//data type:user defined
ninomedj 0:aa420961d99b 386 data[2] = (char)(0xC);//service code 12
ninomedj 0:aa420961d99b 387 data[3] = (char)(0x00);//message code:user defined
ninomedj 0:aa420961d99b 388 data[4] = (char)(0x00);/////user defined
ninomedj 0:aa420961d99b 389 data[5] = (char)(0x00);
ninomedj 0:aa420961d99b 390 data[6] = (char)(0x00);
ninomedj 0:aa420961d99b 391 data[7] = (char)(0x00);
ninomedj 0:aa420961d99b 392 }
ninomedj 0:aa420961d99b 393 ////// Module Configuration Service
ninomedj 0:aa420961d99b 394
ninomedj 0:aa420961d99b 395 void nodespresponse::mcs(){
ninomedj 0:aa420961d99b 396 char data[8];
ninomedj 0:aa420961d99b 397 data[0] = (char)(node_ID);//node_id
ninomedj 0:aa420961d99b 398 data[1] = (char)(0x00);//data type:user defined
ninomedj 0:aa420961d99b 399 data[2] = (char)(0xD);//service code 13
ninomedj 0:aa420961d99b 400 data[3] = (char)(0x00);//message code:user defined
ninomedj 0:aa420961d99b 401 data[4] = (char)(0x00);/////user defined
ninomedj 0:aa420961d99b 402 data[5] = (char)(0x00);
ninomedj 0:aa420961d99b 403 data[6] = (char)(0x00);
ninomedj 0:aa420961d99b 404 data[7] = (char)(0x00);
ninomedj 0:aa420961d99b 405 }
ninomedj 0:aa420961d99b 406 ////// CAN Identifier Setting Service
ninomedj 0:aa420961d99b 407
ninomedj 0:aa420961d99b 408 void nodespresponse::css(){
ninomedj 0:aa420961d99b 409 char data[8];
ninomedj 0:aa420961d99b 410 data[0] = (char)(node_ID);//node_id
ninomedj 0:aa420961d99b 411 data[1] = (char)(0x00);//data type:no data
ninomedj 0:aa420961d99b 412 data[2] = (char)(0xE);//service code 14
ninomedj 0:aa420961d99b 413 data[3] = (char)(0x00);//message code:0 = OK -6 = message number or CAN identifier out of range
ninomedj 0:aa420961d99b 414 data[4] = (char)(0x00);/////na
ninomedj 0:aa420961d99b 415 data[5] = (char)(0x00);/////na
ninomedj 0:aa420961d99b 416 data[6] = (char)(0x00);////na
ninomedj 0:aa420961d99b 417 data[7] = (char)(0x00);///na
ninomedj 0:aa420961d99b 418 }
ninomedj 0:aa420961d99b 419
ninomedj 0:aa420961d99b 420 //////CANaerospace Identifier Distribution Setting Service
ninomedj 0:aa420961d99b 421
ninomedj 0:aa420961d99b 422 void nodespresponse::dss(){
ninomedj 0:aa420961d99b 423 char data[8];
ninomedj 0:aa420961d99b 424 data[0] = (char)(node_ID);//node_id
ninomedj 0:aa420961d99b 425 data[1] = (char)(0x00);//data type:no data
ninomedj 0:aa420961d99b 426 data[2] = (char)(0xF);//service code 15
ninomedj 0:aa420961d99b 427 data[3] = (char)(0x00);//message code:0= ok //-6= distribution id out of range
ninomedj 0:aa420961d99b 428 data[4] = (char)(0x00);/////na
ninomedj 0:aa420961d99b 429 data[5] = (char)(0x00);
ninomedj 0:aa420961d99b 430 data[6] = (char)(0x00);
ninomedj 0:aa420961d99b 431 data[7] = (char)(0x00);
ninomedj 0:aa420961d99b 432 }