mirror of
https://github.com/atsunatsu/Look4Sat.git
synced 2026-10-04 19:47:22 +00:00
feat(lotw): PBES2 .p12 parsing, station region fields, upload error codes
This commit is contained in:
1 parent
5957f30af2
commit
3be2e4b9e8
8 files changed
+504
-23
No files matched your search
+24
-2
@@ -9,6 +9,8 @@ interface ILoTWUploadRepository {
|
||||
suspend fun saveCertificatePassword(password: CharArray): LoTWCertificate
|
||||
suspend fun saveStation(station: LoTWStation): LoTWStation
|
||||
suspend fun removeCertificate()
|
||||
/** Region field (State/Province/Prefecture…) and national CQZ/ITUZ map for a DXCC entity. */
|
||||
suspend fun stationMeta(dxcc: Int): LoTWStationMeta
|
||||
suspend fun audit(records: List<QsoRecord>): LoTWUploadAudit
|
||||
suspend fun prepare(records: List<QsoRecord>, resubmit: Boolean): LoTWUploadPreview
|
||||
suspend fun upload(previewId: String): LoTWUploadResult
|
||||
@@ -35,6 +37,25 @@ data class LoTWStation(
|
||||
val iota: String = ""
|
||||
)
|
||||
|
||||
/** One (ITU:CQ) pair from a LoTW zonemap, e.g. Guangdong is 44:24. */
|
||||
data class LoTWZonePair(val itu: Int, val cq: Int)
|
||||
|
||||
/** One selectable region code with the zones it maps to (cross-zone regions carry several pairs). */
|
||||
data class LoTWRegionOption(val code: String, val name: String, val zones: List<LoTWZonePair>)
|
||||
|
||||
/** Country-dependent region field (US_STATE, CN_PROVINCE, …) with its selectable options. */
|
||||
data class LoTWRegionField(val id: String, val label: String, val options: List<LoTWRegionOption>)
|
||||
|
||||
/**
|
||||
* Everything the station-location UI needs for one DXCC entity:
|
||||
* the region field to show (null when the country has none) and the national
|
||||
* zonemap (used to prefill CQZ/ITUZ when the country has a single zone pair).
|
||||
*/
|
||||
data class LoTWStationMeta(
|
||||
val regionField: LoTWRegionField? = null,
|
||||
val countryZones: List<LoTWZonePair> = emptyList()
|
||||
)
|
||||
|
||||
data class LoTWUploadPreview(
|
||||
val id: String,
|
||||
val callsign: String,
|
||||
@@ -69,6 +90,7 @@ class LoTWOperationException(val reason: LoTWProblem, val detail: String = "") :
|
||||
|
||||
enum class LoTWProblem {
|
||||
CERTIFICATE_PASSWORD, CERTIFICATE_INVALID, CERTIFICATE_EXPIRED, CERTIFICATE_MISSING,
|
||||
STORAGE, EMPTY_SELECTION, CALLSIGN_MISMATCH, QSO_DATE, STATION_GRID, STATION_REGION,
|
||||
STATION_ZONE, STATION_IOTA, MODE, BAND, SATELLITE, INVALID_CONTACT, LOCATION_MISMATCH, TOO_MANY_CONTACTS
|
||||
CERTIFICATE_FORMAT, STORAGE, EMPTY_SELECTION, CALLSIGN_MISMATCH, QSO_DATE, STATION_GRID,
|
||||
STATION_REGION, STATION_ZONE, STATION_IOTA, MODE, BAND, SATELLITE, INVALID_CONTACT,
|
||||
LOCATION_MISMATCH, TOO_MANY_CONTACTS
|
||||
}
|
||||
Reference in new issue
Block a user