49 lines
1.6 KiB
Kotlin
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
|
|
} |