contain lorawan with serial_rx enabled
Dependencies: pulga-lorawan-drv SPI_MX25R Si1133 BME280
Revision 63:4ec1808fb547, committed 2021-02-26
- Comitter:
- ruschigo
- Date:
- Fri Feb 26 18:11:06 2021 +0000
- Parent:
- 62:89df9529dbb0
- Child:
- 64:ed68ddac6360
- Commit message:
- insert serial rx by interrupt
Changed in this revision
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gps.cpp Fri Feb 26 18:11:06 2021 +0000 @@ -0,0 +1,657 @@ +#include "gps.h" + +//GPS DEclaration +SPI spi_2(P0_5, P0_7, P0_11); // mosi, miso, sclk +DigitalOut cs(P0_30); +DigitalOut gps_reset(P1_2); +DigitalOut gps_int (P0_23); +DigitalOut gps_DSEL (P0_27); + +void gps_leBootMsg(){ + + #define MAXIMUM_PACKET_SIZE 60 + int packet_size; + uint8_t packet[MAXIMUM_PACKET_SIZE]; + uint8_t value; + int cont; + value = spi_2.write(0x00); + + while (value != '$' ){ //wait start boot msg + value = spi_2.write(0x00); + wait_ms(5); + cont++; + if (cont > 100){ + printf("\n no response \n"); + return; + } + } + packet[0] = value; + value = spi_2.write(0x00); + for (packet_size = 1 ; packet_size <= MAXIMUM_PACKET_SIZE ;packet_size++) { + if (value != '\n' ){ + packet [packet_size]= value; + value = spi_2.write(0x00); + } + else { + //lora_send_packet (packet , (uint8_t) packet_size+1); // manda atraves do lora a mensagem de boot do gps + printf("Boot msg: %s \n", packet); + return; + } + + } + +} + +void gps_le_envia_linha(){ + + uint8_t packet[150]; + uint8_t value; + + for (int i=0;i < 149; i++){ + if (value == '\n'){ + //lora_send_packet (packet , (uint8_t) i); + return; + } + else packet [i] =value; + } + //lora_send_packet (packet , (uint8_t) 99); + +} + + +gps_ubxPacket gps_calcula_check(gps_ubxPacket Packet) { + + uint8_t Buffer[Packet.len + 4]; + uint8_t CK_A=0; + uint8_t CK_B=0; + + Buffer[0]= Packet.cls; + Buffer[1]= Packet.id; + Buffer[2]= Packet.len & 0xFF; + Buffer[3]= (Packet.len >> 8)& 0xFF;; + + //send_packet (Buffer, (uint8_t) 4 ); + + for (uint16_t i = 0; i < Packet.len; i++) { + Buffer [i+4] = Packet.payload[i] ; + } + + //send_packet (Buffer, (uint8_t) Packet.len + 4 ); + + for(int i=0 ; i < Packet.len + 4 ; i++) { + CK_A = CK_A + Buffer[i]; + CK_B = CK_B + CK_A; + CK_A = CK_A & 0xFF; + CK_B = CK_B & 0xFF; + //uint8_t packet_check[5] ={Buffer[i],(uint8_t) (i+1),CK_A,CK_B,'#'}; +// send_packet (packet_check , (uint8_t) 5); + } + + +// uint8_t packet_check[2] ={CK_A, CK_B}; +// send_packet (packet_check , (uint8_t) 2); + + Packet.checksumA = CK_A; + Packet.checksumB = CK_B; + + return Packet; + +} + +void send_gps_packet(gps_ubxPacket packet){ + + spi_2.write(SYNC1); + spi_2.write(SYNC2); + spi_2.write(packet.cls); + spi_2.write(packet.id); + spi_2.write(packet.len & 0xFF); + spi_2.write((packet.len >> 8)& 0xFF); + + for (uint16_t i = 0; i < packet.len; i++) { + spi_2.write(packet.payload[i]); + } + spi_2.write(packet.checksumA); + spi_2.write(packet.checksumB); + + //=============imprime resposta + wait_ms(50); + gps_le_envia_linha(); + gps_le_envia_linha(); + +} + +gps_navPVT le_nav_pvt () { + + gps_navPVT Pac; + + char state = 0; + int cont =0; + int numb=0; + + while (1){ //começou mensagem + if (cont > 100) { + // BMX160_read_acc(); + return Pac; + } + if (state == 0 ){ + + if ( spi_2.write(0x00) == 0xB5){ + state =1; + } + else { + cont++; + wait_ms(40); + } + + } + else if (state == 1){ // read 0xb5 + if (spi_2.write(0x00) == 0x62){ + state =2; + //wait_ms(30); + } + else state =0; + } + else if (state == 2) {// read 0xb5 0x62 + if (spi_2.write(0x00) == 0x01){ + //printf("le_nav_pvt going to state 3"); + state =3; + //wait_ms(30); + } + else state =0; + } + else if (state == 3) {// read 0xb5 0x62 0x01 + if (spi_2.write(0x00) == 0x07){ + state =4; + //printf("le_nav_pvt going to state 4"); + //wait_ms(30); + } + else state =0; + } + else if (state == 4) {// read 0xb5 0x62 0x01 0x07 + if (spi_2.write(0x00) == 0x5c){ + state =5; + //printf("le_nav_pvt going to state 5"); + //wait_ms(30); + } + else state =0; + } + else if (state == 5) {// read 0xb5 0x62 0x01 0x07 0x5c + if (spi_2.write(0x00) == 0x00){ + state =6; + //printf("le_nav_pvt going to state 6"); + //wait_ms(30); + } + else state =0; + } + else if (state == 6){ // read 0xb5 0x62 0x01 0x07 0x5c 0x00 + uint8_t value1,value2,value3,value4; + value1 = 0xff & spi_2.write(0x00); + value2 = 0xff & spi_2.write(0x00); + value3 = 0xff & spi_2.write(0x00); + value4 = 0xff & spi_2.write(0x00); + Pac.iTOW = (value4 << 24) + (value3 <<16) + (value2 << 8) + value1; + + value1 = 0xff & spi_2.write(0x00); + value2 = 0xff & spi_2.write(0x00); + Pac.year = (value2 << 8) + value1; + + Pac.month = 0xff & spi_2.write(0x00); + Pac.day = 0xff & spi_2.write(0x00); + Pac.hour = 0xff & spi_2.write(0x00); + Pac.min = 0xff & spi_2.write(0x00); + Pac.sec = 0xff & spi_2.write(0x00); + Pac.valid = 0xff & spi_2.write(0x00); + + value1 = 0xff & spi_2.write(0x00); + value2 = 0xff & spi_2.write(0x00); + value3 = 0xff & spi_2.write(0x00); + value4 = 0xff & spi_2.write(0x00); + Pac.tAcc = (value4 << 24) + (value3 <<16) + (value2 << 8) + value1; + + value1 = 0xff & spi_2.write(0x00); + value2 = 0xff & spi_2.write(0x00); + value3 = 0xff & spi_2.write(0x00); + value4 = 0xff & spi_2.write(0x00); + Pac.nano = (value4 << 24) + (value3 <<16) + (value2 << 8) + value1; + + Pac.fixtype = 0xff & spi_2.write(0x00); + Pac.flags = 0xff & spi_2.write(0x00); + Pac.flags2 = 0xff & spi_2.write(0x00); + Pac.numSV = 0xff & spi_2.write(0x00); + + value1 = 0xff & spi_2.write(0x00); + value2 = 0xff & spi_2.write(0x00); + value3 = 0xff & spi_2.write(0x00); + value4 = 0xff & spi_2.write(0x00); + Pac.lon = (value4 << 24) + (value3 <<16) + (value2 << 8) + value1; + lon= (value4 << 24) + (value3 <<16) + (value2 << 8) + value1; + //printf("Long Data %d \n ", lon); + + value1 = 0xff & spi_2.write(0x00); + value2 = 0xff & spi_2.write(0x00); + value3 = 0xff & spi_2.write(0x00); + value4 = 0xff & spi_2.write(0x00); + Pac.lat = (value4 << 24) + (value3 <<16) + (value2 << 8) + value1; + lat = (value4 << 24) + (value3 <<16) + (value2 << 8) + value1; + //printf("Lat Data %d", lat); + + + value1 = 0xff & spi_2.write(0x00); + value2 = 0xff & spi_2.write(0x00); + value3 = 0xff & spi_2.write(0x00); + value4 = 0xff & spi_2.write(0x00); + Pac.height = (value4 << 24) + (value3 <<16) + (value2 << 8) + value1; + + value1 = 0xff & spi_2.write(0x00); + value2 = 0xff & spi_2.write(0x00); + value3 = 0xff & spi_2.write(0x00); + value4 = 0xff & spi_2.write(0x00); + Pac.hMSL = (value4 << 24) + (value3 <<16) + (value2 << 8) + value1; + + value1 = 0xff & spi_2.write(0x00); + value2 = 0xff & spi_2.write(0x00); + value3 = 0xff & spi_2.write(0x00); + value4 = 0xff & spi_2.write(0x00); + Pac.hAcc = (value4 << 24) + (value3 <<16) + (value2 << 8) + value1; + + value1 = 0xff & spi_2.write(0x00); + value2 = 0xff & spi_2.write(0x00); + value3 = 0xff & spi_2.write(0x00); + value4 = 0xff & spi_2.write(0x00); + Pac.vAcc = (value4 << 24) + (value3 << 16) + (value2 << 8) + value1; + + value1 = 0xff & spi_2.write(0x00); + value2 = 0xff & spi_2.write(0x00); + value3 = 0xff & spi_2.write(0x00); + value4 = 0xff & spi_2.write(0x00); + Pac.velN = (value4 << 24) + (value3 << 16) + (value2 << 8) + value1; + + value1 = 0xff & spi_2.write(0x00); + value2 = 0xff & spi_2.write(0x00); + value3 = 0xff & spi_2.write(0x00); + value4 = 0xff & spi_2.write(0x00); + Pac.velE = (value4 << 24) + (value3 << 16) + (value2 << 8) + value1; + + value1 = 0xff & spi_2.write(0x00); + value2 = 0xff & spi_2.write(0x00); + value3 = 0xff & spi_2.write(0x00); + value4 = 0xff & spi_2.write(0x00); + Pac.velD = (value4 << 24) + (value3 << 16) + (value2 << 8) + value1; + + value1 = 0xff & spi_2.write(0x00); + value2 = 0xff & spi_2.write(0x00); + value3 = 0xff & spi_2.write(0x00); + value4 = 0xff & spi_2.write(0x00); + Pac.gSpeed = (value4 << 24) + (value3 << 16) + (value2 << 8) + value1; + + value1 = 0xff & spi_2.write(0x00); + value2 = 0xff & spi_2.write(0x00); + value3 = 0xff & spi_2.write(0x00); + value4 = 0xff & spi_2.write(0x00); + Pac.headMot = (value4 << 24) + (value3 << 16) + (value2 << 8) + value1; + + value1 = 0xff & spi_2.write(0x00); + value2 = 0xff & spi_2.write(0x00); + value3 = 0xff & spi_2.write(0x00); + value4 = 0xff & spi_2.write(0x00); + Pac.sAcc = (value4 << 24) + (value3 << 16) + (value2 << 8) + value1; + + value1 = 0xff & spi_2.write(0x00); + value2 = 0xff & spi_2.write(0x00); + value3 = 0xff & spi_2.write(0x00); + value4 = 0xff & spi_2.write(0x00); + Pac.headAcc = (value4 << 24) + (value3 << 16) + (value2 << 8) + value1; + + value1 = 0xff & spi_2.write(0x00); + value2 = 0xff & spi_2.write(0x00); + Pac.pDOP = (value2 << 8) + value1; + + for (int i=0; i < 6; i++)spi_2.write(0x00); + + value1 = 0xff & spi_2.write(0x00); + value2 = 0xff & spi_2.write(0x00); + value3 = 0xff & spi_2.write(0x00); + value4 = 0xff & spi_2.write(0x00); + Pac.headAcc = (value4 << 24) + (value3 << 16) + (value2 << 8) + value1; + + value1 = 0xff & spi_2.write(0x00); + value2 = 0xff & spi_2.write(0x00); + value3 = 0xff & spi_2.write(0x00); + value4 = 0xff & spi_2.write(0x00); + Pac.headAcc = (value4 << 24) + (value3 << 16) + (value2 << 8) + value1; + + value1 = 0xff & spi_2.write(0x00); + value2 = 0xff & spi_2.write(0x00); + Pac.magDec = (value2 << 8) + value1; + + value1 = 0xff & spi_2.write(0x00); + value2 = 0xff & spi_2.write(0x00); + Pac.magAcc = (value2 << 8) + value1; + + + return Pac; + } + } + wait_ms(100); +} + +void send_nav_pvt (){ + uint8_t packet_nav_pvt[] = { 0xB5, 0x62, 0x01, 0x07, 0x00, 0x00, 0x08, 0x19}; + + //=============envia pacote nav pvt + for ( int i=0; i< sizeof(packet_nav_pvt) ; i++){ + spi_2.write(packet_nav_pvt[i]); + wait_ms(5); + } + + gps_navPVT Data = le_nav_pvt(); + + uint8_t packet [100]; + + packet [0]= (Data.lon >> 24)& 0xff; + packet [1]= (Data.lon >> 16) & 0xff ; + packet [2]= (Data.lon >> 8) & 0xff; + packet [3]= Data.lon & 0xff; + packet [4]= (Data.lat >> 24)& 0xff; + packet [5]= (Data.lat >> 16) & 0xff ; + packet [6]= (Data.lat >> 8) & 0xff; + packet [7]= Data.lat & 0xff; + packet [8]= (Data.hMSL >> 24)& 0xff; + packet [9]= (Data.hMSL >> 16) & 0xff ; + packet [10]= (Data.hMSL >> 8) & 0xff; + packet [11]= Data.hMSL & 0xff; + + if (Data.lon !=0 || Data.lat !=0 ){ + //lora_send_packet (packet , (uint8_t) 12); + } +} + +void send_gps_data(uint8_t *packet, uint8_t size){ + uint8_t packet_rec[size]; + for ( int i=0; i< size ; i++){ + spi_2.write(packet[i]); + + //wait_ms(5); + } + //send_packet (packet_rec ,size); +} + +/* +void wait_packet (uint8_t *header) { + + char state = 0; + int cont =0; + + while (1){ //começou mensagem + if (cont > 250) { + //led2=!led2; + return; + } + if (state == 0 ){ + if (spi_2.write(0x00) == header[0]) + state =1; + else { + cont++; + wait_ms(10); + } + + + } + else if (state == 1){ // read 0xb5 + if (spi_2.write(0x00) == header[1]){ + state =2; + } + else state =0; + } + else if (state == 2) {// read 0xb5 0x62 + if (spi_2.write(0x00) == header[2]){ + state =3; + } + else state =0; + } + else if (state == 3) {// read 0xb5 0x62 0x06 + if (spi_2.write(0x00) == header[3]){ + state =4; + } + else state =0; + } + else if (state == 4) {// read 0xb5 0x62 0x06 0x013 + + uint8_t packet[100]; + uint8_t value = spi_2.write(0x00); + uint8_t packet_size; + + for (packet_size = 0 ; packet_size < 100 ;packet_size++) { + if (value != '\n' ){ + packet [packet_size]= value; + value = spi_2.write(0x00); + } + else { + lora_send_packet (packet , (uint8_t) packet_size+1); + //packet_size = MAXIMUM_PACKET_SIZE +1; + return; + } + } + + } + } +}*/ + +void wait_packet_byte (uint8_t *header, uint8_t byte) { + + char state = 0; + int cont =0; + + while (1){ //começou mensagem + if (cont > 250) { + //led2=!led2; + return; + } + if (state == 0 ){ + if (spi_2.write(0x00) == header[0]) + state =1; + else { + cont++; + wait_ms(10); + } + + + } + else if (state == 1){ // read 0xb5 + if (spi_2.write(0x00) == header[1]){ + state =2; + } + else state =0; + } + else if (state == 2) {// read 0xb5 0x62 + if (spi_2.write(0x00) == header[2]){ + state =3; + } + else state =0; + } + else if (state == 3) {// read 0xb5 0x62 0x06 + if (spi_2.write(0x00) == header[3]){ + state =4; + } + else state =0; + } + else if (state == 4) {// read 0xb5 0x62 0x06 0x013 + + if (byte == 0){//mostrar todo o pacote + uint8_t packet[100]; + uint8_t value = spi_2.write(0x00); + uint8_t packet_size; + + for (packet_size = 0 ; packet_size < 100 ;packet_size++) { + if (value != '\n' ){ + packet [packet_size]= value; + value = spi_2.write(0x00); + } + else { + //lora_send_packet (packet , (uint8_t) packet_size+1); + //packet_size = MAXIMUM_PACKET_SIZE +1; + return; + } + }//fim for + }//fim if byte + + else {//mostrar apenas um byte + + + for (int i = 0 ; i < byte-1 ;i++) + spi_2.write(0x00); + + uint8_t packet[]={(uint8_t)99,(uint8_t)spi_2.write(0x00)}; + //lora_send_packet (packet , (uint8_t) 2); + + + for (int i = 0 ; i < 100 ;i++) + if (spi_2.write(0x00) == '\n') + return; + + return; + + }//fim else byte + + } + + } + +} + + +void gps_wait_same_packet () { + + char state = 0; + int cont =0; + + while (1){ //começou mensagem + if (cont > 250) { + //led2=!led2; + return; + } + if (state == 0 ){ + if (spi_2.write(0x00) == 0xb5) + state =1; + else { + cont++; + wait_ms(10); + } + + + } + else if (state == 1){ // read 0xb5 + if (spi_2.write(0x00) == 0x62){ + state =2; + } + else state =0; + } + else if (state == 2){ + uint8_t packet[200]; + uint8_t value = spi_2.write(0x00); + uint8_t packet_size; + + for (packet_size = 0 ; packet_size < 200 ;packet_size++) { + if (value != '\n' ){ + packet [packet_size]= value; + value = spi_2.write(0x00); + } + else { + //lora_send_packet (packet , (uint8_t) packet_size+1); + //packet_size = MAXIMUM_PACKET_SIZE +1; + return; + } + + }//fim for + // lora_send_packet (packet , 200); + } + } +} + +void gps_config_gnss (){ + + uint8_t packet_cfg_gnss[] = { + 0xB5, 0x62, // Header + 0x03, 0x3E, // Class ID = CFG, Msg ID = UBX-CFG-GNSS + 0x3C, 0x00, // Payload Length = 60 bytes + 0x00, 0x00, 0x20, 0x07, // msgVer=0, numTrkChHw=32, numTrkChUse=32, numConfigBlocks=7 + 0x00, 0x08, 0x10, 0x00, 0x01, 0x00, 0x01, 0x01, // gnssId=0 (GPS), resTrkCh=8, maxTrkCh=12, ENABLE + 0x01, 0x01, 0x03, 0x00, 0x01, 0x00, 0x01, 0x00, // gnssId=1 (SBAS), resTrkCh=1, maxTrkCh=2, ENABLE + 0x02, 0x04, 0x0A, 0x00, 0x01, 0x00, 0x01, 0x00, // gnssId=2 (Galileo), resTrkCh=4, maxTrkCh=10, ENABLE + 0x03, 0x04, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, // gnssId=3 (BeiDou), resTrkCh=4, maxTrkCh=8, DISABLE + 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, // gnssId=4 (IMES), resTrkCh=0, maxTrkCh=8, DISABLE + 0x05, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, // gnssId=5 (QZSS), resTrkCh=0, maxTrkCh=3, DISABLE + 0x06, 0x04, 0x08, 0x00, 0x01, 0x00, 0x01, 0x00, // gnssId=6 (GLONASS), resTrkCh=4, maxTrkCh=8, ENABLE + 0x00, 0x00 //checksums A & B + }; + uint8_t pos_ck = sizeof(packet_cfg_gnss)-2; + printf("gnss config finish"); + uint8_t ubxi; + //calcula checksum + for (ubxi=2; ubxi<pos_ck ; ubxi++) { + packet_cfg_gnss[pos_ck] = packet_cfg_gnss[pos_ck] + packet_cfg_gnss[ubxi]; + packet_cfg_gnss[pos_ck+1] = packet_cfg_gnss[pos_ck+1] + packet_cfg_gnss[pos_ck]; + } + +} + + +void gps_print_local (){ + uint8_t packet_nav_pvt[] = { 0xB5, 0x62, 0x01, 0x07, 0x00, 0x00, 0x08, 0x19}; + + //=============envia pacote nav pvt + for ( int i=0; i< sizeof(packet_nav_pvt) ; i++){ + spi_2.write(packet_nav_pvt[i]); + wait_ms(20); + } + + gps_navPVT Data = le_nav_pvt(); + + //printf ("gps lat=%d lon=%d \n",Data.lat ,Data.lon ); + //lat=Data.lat; + //lon=Data.lon; +} + +void gps_get_lat_lon(int *latitude, int *logitude){ + uint8_t packet_nav_pvt[] = { 0xB5, 0x62, 0x01, 0x07, 0x00, 0x00, 0x08, 0x19}; + + //=============envia pacote nav pvt + for ( int i=0; i< sizeof(packet_nav_pvt) ; i++){ + spi_2.write(packet_nav_pvt[i]); + wait_ms(20); + } + + gps_navPVT Data = le_nav_pvt(); + + //printf ("gps lat=%d lon=%d \n",Data.lat ,Data.lon ); + //latitude = &(int)Data.lat; + //longitude = &(int)Data.lon; + return; +} + +void gps_config (){ + gps_DSEL = 0; + //spi gps configuration + spi_2.format(8,0); + spi_2.frequency(1000000); //1MHz + cs=1; + wait(0.1); + cs=0; + wait(0.1); + + gps_int = 0; + + //gps reset + gps_reset = 1; + wait_ms(50); + //gps_reset = 0; + //wait(1.5); +} + +int get_latitude(){ + return lat; +} + +int get_longitude(){ + return lon; +}
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/gps.h Fri Feb 26 18:11:06 2021 +0000 @@ -0,0 +1,102 @@ +#ifndef __GPS_H + +#define __GPS_H + +#include "mbed.h" + +#define SYNC1 0xB5 +#define SYNC2 0x62 + + +#define MAXIMUM_PACKET_SIZE 60 + +//GPS DEclaration +extern SPI spi_2; // mosi, miso, sclk +extern DigitalOut cs; +extern DigitalOut gps_reset; +extern DigitalOut gps_int; +extern DigitalOut gps_DSEL; + +static int lat; +static int lon; + + +typedef struct +{ + uint8_t cls; + uint8_t id; + uint16_t len; //Length of the payload. Does not include cls, id, or checksum bytes + uint8_t *payload; + uint8_t checksumA; //Given to us from module. Checked against the rolling calculated A/B checksums. + uint8_t checksumB; +} gps_ubxPacket; + +typedef struct +{ + uint32_t iTOW=0; + uint16_t year=0; + uint8_t month=0; + uint8_t day=0; + uint8_t hour=0; + uint8_t min=0; + uint8_t sec=0; + int8_t valid=0; + uint32_t tAcc=0; + int32_t nano=0; + uint8_t fixtype=0; + int8_t flags=0; + int8_t flags2=0; + uint8_t numSV=0; + int32_t lon=0; + int32_t lat=0; + int32_t height=0; + int32_t hMSL=0; + uint32_t hAcc=0; + uint32_t vAcc=0; + int32_t velN=0; + int32_t velE=0; + int32_t velD=0; + int32_t gSpeed=0; + int32_t headMot=0; + uint32_t sAcc=0; + uint32_t headAcc=0; + uint16_t pDOP=0; + int32_t headVeh; + int16_t magDec; + uint16_t magAcc; + + +} gps_navPVT; + + +extern void gps_leBootMsg(); + +extern void gps_le_envia_linha(); + +extern gps_ubxPacket gps_calcula_check(gps_ubxPacket Packet); + +extern void send_gps_packet(gps_ubxPacket packet); + +extern gps_navPVT le_nav_pvt (); + +extern void send_nav_pvt(); + +extern void send_gps_data(uint8_t *packet, uint8_t size); + +extern void wait_packet_byte (uint8_t *header, uint8_t byte); + +extern void gps_wait_same_packet(); + +extern void gps_config_gnss(); + +extern void gps_print_local (); + +extern void gps_get_lat_lon(int *latitude, int *logitude); + +extern void gps_config(); + +extern int get_latitude(); + +extern int get_longitude(); + +#endif \ No newline at end of file
--- a/gps.txt Fri Feb 26 17:07:12 2021 +0000 +++ /dev/null Thu Jan 01 00:00:00 1970 +0000 @@ -1,704 +0,0 @@ - -#define SYNC1 0xB5 -#define SYNC2 0x62 - -//GPS DEclaration -SPI spi_2(P0_5, P0_7, P0_11); // mosi, miso, sclk -DigitalOut cs(P0_30); -DigitalOut gps_reset(P1_2); -DigitalOut gps_int (P0_23); -DigitalOut gps_DSEL (P0_27); - - - - - -typedef struct -{ - uint8_t cls; - uint8_t id; - uint16_t len; //Length of the payload. Does not include cls, id, or checksum bytes - uint8_t *payload; - uint8_t checksumA; //Given to us from module. Checked against the rolling calculated A/B checksums. - uint8_t checksumB; -} gps_ubxPacket; - -typedef struct -{ - uint32_t iTOW=0; - uint16_t year=0; - uint8_t month=0; - uint8_t day=0; - uint8_t hour=0; - uint8_t min=0; - uint8_t sec=0; - int8_t valid=0; - uint32_t tAcc=0; - int32_t nano=0; - uint8_t fixtype=0; - int8_t flags=0; - int8_t flags2=0; - uint8_t numSV=0; - int32_t lon=0; - int32_t lat=0; - int32_t height=0; - int32_t hMSL=0; - uint32_t hAcc=0; - uint32_t vAcc=0; - int32_t velN=0; - int32_t velE=0; - int32_t velD=0; - int32_t gSpeed=0; - int32_t headMot=0; - uint32_t sAcc=0; - uint32_t headAcc=0; - uint16_t pDOP=0; - int32_t headVeh; - int16_t magDec; - uint16_t magAcc; - - -} gps_navPVT; - - -void gps_leBootMsg(){ - - #define MAXIMUM_PACKET_SIZE 60 - int packet_size; - uint8_t packet[MAXIMUM_PACKET_SIZE]; - uint8_t value; - int cont; - value = spi_2.write(0x00); - - while (value != '$' ){ //wait start boot msg - value = spi_2.write(0x00); - wait_ms(5); - cont++; - if (cont > 100){ - printf("\n no response \n"); - return; - } - } - packet[0] = value; - value = spi_2.write(0x00); - for (packet_size = 1 ; packet_size <= MAXIMUM_PACKET_SIZE ;packet_size++) { - if (value != '\n' ){ - packet [packet_size]= value; - value = spi_2.write(0x00); - } - else { - //lora_send_packet (packet , (uint8_t) packet_size+1); // manda atraves do lora a mensagem de boot do gps - printf("Boot msg: %s \n", packet); - return; - } - - } - -} - -void gps_le_envia_linha(){ - - uint8_t packet[150]; - uint8_t value; - - for (int i=0;i < 149; i++){ - if (value == '\n'){ - //lora_send_packet (packet , (uint8_t) i); - return; - } - else packet [i] =value; - } - //lora_send_packet (packet , (uint8_t) 99); - -} - - -gps_ubxPacket gps_calcula_check(gps_ubxPacket Packet) { - - uint8_t Buffer[Packet.len + 4]; - uint8_t CK_A=0; - uint8_t CK_B=0; - - Buffer[0]= Packet.cls; - Buffer[1]= Packet.id; - Buffer[2]= Packet.len & 0xFF; - Buffer[3]= (Packet.len >> 8)& 0xFF;; - - //send_packet (Buffer, (uint8_t) 4 ); - - for (uint16_t i = 0; i < Packet.len; i++) { - Buffer [i+4] = Packet.payload[i] ; - } - - //send_packet (Buffer, (uint8_t) Packet.len + 4 ); - - for(int i=0 ; i < Packet.len + 4 ; i++) { - CK_A = CK_A + Buffer[i]; - CK_B = CK_B + CK_A; - CK_A = CK_A & 0xFF; - CK_B = CK_B & 0xFF; - //uint8_t packet_check[5] ={Buffer[i],(uint8_t) (i+1),CK_A,CK_B,'#'}; -// send_packet (packet_check , (uint8_t) 5); - } - - -// uint8_t packet_check[2] ={CK_A, CK_B}; -// send_packet (packet_check , (uint8_t) 2); - - Packet.checksumA = CK_A; - Packet.checksumB = CK_B; - - return Packet; - -} - -void send_gps_packet(gps_ubxPacket packet){ - - spi_2.write(SYNC1); - spi_2.write(SYNC2); - spi_2.write(packet.cls); - spi_2.write(packet.id); - spi_2.write(packet.len & 0xFF); - spi_2.write((packet.len >> 8)& 0xFF); - - for (uint16_t i = 0; i < packet.len; i++) { - spi_2.write(packet.payload[i]); - } - spi_2.write(packet.checksumA); - spi_2.write(packet.checksumB); - - //=============imprime resposta - wait_ms(50); - gps_le_envia_linha(); - gps_le_envia_linha(); - -} - -gps_navPVT le_nav_pvt () { - - gps_navPVT Pac; - - char state = 0; - int cont =0; - int numb=0; - - while (1){ //começou mensagem - if (cont > 100) { - // BMX160_read_acc(); - return Pac; - } - if (state == 0 ){ - - if ( spi_2.write(0x00) == 0xB5){ - state =1; - } - else { - cont++; - wait_ms(40); - } - - } - else if (state == 1){ // read 0xb5 - if (spi_2.write(0x00) == 0x62){ - state =2; - //wait_ms(30); - } - else state =0; - } - else if (state == 2) {// read 0xb5 0x62 - if (spi_2.write(0x00) == 0x01){ - //printf("le_nav_pvt going to state 3"); - state =3; - //wait_ms(30); - } - else state =0; - } - else if (state == 3) {// read 0xb5 0x62 0x01 - if (spi_2.write(0x00) == 0x07){ - state =4; - //printf("le_nav_pvt going to state 4"); - //wait_ms(30); - } - else state =0; - } - else if (state == 4) {// read 0xb5 0x62 0x01 0x07 - if (spi_2.write(0x00) == 0x5c){ - state =5; - //printf("le_nav_pvt going to state 5"); - //wait_ms(30); - } - else state =0; - } - else if (state == 5) {// read 0xb5 0x62 0x01 0x07 0x5c - if (spi_2.write(0x00) == 0x00){ - state =6; - //printf("le_nav_pvt going to state 6"); - //wait_ms(30); - } - else state =0; - } - else if (state == 6){ // read 0xb5 0x62 0x01 0x07 0x5c 0x00 - uint8_t value1,value2,value3,value4; - value1 = 0xff & spi_2.write(0x00); - value2 = 0xff & spi_2.write(0x00); - value3 = 0xff & spi_2.write(0x00); - value4 = 0xff & spi_2.write(0x00); - Pac.iTOW = (value4 << 24) + (value3 <<16) + (value2 << 8) + value1; - - value1 = 0xff & spi_2.write(0x00); - value2 = 0xff & spi_2.write(0x00); - Pac.year = (value2 << 8) + value1; - - Pac.month = 0xff & spi_2.write(0x00); - Pac.day = 0xff & spi_2.write(0x00); - Pac.hour = 0xff & spi_2.write(0x00); - Pac.min = 0xff & spi_2.write(0x00); - Pac.sec = 0xff & spi_2.write(0x00); - Pac.valid = 0xff & spi_2.write(0x00); - - value1 = 0xff & spi_2.write(0x00); - value2 = 0xff & spi_2.write(0x00); - value3 = 0xff & spi_2.write(0x00); - value4 = 0xff & spi_2.write(0x00); - Pac.tAcc = (value4 << 24) + (value3 <<16) + (value2 << 8) + value1; - - value1 = 0xff & spi_2.write(0x00); - value2 = 0xff & spi_2.write(0x00); - value3 = 0xff & spi_2.write(0x00); - value4 = 0xff & spi_2.write(0x00); - Pac.nano = (value4 << 24) + (value3 <<16) + (value2 << 8) + value1; - - Pac.fixtype = 0xff & spi_2.write(0x00); - Pac.flags = 0xff & spi_2.write(0x00); - Pac.flags2 = 0xff & spi_2.write(0x00); - Pac.numSV = 0xff & spi_2.write(0x00); - - value1 = 0xff & spi_2.write(0x00); - value2 = 0xff & spi_2.write(0x00); - value3 = 0xff & spi_2.write(0x00); - value4 = 0xff & spi_2.write(0x00); - Pac.lon = (value4 << 24) + (value3 <<16) + (value2 << 8) + value1; - lon= (value4 << 24) + (value3 <<16) + (value2 << 8) + value1; - //printf("Long Data %d \n ", lon); - - value1 = 0xff & spi_2.write(0x00); - value2 = 0xff & spi_2.write(0x00); - value3 = 0xff & spi_2.write(0x00); - value4 = 0xff & spi_2.write(0x00); - Pac.lat = (value4 << 24) + (value3 <<16) + (value2 << 8) + value1; - lat = (value4 << 24) + (value3 <<16) + (value2 << 8) + value1; - //printf("Lat Data %d", lat); - - - value1 = 0xff & spi_2.write(0x00); - value2 = 0xff & spi_2.write(0x00); - value3 = 0xff & spi_2.write(0x00); - value4 = 0xff & spi_2.write(0x00); - Pac.height = (value4 << 24) + (value3 <<16) + (value2 << 8) + value1; - - value1 = 0xff & spi_2.write(0x00); - value2 = 0xff & spi_2.write(0x00); - value3 = 0xff & spi_2.write(0x00); - value4 = 0xff & spi_2.write(0x00); - Pac.hMSL = (value4 << 24) + (value3 <<16) + (value2 << 8) + value1; - - value1 = 0xff & spi_2.write(0x00); - value2 = 0xff & spi_2.write(0x00); - value3 = 0xff & spi_2.write(0x00); - value4 = 0xff & spi_2.write(0x00); - Pac.hAcc = (value4 << 24) + (value3 <<16) + (value2 << 8) + value1; - - value1 = 0xff & spi_2.write(0x00); - value2 = 0xff & spi_2.write(0x00); - value3 = 0xff & spi_2.write(0x00); - value4 = 0xff & spi_2.write(0x00); - Pac.vAcc = (value4 << 24) + (value3 << 16) + (value2 << 8) + value1; - - value1 = 0xff & spi_2.write(0x00); - value2 = 0xff & spi_2.write(0x00); - value3 = 0xff & spi_2.write(0x00); - value4 = 0xff & spi_2.write(0x00); - Pac.velN = (value4 << 24) + (value3 << 16) + (value2 << 8) + value1; - - value1 = 0xff & spi_2.write(0x00); - value2 = 0xff & spi_2.write(0x00); - value3 = 0xff & spi_2.write(0x00); - value4 = 0xff & spi_2.write(0x00); - Pac.velE = (value4 << 24) + (value3 << 16) + (value2 << 8) + value1; - - value1 = 0xff & spi_2.write(0x00); - value2 = 0xff & spi_2.write(0x00); - value3 = 0xff & spi_2.write(0x00); - value4 = 0xff & spi_2.write(0x00); - Pac.velD = (value4 << 24) + (value3 << 16) + (value2 << 8) + value1; - - value1 = 0xff & spi_2.write(0x00); - value2 = 0xff & spi_2.write(0x00); - value3 = 0xff & spi_2.write(0x00); - value4 = 0xff & spi_2.write(0x00); - Pac.gSpeed = (value4 << 24) + (value3 << 16) + (value2 << 8) + value1; - - value1 = 0xff & spi_2.write(0x00); - value2 = 0xff & spi_2.write(0x00); - value3 = 0xff & spi_2.write(0x00); - value4 = 0xff & spi_2.write(0x00); - Pac.headMot = (value4 << 24) + (value3 << 16) + (value2 << 8) + value1; - - value1 = 0xff & spi_2.write(0x00); - value2 = 0xff & spi_2.write(0x00); - value3 = 0xff & spi_2.write(0x00); - value4 = 0xff & spi_2.write(0x00); - Pac.sAcc = (value4 << 24) + (value3 << 16) + (value2 << 8) + value1; - - value1 = 0xff & spi_2.write(0x00); - value2 = 0xff & spi_2.write(0x00); - value3 = 0xff & spi_2.write(0x00); - value4 = 0xff & spi_2.write(0x00); - Pac.headAcc = (value4 << 24) + (value3 << 16) + (value2 << 8) + value1; - - value1 = 0xff & spi_2.write(0x00); - value2 = 0xff & spi_2.write(0x00); - Pac.pDOP = (value2 << 8) + value1; - - for (int i=0; i < 6; i++)spi_2.write(0x00); - - value1 = 0xff & spi_2.write(0x00); - value2 = 0xff & spi_2.write(0x00); - value3 = 0xff & spi_2.write(0x00); - value4 = 0xff & spi_2.write(0x00); - Pac.headAcc = (value4 << 24) + (value3 << 16) + (value2 << 8) + value1; - - value1 = 0xff & spi_2.write(0x00); - value2 = 0xff & spi_2.write(0x00); - value3 = 0xff & spi_2.write(0x00); - value4 = 0xff & spi_2.write(0x00); - Pac.headAcc = (value4 << 24) + (value3 << 16) + (value2 << 8) + value1; - - value1 = 0xff & spi_2.write(0x00); - value2 = 0xff & spi_2.write(0x00); - Pac.magDec = (value2 << 8) + value1; - - value1 = 0xff & spi_2.write(0x00); - value2 = 0xff & spi_2.write(0x00); - Pac.magAcc = (value2 << 8) + value1; - - - return Pac; - } - } - wait_ms(100); -} - -void send_nav_pvt (){ - uint8_t packet_nav_pvt[] = { 0xB5, 0x62, 0x01, 0x07, 0x00, 0x00, 0x08, 0x19}; - - //=============envia pacote nav pvt - for ( int i=0; i< sizeof(packet_nav_pvt) ; i++){ - spi_2.write(packet_nav_pvt[i]); - wait_ms(5); - } - - gps_navPVT Data = le_nav_pvt(); - - uint8_t packet [100]; - - packet [0]= (Data.lon >> 24)& 0xff; - packet [1]= (Data.lon >> 16) & 0xff ; - packet [2]= (Data.lon >> 8) & 0xff; - packet [3]= Data.lon & 0xff; - packet [4]= (Data.lat >> 24)& 0xff; - packet [5]= (Data.lat >> 16) & 0xff ; - packet [6]= (Data.lat >> 8) & 0xff; - packet [7]= Data.lat & 0xff; - packet [8]= (Data.hMSL >> 24)& 0xff; - packet [9]= (Data.hMSL >> 16) & 0xff ; - packet [10]= (Data.hMSL >> 8) & 0xff; - packet [11]= Data.hMSL & 0xff; - - if (Data.lon !=0 || Data.lat !=0 ){ - //lora_send_packet (packet , (uint8_t) 12); - } -} - -void send_gps_data(uint8_t *packet, uint8_t size){ - uint8_t packet_rec[size]; - for ( int i=0; i< size ; i++){ - spi_2.write(packet[i]); - - //wait_ms(5); - } - //send_packet (packet_rec ,size); -} - -/* -void wait_packet (uint8_t *header) { - - char state = 0; - int cont =0; - - while (1){ //começou mensagem - if (cont > 250) { - //led2=!led2; - return; - } - if (state == 0 ){ - if (spi_2.write(0x00) == header[0]) - state =1; - else { - cont++; - wait_ms(10); - } - - - } - else if (state == 1){ // read 0xb5 - if (spi_2.write(0x00) == header[1]){ - state =2; - } - else state =0; - } - else if (state == 2) {// read 0xb5 0x62 - if (spi_2.write(0x00) == header[2]){ - state =3; - } - else state =0; - } - else if (state == 3) {// read 0xb5 0x62 0x06 - if (spi_2.write(0x00) == header[3]){ - state =4; - } - else state =0; - } - else if (state == 4) {// read 0xb5 0x62 0x06 0x013 - - uint8_t packet[100]; - uint8_t value = spi_2.write(0x00); - uint8_t packet_size; - - for (packet_size = 0 ; packet_size < 100 ;packet_size++) { - if (value != '\n' ){ - packet [packet_size]= value; - value = spi_2.write(0x00); - } - else { - lora_send_packet (packet , (uint8_t) packet_size+1); - //packet_size = MAXIMUM_PACKET_SIZE +1; - return; - } - } - - } - } -}*/ - -void wait_packet_byte (uint8_t *header, uint8_t byte) { - - char state = 0; - int cont =0; - - while (1){ //começou mensagem - if (cont > 250) { - //led2=!led2; - return; - } - if (state == 0 ){ - if (spi_2.write(0x00) == header[0]) - state =1; - else { - cont++; - wait_ms(10); - } - - - } - else if (state == 1){ // read 0xb5 - if (spi_2.write(0x00) == header[1]){ - state =2; - } - else state =0; - } - else if (state == 2) {// read 0xb5 0x62 - if (spi_2.write(0x00) == header[2]){ - state =3; - } - else state =0; - } - else if (state == 3) {// read 0xb5 0x62 0x06 - if (spi_2.write(0x00) == header[3]){ - state =4; - } - else state =0; - } - else if (state == 4) {// read 0xb5 0x62 0x06 0x013 - - if (byte == 0){//mostrar todo o pacote - uint8_t packet[100]; - uint8_t value = spi_2.write(0x00); - uint8_t packet_size; - - for (packet_size = 0 ; packet_size < 100 ;packet_size++) { - if (value != '\n' ){ - packet [packet_size]= value; - value = spi_2.write(0x00); - } - else { - //lora_send_packet (packet , (uint8_t) packet_size+1); - //packet_size = MAXIMUM_PACKET_SIZE +1; - return; - } - }//fim for - }//fim if byte - - else {//mostrar apenas um byte - - - for (int i = 0 ; i < byte-1 ;i++) - spi_2.write(0x00); - - uint8_t packet[]={(uint8_t)99,(uint8_t)spi_2.write(0x00)}; - //lora_send_packet (packet , (uint8_t) 2); - - - for (int i = 0 ; i < 100 ;i++) - if (spi_2.write(0x00) == '\n') - return; - - return; - - }//fim else byte - - } - - } - -} - - -void gps_wait_same_packet () { - - char state = 0; - int cont =0; - - while (1){ //começou mensagem - if (cont > 250) { - //led2=!led2; - return; - } - if (state == 0 ){ - if (spi_2.write(0x00) == 0xb5) - state =1; - else { - cont++; - wait_ms(10); - } - - - } - else if (state == 1){ // read 0xb5 - if (spi_2.write(0x00) == 0x62){ - state =2; - } - else state =0; - } - else if (state == 2){ - uint8_t packet[200]; - uint8_t value = spi_2.write(0x00); - uint8_t packet_size; - - for (packet_size = 0 ; packet_size < 200 ;packet_size++) { - if (value != '\n' ){ - packet [packet_size]= value; - value = spi_2.write(0x00); - } - else { - //lora_send_packet (packet , (uint8_t) packet_size+1); - //packet_size = MAXIMUM_PACKET_SIZE +1; - return; - } - - }//fim for - // lora_send_packet (packet , 200); - } - } -} - -void gps_config_gnss (){ - - uint8_t packet_cfg_gnss[] = { - 0xB5, 0x62, // Header - 0x03, 0x3E, // Class ID = CFG, Msg ID = UBX-CFG-GNSS - 0x3C, 0x00, // Payload Length = 60 bytes - 0x00, 0x00, 0x20, 0x07, // msgVer=0, numTrkChHw=32, numTrkChUse=32, numConfigBlocks=7 - 0x00, 0x08, 0x10, 0x00, 0x01, 0x00, 0x01, 0x01, // gnssId=0 (GPS), resTrkCh=8, maxTrkCh=12, ENABLE - 0x01, 0x01, 0x03, 0x00, 0x01, 0x00, 0x01, 0x00, // gnssId=1 (SBAS), resTrkCh=1, maxTrkCh=2, ENABLE - 0x02, 0x04, 0x0A, 0x00, 0x01, 0x00, 0x01, 0x00, // gnssId=2 (Galileo), resTrkCh=4, maxTrkCh=10, ENABLE - 0x03, 0x04, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, // gnssId=3 (BeiDou), resTrkCh=4, maxTrkCh=8, DISABLE - 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, // gnssId=4 (IMES), resTrkCh=0, maxTrkCh=8, DISABLE - 0x05, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, // gnssId=5 (QZSS), resTrkCh=0, maxTrkCh=3, DISABLE - 0x06, 0x04, 0x08, 0x00, 0x01, 0x00, 0x01, 0x00, // gnssId=6 (GLONASS), resTrkCh=4, maxTrkCh=8, ENABLE - 0x00, 0x00 //checksums A & B - }; - uint8_t pos_ck = sizeof(packet_cfg_gnss)-2; - printf("gnss config finish"); - uint8_t ubxi; - //calcula checksum - for (ubxi=2; ubxi<pos_ck ; ubxi++) { - packet_cfg_gnss[pos_ck] = packet_cfg_gnss[pos_ck] + packet_cfg_gnss[ubxi]; - packet_cfg_gnss[pos_ck+1] = packet_cfg_gnss[pos_ck+1] + packet_cfg_gnss[pos_ck]; - } - -} - - -void gps_print_local (){ - uint8_t packet_nav_pvt[] = { 0xB5, 0x62, 0x01, 0x07, 0x00, 0x00, 0x08, 0x19}; - - //=============envia pacote nav pvt - for ( int i=0; i< sizeof(packet_nav_pvt) ; i++){ - spi_2.write(packet_nav_pvt[i]); - wait_ms(20); - } - - gps_navPVT Data = le_nav_pvt(); - - //printf ("gps lat=%d lon=%d \n",Data.lat ,Data.lon ); - //lat=Data.lat; - //lon=Data.lon; -} - -void gps_get_lat_lon(int *latitude, int *logitude){ - uint8_t packet_nav_pvt[] = { 0xB5, 0x62, 0x01, 0x07, 0x00, 0x00, 0x08, 0x19}; - - //=============envia pacote nav pvt - for ( int i=0; i< sizeof(packet_nav_pvt) ; i++){ - spi_2.write(packet_nav_pvt[i]); - wait_ms(20); - } - - gps_navPVT Data = le_nav_pvt(); - - //printf ("gps lat=%d lon=%d \n",Data.lat ,Data.lon ); - latitude = &(int)Data.lat; - longitude = &(int)Data.lon; - return; -} - -void gps_config (){ - gps_DSEL = 0; - //spi gps configuration - spi_2.format(8,0); - spi_2.frequency(1000000); //1MHz - cs=1; - wait(0.1); - cs=0; - wait(0.1); - - gps_int = 0; - - //gps reset - gps_reset = 1; - wait_ms(50); - //gps_reset = 0; - //wait(1.5); -} -
--- a/main.cpp Fri Feb 26 17:07:12 2021 +0000 +++ b/main.cpp Fri Feb 26 18:11:06 2021 +0000 @@ -28,6 +28,7 @@ //#include "BME280.h" #include "serial.h" +#include "gps.h" using namespace events; @@ -110,8 +111,8 @@ mbed::DigitalOut _alive_led(P1_13, 0); mbed::DigitalOut _actuated_led(P1_14,1); -int lat=0; -int lon=0; +//int lat=0; +//int lon=0; int latitude=0; int longitude=0; @@ -119,7 +120,7 @@ //Temperature, Pressure, Humidity Sensor #include "BME280.txt" #include "BMX160.txt" -#include "gps.txt" +//#include "gps.txt" void BMX160Read (void) { @@ -161,14 +162,14 @@ void GPS_Read(void) { gps_print_local(); - pc.printf ("gps longitude=%d \n",lon); - pc.printf ("gps latitude=%d \n",lat); + pc.printf ("gps longitude=%d \n",get_longitude()); + pc.printf ("gps latitude=%d \n",get_latitude()); if(lat!=0 && lon!=0){ - longitude=lon; - latitude=lat; + longitude=get_longitude(); + latitude=get_latitude(); // led1 = !led1; - } - } + } +} void serial_rx(){ if(pc.readable()){ @@ -310,7 +311,7 @@ int32_t sensor_value; gps_print_local(); - packet_len = sprintf((char *) tx_buffer, "%2.2f, %04.2f, %2.2f, %d, %d\n", getTemperature(), getPressure(), getHumidity(), lon, lat); + packet_len = sprintf((char *) tx_buffer, "%2.2f, %04.2f, %2.2f, %d, %d\n", getTemperature(), getPressure(), getHumidity(), get_longitude(), get_latitude()); retcode = lorawan.send(MBED_CONF_LORA_APP_PORT, tx_buffer, packet_len, MSG_UNCONFIRMED_FLAG); @@ -330,8 +331,8 @@ pc.printf("%2.2f;%04.2f;%2.2f;", getTemperature(), getPressure(), getHumidity()); BMX160Read(); - pc.printf ("%d;",lon); - pc.printf ("%d \r\n",lat); + pc.printf ("%d;",get_longitude()); + pc.printf ("%d \r\n",get_latitude()); // printf("\r\n %d bytes scheduled for transmission \r\n", retcode); memset(tx_buffer, 0, sizeof(tx_buffer)); }
--- a/serial.h Fri Feb 26 17:07:12 2021 +0000 +++ b/serial.h Fri Feb 26 18:11:06 2021 +0000 @@ -2,7 +2,7 @@ #define _SERIAL_H_ #include "mbed.h" - +#include "gps.h" #define CMD_PRINT_LAST_GPS 'g' extern RawSerial pc;
--- a/serial_cmds.cpp Fri Feb 26 17:07:12 2021 +0000 +++ b/serial_cmds.cpp Fri Feb 26 18:11:06 2021 +0000 @@ -8,9 +8,10 @@ { case CMD_PRINT_LAST_GPS: - int local_lat, local_log - gps_get_lat_lon(&local_lat, &local_log) - pc.printf("<g%d,%d\n>", local_lat, local_log); + int local_lat, local_log; + //gps_get_lat_lon(&local_lat, &local_log); + //get_latitude + pc.printf("<g%d,%d\n>", get_latitude(), get_longitude()); break;