m_reminderHideActive(false), m_reminderHideTime(0),
m_otaCountdownActive(false), m_otaCountdownValue(0),
m_countUpActive(false), m_countUpValue(0), m_countUpTarget(0),
- m_imeiValid(false), m_imeiChecked(false)
+ m_imeiValid(false), m_imeiChecked(false),
+ m_simStatus(0), m_cat1PowerStatus(0), m_signalStrength(0),
+ m_networkStatus(0), m_networkType(0),
+ m_hasNetwork(false), m_networkStatusChanged(false)
{
// 初始化时加载提醒数据
// LoadRemindersFromFile();
m_reminderHideTime = intervalMs / 1000; // 转换为秒数
// 先隐藏全部提醒界面
- auto *reminder = ThunderBirdReminderView::GetInstance();
+ auto *reminder = ThunderBirdReminderView::GetInstance();
if (reminder != nullptr) {
- reminder->HideAll();
- }
+ reminder->HideAll();
+ }
// 确保时间显示定时器正在运行
if (m_timeDisplayTimer == nullptr) {
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::StartBootOperation: 未绑定");
return 0;
}
- return 1;
- }
+ return 1;
+ }
//判断是否绑定
ThunderBirdModel::BindingStatus ThunderBirdModel::CheckBindingStatus()
{
{
return g_isRecording;
}
-
+
bool ThunderBirdModel::StopRecording()
{
WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP, "ThunderBirdModel::StopRecording");
- /*
- 1、新手引导
- 判断是否绑定 返回,0:绑定,1:未绑定;2:没有网络 使用枚举
- 2、对话
- 2.1 录音
- 开始录音接口
- 停止录音接口
- 2.2 发送录音接口
- 2.3 接收回答数据
- 2.4 对话文本获取接口
- 2.5 对话结束接口
- 3、哄睡模式
- 4、事项提醒
- */
+ /*
+ 1、新手引导
+ 判断是否绑定 返回,0:绑定,1:未绑定;2:没有网络 使用枚举
+ 2、对话
+ 2.1 录音
+ 开始录音接口
+ 停止录音接口
+ 2.2 发送录音接口
+ 2.3 接收回答数据
+ 2.4 对话文本获取接口
+ 2.5 对话结束接口
+ 3、哄睡模式
+ 4、事项提醒
+ */
// ==================== 时间显示定时器实现 ====================
*/
void ThunderBirdModel::StatusCallback()
{
+ // ==================== 网络状态处理 ====================
+ // 更新网络状态信息(包括SIM卡、信号强度、网络连接等)
+ UpdateNetworkStatus();
+
+ // 检查网络状态是否发生变化
+ if (IsNetworkStatusChanged()) {
+ if (HasNetwork()) {
+ // 网络连接成功,调用HTTP服务获取设备Token
+ do_ln_http_server_send_data(LN_HTTP_SERVICE_CMD_GET_DEVICE_TOKEN, NULL, 0);
+ // 获取一下OTA 是否有最新版本
+ ota_update_boot();
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Network connected, calling HTTP service");
+ } else {
+ // 网络断开,记录状态变化日志
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Network disconnected");
+ }
+ // 重置网络状态变化标志位,避免重复处理
+ SetNetworkStatusChanged(false);
+ }
+
// 更新设备状态
UpdateDeviceStatus();
WEARABLE_LOGD("IMEI status checked: valid=%d", m_imeiValid);
}
+ // ==================== 网络状态管理函数实现 ====================
+
+ /**
+ * @brief 获取SIM卡状态
+ * @return SIM卡状态值
+ * @note 0=无SIM卡,1=有SIM卡,其他值表示SIM卡异常状态
+ */
+ int ThunderBirdModel::GetSimStatus() const
+ {
+ return m_simStatus;
+ }
+
+ /**
+ * @brief 获取CAT1模块电源状态
+ * @return CAT1电源状态值
+ * @note 0=关机,1=开机,其他值表示电源异常状态
+ */
+ int ThunderBirdModel::GetCat1PowerStatus() const
+ {
+ return m_cat1PowerStatus;
+ }
+
+ /**
+ * @brief 获取信号强度
+ * @return 信号强度值
+ * @note 信号强度范围通常为0-31,数值越大信号越强
+ */
+ int ThunderBirdModel::GetSignalStrength() const
+ {
+ return m_signalStrength;
+ }
+
+ /**
+ * @brief 获取网络连接状态
+ * @return 网络连接状态值
+ * @note 0=未连接,1=已连接,其他值表示连接异常状态
+ */
+ int ThunderBirdModel::GetNetworkStatus() const
+ {
+ return m_networkStatus;
+ }
+
+ /**
+ * @brief 获取网络类型
+ * @return 网络类型值
+ * @note 不同数值代表不同的网络类型(2G/3G/4G/5G等)
+ */
+ int ThunderBirdModel::GetNetworkType() const
+ {
+ return m_networkType;
+ }
+
+ /**
+ * @brief 更新网络状态信息
+ * @details 从底层API获取最新的网络状态信息,并检测状态变化
+ * @note 此函数会更新所有网络相关的状态变量,并设置变化标志位
+ *
+ * 更新的状态包括:
+ * - SIM卡状态 (m_simStatus)
+ * - CAT1电源状态 (m_cat1PowerStatus)
+ * - 信号强度 (m_signalStrength)
+ * - 网络连接状态 (m_networkStatus)
+ * - 网络类型 (m_networkType)
+ * - 网络连接标志位 (m_hasNetwork)
+ * - 状态变化标志位 (m_networkStatusChanged)
+ */
+ void ThunderBirdModel::UpdateNetworkStatus()
+ {
+ // 保存之前的网络状态,用于变化检测
+ int previousNetworkStatus = m_networkStatus;
+ bool previousHasNetwork = m_hasNetwork;
+
+ // 从底层API获取最新的网络状态信息
+ m_simStatus = uapi_dev_runtime_get_cat1_simstat(); // SIM卡状态
+ m_cat1PowerStatus = uapi_dev_runtime_get_cat1_powerstat(); // CAT1电源状态
+ m_signalStrength = uapi_dev_runtime_get_cat1_signal(); // 信号强度
+ m_networkStatus = uapi_dev_runtime_get_cat1_networkstat(); // 网络连接状态
+ m_networkType = uapi_dev_runtime_get_cat1_networtype(); // 网络类型
+
+ // 更新网络连接标志位:m_networkStatus == 1表示有网络连接
+ m_hasNetwork = (m_networkStatus == 1);
+
+ // 检测网络状态是否发生变化
+ if (previousNetworkStatus != m_networkStatus || previousHasNetwork != m_hasNetwork) {
+ m_networkStatusChanged = true;
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"Network status changed: previous=%d, current=%d, hasNetwork=%d",
+ previousNetworkStatus, m_networkStatus, m_hasNetwork);
+ }
+
+ // 记录网络状态更新日志
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"Network status updated: sim=%d, power=%d, signal=%d, network=%d, type=%d, hasNetwork=%d",
+ m_simStatus, m_cat1PowerStatus, m_signalStrength, m_networkStatus, m_networkType, m_hasNetwork);
+ }
+
+ /**
+ * @brief 获取网络连接状态
+ * @return true表示有网络连接,false表示无网络连接
+ * @note 基于m_networkStatus == 1判断网络连接状态
+ */
+ bool ThunderBirdModel::HasNetwork() const
+ {
+ return m_hasNetwork;
+ }
+
+ /**
+ * @brief 检查网络状态是否发生变化
+ * @return true表示网络状态发生变化,false表示无变化
+ * @note 用于检测网络状态变化,避免重复处理
+ */
+ bool ThunderBirdModel::IsNetworkStatusChanged() const
+ {
+ return m_networkStatusChanged;
+ }
+
+ /**
+ * @brief 设置网络状态变化标志位
+ * @param changed true表示状态已变化,false表示重置标志位
+ * @note 用于控制网络状态变化检测,处理完成后应重置为false
+ */
+ void ThunderBirdModel::SetNetworkStatusChanged(bool changed)
+ {
+ m_networkStatusChanged = changed;
+ }
}
\ No newline at end of file