Teste Flash

Dependencies:   pulga-lorawan-drv Si1133 BME280

Committer:
MatteusCarr
Date:
Mon Sep 13 18:55:32 2021 +0000
Revision:
70:99b7a15c09da
Parent:
68:fc357095c8ef
Teste Flash

Who changed what in which revision?

UserRevisionLine numberNew contents of line
ruschigo 63:4ec1808fb547 1 #include "gps.h"
ruschigo 63:4ec1808fb547 2
ruschigo 63:4ec1808fb547 3 //GPS DEclaration
ruschigo 63:4ec1808fb547 4 SPI spi_2(P0_5, P0_7, P0_11); // mosi, miso, sclk
ruschigo 63:4ec1808fb547 5 DigitalOut cs(P0_30);
ruschigo 63:4ec1808fb547 6 DigitalOut gps_reset(P1_2);
ruschigo 63:4ec1808fb547 7 DigitalOut gps_int (P0_23);
ruschigo 63:4ec1808fb547 8 DigitalOut gps_DSEL (P0_27);
ruschigo 63:4ec1808fb547 9
pancotinho 67:17addc7bf8c2 10 gps_navPVT Pac;
pancotinho 67:17addc7bf8c2 11
ruschigo 63:4ec1808fb547 12 void gps_leBootMsg(){
ruschigo 63:4ec1808fb547 13
ruschigo 63:4ec1808fb547 14 #define MAXIMUM_PACKET_SIZE 60
ruschigo 63:4ec1808fb547 15 int packet_size;
ruschigo 63:4ec1808fb547 16 uint8_t packet[MAXIMUM_PACKET_SIZE];
ruschigo 63:4ec1808fb547 17 uint8_t value;
ruschigo 63:4ec1808fb547 18 int cont;
ruschigo 63:4ec1808fb547 19 value = spi_2.write(0x00);
ruschigo 63:4ec1808fb547 20
ruschigo 63:4ec1808fb547 21 while (value != '$' ){ //wait start boot msg
ruschigo 63:4ec1808fb547 22 value = spi_2.write(0x00);
ruschigo 63:4ec1808fb547 23 wait_ms(5);
ruschigo 63:4ec1808fb547 24 cont++;
ruschigo 63:4ec1808fb547 25 if (cont > 100){
ruschigo 65:4090220e19d2 26 pc.printf("\n no response \n");
ruschigo 63:4ec1808fb547 27 return;
ruschigo 63:4ec1808fb547 28 }
ruschigo 63:4ec1808fb547 29 }
ruschigo 63:4ec1808fb547 30 packet[0] = value;
ruschigo 63:4ec1808fb547 31 value = spi_2.write(0x00);
ruschigo 63:4ec1808fb547 32 for (packet_size = 1 ; packet_size <= MAXIMUM_PACKET_SIZE ;packet_size++) {
ruschigo 63:4ec1808fb547 33 if (value != '\n' ){
ruschigo 63:4ec1808fb547 34 packet [packet_size]= value;
ruschigo 63:4ec1808fb547 35 value = spi_2.write(0x00);
ruschigo 63:4ec1808fb547 36 }
ruschigo 63:4ec1808fb547 37 else {
ruschigo 63:4ec1808fb547 38 //lora_send_packet (packet , (uint8_t) packet_size+1); // manda atraves do lora a mensagem de boot do gps
ruschigo 65:4090220e19d2 39 pc.printf("Boot msg: %s \n", packet);
ruschigo 63:4ec1808fb547 40 return;
ruschigo 63:4ec1808fb547 41 }
ruschigo 63:4ec1808fb547 42
ruschigo 63:4ec1808fb547 43 }
ruschigo 63:4ec1808fb547 44
ruschigo 63:4ec1808fb547 45 }
ruschigo 63:4ec1808fb547 46
ruschigo 63:4ec1808fb547 47 void gps_le_envia_linha(){
ruschigo 63:4ec1808fb547 48
ruschigo 63:4ec1808fb547 49 uint8_t packet[150];
ruschigo 63:4ec1808fb547 50 uint8_t value;
ruschigo 63:4ec1808fb547 51
ruschigo 63:4ec1808fb547 52 for (int i=0;i < 149; i++){
ruschigo 63:4ec1808fb547 53 if (value == '\n'){
ruschigo 63:4ec1808fb547 54 //lora_send_packet (packet , (uint8_t) i);
ruschigo 63:4ec1808fb547 55 return;
ruschigo 63:4ec1808fb547 56 }
ruschigo 63:4ec1808fb547 57 else packet [i] =value;
ruschigo 63:4ec1808fb547 58 }
ruschigo 63:4ec1808fb547 59 //lora_send_packet (packet , (uint8_t) 99);
ruschigo 63:4ec1808fb547 60
ruschigo 63:4ec1808fb547 61 }
ruschigo 63:4ec1808fb547 62
ruschigo 63:4ec1808fb547 63
ruschigo 63:4ec1808fb547 64 gps_ubxPacket gps_calcula_check(gps_ubxPacket Packet) {
ruschigo 63:4ec1808fb547 65
ruschigo 63:4ec1808fb547 66 uint8_t Buffer[Packet.len + 4];
ruschigo 63:4ec1808fb547 67 uint8_t CK_A=0;
ruschigo 63:4ec1808fb547 68 uint8_t CK_B=0;
ruschigo 63:4ec1808fb547 69
ruschigo 63:4ec1808fb547 70 Buffer[0]= Packet.cls;
ruschigo 63:4ec1808fb547 71 Buffer[1]= Packet.id;
ruschigo 63:4ec1808fb547 72 Buffer[2]= Packet.len & 0xFF;
ruschigo 63:4ec1808fb547 73 Buffer[3]= (Packet.len >> 8)& 0xFF;;
ruschigo 63:4ec1808fb547 74
ruschigo 63:4ec1808fb547 75 //send_packet (Buffer, (uint8_t) 4 );
ruschigo 63:4ec1808fb547 76
ruschigo 63:4ec1808fb547 77 for (uint16_t i = 0; i < Packet.len; i++) {
ruschigo 63:4ec1808fb547 78 Buffer [i+4] = Packet.payload[i] ;
ruschigo 63:4ec1808fb547 79 }
ruschigo 63:4ec1808fb547 80
ruschigo 63:4ec1808fb547 81 //send_packet (Buffer, (uint8_t) Packet.len + 4 );
ruschigo 63:4ec1808fb547 82
ruschigo 63:4ec1808fb547 83 for(int i=0 ; i < Packet.len + 4 ; i++) {
ruschigo 63:4ec1808fb547 84 CK_A = CK_A + Buffer[i];
ruschigo 63:4ec1808fb547 85 CK_B = CK_B + CK_A;
ruschigo 63:4ec1808fb547 86 CK_A = CK_A & 0xFF;
ruschigo 63:4ec1808fb547 87 CK_B = CK_B & 0xFF;
ruschigo 63:4ec1808fb547 88 //uint8_t packet_check[5] ={Buffer[i],(uint8_t) (i+1),CK_A,CK_B,'#'};
ruschigo 63:4ec1808fb547 89 // send_packet (packet_check , (uint8_t) 5);
ruschigo 63:4ec1808fb547 90 }
ruschigo 63:4ec1808fb547 91
ruschigo 63:4ec1808fb547 92
ruschigo 63:4ec1808fb547 93 // uint8_t packet_check[2] ={CK_A, CK_B};
ruschigo 63:4ec1808fb547 94 // send_packet (packet_check , (uint8_t) 2);
ruschigo 63:4ec1808fb547 95
ruschigo 63:4ec1808fb547 96 Packet.checksumA = CK_A;
ruschigo 63:4ec1808fb547 97 Packet.checksumB = CK_B;
ruschigo 63:4ec1808fb547 98
ruschigo 63:4ec1808fb547 99 return Packet;
ruschigo 63:4ec1808fb547 100
ruschigo 63:4ec1808fb547 101 }
ruschigo 63:4ec1808fb547 102
ruschigo 63:4ec1808fb547 103 void send_gps_packet(gps_ubxPacket packet){
ruschigo 63:4ec1808fb547 104
ruschigo 63:4ec1808fb547 105 spi_2.write(SYNC1);
ruschigo 63:4ec1808fb547 106 spi_2.write(SYNC2);
ruschigo 63:4ec1808fb547 107 spi_2.write(packet.cls);
ruschigo 63:4ec1808fb547 108 spi_2.write(packet.id);
ruschigo 63:4ec1808fb547 109 spi_2.write(packet.len & 0xFF);
ruschigo 63:4ec1808fb547 110 spi_2.write((packet.len >> 8)& 0xFF);
ruschigo 63:4ec1808fb547 111
ruschigo 63:4ec1808fb547 112 for (uint16_t i = 0; i < packet.len; i++) {
ruschigo 63:4ec1808fb547 113 spi_2.write(packet.payload[i]);
ruschigo 63:4ec1808fb547 114 }
ruschigo 63:4ec1808fb547 115 spi_2.write(packet.checksumA);
ruschigo 63:4ec1808fb547 116 spi_2.write(packet.checksumB);
ruschigo 63:4ec1808fb547 117
ruschigo 63:4ec1808fb547 118 //=============imprime resposta
ruschigo 63:4ec1808fb547 119 wait_ms(50);
ruschigo 63:4ec1808fb547 120 gps_le_envia_linha();
ruschigo 63:4ec1808fb547 121 gps_le_envia_linha();
ruschigo 63:4ec1808fb547 122
ruschigo 63:4ec1808fb547 123 }
ruschigo 63:4ec1808fb547 124
ruschigo 63:4ec1808fb547 125 gps_navPVT le_nav_pvt () {
ruschigo 63:4ec1808fb547 126
ruschigo 63:4ec1808fb547 127
ruschigo 63:4ec1808fb547 128 char state = 0;
ruschigo 63:4ec1808fb547 129 int cont =0;
ruschigo 63:4ec1808fb547 130 int numb=0;
ruschigo 63:4ec1808fb547 131
ruschigo 63:4ec1808fb547 132 while (1){ //começou mensagem
ruschigo 63:4ec1808fb547 133 if (cont > 100) {
ruschigo 63:4ec1808fb547 134 // BMX160_read_acc();
ruschigo 63:4ec1808fb547 135 return Pac;
ruschigo 63:4ec1808fb547 136 }
ruschigo 63:4ec1808fb547 137 if (state == 0 ){
ruschigo 63:4ec1808fb547 138
ruschigo 63:4ec1808fb547 139 if ( spi_2.write(0x00) == 0xB5){
ruschigo 63:4ec1808fb547 140 state =1;
ruschigo 63:4ec1808fb547 141 }
ruschigo 63:4ec1808fb547 142 else {
ruschigo 63:4ec1808fb547 143 cont++;
ruschigo 63:4ec1808fb547 144 wait_ms(40);
ruschigo 63:4ec1808fb547 145 }
ruschigo 63:4ec1808fb547 146
ruschigo 63:4ec1808fb547 147 }
ruschigo 63:4ec1808fb547 148 else if (state == 1){ // read 0xb5
ruschigo 63:4ec1808fb547 149 if (spi_2.write(0x00) == 0x62){
ruschigo 63:4ec1808fb547 150 state =2;
ruschigo 63:4ec1808fb547 151 //wait_ms(30);
ruschigo 63:4ec1808fb547 152 }
ruschigo 63:4ec1808fb547 153 else state =0;
ruschigo 63:4ec1808fb547 154 }
ruschigo 63:4ec1808fb547 155 else if (state == 2) {// read 0xb5 0x62
ruschigo 63:4ec1808fb547 156 if (spi_2.write(0x00) == 0x01){
ruschigo 63:4ec1808fb547 157 //printf("le_nav_pvt going to state 3");
ruschigo 63:4ec1808fb547 158 state =3;
ruschigo 63:4ec1808fb547 159 //wait_ms(30);
ruschigo 63:4ec1808fb547 160 }
ruschigo 63:4ec1808fb547 161 else state =0;
ruschigo 63:4ec1808fb547 162 }
ruschigo 63:4ec1808fb547 163 else if (state == 3) {// read 0xb5 0x62 0x01
ruschigo 63:4ec1808fb547 164 if (spi_2.write(0x00) == 0x07){
ruschigo 63:4ec1808fb547 165 state =4;
ruschigo 63:4ec1808fb547 166 //printf("le_nav_pvt going to state 4");
ruschigo 63:4ec1808fb547 167 //wait_ms(30);
ruschigo 63:4ec1808fb547 168 }
ruschigo 63:4ec1808fb547 169 else state =0;
ruschigo 63:4ec1808fb547 170 }
ruschigo 63:4ec1808fb547 171 else if (state == 4) {// read 0xb5 0x62 0x01 0x07
ruschigo 63:4ec1808fb547 172 if (spi_2.write(0x00) == 0x5c){
ruschigo 63:4ec1808fb547 173 state =5;
ruschigo 63:4ec1808fb547 174 //printf("le_nav_pvt going to state 5");
ruschigo 63:4ec1808fb547 175 //wait_ms(30);
ruschigo 63:4ec1808fb547 176 }
ruschigo 63:4ec1808fb547 177 else state =0;
ruschigo 63:4ec1808fb547 178 }
ruschigo 63:4ec1808fb547 179 else if (state == 5) {// read 0xb5 0x62 0x01 0x07 0x5c
ruschigo 63:4ec1808fb547 180 if (spi_2.write(0x00) == 0x00){
ruschigo 63:4ec1808fb547 181 state =6;
ruschigo 63:4ec1808fb547 182 //printf("le_nav_pvt going to state 6");
ruschigo 63:4ec1808fb547 183 //wait_ms(30);
ruschigo 63:4ec1808fb547 184 }
ruschigo 63:4ec1808fb547 185 else state =0;
ruschigo 63:4ec1808fb547 186 }
ruschigo 63:4ec1808fb547 187 else if (state == 6){ // read 0xb5 0x62 0x01 0x07 0x5c 0x00
ruschigo 63:4ec1808fb547 188 uint8_t value1,value2,value3,value4;
ruschigo 63:4ec1808fb547 189 value1 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 190 value2 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 191 value3 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 192 value4 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 193 Pac.iTOW = (value4 << 24) + (value3 <<16) + (value2 << 8) + value1;
ruschigo 63:4ec1808fb547 194
ruschigo 63:4ec1808fb547 195 value1 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 196 value2 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 197 Pac.year = (value2 << 8) + value1;
ruschigo 63:4ec1808fb547 198
ruschigo 63:4ec1808fb547 199 Pac.month = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 200 Pac.day = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 201 Pac.hour = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 202 Pac.min = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 203 Pac.sec = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 204 Pac.valid = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 205
ruschigo 63:4ec1808fb547 206 value1 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 207 value2 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 208 value3 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 209 value4 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 210 Pac.tAcc = (value4 << 24) + (value3 <<16) + (value2 << 8) + value1;
ruschigo 63:4ec1808fb547 211
ruschigo 63:4ec1808fb547 212 value1 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 213 value2 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 214 value3 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 215 value4 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 216 Pac.nano = (value4 << 24) + (value3 <<16) + (value2 << 8) + value1;
ruschigo 63:4ec1808fb547 217
ruschigo 63:4ec1808fb547 218 Pac.fixtype = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 219 Pac.flags = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 220 Pac.flags2 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 221 Pac.numSV = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 222
ruschigo 63:4ec1808fb547 223 value1 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 224 value2 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 225 value3 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 226 value4 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 227 Pac.lon = (value4 << 24) + (value3 <<16) + (value2 << 8) + value1;
ruschigo 63:4ec1808fb547 228 lon= (value4 << 24) + (value3 <<16) + (value2 << 8) + value1;
ruschigo 63:4ec1808fb547 229 //printf("Long Data %d \n ", lon);
ruschigo 63:4ec1808fb547 230
ruschigo 63:4ec1808fb547 231 value1 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 232 value2 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 233 value3 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 234 value4 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 235 Pac.lat = (value4 << 24) + (value3 <<16) + (value2 << 8) + value1;
ruschigo 63:4ec1808fb547 236 lat = (value4 << 24) + (value3 <<16) + (value2 << 8) + value1;
ruschigo 63:4ec1808fb547 237 //printf("Lat Data %d", lat);
ruschigo 63:4ec1808fb547 238
ruschigo 63:4ec1808fb547 239
ruschigo 63:4ec1808fb547 240 value1 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 241 value2 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 242 value3 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 243 value4 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 244 Pac.height = (value4 << 24) + (value3 <<16) + (value2 << 8) + value1;
ruschigo 63:4ec1808fb547 245
ruschigo 63:4ec1808fb547 246 value1 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 247 value2 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 248 value3 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 249 value4 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 250 Pac.hMSL = (value4 << 24) + (value3 <<16) + (value2 << 8) + value1;
ruschigo 63:4ec1808fb547 251
ruschigo 63:4ec1808fb547 252 value1 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 253 value2 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 254 value3 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 255 value4 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 256 Pac.hAcc = (value4 << 24) + (value3 <<16) + (value2 << 8) + value1;
ruschigo 63:4ec1808fb547 257
ruschigo 63:4ec1808fb547 258 value1 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 259 value2 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 260 value3 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 261 value4 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 262 Pac.vAcc = (value4 << 24) + (value3 << 16) + (value2 << 8) + value1;
ruschigo 63:4ec1808fb547 263
ruschigo 63:4ec1808fb547 264 value1 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 265 value2 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 266 value3 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 267 value4 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 268 Pac.velN = (value4 << 24) + (value3 << 16) + (value2 << 8) + value1;
ruschigo 63:4ec1808fb547 269
ruschigo 63:4ec1808fb547 270 value1 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 271 value2 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 272 value3 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 273 value4 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 274 Pac.velE = (value4 << 24) + (value3 << 16) + (value2 << 8) + value1;
ruschigo 63:4ec1808fb547 275
ruschigo 63:4ec1808fb547 276 value1 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 277 value2 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 278 value3 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 279 value4 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 280 Pac.velD = (value4 << 24) + (value3 << 16) + (value2 << 8) + value1;
ruschigo 63:4ec1808fb547 281
ruschigo 63:4ec1808fb547 282 value1 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 283 value2 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 284 value3 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 285 value4 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 286 Pac.gSpeed = (value4 << 24) + (value3 << 16) + (value2 << 8) + value1;
ruschigo 63:4ec1808fb547 287
ruschigo 63:4ec1808fb547 288 value1 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 289 value2 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 290 value3 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 291 value4 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 292 Pac.headMot = (value4 << 24) + (value3 << 16) + (value2 << 8) + value1;
ruschigo 63:4ec1808fb547 293
ruschigo 63:4ec1808fb547 294 value1 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 295 value2 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 296 value3 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 297 value4 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 298 Pac.sAcc = (value4 << 24) + (value3 << 16) + (value2 << 8) + value1;
ruschigo 63:4ec1808fb547 299
ruschigo 63:4ec1808fb547 300 value1 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 301 value2 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 302 value3 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 303 value4 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 304 Pac.headAcc = (value4 << 24) + (value3 << 16) + (value2 << 8) + value1;
ruschigo 63:4ec1808fb547 305
ruschigo 63:4ec1808fb547 306 value1 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 307 value2 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 308 Pac.pDOP = (value2 << 8) + value1;
ruschigo 63:4ec1808fb547 309
ruschigo 63:4ec1808fb547 310 for (int i=0; i < 6; i++)spi_2.write(0x00);
ruschigo 63:4ec1808fb547 311
ruschigo 63:4ec1808fb547 312 value1 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 313 value2 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 314 value3 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 315 value4 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 316 Pac.headAcc = (value4 << 24) + (value3 << 16) + (value2 << 8) + value1;
ruschigo 63:4ec1808fb547 317
ruschigo 63:4ec1808fb547 318 value1 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 319 value2 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 320 value3 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 321 value4 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 322 Pac.headAcc = (value4 << 24) + (value3 << 16) + (value2 << 8) + value1;
ruschigo 63:4ec1808fb547 323
ruschigo 63:4ec1808fb547 324 value1 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 325 value2 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 326 Pac.magDec = (value2 << 8) + value1;
ruschigo 63:4ec1808fb547 327
ruschigo 63:4ec1808fb547 328 value1 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 329 value2 = 0xff & spi_2.write(0x00);
ruschigo 63:4ec1808fb547 330 Pac.magAcc = (value2 << 8) + value1;
ruschigo 63:4ec1808fb547 331
ruschigo 63:4ec1808fb547 332
ruschigo 63:4ec1808fb547 333 return Pac;
ruschigo 63:4ec1808fb547 334 }
ruschigo 63:4ec1808fb547 335 }
ruschigo 63:4ec1808fb547 336 wait_ms(100);
ruschigo 63:4ec1808fb547 337 }
ruschigo 63:4ec1808fb547 338
ruschigo 63:4ec1808fb547 339 void send_nav_pvt (){
ruschigo 63:4ec1808fb547 340 uint8_t packet_nav_pvt[] = { 0xB5, 0x62, 0x01, 0x07, 0x00, 0x00, 0x08, 0x19};
ruschigo 63:4ec1808fb547 341
ruschigo 63:4ec1808fb547 342 //=============envia pacote nav pvt
ruschigo 63:4ec1808fb547 343 for ( int i=0; i< sizeof(packet_nav_pvt) ; i++){
ruschigo 63:4ec1808fb547 344 spi_2.write(packet_nav_pvt[i]);
ruschigo 63:4ec1808fb547 345 wait_ms(5);
ruschigo 63:4ec1808fb547 346 }
ruschigo 63:4ec1808fb547 347
ruschigo 63:4ec1808fb547 348 gps_navPVT Data = le_nav_pvt();
ruschigo 63:4ec1808fb547 349
ruschigo 63:4ec1808fb547 350 uint8_t packet [100];
ruschigo 63:4ec1808fb547 351
ruschigo 63:4ec1808fb547 352 packet [0]= (Data.lon >> 24)& 0xff;
ruschigo 63:4ec1808fb547 353 packet [1]= (Data.lon >> 16) & 0xff ;
ruschigo 63:4ec1808fb547 354 packet [2]= (Data.lon >> 8) & 0xff;
ruschigo 63:4ec1808fb547 355 packet [3]= Data.lon & 0xff;
ruschigo 63:4ec1808fb547 356 packet [4]= (Data.lat >> 24)& 0xff;
ruschigo 63:4ec1808fb547 357 packet [5]= (Data.lat >> 16) & 0xff ;
ruschigo 63:4ec1808fb547 358 packet [6]= (Data.lat >> 8) & 0xff;
ruschigo 63:4ec1808fb547 359 packet [7]= Data.lat & 0xff;
ruschigo 63:4ec1808fb547 360 packet [8]= (Data.hMSL >> 24)& 0xff;
ruschigo 63:4ec1808fb547 361 packet [9]= (Data.hMSL >> 16) & 0xff ;
ruschigo 63:4ec1808fb547 362 packet [10]= (Data.hMSL >> 8) & 0xff;
ruschigo 63:4ec1808fb547 363 packet [11]= Data.hMSL & 0xff;
ruschigo 63:4ec1808fb547 364
ruschigo 63:4ec1808fb547 365 if (Data.lon !=0 || Data.lat !=0 ){
ruschigo 63:4ec1808fb547 366 //lora_send_packet (packet , (uint8_t) 12);
ruschigo 63:4ec1808fb547 367 }
ruschigo 63:4ec1808fb547 368 }
ruschigo 63:4ec1808fb547 369
ruschigo 63:4ec1808fb547 370 void send_gps_data(uint8_t *packet, uint8_t size){
ruschigo 63:4ec1808fb547 371 uint8_t packet_rec[size];
ruschigo 63:4ec1808fb547 372 for ( int i=0; i< size ; i++){
ruschigo 63:4ec1808fb547 373 spi_2.write(packet[i]);
ruschigo 63:4ec1808fb547 374
ruschigo 63:4ec1808fb547 375 //wait_ms(5);
ruschigo 63:4ec1808fb547 376 }
ruschigo 63:4ec1808fb547 377 //send_packet (packet_rec ,size);
ruschigo 63:4ec1808fb547 378 }
ruschigo 63:4ec1808fb547 379
ruschigo 63:4ec1808fb547 380 /*
ruschigo 63:4ec1808fb547 381 void wait_packet (uint8_t *header) {
ruschigo 63:4ec1808fb547 382
ruschigo 63:4ec1808fb547 383 char state = 0;
ruschigo 63:4ec1808fb547 384 int cont =0;
ruschigo 63:4ec1808fb547 385
ruschigo 63:4ec1808fb547 386 while (1){ //começou mensagem
ruschigo 63:4ec1808fb547 387 if (cont > 250) {
ruschigo 63:4ec1808fb547 388 //led2=!led2;
ruschigo 63:4ec1808fb547 389 return;
ruschigo 63:4ec1808fb547 390 }
ruschigo 63:4ec1808fb547 391 if (state == 0 ){
ruschigo 63:4ec1808fb547 392 if (spi_2.write(0x00) == header[0])
ruschigo 63:4ec1808fb547 393 state =1;
ruschigo 63:4ec1808fb547 394 else {
ruschigo 63:4ec1808fb547 395 cont++;
ruschigo 63:4ec1808fb547 396 wait_ms(10);
ruschigo 63:4ec1808fb547 397 }
ruschigo 63:4ec1808fb547 398
ruschigo 63:4ec1808fb547 399
ruschigo 63:4ec1808fb547 400 }
ruschigo 63:4ec1808fb547 401 else if (state == 1){ // read 0xb5
ruschigo 63:4ec1808fb547 402 if (spi_2.write(0x00) == header[1]){
ruschigo 63:4ec1808fb547 403 state =2;
ruschigo 63:4ec1808fb547 404 }
ruschigo 63:4ec1808fb547 405 else state =0;
ruschigo 63:4ec1808fb547 406 }
ruschigo 63:4ec1808fb547 407 else if (state == 2) {// read 0xb5 0x62
ruschigo 63:4ec1808fb547 408 if (spi_2.write(0x00) == header[2]){
ruschigo 63:4ec1808fb547 409 state =3;
ruschigo 63:4ec1808fb547 410 }
ruschigo 63:4ec1808fb547 411 else state =0;
ruschigo 63:4ec1808fb547 412 }
ruschigo 63:4ec1808fb547 413 else if (state == 3) {// read 0xb5 0x62 0x06
ruschigo 63:4ec1808fb547 414 if (spi_2.write(0x00) == header[3]){
ruschigo 63:4ec1808fb547 415 state =4;
ruschigo 63:4ec1808fb547 416 }
ruschigo 63:4ec1808fb547 417 else state =0;
ruschigo 63:4ec1808fb547 418 }
ruschigo 63:4ec1808fb547 419 else if (state == 4) {// read 0xb5 0x62 0x06 0x013
ruschigo 63:4ec1808fb547 420
ruschigo 63:4ec1808fb547 421 uint8_t packet[100];
ruschigo 63:4ec1808fb547 422 uint8_t value = spi_2.write(0x00);
ruschigo 63:4ec1808fb547 423 uint8_t packet_size;
ruschigo 63:4ec1808fb547 424
ruschigo 63:4ec1808fb547 425 for (packet_size = 0 ; packet_size < 100 ;packet_size++) {
ruschigo 63:4ec1808fb547 426 if (value != '\n' ){
ruschigo 63:4ec1808fb547 427 packet [packet_size]= value;
ruschigo 63:4ec1808fb547 428 value = spi_2.write(0x00);
ruschigo 63:4ec1808fb547 429 }
ruschigo 63:4ec1808fb547 430 else {
ruschigo 63:4ec1808fb547 431 lora_send_packet (packet , (uint8_t) packet_size+1);
ruschigo 63:4ec1808fb547 432 //packet_size = MAXIMUM_PACKET_SIZE +1;
ruschigo 63:4ec1808fb547 433 return;
ruschigo 63:4ec1808fb547 434 }
ruschigo 63:4ec1808fb547 435 }
ruschigo 63:4ec1808fb547 436
ruschigo 63:4ec1808fb547 437 }
ruschigo 63:4ec1808fb547 438 }
ruschigo 63:4ec1808fb547 439 }*/
ruschigo 63:4ec1808fb547 440
ruschigo 63:4ec1808fb547 441 void wait_packet_byte (uint8_t *header, uint8_t byte) {
ruschigo 63:4ec1808fb547 442
ruschigo 63:4ec1808fb547 443 char state = 0;
ruschigo 63:4ec1808fb547 444 int cont =0;
ruschigo 63:4ec1808fb547 445
ruschigo 63:4ec1808fb547 446 while (1){ //começou mensagem
ruschigo 63:4ec1808fb547 447 if (cont > 250) {
ruschigo 63:4ec1808fb547 448 //led2=!led2;
ruschigo 63:4ec1808fb547 449 return;
ruschigo 63:4ec1808fb547 450 }
ruschigo 63:4ec1808fb547 451 if (state == 0 ){
ruschigo 63:4ec1808fb547 452 if (spi_2.write(0x00) == header[0])
ruschigo 63:4ec1808fb547 453 state =1;
ruschigo 63:4ec1808fb547 454 else {
ruschigo 63:4ec1808fb547 455 cont++;
ruschigo 63:4ec1808fb547 456 wait_ms(10);
ruschigo 63:4ec1808fb547 457 }
ruschigo 63:4ec1808fb547 458
ruschigo 63:4ec1808fb547 459
ruschigo 63:4ec1808fb547 460 }
ruschigo 63:4ec1808fb547 461 else if (state == 1){ // read 0xb5
ruschigo 63:4ec1808fb547 462 if (spi_2.write(0x00) == header[1]){
ruschigo 63:4ec1808fb547 463 state =2;
ruschigo 63:4ec1808fb547 464 }
ruschigo 63:4ec1808fb547 465 else state =0;
ruschigo 63:4ec1808fb547 466 }
ruschigo 63:4ec1808fb547 467 else if (state == 2) {// read 0xb5 0x62
ruschigo 63:4ec1808fb547 468 if (spi_2.write(0x00) == header[2]){
ruschigo 63:4ec1808fb547 469 state =3;
ruschigo 63:4ec1808fb547 470 }
ruschigo 63:4ec1808fb547 471 else state =0;
ruschigo 63:4ec1808fb547 472 }
ruschigo 63:4ec1808fb547 473 else if (state == 3) {// read 0xb5 0x62 0x06
ruschigo 63:4ec1808fb547 474 if (spi_2.write(0x00) == header[3]){
ruschigo 63:4ec1808fb547 475 state =4;
ruschigo 63:4ec1808fb547 476 }
ruschigo 63:4ec1808fb547 477 else state =0;
ruschigo 63:4ec1808fb547 478 }
ruschigo 63:4ec1808fb547 479 else if (state == 4) {// read 0xb5 0x62 0x06 0x013
ruschigo 63:4ec1808fb547 480
ruschigo 63:4ec1808fb547 481 if (byte == 0){//mostrar todo o pacote
ruschigo 63:4ec1808fb547 482 uint8_t packet[100];
ruschigo 63:4ec1808fb547 483 uint8_t value = spi_2.write(0x00);
ruschigo 63:4ec1808fb547 484 uint8_t packet_size;
ruschigo 63:4ec1808fb547 485
ruschigo 63:4ec1808fb547 486 for (packet_size = 0 ; packet_size < 100 ;packet_size++) {
ruschigo 63:4ec1808fb547 487 if (value != '\n' ){
ruschigo 63:4ec1808fb547 488 packet [packet_size]= value;
ruschigo 63:4ec1808fb547 489 value = spi_2.write(0x00);
ruschigo 63:4ec1808fb547 490 }
ruschigo 63:4ec1808fb547 491 else {
ruschigo 63:4ec1808fb547 492 //lora_send_packet (packet , (uint8_t) packet_size+1);
ruschigo 63:4ec1808fb547 493 //packet_size = MAXIMUM_PACKET_SIZE +1;
ruschigo 63:4ec1808fb547 494 return;
ruschigo 63:4ec1808fb547 495 }
ruschigo 63:4ec1808fb547 496 }//fim for
ruschigo 63:4ec1808fb547 497 }//fim if byte
ruschigo 63:4ec1808fb547 498
ruschigo 63:4ec1808fb547 499 else {//mostrar apenas um byte
ruschigo 63:4ec1808fb547 500
ruschigo 63:4ec1808fb547 501
ruschigo 63:4ec1808fb547 502 for (int i = 0 ; i < byte-1 ;i++)
ruschigo 63:4ec1808fb547 503 spi_2.write(0x00);
ruschigo 63:4ec1808fb547 504
ruschigo 63:4ec1808fb547 505 uint8_t packet[]={(uint8_t)99,(uint8_t)spi_2.write(0x00)};
ruschigo 63:4ec1808fb547 506 //lora_send_packet (packet , (uint8_t) 2);
ruschigo 63:4ec1808fb547 507
ruschigo 63:4ec1808fb547 508
ruschigo 63:4ec1808fb547 509 for (int i = 0 ; i < 100 ;i++)
ruschigo 63:4ec1808fb547 510 if (spi_2.write(0x00) == '\n')
ruschigo 63:4ec1808fb547 511 return;
ruschigo 63:4ec1808fb547 512
ruschigo 63:4ec1808fb547 513 return;
ruschigo 63:4ec1808fb547 514
ruschigo 63:4ec1808fb547 515 }//fim else byte
ruschigo 63:4ec1808fb547 516
ruschigo 63:4ec1808fb547 517 }
ruschigo 63:4ec1808fb547 518
ruschigo 63:4ec1808fb547 519 }
ruschigo 63:4ec1808fb547 520
ruschigo 63:4ec1808fb547 521 }
ruschigo 63:4ec1808fb547 522
ruschigo 63:4ec1808fb547 523
ruschigo 63:4ec1808fb547 524 void gps_wait_same_packet () {
ruschigo 63:4ec1808fb547 525
ruschigo 63:4ec1808fb547 526 char state = 0;
ruschigo 63:4ec1808fb547 527 int cont =0;
ruschigo 63:4ec1808fb547 528
ruschigo 63:4ec1808fb547 529 while (1){ //começou mensagem
ruschigo 63:4ec1808fb547 530 if (cont > 250) {
ruschigo 63:4ec1808fb547 531 //led2=!led2;
ruschigo 63:4ec1808fb547 532 return;
ruschigo 63:4ec1808fb547 533 }
ruschigo 63:4ec1808fb547 534 if (state == 0 ){
ruschigo 63:4ec1808fb547 535 if (spi_2.write(0x00) == 0xb5)
ruschigo 63:4ec1808fb547 536 state =1;
ruschigo 63:4ec1808fb547 537 else {
ruschigo 63:4ec1808fb547 538 cont++;
ruschigo 63:4ec1808fb547 539 wait_ms(10);
ruschigo 63:4ec1808fb547 540 }
ruschigo 63:4ec1808fb547 541
ruschigo 63:4ec1808fb547 542
ruschigo 63:4ec1808fb547 543 }
ruschigo 63:4ec1808fb547 544 else if (state == 1){ // read 0xb5
ruschigo 63:4ec1808fb547 545 if (spi_2.write(0x00) == 0x62){
ruschigo 63:4ec1808fb547 546 state =2;
ruschigo 63:4ec1808fb547 547 }
ruschigo 63:4ec1808fb547 548 else state =0;
ruschigo 63:4ec1808fb547 549 }
ruschigo 63:4ec1808fb547 550 else if (state == 2){
ruschigo 63:4ec1808fb547 551 uint8_t packet[200];
ruschigo 63:4ec1808fb547 552 uint8_t value = spi_2.write(0x00);
ruschigo 63:4ec1808fb547 553 uint8_t packet_size;
ruschigo 63:4ec1808fb547 554
ruschigo 63:4ec1808fb547 555 for (packet_size = 0 ; packet_size < 200 ;packet_size++) {
ruschigo 63:4ec1808fb547 556 if (value != '\n' ){
ruschigo 63:4ec1808fb547 557 packet [packet_size]= value;
ruschigo 63:4ec1808fb547 558 value = spi_2.write(0x00);
ruschigo 63:4ec1808fb547 559 }
ruschigo 63:4ec1808fb547 560 else {
ruschigo 63:4ec1808fb547 561 //lora_send_packet (packet , (uint8_t) packet_size+1);
ruschigo 63:4ec1808fb547 562 //packet_size = MAXIMUM_PACKET_SIZE +1;
ruschigo 63:4ec1808fb547 563 return;
ruschigo 63:4ec1808fb547 564 }
ruschigo 63:4ec1808fb547 565
ruschigo 63:4ec1808fb547 566 }//fim for
ruschigo 63:4ec1808fb547 567 // lora_send_packet (packet , 200);
ruschigo 63:4ec1808fb547 568 }
ruschigo 63:4ec1808fb547 569 }
ruschigo 63:4ec1808fb547 570 }
ruschigo 63:4ec1808fb547 571
ruschigo 63:4ec1808fb547 572 void gps_config_gnss (){
ruschigo 63:4ec1808fb547 573
ruschigo 63:4ec1808fb547 574 uint8_t packet_cfg_gnss[] = {
ruschigo 63:4ec1808fb547 575 0xB5, 0x62, // Header
ruschigo 63:4ec1808fb547 576 0x03, 0x3E, // Class ID = CFG, Msg ID = UBX-CFG-GNSS
ruschigo 63:4ec1808fb547 577 0x3C, 0x00, // Payload Length = 60 bytes
ruschigo 63:4ec1808fb547 578 0x00, 0x00, 0x20, 0x07, // msgVer=0, numTrkChHw=32, numTrkChUse=32, numConfigBlocks=7
ruschigo 63:4ec1808fb547 579 0x00, 0x08, 0x10, 0x00, 0x01, 0x00, 0x01, 0x01, // gnssId=0 (GPS), resTrkCh=8, maxTrkCh=12, ENABLE
ruschigo 63:4ec1808fb547 580 0x01, 0x01, 0x03, 0x00, 0x01, 0x00, 0x01, 0x00, // gnssId=1 (SBAS), resTrkCh=1, maxTrkCh=2, ENABLE
ruschigo 63:4ec1808fb547 581 0x02, 0x04, 0x0A, 0x00, 0x01, 0x00, 0x01, 0x00, // gnssId=2 (Galileo), resTrkCh=4, maxTrkCh=10, ENABLE
ruschigo 63:4ec1808fb547 582 0x03, 0x04, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, // gnssId=3 (BeiDou), resTrkCh=4, maxTrkCh=8, DISABLE
ruschigo 63:4ec1808fb547 583 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, // gnssId=4 (IMES), resTrkCh=0, maxTrkCh=8, DISABLE
ruschigo 63:4ec1808fb547 584 0x05, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, // gnssId=5 (QZSS), resTrkCh=0, maxTrkCh=3, DISABLE
ruschigo 63:4ec1808fb547 585 0x06, 0x04, 0x08, 0x00, 0x01, 0x00, 0x01, 0x00, // gnssId=6 (GLONASS), resTrkCh=4, maxTrkCh=8, ENABLE
ruschigo 63:4ec1808fb547 586 0x00, 0x00 //checksums A &amp; B
ruschigo 63:4ec1808fb547 587 };
ruschigo 63:4ec1808fb547 588 uint8_t pos_ck = sizeof(packet_cfg_gnss)-2;
ruschigo 65:4090220e19d2 589 pc.printf("gnss config finish");
ruschigo 63:4ec1808fb547 590 uint8_t ubxi;
ruschigo 63:4ec1808fb547 591 //calcula checksum
ruschigo 63:4ec1808fb547 592 for (ubxi=2; ubxi<pos_ck ; ubxi++) {
ruschigo 63:4ec1808fb547 593 packet_cfg_gnss[pos_ck] = packet_cfg_gnss[pos_ck] + packet_cfg_gnss[ubxi];
ruschigo 63:4ec1808fb547 594 packet_cfg_gnss[pos_ck+1] = packet_cfg_gnss[pos_ck+1] + packet_cfg_gnss[pos_ck];
ruschigo 63:4ec1808fb547 595 }
ruschigo 63:4ec1808fb547 596
ruschigo 63:4ec1808fb547 597 }
ruschigo 63:4ec1808fb547 598
ruschigo 63:4ec1808fb547 599
ruschigo 63:4ec1808fb547 600 void gps_print_local (){
ruschigo 63:4ec1808fb547 601 uint8_t packet_nav_pvt[] = { 0xB5, 0x62, 0x01, 0x07, 0x00, 0x00, 0x08, 0x19};
ruschigo 63:4ec1808fb547 602
ruschigo 63:4ec1808fb547 603 //=============envia pacote nav pvt
ruschigo 63:4ec1808fb547 604 for ( int i=0; i< sizeof(packet_nav_pvt) ; i++){
ruschigo 63:4ec1808fb547 605 spi_2.write(packet_nav_pvt[i]);
ruschigo 63:4ec1808fb547 606 wait_ms(20);
ruschigo 63:4ec1808fb547 607 }
ruschigo 63:4ec1808fb547 608
ruschigo 63:4ec1808fb547 609 gps_navPVT Data = le_nav_pvt();
ruschigo 63:4ec1808fb547 610
ruschigo 63:4ec1808fb547 611 //printf ("gps lat=%d lon=%d \n",Data.lat ,Data.lon );
ruschigo 63:4ec1808fb547 612 //lat=Data.lat;
ruschigo 63:4ec1808fb547 613 //lon=Data.lon;
pancotinho 68:fc357095c8ef 614 if(Data.year !=0){
pancotinho 68:fc357095c8ef 615 pc.printf("<g%d,%d>\n", (int)Data.lat, (int)Data.lon);
pancotinho 68:fc357095c8ef 616 pc.printf("<t%d/%d/%d-%d:%d:%d>\n", (int)Data.year, (int)Data.month,(int)Data.day, (int)Data.hour, (int)Data.min, (int)Data.sec);
pancotinho 68:fc357095c8ef 617 }
pancotinho 68:fc357095c8ef 618 else{
pancotinho 68:fc357095c8ef 619 pc.printf("location not found!\n");
pancotinho 68:fc357095c8ef 620 }
pancotinho 68:fc357095c8ef 621
pancotinho 68:fc357095c8ef 622
ruschigo 63:4ec1808fb547 623 }
ruschigo 63:4ec1808fb547 624
ruschigo 63:4ec1808fb547 625 void gps_get_lat_lon(int *latitude, int *logitude){
ruschigo 63:4ec1808fb547 626 uint8_t packet_nav_pvt[] = { 0xB5, 0x62, 0x01, 0x07, 0x00, 0x00, 0x08, 0x19};
ruschigo 63:4ec1808fb547 627
ruschigo 63:4ec1808fb547 628 //=============envia pacote nav pvt
ruschigo 63:4ec1808fb547 629 for ( int i=0; i< sizeof(packet_nav_pvt) ; i++){
ruschigo 63:4ec1808fb547 630 spi_2.write(packet_nav_pvt[i]);
ruschigo 63:4ec1808fb547 631 wait_ms(20);
ruschigo 63:4ec1808fb547 632 }
ruschigo 63:4ec1808fb547 633
ruschigo 63:4ec1808fb547 634 gps_navPVT Data = le_nav_pvt();
ruschigo 63:4ec1808fb547 635
ruschigo 63:4ec1808fb547 636 //printf ("gps lat=%d lon=%d \n",Data.lat ,Data.lon );
ruschigo 63:4ec1808fb547 637 //latitude = &(int)Data.lat;
ruschigo 63:4ec1808fb547 638 //longitude = &(int)Data.lon;
ruschigo 63:4ec1808fb547 639 return;
ruschigo 63:4ec1808fb547 640 }
ruschigo 63:4ec1808fb547 641
ruschigo 63:4ec1808fb547 642 void gps_config (){
ruschigo 63:4ec1808fb547 643 gps_DSEL = 0;
ruschigo 63:4ec1808fb547 644 //spi gps configuration
ruschigo 63:4ec1808fb547 645 spi_2.format(8,0);
ruschigo 63:4ec1808fb547 646 spi_2.frequency(1000000); //1MHz
ruschigo 63:4ec1808fb547 647 cs=1;
ruschigo 63:4ec1808fb547 648 wait(0.1);
ruschigo 63:4ec1808fb547 649 cs=0;
ruschigo 63:4ec1808fb547 650 wait(0.1);
ruschigo 63:4ec1808fb547 651
ruschigo 63:4ec1808fb547 652 gps_int = 0;
ruschigo 63:4ec1808fb547 653
ruschigo 63:4ec1808fb547 654 //gps reset
ruschigo 63:4ec1808fb547 655 gps_reset = 1;
ruschigo 63:4ec1808fb547 656 wait_ms(50);
ruschigo 63:4ec1808fb547 657 //gps_reset = 0;
ruschigo 63:4ec1808fb547 658 //wait(1.5);
ruschigo 63:4ec1808fb547 659 }
ruschigo 63:4ec1808fb547 660
ruschigo 63:4ec1808fb547 661 int get_latitude(){
ruschigo 63:4ec1808fb547 662 return lat;
ruschigo 63:4ec1808fb547 663 }
ruschigo 63:4ec1808fb547 664
ruschigo 63:4ec1808fb547 665 int get_longitude(){
ruschigo 63:4ec1808fb547 666 return lon;
ruschigo 63:4ec1808fb547 667 }
pancotinho 67:17addc7bf8c2 668
pancotinho 67:17addc7bf8c2 669 int get_time(){
pancotinho 67:17addc7bf8c2 670 return 1;
pancotinho 67:17addc7bf8c2 671 }
pancotinho 67:17addc7bf8c2 672
pancotinho 67:17addc7bf8c2 673 gps_navPVT get_struct(){
pancotinho 68:fc357095c8ef 674 uint8_t packet_nav_pvt[] = { 0xB5, 0x62, 0x01, 0x07, 0x00, 0x00, 0x08, 0x19};
pancotinho 68:fc357095c8ef 675
pancotinho 68:fc357095c8ef 676 //=============envia pacote nav pvt
pancotinho 68:fc357095c8ef 677 for ( int i=0; i< sizeof(packet_nav_pvt) ; i++){
pancotinho 68:fc357095c8ef 678 spi_2.write(packet_nav_pvt[i]);
pancotinho 68:fc357095c8ef 679 wait_ms(20);
pancotinho 68:fc357095c8ef 680 }
pancotinho 68:fc357095c8ef 681
pancotinho 68:fc357095c8ef 682 gps_navPVT Data = le_nav_pvt();
pancotinho 68:fc357095c8ef 683
pancotinho 68:fc357095c8ef 684 if(Data.year !=0){
pancotinho 68:fc357095c8ef 685 pc.printf("<g%d,%d>\n", (int)Data.lat, (int)Data.lon);
pancotinho 68:fc357095c8ef 686 pc.printf("<t%d/%d/%d-%d:%d:%d>\n", (int)Data.year, (int)Data.month,(int)Data.day, (int)Data.hour, (int)Data.min, (int)Data.sec);
pancotinho 68:fc357095c8ef 687 }
pancotinho 68:fc357095c8ef 688 else{
pancotinho 68:fc357095c8ef 689 pc.printf("location not found!");
pancotinho 68:fc357095c8ef 690 }
pancotinho 68:fc357095c8ef 691 return Data;
pancotinho 67:17addc7bf8c2 692 }