元資料
結構
// 元資料。
data class AppleMetaParameter(
var hmiMeta: AppleHMIMeta = AppleHMIMeta(),
var controllerMeta: AppleControllerMeta = AppleControllerMeta(),
var batteryMeta: AppleBatteryMeta = AppleBatteryMeta(),
var subBattery1Meta: AppleSubBattery1Meta = AppleSubBattery1Meta(),
var enabledPart: EDeviceEnabledPart = EDeviceEnabledPart()
): MetaParameter
data class AppleHMIMeta(
var smid: String? = null,
var dmid: String? = null,
var ssn: String? = null,
var dsn: String? = null,
var frameNumber: String? = null,
var saleDate: String? = null,
var fwAppVersion: String? = null,
var fwBootloaderVersion: String? = null,
var fwSdkVersion: String? = null,
var hwVersion: String? = null,
var parameterVersion: String? = null,
var protocolVersion: String? = null,
var bluetoothDeviceName: String? = null,
var manufactureDate: String? = null,
var productCoreSDKVersion: String? = null,
var dfu: Boolean? = null,
var dispUnitSw: DeviceDispUnitType? = null,
)
data class AppleControllerMeta(
var smid: String? = null,
var dmid: String? = null,
var ssn: String? = null,
var dsn: String? = null,
var frameNumber: String? = null,
var saleDate: String? = null,
var fwAppVersion: String? = null,
var fwBootloaderVersion: String? = null,
var fwSdkVersion: String? = null,
var hwVersion: String? = null,
var parameterVersion: String? = null,
var protocolVersion: String? = null,
var bluetoothDeviceName: String? = null,
var manufactureDate: String? = null,
var productCoreSDKVersion: String? = null,
var dfu: Boolean? = null,
)
data class AppleBatteryMeta(
var smid: String? = null,
var dmid: String? = null,
var ssn: String? = null,
var dsn: String? = null,
var frameNumber: String? = null,
var saleDate: String? = null,
var fwAppVersion: String? = null,
var fwBootloaderVersion: String? = null,
var fwSdkVersion: String? = null,
var hwVersion: String? = null,
var parameterVersion: String? = null,
var protocolVersion: String? = null,
var bluetoothDeviceName: String? = null,
var manufactureDate: String? = null,
var productCoreSDKVersion: String? = null,
var dfu: Boolean? = null,
)
data class AppleSubBattery1Meta(
var smid: String? = null,
var dmid: String? = null,
var ssn: String? = null,
var dsn: String? = null,
var frameNumber: String? = null,
var saleDate: String? = null,
var fwAppVersion: String? = null,
var fwBootloaderVersion: String? = null,
var fwSdkVersion: String? = null,
var hwVersion: String? = null,
var parameterVersion: String? = null,
var protocolVersion: String? = null,
var bluetoothDeviceName: String? = null,
var manufactureDate: String? = null,
var productCoreSDKVersion: String? = null,
var dfu: Boolean? = null,
)
// 支援的部件。
data class EDeviceEnabledPart(
var hmi: Boolean = false,
var controller: Boolean = false,
var bms: Boolean = false,
var display: Boolean = false,
var motor: Boolean = false,
var cadenceSensor: Boolean = false,
var torqueSensor: Boolean = false,
var charger: Boolean = false,
var frontLight: Boolean = false,
var rearLight: Boolean = false,
var throttle: Boolean = false,
var eBrake: Boolean = false,
var eLock: Boolean = false,
var frontDerailleur: Boolean = false,
var rearDerailleur: Boolean = false,
var iot: Boolean = false,
var undefined: Boolean = false
)
/**
* 里程單位種類
* @property Kilometer 公制
* @property Mile 英制
*/
enum class DeviceDispUnitType(val type: Int) {
Kilometer(0),
Mile(1)
}取值
FarmlandBikeKit.sleipnir().deviceMetaBehavior.value as AppleMetaParameter監聽
FarmlandBikeKit
.sleipnir()
.deviceMetaBehavior
.map { it as AppleMetaParameter }
.subscribe(
{
println("${it.hmiMeta.dmid}")
},
{
println("獲取 Meta 資料失敗")
}
)讀取系統最新 Meta
val command = AppleFetchBikeMetaCommand()
val dispose = command
.currentStepSubject
.subscribe(
{ state ->
when (state) {
is AppleFetchBikeMetaCommand.Step.Done -> {
// 讀取成功
}
is AppleFetchBikeMetaCommand.Step.DoneWithException -> {
// 讀取 Meta 時斷線
}
}
},
{
println("讀取 Meta 失敗")
}
)
val invoker = Invoker()
invoker.setCommand(command)
invoker.action()