mirror of
https://github.com/g4klx/DMRGateway
synced 2025-12-20 13:15:37 +08:00
@@ -1466,6 +1466,8 @@ void CDMRGateway::extractGPSData(const CDMRData& data)
|
||||
// ETSI TS 102 361-4 V1.7.1 P263
|
||||
// Have we a GPS fix? Check bit 4 of first octet
|
||||
if ((payload[0U] & 0x10U) >> 4) {
|
||||
LogDebug("Received GPS position from %s with Fix", src.c_str());
|
||||
|
||||
if ((payload[0U] & 0x40U) >> 6)
|
||||
latSign = 1;
|
||||
else
|
||||
@@ -1476,19 +1478,23 @@ void CDMRGateway::extractGPSData(const CDMRData& data)
|
||||
else
|
||||
longSign = -1;
|
||||
|
||||
uint8_t speed = ((payload[0] & 0x0F) << 3) + ((payload[1U] & 0xD0) >>5);
|
||||
LogDebug("Raw Speed is %d", speed);
|
||||
uint8_t latDeg = ((payload[1U] & 0x1F) << 2) + ((payload[2U] & 0xC0) >> 6);
|
||||
uint8_t latMin = payload[2U] & 0x3F;
|
||||
float latSec = (payload[3U] << 6) + (payload[4U] & 0xFC);
|
||||
uint16_t latSec = (payload[3U] << 6) + (payload[4U] & 0xFC);
|
||||
uint8_t lonDeg = ((payload[4U] & 0x03) << 6) + ((payload[5U] & 0xFC) >> 2);
|
||||
uint8_t lonMin = ((payload[5U] & 0x03) << 4) + ((payload[6U] & 0xF0) >> 4);
|
||||
float lonSec = ((payload[6U] & 0x0F) << 10) + (payload[7U] << 2) + ((payload[8U] & 0xC0) >> 6);
|
||||
int altitude = (((payload[8U] & 0x3F) << 8) + payload[9U]);
|
||||
uint16_t lonSec = ((payload[6U] & 0x0F) << 10) + (payload[7U] << 2) + ((payload[8U] & 0xC0) >> 6);
|
||||
uint16_t altitude = (((payload[8U] & 0x3F) << 8) + payload[9U]);
|
||||
|
||||
float latitude = latDeg + (latMin + latSec / 10000) / 60;
|
||||
float longitude = lonDeg + (lonMin + lonSec / 10000) / 60;
|
||||
LogDebug("Sending GPS position from %u", srcId);
|
||||
float latitude = (float)latDeg + (float)(latMin + (float)latSec / 10000) / 60;
|
||||
float longitude = (float)lonDeg + (float)(lonMin + (float)lonSec / 10000) / 60;
|
||||
|
||||
m_aprsHelper->send(src.c_str(), latitude * latSign, longitude * longSign, altitude);
|
||||
}
|
||||
else
|
||||
LogDebug("Recieved GPS position from %s with NoFix", src.c_str());
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
2945
DMRIds.dat
2945
DMRIds.dat
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user