decode CSA on not encoded gps packet
This commit is contained in:
parent
72d70de92c
commit
620dd01aaf
|
|
@ -173,6 +173,14 @@ namespace APRSPacketLib {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int decodeSpeed(String speed) {
|
||||||
|
return speed.toInt() * 1.852;
|
||||||
|
}
|
||||||
|
|
||||||
|
int decodeAltitude(String altitude) {
|
||||||
|
return altitude.toInt() * 0.3048;
|
||||||
|
}
|
||||||
|
|
||||||
APRSPacket processReceivedPacket(String receivedPacket) {
|
APRSPacket processReceivedPacket(String receivedPacket) {
|
||||||
/* Packet type:
|
/* Packet type:
|
||||||
gps = 0
|
gps = 0
|
||||||
|
|
@ -206,24 +214,26 @@ namespace APRSPacketLib {
|
||||||
// revisar si es codificado con Speed+Course o Altitude+Course+Speed
|
// revisar si es codificado con Speed+Course o Altitude+Course+Speed
|
||||||
// tambien conseguir Symbol
|
// tambien conseguir Symbol
|
||||||
|
|
||||||
|
/*aprsPacket.symbol
|
||||||
|
aprsPacket.course
|
||||||
|
aprsPacket.speed
|
||||||
|
aprsPacket.altitude*/
|
||||||
|
Serial.println(aprsPacket.latitude);
|
||||||
|
Serial.println(aprsPacket.longitude);
|
||||||
|
|
||||||
} else {
|
} else {
|
||||||
|
|
||||||
// revisar si tiene Course, Speed, Altitude
|
|
||||||
aprsPacket.latitude = decodeLatitude(receivedPacket.substring(receivedPacket.indexOf(gpsChar)+2,receivedPacket.indexOf(gpsChar)+10));
|
aprsPacket.latitude = decodeLatitude(receivedPacket.substring(receivedPacket.indexOf(gpsChar)+2,receivedPacket.indexOf(gpsChar)+10));
|
||||||
aprsPacket.longitude = decodeLongitude(receivedPacket.substring(receivedPacket.indexOf(gpsChar)+11,receivedPacket.indexOf(gpsChar)+20));
|
aprsPacket.longitude = decodeLongitude(receivedPacket.substring(receivedPacket.indexOf(gpsChar)+11,receivedPacket.indexOf(gpsChar)+20));
|
||||||
if (receivedPacket.substring(25,26) == "/" && receivedPacket.substring(30,33) == "/A=") {
|
aprsPacket.symbol = receivedPacket.substring(receivedPacket.indexOf(gpsChar)+20,receivedPacket.indexOf(gpsChar)+21);
|
||||||
Serial.println("es GPS no codificado y tiene CSA");
|
if (receivedPacket.substring(receivedPacket.indexOf(gpsChar)+24,receivedPacket.indexOf(gpsChar)+25) == "/" && receivedPacket.substring(receivedPacket.indexOf(gpsChar)+28,receivedPacket.indexOf(gpsChar)+31) == "/A=") {
|
||||||
// 20 a 21 es symbol
|
aprsPacket.course = receivedPacket.substring(receivedPacket.indexOf(gpsChar)+21,receivedPacket.indexOf(gpsChar)+24).toInt();
|
||||||
// 21 a 24 es Course
|
aprsPacket.speed = decodeSpeed(receivedPacket.substring(receivedPacket.indexOf(gpsChar)+25,receivedPacket.indexOf(gpsChar)+28));
|
||||||
|
aprsPacket.altitude = decodeAltitude(receivedPacket.substring(receivedPacket.indexOf(gpsChar)+31,receivedPacket.indexOf(gpsChar)+39));
|
||||||
} else {
|
} else {
|
||||||
aprsPacket.course = 0;
|
aprsPacket.course = 0;
|
||||||
aprsPacket.speed = 0;
|
aprsPacket.speed = 0;
|
||||||
aprsPacket.altitude = 0;
|
aprsPacket.altitude = 0;
|
||||||
}
|
}
|
||||||
// como conseguir Symbol
|
|
||||||
|
|
||||||
// sino es estacion fija (digi?/igate?)
|
|
||||||
}
|
}
|
||||||
} else if (receivedPacket.indexOf("::") > 10) {
|
} else if (receivedPacket.indexOf("::") > 10) {
|
||||||
aprsPacket.type = 1;
|
aprsPacket.type = 1;
|
||||||
|
|
|
||||||
|
|
@ -20,18 +20,20 @@ struct APRSPacket {
|
||||||
|
|
||||||
namespace APRSPacketLib {
|
namespace APRSPacketLib {
|
||||||
|
|
||||||
String generateBasePacket(String callsign, String tocall, String path);
|
String generateBasePacket(String callsign, String tocall, String path);
|
||||||
String generateStatusPacket(String callsign, String tocall, String path, String status);
|
String generateStatusPacket(String callsign, String tocall, String path, String status);
|
||||||
String generateMessagePacket(String callsign, String tocall, String path, String addressee, String message);
|
String generateMessagePacket(String callsign, String tocall, String path, String addressee, String message);
|
||||||
String generateDigiRepeatedPacket(APRSPacket packet, String callsign);
|
String generateDigiRepeatedPacket(APRSPacket packet, String callsign);
|
||||||
char *ax25_base91enc(char *s, uint8_t n, uint32_t v);
|
char *ax25_base91enc(char *s, uint8_t n, uint32_t v);
|
||||||
String encondeGPS(float latitude, float longitude, float course, float speed, String symbol, bool sendAltitude, int altitude, bool sendStandingUpdate, String packetType);
|
String encondeGPS(float latitude, float longitude, float course, float speed, String symbol, bool sendAltitude, int altitude, bool sendStandingUpdate, String packetType);
|
||||||
String generateGPSBeaconPacket(String callsign, String tocall, String path, String overlay, String gpsData);
|
String generateGPSBeaconPacket(String callsign, String tocall, String path, String overlay, String gpsData);
|
||||||
float decodeEncodedLatitude(String receivedPacket);
|
float decodeEncodedLatitude(String receivedPacket);
|
||||||
float decodeEncodedLongitude(String receivedPacket);
|
float decodeEncodedLongitude(String receivedPacket);
|
||||||
float decodeLatitude(String receivedPacket);
|
float decodeLatitude(String receivedPacket);
|
||||||
float decodeLongitude(String receivedPacket);
|
float decodeLongitude(String receivedPacket);
|
||||||
APRSPacket processReceivedPacket(String receivedPacket);
|
int decodeSpeed(String speed);
|
||||||
|
int decodeAltitude(String altitude);
|
||||||
|
APRSPacket processReceivedPacket(String receivedPacket);
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -34,7 +34,7 @@ TinyGPSPlus gps;
|
||||||
BluetoothSerial SerialBT;
|
BluetoothSerial SerialBT;
|
||||||
OneButton userButton = OneButton(BUTTON_PIN, true, true);
|
OneButton userButton = OneButton(BUTTON_PIN, true, true);
|
||||||
|
|
||||||
String versionDate = "2023.11.16";
|
String versionDate = "2023.11.18";
|
||||||
|
|
||||||
int myBeaconsIndex = 0;
|
int myBeaconsIndex = 0;
|
||||||
int myBeaconsSize = Config.beacons.size();
|
int myBeaconsSize = Config.beacons.size();
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue