New xbee sent protocol

Dependencies:   mbed C12832 XBee

Files at this revision

API Documentation at this revision

Comitter:
nnoitre
Date:
Wed Mar 23 12:54:59 2016 +0000
Parent:
3:a7a7dc5e687f
Commit message:
Update commentaar

Changed in this revision

main.cpp Show annotated file Show diff for this revision Revisions of this file
diff -r a7a7dc5e687f -r ccfba1cbb448 main.cpp
--- a/main.cpp	Wed Mar 23 12:47:46 2016 +0000
+++ b/main.cpp	Wed Mar 23 12:54:59 2016 +0000
@@ -16,7 +16,7 @@
 
 C12832 lcd(p5, p7, p6, p8, p11);    //Used for the LCD
 
-char Source=0b00000010; //ID hardcoden
+char ID=0b00000010; //ID hardcoden
 char Des=0b00000001;
 char Item,Status,Checksum;
 
@@ -31,7 +31,7 @@
 //methode om te verzenden
 void send(){
     xbee.putc(0x7E);    //beginflag
-    xbee.putc(Source);  //waarvan wordt er verzonden
+    xbee.putc(ID);  //waarvan wordt er verzonden
     xbee.putc(Des);     //naar waar wordt er verzonden
     xbee.putc(Item);    //over welke knop gaat het
     xbee.putc(Status);  //wat is de nieuwe status van de knop
@@ -76,7 +76,7 @@
         lcd.printf("upleft");
         Item=0b00000111;                        //item wordt joystick 315°
     }
-    Checksum=(Source+Des+Item+Status)%255;      //de checksum wordt berekend
+    Checksum=(ID+Des+Item+Status)%255;      //de checksum wordt berekend
     sending=0;                                  //sending wordt op nul gezet zodat de xbee kan lezen
     send();                                     //de methode send wordt aangeroepen
     t.start();                                  //een timer wordt gestart
@@ -151,7 +151,7 @@
             Status=0b00000000;
         }
     }
-    Checksum=(Source+Des+Item+Status)%255;// de checksum wordt berekend
+    Checksum=(ID+Des+Item+Status)%255;// de checksum wordt berekend
     sending=0;                            //sending wordt op 0 gezet zodat de xbee kan ontvangne
     send();                               //de send methode wordt aangeroepen
     t.start();                            //de timer wordt gestart
@@ -174,50 +174,54 @@
         if(!sending){                       //als sending =0 is kan de xbee de ack of nack lezen
             if(xbee.readable()) {           //Checks if the data is readable
                 xbee.gets(control,6);       //de xbee leest de ontvangen frame in de array in
-                if(control[0]==0x7D){        //als de beginflag ontvangen is wordt er gekeken of de eindflag juist ontvangen is
-                    if(control[5]==0x7D){    //als de eindflag juist ontvangne is wordt de checksum gecontroleerd
-                        Checksum=(control[1]+control[2]+control[3])%255;
-                        if(Checksum==control[4]){   //als de checksum correct is wordt er bekeken of het ACK of NACK signaal ontvan is 
-                            if(control[3]==0b00001111){ //als het ACK ontvangen is
-                                sending=1;                  //sending wordt terug op 1 gezet waardoor er terug een knop verzonden kan worden
-                                lcd.cls();
-                                lcd.locate(0,3);
-                                lcd.printf("ACK");
-                                t.stop();                   //de timer wordt gestopt en gereset
-                                t.reset();
-                                teller=0;                   //de teller wordt op nul gezet
-                                while(i<7){                 //de controle array wordt gewist
-                                    control[i]=0;
-                                    i++;
-                                }
-                                i=0;
+                if(control[2]==ID){         //als de boodschap voor deze module bedoelt is
+                    if(control[1]==Des){    //als de afzender correct is
+                        if(control[0]==0x7D){        //als de beginflag ontvangen is wordt er gekeken of de eindflag juist ontvangen is
+                            if(control[5]==0x7D){    //als de eindflag juist ontvangne is wordt de checksum gecontroleerd
+                                Checksum=(control[1]+control[2]+control[3])%255;
+                                if(Checksum==control[4]){   //als de checksum correct is wordt er bekeken of het ACK of NACK signaal ontvan is 
+                                    if(control[3]==0b00001111){ //als het ACK ontvangen is
+                                        sending=1;                  //sending wordt terug op 1 gezet waardoor er terug een knop verzonden kan worden
+                                        lcd.cls();
+                                        lcd.locate(0,3);
+                                        lcd.printf("ACK");
+                                        t.stop();                   //de timer wordt gestopt en gereset
+                                        t.reset();
+                                        teller=0;                   //de teller wordt op nul gezet
+                                        while(i<7){                 //de controle array wordt gewist
+                                            control[i]=0;
+                                            i++;
+                                        }
+                                        i=0;
+                                    }
+                                    if(control[3]==0b11110000){     //als de checksum niet correct is
+                                        lcd.cls();
+                                        lcd.locate(0,3);
+                                        lcd.printf("NACK");
+                                        if(teller<10){              //wordt er max 10 maal de frames herzonden
+                                            send();
+                                            teller++;
+                                        }
+                                        if(teller==10){             //als het signaal na 10 maal niet correct wordt doorgestuurd wordt het ge negeert
+                                            sending=1;
+                                            teller=0;
+                                        }   
+                                        lcd.cls();
+                                        lcd.locate(0,3);
+                                        lcd.printf("NO REACTION");
+                                    }
+                                }   
                             }
-                            if(control[3]==0b11110000){     //als de checksum niet correct is
-                                lcd.cls();
-                                lcd.locate(0,3);
-                                lcd.printf("NACK");
-                                if(teller<10){              //wordt er max 10 maal de frames herzonden
-                                    send();
-                                    teller++;
-                                }
-                                if(teller==10){             //als het signaal na 10 maal niet correct wordt doorgestuurd wordt het ge negeert
-                                    sending=1;
-                                    teller=0;
-                                }   
-                                lcd.cls();
-                                lcd.locate(0,3);
-                                lcd.printf("NO REACTION");
+                            if(t>=1){   //als er na 1 seconden geen signaal aankomt wordt deze herzonden
+                                t.stop();
+                                t.reset();
+                                send();
+                                t.start();
                             }
-                        }   
+                        }
                     }
-                    if(t>=1){   //als er na 1 seconden geen signaal aankomt wordt deze herzonden
-                        t.stop();
-                        t.reset();
-                        send();
-                        t.start();
-                    }
-                }
+                }   
             }
-        }   
+        }
     }
 }
\ No newline at end of file