裝置資訊
監聽
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