summaryrefslogtreecommitdiff
path: root/test-runner/src/main/kotlin/org/terst/nav/ais/CpaAlert.kt
blob: 1d635c019c7e8d63c0aca7c88e92d8dc6957d42a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
package org.terst.nav.ais

enum class CpaSeverity { CAUTION, WARNING, DANGER }

data class CpaAlert(
    val mmsi: Int,
    val vesselName: String,
    val cpaNm: Double,
    val tcpaMin: Double,
    val severity: CpaSeverity
)

object CpaThresholds {
    const val DANGER_CPA_NM   = 0.5
    const val WARNING_CPA_NM  = 1.0
    const val CAUTION_CPA_NM  = 2.0
    const val MAX_TCPA_MIN    = 30.0   // ignore contacts closing in > 30 min
}

fun CpaAlert.label(): String {
    val name = if (vesselName.isNotBlank()) vesselName else "MMSI $mmsi"
    return "%-12s  CPA %.1fnm  T+%.0fmin".format(name.take(12), cpaNm, tcpaMin)
}