|
|
|
@ -761,11 +761,15 @@ void MyMesh::removeNeighbor(const uint8_t *pubkey, int key_len) { |
|
|
|
void MyMesh::gpsGetStatus(char * reply) { |
|
|
|
LocationProvider * l = sensors.getLocationProvider(); |
|
|
|
if (l != NULL) { |
|
|
|
bool status = l->isActive(); |
|
|
|
bool sync = l->isValid(); |
|
|
|
bool enabled = l->isEnabled(); // is EN pin on ?
|
|
|
|
bool active = gpsGetState(); // is enabled at SensorManager level ?
|
|
|
|
bool fix = l->isValid(); // has fix ?
|
|
|
|
int sats = l->satellitesCount(); |
|
|
|
if (status) { |
|
|
|
sprintf(reply, "on, %s, %d sats", sync?"fix":"no fix", sats); |
|
|
|
if (enabled) { |
|
|
|
sprintf(reply, "on, %s, %s, %d sats", |
|
|
|
active?"active":"deactivated", |
|
|
|
fix?"fix":"no fix", |
|
|
|
sats); |
|
|
|
} else { |
|
|
|
strcpy(reply, "off"); |
|
|
|
} |
|
|
|
@ -774,19 +778,33 @@ void MyMesh::gpsGetStatus(char * reply) { |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
void MyMesh::gpsStart() { |
|
|
|
LocationProvider * l = sensors.getLocationProvider(); |
|
|
|
if (l != NULL) { |
|
|
|
l->begin(); |
|
|
|
l->reset(); |
|
|
|
bool MyMesh::gpsGetState() { |
|
|
|
int num = sensors.getNumSettings(); |
|
|
|
for (int i = 0; i < num; i++) { |
|
|
|
if (strcmp(sensors.getSettingName(i), "gps") == 0) { |
|
|
|
return !strcmp(sensors.getSettingValue(i), "1"); |
|
|
|
} |
|
|
|
} |
|
|
|
return false; |
|
|
|
} |
|
|
|
|
|
|
|
void MyMesh::gpsSetState(bool value) { |
|
|
|
// toggle GPS on/off
|
|
|
|
int num = sensors.getNumSettings(); |
|
|
|
for (int i = 0; i < num; i++) { |
|
|
|
if (strcmp(sensors.getSettingName(i), "gps") == 0) { |
|
|
|
sensors.setSettingValue("gps", value?"1":"0"); |
|
|
|
break; |
|
|
|
} |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
void MyMesh::gpsStart() { |
|
|
|
gpsSetState(true); |
|
|
|
} |
|
|
|
|
|
|
|
void MyMesh::gpsStop() { |
|
|
|
LocationProvider * l = sensors.getLocationProvider(); |
|
|
|
if (l != NULL) { |
|
|
|
l->stop(); |
|
|
|
} |
|
|
|
gpsSetState(false); |
|
|
|
} |
|
|
|
|
|
|
|
void MyMesh::gpsSyncTime() { |
|
|
|
|