Handle GPS rollover (fix #414)
Этот коммит содержится в:
@@ -37,7 +37,7 @@ data class Position(
|
||||
|
||||
constructor(deviceId: String, location: Location, battery: BatteryStatus) : this(
|
||||
deviceId = deviceId,
|
||||
time = Date(location.time),
|
||||
time = Date(location.time.correctRollover()),
|
||||
latitude = location.latitude,
|
||||
longitude = location.longitude,
|
||||
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() {
|
||||
val position = Position("123456789012345", Location("gps"), BatteryStatus())
|
||||
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
|
||||
fun testFormatPathPortRequest() {
|
||||
val position = Position("123456789012345", Location("gps"), BatteryStatus())
|
||||
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
|
||||
fun testFormatAlarmRequest() {
|
||||
val position = Position("123456789012345", Location("gps"), BatteryStatus())
|
||||
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