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) }