|
|
|
@ -1,28 +1,46 @@ |
|
|
|
#include <Arduino.h> |
|
|
|
#include "target.h" |
|
|
|
|
|
|
|
#include <Arduino.h> |
|
|
|
#include <helpers/ArduinoHelpers.h> |
|
|
|
|
|
|
|
#ifdef ENV_INCLUDE_GPS |
|
|
|
#include <helpers/sensors/MicroNMEALocationProvider.h> |
|
|
|
#endif |
|
|
|
|
|
|
|
T114Board board; |
|
|
|
|
|
|
|
#if defined(P_LORA_SCLK) |
|
|
|
RADIO_CLASS radio = new Module(P_LORA_NSS, P_LORA_DIO_1, P_LORA_RESET, P_LORA_BUSY, SPI); |
|
|
|
#else |
|
|
|
RADIO_CLASS radio = new Module(P_LORA_NSS, P_LORA_DIO_1, P_LORA_RESET, P_LORA_BUSY); |
|
|
|
#endif |
|
|
|
|
|
|
|
WRAPPER_CLASS radio_driver(radio, board); |
|
|
|
|
|
|
|
VolatileRTCClock fallback_clock; |
|
|
|
AutoDiscoverRTCClock rtc_clock(fallback_clock); |
|
|
|
MicroNMEALocationProvider nmea = MicroNMEALocationProvider(Serial1, &rtc_clock); |
|
|
|
T114SensorManager sensors = T114SensorManager(nmea); |
|
|
|
|
|
|
|
#if ENV_INCLUDE_GPS |
|
|
|
#include <helpers/sensors/MicroNMEALocationProvider.h> |
|
|
|
MicroNMEALocationProvider nmea = MicroNMEALocationProvider(Serial1); |
|
|
|
EnvironmentSensorManager sensors = EnvironmentSensorManager(nmea); |
|
|
|
#else |
|
|
|
EnvironmentSensorManager sensors; |
|
|
|
#endif |
|
|
|
|
|
|
|
#ifdef DISPLAY_CLASS |
|
|
|
DISPLAY_CLASS display; |
|
|
|
MomentaryButton user_btn(PIN_USER_BTN, 1000, true); |
|
|
|
DISPLAY_CLASS display; |
|
|
|
MomentaryButton user_btn(PIN_USER_BTN, 1000, true); |
|
|
|
#endif |
|
|
|
|
|
|
|
bool radio_init() { |
|
|
|
rtc_clock.begin(Wire); |
|
|
|
|
|
|
|
#if defined(P_LORA_SCLK) |
|
|
|
return radio.std_init(&SPI); |
|
|
|
#else |
|
|
|
return radio.std_init(); |
|
|
|
#endif |
|
|
|
} |
|
|
|
|
|
|
|
uint32_t radio_get_rng_seed() { |
|
|
|
@ -42,37 +60,5 @@ void radio_set_tx_power(uint8_t dbm) { |
|
|
|
|
|
|
|
mesh::LocalIdentity radio_new_identity() { |
|
|
|
RadioNoiseListener rng(radio); |
|
|
|
return mesh::LocalIdentity(&rng); // create new random identity
|
|
|
|
} |
|
|
|
|
|
|
|
bool T114SensorManager::begin() { |
|
|
|
Serial1.begin(9600); |
|
|
|
|
|
|
|
// Try to detect if GPS is physically connected to determine if we should expose the setting
|
|
|
|
pinMode(PIN_GPS_EN, OUTPUT); |
|
|
|
digitalWrite(PIN_GPS_EN, HIGH); // Power on GPS
|
|
|
|
|
|
|
|
// Give GPS a moment to power up and send data
|
|
|
|
delay(1500); |
|
|
|
|
|
|
|
// We'll consider GPS detected if we see any data on Serial1
|
|
|
|
gps_detected = (Serial1.available() > 0); |
|
|
|
|
|
|
|
if (gps_detected) { |
|
|
|
MESH_DEBUG_PRINTLN("GPS detected"); |
|
|
|
} else { |
|
|
|
MESH_DEBUG_PRINTLN("No GPS detected"); |
|
|
|
} |
|
|
|
digitalWrite(PIN_GPS_EN, LOW); // Power off GPS until the setting is changed
|
|
|
|
|
|
|
|
return EnvironmentSensorManager::begin(); |
|
|
|
} |
|
|
|
|
|
|
|
bool T114SensorManager::querySensors(uint8_t requester_permissions, CayenneLPP& telemetry) { |
|
|
|
EnvironmentSensorManager::querySensors(requester_permissions, telemetry); |
|
|
|
|
|
|
|
if (requester_permissions & TELEM_PERM_LOCATION) { // does requester have permission?
|
|
|
|
telemetry.addGPS(TELEM_CHANNEL_SELF, node_lat, node_lon, node_altitude); |
|
|
|
} |
|
|
|
return true; |
|
|
|
return mesh::LocalIdentity(&rng); // create new random identity
|
|
|
|
} |
|
|
|
|