# 77 个 MCU 接口完整性证明

**生成时间**: 2026-05-11

**验证方法**: 将 `test_Serial/all_interfaces.json`（协议源 of truth）中的 77 个接口，
逐一与 AIDL 契约文件中的方法签名进行字符串匹配。

**AIDL 源文件**: 
- `contract/src/main/aidl/com/qsjnic/mcu/contract/IMcuService.aidl`
- `contract/src/main/aidl/com/qsjnic/mcu/contract/IMcuVehicleListener.aidl`
- `contract/src/main/aidl/com/qsjnic/mcu/contract/IMcuRadioListener.aidl`
- `contract/src/main/aidl/com/qsjnic/mcu/contract/IMcuUpgradeListener.aidl`

---

| 域 | 方向 | Cmd | 协议名称 | AIDL 接口 | AIDL 方法 | 状态 |
|---|---|---|---|---|---|---|
| Public | A2M | 0x81 | PUBLIC_A2M_REQ_INIT_INFO | `IMcuService` | `requestInitInfo` | PASS |
| Public | A2M | 0x82 | PUBLIC_A2M_REQ_MUTE | `IMcuService` | `setMute` | PASS |
| Public | A2M | 0x83 | PUBLIC_A2M_TIME_INFO | `IMcuService` | `setTimeInfo` | PASS |
| Public | A2M | 0x84 | PUBLIC_A2M_TFT_DUTY_CYCLE | `IMcuService` | `setBacklight` | PASS |
| Public | A2M | 0x85 | PUBLIC_A2M_REQ_SLEEP | `IMcuService` | `requestSleep` | PASS |
| Public | A2M | 0x86 | PUBLIC_A2M_REQ_TYPE_INFO | `IMcuService` | `requestTypeInfo` | PASS |
| Public | A2M | 0x87 | PUBLIC_A2M_REQ_ARM_RESET | `IMcuService` | `requestArmReset` | PASS |
| Public | A2M | 0x88 | PUBLIC_A2M_SET_TFT_ON_OFF | `IMcuService` | `setTftOnOff` | PASS |
| Public | A2M | 0x89 | PUBLIC_A2M_FACTORY_RESTORE | `IMcuService` | `factoryRestore` | PASS |
| Public | A2M | 0x8A | PUBLIC_A2M_SET_AMP_PWR_ON_OFF | `IMcuService` | `setAmpPower` | PASS |
| Public | A2M | 0x8B | PUBLIC_A2M_SET_KEY_BACKLIGHT_DUTY_CYCLE | `IMcuService` | `setKeyBacklightDutyCycle` | PASS |
| Public | A2M | 0x8C | PUBLIC_A2M_SET_SUB_MUTE_ON_OFF | `IMcuService` | `setSubMute` | PASS |
| Public | A2M | 0x8D | PUBLIC_A2M_KEY_PWR_STATUS | `IMcuService` | `setKeyPwrStatus` | PASS |
| Public | A2M | 0x8E | PUBLIC_A2M_SET_REVERSE | `IMcuService` | `setReverse` | PASS |
| Public | A2M | 0x8F | PUBLIC_A2M_SET_SPEED_RATIO | `IMcuService` | `setSpeedRatio` | PASS |
| Public | A2M | 0x90 | PUBLIC_A2M_REQ_ARM_FORCE_UPGRADE | `IMcuService` | `requestArmForceUpgrade` | PASS |
| Public | A2M | 0x91 | PUBLIC_A2M_REQ_TRIP_CLEAR | `IMcuService` | `requestTripClear` | PASS |
| Public | A2M | 0x92 | PUBLIC_A2M_SET_SWITCH_STATUS | `IMcuService` | `setSwitchStatus` | PASS |
| Public | A2M | 0x93 | PUBLIC_A2M_BT_ERROR_CODE | `IMcuService` | `setBtErrorCode` | PASS |
| Public | A2M | 0x94 | PUBLIC_A2M_GPS_INFO | `IMcuService` | `setGpsInfo` | PASS |
| Public | A2M | 0x95 | PUBLIC_A2M_SET_TOT_MILES | `IMcuService` | `setTotalMiles` | PASS |
| Public | A2M | 0x96 | PUBLIC_A2M_SET_FUEL_CAL | `IMcuService` | `setFuelCal` | PASS |
| Public | A2M | 0x97 | PUBLIC_A2M_SET_VEHICLE_CFG | `IMcuService` | `setVehicleCfg` | PASS |
| Public | A2M | 0x98 | PUBLIC_A2M_REQ_VEHICLE_CFG | `IMcuService` | `requestVehicleCfg` | PASS |
| Public | A2M | 0x99 | PUBLIC_A2M_ARM_SW_VERSION | `IMcuService` | `setArmSwVersion` | PASS |
| Public | A2M | 0x9A | PUBLIC_A2M_ARM_HW_VERSION | `IMcuService` | `setArmHwVersion` | PASS |
| Public | A2M | 0x9B | PUBLIC_A2M_AUTO_CLEAR_METER_TYPE | `IMcuService` | `setAutoClearMeterType` | PASS |
| Public | A2M | 0xA0 | PUBLIC_A2M_RESPONSE_FACTORY_CMD | `IMcuService` | `responseFactoryCmd` | PASS |
| Public | A2M | 0xA1 | PUBLIC_A2M_RESPONSE_TEST_CMD | `IMcuService` | `responseTestCmd` | PASS |
| Public | M2A | 0x01 | PUBLIC_M2A_LINE_DETECT | `IMcuVehicleListener` | `onLineDetectChanged` | PASS |
| Public | M2A | 0x02 | PUBLIC_M2A_MCU_VERSION | `IMcuVehicleListener` | `onMcuVersion` | PASS |
| Public | M2A | 0x03 | PUBLIC_M2A_TIME_INFO | `IMcuVehicleListener` | `onTimeChanged` | PASS |
| Public | M2A | 0x04 | PUBLIC_M2A_REQ_PWR_OFF | `IMcuVehicleListener` | `onReqPwrOff` | PASS |
| Public | M2A | 0x05 | PUBLIC_M2A_SYS_STATUS | `IMcuVehicleListener` | `onSysStatus` | PASS |
| Public | M2A | 0x06 | PUBLIC_M2A_KEY_PWR_STATUS | `IMcuVehicleListener` | `onKeyEvent` | PASS |
| Public | M2A | 0x07 | PUBLIC_M2A_BP_PWR_ABNORMAL | `IMcuVehicleListener` | `onBpAbnormal` | PASS |
| Public | M2A | 0x08 | PUBLIC_M2A_TFT_DUTY_CYCLE | `IMcuVehicleListener` | `onBacklightChanged` | PASS |
| Public | M2A | 0x09 | PUBLIC_M2A_BATT_INFO | `IMcuVehicleListener` | `onBattInfo` | PASS |
| Public | M2A | 0x0A | PUBLIC_M2A_CAR_SPEED | `IMcuVehicleListener` | `onCarSpeed` | PASS |
| Public | M2A | 0x0B | PUBLIC_M2A_MILEAGE | `IMcuVehicleListener` | `onMileage` | PASS |
| Public | M2A | 0x0C | PUBLIC_M2A_SWITCH_STATUS | `IMcuVehicleListener` | `onSwitchStatus` | PASS |
| Public | M2A | 0x0D | PUBLIC_M2A_VOLTAGE | `IMcuVehicleListener` | `onVoltage` | PASS |
| Public | M2A | 0x0E | PUBLIC_M2A_FUEL_CAL | `IMcuVehicleListener` | `onFuelCal` | PASS |
| Public | M2A | 0x0F | PUBLIC_M2A_ENCRYPT_STATUS | `IMcuVehicleListener` | `onEncryptStatus` | PASS |
| Public | M2A | 0x10 | PUBLIC_M2A_VEHICLE_CFG | `IMcuVehicleListener` | `onVehicleCfg` | PASS |
| Public | M2A | 0x11 | PUBLIC_M2A_INS_FUEL_CONSUME | `IMcuVehicleListener` | `onInsFuelConsume` | PASS |
| Public | M2A | 0x12 | PUBLIC_M2A_MCU_HARD_VERSION | `IMcuVehicleListener` | `onMcuHardVersion` | PASS |
| Public | M2A | 0x13 | PUBLIC_M2A_VERSION_STRING | `IMcuVehicleListener` | `onMcuVersion` | PASS |
| Public | M2A | 0x40 | PUBLIC_M2A_FACTORY_CMD | `IMcuVehicleListener` | `onFactoryCmd` | PASS |
| Public | M2A | 0x41 | PUBLIC_M2A_FACTORY_CMD_FROM_CAN | `IMcuVehicleListener` | `onFactoryCmdFromCan` | PASS |
| Public | M2A | 0x42 | PUBLIC_M2A_COM_TEST | `IMcuVehicleListener` | `onComTest` | PASS |
| Public | M2A | 0x43 | PUBLIC_M2A_TEST_INFO | `IMcuVehicleListener` | `onTestInfo` | PASS |
| Public | M2A | 0x9C | PUBLIC_M2A_COM_TEST_RESPONSE | `IMcuVehicleListener` | `onComTestResponse` | PASS |
| Public | M2A | 0x9D | PUBLIC_M2A_STOP_CHARGE | `IMcuVehicleListener` | `onStopCharge` | PASS |
| Public | M2A | 0x9E | PUBLIC_M2A_RUN_NORMALLY | `IMcuVehicleListener` | `onRunNormally` | PASS |
| Radio | A2M | 0x81 | RADIO_A2M_SEEK_MODE | `IMcuService` | `setSeek` | PASS |
| Radio | A2M | 0x82 | RADIO_A2M_SWITCH_ON_OFF | `IMcuService` | `setSwitch` | PASS |
| Radio | A2M | 0x83 | RADIO_A2M_SET_BAND | `IMcuService` | `setBand` | PASS |
| Radio | A2M | 0x84 | RADIO_A2M_SET_FREQ | `IMcuService` | `setFrequency` | PASS |
| Radio | A2M | 0x85 | RADIO_A2M_FREQ_RANGE | `IMcuService` | `setFreqRange` | PASS |
| Radio | A2M | 0x86 | RADIO_A2M_SET_ANT_PWR_ON_OFF | `IMcuService` | `setAntPower` | PASS |
| Radio | A2M | 0x87 | RADIO_A2M_SET_RADIO_REG_MUTE | `IMcuService` | `setRegMute` | PASS |
| Radio | M2A | 0x01 | RADIO_M2A_FREQ | `IMcuRadioListener` | `onFreqChanged` | PASS |
| Radio | M2A | 0x02 | RADIO_M2A_PS_PTY | `IMcuRadioListener` | `onPsPty` | PASS |
| Radio | M2A | 0x03 | RADIO_M2A_RT | `IMcuRadioListener` | `onRadioText` | PASS |
| Radio | M2A | 0x04 | RADIO_M2A_TA_PTY_TIPS | `IMcuRadioListener` | `onTaPtyTips` | PASS |
| Radio | M2A | 0x05 | RADIO_M2A_WORK_STATUS | `IMcuRadioListener` | `onWorkStatus` | PASS |
| Update | A2M | 0x80 | UPDATE_A2M_UPDATE_REQ | `IMcuService` | `startUpgrade` | PASS |
| Update | A2M | 0x81 | UPDATE_A2M_UPDATE_BEGIN | `IMcuService` | `startUpgrade` | PASS |
| Update | A2M | 0x82 | UPDATE_A2M_UPDATE_DATA | `IMcuService` | `startUpgrade` | PASS |
| Update | A2M | 0x83 | UPDATE_A2M_UPDATE_END | `IMcuService` | `startUpgrade` | PASS |
| Update | A2M | 0x84 | UPDATE_A2M_BOOT_UPDATE_BEGIN | `IMcuService` | `startBootUpgrade` | PASS |
| Update | A2M | 0x85 | UPDATE_A2M_BOOT_UPDATE_DATA | `IMcuService` | `sendBootUpgradeData` | PASS |
| Update | A2M | 0x86 | UPDATE_A2M_BOOT_UPDATE_CHECKSUM | `IMcuService` | `sendBootUpgradeChecksum` | PASS |
| Update | M2A | 0x01 | UPDATE_M2A_UPDATE_ACK | `IMcuUpgradeListener` | `onUpgradeAck` | PASS |
| Update | M2A | 0x02 | UPDATE_M2A_UPDATE_LEN | `IMcuUpgradeListener` | `onProgress` | PASS |
| Update | M2A | 0x03 | UPDATE_M2A_UPDATE_IND_AQUIRE | `IMcuUpgradeListener` | `onProgress` | PASS |

---

**接口总数**: 77

**缺失数**: 0 ✅

**结论: 全部 77 个 MCU 协议接口均已在 AIDL 契约层声明，无一遗漏。**
