androidbikekit
裝置資訊

裝置資訊

監聽

FarmlandBikeKit
    .sleipnir()
    .deviceInfoPublisher
	.map { it as AppleDeviceInfo }
	.subscribe(
		{ deviceInfo: DeviceInfo ->
			println(deviceInfo.currentAssistLv)
		},
		{
			// Observable Error
		}
	)

結構

/**
 * Apple Device Info
 *
 * ### 儀表
 * @param currentAssistLv 當前助力段數
 * @param systemPowerControl 系統電源控制狀態
 * @param walkAssistControl 助推控制狀態
 * @param lightControl 車燈控制狀態
 * @param supportAssistLv 系統支援的最大助力段數
 * @param powerKeyStatus 電源鍵狀態
 * @param upKeyStatus 上鍵狀態
 * @param downKeyStatus 下鍵狀態
 * @param walkKeyStatus 助推鍵狀態
 * @param lightKeyStatus 燈控制鍵狀態
 * @param tripOdo 旅行里程
 * @param tripTimeSec 旅行時間
 * @param tripAvgSpeed 旅行平均時速
 * @param tripMaxSpeed 旅行最大時速
 * @param tripAvgCurrent 旅行平均電流
 * @param tripMaxCurrent 旅行最大電流
 * @param tripAvgPedalSpeed 旅行平均踏板速度
 * @param tripMaxPedalSpeed 旅行最大踏板速度
 * @param tripAvgPedalTorque 旅行平均踏板扭矩
 * @param tripMaxPedalTorque 旅行最大踏板扭矩
 * @param hmiWarningList HMI 當前發送警告碼清單
 * @param hmiWarningLength HMI 當前發送警告碼清單長度
 * @param hmiErrorList HMI 當前發送錯誤碼清單
 * @param hmiErrorLength HMI 當前發送錯誤碼清單長度
 * @param key1Count HMI KEY NUMBER 1 累積按壓計數次數
 * @param key2Count HMI KEY NUMBER 2 累積按壓計數次數
 * @param key3Count HMI KEY NUMBER 3 累積按壓計數次數
 * @param key4Count HMI KEY NUMBER 4 累積按壓計數次數
 * @param key5Count HMI KEY NUMBER 5 累積按壓計數次數
 * @param key6Count HMI KEY NUMBER 6 累積按壓計數次數
 * @param key7Count HMI KEY NUMBER 7 累積按壓計數次數
 * @param key8Count HMI KEY NUMBER 8 累積按壓計數次數
 *
 * ### 控制器
 * @param bikeSpeed 當前車速
 * @param motorSpeed 電機轉速
 * @param wheelSpeed 輪轉速
 * @param limitSpeed 限速
 * @param busVoltage 控制器偵測電壓
 * @param avgBusCurrent 控制器偵測電流
 * @param lightCurrent 燈電流
 * @param avgOutputAmplitude 控制器平均輸出百分比
 * @param controllerTemperature 控制器溫度
 * @param throttleAmplitude 油門輸出百分比
 * @param pedalCadence 踏板轉速
 * @param pedalTorque 踏板扭矩
 * @param pedalPower 踏板輸入功率
 * @param totalOdo 系統累積總里程
 * @param rangeOdo 可行駛剩餘里程
 * @param assistLevel 助力等級
 * @param assistType 助力類型
 * @param assistOn 當前助力啟動狀態
 * @param frontLightOn 當前前燈輸出狀態
 * @param rearLightOn 當前尾燈輸出狀態
 * @param brakeLightOn 當车子燈輸出狀態
 * @param activateLightCtrl 是否可控燈
 * @param brakeOn 當前煞車感測觸發狀態
 * @param cadenceDirection 當前踏板旋轉方向狀態
 * @param motorDirection 當前馬達旋轉方向狀態
 * @param controllerWarningList 控制器當前發送警告碼清單
 * @param controllerWarningLength 控制器當前發送警告碼清單長度
 * @param controllerErrorList 控制器當前發送錯誤碼清單
 * @param controllerErrorLength 控制器當前發送錯誤碼清單長度
 * @param zeroTorqueVolt 無扭矩電壓值
 * @param currentTorqueVolt 當前扭矩電壓值
 * @param zeroThrottleVolt 無油門電壓值
 * @param currentThrottleVolt 當前油門電壓值
 * @param actualBusCurrent 即時主線電流
 * @param uPhaseCurrent 馬達 U 相電流
 * @param vPhaseCurrent 馬達 V 相電流
 * @param wPhaseCurrent 馬達 W 相電流
 * @param wheelRotateLaps 輪轉動累積圈數
 * @param outputAmplitude 控制器輸出百分比
 * @param hallState 馬達 HALL 狀態
 * @param sectorState 預估角度扇區狀態
 *
 * ### 主電池
 * @param mainBattChargeFet 當前充電 MOSFET 啟動狀態
 * @param mainBattCharging 當前是否為充電中
 * @param mainBattFullyCharged 是否已接近滿充電
 * @param mainBattChargeDetected 是否偵測到充電器接入
 * @param mainBattDischargeFet 放電 MOSFET 狀態
 * @param mainBattDischarging 當前是否為放電中
 * @param mainBattNearlyDischarged 電量為低點
 * @param mainBattFullyDischarged 電量為空
 * @param mainBattDesignVolt 電池設計電壓值
 * @param mainBattDesignCapacity 電池設計容量值
 * @param mainBattCycleCount 電池累積循環沖放次數
 * @param mainBattUnchargedDay 電池累積未充電天數
 * @param mainBattActualVolt 電池當前電壓值
 * @param mainBattActualCurrent 電池當前電流值
 * @param mainBattTemperature 電池當前溫度值
 * @param mainBattRsoc 電池當前相對容量
 * @param mainBattAsoc 電池當前實際容量
 * @param mainBattRsoh 電池當前相對健康度
 * @param mainBattAsoh 電池當前實際健康度
 * @param mainBattSysUnixTime 系統當前UNIX時間
 * @param mainBattWarningList 電池當前發送警告碼清單
 * @param mainBattWarningLength 電池當前發送警告碼清單長度
 * @param mainBattErrorList 電池當前發送錯誤碼清單
 * @param mainBattErrorLength 電池當前發送錯誤碼清單長度
 * @param mainBattCellVolt 每節電芯電壓值
 * @param mainBattTemperature 每顆電池溫度感測器溫度值
 *
 * @param eLockStates E-Lock 狀態
 * @param highBeamLightOn 高 beam 輸出狀態
 * @param lowBeamLightOn 低 beam 輸出狀態
 * @param turnLeftLightOn 左轉 beam 輸出狀態
 * @param turnRightLightOn 右轉 beam 輸出狀態
 * @param brakeKeyStatus 煞車鍵狀態
 * @param hmiThrottleAmplitude HMI 油門輸出百分比
 * @param cruiseCtrl 是否為 cruise 控制
 * @param ACCOn 是否為 ACC 控制
 * @param antiTheftCtrl 是否為 anti-theft 控制
 * @param reverseCtrlOn 是否為 reverse 控制
 * @param parkingOn 是否為 parking 控制
 *
 * @param tuningHallSensorState tuning Hall 狀態
 * @param tuningHallSensorAngle tuning Hall 角度
 * @param tuningHallSensorSeqState tuning Hall 序列狀態
 * @param tuningHallSensorSeqResult tuning Hall 序列結果
 *
 * ### 副電池 1
 * @param subBatt1ChargeFet 當前充電 MOSFET 啟動狀態
 * @param subBatt1Charging 當前是否為充電中
 * @param subBatt1FullyCharged 是否已接近滿充電
 * @param subBatt1ChargeDetected 是否偵測到充電器接入
 * @param subBatt1DischargeFet 放電 MOSFET 狀態
 * @param subBatt1Discharging 當前是否為放電中
 * @param subBatt1NearlyDischarged 電量為低點
 * @param subBatt1FullyDischarged 電量為空
 * @param subBatt1DesignVolt 電池設計電壓值
 * @param subBatt1DesignCapacity 電池設計容量值
 * @param subBatt1CycleCount 電池累積循環沖放次數
 * @param subBatt1UnchargedDay 電池累積未充電天數
 * @param subBatt1ActualVolt 電池當前電壓值
 * @param subBatt1ActualCurrent 電池當前電流值
 * @param subBatt1Temperature 電池當前溫度值
 * @param subBatt1Rsoc 電池當前相對容量
 * @param subBatt1Asoc 電池當前實際容量
 * @param subBatt1Rsoh 電池當前相對健康度
 * @param subBatt1Asoh 電池當前實際健康度
 * @param subBatt1SysUnixTime 系統當前UNIX時間
 * @param subBatt1WarningList 電池當前發送警告碼清單
 * @param subBatt1WarningLength 電池當前發送警告碼清單長度
 * @param subBatt1ErrorList 電池當前發送錯誤碼清單
 * @param subBatt1ErrorLength 電池當前發送錯誤碼清單長度
 * @param subBatt1CellVolt 每節電芯電壓值
 * @param subBatt1Temperature 每顆電池溫度感測器溫度值
 */
data class AppleDeviceInfo(
    /* HMI */
    val currentAssistLv: Int,
    val systemPowerControl: Boolean,
    val walkAssistControl: Boolean,
    val lightControl: Boolean,
    val supportAssistLv: Int,
    val powerKeyStatus: Boolean,
    val upKeyStatus: Boolean,
    val downKeyStatus: Boolean,
    val walkKeyStatus: Boolean,
    val lightKeyStatus: Boolean,
    val tripOdo: Float,
    val tripTimeSec: Int,
    val tripAvgSpeed: Float,
    val tripMaxSpeed: Float,
    val tripAvgCurrent: Int,
    val tripMaxCurrent: Int,
    val tripAvgPedalSpeed: Int,
    val tripMaxPedalSpeed: Int,
    val tripAvgPedalTorque: Int,
    val tripMaxPedalTorque: Int,
    val hmiWarningList: IntArray,
    val hmiWarningLength: Int,
    val hmiErrorList: IntArray,
    val hmiErrorLength: Int,
    val key1Count: Int,
    val key2Count: Int,
    val key3Count: Int,
    val key4Count: Int,
    val key5Count: Int,
    val key6Count: Int,
    val key7Count: Int,
    val key8Count: Int,
    val screenLockErrorCount: Int,
    val screenLockState: ScreenLockState,
 
    /* Controller */
    val bikeSpeed: Float,
    val motorSpeed: Int,
    val wheelSpeed: Int,
    val limitSpeed: Float,
    val busVoltage: Float,
    val avgBusCurrent: Float,
    val lightCurrent: Float,
    val avgOutputAmplitude: Int,
    val controllerTemperature: Int,
    val throttleAmplitude: Int,
    val pedalCadence: Int,
    val pedalTorque: Float,
    val pedalPower: Float,
    val totalOdo: Float,
    val rangeOdo: Float,
    val assistLevel: Int,
    val assistType: Int,
    val assistOn: Boolean,
    val frontLightOn: Boolean,
    val rearLightOn: Boolean,
    val brakeLightOn: Boolean,
    val activateLightCtrl: Boolean,
    val brakeOn: Boolean,
    val cadenceDirection: Boolean,
    val motorDirection: Boolean,
    val controllerWarningList: IntArray,
    val controllerWarningLength: Int,
    val controllerErrorList: IntArray,
    val controllerErrorLength: Int,
    val zeroTorqueVolt: Int,
    val currentTorqueVolt: Int,
    val zeroThrottleVolt: Int,
    val currentThrottleVolt: Int,
    val actualBusCurrent: Float,
    val uPhaseCurrent: Float,
    val vPhaseCurrent: Float,
    val wPhaseCurrent: Float,
    val wheelRotateLaps: Int,
    val outputAmplitude: Int,
    val hallState: Byte,
    val sectorState: Byte,
 
    /* Main Battery */
    val mainBattChargeFet: Boolean,
    val mainBattCharging: Boolean,
    val mainBattFullyCharged: Boolean,
    val mainBattChargeDetected: Boolean,
    val mainBattDischargeFet: Boolean,
    val mainBattDischarging: Boolean,
    val mainBattNearlyDischarged: Boolean,
    val mainBattFullyDischarged: Boolean,
    val mainBattDesignVolt: Int,
    val mainBattDesignCapacity: Float,
    val mainBattCycleCount: Int,
    val mainBattUnchargedDay: Int,
    val mainBattActualVolt: Int,
    val mainBattActualCurrent: Int,
    val mainBattTemperature: Byte,
    val mainBattRsoc: Int,
    val mainBattAsoc: Int,
    val mainBattRsoh: Int,
    val mainBattAsoh: Int,
    val mainBattSysUnixTime: Long,
    val mainBattWarningList: IntArray,
    val mainBattWarningLength: Int,
    val mainBattErrorList: IntArray,
    val mainBattErrorLength: Int,
    val mainBattCell1Volt: Int,
    val mainBattCell2Volt: Int,
    val mainBattCell3Volt: Int,
    val mainBattCell4Volt: Int,
    val mainBattCell5Volt: Int,
    val mainBattCell6Volt: Int,
    val mainBattCell7Volt: Int,
    val mainBattCell8Volt: Int,
    val mainBattCell9Volt: Int,
    val mainBattCell10Volt: Int,
    val mainBattCell11Volt: Int,
    val mainBattCell12Volt: Int,
    val mainBattCell13Volt: Int,
    val mainBattCell14Volt: Int,
    val mainBattCell15Volt: Int,
    val mainBattCell16Volt: Int,
    val mainBattCell17Volt: Int,
    val mainBattCell18Volt: Int,
    val mainBattCell19Volt: Int,
    val mainBattCell20Volt: Int,
    val mainBattTemperature1: Int,
    val mainBattTemperature2: Int,
    val mainBattTemperature3: Int,
    val mainBattTemperature4: Int,
    val mainBattTemperature5: Int,
    val mainBattTemperature6: Int,
    val mainBattTemperature7: Int,
    val mainBattTemperature8: Int,
 
    val eLockStates: ELockState,
    val highBeamLightOn: Boolean,
    val lowBeamLightOn: Boolean,
    val turnLeftLightOn: Boolean,
    val turnRightLightOn: Boolean,
    val brakeKeyStatus: Boolean,
    val hmiThrottleAmplitude: Int,
    val cruiseCtrl: Boolean,
    val ACCOn: Boolean,
    val antiTheftCtrl: Boolean,
    val reverseCtrlOn: Boolean,
    val parkingOn: Boolean,
 
    val tuningHallSensorState: Byte,
    val tuningHallSensorAngle: Byte,
    val tuningHallSensorSeqState: Byte,
    val tuningHallSensorSeqResult: Byte,
 
    /* Sub Battery 1 */
    val subBatt1ChargeFet: Boolean,
    val subBatt1Charging: Boolean,
    val subBatt1FullyCharged: Boolean,
    val subBatt1ChargeDetected: Boolean,
    val subBatt1DischargeFet: Boolean,
    val subBatt1Discharging: Boolean,
    val subBatt1NearlyDischarged: Boolean,
    val subBatt1FullyDischarged: Boolean,
    val subBatt1DesignVolt: Int,
    val subBatt1DesignCapacity: Float,
    val subBatt1CycleCount: Int,
    val subBatt1UnchargedDay: Int,
    val subBatt1ActualVolt: Int,
    val subBatt1ActualCurrent: Int,
    val subBatt1Temperature: Byte,
    val subBatt1Rsoc: Int,
    val subBatt1Asoc: Int,
    val subBatt1Rsoh: Int,
    val subBatt1Asoh: Int,
    val subBatt1SysUnixTime: Long,
    val subBatt1WarningList: IntArray,
    val subBatt1WarningLength: Int,
    val subBatt1ErrorList: IntArray,
    val subBatt1ErrorLength: Int,
    val subBatt1Cell1Volt: Int,
    val subBatt1Cell2Volt: Int,
    val subBatt1Cell3Volt: Int,
    val subBatt1Cell4Volt: Int,
    val subBatt1Cell5Volt: Int,
    val subBatt1Cell6Volt: Int,
    val subBatt1Cell7Volt: Int,
    val subBatt1Cell8Volt: Int,
    val subBatt1Cell9Volt: Int,
    val subBatt1Cell10Volt: Int,
    val subBatt1Cell11Volt: Int,
    val subBatt1Cell12Volt: Int,
    val subBatt1Cell13Volt: Int,
    val subBatt1Cell14Volt: Int,
    val subBatt1Cell15Volt: Int,
    val subBatt1Cell16Volt: Int,
    val subBatt1Cell17Volt: Int,
    val subBatt1Cell18Volt: Int,
    val subBatt1Cell19Volt: Int,
    val subBatt1Cell20Volt: Int,
    val subBatt1Temperature1: Int,
    val subBatt1Temperature2: Int,
    val subBatt1Temperature3: Int,
    val subBatt1Temperature4: Int,
    val subBatt1Temperature5: Int,
    val subBatt1Temperature6: Int,
    val subBatt1Temperature7: Int,
    val subBatt1Temperature8: Int
): DeviceInfo