add mic-e 2

This commit is contained in:
richonguzman 2023-12-17 12:01:59 -03:00
parent 9652882be8
commit b6cb6ab0c7
6 changed files with 39 additions and 12 deletions

View File

@ -4,8 +4,9 @@
"callsign": "NOCALL-7", "callsign": "NOCALL-7",
"symbol": "[", "symbol": "[",
"overlay": "/", "overlay": "/",
"micE": "",
"comment": "", "comment": "",
"smart_beacon": { "smartBeacon": {
"active": true, "active": true,
"slowRate": 120, "slowRate": 120,
"slowSpeed": 3, "slowSpeed": 3,
@ -15,14 +16,15 @@
"minDeltaBeacon": 20, "minDeltaBeacon": 20,
"turnMinDeg": 12, "turnMinDeg": 12,
"turnSlope": 60 "turnSlope": 60
} }
}, },
{ {
"callsign": "NOCALL-7", "callsign": "NOCALL-7",
"symbol": ">", "symbol": ">",
"overlay": "/", "overlay": "/",
"micE": "",
"comment": "", "comment": "",
"smart_beacon": { "smartBeacon": {
"active": true, "active": true,
"slowRate": 120, "slowRate": 120,
"slowSpeed": 10, "slowSpeed": 10,
@ -38,8 +40,9 @@
"callsign": "NOCALL-7", "callsign": "NOCALL-7",
"symbol": "j", "symbol": "j",
"overlay": "/", "overlay": "/",
"micE": "",
"comment": "", "comment": "",
"smart_beacon": { "smartBeacon": {
"active": true, "active": true,
"slowRate": 120, "slowRate": 120,
"slowSpeed": 5, "slowSpeed": 5,

View File

@ -90,6 +90,8 @@ bool digirepeaterActive = false;
bool sosActive = false; bool sosActive = false;
bool disableGPS; bool disableGPS;
bool miceActive = false;
logging::Logger logger; logging::Logger logger;
void setup() { void setup() {
@ -155,6 +157,7 @@ void loop() {
currentBeacon = &Config.beacons[myBeaconsIndex]; currentBeacon = &Config.beacons[myBeaconsIndex];
if (statusState) { if (statusState) {
Config.validateConfigFile(currentBeacon->callsign); Config.validateConfigFile(currentBeacon->callsign);
miceActive = Config.validateMicE(currentBeacon->micE);
} }
powerManagement.batteryManager(); powerManagement.batteryManager();

View File

@ -30,6 +30,7 @@ void Configuration::readFile(fs::FS &fs, const char *fileName) {
bcn.callsign = BeaconsArray[i]["callsign"].as<String>(); bcn.callsign = BeaconsArray[i]["callsign"].as<String>();
bcn.symbol = BeaconsArray[i]["symbol"].as<String>(); bcn.symbol = BeaconsArray[i]["symbol"].as<String>();
bcn.overlay = BeaconsArray[i]["overlay"].as<String>(); bcn.overlay = BeaconsArray[i]["overlay"].as<String>();
bcn.micE = BeaconsArray[i]["micE"].as<String>();
bcn.comment = BeaconsArray[i]["comment"].as<String>(); bcn.comment = BeaconsArray[i]["comment"].as<String>();
bcn.smartBeaconState = BeaconsArray[i]["smart_beacon"]["active"].as<bool>(); bcn.smartBeaconState = BeaconsArray[i]["smart_beacon"]["active"].as<bool>();
@ -40,7 +41,7 @@ void Configuration::readFile(fs::FS &fs, const char *fileName) {
bcn.minTxDist = BeaconsArray[i]["smart_beacon"]["minTxDist"].as<int>(); bcn.minTxDist = BeaconsArray[i]["smart_beacon"]["minTxDist"].as<int>();
bcn.minDeltaBeacon = BeaconsArray[i]["smart_beacon"]["minDeltaBeacon"].as<int>(); bcn.minDeltaBeacon = BeaconsArray[i]["smart_beacon"]["minDeltaBeacon"].as<int>();
bcn.turnMinDeg = BeaconsArray[i]["smart_beacon"]["turnMinDeg"].as<int>(); bcn.turnMinDeg = BeaconsArray[i]["smart_beacon"]["turnMinDeg"].as<int>();
bcn.turnSlope = BeaconsArray[i]["smart_beacon"]["turnSlope"].as<int>(); bcn.turnSlope = BeaconsArray[i]["smart_beacon"]["turnSlope"].as<int>();
beacons.push_back(bcn); beacons.push_back(bcn);
} }
@ -101,4 +102,16 @@ void Configuration::validateConfigFile(String currentBeaconCallsign) {
delay(1000); delay(1000);
} }
} }
}
bool Configuration::validateMicE(String currentBeaconMicE) {
String miceMessageTypes[] = {"111", "110", "101", "100", "011", "010", "001" , "000"};
int arraySize = sizeof(miceMessageTypes) / sizeof(miceMessageTypes[0]);
bool validType = false;
for (int i=0; i<arraySize;i++) {
if (currentBeaconMicE == miceMessageTypes[i]) {
validType = true;
}
}
return validType;
} }

View File

@ -10,6 +10,7 @@ public:
String callsign; String callsign;
String symbol; String symbol;
String overlay; String overlay;
String micE;
String comment; String comment;
bool smartBeaconState; bool smartBeaconState;
int slowRate; int slowRate;
@ -91,6 +92,7 @@ public:
Configuration(); Configuration();
void validateConfigFile(String currentBeaconCallsign); void validateConfigFile(String currentBeaconCallsign);
bool validateMicE(String currentBeaconMicE);
private: private:
void readFile(fs::FS &fs, const char *fileName) ; void readFile(fs::FS &fs, const char *fileName) ;

View File

@ -48,6 +48,8 @@ extern double lastTxLat;
extern double lastTxLng; extern double lastTxLng;
extern double lastTxDistance; extern double lastTxDistance;
extern bool miceActive;
namespace STATION_Utils { namespace STATION_Utils {
@ -389,14 +391,18 @@ namespace STATION_Utils {
void sendBeacon(String type) { void sendBeacon(String type) {
String packet; String packet;
if (Config.bme.sendTelemetry && type == "Wx") { if (Config.bme.sendTelemetry && type == "Wx") {
packet = APRSPacketLib::generateGPSBeaconPacket(currentBeacon->callsign, "APLRT1", Config.path, "/", APRSPacketLib::encondeGPS(gps.location.lat(),gps.location.lng(), gps.course.deg(), gps.speed.knots(), currentBeacon->symbol, Config.sendAltitude, gps.altitude.feet(), sendStandingUpdate, "Wx")); if (miceActive) {
packet = APRSPacketLib::generateMiceGPSBeacon(currentBeacon->micE, currentBeacon->callsign,"_", currentBeacon->overlay, gps.location.lat(), gps.location.lng(), gps.course.deg(), gps.speed.knots(), gps.altitude.meters());
} else {
packet = APRSPacketLib::generateGPSBeaconPacket(currentBeacon->callsign, "APLRT1", Config.path, "/", APRSPacketLib::encondeGPS(gps.location.lat(),gps.location.lng(), gps.course.deg(), gps.speed.knots(), currentBeacon->symbol, Config.sendAltitude, gps.altitude.feet(), sendStandingUpdate, "Wx"));
}
packet += BME_Utils::readDataSensor("APRS"); packet += BME_Utils::readDataSensor("APRS");
} else { } else {
//packet = APRSPacketLib::generateGPSBeaconPacket(currentBeacon->callsign, "APLRT1", Config.path, currentBeacon->overlay, APRSPacketLib::encondeGPS(gps.location.lat(),gps.location.lng(), gps.course.deg(), gps.speed.knots(), currentBeacon->symbol, Config.sendAltitude, gps.altitude.feet(), sendStandingUpdate, "GPS")); if (miceActive) {
// packet = APRSPacketLib::generateMiceGPSBeacon(currentBeacon->micE, currentBeacon->callsign, currentBeacon->symbol, currentBeacon->overlay, gps.location.lat(), gps.location.lng(), gps.course.deg(), gps.speed.knots(), gps.altitude.meters());
// this is Mic-E Test } else {
packet = APRSPacketLib::generateMiceGPSBeacon("110", currentBeacon->callsign, currentBeacon->symbol, currentBeacon->overlay, gps.location.lat(), gps.location.lng(), gps.course.deg(), gps.speed.knots(), gps.altitude.meters()); packet = APRSPacketLib::generateGPSBeaconPacket(currentBeacon->callsign, "APLRT1", Config.path, currentBeacon->overlay, APRSPacketLib::encondeGPS(gps.location.lat(),gps.location.lng(), gps.course.deg(), gps.speed.knots(), currentBeacon->symbol, Config.sendAltitude, gps.altitude.feet(), sendStandingUpdate, "GPS"));
// }
} }
if (currentBeacon->comment != "") { if (currentBeacon->comment != "") {
updateCounter++; updateCounter++;

View File

@ -79,7 +79,7 @@ namespace utils {
if (statusState) { if (statusState) {
lastTx = millis() - lastTxTime; lastTx = millis() - lastTxTime;
uint32_t statusTx = millis() - statusTime; uint32_t statusTx = millis() - statusTime;
if (statusTx > 15*60*1000 && lastTx > 10*1000) { if (statusTx > 10*60*1000 && lastTx > 10*1000) {
LoRa_Utils::sendNewPacket(APRSPacketLib::generateStatusPacket(currentBeacon->callsign, "APLRT1", Config.path, "https://github.com/richonguzman/LoRa_APRS_Tracker " + versionDate)); LoRa_Utils::sendNewPacket(APRSPacketLib::generateStatusPacket(currentBeacon->callsign, "APLRT1", Config.path, "https://github.com/richonguzman/LoRa_APRS_Tracker " + versionDate));
statusState = false; statusState = false;
lastTx = millis(); lastTx = millis();