本页内容 日夜主题与手机电量复制快照再交给 UI
HARDWARE SDK / FreeRTOS

手机状态

同步手机日夜主题、电量与充电状态。

手机状态通过 Wi-Fi 主连接同步到仪表,使用 FreeRTOS 托管入口。先完成首次添加与主业务连接。

日夜主题与手机电量

托管配置 phone_state 默认开启。收到 MOTO_EVENT_PHONE_STATE 后使用:

字段 怎么用
e.data.phone.theme MOTO_THEME_DAY / MOTO_THEME_NIGHT,切换仪表主题
e.data.phone.battery_percent 手机电量 0–100;-1 表示未知
e.data.phone.charging 手机充电状态

这些是 SDK 结构体的值。线协议用 CBOR null 表示未知电量,SDK 转为 battery_percent=-1;0 表示真实零电量,不能按未知处理。

核心入口对应 event->phone,仅在回调期间有效,异步显示前复制快照。车辆电量另按车况上报上报。

复制快照再交给 UI

从 Managed 事件消费者调用下面的辅助函数。它只接受手机状态事件,保留未知电量 -1;随后把 snapshot 的副本放入 UI 队列,并由 UI 线程应用主题、电量和充电标记。

#include <moto_freertos/terminal.h>

bool copy_phone_state(const moto_terminal_event *event,
                      moto_phone_state *snapshot) {
    if (!event || !snapshot || event->kind != MOTO_EVENT_PHONE_STATE)
        return false;
    *snapshot = event->data.phone;
    return true;
}