Dummy Lora Packet Sending

Fork of Dealer_18feb17 by kumar singh

Committer:
NarendraSingh
Date:
Sun Feb 12 11:03:44 2017 +0000
Revision:
14:144ed8b74713
Parent:
13:8955f2e95021
Child:
16:7703b9d92326
minor impelemented

Who changed what in which revision?

UserRevisionLine numberNew contents of line
NarendraSingh 11:77e595130230 1 #include "Lora.h"
NarendraSingh 11:77e595130230 2 #include "OBD.h"
NarendraSingh 11:77e595130230 3 #include "Common_Defs.h"
NarendraSingh 11:77e595130230 4 #include "Beacon.h"
NarendraSingh 11:77e595130230 5
NarendraSingh 11:77e595130230 6 //Configure Lora Packet
NarendraSingh 11:77e595130230 7 RawSerial LORA_Module_UART(PA_0, PA_1);//USART4_TX->PA_0,USART4_RX->PA_1
NarendraSingh 11:77e595130230 8 RawSerial DEBUGING_UART(PA_9, PA_10);//USART1_TX->PA_9,USART1_RX->PA_10
NarendraSingh 11:77e595130230 9
NarendraSingh 11:77e595130230 10 uint8 Packet_Type_To_Send = HEARTBEAT_TYPE_PACKET; //By Default Heart Beat PAckets should be sent
NarendraSingh 11:77e595130230 11 uint8 OBD_Protocol_Version = 0x01;
NarendraSingh 11:77e595130230 12 uint8 Vehicle_Identification_Number[17]; //Unique Vehicle_Identification_Number, Read using OBD
NarendraSingh 11:77e595130230 13 uint8 Motion_Packet_Sent_Count=0;
NarendraSingh 11:77e595130230 14 uint8 CheckIN_Packet_Sent_Count=0;
NarendraSingh 11:77e595130230 15 uint8 Lora_Packet_To_Send[100];
NarendraSingh 11:77e595130230 16 uint8 Send_Lora_Packet_Flag = FALSE;
NarendraSingh 11:77e595130230 17 int Lora_RxBuffer_Crnt_Pos,Lora_RxBuffer_End_Pos; // must be volatile or the compiler may over-optimise.
NarendraSingh 11:77e595130230 18 int receivedDataCount = 0;
NarendraSingh 11:77e595130230 19 char LORA_UART_RX_Buffer[LORA_UART_RX_Size];
NarendraSingh 11:77e595130230 20 int LORA_UART_RX_Crnt_Pos;
NarendraSingh 11:77e595130230 21 uint8 Lora_Command_Rcvd[100];
NarendraSingh 11:77e595130230 22 uint8 Lora_Cmd_Length = 0;
NarendraSingh 11:77e595130230 23 uint8 AT_Response_Receive_Status = FAILURE;
NarendraSingh 11:77e595130230 24
NarendraSingh 11:77e595130230 25 //Create Object for Type of Lora Packet to send
NarendraSingh 11:77e595130230 26 Heart_Beat_PacketType Heart_Beat_Lora_Packet; //Allocate Memory for HeartBeat Lora Packets
NarendraSingh 11:77e595130230 27 CheckIN_PacketType CheckIN_Lora_Packet; //Allocate Memory for CheckIN Lora Packets
NarendraSingh 11:77e595130230 28 Motion_PacketType Motion_Lora_Packet; //Allocate Memory for Movement Lora Packets
NarendraSingh 11:77e595130230 29 Vehicle_Status_PacketType Vehicle_Status_Lora_Packet; //Allocate Memory for Movement Lora Packets
NarendraSingh 11:77e595130230 30
NarendraSingh 11:77e595130230 31 //Lora AT Commands list
NarendraSingh 11:77e595130230 32 const char* Attention = {"AT\r"};
NarendraSingh 11:77e595130230 33 const char* Reset_Device = "ATZ\r";
NarendraSingh 11:77e595130230 34 const char* Reset_to_Factory_Defaults = "AT&F\r";
NarendraSingh 11:77e595130230 35 const char* Save_Configuration = "AT&W\r";
NarendraSingh 11:77e595130230 36 const char* Serial_Baud_Rate = "AT+IPR=";
NarendraSingh 11:77e595130230 37 const char* Join_Network = "AT+JOIN\r";
NarendraSingh 11:77e595130230 38 const char* Join_Retries = "AT+JR=";
NarendraSingh 11:77e595130230 39 const char* AES_Encryption = "AT+ENC=";
NarendraSingh 11:77e595130230 40 const char* Send_Lora_Packet = "AT+SEND ";
NarendraSingh 11:77e595130230 41 const char* Set_Frequency_Sub_Band = "AT+FSB=";
NarendraSingh 11:77e595130230 42 const char* Set_Network_ID = "AT+NI=";
NarendraSingh 11:77e595130230 43 const char* Set_Network_Key = "AT+NK=";
NarendraSingh 11:77e595130230 44 const char* Network_Key = "010203123";
NarendraSingh 11:77e595130230 45 const char* Network_ID = "010203040";
NarendraSingh 11:77e595130230 46 const char* Network_Join_Retries = "AT+JR=";
NarendraSingh 11:77e595130230 47 const char* Network_Join_Status = "AT+NJS=";
NarendraSingh 11:77e595130230 48 const char* Lora_Device_ID = "AT+DI\r";
NarendraSingh 11:77e595130230 49
NarendraSingh 11:77e595130230 50
NarendraSingh 11:77e595130230 51
NarendraSingh 11:77e595130230 52 uint8 Calculate_Lora_Frame_FCS(uint8* Packet_Data,uint8 Packet_Length);
NarendraSingh 11:77e595130230 53 void Set_Up_Lora_Network_Configuration(void);
NarendraSingh 11:77e595130230 54 void Get_Lora_Response(void);
NarendraSingh 11:77e595130230 55
NarendraSingh 11:77e595130230 56 //Set Up lora network
NarendraSingh 11:77e595130230 57 void Set_Up_Lora_Network_Configuration(void)
NarendraSingh 11:77e595130230 58 {
NarendraSingh 11:77e595130230 59 LORA_Module_UART.baud(115200);
NarendraSingh 11:77e595130230 60 LORA_Module_UART.printf(Attention);//Send Attention command
NarendraSingh 11:77e595130230 61 AT_Response_Receive_Status = FAILURE;
NarendraSingh 11:77e595130230 62 DEBUGING_UART.printf("Nwk set up started");
NarendraSingh 11:77e595130230 63 while(AT_Response_Receive_Status)
NarendraSingh 11:77e595130230 64 Get_Lora_Response();
NarendraSingh 11:77e595130230 65 DEBUGING_UART.printf("AT Response received");
NarendraSingh 11:77e595130230 66 LORA_Module_UART.printf("%s%d\r",Set_Frequency_Sub_Band,FREQUENCY_SUB_BAND_CHANNEL7);//set frequency sub band to 7
NarendraSingh 11:77e595130230 67 AT_Response_Receive_Status = FAILURE;
NarendraSingh 11:77e595130230 68 while(AT_Response_Receive_Status)
NarendraSingh 11:77e595130230 69 Get_Lora_Response();
NarendraSingh 11:77e595130230 70 DEBUGING_UART.printf("Frequency band response received");
NarendraSingh 11:77e595130230 71 LORA_Module_UART.printf("%s%d,%s\r",Set_Network_Key,STRING_PARAMETER,Network_Key); //set network key
NarendraSingh 11:77e595130230 72 AT_Response_Receive_Status = FAILURE;
NarendraSingh 11:77e595130230 73 while(AT_Response_Receive_Status)
NarendraSingh 11:77e595130230 74 Get_Lora_Response();
NarendraSingh 11:77e595130230 75 DEBUGING_UART.printf("Network key Response received");
NarendraSingh 11:77e595130230 76 LORA_Module_UART.printf("%s%d,%s\r",Set_Network_ID,STRING_PARAMETER,Network_ID); //set network id
NarendraSingh 11:77e595130230 77 AT_Response_Receive_Status = FAILURE;
NarendraSingh 11:77e595130230 78 while(AT_Response_Receive_Status)
NarendraSingh 11:77e595130230 79 Get_Lora_Response();
NarendraSingh 11:77e595130230 80 DEBUGING_UART.printf("Network Id response received");
NarendraSingh 11:77e595130230 81
NarendraSingh 11:77e595130230 82 //LORA_Module_UART.printf("%s",Reset_Device); //reset device
NarendraSingh 11:77e595130230 83 //wait_ms(3500);
NarendraSingh 11:77e595130230 84
NarendraSingh 11:77e595130230 85 LORA_Module_UART.printf("AT+TXDR=DR2\r");
NarendraSingh 11:77e595130230 86 AT_Response_Receive_Status = FAILURE;
NarendraSingh 11:77e595130230 87 while(AT_Response_Receive_Status)
NarendraSingh 11:77e595130230 88 Get_Lora_Response();
NarendraSingh 11:77e595130230 89 LORA_Module_UART.printf("AT+ADR=1\r"); //Enable adaptive data rate
NarendraSingh 11:77e595130230 90 AT_Response_Receive_Status = FAILURE;
NarendraSingh 11:77e595130230 91 while(AT_Response_Receive_Status)
NarendraSingh 11:77e595130230 92 Get_Lora_Response();
NarendraSingh 11:77e595130230 93 LORA_Module_UART.printf("%s",Save_Configuration); //save configuration
NarendraSingh 11:77e595130230 94 AT_Response_Receive_Status = FAILURE;
NarendraSingh 11:77e595130230 95 while(AT_Response_Receive_Status)
NarendraSingh 11:77e595130230 96 Get_Lora_Response();
NarendraSingh 11:77e595130230 97 DEBUGING_UART.printf("Configuration saved");
NarendraSingh 13:8955f2e95021 98 LORA_Module_UART.printf("%s",Reset_Device); //reset device
NarendraSingh 13:8955f2e95021 99 wait_ms(3500);
NarendraSingh 11:77e595130230 100 LORA_Module_UART.printf(Attention); //Send Attention command
NarendraSingh 11:77e595130230 101 AT_Response_Receive_Status = FAILURE;
NarendraSingh 11:77e595130230 102 while(AT_Response_Receive_Status)
NarendraSingh 11:77e595130230 103 Get_Lora_Response();
NarendraSingh 11:77e595130230 104 DEBUGING_UART.printf("AT Response received");
NarendraSingh 11:77e595130230 105 LORA_Module_UART.printf("%s",Join_Network); //join network with gateway
NarendraSingh 11:77e595130230 106 AT_Response_Receive_Status = FAILURE;
NarendraSingh 11:77e595130230 107 while(AT_Response_Receive_Status)
NarendraSingh 11:77e595130230 108 Get_Lora_Response();
NarendraSingh 11:77e595130230 109 DEBUGING_UART.printf("Join Response received");
NarendraSingh 11:77e595130230 110 }
NarendraSingh 11:77e595130230 111
NarendraSingh 11:77e595130230 112 void Initialize_lora_Packets()
NarendraSingh 11:77e595130230 113 {
NarendraSingh 11:77e595130230 114 uint8 i;
NarendraSingh 11:77e595130230 115 /******* Initialize Lora packet for HeartBeat *****/
NarendraSingh 11:77e595130230 116 Heart_Beat_Lora_Packet.Header = LORA_PACKET_HEADER;
NarendraSingh 11:77e595130230 117 Heart_Beat_Lora_Packet.Protocol_Version = OBD_Protocol_Version;
NarendraSingh 11:77e595130230 118 Heart_Beat_Lora_Packet.Packet_Type = HEART_BEAT_PACKET_CMD;
NarendraSingh 13:8955f2e95021 119 Heart_Beat_Lora_Packet.OBD_Battery_Voltage = 350; //3.50V, dummy data
NarendraSingh 13:8955f2e95021 120 Heart_Beat_Lora_Packet.Car_Battery_Voltage = 1250; //12.50V, dummy data
NarendraSingh 13:8955f2e95021 121 Heart_Beat_Lora_Packet.OBD_Battery_Temperature = 95; //95'F, dummy data
NarendraSingh 13:8955f2e95021 122 Heart_Beat_Lora_Packet.Car_Ambient_Temperature = 104; //104'F, dummy data
NarendraSingh 11:77e595130230 123 for(i=0;i<6;i++)
NarendraSingh 13:8955f2e95021 124 Heart_Beat_Lora_Packet.Parking1_Beacon_ID[i] = (0x01+i); //MAC ID of 1st NearBy Beacon Device with Highest Signal Strength,dummy data
NarendraSingh 14:144ed8b74713 125 Heart_Beat_Lora_Packet.Parking1_Beacon_Minor = 0x0000;
NarendraSingh 13:8955f2e95021 126 Heart_Beat_Lora_Packet.Parking1_Beacon_Signal_Strength = 23; //Signal Strength of 3rd NearBy Beacon Device with Highest Signal Strength
NarendraSingh 11:77e595130230 127 for(i=0;i<6;i++)
NarendraSingh 13:8955f2e95021 128 Heart_Beat_Lora_Packet.Parking2_Beacon_ID[i] = (10+i); //MAC ID of 1st NearBy Beacon Device with Highest Signal Strength,dummy data
NarendraSingh 14:144ed8b74713 129 Heart_Beat_Lora_Packet.Parking2_Beacon_Minor = 0x0000;
NarendraSingh 13:8955f2e95021 130 Heart_Beat_Lora_Packet.Parking2_Beacon_Signal_Strength = 45; //Signal Strength of 3rd NearBy Beacon Device with Highest Signal Strength
NarendraSingh 11:77e595130230 131 for(i=0;i<6;i++)
NarendraSingh 13:8955f2e95021 132 Heart_Beat_Lora_Packet.Parking3_Beacon_ID[i] = (20+i); //MAC ID of 1st NearBy Beacon Device with Highest Signal Strength,dummy data
NarendraSingh 14:144ed8b74713 133 Heart_Beat_Lora_Packet.Parking3_Beacon_Minor = 0x0000;
NarendraSingh 13:8955f2e95021 134 Heart_Beat_Lora_Packet.Parking3_Beacon_Signal_Strength = 12; //Signal Strength of 3rd NearBy Beacon Device with Highest Signal Strength
NarendraSingh 11:77e595130230 135 Heart_Beat_Lora_Packet.FCS = 0x00; //FCS of all packets
NarendraSingh 11:77e595130230 136
NarendraSingh 11:77e595130230 137 /******* Initialize Lora packet for Vehicle Status *****/
NarendraSingh 11:77e595130230 138 Vehicle_Status_Lora_Packet.Header = LORA_PACKET_HEADER;
NarendraSingh 11:77e595130230 139 Vehicle_Status_Lora_Packet.Protocol_Version = OBD_Protocol_Version;
NarendraSingh 13:8955f2e95021 140 Vehicle_Status_Lora_Packet.Packet_Type = STATUS_PACKET_CMD;
NarendraSingh 11:77e595130230 141 for(i=0;i<17;i++)
NarendraSingh 13:8955f2e95021 142 Vehicle_Status_Lora_Packet.VIN[i] = (30+i);//Vehicle_Identification_Number[i];
NarendraSingh 11:77e595130230 143 for(i=0;i<3;i++)
NarendraSingh 13:8955f2e95021 144 Vehicle_Status_Lora_Packet.ODO_METER_READING[i] = 0x05; //Dummyy data, To be read using OBD
NarendraSingh 13:8955f2e95021 145 Vehicle_Status_Lora_Packet.Fuel_Level = 1050;//10.5 litre
NarendraSingh 13:8955f2e95021 146 Vehicle_Status_Lora_Packet.OBD_Battery_Voltage = 350;
NarendraSingh 13:8955f2e95021 147 Vehicle_Status_Lora_Packet.Car_Battery_Voltage = 1250;
NarendraSingh 13:8955f2e95021 148 Vehicle_Status_Lora_Packet.OBD_Battery_Temperature = 95;
NarendraSingh 13:8955f2e95021 149 Vehicle_Status_Lora_Packet.Car_Ambient_Temperature = 104;
NarendraSingh 11:77e595130230 150 for(i=0;i<6;i++)
NarendraSingh 11:77e595130230 151 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
NarendraSingh 11:77e595130230 152 for(i=0;i<6;i++)
NarendraSingh 13:8955f2e95021 153 Vehicle_Status_Lora_Packet.Parking1_Beacon_ID[i] = (30+i); //MAC ID of 1st NearBy Beacon Device with Highest Signal Strength,dummy data
NarendraSingh 14:144ed8b74713 154 Vehicle_Status_Lora_Packet.Parking1_Beacon_Minor = 0x0000;
NarendraSingh 13:8955f2e95021 155 Vehicle_Status_Lora_Packet.Parking1_Beacon_Signal_Strength = 0x07; //Signal Strength of 3rd NearBy Beacon Device with Highest Signal Strength
NarendraSingh 13:8955f2e95021 156 for(i=0;i<6;i++)
NarendraSingh 13:8955f2e95021 157 Vehicle_Status_Lora_Packet.Parking2_Beacon_ID[i] = (40+i); //MAC ID of 1st NearBy Beacon Device with Highest Signal Strength,dummy data
NarendraSingh 14:144ed8b74713 158 Vehicle_Status_Lora_Packet.Parking2_Beacon_Minor = 0x0000;
NarendraSingh 13:8955f2e95021 159 Vehicle_Status_Lora_Packet.Parking2_Beacon_Signal_Strength = 0x08; //Signal Strength of 3rd NearBy Beacon Device with Highest Signal Strength
NarendraSingh 13:8955f2e95021 160 for(i=0;i<6;i++)
NarendraSingh 13:8955f2e95021 161 Vehicle_Status_Lora_Packet.Parking3_Beacon_ID[i] = (50+i); //MAC ID of 1st NearBy Beacon Device with Highest Signal Strength,dummy data
NarendraSingh 14:144ed8b74713 162 Vehicle_Status_Lora_Packet.Parking3_Beacon_Minor = 0x0000;
NarendraSingh 13:8955f2e95021 163 Vehicle_Status_Lora_Packet.Parking3_Beacon_Signal_Strength = 0x09; //Signal Strength of 3rd NearBy Beacon Device with Highest Signal Strength
NarendraSingh 11:77e595130230 164 for(i=0;i<6;i++)
NarendraSingh 13:8955f2e95021 165 Vehicle_Status_Lora_Packet.Near_Car1_Beacon_ID[i] = (60+i); //MAC ID of 1st NearBy Beacon Device with Highest Signal Strength,dummy data
NarendraSingh 14:144ed8b74713 166 Vehicle_Status_Lora_Packet.Near_Car1_Beacon_Minor = 0x0000;
NarendraSingh 13:8955f2e95021 167 Vehicle_Status_Lora_Packet.Near_Car1_Beacon_Signal_Strength = 0x09; //Signal Strength of 3rd NearBy Beacon Device with Highest Signal Strength
NarendraSingh 11:77e595130230 168 for(i=0;i<6;i++)
NarendraSingh 13:8955f2e95021 169 Vehicle_Status_Lora_Packet.Near_Car2_Beacon_ID[i] = (70+i); //MAC ID of 1st NearBy Beacon Device with Highest Signal Strength,dummy data
NarendraSingh 14:144ed8b74713 170 Vehicle_Status_Lora_Packet.Near_Car2_Beacon_Minor = 0x0000;
NarendraSingh 13:8955f2e95021 171 Vehicle_Status_Lora_Packet.Near_Car2_Beacon_Signal_Strength = 0x09; //Signal Strength of 3rd NearBy Beacon Device with Highest Signal Strength
NarendraSingh 13:8955f2e95021 172 for(i=0;i<6;i++)
NarendraSingh 13:8955f2e95021 173 Vehicle_Status_Lora_Packet.Near_Car3_Beacon_ID[i] = (80+i); //MAC ID of 1st NearBy Beacon Device with Highest Signal Strength,dummy data
NarendraSingh 14:144ed8b74713 174 Vehicle_Status_Lora_Packet.Near_Car3_Beacon_Minor = 0x0000;
NarendraSingh 13:8955f2e95021 175 Vehicle_Status_Lora_Packet.Near_Car3_Beacon_Signal_Strength = 0x09; //Signal Strength of 3rd NearBy Beacon Device with Highest Signal Strength
NarendraSingh 11:77e595130230 176 Vehicle_Status_Lora_Packet.FCS = 0x00; //FCS of all packets
NarendraSingh 11:77e595130230 177
NarendraSingh 11:77e595130230 178 /******* Initialize Lora packet for CheckIn *****/
NarendraSingh 11:77e595130230 179 CheckIN_Lora_Packet.Header = LORA_PACKET_HEADER;
NarendraSingh 11:77e595130230 180 CheckIN_Lora_Packet.Protocol_Version = OBD_Protocol_Version;
NarendraSingh 11:77e595130230 181 CheckIN_Lora_Packet.Packet_Type = CHECKIN_PACKET_CMD;
NarendraSingh 11:77e595130230 182 for(i=0;i<17;i++)
NarendraSingh 11:77e595130230 183 CheckIN_Lora_Packet.VIN[i] = Vehicle_Identification_Number[i];
NarendraSingh 11:77e595130230 184 for(i=0;i<3;i++)
NarendraSingh 11:77e595130230 185 CheckIN_Lora_Packet.ODO_METER_READING[i] = 0x00; //Dummyy data, To be read using OBD
NarendraSingh 11:77e595130230 186 for(i=0;i<6;i++)
NarendraSingh 11:77e595130230 187 CheckIN_Lora_Packet.Parking1_Beacon_ID[i] = 0x00; //MAC ID of 1st NearBy Beacon Device with Highest Signal Strength,dummy data
NarendraSingh 14:144ed8b74713 188 CheckIN_Lora_Packet.Parking1_Beacon_Minor = 0x0000;
NarendraSingh 11:77e595130230 189 CheckIN_Lora_Packet.Parking1_Beacon_Signal_Strength = 0x00; //Signal Strength of 3rd NearBy Beacon Device with Highest Signal Strength
NarendraSingh 11:77e595130230 190 for(i=0;i<6;i++)
NarendraSingh 11:77e595130230 191 CheckIN_Lora_Packet.Parking2_Beacon_ID[i] = 0x00; //MAC ID of 1st NearBy Beacon Device with Highest Signal Strength,dummy data
NarendraSingh 14:144ed8b74713 192 CheckIN_Lora_Packet.Parking2_Beacon_Minor = 0x0000;
NarendraSingh 11:77e595130230 193 CheckIN_Lora_Packet.Parking2_Beacon_Signal_Strength = 0x00; //Signal Strength of 3rd NearBy Beacon Device with Highest Signal Strength
NarendraSingh 11:77e595130230 194 for(i=0;i<6;i++)
NarendraSingh 11:77e595130230 195 CheckIN_Lora_Packet.Parking3_Beacon_ID[i] = 0x00; //MAC ID of 1st NearBy Beacon Device with Highest Signal Strength,dummy data
NarendraSingh 14:144ed8b74713 196 CheckIN_Lora_Packet.Parking3_Beacon_Minor = 0x0000;
NarendraSingh 11:77e595130230 197 CheckIN_Lora_Packet.Parking3_Beacon_Signal_Strength = 0x00; //Signal Strength of 3rd NearBy Beacon Device with Highest Signal Strength
NarendraSingh 11:77e595130230 198 CheckIN_Lora_Packet.FCS = 0x00; //FCS of all packets
NarendraSingh 11:77e595130230 199
NarendraSingh 11:77e595130230 200 /******* Initialize Lora packet for Movement *****/
NarendraSingh 11:77e595130230 201 Motion_Lora_Packet.Header = LORA_PACKET_HEADER;
NarendraSingh 11:77e595130230 202 Motion_Lora_Packet.Protocol_Version = OBD_Protocol_Version;
NarendraSingh 11:77e595130230 203 Motion_Lora_Packet.Packet_Type = MOTION_PACKET_CMD;
NarendraSingh 11:77e595130230 204 for(i=0;i<6;i++)
NarendraSingh 11:77e595130230 205 Motion_Lora_Packet.Parking1_Beacon_ID[i] = 0x00; //MAC ID of 1st NearBy Beacon Device with Highest Signal Strength,dummy data
NarendraSingh 14:144ed8b74713 206 Motion_Lora_Packet.Parking1_Beacon_Minor = 0x0000;
NarendraSingh 11:77e595130230 207 Motion_Lora_Packet.Parking1_Beacon_Signal_Strength = 0x00; //Signal Strength of 1st NearBy Beacon Device with Highest Signal Strength
NarendraSingh 11:77e595130230 208 for(i=0;i<6;i++)
NarendraSingh 11:77e595130230 209 Motion_Lora_Packet.Parking2_Beacon_ID[i] = 0x00; //MAC ID of 2nd NearBy Beacon Device with Highest Signal Strength,dummy data
NarendraSingh 14:144ed8b74713 210 Motion_Lora_Packet.Parking2_Beacon_Minor = 0x0000;
NarendraSingh 11:77e595130230 211 Motion_Lora_Packet.Parking2_Beacon_Signal_Strength = 0x00; //Signal Strength of 2nd NearBy Beacon Device with Highest Signal Strength
NarendraSingh 11:77e595130230 212 for(i=0;i<6;i++)
NarendraSingh 11:77e595130230 213 Motion_Lora_Packet.Parking3_Beacon_ID[i] = 0x00; //MAC ID of 3rd NearBy Beacon Device with Highest Signal Strength,dummy data
NarendraSingh 14:144ed8b74713 214 Motion_Lora_Packet.Parking3_Beacon_Minor = 0x0000;
NarendraSingh 11:77e595130230 215 Motion_Lora_Packet.Parking3_Beacon_Signal_Strength = 0x00; //Signal Strength of 3rd NearBy Beacon Device with Highest Signal Strength
NarendraSingh 11:77e595130230 216 Motion_Lora_Packet.Acceleration_Type = 0x00; //Type of acceleration, Vehicle Started/Vehicle Stopped/Sudden Vehicle Movement
NarendraSingh 11:77e595130230 217 Motion_Lora_Packet.FCS = 0x00; //FCS of all packets
NarendraSingh 14:144ed8b74713 218
NarendraSingh 11:77e595130230 219 }
NarendraSingh 11:77e595130230 220
NarendraSingh 11:77e595130230 221 //HeartBeat Packet should be sent every 30sec
NarendraSingh 11:77e595130230 222 void Send_HeartBeat_Packet(void)
NarendraSingh 11:77e595130230 223 {
NarendraSingh 11:77e595130230 224 //write code to read obd data,temperature,beacon data
NarendraSingh 11:77e595130230 225 uint8 Pos = 0,i;
NarendraSingh 11:77e595130230 226 Lora_Packet_To_Send[Pos++] = Heart_Beat_Lora_Packet.Header; //Header of Lora Packet,0xFE
NarendraSingh 11:77e595130230 227 Lora_Packet_To_Send[Pos++] = Heart_Beat_Lora_Packet.Protocol_Version;
NarendraSingh 11:77e595130230 228 Lora_Packet_To_Send[Pos++] = Heart_Beat_Lora_Packet.Packet_Type; //MSB of Motion Packet Type
NarendraSingh 11:77e595130230 229 Lora_Packet_To_Send[Pos++] = (Heart_Beat_Lora_Packet.OBD_Battery_Voltage >> 8); //Get OBD_Battery Voltage
NarendraSingh 11:77e595130230 230 Lora_Packet_To_Send[Pos++] = (Heart_Beat_Lora_Packet.OBD_Battery_Voltage & 0xFF); //Get OBD_Battery Voltage
NarendraSingh 11:77e595130230 231 Lora_Packet_To_Send[Pos++] = (Heart_Beat_Lora_Packet.Car_Battery_Voltage >> 8); //Get Vehicle_Battery Temperature
NarendraSingh 11:77e595130230 232 Lora_Packet_To_Send[Pos++] = (Heart_Beat_Lora_Packet.Car_Battery_Voltage & 0xFF); //Get Vehicle_Battery Temperature
NarendraSingh 11:77e595130230 233 Lora_Packet_To_Send[Pos++] = Heart_Beat_Lora_Packet.OBD_Battery_Temperature; //Get Battery Temperature
NarendraSingh 11:77e595130230 234 Lora_Packet_To_Send[Pos++] = Heart_Beat_Lora_Packet.Car_Ambient_Temperature; //Get Ambient Temperature
NarendraSingh 11:77e595130230 235 for(i=0;i<6;i++)
NarendraSingh 11:77e595130230 236 Lora_Packet_To_Send[Pos++] = Heart_Beat_Lora_Packet.Parking1_Beacon_ID[i]; //Get Beacon_ID of 1st nearby Beacon Device
NarendraSingh 14:144ed8b74713 237 Lora_Packet_To_Send[Pos++] = (Heart_Beat_Lora_Packet.Parking1_Beacon_Minor >> 8); //Get Parking1 Minor
NarendraSingh 14:144ed8b74713 238 Lora_Packet_To_Send[Pos++] = (Heart_Beat_Lora_Packet.Parking1_Beacon_Minor & 0xFF); //Get Parking1 Minor
NarendraSingh 11:77e595130230 239 Lora_Packet_To_Send[Pos++] = Heart_Beat_Lora_Packet.Parking1_Beacon_Signal_Strength; //Get Signal Strength of 1st nearby Beacon Device
NarendraSingh 11:77e595130230 240 for(i=0;i<6;i++)
NarendraSingh 11:77e595130230 241 Lora_Packet_To_Send[Pos++] = Heart_Beat_Lora_Packet.Parking2_Beacon_ID[i]; //Get Beacon_ID of 2nd nearby Beacon Device
NarendraSingh 14:144ed8b74713 242 Lora_Packet_To_Send[Pos++] = (Heart_Beat_Lora_Packet.Parking2_Beacon_Minor >> 8); //Get Parking2 Minor
NarendraSingh 14:144ed8b74713 243 Lora_Packet_To_Send[Pos++] = (Heart_Beat_Lora_Packet.Parking2_Beacon_Minor & 0xFF); //Get Parking2 Minor
NarendraSingh 11:77e595130230 244 Lora_Packet_To_Send[Pos++] = Heart_Beat_Lora_Packet.Parking2_Beacon_Signal_Strength; //Get Signal Strength of 2nd nearby Beacon Device
NarendraSingh 11:77e595130230 245 for(i=0;i<6;i++)
NarendraSingh 11:77e595130230 246 Lora_Packet_To_Send[Pos++] = Heart_Beat_Lora_Packet.Parking3_Beacon_ID[i]; //Get Beacon_ID of 3rd nearby Beacon Device
NarendraSingh 14:144ed8b74713 247 Lora_Packet_To_Send[Pos++] = (Heart_Beat_Lora_Packet.Parking3_Beacon_Minor >> 8); //Get Parking3 Minor
NarendraSingh 14:144ed8b74713 248 Lora_Packet_To_Send[Pos++] = (Heart_Beat_Lora_Packet.Parking3_Beacon_Minor & 0xFF); //Get Parking3 Minor
NarendraSingh 11:77e595130230 249 Lora_Packet_To_Send[Pos++] = Heart_Beat_Lora_Packet.Parking3_Beacon_Signal_Strength; //Get Signal Strength of 3rd nearby Beacon Device
NarendraSingh 11:77e595130230 250 Lora_Packet_To_Send[Pos++] = Calculate_Lora_Frame_FCS(Lora_Packet_To_Send,Pos); //Calculate FCS of all bytes
NarendraSingh 11:77e595130230 251 Packet_Type_To_Send = HEARTBEAT_TYPE_PACKET;
NarendraSingh 11:77e595130230 252 Send_Lora_Packet_To_Gateway(Lora_Packet_To_Send,Pos);
NarendraSingh 11:77e595130230 253 }
NarendraSingh 11:77e595130230 254
NarendraSingh 11:77e595130230 255 //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
NarendraSingh 11:77e595130230 256 void Send_Vehicle_Status_Packet(void)
NarendraSingh 11:77e595130230 257 {
NarendraSingh 11:77e595130230 258 //write code to read OBD data,temperature,beacon data
NarendraSingh 11:77e595130230 259 uint8 Pos = 0,i;
NarendraSingh 11:77e595130230 260 Lora_Packet_To_Send[Pos++] = Vehicle_Status_Lora_Packet.Header; //Header of Lora Packet,0xFE
NarendraSingh 11:77e595130230 261 Lora_Packet_To_Send[Pos++] = Vehicle_Status_Lora_Packet.Protocol_Version; //MSB of Motion Packet Type
NarendraSingh 11:77e595130230 262 Lora_Packet_To_Send[Pos++] = Vehicle_Status_Lora_Packet.Packet_Type; //MSB of Motion Packet Type
NarendraSingh 11:77e595130230 263 for(i=0;i < 17;i++)
NarendraSingh 11:77e595130230 264 Lora_Packet_To_Send[Pos++] = Vehicle_Status_Lora_Packet.VIN[i]; //Get OBD_ID
NarendraSingh 11:77e595130230 265 for(i=0;i < 3;i++)
NarendraSingh 11:77e595130230 266 Lora_Packet_To_Send[Pos++] = Vehicle_Status_Lora_Packet.ODO_METER_READING[i]; //Get OBD_ID
NarendraSingh 11:77e595130230 267 Lora_Packet_To_Send[Pos++] = (Vehicle_Status_Lora_Packet.Fuel_Level >> 8); //Get OBD_Battery Voltage
NarendraSingh 11:77e595130230 268 Lora_Packet_To_Send[Pos++] = (Vehicle_Status_Lora_Packet.Fuel_Level & 0xFF); //Get OBD_Battery Voltage
NarendraSingh 11:77e595130230 269 Lora_Packet_To_Send[Pos++] = (Vehicle_Status_Lora_Packet.OBD_Battery_Voltage >> 8); //Get OBD_Battery Voltage
NarendraSingh 11:77e595130230 270 Lora_Packet_To_Send[Pos++] = (Vehicle_Status_Lora_Packet.OBD_Battery_Voltage & 0xFF); //Get OBD_Battery Voltage
NarendraSingh 11:77e595130230 271 Lora_Packet_To_Send[Pos++] = (Vehicle_Status_Lora_Packet.Car_Battery_Voltage >> 8); //Get Vehicle_Battery Temperature
NarendraSingh 11:77e595130230 272 Lora_Packet_To_Send[Pos++] = (Vehicle_Status_Lora_Packet.Car_Battery_Voltage & 0xFF); //Get Vehicle_Battery Temperature
NarendraSingh 11:77e595130230 273 Lora_Packet_To_Send[Pos++] = Vehicle_Status_Lora_Packet.OBD_Battery_Temperature; //Get Battery Temperature
NarendraSingh 11:77e595130230 274 Lora_Packet_To_Send[Pos++] = Vehicle_Status_Lora_Packet.Car_Ambient_Temperature; //Get Ambient Temperature
NarendraSingh 11:77e595130230 275 for(i=0;i<6;i++)
NarendraSingh 11:77e595130230 276 Lora_Packet_To_Send[Pos++] = Vehicle_Status_Lora_Packet.BLE_Adv_Beacon_ID[i]; //Get Beacon_ID of 1st nearby Beacon Device
NarendraSingh 11:77e595130230 277 for(i=0;i<6;i++)
NarendraSingh 11:77e595130230 278 Lora_Packet_To_Send[Pos++] = Vehicle_Status_Lora_Packet.Parking1_Beacon_ID[i]; //Get Beacon_ID of 1st nearby Beacon Device
NarendraSingh 14:144ed8b74713 279 Lora_Packet_To_Send[Pos++] = (Vehicle_Status_Lora_Packet.Parking1_Beacon_Minor >> 8); //Get Parking1 Minor
NarendraSingh 14:144ed8b74713 280 Lora_Packet_To_Send[Pos++] = (Vehicle_Status_Lora_Packet.Parking1_Beacon_Minor & 0xFF); //Get Parking1 Minor
NarendraSingh 11:77e595130230 281 Lora_Packet_To_Send[Pos++] = Vehicle_Status_Lora_Packet.Parking1_Beacon_Signal_Strength; //Get Signal Strength of 1st nearby Beacon Device
NarendraSingh 11:77e595130230 282 for(i=0;i<6;i++)
NarendraSingh 11:77e595130230 283 Lora_Packet_To_Send[Pos++] = Vehicle_Status_Lora_Packet.Parking2_Beacon_ID[i]; //Get Beacon_ID of 2nd nearby Beacon Device
NarendraSingh 14:144ed8b74713 284 Lora_Packet_To_Send[Pos++] = (Vehicle_Status_Lora_Packet.Parking2_Beacon_Minor >> 8); //Get Parking2 Minor
NarendraSingh 14:144ed8b74713 285 Lora_Packet_To_Send[Pos++] = (Vehicle_Status_Lora_Packet.Parking2_Beacon_Minor & 0xFF); //Get Parking2 Minor
NarendraSingh 11:77e595130230 286 Lora_Packet_To_Send[Pos++] = Vehicle_Status_Lora_Packet.Parking2_Beacon_Signal_Strength; //Get Signal Strength of 2nd nearby Beacon Device
NarendraSingh 11:77e595130230 287 for(i=0;i<6;i++)
NarendraSingh 11:77e595130230 288 Lora_Packet_To_Send[Pos++] = Vehicle_Status_Lora_Packet.Parking3_Beacon_ID[i]; //Get Beacon_ID of 3rd nearby Beacon Device
NarendraSingh 14:144ed8b74713 289 Lora_Packet_To_Send[Pos++] = (Vehicle_Status_Lora_Packet.Parking3_Beacon_Minor >> 8); //Get Parking3 Minor
NarendraSingh 14:144ed8b74713 290 Lora_Packet_To_Send[Pos++] = (Vehicle_Status_Lora_Packet.Parking3_Beacon_Minor & 0xFF); //Get Parking3 Minor
NarendraSingh 11:77e595130230 291 Lora_Packet_To_Send[Pos++] = Vehicle_Status_Lora_Packet.Parking3_Beacon_Signal_Strength; //Get Signal Strength of 3rd nearby Beacon Device
NarendraSingh 11:77e595130230 292 for(i=0;i<6;i++)
NarendraSingh 11:77e595130230 293 Lora_Packet_To_Send[Pos++] = Vehicle_Status_Lora_Packet.Near_Car1_Beacon_ID[i]; //Get Beacon_ID of 1st nearby Beacon Device
NarendraSingh 14:144ed8b74713 294 Lora_Packet_To_Send[Pos++] = (Vehicle_Status_Lora_Packet.Near_Car1_Beacon_Minor >> 8); //Get Near Car1 Minor
NarendraSingh 14:144ed8b74713 295 Lora_Packet_To_Send[Pos++] = (Vehicle_Status_Lora_Packet.Near_Car1_Beacon_Minor & 0xFF); //Get Near Car1 Minor
NarendraSingh 11:77e595130230 296 Lora_Packet_To_Send[Pos++] = Vehicle_Status_Lora_Packet.Near_Car1_Beacon_Signal_Strength; //Get Signal Strength of 1st nearby Beacon Device
NarendraSingh 11:77e595130230 297 for(i=0;i<6;i++)
NarendraSingh 11:77e595130230 298 Lora_Packet_To_Send[Pos++] = Vehicle_Status_Lora_Packet.Near_Car2_Beacon_ID[i]; //Get Beacon_ID of 2nd nearby Beacon Device
NarendraSingh 14:144ed8b74713 299 Lora_Packet_To_Send[Pos++] = (Vehicle_Status_Lora_Packet.Near_Car2_Beacon_Minor >> 8); //Get Near Car2 Minor
NarendraSingh 14:144ed8b74713 300 Lora_Packet_To_Send[Pos++] = (Vehicle_Status_Lora_Packet.Near_Car2_Beacon_Minor & 0xFF); //Get Near Car2 Minor
NarendraSingh 11:77e595130230 301 Lora_Packet_To_Send[Pos++] = Vehicle_Status_Lora_Packet.Near_Car2_Beacon_Signal_Strength; //Get Signal Strength of 2nd nearby Beacon Device
NarendraSingh 11:77e595130230 302 for(i=0;i<6;i++)
NarendraSingh 11:77e595130230 303 Lora_Packet_To_Send[Pos++] = Vehicle_Status_Lora_Packet.Near_Car3_Beacon_ID[i]; //Get Beacon_ID of 3rd nearby Beacon Device
NarendraSingh 14:144ed8b74713 304 Lora_Packet_To_Send[Pos++] = (Vehicle_Status_Lora_Packet.Near_Car3_Beacon_Minor >> 8); //Get Near Car3 Minor
NarendraSingh 14:144ed8b74713 305 Lora_Packet_To_Send[Pos++] = (Vehicle_Status_Lora_Packet.Near_Car3_Beacon_Minor & 0xFF); //Get Near Car3 Minor
NarendraSingh 11:77e595130230 306 Lora_Packet_To_Send[Pos++] = Vehicle_Status_Lora_Packet.Near_Car3_Beacon_Signal_Strength; //Get Signal Strength of 3rd nearby Beacon Device
NarendraSingh 11:77e595130230 307 Lora_Packet_To_Send[Pos++] = Calculate_Lora_Frame_FCS(Lora_Packet_To_Send,Pos); //Calculate FCS of all bytes
NarendraSingh 11:77e595130230 308 CheckIN_Packet_Sent_Count++;
NarendraSingh 11:77e595130230 309 Send_Lora_Packet_To_Gateway(Lora_Packet_To_Send,Pos);
NarendraSingh 11:77e595130230 310 }
NarendraSingh 11:77e595130230 311
NarendraSingh 11:77e595130230 312 //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
NarendraSingh 11:77e595130230 313 void Send_CheckIN_Packet(void)
NarendraSingh 11:77e595130230 314 {
NarendraSingh 11:77e595130230 315 //write code to read OBD data,temperature,beacon data
NarendraSingh 11:77e595130230 316 uint8 Pos = 0,i;
NarendraSingh 11:77e595130230 317 Lora_Packet_To_Send[Pos++] = CheckIN_Lora_Packet.Header; //Header of Lora Packet,0xFE
NarendraSingh 11:77e595130230 318 Lora_Packet_To_Send[Pos++] = CheckIN_Lora_Packet.Protocol_Version; //MSB of Motion Packet Type
NarendraSingh 11:77e595130230 319 Lora_Packet_To_Send[Pos++] = CheckIN_Lora_Packet.Packet_Type; //MSB of Motion Packet Type
NarendraSingh 11:77e595130230 320 for(i=0;i < 17;i++)
NarendraSingh 11:77e595130230 321 Lora_Packet_To_Send[Pos++] = CheckIN_Lora_Packet.VIN[i]; //Get OBD_ID
NarendraSingh 11:77e595130230 322 for(i=0;i < 3;i++)
NarendraSingh 11:77e595130230 323 Lora_Packet_To_Send[Pos++] = CheckIN_Lora_Packet.ODO_METER_READING[i]; //Get OBD_ID
NarendraSingh 11:77e595130230 324 Lora_Packet_To_Send[Pos++] = (CheckIN_Lora_Packet.OBD_Battery_Voltage >> 8); //Get OBD_Battery Voltage
NarendraSingh 11:77e595130230 325 Lora_Packet_To_Send[Pos++] = (CheckIN_Lora_Packet.OBD_Battery_Voltage & 0xFF); //Get OBD_Battery Voltage
NarendraSingh 11:77e595130230 326 Lora_Packet_To_Send[Pos++] = (CheckIN_Lora_Packet.Car_Battery_Voltage >> 8); //Get Vehicle_Battery Temperature
NarendraSingh 11:77e595130230 327 Lora_Packet_To_Send[Pos++] = (CheckIN_Lora_Packet.Car_Battery_Voltage & 0xFF); //Get Vehicle_Battery Temperature
NarendraSingh 11:77e595130230 328 Lora_Packet_To_Send[Pos++] = CheckIN_Lora_Packet.OBD_Battery_Temperature; //Get Battery Temperature
NarendraSingh 11:77e595130230 329 Lora_Packet_To_Send[Pos++] = CheckIN_Lora_Packet.Car_Ambient_Temperature; //Get Ambient Temperature
NarendraSingh 11:77e595130230 330 for(i=0;i<6;i++)
NarendraSingh 11:77e595130230 331 Lora_Packet_To_Send[Pos++] = CheckIN_Lora_Packet.Parking1_Beacon_ID[i]; //Get Beacon_ID of 1st nearby Beacon Device
NarendraSingh 14:144ed8b74713 332 Lora_Packet_To_Send[Pos++] = (CheckIN_Lora_Packet.Parking1_Beacon_Minor >> 8); //Get Parking1 Minor
NarendraSingh 14:144ed8b74713 333 Lora_Packet_To_Send[Pos++] = (CheckIN_Lora_Packet.Parking1_Beacon_Minor & 0xFF); //Get Parking1 Minor
NarendraSingh 11:77e595130230 334 Lora_Packet_To_Send[Pos++] = CheckIN_Lora_Packet.Parking1_Beacon_Signal_Strength; //Get Signal Strength of 1st nearby Beacon Device
NarendraSingh 11:77e595130230 335 for(i=0;i<6;i++)
NarendraSingh 11:77e595130230 336 Lora_Packet_To_Send[Pos++] = CheckIN_Lora_Packet.Parking2_Beacon_ID[i]; //Get Beacon_ID of 2nd nearby Beacon Device
NarendraSingh 14:144ed8b74713 337 Lora_Packet_To_Send[Pos++] = (CheckIN_Lora_Packet.Parking2_Beacon_Minor >> 8); //Get Parking2 Minor
NarendraSingh 14:144ed8b74713 338 Lora_Packet_To_Send[Pos++] = (CheckIN_Lora_Packet.Parking2_Beacon_Minor & 0xFF); //Get Parking2 Minor
NarendraSingh 11:77e595130230 339 Lora_Packet_To_Send[Pos++] = CheckIN_Lora_Packet.Parking2_Beacon_Signal_Strength; //Get Signal Strength of 2nd nearby Beacon Device
NarendraSingh 11:77e595130230 340 for(i=0;i<6;i++)
NarendraSingh 11:77e595130230 341 Lora_Packet_To_Send[Pos++] = CheckIN_Lora_Packet.Parking3_Beacon_ID[i]; //Get Beacon_ID of 3rd nearby Beacon Device
NarendraSingh 14:144ed8b74713 342 Lora_Packet_To_Send[Pos++] = (CheckIN_Lora_Packet.Parking3_Beacon_Minor >> 8); //Get Parking3 Minor
NarendraSingh 14:144ed8b74713 343 Lora_Packet_To_Send[Pos++] = (CheckIN_Lora_Packet.Parking3_Beacon_Minor & 0xFF); //Get Parking3 Minor
NarendraSingh 11:77e595130230 344 Lora_Packet_To_Send[Pos++] = CheckIN_Lora_Packet.Parking3_Beacon_Signal_Strength; //Get Signal Strength of 3rd nearby Beacon Device
NarendraSingh 11:77e595130230 345 Lora_Packet_To_Send[Pos++] = Calculate_Lora_Frame_FCS(Lora_Packet_To_Send,Pos); //Calculate FCS of all bytes
NarendraSingh 11:77e595130230 346 CheckIN_Packet_Sent_Count++;
NarendraSingh 11:77e595130230 347 Send_Lora_Packet_To_Gateway(Lora_Packet_To_Send,Pos);
NarendraSingh 11:77e595130230 348 }
NarendraSingh 11:77e595130230 349
NarendraSingh 11:77e595130230 350 //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.
NarendraSingh 11:77e595130230 351 // It should be sent every 30sec for 2minutes and afterthat it should stop sending
NarendraSingh 11:77e595130230 352 void Send_Motion_Packet(void)
NarendraSingh 11:77e595130230 353 {
NarendraSingh 11:77e595130230 354 //write code to read accelerometer data,temperature,beacon data
NarendraSingh 11:77e595130230 355 uint8 Pos = 0,i;
NarendraSingh 11:77e595130230 356 Lora_Packet_To_Send[Pos++] = Motion_Lora_Packet.Header; //Header of Lora Packet,0xFE
NarendraSingh 11:77e595130230 357 Lora_Packet_To_Send[Pos++] = (Motion_Lora_Packet.Packet_Type >> 8); //MSB of Motion Packet Type
NarendraSingh 11:77e595130230 358 Lora_Packet_To_Send[Pos++] = (Motion_Lora_Packet.Packet_Type & 0xFF); //LSB of Motion Packet Type
NarendraSingh 11:77e595130230 359 for(i=0;i<6;i++)
NarendraSingh 11:77e595130230 360 Lora_Packet_To_Send[Pos++] = Motion_Lora_Packet.Parking1_Beacon_ID[i]; //Get Beacon_ID of 1st nearby Beacon Device
NarendraSingh 14:144ed8b74713 361 Lora_Packet_To_Send[Pos++] = (Motion_Lora_Packet.Parking1_Beacon_Minor >> 8); //Get Parking1 Minor
NarendraSingh 14:144ed8b74713 362 Lora_Packet_To_Send[Pos++] = (Motion_Lora_Packet.Parking1_Beacon_Minor & 0xFF); //Get Parking1 Minor
NarendraSingh 11:77e595130230 363 Lora_Packet_To_Send[Pos++] = Motion_Lora_Packet.Parking1_Beacon_Signal_Strength; //Get Signal Strength of 1st nearby Beacon Device
NarendraSingh 11:77e595130230 364 for(i=0;i<6;i++)
NarendraSingh 11:77e595130230 365 Lora_Packet_To_Send[Pos++] = Motion_Lora_Packet.Parking2_Beacon_ID[i]; //Get Beacon_ID of 2nd nearby Beacon Device
NarendraSingh 14:144ed8b74713 366 Lora_Packet_To_Send[Pos++] = (Motion_Lora_Packet.Parking2_Beacon_Minor >> 8); //Get Parking2 Minor
NarendraSingh 14:144ed8b74713 367 Lora_Packet_To_Send[Pos++] = (Motion_Lora_Packet.Parking2_Beacon_Minor & 0xFF); //Get Parking2 Minor
NarendraSingh 11:77e595130230 368 Lora_Packet_To_Send[Pos++] = Motion_Lora_Packet.Parking2_Beacon_Signal_Strength; //Get Signal Strength of 2nd nearby Beacon Device
NarendraSingh 11:77e595130230 369 for(i=0;i<6;i++)
NarendraSingh 11:77e595130230 370 Lora_Packet_To_Send[Pos++] = Motion_Lora_Packet.Parking3_Beacon_ID[i]; //Get Beacon_ID of 3rd nearby Beacon Device
NarendraSingh 14:144ed8b74713 371 Lora_Packet_To_Send[Pos++] = (Motion_Lora_Packet.Parking3_Beacon_Minor >> 8); //Get Parking3 Minor
NarendraSingh 14:144ed8b74713 372 Lora_Packet_To_Send[Pos++] = (Motion_Lora_Packet.Parking3_Beacon_Minor & 0xFF); //Get Parking3 Minor
NarendraSingh 11:77e595130230 373 Lora_Packet_To_Send[Pos++] = Motion_Lora_Packet.Parking3_Beacon_Signal_Strength; //Get Signal Strength of 3rd nearby Beacon Device
NarendraSingh 14:144ed8b74713 374 for(i=0;i<6;i++)
NarendraSingh 14:144ed8b74713 375 Lora_Packet_To_Send[Pos++] = Motion_Lora_Packet.Near_Car1_Beacon_ID[i]; //Get Beacon_ID of 1st nearby Beacon Device
NarendraSingh 14:144ed8b74713 376 Lora_Packet_To_Send[Pos++] = (Motion_Lora_Packet.Near_Car1_Beacon_Minor >> 8); //Get Near_Car1 Minor
NarendraSingh 14:144ed8b74713 377 Lora_Packet_To_Send[Pos++] = (Motion_Lora_Packet.Near_Car1_Beacon_Minor & 0xFF); //Get Near_Car1 Minor
NarendraSingh 14:144ed8b74713 378 Lora_Packet_To_Send[Pos++] = Motion_Lora_Packet.Near_Car1_Beacon_Signal_Strength; //Get Signal Strength of 1st nearby Beacon Device
NarendraSingh 14:144ed8b74713 379 for(i=0;i<6;i++)
NarendraSingh 14:144ed8b74713 380 Lora_Packet_To_Send[Pos++] = Motion_Lora_Packet.Near_Car2_Beacon_ID[i]; //Get Beacon_ID of 2nd nearby Beacon Device
NarendraSingh 14:144ed8b74713 381 Lora_Packet_To_Send[Pos++] = (Motion_Lora_Packet.Near_Car2_Beacon_Minor >> 8); //Get Near_Car2 Minor
NarendraSingh 14:144ed8b74713 382 Lora_Packet_To_Send[Pos++] = (Motion_Lora_Packet.Near_Car2_Beacon_Minor & 0xFF); //Get Near_Car2 Minor
NarendraSingh 14:144ed8b74713 383 Lora_Packet_To_Send[Pos++] = Motion_Lora_Packet.Near_Car2_Beacon_Signal_Strength; //Get Signal Strength of 2nd nearby Beacon Device
NarendraSingh 14:144ed8b74713 384 for(i=0;i<6;i++)
NarendraSingh 14:144ed8b74713 385 Lora_Packet_To_Send[Pos++] = Motion_Lora_Packet.Near_Car3_Beacon_ID[i]; //Get Beacon_ID of 3rd nearby Beacon Device
NarendraSingh 14:144ed8b74713 386 Lora_Packet_To_Send[Pos++] = (Motion_Lora_Packet.Near_Car3_Beacon_Minor >> 8); //Get Near_Car3 Minor
NarendraSingh 14:144ed8b74713 387 Lora_Packet_To_Send[Pos++] = (Motion_Lora_Packet.Near_Car3_Beacon_Minor & 0xFF); //Get Near_Car3 Minor
NarendraSingh 14:144ed8b74713 388 Lora_Packet_To_Send[Pos++] = Motion_Lora_Packet.Near_Car3_Beacon_Signal_Strength; //Get Signal Strength of 3rd nearby Beacon Device
NarendraSingh 11:77e595130230 389 Lora_Packet_To_Send[Pos++] = Motion_Lora_Packet.Acceleration_Type; //get Type of Acceleration
NarendraSingh 14:144ed8b74713 390 for(i=0;i<6;i++)
NarendraSingh 14:144ed8b74713 391 Lora_Packet_To_Send[Pos++] = Motion_Lora_Packet.Near_Car1_Beacon_ID[i]; //Get Beacon_ID of 1st nearby Beacon Device
NarendraSingh 14:144ed8b74713 392 Lora_Packet_To_Send[Pos++] = (Motion_Lora_Packet.Near_Car1_Beacon_Minor >> 8); //Get Near Car1 Minor
NarendraSingh 14:144ed8b74713 393 Lora_Packet_To_Send[Pos++] = (Motion_Lora_Packet.Near_Car1_Beacon_Minor & 0xFF); //Get Near Car1 Minor
NarendraSingh 14:144ed8b74713 394 Lora_Packet_To_Send[Pos++] = Motion_Lora_Packet.Near_Car1_Beacon_Signal_Strength; //Get Signal Strength of 1st nearby Beacon Device
NarendraSingh 14:144ed8b74713 395 for(i=0;i<6;i++)
NarendraSingh 14:144ed8b74713 396 Lora_Packet_To_Send[Pos++] = Motion_Lora_Packet.Near_Car2_Beacon_ID[i]; //Get Beacon_ID of 2nd nearby Beacon Device
NarendraSingh 14:144ed8b74713 397 Lora_Packet_To_Send[Pos++] = (Motion_Lora_Packet.Near_Car2_Beacon_Minor >> 8); //Get Near Car2 Minor
NarendraSingh 14:144ed8b74713 398 Lora_Packet_To_Send[Pos++] = (Motion_Lora_Packet.Near_Car2_Beacon_Minor & 0xFF); //Get Near Car2 Minor
NarendraSingh 14:144ed8b74713 399 Lora_Packet_To_Send[Pos++] = Motion_Lora_Packet.Near_Car2_Beacon_Signal_Strength; //Get Signal Strength of 2nd nearby Beacon Device
NarendraSingh 14:144ed8b74713 400 for(i=0;i<6;i++)
NarendraSingh 14:144ed8b74713 401 Lora_Packet_To_Send[Pos++] = Motion_Lora_Packet.Near_Car3_Beacon_ID[i]; //Get Beacon_ID of 3rd nearby Beacon Device
NarendraSingh 14:144ed8b74713 402 Lora_Packet_To_Send[Pos++] = (Motion_Lora_Packet.Near_Car3_Beacon_Minor >> 8); //Get Near Car3 Minor
NarendraSingh 14:144ed8b74713 403 Lora_Packet_To_Send[Pos++] = (Motion_Lora_Packet.Near_Car3_Beacon_Minor & 0xFF); //Get Near Car3 Minor
NarendraSingh 14:144ed8b74713 404 Lora_Packet_To_Send[Pos++] = Motion_Lora_Packet.Near_Car3_Beacon_Signal_Strength; //Get Signal Strength of 3rd nearby Beacon Device
NarendraSingh 11:77e595130230 405 Lora_Packet_To_Send[Pos++] = Calculate_Lora_Frame_FCS(Lora_Packet_To_Send,Pos); //Calculate FCS of all bytes
NarendraSingh 11:77e595130230 406 Motion_Packet_Sent_Count++;
NarendraSingh 11:77e595130230 407 Send_Lora_Packet_To_Gateway(Lora_Packet_To_Send,Pos);
NarendraSingh 11:77e595130230 408 }
NarendraSingh 11:77e595130230 409
NarendraSingh 11:77e595130230 410
NarendraSingh 11:77e595130230 411 void Get_Lora_Response(void)
NarendraSingh 11:77e595130230 412 {
NarendraSingh 11:77e595130230 413 static uint16 Temp_Pos1;
NarendraSingh 11:77e595130230 414 static uint8 Lora_Response_Found = 0x00;
NarendraSingh 11:77e595130230 415 static uint8 Response_Start_Pos[5];
NarendraSingh 11:77e595130230 416 Lora_Response_Found = 0;
NarendraSingh 11:77e595130230 417 Temp_Pos1 = LORA_UART_RX_Crnt_Pos = 0;
NarendraSingh 11:77e595130230 418 while(Temp_Pos1 < Lora_RxBuffer_End_Pos)
NarendraSingh 11:77e595130230 419 { //check for end of AT response to calculate length
NarendraSingh 11:77e595130230 420 if((LORA_UART_RX_Buffer[Temp_Pos1] != 0x0D) || (LORA_UART_RX_Buffer[Temp_Pos1+1] != 0x0A))
NarendraSingh 11:77e595130230 421 { //check for AT end response <cr><lf> (i.e. 0x0D,0x0A)
NarendraSingh 11:77e595130230 422 Temp_Pos1++;
NarendraSingh 11:77e595130230 423 }
NarendraSingh 11:77e595130230 424 else
NarendraSingh 11:77e595130230 425 {
NarendraSingh 11:77e595130230 426 Temp_Pos1+=2;
NarendraSingh 11:77e595130230 427 Response_Start_Pos[Lora_Response_Found++] = Temp_Pos1;
NarendraSingh 11:77e595130230 428 //DEBUGING_UART.printf("%c",Temp_Pos1);
NarendraSingh 11:77e595130230 429 if(Lora_Response_Found >= 4)
NarendraSingh 11:77e595130230 430 break;
NarendraSingh 11:77e595130230 431 }
NarendraSingh 11:77e595130230 432 }
NarendraSingh 11:77e595130230 433 if(Lora_Response_Found >= 3)
NarendraSingh 11:77e595130230 434 {
NarendraSingh 11:77e595130230 435 if((Response_Start_Pos[1] - Response_Start_Pos[0]) > 0x02) //Response received without data
NarendraSingh 11:77e595130230 436 {
NarendraSingh 11:77e595130230 437 LORA_UART_RX_Crnt_Pos = (Response_Start_Pos[0]);
NarendraSingh 11:77e595130230 438 Response_Start_Pos[1]-=2;
NarendraSingh 11:77e595130230 439 for(Temp_Pos1=0; LORA_UART_RX_Crnt_Pos < Response_Start_Pos[1]; Temp_Pos1++)
NarendraSingh 11:77e595130230 440 {
NarendraSingh 11:77e595130230 441 Lora_Command_Rcvd[Temp_Pos1] = LORA_UART_RX_Buffer[LORA_UART_RX_Crnt_Pos++];
NarendraSingh 11:77e595130230 442 DEBUGING_UART.putc(Lora_Command_Rcvd[Temp_Pos1]);
NarendraSingh 11:77e595130230 443 }
NarendraSingh 11:77e595130230 444 Lora_RxBuffer_End_Pos = 0;
NarendraSingh 11:77e595130230 445 AT_Response_Receive_Status = SUCCESS;
NarendraSingh 11:77e595130230 446 }
NarendraSingh 11:77e595130230 447 else if((Response_Start_Pos[1] - Response_Start_Pos[0]) == 0x02) //Response received along with data
NarendraSingh 11:77e595130230 448 {
NarendraSingh 11:77e595130230 449 LORA_UART_RX_Crnt_Pos = (Response_Start_Pos[1]);
NarendraSingh 11:77e595130230 450 Response_Start_Pos[2]-=2;
NarendraSingh 11:77e595130230 451 for(Temp_Pos1=0; LORA_UART_RX_Crnt_Pos < Response_Start_Pos[2]; Temp_Pos1++)
NarendraSingh 11:77e595130230 452 {
NarendraSingh 11:77e595130230 453 Lora_Command_Rcvd[Temp_Pos1] = LORA_UART_RX_Buffer[LORA_UART_RX_Crnt_Pos++];
NarendraSingh 11:77e595130230 454 DEBUGING_UART.putc(Lora_Command_Rcvd[Temp_Pos1]);
NarendraSingh 11:77e595130230 455 }
NarendraSingh 11:77e595130230 456 Lora_RxBuffer_End_Pos = 0;
NarendraSingh 11:77e595130230 457 AT_Response_Receive_Status = SUCCESS;
NarendraSingh 11:77e595130230 458 }
NarendraSingh 11:77e595130230 459 }
NarendraSingh 11:77e595130230 460 }
NarendraSingh 11:77e595130230 461
NarendraSingh 11:77e595130230 462 //Function to send general Lora packets using "AT+SEND" Command
NarendraSingh 11:77e595130230 463 void Send_Lora_Packet_To_Gateway(uint8* Command_To_Send,uint8 Length)
NarendraSingh 11:77e595130230 464 {
NarendraSingh 11:77e595130230 465 uint8 i=0;
NarendraSingh 11:77e595130230 466 LORA_Module_UART.printf("%s",Send_Lora_Packet);//write to serial port for sending through lora module
NarendraSingh 11:77e595130230 467 for(i=0;i<Length;i++)
NarendraSingh 13:8955f2e95021 468 {
NarendraSingh 11:77e595130230 469 LORA_Module_UART.putc(Command_To_Send[i]);//write to serial port for sending through lora module
NarendraSingh 13:8955f2e95021 470 DEBUGING_UART.putc(Command_To_Send[i]);
NarendraSingh 13:8955f2e95021 471 }
NarendraSingh 11:77e595130230 472 LORA_Module_UART.printf("\r");
NarendraSingh 11:77e595130230 473 }
NarendraSingh 11:77e595130230 474
NarendraSingh 11:77e595130230 475
NarendraSingh 11:77e595130230 476 unsigned char Calculate_Lora_Frame_FCS(unsigned char* Packet_Data,unsigned char Packet_Length)
NarendraSingh 11:77e595130230 477 {
NarendraSingh 11:77e595130230 478 uint8 i,FCS = 0x00;
NarendraSingh 11:77e595130230 479 for(i=0; i < Packet_Length; i++)
NarendraSingh 11:77e595130230 480 {
NarendraSingh 11:77e595130230 481 FCS ^= (Packet_Data[i]);
NarendraSingh 11:77e595130230 482 }
NarendraSingh 11:77e595130230 483 return(FCS);
NarendraSingh 11:77e595130230 484 }