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

View File

@ -90,6 +90,8 @@ bool digirepeaterActive = false;
bool sosActive = false;
bool disableGPS;
bool miceActive = false;
logging::Logger logger;
void setup() {
@ -155,6 +157,7 @@ void loop() {
currentBeacon = &Config.beacons[myBeaconsIndex];
if (statusState) {
Config.validateConfigFile(currentBeacon->callsign);
miceActive = Config.validateMicE(currentBeacon->micE);
}
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.symbol = BeaconsArray[i]["symbol"].as<String>();
bcn.overlay = BeaconsArray[i]["overlay"].as<String>();
bcn.micE = BeaconsArray[i]["micE"].as<String>();
bcn.comment = BeaconsArray[i]["comment"].as<String>();
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.minDeltaBeacon = BeaconsArray[i]["smart_beacon"]["minDeltaBeacon"].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);
}
@ -101,4 +102,16 @@ void Configuration::validateConfigFile(String currentBeaconCallsign) {
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 symbol;
String overlay;
String micE;
String comment;
bool smartBeaconState;
int slowRate;
@ -91,6 +92,7 @@ public:
Configuration();
void validateConfigFile(String currentBeaconCallsign);
bool validateMicE(String currentBeaconMicE);
private:
void readFile(fs::FS &fs, const char *fileName) ;

View File

@ -48,6 +48,8 @@ extern double lastTxLat;
extern double lastTxLng;
extern double lastTxDistance;
extern bool miceActive;
namespace STATION_Utils {
@ -389,14 +391,18 @@ namespace STATION_Utils {
void sendBeacon(String type) {
String packet;
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");
} 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"));
//
// this is Mic-E Test
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());
//
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());
} 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 (currentBeacon->comment != "") {
updateCounter++;

View File

@ -79,7 +79,7 @@ namespace utils {
if (statusState) {
lastTx = millis() - lastTxTime;
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));
statusState = false;
lastTx = millis();