Dummy Lora Packet Sending

Fork of Dealer_18feb17 by kumar singh

Files at this revision

API Documentation at this revision

Comitter:
NarendraSingh
Date:
Thu Feb 23 13:21:08 2017 +0000
Parent:
23:688ee106c385
Commit message:
Dummy Lora Packet Sending

Changed in this revision

Lora.cpp Show annotated file Show diff for this revision Revisions of this file
Lora.h Show annotated file Show diff for this revision Revisions of this file
main.cpp Show annotated file Show diff for this revision Revisions of this file
--- a/Lora.cpp	Thu Feb 23 08:15:58 2017 +0000
+++ b/Lora.cpp	Thu Feb 23 13:21:08 2017 +0000
@@ -62,28 +62,29 @@
 //Set Up lora network
 void Set_Up_Lora_Network_Configuration(void)
 {
+    pc_2.baud(115200);
     LORA_Module_UART.baud(115200);
     LORA_Module_UART.printf(Attention);//Send Attention command
     AT_Response_Receive_Status = FAILURE;
-    pc2.printf("Nwk set up started");
+    pc2.printf("\nNwk set up started");
     while(AT_Response_Receive_Status)
         Get_Lora_Response();
-    pc2.printf("AT Response received");
+    pc2.printf("\nAT Response received");
     LORA_Module_UART.printf("%s%d\r",Set_Frequency_Sub_Band,FREQUENCY_SUB_BAND_CHANNEL7);//set frequency sub band to 7
     AT_Response_Receive_Status = FAILURE;
     while(AT_Response_Receive_Status)
         Get_Lora_Response();
-    pc2.printf("Frequency band response received");
-    LORA_Module_UART.printf("%s%d,%s\r",Set_Network_Key,STRING_PARAMETER,Network_Key);   //set network key
+    pc2.printf("\nFrequency band response received");
+    LORA_Module_UART.printf("\n%s%d,%s\r",Set_Network_Key,STRING_PARAMETER,Network_Key);   //set network key
     AT_Response_Receive_Status = FAILURE;
     while(AT_Response_Receive_Status)
         Get_Lora_Response();
-    pc2.printf("Network key Response received");
-    LORA_Module_UART.printf("%s%d,%s\r",Set_Network_ID,STRING_PARAMETER,Network_ID);     //set network id
+    pc2.printf("\nNetwork key Response received");
+    LORA_Module_UART.printf("\n%s%d,%s\r",Set_Network_ID,STRING_PARAMETER,Network_ID);     //set network id
     AT_Response_Receive_Status = FAILURE;
     while(AT_Response_Receive_Status)
         Get_Lora_Response();
-    pc2.printf("Network Id response received");
+    pc2.printf("\nNetwork Id response received");
     
     LORA_Module_UART.printf("AT+TXDR=DR3\r");
     AT_Response_Receive_Status = FAILURE;
@@ -102,19 +103,19 @@
     while(AT_Response_Receive_Status)
         Get_Lora_Response();
     
-    pc2.printf("Configuration saved");
+    pc2.printf("\nConfiguration saved");
     LORA_Module_UART.printf("%s",Reset_Device);                    //reset device
     wait_ms(3500);
     LORA_Module_UART.printf(Attention);        //Send Attention command
     AT_Response_Receive_Status = FAILURE;
     while(AT_Response_Receive_Status)
         Get_Lora_Response();
-    pc2.printf("AT Response received");
+    pc2.printf("\nAT Response received");
     LORA_Module_UART.printf("%s",Join_Network);                    //join network with gateway
     AT_Response_Receive_Status = FAILURE;
     while(AT_Response_Receive_Status)
         Get_Lora_Response();
-    pc2.printf("Join Response received");
+    pc2.printf("\nJoin Response received");
 }
 
  void Initialize_lora_Packets()
@@ -132,12 +133,12 @@
         Fixed_Beacon_Packet.Parking1_Beacon_ID[i] = (0x01+i);      //MAC ID of 1st NearBy Beacon Device with Highest Signal Strength,dummy data
     Fixed_Beacon_Packet.Parking1_Beacon_Signal_Strength = 23;             //Signal Strength of 3rd NearBy Beacon Device with Highest Signal Strength          
     for(i=0;i<6;i++)
-        Fixed_Beacon_Packet.Parking2_Beacon_ID[i] = (10+i);      //MAC ID of 1st NearBy Beacon Device with Highest Signal Strength,dummy data
+        Fixed_Beacon_Packet.Parking2_Beacon_ID[i] = (2+i);      //MAC ID of 1st NearBy Beacon Device with Highest Signal Strength,dummy data
     Fixed_Beacon_Packet.Parking2_Beacon_Signal_Strength = 45;             //Signal Strength of 3rd NearBy Beacon Device with Highest Signal Strength          
     for(i=0;i<6;i++)
-        Fixed_Beacon_Packet.Parking3_Beacon_ID[i] = (20+i);      //MAC ID of 1st NearBy Beacon Device with Highest Signal Strength,dummy data
+        Fixed_Beacon_Packet.Parking3_Beacon_ID[i] = (3+i);      //MAC ID of 1st NearBy Beacon Device with Highest Signal Strength,dummy data
     Fixed_Beacon_Packet.Parking3_Beacon_Signal_Strength = 12;             //Signal Strength of 3rd NearBy Beacon Device with Highest Signal Strength    
-    Heart_Beat_Lora_Packet.Sequence_No = 0x00;                   //Sent Packet Sequence Number
+    Heart_Beat_Lora_Packet.Sequence_No = 0x01;                   //Sent Packet Sequence Number
     Heart_Beat_Lora_Packet.FCS = 0x00;                                 //FCS of all packets        
     
     /******* Initialize Lora packet for Vehicle Status *****/
@@ -145,94 +146,50 @@
     Misc_Packet_Data.Protocol_Version = OBD_Protocol_Version;
     Vehicle_Status_Lora_Packet.Packet_Type = STATUS_PACKET_CMD;
     for(i=0;i<17;i++)
-        Misc_Packet_Data.VIN[i] = i;//Vehicle_Identification_Number[i];
+        Misc_Packet_Data.VIN[i] = 0x06;//Vehicle_Identification_Number[i];
     for(i=0;i<3;i++)
         Misc_Packet_Data.ODO_METER_READING[i] = 0x05;  //Dummyy data, To be read using OBD
     Vehicle_Status_Lora_Packet.Fuel_Level = 1050;//10.5 litre
-    Misc_Packet_Data.OBD_Battery_Voltage = 350;
-    Misc_Packet_Data.Car_Battery_Voltage = 1250;
-    Misc_Packet_Data.OBD_Battery_Temperature = 95;
-    Misc_Packet_Data.Car_Ambient_Temperature = 104;
+    Misc_Packet_Data.OBD_Battery_Voltage = 200;
+    Misc_Packet_Data.Car_Battery_Voltage = 1000;
+    Misc_Packet_Data.OBD_Battery_Temperature = 100;
+    Misc_Packet_Data.Car_Ambient_Temperature = 200;
     for(i=0;i<6;i++)
         Vehicle_Status_Lora_Packet.BLE_Adv_Beacon_ID[i] = BLE_Adv_Module_Beacon_ID[i];         //MAC ID of 1st NearBy Beacon Device with Highest Signal Strength,dummy data
     for(i=0;i<6;i++)
-        Fixed_Beacon_Packet.Parking1_Beacon_ID[i] = i;         //MAC ID of 1st NearBy Beacon Device with Highest Signal Strength,dummy data
-    Fixed_Beacon_Packet.Parking1_Beacon_Signal_Strength = 0x07;   //Signal Strength of 3rd NearBy Beacon Device with Highest Signal Strength          
-    for(i=0;i<6;i++)
-        Fixed_Beacon_Packet.Parking2_Beacon_ID[i] = i;         //MAC ID of 1st NearBy Beacon Device with Highest Signal Strength,dummy data
-    Fixed_Beacon_Packet.Parking2_Beacon_Signal_Strength = 0x08;   //Signal Strength of 3rd NearBy Beacon Device with Highest Signal Strength          
-    for(i=0;i<6;i++)
-        Fixed_Beacon_Packet.Parking3_Beacon_ID[i] = i;         //MAC ID of 1st NearBy Beacon Device with Highest Signal Strength,dummy data
-    Fixed_Beacon_Packet.Parking3_Beacon_Signal_Strength = 0x09;   //Signal Strength of 3rd NearBy Beacon Device with Highest Signal Strength          
+        Near_Car_Beacon_Packet.Near_Car1_Beacon_ID[i] = (3+i);         //MAC ID of 1st NearBy Beacon Device with Highest Signal Strength,dummy data
+    Near_Car_Beacon_Packet.Near_Car1_Beacon_Signal_Strength = 0x07;   //Signal Strength of 3rd NearBy Beacon Device with Highest Signal Strength          
     for(i=0;i<6;i++)
-        Near_Car_Beacon_Packet.Near_Car1_Beacon_ID[i] = i;         //MAC ID of 1st NearBy Beacon Device with Highest Signal Strength,dummy data
-    Near_Car_Beacon_Packet.Near_Car1_Beacon_Signal_Strength = 0x09;   //Signal Strength of 3rd NearBy Beacon Device with Highest Signal Strength          
+        Near_Car_Beacon_Packet.Near_Car2_Beacon_ID[i] = (2+i);         //MAC ID of 1st NearBy Beacon Device with Highest Signal Strength,dummy data
+    Near_Car_Beacon_Packet.Near_Car2_Beacon_Signal_Strength = 0x08;   //Signal Strength of 3rd NearBy Beacon Device with Highest Signal Strength          
     for(i=0;i<6;i++)
-        Near_Car_Beacon_Packet.Near_Car2_Beacon_ID[i] = i;         //MAC ID of 1st NearBy Beacon Device with Highest Signal Strength,dummy data
-    Near_Car_Beacon_Packet.Near_Car2_Beacon_Signal_Strength = 0x09;   //Signal Strength of 3rd NearBy Beacon Device with Highest Signal Strength          
-    for(i=0;i<6;i++)
-        Near_Car_Beacon_Packet.Near_Car3_Beacon_ID[i] = i;         //MAC ID of 1st NearBy Beacon Device with Highest Signal Strength,dummy data
+        Near_Car_Beacon_Packet.Near_Car3_Beacon_ID[i] = (1+i);         //MAC ID of 1st NearBy Beacon Device with Highest Signal Strength,dummy data
     Near_Car_Beacon_Packet.Near_Car3_Beacon_Signal_Strength = 0x09;   //Signal Strength of 3rd NearBy Beacon Device with Highest Signal Strength          
-    Vehicle_Status_Lora_Packet.Sequence_No = 0x00;                   //Sent Packet Sequence Number
+    Vehicle_Status_Lora_Packet.Sequence_No = 0x01;                   //Sent Packet Sequence Number
     Vehicle_Status_Lora_Packet.FCS = 0x00;                       //FCS of all packets     
     
     /******* Initialize Lora packet for CheckIn *****/
     Misc_Packet_Data.Header = LORA_PACKET_HEADER;
     Misc_Packet_Data.Protocol_Version = OBD_Protocol_Version;
     CheckIN_Lora_Packet.Packet_Type = CHECKIN_PACKET_CMD;
-    for(i=0;i<17;i++)
-        Misc_Packet_Data.VIN[i] = Vehicle_Identification_Number[i];
-    for(i=0;i<3;i++)
-        Misc_Packet_Data.ODO_METER_READING[i] = 0x00;  //Dummyy data, To be read using OBD
     for(i=0;i<5;i++)
         CheckIN_Lora_Packet.DTC[i] = 0x00;       //Get Beacon_ID of 1st nearby Beacon Device
-    for(i=0;i<6;i++)
-        Fixed_Beacon_Packet.Parking1_Beacon_ID[i] = 0x00;         //MAC ID of 1st NearBy Beacon Device with Highest Signal Strength,dummy data
-    Fixed_Beacon_Packet.Parking1_Beacon_Signal_Strength = 0x00;   //Signal Strength of 3rd NearBy Beacon Device with Highest Signal Strength          
-    for(i=0;i<6;i++)
-        Fixed_Beacon_Packet.Parking2_Beacon_ID[i] = 0x00;         //MAC ID of 1st NearBy Beacon Device with Highest Signal Strength,dummy data
-    Fixed_Beacon_Packet.Parking2_Beacon_Signal_Strength = 0x00;   //Signal Strength of 3rd NearBy Beacon Device with Highest Signal Strength          
-    for(i=0;i<6;i++)
-        Fixed_Beacon_Packet.Parking3_Beacon_ID[i] = 0x00;         //MAC ID of 1st NearBy Beacon Device with Highest Signal Strength,dummy data
-    Fixed_Beacon_Packet.Parking3_Beacon_Signal_Strength = 0x00;   //Signal Strength of 3rd NearBy Beacon Device with Highest Signal Strength          
-    CheckIN_Lora_Packet.Sequence_No = 0x00;                   //Sent Packet Sequence Number
+    CheckIN_Lora_Packet.Sequence_No = 0x01;                   //Sent Packet Sequence Number
     CheckIN_Lora_Packet.FCS = 0x00;                       //FCS of all packets     
        
     /******* Initialize Lora packet for CheckOUT *****/
     Misc_Packet_Data.Header = LORA_PACKET_HEADER;
     Misc_Packet_Data.Protocol_Version = OBD_Protocol_Version;
     CheckOUT_Packet.Packet_Type = CHECKIN_PACKET_CMD;
-    for(i=0;i<17;i++)
-        Misc_Packet_Data.VIN[i] = Vehicle_Identification_Number[i];
-    for(i=0;i<3;i++)
-        Misc_Packet_Data.ODO_METER_READING[i] = 0x00;  //Dummyy data, To be read using OBD
-    for(i=0;i<6;i++)
-        Fixed_Beacon_Packet.Parking1_Beacon_ID[i] = 0x00;         //MAC ID of 1st NearBy Beacon Device with Highest Signal Strength,dummy data
-    Fixed_Beacon_Packet.Parking1_Beacon_Signal_Strength = 0x00;   //Signal Strength of 3rd NearBy Beacon Device with Highest Signal Strength          
-    for(i=0;i<6;i++)
-        Fixed_Beacon_Packet.Parking2_Beacon_ID[i] = 0x00;         //MAC ID of 1st NearBy Beacon Device with Highest Signal Strength,dummy data
-    Fixed_Beacon_Packet.Parking2_Beacon_Signal_Strength = 0x00;   //Signal Strength of 3rd NearBy Beacon Device with Highest Signal Strength          
-    for(i=0;i<6;i++)
-        Fixed_Beacon_Packet.Parking3_Beacon_ID[i] = 0x00;         //MAC ID of 1st NearBy Beacon Device with Highest Signal Strength,dummy data
-    Fixed_Beacon_Packet.Parking3_Beacon_Signal_Strength = 0x00;   //Signal Strength of 3rd NearBy Beacon Device with Highest Signal Strength          
-    CheckOUT_Packet.Sequence_No = 0x00;                   //Sent Packet Sequence Number
+    CheckOUT_Packet.Sequence_No = 0x01;                   //Sent Packet Sequence Number
     CheckOUT_Packet.FCS = 0x00;                       //FCS of all packets     
        
     /******* Initialize Lora packet for Movement *****/
     Misc_Packet_Data.Header = LORA_PACKET_HEADER;
     Misc_Packet_Data.Protocol_Version = OBD_Protocol_Version;
     Motion_Lora_Packet.Packet_Type = MOTION_PACKET_CMD;
-    for(i=0;i<6;i++)
-        Fixed_Beacon_Packet.Parking1_Beacon_ID[i] = 0x00;          //MAC ID of 1st NearBy Beacon Device with Highest Signal Strength,dummy data
-    Fixed_Beacon_Packet.Parking1_Beacon_Signal_Strength = 0x00;    //Signal Strength of 1st NearBy Beacon Device with Highest Signal Strength      
-    for(i=0;i<6;i++)
-        Fixed_Beacon_Packet.Parking2_Beacon_ID[i] = 0x00;          //MAC ID of 2nd NearBy Beacon Device with Highest Signal Strength,dummy data
-    Fixed_Beacon_Packet.Parking2_Beacon_Signal_Strength = 0x00;    //Signal Strength of 2nd NearBy Beacon Device with Highest Signal Strength          
-    for(i=0;i<6;i++)
-        Fixed_Beacon_Packet.Parking3_Beacon_ID[i] = 0x00;          //MAC ID of 3rd NearBy Beacon Device with Highest Signal Strength,dummy data
-    Fixed_Beacon_Packet.Parking3_Beacon_Signal_Strength = 0x00;    //Signal Strength of 3rd NearBy Beacon Device with Highest Signal Strength          
     Motion_Lora_Packet.Acceleration_Type = 0x00;          //Type of acceleration, Vehicle Started/Vehicle Stopped/Sudden Vehicle Movement
-    Motion_Lora_Packet.Sequence_No = 0x00;                   //Sent Packet Sequence Number
+    Motion_Lora_Packet.Sequence_No = 0x01;                   //Sent Packet Sequence Number
     Motion_Lora_Packet.FCS = 0x00;                        //FCS of all packets  
     Lora_Packet_To_Send[0] = 0x41;//'A'
     Lora_Packet_To_Send[1] = 0x54;//'T'
@@ -244,6 +201,7 @@
     Lora_Packet_To_Send[7] = 0x20;//' ' Blank Space
     Lora_Packet_To_Send[8] = Misc_Packet_Data.Header;                  //Header of Lora Packet,0xFE
     Lora_Packet_To_Send[9] = Misc_Packet_Data.Protocol_Version;
+    pc2.printf("\nLora Packets Initialized");
 }
                
  //HeartBeat Packet should be sent every 30sec
@@ -268,8 +226,8 @@
         Lora_Packet_To_Send[Pos++] = Fixed_Beacon_Packet.Parking3_Beacon_ID[i];       //Get Beacon_ID of 3rd nearby Beacon Device
     Lora_Packet_To_Send[Pos++] = Fixed_Beacon_Packet.Parking3_Beacon_Signal_Strength; //Get Signal Strength of 3rd nearby Beacon Device
     Lora_Packet_To_Send[Pos++] = Heart_Beat_Lora_Packet.Sequence_No;                  //Packet Sequence number
-    Lora_Packet_To_Send[Pos++] = Calculate_Lora_Frame_FCS(Lora_Packet_To_Send,Pos);   //Calculate FCS of all bytes
-    Lora_Packet_To_Send[Pos++] = 0xDE;//Calculate_Lora_Frame_FCS(Lora_Packet_To_Send,Pos);   //Calculate FCS of all bytes
+    //Lora_Packet_To_Send[Pos++] = Calculate_Lora_Frame_FCS(Lora_Packet_To_Send,Pos);   //Calculate FCS of all bytes
+    Lora_Packet_To_Send[Pos++] = 0xFA;//Calculate_Lora_Frame_FCS(Lora_Packet_To_Send,Pos);   //Calculate FCS of all bytes
     Lora_Packet_To_Send[Pos++] = 0x0D;//Calculate_Lora_Frame_FCS(Lora_Packet_To_Send,Pos);   //Calculate FCS of all bytes
     /*Lora_Packet_To_Send[Pos++] = 0xB1;//Calculate_Lora_Frame_FCS(Lora_Packet_To_Send,Pos);   //Calculate FCS of all bytes
     Lora_Packet_To_Send[Pos++] = 0xB2;//Calculate_Lora_Frame_FCS(Lora_Packet_To_Send,Pos);   //Calculate FCS of all bytes
@@ -277,11 +235,11 @@
     Lora_Packet_To_Send[Pos++] = 0xB4;//Calculate_Lora_Frame_FCS(Lora_Packet_To_Send,Pos);   //Calculate FCS of all bytes
     */Packet_Type_To_Send = HEARTBEAT_TYPE_PACKET;
     Send_Lora_Packet_To_Gateway(Lora_Packet_To_Send,Pos); 
-    if(Heart_Beat_Lora_Packet.Sequence_No < 0xFF)
+    if(Heart_Beat_Lora_Packet.Sequence_No < 0x08)
         Heart_Beat_Lora_Packet.Sequence_No++;
     else
-        Heart_Beat_Lora_Packet.Sequence_No = 0x00;
-    pc2.printf("Heartbeat Packet Sequence Number %d",Heart_Beat_Lora_Packet.Sequence_No);
+        Heart_Beat_Lora_Packet.Sequence_No = 0x01;
+    pc2.printf("\nHeartbeat Packet Sequence Number %d",Heart_Beat_Lora_Packet.Sequence_No);
 }
 
 //CheckIN packets sending should be started when device is plugged in to the vehicle. It should be sent every 5sec for 2minutes and afterthat it should stop sending
@@ -303,8 +261,6 @@
     Lora_Packet_To_Send[Pos++] = Misc_Packet_Data.OBD_Battery_Temperature;     //Get Battery Temperature
     Lora_Packet_To_Send[Pos++] = Misc_Packet_Data.Car_Ambient_Temperature;     //Get Ambient Temperature
     for(i=0;i<6;i++)
-        Lora_Packet_To_Send[Pos++] = Vehicle_Status_Lora_Packet.BLE_Adv_Beacon_ID[i];       //Get Beacon_ID of 1st nearby Beacon Device
-    for(i=0;i<6;i++)
         Lora_Packet_To_Send[Pos++] = Fixed_Beacon_Packet.Parking1_Beacon_ID[i];       //Get Beacon_ID of 1st nearby Beacon Device
     Lora_Packet_To_Send[Pos++] = Fixed_Beacon_Packet.Parking1_Beacon_Signal_Strength; //Get Signal Strength of 1st nearby Beacon Device
     for(i=0;i<6;i++)
@@ -313,7 +269,7 @@
     for(i=0;i<6;i++)
         Lora_Packet_To_Send[Pos++] = Fixed_Beacon_Packet.Parking3_Beacon_ID[i];       //Get Beacon_ID of 3rd nearby Beacon Device
     Lora_Packet_To_Send[Pos++] = Fixed_Beacon_Packet.Parking3_Beacon_Signal_Strength; //Get Signal Strength of 3rd nearby Beacon Device
-    /*for(i=0;i<6;i++)
+    for(i=0;i<6;i++)
         Lora_Packet_To_Send[Pos++] = Near_Car_Beacon_Packet.Near_Car1_Beacon_ID[i];       //Get Beacon_ID of 1st nearby Beacon Device
     Lora_Packet_To_Send[Pos++] = Near_Car_Beacon_Packet.Near_Car1_Beacon_Signal_Strength; //Get Signal Strength of 1st nearby Beacon Device
     for(i=0;i<6;i++)
@@ -321,9 +277,9 @@
     Lora_Packet_To_Send[Pos++] = Near_Car_Beacon_Packet.Near_Car2_Beacon_Signal_Strength; //Get Signal Strength of 2nd nearby Beacon Device
     for(i=0;i<6;i++)
         Lora_Packet_To_Send[Pos++] = Near_Car_Beacon_Packet.Near_Car3_Beacon_ID[i];       //Get Beacon_ID of 3rd nearby Beacon Device
-    */Lora_Packet_To_Send[Pos++] = 0x23;//Near_Car_Beacon_Packet.Near_Car3_Beacon_Signal_Strength; //Get Signal Strength of 3rd nearby Beacon Device
+    Lora_Packet_To_Send[Pos++] = 0x23;//Near_Car_Beacon_Packet.Near_Car3_Beacon_Signal_Strength; //Get Signal Strength of 3rd nearby Beacon Device
     Lora_Packet_To_Send[Pos++] = Vehicle_Status_Lora_Packet.Sequence_No;                  //Packet Sequence number
-    Lora_Packet_To_Send[Pos++] = 0xEE;//Calculate_Lora_Frame_FCS(Lora_Packet_To_Send,Pos);   //Calculate FCS of all bytes
+    /*Lora_Packet_To_Send[Pos++] = 0xEE;//Calculate_Lora_Frame_FCS(Lora_Packet_To_Send,Pos);   //Calculate FCS of all bytes
     Lora_Packet_To_Send[Pos++] = 0xEa;//Calculate_Lora_Frame_FCS(Lora_Packet_To_Send,Pos);   //Calculate FCS of all bytes
     Lora_Packet_To_Send[Pos++] = 0xEb;//Calculate_Lora_Frame_FCS(Lora_Packet_To_Send,Pos);   //Calculate FCS of all bytes
     Lora_Packet_To_Send[Pos++] = 0xEc;//Calculate_Lora_Frame_FCS(Lora_Packet_To_Send,Pos);   //Calculate FCS of all bytes
@@ -352,24 +308,19 @@
     Lora_Packet_To_Send[Pos++] = 0xE8;//Calculate_Lora_Frame_FCS(Lora_Packet_To_Send,Pos);   //Calculate FCS of all bytes
     Lora_Packet_To_Send[Pos++] = 0xEb;//Calculate_Lora_Frame_FCS(Lora_Packet_To_Send,Pos);   //Calculate FCS of all bytes
     Lora_Packet_To_Send[Pos++] = 0xE7;//Calculate_Lora_Frame_FCS(Lora_Packet_To_Send,Pos);   //Calculate FCS of all bytes
-    Lora_Packet_To_Send[Pos++] = 0xE0;//Calculate_Lora_Frame_FCS(Lora_Packet_To_Send,Pos);   //Calculate FCS of all bytes
+    */Lora_Packet_To_Send[Pos++] = Calculate_Lora_Frame_FCS(Lora_Packet_To_Send,Pos);   //Calculate FCS of all bytes
     Lora_Packet_To_Send[Pos++] = 0x0D;//Calculate_Lora_Frame_FCS(Lora_Packet_To_Send,Pos);   //Calculate FCS of all bytes
     /*Lora_Packet_To_Send[Pos++] = 0xA1;//Calculate_Lora_Frame_FCS(Lora_Packet_To_Send,Pos);   //Calculate FCS of all bytes
     Lora_Packet_To_Send[Pos++] = 0xA2;//Calculate_Lora_Frame_FCS(Lora_Packet_To_Send,Pos);   //Calculate FCS of all bytes
     Lora_Packet_To_Send[Pos++] = 0xA3;//Calculate_Lora_Frame_FCS(Lora_Packet_To_Send,Pos);   //Calculate FCS of all bytes
     Lora_Packet_To_Send[Pos++] = 0xA4;//Calculate_Lora_Frame_FCS(Lora_Packet_To_Send,Pos);   //Calculate FCS of all bytes
     */Send_Lora_Packet_To_Gateway(Lora_Packet_To_Send,Pos); 
-    if(Vehicle_Status_Lora_Packet.Sequence_No < 0xFF)
+    if(Vehicle_Status_Lora_Packet.Sequence_No < 0x08)
         Vehicle_Status_Lora_Packet.Sequence_No++;
     else
-        Vehicle_Status_Lora_Packet.Sequence_No = 0x00;
-        pc2.printf("Status Packet sending");
-     for(i=0; i < Pos; i++)
-     {
-         pc2.printf("0x%2x ",(Lora_Packet_To_Send[i]));
-        //pc2.putc(Command_To_Send[i]);
-     }
-     pc2.printf("Status Packet Sequence Number %d",Vehicle_Status_Lora_Packet.Sequence_No);
+        Vehicle_Status_Lora_Packet.Sequence_No = 0x01;
+        pc2.printf("\nStatus Packet sending");
+     pc2.printf("\nStatus Packet Sequence Number %d",Vehicle_Status_Lora_Packet.Sequence_No);
 }
 
 //CheckIN packets sending should be started when device is plugged in to the vehicle. It should be sent every 5sec for 2minutes and afterthat it should stop sending
@@ -404,14 +355,13 @@
     Lora_Packet_To_Send[Pos++] = 0x0D;//Calculate_Lora_Frame_FCS(Lora_Packet_To_Send,Pos);   //Calculate FCS of all bytes
     CheckIN_Packet_Sent_Count++;
     Send_Lora_Packet_To_Gateway(Lora_Packet_To_Send,Pos); 
-    for(i=0; i < Pos; i++)
-     {
-        pc2.putc(Lora_Packet_To_Send[i]);
-        //pc2.putc(Command_To_Send[i]);
-     }
-     pc2.printf("CheckIN Packet Sent");
-    CheckIN_Lora_Packet.Sequence_No++;
-    pc2.printf("Status Packet Sequence Number %d",CheckIN_Lora_Packet.Sequence_No);
+    pc2.printf("\nCheckIN Packet Sent");
+    if(CheckIN_Lora_Packet.Sequence_No < 0x08)
+        CheckIN_Lora_Packet.Sequence_No++;
+    else
+        CheckIN_Lora_Packet.Sequence_No = 0x01;
+        pc2.printf("\nStatus Packet sending");
+    pc2.printf("\nCheckIN Packet Sequence Number %d",CheckIN_Lora_Packet.Sequence_No);
 }
 
 
@@ -431,18 +381,26 @@
     Lora_Packet_To_Send[Pos++] = (Misc_Packet_Data.Car_Battery_Voltage & 0xFF); //Get Vehicle_Battery Temperature
     Lora_Packet_To_Send[Pos++] = Misc_Packet_Data.OBD_Battery_Temperature;     //Get Battery Temperature
     Lora_Packet_To_Send[Pos++] = Misc_Packet_Data.Car_Ambient_Temperature;     //Get Ambient Temperature
+    for(i=0;i<6;i++)
+        Lora_Packet_To_Send[Pos++] = Fixed_Beacon_Packet.Parking1_Beacon_ID[i];       //Get Beacon_ID of 1st nearby Beacon Device
+    Lora_Packet_To_Send[Pos++] = Fixed_Beacon_Packet.Parking1_Beacon_Signal_Strength; //Get Signal Strength of 1st nearby Beacon Device
+    for(i=0;i<6;i++)
+        Lora_Packet_To_Send[Pos++] = Fixed_Beacon_Packet.Parking2_Beacon_ID[i];       //Get Beacon_ID of 2nd nearby Beacon Device
+    Lora_Packet_To_Send[Pos++] = Fixed_Beacon_Packet.Parking2_Beacon_Signal_Strength; //Get Signal Strength of 2nd nearby Beacon Device
+    for(i=0;i<6;i++)
+        Lora_Packet_To_Send[Pos++] = Fixed_Beacon_Packet.Parking3_Beacon_ID[i];       //Get Beacon_ID of 3rd nearby Beacon Device
+    Lora_Packet_To_Send[Pos++] = Fixed_Beacon_Packet.Parking3_Beacon_Signal_Strength; //Get Signal Strength of 3rd nearby Beacon Device
     Lora_Packet_To_Send[Pos++] = CheckOUT_Packet.Sequence_No;                  //Packet Sequence number
     Lora_Packet_To_Send[Pos++] = Calculate_Lora_Frame_FCS(Lora_Packet_To_Send,Pos);   //Calculate FCS of all bytes
     Lora_Packet_To_Send[Pos++] = 0x0D;//Calculate_Lora_Frame_FCS(Lora_Packet_To_Send,Pos);   //Calculate FCS of all bytes
     CheckIN_Packet_Sent_Count++;
     Send_Lora_Packet_To_Gateway(Lora_Packet_To_Send,Pos); 
-    for(i=0; i < Pos; i++)
-     {
-        pc2.putc(Lora_Packet_To_Send[i]);
-        //pc2.putc(Command_To_Send[i]);
-     }pc2.printf("CheckOUT Packet Sent");
-    CheckOUT_Packet.Sequence_No++;
-    pc2.printf("Status Packet Sequence Number %d",CheckOUT_Packet.Sequence_No);
+    pc2.printf("\nCheckOUT Packet Sent");
+    if(CheckOUT_Packet.Sequence_No < 0x08)
+        CheckOUT_Packet.Sequence_No++;
+    else
+        CheckOUT_Packet.Sequence_No = 0x01;
+    pc2.printf("\CheckOUT Packet Sequence Number %d",CheckOUT_Packet.Sequence_No);
 }
 
 //Motion packets sending should be started when vehicle acceleration changes like when it starts moving,stops moving and gets sudden jurk in case of theft.
@@ -451,7 +409,7 @@
 {
     //write code to read accelerometer data,temperature,beacon data
     uint8 Pos = 10,i;
-    Lora_Packet_To_Send[Pos++] = (Motion_Lora_Packet.Packet_Type & 0xFF);         //LSB of Motion Packet Type
+    Lora_Packet_To_Send[Pos++] = MOTION_PACKET_CMD;//(Motion_Lora_Packet.Packet_Type & 0xFF);         //LSB of Motion Packet Type
     for(i=0;i<6;i++)
         Lora_Packet_To_Send[Pos++] = Fixed_Beacon_Packet.Parking1_Beacon_ID[i];       //Get Beacon_ID of 1st nearby Beacon Device
     Lora_Packet_To_Send[Pos++] = Fixed_Beacon_Packet.Parking1_Beacon_Signal_Strength; //Get Signal Strength of 1st nearby Beacon Device
@@ -464,14 +422,8 @@
     for(i=0;i<6;i++)
         Lora_Packet_To_Send[Pos++] = Near_Car_Beacon_Packet.Near_Car1_Beacon_ID[i];       //Get Beacon_ID of 1st nearby Beacon Device
     Lora_Packet_To_Send[Pos++] = Near_Car_Beacon_Packet.Near_Car1_Beacon_Signal_Strength; //Get Signal Strength of 1st nearby Beacon Device
-    for(i=0;i<6;i++)
-        Lora_Packet_To_Send[Pos++] = Near_Car_Beacon_Packet.Near_Car2_Beacon_ID[i];       //Get Beacon_ID of 2nd nearby Beacon Device
-    Lora_Packet_To_Send[Pos++] = Near_Car_Beacon_Packet.Near_Car2_Beacon_Signal_Strength; //Get Signal Strength of 2nd nearby Beacon Device
-    for(i=0;i<6;i++)
-        Lora_Packet_To_Send[Pos++] = Near_Car_Beacon_Packet.Near_Car3_Beacon_ID[i];       //Get Beacon_ID of 3rd nearby Beacon Device
-    Lora_Packet_To_Send[Pos++] = Near_Car_Beacon_Packet.Near_Car3_Beacon_Signal_Strength; //Get Signal Strength of 3rd nearby Beacon Device
     Lora_Packet_To_Send[Pos++] = Motion_Lora_Packet.Acceleration_Type;       //get Type of Acceleration
-    for(i=0;i<6;i++)
+    /*for(i=0;i<6;i++)
         Lora_Packet_To_Send[Pos++] = Near_Car_Beacon_Packet.Near_Car1_Beacon_ID[i];       //Get Beacon_ID of 1st nearby Beacon Device
     Lora_Packet_To_Send[Pos++] = Near_Car_Beacon_Packet.Near_Car1_Beacon_Signal_Strength; //Get Signal Strength of 1st nearby Beacon Device
     for(i=0;i<6;i++)
@@ -480,16 +432,17 @@
     for(i=0;i<6;i++)
         Lora_Packet_To_Send[Pos++] = Near_Car_Beacon_Packet.Near_Car3_Beacon_ID[i];       //Get Beacon_ID of 3rd nearby Beacon Device
     Lora_Packet_To_Send[Pos++] = Near_Car_Beacon_Packet.Near_Car3_Beacon_Signal_Strength; //Get Signal Strength of 3rd nearby Beacon Device
-    Lora_Packet_To_Send[Pos++] = Motion_Lora_Packet.Sequence_No;                  //Packet Sequence number
+    */Lora_Packet_To_Send[Pos++] = Motion_Lora_Packet.Sequence_No;                  //Packet Sequence number
     Lora_Packet_To_Send[Pos++] = Calculate_Lora_Frame_FCS(Lora_Packet_To_Send,Pos);   //Calculate FCS of all bytes
     Motion_Packet_Sent_Count++;
-    Lora_Packet_To_Send[Pos] = 0x0D;//Calculate_Lora_Frame_FCS(Lora_Packet_To_Send,Pos);   //Calculate FCS of all bytes
+    Lora_Packet_To_Send[Pos++] = 0x0D;//Calculate_Lora_Frame_FCS(Lora_Packet_To_Send,Pos);   //Calculate FCS of all bytes
     Send_Lora_Packet_To_Gateway(Lora_Packet_To_Send,Pos); 
-    for(i=0; i < Pos; i++)
-     {
-        pc2.putc(Lora_Packet_To_Send[i]);
-        //pc2.putc(Command_To_Send[i]);
-     }Motion_Lora_Packet.Sequence_No++;
+    if(Motion_Lora_Packet.Sequence_No < 0x08)
+        Motion_Lora_Packet.Sequence_No++;
+    else
+        Motion_Lora_Packet.Sequence_No = 0x01;
+     pc2.printf("\n Motion Packet Sent");
+     pc2.printf("\Motion Packet Sequence Number %d",Motion_Lora_Packet.Sequence_No);
 }   
 
 
@@ -548,7 +501,7 @@
 void Send_Lora_Packet_To_Gateway(uint8* Command_To_Send,uint8 Length)
 {
      uint8 i=0;
-     pc2.printf("Sending command");
+     pc2.printf("\nSending command");
      for(i=0; i < Length; i++)
      {
         LORA_Module_UART.putc(Command_To_Send[i]);
--- a/Lora.h	Thu Feb 23 08:15:58 2017 +0000
+++ b/Lora.h	Thu Feb 23 13:21:08 2017 +0000
@@ -14,9 +14,8 @@
  #define CHECKIN_PACKET_CMD         0x02           //MSB,CheckIn Identification Packet
  #define CHECKOUT_PACKET_CMD        0x03           //MSB,CheckIn Identification Packet
  #define MOTION_PACKET_CMD          0x04           //MSB,Motion Identification Packet
- #define LOW_BATTERY_PACKET_CMD     0x05           //MSB,Low Battery Identification Packet
- #define STATUS_PACKET_CMD          0x06           //MSB,Status Packet
- #define NEW_DEV_PACKET_CMD         0x07           //MSB,New Device Identification Packet
+ #define STATUS_PACKET_CMD          0x05           //MSB,Status Packet
+ #define NEW_DEV_PACKET_CMD         0x06           //MSB,New Device Identification Packet
 
 
  //Lora Frequency SubBand
--- a/main.cpp	Thu Feb 23 08:15:58 2017 +0000
+++ b/main.cpp	Thu Feb 23 13:21:08 2017 +0000
@@ -13,8 +13,9 @@
 uint8 OBD_Plug_In_Status = FALSE;
 
 //peripheral connection
-DigitalOut led1(LED1);
+DigitalOut led1(PB_11);
 DigitalOut led2(LED2);
+DigitalIn Switch2(PB_13);
 
 //Configure Serial port
 RawSerial LORA_UART(PA_0, PA_1);//USART4_TX->PA_0,USART4_RX->PA_1      :       Used for Lora module command sending and reception from gateway
@@ -27,6 +28,10 @@
 
 //InterruptIn OBD_PLUGIN_INTERRUPT_PIN(PC_13);
 InterruptIn CheckIn_Interrupt(PB_7);//(PC_13);
+InterruptIn Motion_Start_To_Stop(PB_5);//(PC_13);
+InterruptIn Motion_Stop_To_Start(PB_14);//(PC_13);
+InterruptIn Motion_Sudden_Jerk(PC_13);//(PC_13);
+
 
 uint8 Ticker_Count = 0;    //Variable to count for timer overflows
 
@@ -130,6 +135,27 @@
 uint8 OBD_PlugIN_State2=0;
 uint8 OBD_PlugIN_Temp_State=1;
 
+uint8 Start_To_Stop_Status = FALSE;
+uint8 Stop_To_Start_Status = FALSE;
+uint8 Jerk_Status = FALSE;
+
+void Start_To_Stop_Interrupt()
+{
+    Start_To_Stop_Status = TRUE;
+    Motion_Detect_Status = TRUE;
+}
+
+void Stop_To_Start_Interrupt()
+{
+    Stop_To_Start_Status = TRUE;
+    Motion_Detect_Status = TRUE;
+}
+
+void Sudden_Jerk_Interrupt()
+{
+    Jerk_Status = TRUE;
+    Motion_Detect_Status = TRUE;
+}
 void OBD_Plug_IN_Interrupt()
 {
     if(OBD_PlugIN_State1!=OBD_PlugIN_Temp_State) {
@@ -155,13 +181,14 @@
 void Handle_CheckIn_Interrupt()
 {
     OBD_PlugInOut_IOC_Status = TRUE;
-    pc.printf("Movement_Detected");
+    pc.printf("\nMovement_Detected\n");
 }
 
 //Declare Ticker for sending lora packet
 Ticker Lora_Packet_Sending_Ticker;
 void flip_Packet_Sending_Flag(void)
 {
+    led1=!led1;
     //flip function
     if(Ticker_Count < 5) {
         Ticker_Count++;
@@ -205,7 +232,7 @@
 {
     while (BLE_RECEIVER_UART.readable()) {
         // while there is data waiting
-        BLE_Receiver_UART_RX_Buffer[BLE_RxBuffer_End_Pos++] = BLE_RECEIVER_UART.getc(); // put it in the buffer
+        //BLE_Receiver_UART_RX_Buffer[BLE_RxBuffer_End_Pos++] = BLE_RECEIVER_UART.getc(); // put it in the buffer
         //pc1.putc(BLE_Receiver_UART_RX_Buffer[BLE_RxBuffer_End_Pos-1]);
         if(BLE_RxBuffer_End_Pos >= BLE_RECEIVER_UART_RX_Size) {
             // BUFFER OVERFLOW. What goes here depends on how you want to cope with that situation.
@@ -219,12 +246,17 @@
 {
     pc1.baud(115200);
     BLE_RECEIVER_UART.baud(115200);
-    pc1.printf("%s","Debugging started");
-    BLE_RECEIVER_UART.attach(&BLE_Receiver_onDataRx, Serial::RxIrq);
+    pc1.printf("%s","Debugging started\n");
+    //BLE_RECEIVER_UART.attach(&BLE_Receiver_onDataRx, Serial::RxIrq);
     LORA_UART.attach(&Lora_onDataRx, Serial::RxIrq);
    CheckIn_Interrupt.fall(&OBD_Plug_IN_Interrupt);
     CheckIn_Interrupt.rise(&OBD_Plug_OUT_Interrupt);
-    
+    if(Switch2)
+    {
+    }
+    Motion_Start_To_Stop.fall(&Start_To_Stop_Interrupt);
+    Motion_Stop_To_Start.fall(&Stop_To_Start_Interrupt);
+    Motion_Sudden_Jerk.fall(&Sudden_Jerk_Interrupt);
     //Create a thread to read vehicle data
     //Thread OBD_thread(OBD_Rcvd_Cmd_Processing_thread);
 
@@ -234,9 +266,9 @@
     //led2_thread is executing concurrently with main at this point
     //inactivity.rise(interrupt_activity_inactivity); // Attach the address of interrupt_activity_inactivity function to rising edge
     Initialize_Beacon_Module();
-    Send_Command_To_BLE_Receiver(SET_BEACON_VENDOR_ID);
-    Send_Command_To_BLE_Receiver(SET_BEACON_MESSAGE_TYPE);
-    pc1.printf("%s","Transmitter MAC ID received");
+   // Send_Command_To_BLE_Receiver(SET_BEACON_VENDOR_ID);
+   // Send_Command_To_BLE_Receiver(SET_BEACON_MESSAGE_TYPE);
+    pc1.printf("\n%s","Transmitter MAC ID received\n");
     Lora_Periodic_Packet_Sending(); //Infinite loop for sending and receiving lora response, no return from here
 }
 
@@ -256,51 +288,53 @@
 uint8 Status_Packet_Wait_Count = 0;
 void Lora_Periodic_Packet_Sending()
 {
-    pc1.printf("Periodic packet sending intiialized");
+    pc1.printf("\nPeriodic packet sending intiialized\n");
     Set_Up_Lora_Network_Configuration();
     Initialize_lora_Packets();
     Send_Lora_Packet_Flag = TRUE;
     while (true) {
         if(Packet_Type_To_Send == HEARTBEAT_TYPE_PACKET) {  //check if packet to be sent is Heartbeat packet
             if(Send_Lora_Packet_Flag) {     //Check if packet sending is enabled, Packet should be sent only when enabled after timeout period
+                pc1.printf("\nStatus_Packet_Wait_Count %d\n",Status_Packet_Wait_Count);
                 Status_Packet_Wait_Count++;
                 if(Status_Packet_Wait_Count < 4) {
-                    Send_Command_To_BLE_Receiver(GET_RSSI);
-                    Send_RSSI_Request_Command(GET_RSSI);
-                    pc1.printf("Sending heartbeat packet");                               //call function to send periodic motion packet
+                   // Send_Command_To_BLE_Receiver(GET_RSSI);
+                    //Send_RSSI_Request_Command(GET_RSSI);
+                    pc1.printf("\nSending heartbeat packet\n");                               //call function to send periodic motion packet
                     Send_HeartBeat_Packet();                            //call function to send heartbeat packet
-                    pc.printf("Sent HeartBeat Packet");
-                    AT_Response_Receive_Status = FAILURE;
+                    pc.printf("\nSent HeartBeat Packet\n");
+                    /*AT_Response_Receive_Status = FAILURE;
                     while(AT_Response_Receive_Status)
                         Get_Lora_Response();
-                    Send_Lora_Packet_Flag = FALSE;
-                    //pc1.printf("Heartbeat Packet Response Received");
+                    */Send_Lora_Packet_Flag = FALSE;
+                    pc1.printf("\nHeartbeat Packet Response Received\n");
                 } else {
                     //Send_RSSI_Request_Command(GET_RSSI);
                     Status_Packet_Wait_Count = 0;
-                    pc1.printf("Sending Vehicle status packets");                               //call function to send periodic motion packet
+                    pc1.printf("\nSending Vehicle status packets\n");                               //call function to send periodic motion packet
                     Send_Vehicle_Status_Packet();                            //call function to send heartbeat packet
-                    pc1.printf("Sent Vehicle Status Packet");
+                    pc1.printf("\nSent Vehicle Status Packet\n");
                     //AT_Response_Receive_Status = FAILURE;
                    // while(AT_Response_Receive_Status)
                     //    Get_Lora_Response();
                     Send_Lora_Packet_Flag = FALSE;
-                    //pc1.printf("Status Packet Response Received");
+                    Packet_Type_To_Send = HEARTBEAT_TYPE_PACKET;
+                    //pc1.printf("\nStatus Packet Response Received\n");
                 }
             }
         } else if(Packet_Type_To_Send == MOTION_TYPE_PACKET) {  //check if packet to be sent is motion packet
             if(Send_Lora_Packet_Flag) {                         //Check if packet sending isd enabled, Packet should be sent only when enabled after timeout period
                 //Send_RSSI_Request_Command(GET_RSSI);
-                pc1.printf("Sending Motion Packet");                               //call function to send periodic motion packet
+                pc1.printf("\nSending Motion Packet\n");                               //call function to send periodic motion packet
                 Send_Motion_Packet();
-                pc1.printf("Sent Motion Packet");                               //call function to send periodic motion packet
+                pc1.printf("\nSent Motion Packet\n");                               //call function to send periodic motion packet
                 AT_Response_Receive_Status = FAILURE;
                 while(AT_Response_Receive_Status)
                     Get_Lora_Response();
-                pc1.printf("Motion Packet Response Received");
+                pc1.printf("\nMotion Packet Response Received\n");
                 Send_Lora_Packet_Flag = FALSE;
                 if(Motion_Packet_Sent_Count >= 5) {             //Stop Sending Motion Packets if after sending for 2 minute
-                    pc1.printf("Packet Type Sending Changed to HeartBeat");
+                    pc1.printf("\nPacket Type Sending Changed to HeartBeat\n");
                     Motion_Packet_Sent_Count = 0;
                     Packet_Type_To_Send = HEARTBEAT_TYPE_PACKET;    //Set Packet type to send as heartbeat packet
                     Lora_Packet_Sending_Ticker.detach();          //destroy ticker
@@ -310,31 +344,31 @@
         } else if(Packet_Type_To_Send == CHECKIN_TYPE_PACKET) { //check if packet to be sent is Checkin packet
             if(Send_Lora_Packet_Flag) {     //Check if packet sending isd enabled, Packet should be sent only when enabled after timeout period
                 Send_Lora_Packet_Flag = FALSE;
-                //pc1.printf("Sent Beacon ID request");
+                //pc1.printf("\nSent Beacon ID request\n");
                // Send_RSSI_Request_Command(GET_RSSI);
                 if(OBD_PlugIN_State)
                 {
-                    pc1.printf("Sening Checkin Packet");
+                    pc1.printf("\nSening Checkin Packet\n");
                     Send_CheckIN_Packet();                              //call function to send periodic checkIn packet
-                    pc1.printf("Sent Checkin Packet");
-                    Process_Beacon_Command_Received(SET_VIRTUAL_PACKET_UUID);
-                    wait(.2);
-                    Process_Beacon_Command_Received(SOFT_REBOOT1);
+                    pc1.printf("\nSent Checkin Packet\n");
+                    //Process_Beacon_Command_Received(SET_VIRTUAL_PACKET_UUID);
+                    //wait(.2);
+                    //Process_Beacon_Command_Received(SOFT_REBOOT1);
                 }
                 else
                 {
-                    pc1.printf("Sending Checkout Packet");
+                    pc1.printf("\nSending Checkout Packet\n");
                     Send_CheckOUT_Packet();
-                    pc1.printf("Sent CheckOut Packet");
-                    Process_Beacon_Command_Received(SET_VIRTUAL_PACKET_UUID2);
-                    wait(.2);
-                    Process_Beacon_Command_Received(SOFT_REBOOT1);
+                    pc1.printf("\nSent CheckOut Packet\n");
+                    //Process_Beacon_Command_Received(SET_VIRTUAL_PACKET_UUID2);
+                    //wait(.2);
+                    //Process_Beacon_Command_Received(SOFT_REBOOT1);
                 }
                /* AT_Response_Receive_Status = FAILURE;
                 while(AT_Response_Receive_Status)
                     Get_Lora_Response();*/
                 if(CheckIN_Packet_Sent_Count >= 5) { //Stop Sending Motion Packets if after sending for 2 minute
-                    pc1.printf("Packet Type Sending Changed to HeartBeat");
+                    pc1.printf("\nPacket Type Sending Changed to HeartBeat\n");
                 CheckIN_Packet_Sent_Count = 0;
                 Packet_Type_To_Send = HEARTBEAT_TYPE_PACKET;    //Set Packet type to send as heartbeat packet
                 Initialize_Packets_Sent_Count();
@@ -346,19 +380,23 @@
             //Get_Acceleration_Type();
            // Process_Beacon_Command_Received(SET_VIRTUAL_PACKET_UUID);
            // Process_Beacon_Command_Received(SOFT_REBOOT1);
-           pc.putc('j');
             OBD_PlugInOut_IOC_Status = FALSE;
             Packet_Type_To_Send = CHECKIN_TYPE_PACKET;
             Send_Lora_Packet_Flag = TRUE;
             CheckIN_Packet_Sent_Count = 0;
-            CheckIN_Lora_Packet.Sequence_No = 0x00;  //Reset counter
-            CheckOUT_Packet.Sequence_No = 0x00;  //Reset counter
+            CheckIN_Lora_Packet.Sequence_No = 0x01;  //Reset counter
+            CheckOUT_Packet.Sequence_No = 0x01;  //Reset counter
             wait(1); //wait for 1sec to avoid detecting plugin debounce
         }
         if(Motion_Detect_Status) {  //Check if Accelerometer Interrupt is generated
-            Motion_Lora_Packet.Sequence_No = 0x00;  //Reset counter
+            Motion_Lora_Packet.Sequence_No = 0x01;  //Reset counter
+            Motion_Packet_Sent_Count = 0x00; //reset counetr
             Get_Acceleration_Type();
             Motion_Detect_Status = FALSE;
+            Start_To_Stop_Status = FALSE;
+            Jerk_Status = FALSE;
+            Stop_To_Start_Status = FALSE;
+            wait(1); //wait for 1sec to avoid detecting switch debounce
         }
     }
 }
@@ -369,7 +407,12 @@
     Lora_Packet_Sending_Ticker.detach();            //destroy ticker
     Lora_Packet_Sending_Ticker.attach(&flip_Packet_Sending_Flag, 5.0); //create new ticker, time inetrval value to be changed
     Send_Lora_Packet_Flag = 1;                      //set flag to send motion packet as soon as motion is detecetd
-    Motion_Lora_Packet.Acceleration_Type = Motion_Type_Detected;             //Read Type of motion deteceted
+    if(Start_To_Stop_Status)
+        Motion_Lora_Packet.Acceleration_Type = MOTION_TYPE_START_TO_STOP;             //Read Type of motion deteceted
+    if(Stop_To_Start_Status)
+        Motion_Lora_Packet.Acceleration_Type = MOTION_TYPE_STOP_TO_START;             //Read Type of motion deteceted
+    if(Jerk_Status)
+        Motion_Lora_Packet.Acceleration_Type = MOTION_TYPE_TAP;             //Read Type of motion deteceted
     //write code to read acceleration value for every 10sec after any of the acceleration is found
 }
 
@@ -422,7 +465,7 @@
     Fixed_Beacon_Packet.Parking3_Beacon_ID[5] = 0xC9;
     Fixed_Beacon_Packet.Parking3_Beacon_Signal_Strength = 0xB0;
     */
-    pc1.printf("Reading MACID from Receiver");
+    pc1.printf("\nReading MACID from Receiver\n");
     while(true)
     {
         wait_ms(2);
@@ -433,7 +476,7 @@
                 if(BLE_Receiver_UART_RX_Buffer[Temp_Pos+1] == 0x0A)
                 {
                     Temp_Pos = 2;
-                    //pc1.printf("Fixed Beacon1 MAC ID");
+                    //pc1.printf("\nFixed Beacon1 MAC ID\n");
                     for(i=0; i<6; i++)
                     {
                        Fixed_Beacon_Packet.Parking1_Beacon_ID[i] = BLE_Receiver_UART_RX_Buffer[Temp_Pos++];
@@ -441,7 +484,7 @@
                     }
                     Temp_Pos+=2;
                     Fixed_Beacon_Packet.Parking1_Beacon_Signal_Strength = BLE_Receiver_UART_RX_Buffer[Temp_Pos++];
-                    //pc1.printf("Fixed Beacon2 MAC ID");
+                    //pc1.printf("\nFixed Beacon2 MAC ID\n");
                     for(i=0; i<6; i++)
                     {
                         Fixed_Beacon_Packet.Parking2_Beacon_ID[i] = BLE_Receiver_UART_RX_Buffer[Temp_Pos++];
@@ -449,7 +492,7 @@
                     }
                     Temp_Pos+=2;
                     Fixed_Beacon_Packet.Parking2_Beacon_Signal_Strength = BLE_Receiver_UART_RX_Buffer[Temp_Pos++];
-                    //pc1.printf("Fixed Beacon3 MAC ID");
+                    //pc1.printf("\nFixed Beacon3 MAC ID\n");
                     for(i=0; i<6; i++)
                     {
                        Fixed_Beacon_Packet.Parking3_Beacon_ID[i] = BLE_Receiver_UART_RX_Buffer[Temp_Pos++];
@@ -468,5 +511,5 @@
         else
             Temp_Pos = 0x00;
     }
-    pc1.printf("Reading MACID finished");
+    pc1.printf("\nReading MACID finished\n");
 }