Handle GPS rollover (fix #414)
Этот коммит содержится в:
@@ -37,7 +37,7 @@ data class Position(
|
|||||||
|
|
||||||
constructor(deviceId: String, location: Location, battery: BatteryStatus) : this(
|
constructor(deviceId: String, location: Location, battery: BatteryStatus) : this(
|
||||||
deviceId = deviceId,
|
deviceId = deviceId,
|
||||||
time = Date(location.time),
|
time = Date(location.time.correctRollover()),
|
||||||
latitude = location.latitude,
|
latitude = location.latitude,
|
||||||
longitude = location.longitude,
|
longitude = location.longitude,
|
||||||
altitude = location.altitude,
|
altitude = location.altitude,
|
||||||
@@ -60,3 +60,10 @@ data class Position(
|
|||||||
},
|
},
|
||||||
)
|
)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
private const val rolloverDate = 1554508800000L // April 6, 2019
|
||||||
|
private const val rolloverOffset = 619315200000L // 1024 weeks
|
||||||
|
|
||||||
|
private fun Long.correctRollover(): Long {
|
||||||
|
return if (this < rolloverDate) this + rolloverOffset else this
|
||||||
|
}
|
||||||
|
|||||||
@@ -17,21 +17,21 @@ class ProtocolFormatterTest {
|
|||||||
fun testFormatRequest() {
|
fun testFormatRequest() {
|
||||||
val position = Position("123456789012345", Location("gps"), BatteryStatus())
|
val position = Position("123456789012345", Location("gps"), BatteryStatus())
|
||||||
val url = formatRequest("http://localhost:5055", position)
|
val url = formatRequest("http://localhost:5055", position)
|
||||||
Assert.assertEquals("http://localhost:5055?id=123456789012345×tamp=0&lat=0.0&lon=0.0&speed=0.0&bearing=0.0&altitude=0.0&accuracy=0.0&batt=0.0", url)
|
Assert.assertEquals("http://localhost:5055?id=123456789012345×tamp=619315200&lat=0.0&lon=0.0&speed=0.0&bearing=0.0&altitude=0.0&accuracy=0.0&batt=0.0", url)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testFormatPathPortRequest() {
|
fun testFormatPathPortRequest() {
|
||||||
val position = Position("123456789012345", Location("gps"), BatteryStatus())
|
val position = Position("123456789012345", Location("gps"), BatteryStatus())
|
||||||
val url = formatRequest("http://localhost:8888/path", position)
|
val url = formatRequest("http://localhost:8888/path", position)
|
||||||
Assert.assertEquals("http://localhost:8888/path?id=123456789012345×tamp=0&lat=0.0&lon=0.0&speed=0.0&bearing=0.0&altitude=0.0&accuracy=0.0&batt=0.0", url)
|
Assert.assertEquals("http://localhost:8888/path?id=123456789012345×tamp=619315200&lat=0.0&lon=0.0&speed=0.0&bearing=0.0&altitude=0.0&accuracy=0.0&batt=0.0", url)
|
||||||
}
|
}
|
||||||
|
|
||||||
@Test
|
@Test
|
||||||
fun testFormatAlarmRequest() {
|
fun testFormatAlarmRequest() {
|
||||||
val position = Position("123456789012345", Location("gps"), BatteryStatus())
|
val position = Position("123456789012345", Location("gps"), BatteryStatus())
|
||||||
val url = formatRequest("http://localhost:5055/path", position, "alert message")
|
val url = formatRequest("http://localhost:5055/path", position, "alert message")
|
||||||
Assert.assertEquals("http://localhost:5055/path?id=123456789012345×tamp=0&lat=0.0&lon=0.0&speed=0.0&bearing=0.0&altitude=0.0&accuracy=0.0&batt=0.0&alarm=alert%20message", url)
|
Assert.assertEquals("http://localhost:5055/path?id=123456789012345×tamp=619315200&lat=0.0&lon=0.0&speed=0.0&bearing=0.0&altitude=0.0&accuracy=0.0&batt=0.0&alarm=alert%20message", url)
|
||||||
}
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|||||||
Ссылка в новой задаче
Block a user