-
Notifications
You must be signed in to change notification settings - Fork 0
/
gps.cpp
95 lines (87 loc) · 2.84 KB
/
gps.cpp
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
#include "gps.h"
#include "trame.h"
#include "defines.h"
#include "TinyGPS.h"
GPS::GPS(const byte &id) : Capteur::Capteur(id, NB_VAL_GPS){
leds[0] = 46;
leds[1] = 42;
leds[2] = 45;
leds[3] = 49;
for (byte i = 0; i < 4; i += 1) {
pinMode(leds[i], OUTPUT);
}
}
bool GPS::init(){
Serial1.begin(SERIAL_BAUDRATE_GPS);
}
bool GPS::refresh(){
long flat, flon;
unsigned long age, fix_age;
while(Serial1.available()>0){
_gps.encode(Serial1.read());
}
_gps.get_position(&flat, &flon, &age);
String(flat).toCharArray(_val[ID_VAL_LAT_DEG], SIZE_VALUE+1);
String(flon).toCharArray(_val[ID_VAL_LON_DEG], SIZE_VALUE+1);
String(_gps.speed()).toCharArray(_val[ID_VAL_VIT], SIZE_VALUE+1);
String(_gps.altitude()).toCharArray(_val[ID_VAL_ALT], SIZE_VALUE+1);
for (byte i = 0; i < 4; i ++){
digitalWrite(leds[i], LOW);
}
for (byte i = 0; i < _gps.satellites(); i += 1) {
if (i > 3) {
break;
}
digitalWrite(leds[i], HIGH);
}
}
/*void GPS::getTrame(){
debug("dtg");
for (byte i = 0 ; i < 6 ; i++){ // Pour chaque valeur envoyée par le GPS
String id_capt, val_capt; // variables contenant respectivement l'id et la valeur de la donnee du GPS en cours d'envoi
switch (i){ // On attribue a la variable temporaire la valeur et l'ID de la donnee du GPS en cours d'envoi
case 0:
id_capt = ID_VAL_LAT_DEG;
val_capt = _lat_deg;
break;
case 1:
id_capt = ID_VAL_LAT_MIN;
val_capt = _lat_min;
break;
case 2:
id_capt = ID_VAL_LON_DEG;
val_capt = _lon_deg;
break;
case 3:
id_capt = ID_VAL_LON_MIN;
val_capt = _lon_min;
break;
case 4:
id_capt = ID_VAL_VIT;
val_capt = _vit;
break;
case 5:
id_capt = ID_VAL_UTIME;
val_capt = _utime;
break;
default:
break;
}
debug("mtg");
String trame = "#$"; // Debut + separateur
trame += ID_CAPT_GPS; // ID du capteur
trame += "$"; // Separateur
trame += id_capt; // ID de la valeur en cours d'envoi
trame += "$"; // Separateur
for (byte j = 0 ; j < SIZE_VALUE - val_capt.length() ; j++) trame += "0"; // remplissage de la taille maximale de la valeur pour que la trame envoyée ait une longueur constante
trame += val_capt; // Valeur du capteur a envoyer
trame += "$"; // Separateur
trame += String(get_checksum(trame), HEX); // Checksum
trame += "$@"; // Separateur + fin
for (byte k = 0 ; k < NB_REPET ; k++) { // repetition et envoi de la trame
Serial.print(trame);
Serial.flush();
}
debug("ftg");
}
}*/