1
0
Fork 0
keylight-emulator/src/main/kotlin/fi/schro/data/AccessoryInfoRepository.kt

49 lines
1.6 KiB
Kotlin

package fi.schro.data
import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
interface AccessoryInfoRepository {
suspend fun getAccessoryInfo(): AccessoryInfo
suspend fun updateAccessoryInfo(infoChange: AccessoryInfo): AccessoryInfo
}
class AccessoryInfoRepositoryImpl: AccessoryInfoRepository {
private var accessoryInfo = AccessoryInfo(
productName = "Elgato Key Light",
hardwareBoardType = 53,
firmwareBuildNumber = 192,
firmwareVersion = "1.0.3",
serialNumber = "XXXXXXXXXXXX",
displayName = "Emulated Key Light",
features = listOf(AccessoryFeature.LIGHTS)
)
override suspend fun getAccessoryInfo(): AccessoryInfo {
return accessoryInfo
}
override suspend fun updateAccessoryInfo(infoChange: AccessoryInfo): AccessoryInfo {
//only display name can be changed
accessoryInfo = accessoryInfo.copy(
displayName = infoChange.displayName ?: accessoryInfo.displayName
)
return getAccessoryInfo()
}
}
@Serializable
data class AccessoryInfo(
@SerialName("productName") val productName: String? = null,
@SerialName("hardwareBoardType") val hardwareBoardType: Int? = null,
@SerialName("firmwareBuildNumber") val firmwareBuildNumber: Int? = null,
@SerialName("firmwareVersion") val firmwareVersion: String? = null,
@SerialName("serialNumber") val serialNumber: String? = null,
@SerialName("displayName") val displayName: String? = null,
@SerialName("features") val features: List<AccessoryFeature>? = null,
)
@Serializable
enum class AccessoryFeature {
@SerialName("lights") LIGHTS
}