雷鸟产测工具V1.7
authorSnickerSun <snickersun@163.com>
Sun, 18 Jan 2026 03:41:27 +0000 (11:41 +0800)
committerSnickerSun <snickersun@163.com>
Sun, 18 Jan 2026 03:41:27 +0000 (11:41 +0800)
1、添加 压力测试按钮,
2、添4G测试的PING校验,方便确认SIM卡是否正常激活可以上网。
3、添加说明文档

19 files changed:
config_manager.cpp
config_manager.h
mainwindow.cpp
mainwindow.h
mainwindow.ui
qrcodegen.hpp
releasePackage/LN_Factorytool_V1.7.zip [new file with mode: 0644]
releasePackage/LN_Factorytool_V1.7/LeiNiaoFactoryTool.exe [new file with mode: 0644]
releasePackage/LN_Factorytool_V1.7/settings.json [moved from settings.json with 53% similarity]
releasePackage/LN_Factorytool_V1.7/二维码获取方法.png [new file with mode: 0644]
releasePackage/LN_Factorytool_V1.7/产测记录/logs/20260117_235421_867998086791248_89860492192590378178.log [new file with mode: 0644]
releasePackage/LN_Factorytool_V1.7/产测记录/logs/20260117_235421_未知_未知.log [new file with mode: 0644]
releasePackage/LN_Factorytool_V1.7/产测记录/logs/20260117_235627_867998086791248_89860492192590378178_UI日志.log [new file with mode: 0644]
releasePackage/LN_Factorytool_V1.7/产测记录/logs/20260117_235627_867998086791248_89860492192590378178_UI日志full.log [new file with mode: 0644]
releasePackage/LN_Factorytool_V1.7/产测记录/logs/20260118_102017_867998086791248_89860492192590378178.log [new file with mode: 0644]
releasePackage/LN_Factorytool_V1.7/产测记录/logs/20260118_102017_未知_未知.log [new file with mode: 0644]
releasePackage/LN_Factorytool_V1.7/产测记录/产测记录.csv [new file with mode: 0644]
releasePackage/LN_Factorytool_V1.7/雷鸟产测使用说明_V1.7.pdf [new file with mode: 0644]
releasePackage/雷鸟产测使用说明_V1.7.docx [new file with mode: 0644]

index 6a9f753..7216de6 100644 (file)
@@ -38,7 +38,13 @@ void ConfigManager::setDefaultConfig()
     
     // 默认产测模式检测指令
     defaultConfig["factoryModeCheckCommand"] = "AT^FACTORY";
-    
+
+    // 默认压力测试指令
+    defaultConfig["stressTestCommand"] = "AT^LN_STRESS_TEST_DIALOGUE";
+
+    // PING 指令
+    defaultConfig["pingCommand"] = "AT^PING=www.163.com";
+
     // 默认产测模式关键字
     QJsonArray factoryKeywords;
     factoryKeywords.append("FACTORY TEST MODE:");
@@ -215,6 +221,24 @@ QString ConfigManager::getFactoryModeCheckCommand() const
     return "AT^FACTORY";
 }
 
+QString ConfigManager::getStressTestCommand() const
+{
+    if (configObject.contains("stressTestCommand") && 
+        configObject["stressTestCommand"].isString()) {
+        return configObject["stressTestCommand"].toString();
+    }
+    return "AT^LN_STRESS_TEST_DIALOGUE";
+}
+
+QString ConfigManager::getPingCommand() const
+{
+    if (configObject.contains("pingCommand") && 
+        configObject["pingCommand"].isString()) {
+        return configObject["pingCommand"].toString();
+    }
+    return "AT^PING=www.163.com";
+}
+
 QStringList ConfigManager::getFactoryModeKeywords() const
 {
     QStringList keywords;
index a6476c9..5a34b02 100644 (file)
@@ -19,6 +19,8 @@ public:
     QStringList getVersionInfoCommands() const;
     QString getFactoryModeCheckCommand() const;
     QStringList getFactoryModeKeywords() const;
+    QString getStressTestCommand() const;
+    QString getPingCommand() const;
     
     // 测试参数配置相关方法
     QString getTestConfig(const QString& key, const QString& defaultValue = "") const;
index 3e829da..d3894f6 100644 (file)
@@ -36,7 +36,7 @@ MainWindow::MainWindow(QWidget *parent)
     , ui(new Ui::MainWindow)
 {
     ui->setupUi(this);
-    setWindowTitle("雷鸟产测工具 V1.6");
+    setWindowTitle("雷鸟产测工具 V1.7");
     
     // 确保控制台输出使用UTF-8编码
     QTextCodec *utf8Codec = QTextCodec::codecForName("UTF-8");
@@ -121,6 +121,9 @@ MainWindow::MainWindow(QWidget *parent)
     bluetoothTestFinished = false;
     detectedBluetoothAddress = "";
     detectedBluetoothRSSI = 0;
+    pingTestTimer = new QTimer(this);
+    pingTestFinished = false;
+    pingSuccessCount = 0;
     currentAudioStep = AUDIO_PLAYING_1KHZ;
     currentModemVersion = "";
     currentSimStatus = -1;
@@ -158,6 +161,7 @@ MainWindow::MainWindow(QWidget *parent)
     connect(testTimeoutTimer, &QTimer::timeout, this, &MainWindow::onTestTimeout);
     connect(audioRecordTimer, &QTimer::timeout, this, &MainWindow::onAudioRecordTimer);
     connect(bluetoothTestTimer, &QTimer::timeout, this, &MainWindow::onBluetoothTestTimer);
+    connect(pingTestTimer, &QTimer::timeout, this, &MainWindow::onPingTestTimeout);
     
     // 连接ICCID和IMEI输入框的信号
     connect(ui->ICCIDlineEdit, &QLineEdit::textChanged, this, &MainWindow::onICCIDLineEditTextChanged);
@@ -1321,6 +1325,17 @@ void MainWindow::readSerialData()
             }
         }
         
+        // 检测Ping测试结果
+        if (isProductionTestRunning && currentTestStep == TEST_PPP_PING && 
+            (line.contains("PING", Qt::CaseInsensitive) || 
+             line.contains("bytes from", Qt::CaseInsensitive) ||
+             line.contains("Reply from", Qt::CaseInsensitive) ||
+             line.contains("timeout", Qt::CaseInsensitive) ||
+             line.contains("unreachable", Qt::CaseInsensitive))) {
+            qDebug() << "检测到Ping测试相关数据:" << line.trimmed();
+            checkPingTestResult(line);
+        }
+        
         // 检测LCD背光状态
         if (line.contains("LCD backlight turned on")) {
             lcdBacklightOn = true;
@@ -3445,6 +3460,9 @@ void MainWindow::on_openButton_2_clicked()
         test4GTimer->stop();
         signal4GTimer->stop();
         testTimeoutTimer->stop();
+        cat1SignalTimer->stop();
+        bluetoothTestTimer->stop();
+        pingTestTimer->stop();
         isProductionTestRunning = false;
         currentTestStep = TEST_IDLE;
         
@@ -5091,19 +5109,14 @@ void MainWindow::onCat1SignalTimer()
             // 平均信号值大于等于25,判定为通过
             qDebug() << "CAT1信号测试通过,平均信号值" << averageSignal << "大于等于25";
             ui->statusbar->showMessage(QString("CAT1信号测试通过 - 平均信号值:%1").arg(averageSignal, 0, 'f', 1), 3000);
-            updateTestStatus("ppp", STATUS_SUCCESS);
             
-            // 完成产测
+            // CAT1信号测试通过后,进行Ping测试
             if (isProductionTestRunning) {
-                currentTestStep = TEST_COMPLETED;
-                isProductionTestRunning = false;
-                qDebug() << "CAT1信号测试通过,产测流程完成";
-                
-                // 保存测试记录
-                QString fileName = saveTestRecord();
-                
-                // 显示最终测试结果弹窗
-                showFinalTestResult();
+                qDebug() << "CAT1信号测试通过,开始Ping测试";
+                currentTestStep = TEST_PPP_PING;
+                performPingTest();
+            } else {
+                updateTestStatus("ppp", STATUS_SUCCESS);
             }
     } else {
             // 平均信号值小于25或没有有效数据,判定为失败
@@ -5136,6 +5149,141 @@ void MainWindow::onCat1SignalTimer()
     qDebug() << "发送第" << cat1SignalTestCount << "次CAT1信号检测指令: AT^CAT1GETSIGNAL";
 }
 
+// Ping测试函数
+void MainWindow::performPingTest()
+{
+    if (!isProductionTestRunning || currentTestStep != TEST_PPP_PING) {
+        qDebug() << "Ping测试跳过 - 测试状态不正确";
+        return;
+    }
+    
+    qDebug() << "========== 开始Ping测试 ==========";
+    ui->recvTextEdit->append("========== 开始Ping测试 ==========");
+    ui->statusbar->showMessage("Ping测试中 - 检查网络连通性...", 3000);
+    
+    // 重置Ping测试状态
+    pingTestFinished = false;
+    pingSuccessCount = 0;
+    
+    // 从配置管理器获取Ping指令
+    QString pingCmd = configManager.getPingCommand();
+    
+    if (pingCmd.isEmpty()) {
+        qDebug() << "Ping指令未配置,使用默认指令";
+        pingCmd = "AT^PING=www.163.com";
+    }
+    
+    // 确保指令以\r\n结尾
+    if (!pingCmd.endsWith("\r\n")) {
+        pingCmd += "\r\n";
+    }
+    
+    // 发送Ping指令
+    serial->write(pingCmd.toUtf8());
+    qDebug() << "发送Ping指令:" << pingCmd.trimmed();
+    appendToLogFile(QString("发送Ping指令: %1\n").arg(pingCmd.trimmed()));
+    
+    // 启动超时定时器(30秒超时)
+    pingTestTimer->start(30000);
+}
+
+// 检查Ping测试结果
+void MainWindow::checkPingTestResult(const QString& data)
+{
+    if (!isProductionTestRunning || currentTestStep != TEST_PPP_PING || pingTestFinished) {
+        return;
+    }
+    
+    qDebug() << "Ping测试收到数据:" << data.trimmed();
+    
+    // 检测Ping成功的关键字
+    // 可能的成功响应格式:
+    // "PING OK" 或 "ping success" 或包含 "bytes from" 等
+    if (data.contains("PING OK", Qt::CaseInsensitive) || 
+        data.contains("ping success", Qt::CaseInsensitive) ||
+        data.contains("bytes from", Qt::CaseInsensitive) ||
+        data.contains("Reply from", Qt::CaseInsensitive)) {
+        
+        pingSuccessCount++;
+        qDebug() << "检测到Ping成功响应,成功次数:" << pingSuccessCount;
+        appendToLogFile(QString("Ping成功响应: %1\n").arg(data.trimmed()));
+        
+        // 只要检测到一次成功就认为网络连通
+        if (pingSuccessCount >= 1) {
+            pingTestFinished = true;
+            pingTestTimer->stop();
+            
+            qDebug() << "Ping测试通过 - 网络连通";
+            ui->statusbar->showMessage("Ping测试通过 - 网络连通", 3000);
+            ui->recvTextEdit->append("========== Ping测试通过 ==========");
+            appendToLogFile("========== Ping测试通过 ==========\n");
+            
+            // 4G测试完全通过
+            updateTestStatus("ppp", STATUS_SUCCESS);
+            
+            // 完成产测
+            if (isProductionTestRunning) {
+                currentTestStep = TEST_COMPLETED;
+                isProductionTestRunning = false;
+                qDebug() << "Ping测试通过,产测流程完成";
+                
+                // 保存测试记录
+                QString fileName = saveTestRecord();
+                
+                // 显示最终测试结果弹窗
+                showFinalTestResult();
+            }
+        }
+    }
+    // 检测Ping失败的关键字
+    else if (data.contains("PING FAIL", Qt::CaseInsensitive) || 
+             data.contains("ping failed", Qt::CaseInsensitive) ||
+             data.contains("timeout", Qt::CaseInsensitive) ||
+             data.contains("unreachable", Qt::CaseInsensitive)) {
+        
+        pingTestFinished = true;
+        pingTestTimer->stop();
+        
+        qDebug() << "Ping测试失败 - 网络不通";
+        ui->statusbar->showMessage("Ping测试失败 - 网络不通", 3000);
+        ui->recvTextEdit->append("========== Ping测试失败 ==========");
+        appendToLogFile(QString("Ping失败响应: %1\n").arg(data.trimmed()));
+        appendToLogFile("========== Ping测试失败 ==========\n");
+        
+        // 显示4G重试对话框
+        if (isProductionTestRunning) {
+            show4GRetryDialog("Ping测试失败 - 网络不通");
+        } else {
+            updateTestStatus("ppp", STATUS_FAILED);
+        }
+    }
+}
+
+// Ping测试超时处理
+void MainWindow::onPingTestTimeout()
+{
+    pingTestTimer->stop();
+    
+    if (!isProductionTestRunning || currentTestStep != TEST_PPP_PING || pingTestFinished) {
+        qDebug() << "Ping超时但测试状态已改变,忽略";
+        return;
+    }
+    
+    pingTestFinished = true;
+    
+    qDebug() << "Ping测试超时 - 30秒内未收到响应";
+    ui->statusbar->showMessage("Ping测试超时 - 网络连通性检查失败", 3000);
+    ui->recvTextEdit->append("========== Ping测试超时 ==========");
+    appendToLogFile("========== Ping测试超时 - 30秒内未收到响应 ==========\n");
+    
+    // 显示4G重试对话框
+    if (isProductionTestRunning) {
+        show4GRetryDialog("Ping测试超时");
+    } else {
+        updateTestStatus("ppp", STATUS_FAILED);
+    }
+}
+
 // 检查4G信号质量结果
 void MainWindow::check4GSignalResult(const QString& data)
 {
@@ -5849,26 +5997,19 @@ void MainWindow::clearProductionTestState()
         keyTestStatus[i] = 0;
     }
     
-    // 清空状态指示器 - 重置为未测试状态
-    updateTestStatus("lcd", STATUS_UNTESTED);
-    updateTestStatus("motor", STATUS_UNTESTED);
-    updateTestStatus("key", STATUS_UNTESTED);
-    updateTestStatus("audio", STATUS_UNTESTED);
-    updateTestStatus("battery", STATUS_UNTESTED);
-    updateTestStatus("gsensor", STATUS_UNTESTED);
-    updateTestStatus("bluetooth", STATUS_UNTESTED);
-    updateTestStatus("ppp", STATUS_UNTESTED);
+    // 注意:不在这里清空状态指示器,保留上次测试结果供查看
+    // 状态指示器只在开始新测试时清空(在on_openButton_2_clicked中)
     
-    // 清空串口接收文本框
-    ui->recvTextEdit->clear();
-    qDebug() << "已清空串口接收文本框";
+    // 不清空串口接收文本框,保留测试日志供查看
+    // ui->recvTextEdit->clear();
+    qDebug() << "保留测试状态和日志,方便查看上次测试结果";
     
     qDebug() << "产测状态清空完成";
 }
 
 void MainWindow::on_agingTestButton_clicked()
 {
-    // æ¸\85空æ\89\80æ\9c\89UI内容
+    // æ¸\85空æ\96\87æ\9c¬æ¡\86内容
     ui->recvTextEdit->clear();           // 清空串口接收文本框
     ui->sendTextEdit->clear();           // 清空发送文本框
     ui->statusbar->clearMessage();       // 清空状态栏
@@ -5888,21 +6029,15 @@ void MainWindow::on_agingTestButton_clicked()
     audioTestPopupShown = false;
     audioPlaybackPopupShown = false;
 
-    // 重置状态指示器
-    updateTestStatus("lcd", STATUS_UNTESTED);
-    updateTestStatus("motor", STATUS_UNTESTED);
-    updateTestStatus("key", STATUS_UNTESTED);
-    updateTestStatus("audio", STATUS_UNTESTED);
-    updateTestStatus("battery", STATUS_UNTESTED);
-    updateTestStatus("gsensor", STATUS_UNTESTED);
-    updateTestStatus("bluetooth", STATUS_UNTESTED);
-    updateTestStatus("ppp", STATUS_UNTESTED);
+    // 不清除状态指示器,保留上次测试结果供查看
+    // 用户可以一边查看测试结果,一边执行老化测试
+    
     serial->write("AT^FACTORY=2\r\n");
 }
 
 void MainWindow::on_agingTestButton_2_clicked()
 {
-    // æ¸\85空æ\89\80æ\9c\89UI内容
+    // æ¸\85空æ\96\87æ\9c¬æ¡\86内容
     ui->recvTextEdit->clear();           // 清空串口接收文本框
     ui->sendTextEdit->clear();           // 清空发送文本框
     ui->statusbar->clearMessage();       // 清空状态栏
@@ -5922,22 +6057,15 @@ void MainWindow::on_agingTestButton_2_clicked()
     audioTestPopupShown = false;
     audioPlaybackPopupShown = false;
 
-    // 重置状态指示器
-    updateTestStatus("lcd", STATUS_UNTESTED);
-    updateTestStatus("motor", STATUS_UNTESTED);
-    updateTestStatus("key", STATUS_UNTESTED);
-    updateTestStatus("audio", STATUS_UNTESTED);
-    updateTestStatus("battery", STATUS_UNTESTED);
-    updateTestStatus("gsensor", STATUS_UNTESTED);
-    updateTestStatus("bluetooth", STATUS_UNTESTED);
-    updateTestStatus("ppp", STATUS_UNTESTED);
+    // 不清除状态指示器,保留上次测试结果供查看
+    // 用户可以一边查看测试结果,一边执行恢复出厂操作
 
     serial->write("AT^RESTORE\r\n");
 }
 
 void MainWindow::on_openButton_3_clicked()
 {
-    // æ¸\85空æ\89\80æ\9c\89UI内容
+    // æ¸\85空æ\96\87æ\9c¬æ¡\86内容
     ui->recvTextEdit->clear();           // 清空串口接收文本框
     ui->sendTextEdit->clear();           // 清空发送文本框
     ui->statusbar->clearMessage();       // 清空状态栏
@@ -5957,15 +6085,7 @@ void MainWindow::on_openButton_3_clicked()
     audioTestPopupShown = false;
     audioPlaybackPopupShown = false;
 
-    // 重置状态指示器
-    updateTestStatus("lcd", STATUS_UNTESTED);
-    updateTestStatus("motor", STATUS_UNTESTED);
-    updateTestStatus("key", STATUS_UNTESTED);
-    updateTestStatus("audio", STATUS_UNTESTED);
-    updateTestStatus("battery", STATUS_UNTESTED);
-    updateTestStatus("gsensor", STATUS_UNTESTED);
-    updateTestStatus("bluetooth", STATUS_UNTESTED);
-    updateTestStatus("ppp", STATUS_UNTESTED);
+    // 不清除状态指示器,保留上次测试结果供查看
 
     serial->write("AT^FACTORY=3\r\n");
 }
@@ -6234,6 +6354,40 @@ void MainWindow::on_getVersionInfoButton_clicked()
     startVersionInfoFetch();
 }
 
+// 压力测试按钮点击事件
+void MainWindow::on_pushButtonStressTest_clicked()
+{
+    // 检查串口是否已打开
+    if (!serial->isOpen()) {
+        QMessageBox::warning(this, "警告", "请先打开串口连接");
+        return;
+    }
+    
+    // 从配置管理器获取压力测试指令
+    QString stressTestCmd = configManager.getStressTestCommand();
+    
+    if (stressTestCmd.isEmpty()) {
+        QMessageBox::warning(this, "警告", "压力测试指令未配置");
+        qDebug() << "压力测试指令为空,无法执行";
+        return;
+    }
+    
+    // 确保指令以\r\n结尾
+    if (!stressTestCmd.endsWith("\r\n")) {
+        stressTestCmd += "\r\n";
+    }
+    
+    // 发送压力测试指令
+    serial->write(stressTestCmd.toUtf8());
+    qDebug() << "发送压力测试指令:" << stressTestCmd.trimmed();
+    
+    // 在日志中记录
+    appendToLogFile(QString("=== 发送压力测试指令: %1 ===\n").arg(stressTestCmd.trimmed()));
+    
+    // 状态栏提示
+    ui->statusbar->showMessage("已发送压力测试指令", 3000);
+}
+
 // 保存测试参数到settings.json
 void MainWindow::saveTestConfigToSettings()
 {
index e0f7bd7..e0861d3 100644 (file)
@@ -118,6 +118,9 @@ private slots:
     void onCat1SignalTimer();
     void checkCat1SignalResult(const QString& data);
     void show4GRetryDialog(const QString& failReason);
+    void performPingTest();                 // Ping测试
+    void checkPingTestResult(const QString& data); // 检查Ping测试结果
+    void onPingTestTimeout();               // Ping测试超时
     bool isEGModem() const;
     bool isValidIMEI(const QString& imei);
     bool isValidICCID(const QString& iccid);
@@ -130,6 +133,9 @@ private slots:
     
     // 版本信息获取按钮
     void on_getVersionInfoButton_clicked();
+    
+    // 压力测试按钮
+    void on_pushButtonStressTest_clicked();
 
 private:
     Ui::MainWindow *ui;
@@ -146,6 +152,7 @@ private:
 
     QTimer *cat1SignalTimer;          // CAT1信号测试定时器
     QTimer *bluetoothTestTimer;        // 蓝牙测试定时器
+    QTimer *pingTestTimer;             // Ping测试超时定时器
     int currentLcdColor;               // 当前LCD测试颜色 (1=红, 2=绿, 3=蓝)
     int initRetry4GCount;              // 4G初始化重试次数
     bool hasReceivedFirstSignal;
@@ -191,6 +198,8 @@ private:
     bool bluetoothTestFinished;         // 蓝牙测试是否已完成(成功或失败)
     QString detectedBluetoothAddress;   // 检测到的指定蓝牙地址
     int detectedBluetoothRSSI;          // 检测到的指定蓝牙地址的RSSI值
+    bool pingTestFinished;              // Ping测试是否已完成(成功或失败)
+    int pingSuccessCount;               // Ping成功次数
     // 日志文件相关变量
     QFile *testLogFile;                 // 测试日志文件对象
     QTextStream *testLogStream;         // 测试日志文件流
@@ -232,6 +241,7 @@ private:
         TEST_PPP_INIT,
         TEST_PPP_UPDATE,
         TEST_PPP_SIGNAL,
+        TEST_PPP_PING,
         TEST_COMPLETED
     } currentTestStep;
     // 十六进制与字节数组转换工具函数
index b9b7b1e..1a63dab 100644 (file)
@@ -7,7 +7,7 @@
     <x>0</x>
     <y>0</y>
     <width>1309</width>
-    <height>829</height>
+    <height>930</height>
    </rect>
   </property>
   <property name="font">
             </property>
            </widget>
           </item>
+          <item>
+           <widget class="QPushButton" name="pushButtonStressTest">
+            <property name="autoFillBackground">
+             <bool>false</bool>
+            </property>
+            <property name="styleSheet">
+             <string notr="true">QPushButton { 
+background-color: #ff0000; 
+color: white; 
+border-radius: 4px; 
+font-weight: bold; 
+}
+QPushButton:hover { 
+background-color: #F57C00; 
+}</string>
+            </property>
+            <property name="text">
+             <string>压力测试</string>
+            </property>
+           </widget>
+          </item>
           <item>
            <widget class="QPushButton" name="openButton_agingresult">
             <property name="font">
@@ -686,9 +707,9 @@ background-color: #F57C00;
          <property name="geometry">
           <rect>
            <x>0</x>
-           <y>-76</y>
-           <width>407</width>
-           <height>621</height>
+           <y>0</y>
+           <width>512</width>
+           <height>708</height>
           </rect>
          </property>
          <property name="title">
@@ -1306,7 +1327,7 @@ background-color: #F57C00;
      <x>0</x>
      <y>0</y>
      <width>1309</width>
-     <height>23</height>
+     <height>26</height>
     </rect>
    </property>
   </widget>
index cc60d6f..077d365 100644 (file)
-/*
- * QR Code generator library (C++)
- *
- * Copyright (c) Project Nayuki. (MIT License)
- * https://www.nayuki.io/page/qr-code-generator-library
- *
- * Permission is hereby granted, free of charge, to any person obtaining a copy of
- * this software and associated documentation files (the "Software"), to deal in
- * the Software without restriction, including without limitation the rights to
- * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of
- * the Software, and to permit persons to whom the Software is furnished to do so,
- * subject to the following conditions:
- * - The above copyright notice and this permission notice shall be included in
- *   all copies or substantial portions of the Software.
- * - The Software is provided "as is", without warranty of any kind, express or
- *   implied, including but not limited to the warranties of merchantability,
- *   fitness for a particular purpose and noninfringement. In no event shall the
- *   authors or copyright holders be liable for any claim, damages or other
- *   liability, whether in an action of contract, tort or otherwise, arising from,
- *   out of or in connection with the Software or the use or other dealings in the
- *   Software.
- */
-
-#pragma once
-
-#include <array>
-#include <cstdint>
-#include <stdexcept>
-#include <string>
-#include <vector>
-
-
-namespace qrcodegen {
-
-/*
- * A segment of character/binary/control data in a QR Code symbol.
- * Instances of this class are immutable.
- * The mid-level way to create a segment is to take the payload data
- * and call a static factory function such as QrSegment::makeNumeric().
- * The low-level way to create a segment is to custom-make the bit buffer
- * and call the QrSegment() constructor with appropriate values.
- * This segment class imposes no length restrictions, but QR Codes have restrictions.
- * Even in the most favorable conditions, a QR Code can only hold 7089 characters of data.
- * Any segment longer than this is meaningless for the purpose of generating QR Codes.
- */
-class QrSegment final {
-
-    /*---- Public helper enumeration ----*/
-
-    /*
-     * Describes how a segment's data bits are interpreted. Immutable.
-     */
-    public: class Mode final {
-
-        /*-- Constants --*/
-
-        public: static const Mode NUMERIC;
-        public: static const Mode ALPHANUMERIC;
-        public: static const Mode BYTE;
-        public: static const Mode KANJI;
-        public: static const Mode ECI;
-
-
-        /*-- Fields --*/
-
-        // The mode indicator bits, which is a uint4 value (range 0 to 15).
-        private: int modeBits;
-
-        // Number of character count bits for three different version ranges.
-        private: int numBitsCharCount[3];
-
-
-        /*-- Constructor --*/
-
-        private: Mode(int mode, int cc0, int cc1, int cc2);
-
-
-        /*-- Methods --*/
-
-        /*
-         * (Package-private) Returns the mode indicator bits, which is an unsigned 4-bit value (range 0 to 15).
-         */
-        public: int getModeBits() const;
-
-        /*
-         * (Package-private) Returns the bit width of the character count field for a segment in
-         * this mode in a QR Code at the given version number. The result is in the range [0, 16].
-         */
-        public: int numCharCountBits(int ver) const;
-
-    };
-
-
-
-    /*---- Static factory functions (mid level) ----*/
-
-    /*
-     * Returns a segment representing the given binary data encoded in
-     * byte mode. All input byte vectors are acceptable. Any text string
-     * can be converted to UTF-8 bytes and encoded as a byte mode segment.
-     */
-    public: static QrSegment makeBytes(const std::vector<std::uint8_t> &data);
-
-
-    /*
-     * Returns a segment representing the given string of decimal digits encoded in numeric mode.
-     */
-    public: static QrSegment makeNumeric(const char *digits);
-
-
-    /*
-     * Returns a segment representing the given text string encoded in alphanumeric mode.
-     * The characters allowed are: 0 to 9, A to Z (uppercase only), space,
-     * dollar, percent, asterisk, plus, hyphen, period, slash, colon.
-     */
-    public: static QrSegment makeAlphanumeric(const char *text);
-
-
-    /*
-     * Returns a list of zero or more segments to represent the given text string. The result
-     * may use various segment modes and switch modes to optimize the length of the bit stream.
-     */
-    public: static std::vector<QrSegment> makeSegments(const char *text);
-
-
-    /*
-     * Returns a segment representing an Extended Channel Interpretation
-     * (ECI) designator with the given assignment value.
-     */
-    public: static QrSegment makeEci(long assignVal);
-
-
-    /*---- Public static helper functions ----*/
-
-    /*
-     * Tests whether the given string can be encoded as a segment in numeric mode.
-     * A string is encodable iff each character is in the range 0 to 9.
-     */
-    public: static bool isNumeric(const char *text);
-
-
-    /*
-     * Tests whether the given string can be encoded as a segment in alphanumeric mode.
-     * A string is encodable iff each character is in the following set: 0 to 9, A to Z
-     * (uppercase only), space, dollar, percent, asterisk, plus, hyphen, period, slash, colon.
-     */
-    public: static bool isAlphanumeric(const char *text);
-
-
-
-    /*---- Instance fields ----*/
-
-    /* The mode indicator of this segment. Accessed through getMode(). */
-    private: const Mode *mode;
-
-    /* The length of this segment's unencoded data. Measured in characters for
-     * numeric/alphanumeric/kanji mode, bytes for byte mode, and 0 for ECI mode.
-     * Always zero or positive. Not the same as the data's bit length.
-     * Accessed through getNumChars(). */
-    private: int numChars;
-
-    /* The data bits of this segment. Accessed through getData(). */
-    private: std::vector<bool> data;
-
-
-    /*---- Constructors (low level) ----*/
-
-    /*
-     * Creates a new QR Code segment with the given attributes and data.
-     * The character count (numCh) must agree with the mode and the bit buffer length,
-     * but the constraint isn't checked. The given bit buffer is copied and stored.
-     */
-    public: QrSegment(const Mode &md, int numCh, const std::vector<bool> &dt);
-
-
-    /*
-     * Creates a new QR Code segment with the given parameters and data.
-     * The character count (numCh) must agree with the mode and the bit buffer length,
-     * but the constraint isn't checked. The given bit buffer is moved and stored.
-     */
-    public: QrSegment(const Mode &md, int numCh, std::vector<bool> &&dt);
-
-
-    /*---- Methods ----*/
-
-    /*
-     * Returns the mode field of this segment.
-     */
-    public: const Mode &getMode() const;
-
-
-    /*
-     * Returns the character count field of this segment.
-     */
-    public: int getNumChars() const;
-
-
-    /*
-     * Returns the data bits of this segment.
-     */
-    public: const std::vector<bool> &getData() const;
-
-
-    // (Package-private) Calculates the number of bits needed to encode the given segments at
-    // the given version. Returns a non-negative number if successful. Otherwise returns -1 if a
-    // segment has too many characters to fit its length field, or the total bits exceeds INT_MAX.
-    public: static int getTotalBits(const std::vector<QrSegment> &segs, int version);
-
-
-    /*---- Private constant ----*/
-
-    /* The set of all legal characters in alphanumeric mode, where
-     * each character value maps to the index in the string. */
-    private: static const char *ALPHANUMERIC_CHARSET;
-
-};
-
-
-
-/*
- * A QR Code symbol, which is a type of two-dimension barcode.
- * Invented by Denso Wave and described in the ISO/IEC 18004 standard.
- * Instances of this class represent an immutable square grid of dark and light cells.
- * The class provides static factory functions to create a QR Code from text or binary data.
- * The class covers the QR Code Model 2 specification, supporting all versions (sizes)
- * from 1 to 40, all 4 error correction levels, and 4 character encoding modes.
- *
- * Ways to create a QR Code object:
- * - High level: Take the payload data and call QrCode::encodeText() or QrCode::encodeBinary().
- * - Mid level: Custom-make the list of segments and call QrCode::encodeSegments().
- * - Low level: Custom-make the array of data codeword bytes (including
- *   segment headers and final padding, excluding error correction codewords),
- *   supply the appropriate version number, and call the QrCode() constructor.
- * (Note that all ways require supplying the desired error correction level.)
- */
-class QrCode final {
-
-    /*---- Public helper enumeration ----*/
-
-    /*
-     * The error correction level in a QR Code symbol.
-     */
-    public: enum class Ecc {
-        LOW = 0 ,  // The QR Code can tolerate about  7% erroneous codewords
-        MEDIUM  ,  // The QR Code can tolerate about 15% erroneous codewords
-        QUARTILE,  // The QR Code can tolerate about 25% erroneous codewords
-        HIGH    ,  // The QR Code can tolerate about 30% erroneous codewords
-    };
-
-
-    // Returns a value in the range 0 to 3 (unsigned 2-bit integer).
-    private: static int getFormatBits(Ecc ecl);
-
-
-
-    /*---- Static factory functions (high level) ----*/
-
-    /*
-     * Returns a QR Code representing the given Unicode text string at the given error correction level.
-     * As a conservative upper bound, this function is guaranteed to succeed for strings that have 2953 or fewer
-     * UTF-8 code units (not Unicode code points) if the low error correction level is used. The smallest possible
-     * QR Code version is automatically chosen for the output. The ECC level of the result may be higher than
-     * the ecl argument if it can be done without increasing the version.
-     */
-    public: static QrCode encodeText(const char *text, Ecc ecl);
-
-
-    /*
-     * Returns a QR Code representing the given binary data at the given error correction level.
-     * This function always encodes using the binary segment mode, not any text mode. The maximum number of
-     * bytes allowed is 2953. The smallest possible QR Code version is automatically chosen for the output.
-     * The ECC level of the result may be higher than the ecl argument if it can be done without increasing the version.
-     */
-    public: static QrCode encodeBinary(const std::vector<std::uint8_t> &data, Ecc ecl);
-
-
-    /*---- Static factory functions (mid level) ----*/
-
-    /*
-     * Returns a QR Code representing the given segments with the given encoding parameters.
-     * The smallest possible QR Code version within the given range is automatically
-     * chosen for the output. Iff boostEcl is true, then the ECC level of the result
-     * may be higher than the ecl argument if it can be done without increasing the
-     * version. The mask number is either between 0 to 7 (inclusive) to force that
-     * mask, or -1 to automatically choose an appropriate mask (which may be slow).
-     * This function allows the user to create a custom sequence of segments that switches
-     * between modes (such as alphanumeric and byte) to encode text in less space.
-     * This is a mid-level API; the high-level API is encodeText() and encodeBinary().
-     */
-    public: static QrCode encodeSegments(const std::vector<QrSegment> &segs, Ecc ecl,
-        int minVersion=1, int maxVersion=40, int mask=-1, bool boostEcl=true);  // All optional parameters
-
-
-
-    /*---- Instance fields ----*/
-
-    // Immutable scalar parameters:
-
-    /* The version number of this QR Code, which is between 1 and 40 (inclusive).
-     * This determines the size of this barcode. */
-    private: int version;
-
-    /* The width and height of this QR Code, measured in modules, between
-     * 21 and 177 (inclusive). This is equal to version * 4 + 17. */
-    private: int size;
-
-    /* The error correction level used in this QR Code. */
-    private: Ecc errorCorrectionLevel;
-
-    /* The index of the mask pattern used in this QR Code, which is between 0 and 7 (inclusive).
-     * Even if a QR Code is created with automatic masking requested (mask = -1),
-     * the resulting object still has a mask value between 0 and 7. */
-    private: int mask;
-
-    // Private grids of modules/pixels, with dimensions of size*size:
-
-    // The modules of this QR Code (false = light, true = dark).
-    // Immutable after constructor finishes. Accessed through getModule().
-    private: std::vector<std::vector<bool> > modules;
-
-    // Indicates function modules that are not subjected to masking. Discarded when constructor finishes.
-    private: std::vector<std::vector<bool> > isFunction;
-
-
-
-    /*---- Constructor (low level) ----*/
-
-    /*
-     * Creates a new QR Code with the given version number,
-     * error correction level, data codeword bytes, and mask number.
-     * This is a low-level API that most users should not use directly.
-     * A mid-level API is the encodeSegments() function.
-     */
-    public: QrCode(int ver, Ecc ecl, const std::vector<std::uint8_t> &dataCodewords, int msk);
-
-
-
-    /*---- Public instance methods ----*/
-
-    /*
-     * Returns this QR Code's version, in the range [1, 40].
-     */
-    public: int getVersion() const;
-
-
-    /*
-     * Returns this QR Code's size, in the range [21, 177].
-     */
-    public: int getSize() const;
-
-
-    /*
-     * Returns this QR Code's error correction level.
-     */
-    public: Ecc getErrorCorrectionLevel() const;
-
-
-    /*
-     * Returns this QR Code's mask, in the range [0, 7].
-     */
-    public: int getMask() const;
-
-
-    /*
-     * Returns the color of the module (pixel) at the given coordinates, which is false
-     * for light or true for dark. The top left corner has the coordinates (x=0, y=0).
-     * If the given coordinates are out of bounds, then false (light) is returned.
-     */
-    public: bool getModule(int x, int y) const;
-
-
-
-    /*---- Private helper methods for constructor: Drawing function modules ----*/
-
-    // Reads this object's version field, and draws and marks all function modules.
-    private: void drawFunctionPatterns();
-
-
-    // Draws two copies of the format bits (with its own error correction code)
-    // based on the given mask and this object's error correction level field.
-    private: void drawFormatBits(int msk);
-
-
-    // Draws two copies of the version bits (with its own error correction code),
-    // based on this object's version field, iff 7 <= version <= 40.
-    private: void drawVersion();
-
-
-    // Draws a 9*9 finder pattern including the border separator,
-    // with the center module at (x, y). Modules can be out of bounds.
-    private: void drawFinderPattern(int x, int y);
-
-
-    // Draws a 5*5 alignment pattern, with the center module
-    // at (x, y). All modules must be in bounds.
-    private: void drawAlignmentPattern(int x, int y);
-
-
-    // Sets the color of a module and marks it as a function module.
-    // Only used by the constructor. Coordinates must be in bounds.
-    private: void setFunctionModule(int x, int y, bool isDark);
-
-
-    // Returns the color of the module at the given coordinates, which must be in range.
-    private: bool module(int x, int y) const;
-
-
-    /*---- Private helper methods for constructor: Codewords and masking ----*/
-
-    // Returns a new byte string representing the given data with the appropriate error correction
-    // codewords appended to it, based on this object's version and error correction level.
-    private: std::vector<std::uint8_t> addEccAndInterleave(const std::vector<std::uint8_t> &data) const;
-
-
-    // Draws the given sequence of 8-bit codewords (data and error correction) onto the entire
-    // data area of this QR Code. Function modules need to be marked off before this is called.
-    private: void drawCodewords(const std::vector<std::uint8_t> &data);
-
-
-    // XORs the codeword modules in this QR Code with the given mask pattern.
-    // The function modules must be marked and the codeword bits must be drawn
-    // before masking. Due to the arithmetic of XOR, calling applyMask() with
-    // the same mask value a second time will undo the mask. A final well-formed
-    // QR Code needs exactly one (not zero, two, etc.) mask applied.
-    private: void applyMask(int msk);
-
-
-    // Calculates and returns the penalty score based on state of this QR Code's current modules.
-    // This is used by the automatic mask choice algorithm to find the mask pattern that yields the lowest score.
-    private: long getPenaltyScore() const;
-
-
-
-    /*---- Private helper functions ----*/
-
-    // Returns an ascending list of positions of alignment patterns for this version number.
-    // Each position is in the range [0,177), and are used on both the x and y axes.
-    // This could be implemented as lookup table of 40 variable-length lists of unsigned bytes.
-    private: std::vector<int> getAlignmentPatternPositions() const;
-
-
-    // Returns the number of data bits that can be stored in a QR Code of the given version number, after
-    // all function modules are excluded. This includes remainder bits, so it might not be a multiple of 8.
-    // The result is in the range [208, 29648]. This could be implemented as a 40-entry lookup table.
-    private: static int getNumRawDataModules(int ver);
-
-
-    // Returns the number of 8-bit data (i.e. not error correction) codewords contained in any
-    // QR Code of the given version number and error correction level, with remainder bits discarded.
-    // This stateless pure function could be implemented as a (40*4)-cell lookup table.
-    private: static int getNumDataCodewords(int ver, Ecc ecl);
-
-
-    // Returns a Reed-Solomon ECC generator polynomial for the given degree. This could be
-    // implemented as a lookup table over all possible parameter values, instead of as an algorithm.
-    private: static std::vector<std::uint8_t> reedSolomonComputeDivisor(int degree);
-
-
-    // Returns the Reed-Solomon error correction codeword for the given data and divisor polynomials.
-    private: static std::vector<std::uint8_t> reedSolomonComputeRemainder(const std::vector<std::uint8_t> &data, const std::vector<std::uint8_t> &divisor);
-
-
-    // Returns the product of the two given field elements modulo GF(2^8/0x11D).
-    // All inputs are valid. This could be implemented as a 256*256 lookup table.
-    private: static std::uint8_t reedSolomonMultiply(std::uint8_t x, std::uint8_t y);
-
-
-    // Can only be called immediately after a light run is added, and
-    // returns either 0, 1, or 2. A helper function for getPenaltyScore().
-    private: int finderPenaltyCountPatterns(const std::array<int,7> &runHistory) const;
-
-
-    // Must be called at the end of a line (row or column) of modules. A helper function for getPenaltyScore().
-    private: int finderPenaltyTerminateAndCount(bool currentRunColor, int currentRunLength, std::array<int,7> &runHistory) const;
-
-
-    // Pushes the given value to the front and drops the last value. A helper function for getPenaltyScore().
-    private: void finderPenaltyAddHistory(int currentRunLength, std::array<int,7> &runHistory) const;
-
-
-    // Returns true iff the i'th bit of x is set to 1.
-    private: static bool getBit(long x, int i);
-
-
-    /*---- Constants and tables ----*/
-
-    // The minimum version number supported in the QR Code Model 2 standard.
-    public: static constexpr int MIN_VERSION =  1;
-
-    // The maximum version number supported in the QR Code Model 2 standard.
-    public: static constexpr int MAX_VERSION = 40;
-
-
-    // For use in getPenaltyScore(), when evaluating which mask is best.
-    private: static const int PENALTY_N1;
-    private: static const int PENALTY_N2;
-    private: static const int PENALTY_N3;
-    private: static const int PENALTY_N4;
-
-
-    private: static const std::int8_t ECC_CODEWORDS_PER_BLOCK[4][41];
-    private: static const std::int8_t NUM_ERROR_CORRECTION_BLOCKS[4][41];
-
-};
-
-
-
-/*---- Public exception class ----*/
-
-/*
- * Thrown when the supplied data does not fit any QR Code version. Ways to handle this exception include:
- * - Decrease the error correction level if it was greater than Ecc::LOW.
- * - If the encodeSegments() function was called with a maxVersion argument, then increase
- *   it if it was less than QrCode::MAX_VERSION. (This advice does not apply to the other
- *   factory functions because they search all versions up to QrCode::MAX_VERSION.)
- * - Split the text data into better or optimal segments in order to reduce the number of bits required.
- * - Change the text or binary data to be shorter.
- * - Change the text to fit the character set of a particular segment mode (e.g. alphanumeric).
- * - Propagate the error upward to the caller/user.
- */
-class data_too_long : public std::length_error {
-
-    public: explicit data_too_long(const std::string &msg);
-
-};
-
-
-
-/*
- * An appendable sequence of bits (0s and 1s). Mainly used by QrSegment.
- */
-class BitBuffer final : public std::vector<bool> {
-
-    /*---- Constructor ----*/
-
-    // Creates an empty bit buffer (length 0).
-    public: BitBuffer();
-
-
-
-    /*---- Method ----*/
-
-    // Appends the given number of low-order bits of the given value
-    // to this buffer. Requires 0 <= len <= 31 and val < 2^len.
-    public: void appendBits(std::uint32_t val, int len);
-
-};
-
-}
+/*\r
+ * QR Code generator library (C++)\r
+ *\r
+ * Copyright (c) Project Nayuki. (MIT License)\r
+ * https://www.nayuki.io/page/qr-code-generator-library\r
+ *\r
+ * Permission is hereby granted, free of charge, to any person obtaining a copy of\r
+ * this software and associated documentation files (the "Software"), to deal in\r
+ * the Software without restriction, including without limitation the rights to\r
+ * use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of\r
+ * the Software, and to permit persons to whom the Software is furnished to do so,\r
+ * subject to the following conditions:\r
+ * - The above copyright notice and this permission notice shall be included in\r
+ *   all copies or substantial portions of the Software.\r
+ * - The Software is provided "as is", without warranty of any kind, express or\r
+ *   implied, including but not limited to the warranties of merchantability,\r
+ *   fitness for a particular purpose and noninfringement. In no event shall the\r
+ *   authors or copyright holders be liable for any claim, damages or other\r
+ *   liability, whether in an action of contract, tort or otherwise, arising from,\r
+ *   out of or in connection with the Software or the use or other dealings in the\r
+ *   Software.\r
+ */\r
+\r
+#pragma once\r
+\r
+#include <array>\r
+#include <cstdint>\r
+#include <stdexcept>\r
+#include <string>\r
+#include <vector>\r
+\r
+\r
+namespace qrcodegen {\r
+\r
+/*\r
+ * A segment of character/binary/control data in a QR Code symbol.\r
+ * Instances of this class are immutable.\r
+ * The mid-level way to create a segment is to take the payload data\r
+ * and call a static factory function such as QrSegment::makeNumeric().\r
+ * The low-level way to create a segment is to custom-make the bit buffer\r
+ * and call the QrSegment() constructor with appropriate values.\r
+ * This segment class imposes no length restrictions, but QR Codes have restrictions.\r
+ * Even in the most favorable conditions, a QR Code can only hold 7089 characters of data.\r
+ * Any segment longer than this is meaningless for the purpose of generating QR Codes.\r
+ */\r
+class QrSegment final {\r
+\r
+    /*---- Public helper enumeration ----*/\r
+\r
+    /*\r
+     * Describes how a segment's data bits are interpreted. Immutable.\r
+     */\r
+    public: class Mode final {\r
+\r
+        /*-- Constants --*/\r
+\r
+        public: static const Mode NUMERIC;\r
+        public: static const Mode ALPHANUMERIC;\r
+        public: static const Mode BYTE;\r
+        public: static const Mode KANJI;\r
+        public: static const Mode ECI;\r
+\r
+\r
+        /*-- Fields --*/\r
+\r
+        // The mode indicator bits, which is a uint4 value (range 0 to 15).\r
+        private: int modeBits;\r
+\r
+        // Number of character count bits for three different version ranges.\r
+        private: int numBitsCharCount[3];\r
+\r
+\r
+        /*-- Constructor --*/\r
+\r
+        private: Mode(int mode, int cc0, int cc1, int cc2);\r
+\r
+\r
+        /*-- Methods --*/\r
+\r
+        /*\r
+         * (Package-private) Returns the mode indicator bits, which is an unsigned 4-bit value (range 0 to 15).\r
+         */\r
+        public: int getModeBits() const;\r
+\r
+        /*\r
+         * (Package-private) Returns the bit width of the character count field for a segment in\r
+         * this mode in a QR Code at the given version number. The result is in the range [0, 16].\r
+         */\r
+        public: int numCharCountBits(int ver) const;\r
+\r
+    };\r
+\r
+\r
+\r
+    /*---- Static factory functions (mid level) ----*/\r
+\r
+    /*\r
+     * Returns a segment representing the given binary data encoded in\r
+     * byte mode. All input byte vectors are acceptable. Any text string\r
+     * can be converted to UTF-8 bytes and encoded as a byte mode segment.\r
+     */\r
+    public: static QrSegment makeBytes(const std::vector<std::uint8_t> &data);\r
+\r
+\r
+    /*\r
+     * Returns a segment representing the given string of decimal digits encoded in numeric mode.\r
+     */\r
+    public: static QrSegment makeNumeric(const char *digits);\r
+\r
+\r
+    /*\r
+     * Returns a segment representing the given text string encoded in alphanumeric mode.\r
+     * The characters allowed are: 0 to 9, A to Z (uppercase only), space,\r
+     * dollar, percent, asterisk, plus, hyphen, period, slash, colon.\r
+     */\r
+    public: static QrSegment makeAlphanumeric(const char *text);\r
+\r
+\r
+    /*\r
+     * Returns a list of zero or more segments to represent the given text string. The result\r
+     * may use various segment modes and switch modes to optimize the length of the bit stream.\r
+     */\r
+    public: static std::vector<QrSegment> makeSegments(const char *text);\r
+\r
+\r
+    /*\r
+     * Returns a segment representing an Extended Channel Interpretation\r
+     * (ECI) designator with the given assignment value.\r
+     */\r
+    public: static QrSegment makeEci(long assignVal);\r
+\r
+\r
+    /*---- Public static helper functions ----*/\r
+\r
+    /*\r
+     * Tests whether the given string can be encoded as a segment in numeric mode.\r
+     * A string is encodable iff each character is in the range 0 to 9.\r
+     */\r
+    public: static bool isNumeric(const char *text);\r
+\r
+\r
+    /*\r
+     * Tests whether the given string can be encoded as a segment in alphanumeric mode.\r
+     * A string is encodable iff each character is in the following set: 0 to 9, A to Z\r
+     * (uppercase only), space, dollar, percent, asterisk, plus, hyphen, period, slash, colon.\r
+     */\r
+    public: static bool isAlphanumeric(const char *text);\r
+\r
+\r
+\r
+    /*---- Instance fields ----*/\r
+\r
+    /* The mode indicator of this segment. Accessed through getMode(). */\r
+    private: const Mode *mode;\r
+\r
+    /* The length of this segment's unencoded data. Measured in characters for\r
+     * numeric/alphanumeric/kanji mode, bytes for byte mode, and 0 for ECI mode.\r
+     * Always zero or positive. Not the same as the data's bit length.\r
+     * Accessed through getNumChars(). */\r
+    private: int numChars;\r
+\r
+    /* The data bits of this segment. Accessed through getData(). */\r
+    private: std::vector<bool> data;\r
+\r
+\r
+    /*---- Constructors (low level) ----*/\r
+\r
+    /*\r
+     * Creates a new QR Code segment with the given attributes and data.\r
+     * The character count (numCh) must agree with the mode and the bit buffer length,\r
+     * but the constraint isn't checked. The given bit buffer is copied and stored.\r
+     */\r
+    public: QrSegment(const Mode &md, int numCh, const std::vector<bool> &dt);\r
+\r
+\r
+    /*\r
+     * Creates a new QR Code segment with the given parameters and data.\r
+     * The character count (numCh) must agree with the mode and the bit buffer length,\r
+     * but the constraint isn't checked. The given bit buffer is moved and stored.\r
+     */\r
+    public: QrSegment(const Mode &md, int numCh, std::vector<bool> &&dt);\r
+\r
+\r
+    /*---- Methods ----*/\r
+\r
+    /*\r
+     * Returns the mode field of this segment.\r
+     */\r
+    public: const Mode &getMode() const;\r
+\r
+\r
+    /*\r
+     * Returns the character count field of this segment.\r
+     */\r
+    public: int getNumChars() const;\r
+\r
+\r
+    /*\r
+     * Returns the data bits of this segment.\r
+     */\r
+    public: const std::vector<bool> &getData() const;\r
+\r
+\r
+    // (Package-private) Calculates the number of bits needed to encode the given segments at\r
+    // the given version. Returns a non-negative number if successful. Otherwise returns -1 if a\r
+    // segment has too many characters to fit its length field, or the total bits exceeds INT_MAX.\r
+    public: static int getTotalBits(const std::vector<QrSegment> &segs, int version);\r
+\r
+\r
+    /*---- Private constant ----*/\r
+\r
+    /* The set of all legal characters in alphanumeric mode, where\r
+     * each character value maps to the index in the string. */\r
+    private: static const char *ALPHANUMERIC_CHARSET;\r
+\r
+};\r
+\r
+\r
+\r
+/*\r
+ * A QR Code symbol, which is a type of two-dimension barcode.\r
+ * Invented by Denso Wave and described in the ISO/IEC 18004 standard.\r
+ * Instances of this class represent an immutable square grid of dark and light cells.\r
+ * The class provides static factory functions to create a QR Code from text or binary data.\r
+ * The class covers the QR Code Model 2 specification, supporting all versions (sizes)\r
+ * from 1 to 40, all 4 error correction levels, and 4 character encoding modes.\r
+ *\r
+ * Ways to create a QR Code object:\r
+ * - High level: Take the payload data and call QrCode::encodeText() or QrCode::encodeBinary().\r
+ * - Mid level: Custom-make the list of segments and call QrCode::encodeSegments().\r
+ * - Low level: Custom-make the array of data codeword bytes (including\r
+ *   segment headers and final padding, excluding error correction codewords),\r
+ *   supply the appropriate version number, and call the QrCode() constructor.\r
+ * (Note that all ways require supplying the desired error correction level.)\r
+ */\r
+class QrCode final {\r
+\r
+    /*---- Public helper enumeration ----*/\r
+\r
+    /*\r
+     * The error correction level in a QR Code symbol.\r
+     */\r
+    public: enum class Ecc {\r
+        LOW = 0 ,  // The QR Code can tolerate about  7% erroneous codewords\r
+        MEDIUM  ,  // The QR Code can tolerate about 15% erroneous codewords\r
+        QUARTILE,  // The QR Code can tolerate about 25% erroneous codewords\r
+        HIGH    ,  // The QR Code can tolerate about 30% erroneous codewords\r
+    };\r
+\r
+\r
+    // Returns a value in the range 0 to 3 (unsigned 2-bit integer).\r
+    private: static int getFormatBits(Ecc ecl);\r
+\r
+\r
+\r
+    /*---- Static factory functions (high level) ----*/\r
+\r
+    /*\r
+     * Returns a QR Code representing the given Unicode text string at the given error correction level.\r
+     * As a conservative upper bound, this function is guaranteed to succeed for strings that have 2953 or fewer\r
+     * UTF-8 code units (not Unicode code points) if the low error correction level is used. The smallest possible\r
+     * QR Code version is automatically chosen for the output. The ECC level of the result may be higher than\r
+     * the ecl argument if it can be done without increasing the version.\r
+     */\r
+    public: static QrCode encodeText(const char *text, Ecc ecl);\r
+\r
+\r
+    /*\r
+     * Returns a QR Code representing the given binary data at the given error correction level.\r
+     * This function always encodes using the binary segment mode, not any text mode. The maximum number of\r
+     * bytes allowed is 2953. The smallest possible QR Code version is automatically chosen for the output.\r
+     * The ECC level of the result may be higher than the ecl argument if it can be done without increasing the version.\r
+     */\r
+    public: static QrCode encodeBinary(const std::vector<std::uint8_t> &data, Ecc ecl);\r
+\r
+\r
+    /*---- Static factory functions (mid level) ----*/\r
+\r
+    /*\r
+     * Returns a QR Code representing the given segments with the given encoding parameters.\r
+     * The smallest possible QR Code version within the given range is automatically\r
+     * chosen for the output. Iff boostEcl is true, then the ECC level of the result\r
+     * may be higher than the ecl argument if it can be done without increasing the\r
+     * version. The mask number is either between 0 to 7 (inclusive) to force that\r
+     * mask, or -1 to automatically choose an appropriate mask (which may be slow).\r
+     * This function allows the user to create a custom sequence of segments that switches\r
+     * between modes (such as alphanumeric and byte) to encode text in less space.\r
+     * This is a mid-level API; the high-level API is encodeText() and encodeBinary().\r
+     */\r
+    public: static QrCode encodeSegments(const std::vector<QrSegment> &segs, Ecc ecl,\r
+        int minVersion=1, int maxVersion=40, int mask=-1, bool boostEcl=true);  // All optional parameters\r
+\r
+\r
+\r
+    /*---- Instance fields ----*/\r
+\r
+    // Immutable scalar parameters:\r
+\r
+    /* The version number of this QR Code, which is between 1 and 40 (inclusive).\r
+     * This determines the size of this barcode. */\r
+    private: int version;\r
+\r
+    /* The width and height of this QR Code, measured in modules, between\r
+     * 21 and 177 (inclusive). This is equal to version * 4 + 17. */\r
+    private: int size;\r
+\r
+    /* The error correction level used in this QR Code. */\r
+    private: Ecc errorCorrectionLevel;\r
+\r
+    /* The index of the mask pattern used in this QR Code, which is between 0 and 7 (inclusive).\r
+     * Even if a QR Code is created with automatic masking requested (mask = -1),\r
+     * the resulting object still has a mask value between 0 and 7. */\r
+    private: int mask;\r
+\r
+    // Private grids of modules/pixels, with dimensions of size*size:\r
+\r
+    // The modules of this QR Code (false = light, true = dark).\r
+    // Immutable after constructor finishes. Accessed through getModule().\r
+    private: std::vector<std::vector<bool> > modules;\r
+\r
+    // Indicates function modules that are not subjected to masking. Discarded when constructor finishes.\r
+    private: std::vector<std::vector<bool> > isFunction;\r
+\r
+\r
+\r
+    /*---- Constructor (low level) ----*/\r
+\r
+    /*\r
+     * Creates a new QR Code with the given version number,\r
+     * error correction level, data codeword bytes, and mask number.\r
+     * This is a low-level API that most users should not use directly.\r
+     * A mid-level API is the encodeSegments() function.\r
+     */\r
+    public: QrCode(int ver, Ecc ecl, const std::vector<std::uint8_t> &dataCodewords, int msk);\r
+\r
+\r
+\r
+    /*---- Public instance methods ----*/\r
+\r
+    /*\r
+     * Returns this QR Code's version, in the range [1, 40].\r
+     */\r
+    public: int getVersion() const;\r
+\r
+\r
+    /*\r
+     * Returns this QR Code's size, in the range [21, 177].\r
+     */\r
+    public: int getSize() const;\r
+\r
+\r
+    /*\r
+     * Returns this QR Code's error correction level.\r
+     */\r
+    public: Ecc getErrorCorrectionLevel() const;\r
+\r
+\r
+    /*\r
+     * Returns this QR Code's mask, in the range [0, 7].\r
+     */\r
+    public: int getMask() const;\r
+\r
+\r
+    /*\r
+     * Returns the color of the module (pixel) at the given coordinates, which is false\r
+     * for light or true for dark. The top left corner has the coordinates (x=0, y=0).\r
+     * If the given coordinates are out of bounds, then false (light) is returned.\r
+     */\r
+    public: bool getModule(int x, int y) const;\r
+\r
+\r
+\r
+    /*---- Private helper methods for constructor: Drawing function modules ----*/\r
+\r
+    // Reads this object's version field, and draws and marks all function modules.\r
+    private: void drawFunctionPatterns();\r
+\r
+\r
+    // Draws two copies of the format bits (with its own error correction code)\r
+    // based on the given mask and this object's error correction level field.\r
+    private: void drawFormatBits(int msk);\r
+\r
+\r
+    // Draws two copies of the version bits (with its own error correction code),\r
+    // based on this object's version field, iff 7 <= version <= 40.\r
+    private: void drawVersion();\r
+\r
+\r
+    // Draws a 9*9 finder pattern including the border separator,\r
+    // with the center module at (x, y). Modules can be out of bounds.\r
+    private: void drawFinderPattern(int x, int y);\r
+\r
+\r
+    // Draws a 5*5 alignment pattern, with the center module\r
+    // at (x, y). All modules must be in bounds.\r
+    private: void drawAlignmentPattern(int x, int y);\r
+\r
+\r
+    // Sets the color of a module and marks it as a function module.\r
+    // Only used by the constructor. Coordinates must be in bounds.\r
+    private: void setFunctionModule(int x, int y, bool isDark);\r
+\r
+\r
+    // Returns the color of the module at the given coordinates, which must be in range.\r
+    private: bool module(int x, int y) const;\r
+\r
+\r
+    /*---- Private helper methods for constructor: Codewords and masking ----*/\r
+\r
+    // Returns a new byte string representing the given data with the appropriate error correction\r
+    // codewords appended to it, based on this object's version and error correction level.\r
+    private: std::vector<std::uint8_t> addEccAndInterleave(const std::vector<std::uint8_t> &data) const;\r
+\r
+\r
+    // Draws the given sequence of 8-bit codewords (data and error correction) onto the entire\r
+    // data area of this QR Code. Function modules need to be marked off before this is called.\r
+    private: void drawCodewords(const std::vector<std::uint8_t> &data);\r
+\r
+\r
+    // XORs the codeword modules in this QR Code with the given mask pattern.\r
+    // The function modules must be marked and the codeword bits must be drawn\r
+    // before masking. Due to the arithmetic of XOR, calling applyMask() with\r
+    // the same mask value a second time will undo the mask. A final well-formed\r
+    // QR Code needs exactly one (not zero, two, etc.) mask applied.\r
+    private: void applyMask(int msk);\r
+\r
+\r
+    // Calculates and returns the penalty score based on state of this QR Code's current modules.\r
+    // This is used by the automatic mask choice algorithm to find the mask pattern that yields the lowest score.\r
+    private: long getPenaltyScore() const;\r
+\r
+\r
+\r
+    /*---- Private helper functions ----*/\r
+\r
+    // Returns an ascending list of positions of alignment patterns for this version number.\r
+    // Each position is in the range [0,177), and are used on both the x and y axes.\r
+    // This could be implemented as lookup table of 40 variable-length lists of unsigned bytes.\r
+    private: std::vector<int> getAlignmentPatternPositions() const;\r
+\r
+\r
+    // Returns the number of data bits that can be stored in a QR Code of the given version number, after\r
+    // all function modules are excluded. This includes remainder bits, so it might not be a multiple of 8.\r
+    // The result is in the range [208, 29648]. This could be implemented as a 40-entry lookup table.\r
+    private: static int getNumRawDataModules(int ver);\r
+\r
+\r
+    // Returns the number of 8-bit data (i.e. not error correction) codewords contained in any\r
+    // QR Code of the given version number and error correction level, with remainder bits discarded.\r
+    // This stateless pure function could be implemented as a (40*4)-cell lookup table.\r
+    private: static int getNumDataCodewords(int ver, Ecc ecl);\r
+\r
+\r
+    // Returns a Reed-Solomon ECC generator polynomial for the given degree. This could be\r
+    // implemented as a lookup table over all possible parameter values, instead of as an algorithm.\r
+    private: static std::vector<std::uint8_t> reedSolomonComputeDivisor(int degree);\r
+\r
+\r
+    // Returns the Reed-Solomon error correction codeword for the given data and divisor polynomials.\r
+    private: static std::vector<std::uint8_t> reedSolomonComputeRemainder(const std::vector<std::uint8_t> &data, const std::vector<std::uint8_t> &divisor);\r
+\r
+\r
+    // Returns the product of the two given field elements modulo GF(2^8/0x11D).\r
+    // All inputs are valid. This could be implemented as a 256*256 lookup table.\r
+    private: static std::uint8_t reedSolomonMultiply(std::uint8_t x, std::uint8_t y);\r
+\r
+\r
+    // Can only be called immediately after a light run is added, and\r
+    // returns either 0, 1, or 2. A helper function for getPenaltyScore().\r
+    private: int finderPenaltyCountPatterns(const std::array<int,7> &runHistory) const;\r
+\r
+\r
+    // Must be called at the end of a line (row or column) of modules. A helper function for getPenaltyScore().\r
+    private: int finderPenaltyTerminateAndCount(bool currentRunColor, int currentRunLength, std::array<int,7> &runHistory) const;\r
+\r
+\r
+    // Pushes the given value to the front and drops the last value. A helper function for getPenaltyScore().\r
+    private: void finderPenaltyAddHistory(int currentRunLength, std::array<int,7> &runHistory) const;\r
+\r
+\r
+    // Returns true iff the i'th bit of x is set to 1.\r
+    private: static bool getBit(long x, int i);\r
+\r
+\r
+    /*---- Constants and tables ----*/\r
+\r
+    // The minimum version number supported in the QR Code Model 2 standard.\r
+    public: static constexpr int MIN_VERSION =  1;\r
+\r
+    // The maximum version number supported in the QR Code Model 2 standard.\r
+    public: static constexpr int MAX_VERSION = 40;\r
+\r
+\r
+    // For use in getPenaltyScore(), when evaluating which mask is best.\r
+    private: static const int PENALTY_N1;\r
+    private: static const int PENALTY_N2;\r
+    private: static const int PENALTY_N3;\r
+    private: static const int PENALTY_N4;\r
+\r
+\r
+    private: static const std::int8_t ECC_CODEWORDS_PER_BLOCK[4][41];\r
+    private: static const std::int8_t NUM_ERROR_CORRECTION_BLOCKS[4][41];\r
+\r
+};\r
+\r
+\r
+\r
+/*---- Public exception class ----*/\r
+\r
+/*\r
+ * Thrown when the supplied data does not fit any QR Code version. Ways to handle this exception include:\r
+ * - Decrease the error correction level if it was greater than Ecc::LOW.\r
+ * - If the encodeSegments() function was called with a maxVersion argument, then increase\r
+ *   it if it was less than QrCode::MAX_VERSION. (This advice does not apply to the other\r
+ *   factory functions because they search all versions up to QrCode::MAX_VERSION.)\r
+ * - Split the text data into better or optimal segments in order to reduce the number of bits required.\r
+ * - Change the text or binary data to be shorter.\r
+ * - Change the text to fit the character set of a particular segment mode (e.g. alphanumeric).\r
+ * - Propagate the error upward to the caller/user.\r
+ */\r
+class data_too_long : public std::length_error {\r
+\r
+    public: explicit data_too_long(const std::string &msg);\r
+\r
+};\r
+\r
+\r
+\r
+/*\r
+ * An appendable sequence of bits (0s and 1s). Mainly used by QrSegment.\r
+ */\r
+class BitBuffer final : public std::vector<bool> {\r
+\r
+    /*---- Constructor ----*/\r
+\r
+    // Creates an empty bit buffer (length 0).\r
+    public: BitBuffer();\r
+\r
+\r
+\r
+    /*---- Method ----*/\r
+\r
+    // Appends the given number of low-order bits of the given value\r
+    // to this buffer. Requires 0 <= len <= 31 and val < 2^len.\r
+    public: void appendBits(std::uint32_t val, int len);\r
+\r
+};\r
+\r
+}\r
+\r
diff --git a/releasePackage/LN_Factorytool_V1.7.zip b/releasePackage/LN_Factorytool_V1.7.zip
new file mode 100644 (file)
index 0000000..fe1ce61
Binary files /dev/null and b/releasePackage/LN_Factorytool_V1.7.zip differ
diff --git a/releasePackage/LN_Factorytool_V1.7/LeiNiaoFactoryTool.exe b/releasePackage/LN_Factorytool_V1.7/LeiNiaoFactoryTool.exe
new file mode 100644 (file)
index 0000000..af29449
Binary files /dev/null and b/releasePackage/LN_Factorytool_V1.7/LeiNiaoFactoryTool.exe differ
similarity index 53%
rename from settings.json
rename to releasePackage/LN_Factorytool_V1.7/settings.json
index fa7504d..2c5884a 100644 (file)
@@ -4,24 +4,36 @@
         "NAND flash ID",\r
         "NAND ID:"\r
     ],\r
-    "versionInfoCommands": [\r
-        "AT^CAT1GETVER",\r
-        "AT^CAT1GETSIGNAL",\r
-        "AT^FACTORY"\r
-    ],\r
     "factoryModeCheckCommand": "AT^FACTORY",\r
     "factoryModeKeywords": [\r
         "FACTORY TEST MODE:"\r
     ],\r
+    "pingCommand": "AT^PING=www.163.com",\r
+    "stressTestCommand": "AT^LN_STRESS_TEST_DIALOGUE",\r
+    "testCheckboxes": {\r
+        "4g": true,\r
+        "bt": true,\r
+        "btn": true,\r
+        "charge": true,\r
+        "gsensor": true,\r
+        "lcd": true,\r
+        "mic": true,\r
+        "ntc": true,\r
+        "vib": true\r
+    },\r
     "testConfig": {\r
-        "portName": "",\r
-        "audioVolume": "2.0",\r
         "audioLevelStandard": "中",\r
+        "audioVolume": "2.0",\r
+        "bluetoothAddress": "",\r
+        "bluetoothRSSI": "",\r
         "expectedModemVer": "",\r
         "expectedPYVer": "",\r
         "expectedVer": "",\r
-        "bluetoothAddress": "",\r
-        "bluetoothRSSI": ""\r
-    }\r
+        "portName": "COM42 (USB-Enhanced-SERIAL CH343)"\r
+    },\r
+    "versionInfoCommands": [\r
+        "AT^CAT1GETVER",\r
+        "AT^CAT1GETSIGNAL",\r
+        "AT^FACTORY"\r
+    ]\r
 }\r
-\r
diff --git a/releasePackage/LN_Factorytool_V1.7/二维码获取方法.png b/releasePackage/LN_Factorytool_V1.7/二维码获取方法.png
new file mode 100644 (file)
index 0000000..f785352
Binary files /dev/null and "b/releasePackage/LN_Factorytool_V1.7/\344\272\214\347\273\264\347\240\201\350\216\267\345\217\226\346\226\271\346\263\225.png" differ
diff --git a/releasePackage/LN_Factorytool_V1.7/产测记录/logs/20260117_235421_867998086791248_89860492192590378178.log b/releasePackage/LN_Factorytool_V1.7/产测记录/logs/20260117_235421_867998086791248_89860492192590378178.log
new file mode 100644 (file)
index 0000000..de301dd
--- /dev/null
@@ -0,0 +1,36 @@
+=== 测试开始时间: 2026-01-17 23:54:21 ===\r
+IMEI: 未知\r
+ICCID: 未知\r
+========================================\r
+enter or exit facotry mode :1\r
+g_VibratorFunc delaytime_ms_high  2 ,  delaytime_ms_low 2 \r\r
+Network Stat Signal值: 26\r
+^^^^ BTMAC=1C:1D:2B:DA:B5:DA ^^^^ CyweeChipInfo=\r
+fac:^^^^ BTMAC=1C:1D:2B:DA:B5:DA ^^^^ CyweeChipInfo=\r
+BuildVer:V1.0.36_20260117_152353\r
+LCD test Red\r
+LCD test Green\r
+LCD test Blue\r
+g_VibratorFunc delaytime_ms_high  2 ,  delaytime_ms_low 2 \r\r
+g_VibratorFunc delaytime_ms_high  2 ,  delaytime_ms_low 2 \r\r
+g_VibratorFunc delaytime_ms_high  2 ,  delaytime_ms_low 2 \r\r
+g_VibratorFunc delaytime_ms_high  2 ,  delaytime_ms_low 2 \r\r
+g_VibratorFunc delaytime_ms_high  2 ,  delaytime_ms_low 2 \r\r
+g_VibratorFunc delaytime_ms_high  2 ,  delaytime_ms_low 2 \r\r
+[AudioTest] Volume - RMS: 2.23% (-33.04 dB), Peak: 27.70% (-11.15 dB), Level: 低\r\r
+mic level:低\r
+[AudioTest] Volume - RMS: 9.60% (-20.35 dB), Peak: 28.80% (-10.81 dB), Level: 低\r\r
+mic level:低\r
+[AudioTest] Volume - RMS: 10.26% (-19.77 dB), Peak: 29.86% (-10.50 dB), Level: 中\r\r
+mic level:中\r
+[AudioTest] Volume - RMS: 11.60% (-18.71 dB), Peak: 30.17% (-10.41 dB), Level: 中\r\r
+mic level:中\r
+[AudioTest] Volume - RMS: 10.49% (-19.58 dB), Peak: 30.44% (-10.33 dB), Level: 中\r\r
+mic level:中\r
+voltage : 3.765 , percent 44 , temp : 21.683, charge : 1\r\r
+gsensor id : 0x13\r
+id : 3\r
+id : 3\r
+id : 0\r
+id : 0\r
+Signal值: 26\r
diff --git a/releasePackage/LN_Factorytool_V1.7/产测记录/logs/20260117_235421_未知_未知.log b/releasePackage/LN_Factorytool_V1.7/产测记录/logs/20260117_235421_未知_未知.log
new file mode 100644 (file)
index 0000000..af3617e
--- /dev/null
@@ -0,0 +1,111 @@
+CAT1 Signal值: 26 (1/5)\r
+Signal值: 26\r
+Signal值: 26\r
+CAT1 Signal值: 26 (2/5)\r
+Signal值: 26\r
+Signal值: 26\r
+CAT1 Signal值: 26 (3/5)\r
+Signal值: 26\r
+Signal值: 26\r
+CAT1 Signal值: 26 (4/5)\r
+Signal值: 26\r
+Signal值: 26\r
+CAT1 Signal值: 26 (5/5)\r
+Signal值: 26\r
+发送Ping指令: AT^PING=www.163.com\r
+Ping成功响应: [0]Reply from 36.156.72.98: time=124ms TTL=56[23:56:25:155][I]{DoSeekIfNeed():1802} seek start\r
+========== Ping测试通过 ==========\r
+=== 测试结束时间: 2026-01-17 23:56:27 ===\r
+测试记录已保存: 产测记录.csv\r
+\r
+=== UIæ\97¥å¿\97å\86\85容 ===\r
+>>> 发送指令: AT^FACTORY=1 (开始产测)enter or exit facotry mode :1\r
+\r
+>>> 发送指令: AT^FACTORY=1 (开始产测 - 第2次)\r
+>>> 发送指令: AT^RESET (恢复出厂设置/重启设备)g_VibratorFunc delaytime_ms_high  2 ,  delaytime_ms_low 2 \r
+Network Stat Signal值: 26\r
+^^^^ BTMAC=1C:1D:2B:DA:B5:DA ^^^^ CyweeChipInfo=\r
+fac:^^^^ BTMAC=1C:1D:2B:DA:B5:DA ^^^^ CyweeChipInfo=\r
+BuildVer:V1.0.36_20260117_152353\r
+\r
+========== 开始LCD测试 ==========LCD test Red\r
+LCD test Green\r
+LCD test Blue\r
+\r
+>>> 发送指令: AT^LCDOFF (关闭LCD)\r
+========== 开始马达测试 ==========g_VibratorFunc delaytime_ms_high  2 ,  delaytime_ms_low 2 \r
+g_VibratorFunc delaytime_ms_high  2 ,  delaytime_ms_low 2 \r
+g_VibratorFunc delaytime_ms_high  2 ,  delaytime_ms_low 2 \r
+g_VibratorFunc delaytime_ms_high  2 ,  delaytime_ms_low 2 \r
+g_VibratorFunc delaytime_ms_high  2 ,  delaytime_ms_low 2 \r
+g_VibratorFunc delaytime_ms_high  2 ,  delaytime_ms_low 2 \r
+\r
+========== 开始按键测试 ==========\r
+========== 开始录音测试 ==========\r
+>>> 发送指令: AT^LCDOFF (关闭LCD,录音测试前强制关闭)\r
+>>> 发送指令: AT^AUDIOTEST=5\r
+>>> 发送指令: AT^AUDIOTEST=7 2[AudioTest] Volume - RMS: 2.23% (-33.04 dB), Peak: 27.70% (-11.15 dB), Level: 低\r
+mic level:低\r
+\r
+>>> 音频测试: 检测到等级 低 (< 中,不满足要求),连续计数已重置[AudioTest] Volume - RMS: 9.60% (-20.35 dB), Peak: 28.80% (-10.81 dB), Level: 低\r
+mic level:低\r
+\r
+>>> 音频测试: 检测到等级 低 (< 中,不满足要求),连续计数已重置[AudioTest] Volume - RMS: 10.26% (-19.77 dB), Peak: 29.86% (-10.50 dB), Level: 中\r
+mic level:中\r
+\r
+>>> 音频测试: 检测到等级 中 (>= 中),连续 1 次,累计 1 次[AudioTest] Volume - RMS: 11.60% (-18.71 dB), Peak: 30.17% (-10.41 dB), Level: 中\r
+mic level:中\r
+\r
+>>> 音频测试: 检测到等级 中 (>= 中),连续 2 次,累计 2 次[AudioTest] Volume - RMS: 10.49% (-19.58 dB), Peak: 30.44% (-10.33 dB), Level: 中\r
+mic level:中\r
+\r
+>>> 音频测试: 检测到等级 中 (>= 中),连续 3 次,累计 3 次\r
+>>> 音频测试通过: 连续 3 次满足要求\r
+>>> 发送指令: AT^AUDIOTEST=6 (结束音频测试)\r
+========== 开始电池测试 ==========voltage : 3.765 , percent 44 , temp : 21.683, charge : 1\r
+\r
+>>> 电池测试原始数据: fac:voltage : 3.765 , percent 44 , temp : 21.683, charge : 1\r
+>>> 电池测试: 检测到电池电压:3.765V, 电量:44%, 温度:21.683℃, 充电状态:充电中\r
+>>> 充电检查通过:设备正在充电\r
+========== 开始G-sensor测试 ==========gsensor id : 0x13\r
+\r
+========== 开始蓝牙测试 ==========\r
+>>> 发送指令: AT^BTENABLE (启用蓝牙)\r
+>>> 发送指令: AT^BTSCANTEST=1 (开始蓝牙扫描)\r
+>>> 检测到蓝牙设备: MAC=1C:1D:2B:73:00:73, RSSI=-97 dBm\r
+>>> 新蓝牙设备: MAC=1C:1D:2B:73:00:73, RSSI=-97 dBm (已检测到 1 个不同设备)\r
+>>> 检测到蓝牙设备: MAC=1C:1D:2B:49:F7:49, RSSI=-97 dBm\r
+>>> 新蓝牙设备: MAC=1C:1D:2B:49:F7:49, RSSI=-97 dBm (已检测到 2 个不同设备)\r
+>>> 检测到蓝牙设备: MAC=1C:1D:2B:E4:12:E4, RSSI=-95 dBm\r
+>>> 新蓝牙设备: MAC=1C:1D:2B:E4:12:E4, RSSI=-95 dBm (已检测到 3 个不同设备)\r
+>>> 蓝牙测试通过: 已检测到 3 个不同设备 (要求>=3)\r
+>>> 发送指令: AT^BTSCANTEST=2 (结束蓝牙扫描)\r
+>>> 发送指令: AT^BTDISABLE (禁用蓝牙)id : 3\r
+\r
+========== 开始4G测试 ==========\r
+========== 开始4G信号质量测试 ==========\r
+>>> 发送指令: AT^CAT1GETSIGNALid : 3\r
+id : 0\r
+id : 0\r
+Signal值: 26\r
+CAT1 Signal值: 26 (1/5)\r
+Signal值: 26\r
+Signal值: 26\r
+CAT1 Signal值: 26 (2/5)\r
+Signal值: 26\r
+Signal值: 26\r
+CAT1 Signal值: 26 (3/5)\r
+Signal值: 26\r
+Signal值: 26\r
+CAT1 Signal值: 26 (4/5)\r
+Signal值: 26\r
+Signal值: 26\r
+CAT1 Signal值: 26 (5/5)\r
+Signal值: 26\r
+\r
+========== 开始Ping测试 ==========发送Ping指令: AT^PING=www.163.com\r
+Ping成功响应: [0]Reply from 36.156.72.98: time=124ms TTL=56[23:56:25:155][I]{DoSeekIfNeed():1802} seek start\r
+\r
+========== Ping测试通过 ==================== Ping测试通过 ==========\r
+\r
+=== UIæ\97¥å¿\97ç»\93æ\9d\9f ===\r
diff --git a/releasePackage/LN_Factorytool_V1.7/产测记录/logs/20260117_235627_867998086791248_89860492192590378178_UI日志.log b/releasePackage/LN_Factorytool_V1.7/产测记录/logs/20260117_235627_867998086791248_89860492192590378178_UI日志.log
new file mode 100644 (file)
index 0000000..c949a2e
--- /dev/null
@@ -0,0 +1,92 @@
+=== UI日志保存时间: 2026-01-17 23:56:27 ===\r
+IMEI: 867998086791248\r
+ICCID: 89860492192590378178\r
+========================================\r
+>>> 发送指令: AT^FACTORY=1 (开始产测)enter or exit facotry mode :1\r
+\r
+>>> 发送指令: AT^FACTORY=1 (开始产测 - 第2次)\r
+>>> 发送指令: AT^RESET (恢复出厂设置/重启设备)g_VibratorFunc delaytime_ms_high  2 ,  delaytime_ms_low 2 \r
+Network Stat Signal值: 26\r
+^^^^ BTMAC=1C:1D:2B:DA:B5:DA ^^^^ CyweeChipInfo=\r
+fac:^^^^ BTMAC=1C:1D:2B:DA:B5:DA ^^^^ CyweeChipInfo=\r
+BuildVer:V1.0.36_20260117_152353\r
+\r
+========== 开始LCD测试 ==========LCD test Red\r
+LCD test Green\r
+LCD test Blue\r
+\r
+>>> 发送指令: AT^LCDOFF (关闭LCD)\r
+========== 开始马达测试 ==========g_VibratorFunc delaytime_ms_high  2 ,  delaytime_ms_low 2 \r
+g_VibratorFunc delaytime_ms_high  2 ,  delaytime_ms_low 2 \r
+g_VibratorFunc delaytime_ms_high  2 ,  delaytime_ms_low 2 \r
+g_VibratorFunc delaytime_ms_high  2 ,  delaytime_ms_low 2 \r
+g_VibratorFunc delaytime_ms_high  2 ,  delaytime_ms_low 2 \r
+g_VibratorFunc delaytime_ms_high  2 ,  delaytime_ms_low 2 \r
+\r
+========== 开始按键测试 ==========\r
+========== 开始录音测试 ==========\r
+>>> 发送指令: AT^LCDOFF (关闭LCD,录音测试前强制关闭)\r
+>>> 发送指令: AT^AUDIOTEST=5\r
+>>> 发送指令: AT^AUDIOTEST=7 2[AudioTest] Volume - RMS: 2.23% (-33.04 dB), Peak: 27.70% (-11.15 dB), Level: 低\r
+mic level:低\r
+\r
+>>> 音频测试: 检测到等级 低 (< 中,不满足要求),连续计数已重置[AudioTest] Volume - RMS: 9.60% (-20.35 dB), Peak: 28.80% (-10.81 dB), Level: 低\r
+mic level:低\r
+\r
+>>> 音频测试: 检测到等级 低 (< 中,不满足要求),连续计数已重置[AudioTest] Volume - RMS: 10.26% (-19.77 dB), Peak: 29.86% (-10.50 dB), Level: 中\r
+mic level:中\r
+\r
+>>> 音频测试: 检测到等级 中 (>= 中),连续 1 次,累计 1 次[AudioTest] Volume - RMS: 11.60% (-18.71 dB), Peak: 30.17% (-10.41 dB), Level: 中\r
+mic level:中\r
+\r
+>>> 音频测试: 检测到等级 中 (>= 中),连续 2 次,累计 2 次[AudioTest] Volume - RMS: 10.49% (-19.58 dB), Peak: 30.44% (-10.33 dB), Level: 中\r
+mic level:中\r
+\r
+>>> 音频测试: 检测到等级 中 (>= 中),连续 3 次,累计 3 次\r
+>>> 音频测试通过: 连续 3 次满足要求\r
+>>> 发送指令: AT^AUDIOTEST=6 (结束音频测试)\r
+========== 开始电池测试 ==========voltage : 3.765 , percent 44 , temp : 21.683, charge : 1\r
+\r
+>>> 电池测试原始数据: fac:voltage : 3.765 , percent 44 , temp : 21.683, charge : 1\r
+>>> 电池测试: 检测到电池电压:3.765V, 电量:44%, 温度:21.683℃, 充电状态:充电中\r
+>>> 充电检查通过:设备正在充电\r
+========== 开始G-sensor测试 ==========gsensor id : 0x13\r
+\r
+========== 开始蓝牙测试 ==========\r
+>>> 发送指令: AT^BTENABLE (启用蓝牙)\r
+>>> 发送指令: AT^BTSCANTEST=1 (开始蓝牙扫描)\r
+>>> 检测到蓝牙设备: MAC=1C:1D:2B:73:00:73, RSSI=-97 dBm\r
+>>> 新蓝牙设备: MAC=1C:1D:2B:73:00:73, RSSI=-97 dBm (已检测到 1 个不同设备)\r
+>>> 检测到蓝牙设备: MAC=1C:1D:2B:49:F7:49, RSSI=-97 dBm\r
+>>> 新蓝牙设备: MAC=1C:1D:2B:49:F7:49, RSSI=-97 dBm (已检测到 2 个不同设备)\r
+>>> 检测到蓝牙设备: MAC=1C:1D:2B:E4:12:E4, RSSI=-95 dBm\r
+>>> 新蓝牙设备: MAC=1C:1D:2B:E4:12:E4, RSSI=-95 dBm (已检测到 3 个不同设备)\r
+>>> 蓝牙测试通过: 已检测到 3 个不同设备 (要求>=3)\r
+>>> 发送指令: AT^BTSCANTEST=2 (结束蓝牙扫描)\r
+>>> 发送指令: AT^BTDISABLE (禁用蓝牙)id : 3\r
+\r
+========== 开始4G测试 ==========\r
+========== 开始4G信号质量测试 ==========\r
+>>> 发送指令: AT^CAT1GETSIGNALid : 3\r
+id : 0\r
+id : 0\r
+Signal值: 26\r
+CAT1 Signal值: 26 (1/5)\r
+Signal值: 26\r
+Signal值: 26\r
+CAT1 Signal值: 26 (2/5)\r
+Signal值: 26\r
+Signal值: 26\r
+CAT1 Signal值: 26 (3/5)\r
+Signal值: 26\r
+Signal值: 26\r
+CAT1 Signal值: 26 (4/5)\r
+Signal值: 26\r
+Signal值: 26\r
+CAT1 Signal值: 26 (5/5)\r
+Signal值: 26\r
+\r
+========== 开始Ping测试 ==========发送Ping指令: AT^PING=www.163.com\r
+Ping成功响应: [0]Reply from 36.156.72.98: time=124ms TTL=56[23:56:25:155][I]{DoSeekIfNeed():1802} seek start\r
+\r
+========== Ping测试通过 ==================== Ping测试通过 ==========\r
diff --git a/releasePackage/LN_Factorytool_V1.7/产测记录/logs/20260117_235627_867998086791248_89860492192590378178_UI日志full.log b/releasePackage/LN_Factorytool_V1.7/产测记录/logs/20260117_235627_867998086791248_89860492192590378178_UI日志full.log
new file mode 100644 (file)
index 0000000..6349877
--- /dev/null
@@ -0,0 +1,2777 @@
+=== 完整日志保存时间: 2026-01-17 23:56:27 ===\r
+IMEI: 867998086791248\r
+ICCID: 89860492192590378178\r
+========================================\r
+�����1\r
+[SIO] Timer callback executed 18901 times, enabled=1, running=1\r
+uapi_get_screen_state = off . \r
+[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0\r
+\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 574876, deepsleep time:390, lightsleep time:513387, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:37003\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 19001 times, enabled=1, running=1\r
+[SIO] Timer callback executed 19101 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 579877, deepsleep time:390, lightsleep time:518065, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:41976\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+APP|charging enable charge !  bat-temp 22.26 Vs highest temp value 50.00 !\r
+APP|44 < 90 percent , enable normal current charge !\r
+[SIO] Timer callback executed 19201 times, enabled=1, running=1\r
+uapi_get_screen_state = off . \r
+[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0\r
+\r
+[SIO] Timer callback executed 19301 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 584878, deepsleep time:390, lightsleep time:522533, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:46857\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 19401 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 589880, deepsleep time:390, lightsleep time:527278, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:51851\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 19501 times, enabled=1, running=1\r
+[SIO] Timer callback executed 19601 times, enabled=1, running=1\r
+uapi_get_screen_state = off . \r
+[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0\r
+\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 594881, deepsleep time:390, lightsleep time:531869, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:56844\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 19701 times, enabled=1, running=1\r
+[SIO] Timer callback executed 19801 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 599883, deepsleep time:390, lightsleep time:536416, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:61838\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 19901 times, enabled=1, running=1\r
+uapi_get_screen_state = off . \r
+[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0\r
+\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 604884, deepsleep time:390, lightsleep time:541223, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:1296\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 20001 times, enabled=1, running=1\r
+[SIO] Timer callback executed 20101 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 609885, deepsleep time:390, lightsleep time:545774, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:6289\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 20201 times, enabled=1, running=1\r
+uapi_get_screen_state = off . \r
+[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0\r
+\r
+[SIO] Timer callback executed 20301 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 614886, deepsleep time:390, lightsleep time:550378, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:11283\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 20401 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 619888, deepsleep time:390, lightsleep time:555111, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:16277\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 20501 times, enabled=1, running=1\r
+APP|charging enable charge !  bat-temp 22.31 Vs highest temp value 50.00 !\r
+APP|44 < 90 percent , enable normal current charge !\r
+[SIO] Timer callback executed 20601 times, enabled=1, running=1\r
+uapi_get_screen_state = off . \r
+[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0\r
+\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 624890, deepsleep time:390, lightsleep time:559465, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:21137\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 20701 times, enabled=1, running=1\r
+[SIO] Timer callback executed 20801 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 629891, deepsleep time:390, lightsleep time:564229, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:26130\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 20901 times, enabled=1, running=1\r
+uapi_get_screen_state = off . \r
+[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0\r
+\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 634892, deepsleep time:390, lightsleep time:568758, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:31123\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 21001 times, enabled=1, running=1\r
+[SIO] Timer callback executed 21101 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 639894, deepsleep time:390, lightsleep time:573500, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:36114\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 21201 times, enabled=1, running=1\r
+uapi_get_screen_state = off . \r
+[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0\r
+\r
+[SIO] Timer callback executed 21301 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 644896, deepsleep time:390, lightsleep time:578011, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:41107\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 21401 times, enabled=1, running=1\r
+[SIO] Timer callback executed 21501 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 649897, deepsleep time:390, lightsleep time:582790, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:46100\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 21601 times, enabled=1, running=1\r
+uapi_get_screen_state = off . \r
+[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0\r
+\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 654899, deepsleep time:390, lightsleep time:587269, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:51094\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 21701 times, enabled=1, running=1\r
+[SIO] Timer callback executed 21801 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 659900, deepsleep time:390, lightsleep time:591995, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:56087\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 21901 times, enabled=1, running=1\r
+APP|charging enable charge !  bat-temp 22.23 Vs highest temp value 50.00 !\r
+APP|44 < 90 percent , enable normal current charge !\r
+uapi_get_screen_state = off . \r
+[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0\r
+\r
+[SIO] Timer callback executed 22001 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 664902, deepsleep time:390, lightsleep time:596556, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:60949\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 22101 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 669904, deepsleep time:390, lightsleep time:601237, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:406\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 22201 times, enabled=1, running=1\r
+uapi_get_screen_state = off . \r
+[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0\r
+\r
+[SIO] Timer callback executed 22301 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 674906, deepsleep time:390, lightsleep time:605902, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:5402\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 22401 times, enabled=1, running=1\r
+[SIO] Timer callback executed 22501 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 679908, deepsleep time:390, lightsleep time:610626, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:10394\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 22601 times, enabled=1, running=1\r
+uapi_get_screen_state = off . \r
+[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0\r
+\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 684910, deepsleep time:390, lightsleep time:615247, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:15388\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 22701 times, enabled=1, running=1\r
+[SIO] Timer callback executed 22801 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 689912, deepsleep time:390, lightsleep time:619876, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:20380\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 22901 times, enabled=1, running=1\r
+uapi_get_screen_state = off . \r
+[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0\r
+\r
+[SIO] Timer callback executed 23001 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 694914, deepsleep time:390, lightsleep time:624327, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:25376\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 23101 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 699915, deepsleep time:390, lightsleep time:628963, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:30370\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 23201 times, enabled=1, running=1\r
+uapi_get_screen_state = off . \r
+[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0\r
+\r
+APP|charging enable charge !  bat-temp 22.28 Vs highest temp value 50.00 !\r
+APP|45 < 90 percent , enable normal current charge !\r
+[SIO] Timer callback executed 23301 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 704917, deepsleep time:390, lightsleep time:633534, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:35232\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 23401 times, enabled=1, running=1\r
+[SIO] Timer callback executed 23501 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 709919, deepsleep time:390, lightsleep time:638258, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:40224\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 23601 times, enabled=1, running=1\r
+uapi_get_screen_state = off . \r
+[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0\r
+\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 714921, deepsleep time:390, lightsleep time:642942, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:45219\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 23701 times, enabled=1, running=1\r
+[SIO] Timer callback executed 23801 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 719923, deepsleep time:390, lightsleep time:647556, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:50212\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 23901 times, enabled=1, running=1\r
+uapi_get_screen_state = off . \r
+[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0\r
+\r
+[SIO] Timer callback executed 24001 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 724925, deepsleep time:390, lightsleep time:652243, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:55206\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 24101 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 729927, deepsleep time:390, lightsleep time:656906, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:60200\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 24201 times, enabled=1, running=1\r
+uapi_get_screen_state = off . \r
+[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0\r
+\r
+[SIO] Timer callback executed 24301 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 734929, deepsleep time:390, lightsleep time:661574, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:65193\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 24401 times, enabled=1, running=1\r
+[SIO] Timer callback executed 24501 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 739931, deepsleep time:390, lightsleep time:666095, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:4650\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 24601 times, enabled=1, running=1\r
+uapi_get_screen_state = off . \r
+[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0\r
+\r
+APP|charging enable charge !  bat-temp 22.15 Vs highest temp value 50.00 !\r
+APP|45 < 90 percent , enable normal current charge !\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 744933, deepsleep time:390, lightsleep time:670272, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:9511\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 24701 times, enabled=1, running=1\r
+[SIO] Timer callback executed 24801 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 749935, deepsleep time:390, lightsleep time:674899, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:14503\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 24901 times, enabled=1, running=1\r
+uapi_get_screen_state = off . \r
+[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0\r
+\r
+[SIO] Timer callback executed 25001 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 754937, deepsleep time:390, lightsleep time:679598, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:19498\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 25101 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 759938, deepsleep time:390, lightsleep time:684248, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:24491\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 25201 times, enabled=1, running=1\r
+uapi_get_screen_state = off . \r
+[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0\r
+\r
+[SIO] Timer callback executed 25301 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 764940, deepsleep time:390, lightsleep time:688885, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:29485\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 25401 times, enabled=1, running=1\r
+[SIO] Timer callback executed 25501 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 769943, deepsleep time:390, lightsleep time:693436, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:34478\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 25601 times, enabled=1, running=1\r
+uapi_get_screen_state = off . \r
+[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0\r
+\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 774946, deepsleep time:390, lightsleep time:698211, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:39472\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 25701 times, enabled=1, running=1\r
+[SIO] Timer callback executed 25801 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 779949, deepsleep time:390, lightsleep time:702999, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:44467\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 25901 times, enabled=1, running=1\r
+uapi_get_screen_state = off . \r
+[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0\r
+\r
+[SIO] Timer callback executed 26001 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 784951, deepsleep time:390, lightsleep time:707584, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:49441\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+APP|charging enable charge !  bat-temp 22.05 Vs highest temp value 50.00 !\r
+APP|45 < 90 percent , enable normal current charge !\r
+[SIO] Timer callback executed 26101 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 789953, deepsleep time:390, lightsleep time:712009, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:54321\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 26201 times, enabled=1, running=1\r
+uapi_get_screen_state = off . \r
+[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0\r
+\r
+[SIO] Timer callback executed 26301 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 794955, deepsleep time:390, lightsleep time:716610, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:59315\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 26401 times, enabled=1, running=1\r
+[SIO] Timer callback executed 26501 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 799957, deepsleep time:390, lightsleep time:721113, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:64310\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 26601 times, enabled=1, running=1\r
+uapi_get_screen_state = off . \r
+[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0\r
+\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 804960, deepsleep time:390, lightsleep time:726033, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:3768\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 26701 times, enabled=1, running=1\r
+[SIO] Timer callback executed 26801 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 809962, deepsleep time:390, lightsleep time:730607, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:8763\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 26901 times, enabled=1, running=1\r
+uapi_get_screen_state = off . \r
+[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0\r
+\r
+[SIO] Timer callback executed 27001 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 814964, deepsleep time:390, lightsleep time:735159, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:13756\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 27101 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 819966, deepsleep time:390, lightsleep time:739828, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:18750\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 27201 times, enabled=1, running=1\r
+uapi_get_screen_state = off . \r
+[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0\r
+\r
+[SIO] Timer callback executed 27301 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 824968, deepsleep time:390, lightsleep time:744408, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:23743\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+APP|charging enable charge !  bat-temp 22.05 Vs highest temp value 50.00 !\r
+APP|45 < 90 percent , enable normal current charge !\r
+[SIO] Timer callback executed 27401 times, enabled=1, running=1\r
+[SIO] Timer callback executed 27501 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 829971, deepsleep time:390, lightsleep time:749009, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:28603\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 27601 times, enabled=1, running=1\r
+uapi_get_screen_state = off . \r
+[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0\r
+\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 834973, deepsleep time:390, lightsleep time:753660, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:33596\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 27701 times, enabled=1, running=1\r
+[SIO] Timer callback executed 27801 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 839975, deepsleep time:390, lightsleep time:758164, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:38592\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 27901 times, enabled=1, running=1\r
+uapi_get_screen_state = off . \r
+[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0\r
+\r
+[SIO] Timer callback executed 28001 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 844977, deepsleep time:390, lightsleep time:762699, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:43585\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 28101 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 849980, deepsleep time:390, lightsleep time:767691, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:48580\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 28201 times, enabled=1, running=1\r
+uapi_get_screen_state = off . \r
+[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0\r
+\r
+[SIO] Timer callback executed 28301 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 854982, deepsleep time:390, lightsleep time:772206, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:53573\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 28401 times, enabled=1, running=1\r
+[SIO] Timer callback executed 28501 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 859984, deepsleep time:390, lightsleep time:776692, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:58569\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 28601 times, enabled=1, running=1\r
+uapi_get_screen_state = off . \r
+[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0\r
+\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 864987, deepsleep time:390, lightsleep time:781664, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:63562\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 28701 times, enabled=1, running=1\r
+APP|charging enable charge !  bat-temp 21.97 Vs highest temp value 50.00 !\r
+APP|45 < 90 percent , enable normal current charge !\r
+[SIO] Timer callback executed 28801 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 869989, deepsleep time:390, lightsleep time:786070, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:2887\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 28901 times, enabled=1, running=1\r
+uapi_get_screen_state = off . \r
+[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0\r
+\r
+[SIO] Timer callback executed 29001 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 874992, deepsleep time:390, lightsleep time:790535, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:7881\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 29101 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 879994, deepsleep time:390, lightsleep time:795517, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:12875\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 29201 times, enabled=1, running=1\r
+uapi_get_screen_state = off . \r
+[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0\r
+\r
+[SIO] Timer callback executed 29301 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 884997, deepsleep time:390, lightsleep time:799920, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:17868\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 29401 times, enabled=1, running=1\r
+[SIO] Timer callback executed 29501 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 889999, deepsleep time:390, lightsleep time:804911, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:22863\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 29601 times, enabled=1, running=1\r
+uapi_get_screen_state = off . \r
+[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0\r
+\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 895001, deepsleep time:390, lightsleep time:809242, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:27857\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 29701 times, enabled=1, running=1\r
+[SIO] Timer callback executed 29801 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 900004, deepsleep time:390, lightsleep time:814138, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:32851\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 29901 times, enabled=1, running=1\r
+uapi_get_screen_state = off . \r
+[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0\r
+\r
+[SIO] Timer callback executed 30001 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 905006, deepsleep time:390, lightsleep time:818641, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:37844\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 30101 times, enabled=1, running=1\r
+APP|charging enable charge !  bat-temp 22.02 Vs highest temp value 50.00 !\r
+APP|45 < 90 percent , enable normal current charge !\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 910009, deepsleep time:390, lightsleep time:823498, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:42704\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 30201 times, enabled=1, running=1\r
+uapi_get_screen_state = off . \r
+[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0\r
+\r
+[SIO] Timer callback executed 30301 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 915012, deepsleep time:390, lightsleep time:827668, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:47697\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 30401 times, enabled=1, running=1\r
+[SIO] Timer callback executed 30501 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 920014, deepsleep time:390, lightsleep time:832647, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:52691\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 30601 times, enabled=1, running=1\r
+uapi_get_screen_state = off . \r
+[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0\r
+\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 925017, deepsleep time:390, lightsleep time:837426, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:57684\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 30701 times, enabled=1, running=1\r
+[SIO] Timer callback executed 30801 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 930019, deepsleep time:390, lightsleep time:841978, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:62677\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 30901 times, enabled=1, running=1\r
+uapi_get_screen_state = off . \r
+[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0\r
+\r
+[SIO] Timer callback executed 31001 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 935022, deepsleep time:390, lightsleep time:846966, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:2135\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 31101 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 940024, deepsleep time:390, lightsleep time:851367, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:7130\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 31201 times, enabled=1, running=1\r
+uapi_get_screen_state = off . \r
+[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0\r
+\r
+[SIO] Timer callback executed 31301 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 945027, deepsleep time:390, lightsleep time:856357, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:12123\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 31401 times, enabled=1, running=1\r
+APP|charging enable charge !  bat-temp 21.92 Vs highest temp value 50.00 !\r
+APP|45 < 90 percent , enable normal current charge !\r
+[SIO] Timer callback executed 31501 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 950030, deepsleep time:390, lightsleep time:859924, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:16983\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 31601 times, enabled=1, running=1\r
+uapi_get_screen_state = off . \r
+[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0\r
+\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 955032, deepsleep time:390, lightsleep time:864233, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:21976\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 31701 times, enabled=1, running=1\r
+[SIO] Timer callback executed 31801 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 960035, deepsleep time:390, lightsleep time:869225, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:26970\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 31901 times, enabled=1, running=1\r
+uapi_get_screen_state = off . \r
+[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0\r
+\r
+[SIO] Timer callback executed 32001 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 965037, deepsleep time:390, lightsleep time:873247, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:31963\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 32101 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 970040, deepsleep time:390, lightsleep time:878238, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:36957\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 32201 times, enabled=1, running=1\r
+uapi_get_screen_state = off . \r
+[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0\r
+\r
+[SIO] Timer callback executed 32301 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 975043, deepsleep time:390, lightsleep time:883228, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:41950\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 32401 times, enabled=1, running=1\r
+[SIO] Timer callback executed 32501 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 980046, deepsleep time:390, lightsleep time:887347, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:46945\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 32601 times, enabled=1, running=1\r
+uapi_get_screen_state = off . \r
+[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0\r
+\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 985048, deepsleep time:390, lightsleep time:892273, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:51938\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 32701 times, enabled=1, running=1\r
+[SIO] Timer callback executed 32801 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 990051, deepsleep time:390, lightsleep time:897245, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:56914\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+APP|charging enable charge !  bat-temp 21.81 Vs highest temp value 50.00 !\r
+APP|45 < 90 percent , enable normal current charge !\r
+[SIO] Timer callback executed 32901 times, enabled=1, running=1\r
+uapi_get_screen_state = off . \r
+[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0\r
+\r
+[SIO] Timer callback executed 33001 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 995054, deepsleep time:390, lightsleep time:902120, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:61794\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 33101 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 1000057, deepsleep time:390, lightsleep time:907112, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:1253\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 33201 times, enabled=1, running=1\r
+uapi_get_screen_state = off . \r
+[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0\r
+\r
+[SIO] Timer callback executed 33301 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 1005060, deepsleep time:390, lightsleep time:910345, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:6245\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 33401 times, enabled=1, running=1\r
+[SIO] Timer callback executed 33501 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 1010062, deepsleep time:390, lightsleep time:915334, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:11239\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 33601 times, enabled=1, running=1\r
+uapi_get_screen_state = off . \r
+[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0\r
+\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 1015065, deepsleep time:390, lightsleep time:920324, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:16233\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 33701 times, enabled=1, running=1\r
+[SIO] Timer callback executed 33801 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 1020068, deepsleep time:390, lightsleep time:925316, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:21228\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 33901 times, enabled=1, running=1\r
+uapi_get_screen_state = off . \r
+[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0\r
+\r
+[SIO] Timer callback executed 34001 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 1025071, deepsleep time:390, lightsleep time:930306, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:26222\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 34101 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 1030074, deepsleep time:390, lightsleep time:933408, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:31216\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 34201 times, enabled=1, running=1\r
+APP|charging enable charge !  bat-temp 21.81 Vs highest temp value 50.00 !\r
+APP|45 < 90 percent , enable normal current charge !\r
+uapi_get_screen_state = off . \r
+[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0\r
+\r
+[SIO] Timer callback executed 34301 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 1035077, deepsleep time:390, lightsleep time:936876, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:36075\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 34401 times, enabled=1, running=1\r
+[SIO] Timer callback executed 34501 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 1040079, deepsleep time:390, lightsleep time:941864, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:41069\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 34601 times, enabled=1, running=1\r
+uapi_get_screen_state = off . \r
+[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0\r
+\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 1045082, deepsleep time:390, lightsleep time:946854, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:46062\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 34701 times, enabled=1, running=1\r
+[SIO] Timer callback executed 34801 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 1050085, deepsleep time:390, lightsleep time:951157, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:51057\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 34901 times, enabled=1, running=1\r
+uapi_get_screen_state = off . \r
+[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0\r
+\r
+[SIO] Timer callback executed 35001 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 1055087, deepsleep time:390, lightsleep time:956119, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:56051\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 35101 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 1060090, deepsleep time:390, lightsleep time:961104, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:61044\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 35201 times, enabled=1, running=1\r
+uapi_get_screen_state = off . \r
+[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0\r
+\r
+[SIO] Timer callback executed 35301 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 1065093, deepsleep time:390, lightsleep time:966089, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:500\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 35401 times, enabled=1, running=1\r
+[SIO] Timer callback executed 35501 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 1070096, deepsleep time:390, lightsleep time:971081, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:5495\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+APP|charging enable charge !  bat-temp 21.71 Vs highest temp value 50.00 !\r
+APP|45 < 90 percent , enable normal current charge !\r
+[SIO] Timer callback executed 35601 times, enabled=1, running=1\r
+uapi_get_screen_state = off . \r
+[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0\r
+\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 1075099, deepsleep time:390, lightsleep time:975935, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:10354\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 35701 times, enabled=1, running=1\r
+[SIO] Timer callback executed 35801 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 1080102, deepsleep time:390, lightsleep time:980927, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:15349\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 35901 times, enabled=1, running=1\r
+uapi_get_screen_state = off . \r
+[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0\r
+\r
+[SIO] Timer callback executed 36001 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 1085105, deepsleep time:390, lightsleep time:984276, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:20342\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 36101 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 1090107, deepsleep time:390, lightsleep time:989266, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:25336\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 36201 times, enabled=1, running=1\r
+uapi_get_screen_state = off . \r
+[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0\r
+\r
+[SIO] Timer callback executed 36301 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 1095110, deepsleep time:390, lightsleep time:994256, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:30330\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 36401 times, enabled=1, running=1\r
+[SIO] Timer callback executed 36501 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 1100113, deepsleep time:390, lightsleep time:999248, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:35326\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 36601 times, enabled=1, running=1\r
+uapi_get_screen_state = off . \r
+[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0\r
+\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 1105115, deepsleep time:390, lightsleep time:1003501, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:40319\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 36701 times, enabled=1, running=1\r
+[SIO] Timer callback executed 36801 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 1110118, deepsleep time:390, lightsleep time:1008493, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:45315\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 36901 times, enabled=1, running=1\r
+uapi_get_screen_state = off . \r
+[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0\r
+\r
+APP|charging enable charge !  bat-temp 21.71 Vs highest temp value 50.00 !\r
+APP|45 < 90 percent , enable normal current charge !\r
+[SIO] Timer callback executed 37001 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 1115121, deepsleep time:390, lightsleep time:1013348, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:50175\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 37101 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 1120124, deepsleep time:390, lightsleep time:1018340, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:55169\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 37201 times, enabled=1, running=1\r
+uapi_get_screen_state = off . \r
+[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0\r
+\r
+[SIO] Timer callback executed 37301 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 1125127, deepsleep time:390, lightsleep time:1023330, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:60162\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 37401 times, enabled=1, running=1\r
+[SIO] Timer callback executed 37501 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 1130130, deepsleep time:390, lightsleep time:1027647, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:65158\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 37601 times, enabled=1, running=1\r
+uapi_get_screen_state = off . \r
+[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0\r
+\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 1135133, deepsleep time:390, lightsleep time:1029646, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:4614\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 37701 times, enabled=1, running=1\r
+[SIO] Timer callback executed 37801 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 1140135, deepsleep time:390, lightsleep time:1034593, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:9610\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 37901 times, enabled=1, running=1\r
+uapi_get_screen_state = off . \r
+[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0\r
+\r
+[SIO] Timer callback executed 38001 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 1145138, deepsleep time:390, lightsleep time:1039580, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:14603\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 38101 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 1150141, deepsleep time:390, lightsleep time:1044572, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:19599\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 38201 times, enabled=1, running=1\r
+uapi_get_screen_state = off . \r
+[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0\r
+\r
+[SIO] Timer callback executed 38301 times, enabled=1, running=1\r
+APP|charging enable charge !  bat-temp 21.71 Vs highest temp value 50.00 !\r
+APP|45 < 90 percent , enable normal current charge !\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 1155144, deepsleep time:390, lightsleep time:1049426, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:24457\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 38401 times, enabled=1, running=1\r
+[SIO] Timer callback executed 38501 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 1160147, deepsleep time:390, lightsleep time:1054418, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:29450\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 38601 times, enabled=1, running=1\r
+uapi_get_screen_state = off . \r
+[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0\r
+\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 1165150, deepsleep time:390, lightsleep time:1059408, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:34442\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 38701 times, enabled=1, running=1\r
+[SIO] Timer callback executed 38801 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 1170153, deepsleep time:390, lightsleep time:1064210, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:39437\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 38901 times, enabled=1, running=1\r
+uapi_get_screen_state = off . \r
+[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0\r
+\r
+[SIO] Timer callback executed 39001 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 1175156, deepsleep time:390, lightsleep time:1067648, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:44430\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 39101 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 1180158, deepsleep time:390, lightsleep time:1072637, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:49424\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 39201 times, enabled=1, running=1\r
+uapi_get_screen_state = off . \r
+[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0\r
+\r
+[SIO] Timer callback executed 39301 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 1185161, deepsleep time:390, lightsleep time:1077624, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:54417\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 39401 times, enabled=1, running=1\r
+[SIO] Timer callback executed 39501 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 1190164, deepsleep time:390, lightsleep time:1082616, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:59412\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 39601 times, enabled=1, running=1\r
+uapi_get_screen_state = off . \r
+[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0\r
+\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 1195167, deepsleep time:390, lightsleep time:1087586, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:64386\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+APP|charging enable charge !  bat-temp 21.55 Vs highest temp value 50.00 !\r
+APP|45 < 90 percent , enable normal current charge !\r
+[SIO] Timer callback executed 39701 times, enabled=1, running=1\r
+[SIO] Timer callback executed 39801 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 1200170, deepsleep time:390, lightsleep time:1092464, m sleep flag:0\r
+APP|M core deepsleep cnt:12, lightsleep cnt:3731\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 39901 times, enabled=1, running=1\r
+uapi_get_screen_state = off . \r
+[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0\r
+\r
+fac:enter or exit facotry mode :1\r
+enter or exit facotry mode :1\r
+APP|bt not send ack[b66],don't to reset,try 0.\r
+����������������������������x���������������������������x������APP|App uart init succ.\r
+APP|ipc reg info:int en:0,int:0,int sts:0.\r
+APP|int clr:0,clr sts:0,int set:0.\r
+APP|pmu_power_on_init begin\r
+APP|ppmu_power�on_init end\r
+chip temperature=27.400000(tmp=1818)\r
+APP|Flash id is 186585, init success\r
+APP|startup reason flag is 0x0\r
+APP|bootup reasion 3 (0-systick 1-pwrkey 2-vbus 3-other) cpu_resetcase 0x2001\r
+APP|CPU reset Case is REBOOT , no need check PowerKey\r
+[osal_msg_queue_write_copy:35]:LOS_QueueWriteCopy failed! ret = 0x200060e.qID=0xffffffff\r
+APP|at cmd receive send msg error!\r
+APP|battery Voltage 3.81\r
+APP|entering NormalMode\r
+APP|partition init success\r
+APP|upg init success\r
+[osal_msg_queue_create:25]:qName:nv_write_task qID=0x0 \r
+APP|calibration nv is not active\r
+\r
+cpu 0 entering scheduler\r
+app_init start ok\r
+APP|thread_main start \r
+APP|find nand flash chip id: 0x0B52\r
+APP|nand flash XT26Q02D start init\r
+APP|\r
+nandflash init start.\r
+APP|xt26q02d_init \r
+APP|nandflash A0 Reg:0x0 \r
+APP|nandflash B0 Reg:0x11 \r
+APP|nandflash C0 Reg:0x2 \r
+APP|\r
+nandflash_qspi_init success\r
+APP|\r
+ nandflash init end.\r
+APP|yaffs filesystem init start!\r
+mount outer.\r
+APP|formate filesystem devinfo: index = 0 , dev_name = /dev/nandblk0, folder_name = /user/,               part_start_sector = 0, part_count_sector = 2048\r
+APP|yaffs filesystem init end!\r
+APP|nandflash init success\r
+APP|Succ read lcd id! Lcd id: 0x5598\r
+APP|PowerOn Cat1 !\r
+[CAT1_ERR]Unable to create socket: errno 105\r
+\r
+[CAT1_ERR]socket init fail and retry\r
+\r
+[WEARABLE I/] UtilsSetEnv /system ret = 0\r
+[WEARABLE E/] ConfigModel::Init 1\r
+[WEARABLE E/] /* -------------------------------- ConfigData: ------------------------------- */\r
+\r
+[WEARABLE E/] item(classicbt_service_on):type(bool):value(1)\r
+[WEARABLE E/] item(screen_brightness):type(int):value(5)\r
+[WEARABLE E/] item(screenoff_timeout_value):type(int):value(5000)\r
+[WEARABLE E/] item(cat1_service_on):type(bool):value(0)\r
+[WEARABLE E/] item(cat1_imei):type(string):value(pls poweron 4G first)\r
+[WEARABLE E/] item(cat1_modemver):type(string):value(pls poweron 4G first)\r
+[WEARABLE E/] item(cat1_pyver):type(string):value(pls poweron 4G first)\r
+[WEARABLE E/] item(ppp_baudrate):type(int):value(1000000)\r
+[WEARABLE E/] item(language_id):type(int):value(0)\r
+[WEARABLE E/] item(language_code):type(string):value(zh)\r
+[WEARABLE E/] item(timezone):type(int):value(32)\r
+[WEARABLE E/] item(slient_mode):type(bool):value(0)\r
+[WEARABLE E/] item(vibrator_switch):type(int):value(2)\r
+[WEARABLE E/] item(rase2wake):type(bool):value(1)\r
+[WEARABLE E/] item(stepcount):type(int):value(0)\r
+[WEARABLE E/] item(calories):type(int):value(0)\r
+[WEARABLE E/] item(standup_times):type(int):value(0)\r
+[WEARABLE E/] item(duration):type(int):value(0)\r
+[WEARABLE E/] item(distance):type(double):value(0.000000)\r
+[WEARABLE E/] item(activity_timestamp):type(int):value(0)\r
+[WEARABLE E/] item(height):type(int):value(175)\r
+[WEARABLE E/] item(weight):type(int):value(70)\r
+[WEARABLE E/] item(sex):type(int):value(1)\r
+[WEARABLE E/] item(age):type(int):value(30)\r
+[WEARABLE E/] item(wearing_mode):type(int):value(0)\r
+[WEARABLE E/] item(goal_stepcount):type(int):value(5000)\r
+[WEARABLE E/] item(goal_calories):type(int):value(300)\r
+[WEARABLE E/] item(goal_standup_times):type(int):value(10)\r
+[WEARABLE E/] item(goal_duration):type(int):value(30)\r
+[WEARABLE E/] item(goal_distance):type(int):value(3)\r
+[WEARABLE E/] item(goal_step_notification):type(int):value(1)\r
+[CAT1_ERR]Unable to create socket: errno 105\r
+\r
+[CAT1_ERR]socket init fail and retry\r
+\r
+[WEARABLE E/] item(goal_other_notification):type(int):value(1)\r
+[WEARABLE E/] item(dnotdisturb):type(bool):value(0)\r
+[WEARABLE E/] item(unread):type(bool):value(0)\r
+[WEARABLE E/] item(voltecall):type(bool):value(1)\r
+[WEARABLE E/] item(motion_recognition):type(bool):value(0)\r
+[WEARABLE E/] item(hfp):type(bool):value(1)\r
+[WEARABLE E/] item(a2dp):type(bool):value(1)\r
+[WEARABLE E/] item(spp):type(bool):value(1)\r
+[WEARABLE E/] item(traningfreq):type(int):value(10)\r
+[WEARABLE E/] item(traningauto):type(int):value(1)\r
+[WEARABLE E/] item(traningheart):type(int):value(190)\r
+[WEARABLE E/] item(heartrate_freq):type(int):value(30)\r
+[WEARABLE E/] item(heartrate_remind):type(int):value(0)\r
+[WEARABLE E/] item(heartrate_threshold_value):type(int):value(0)\r
+[WEARABLE E/] item(heart_max_min):type(int):value(0)\r
+[WEARABLE E/] item(oxygen_freq):type(int):value(0)\r
+[WEARABLE E/] item(oxygen_remind):type(int):value(0)\r
+[WEARABLE E/] item(oxygen_threshold_value):type(int):value(95)\r
+[WEARABLE E/] item(notify):type(int):value(0)\r
+[WEARABLE E/] item(quick_auxil_parameter):type(int):value(0)\r
+[WEARABLE E/] item(drink):type(int):value(0)\r
+[WEARABLE E/] item(drinkgoal):type(int):value(0)\r
+[WEARABLE E/] item(drinkstart):type(int):value(0)\r
+[WEARABLE E/] item(drinkend):type(int):value(0)\r
+[WEARABLE E/] item(drinkfreq):type(int):value(0)\r
+[WEARABLE E/] item(sleep):type(int):value(1)\r
+[WEARABLE E/] item(sleep_bedtime):type(int):value(1310720)\r
+[WEARABLE E/] item(sleep_getup):type(int):value(589824)\r
+[WEARABLE E/] item(sleep_remide):type(int):value(0)\r
+[WEARABLE E/] item(sleep_mode):type(int):value(0)\r
+[WEARABLE E/] item(sedentary_switch):type(int):value(0)\r
+[WEARABLE E/] item(sedentary_interval):type(int):value(1)\r
+[WEARABLE E/] item(sedentary_remindertime):type(int):value(0)\r
+[WEARABLE E/] item(password):type(string):value(000000)\r
+[WEARABLE E/] item(passwordswich):type(int):value(0)\r
+[WEARABLE E/] item(message_index):type(int):value(0)\r
+Invalid key or value\r
+[WEARABLE E/] item(sim_iccid):type(string):value(-1)\r
+Invalid key or value\r
+[WEARABLE E/] item(telecom_regist_timesec):type(string):value(-1)\r
+[WEARABLE E/] item(dmp_factory_status):type(int):value(0)\r
+[WEARABLE E/] item(dmp_change_mode):type(int):value(0)\r
+[WEARABLE E/] item(dmp_change_mode_old):type(int):value(0)\r
+[WEARABLE E/] item(time_hour_show_model):type(int):value(24)\r
+[WEARABLE E/] item(dmp_china_mobile_address):type(string):value(b.fxltsbl.com)\r
+[WEARABLE E/] item(select_aimodel):type(int):value(0)\r
+[WEARABLE E/] item(is_first_time_start):type(bool):value(1)\r
+[WEARABLE E/] item(open_ai_api_keys):type(string):value(-1)\r
+[WEARABLE E/] item(applist_style):type(string):value(arc_scale_list)\r
+[WEARABLE E/] item(android_or_ios):type(int):value(0)\r
+[WEARABLE E/] item(br_pari):type(int):value(0)\r
+[WEARABLE E/] item(ota_upgrade):type(int):value(0)\r
+[WEARABLE E/] item(color_index):type(int):value(0)\r
+[WEARABLE E/] item(color_value):type(int):value(0)\r
+[WEARABLE E/] item(flashing_level):type(int):value(0)\r
+[WEARABLE E/] item(rt_select_time):type(int):value(1)\r
+[WEARABLE E/] item(goal_stepcount_time):type(int):value(1)\r
+[WEARABLE E/] item(goal_calories_time):type(int):value(1)\r
+[WEARABLE E/] item(goal_standup_times_time):type(int):value(1)\r
+[WEARABLE E/] item(goal_duration_time):type(int):value(1)\r
+[WEARABLE E/] item(goal_distance_time):type(int):value(1)\r
+[WEARABLE E/] item(urat_at_status):type(bool):value(0)\r
+[WEARABLE E/] item(runtime_log_status):type(int):value(0)\r
+Invalid key or value\r
+[WEARABLE E/] item(ai_dev_id):type(string):value(-1)\r
+Invalid key or value\r
+[WEARABLE E/] item(dmp_data_pass):type(string):value(-1)\r
+[WEARABLE E/] /* -------------------------------------------------------------------------- */\r
+\r
+get nv local_addr : ******dab5da\r
+CALLENDAR:year = 2026, month = 1, day = 17, hour = 23, minute = 54, second = 25 \r
+callendar timestamp = 1768694065907 \r
+sync time timestamp 1768694065, timezone_in_quarters 32 \r
+[A][aw88082_i2c_init:353]aw88082 i2c init success\r
+[osal_msg_queue_create:25]:qName:sap_msg qID=0x1 \r
+APP|audio init OK\r
+APP|**********startup info**********\r
+APP|os init class is liteos.\r
+APP|store init class is nandflash.\r
+APP|display init class is MIPI.\r
+APP|board init class is E0B4.\r
+APP|psram density is 32MB.\r
+APP|**********startup info**********\r
+APP|No need to upgrade...\r
+[osal_msg_queue_create:25]:qName:at_queue qID=0x2 \r
+[osal_msg_queue_create:25]:qName:graphic_at_service_queue qID=0x3 \r
+[osal_msg_queue_create:25]:qName:app_at_service_queue qID=0x4 \r
+[osal_msg_queue_create:25]:qName:audio_at_service_queue qID=0x5 \r
+[osal_msg_queue_create:25]:qName:bt_cmd_queue qID=0x6 \r
+[osal_msg_queue_create:25]:qName:media_at_service_queue qID=0x7 \r
+[osal_msg_queue_create:25]:qName:dfx_msg qID=0x8 \r
+[osal_msg_queue_create:25]:qName:transmit qID=0x9 \r
+APP|Turning on LCD backlight...\r
+APP|SET DSP freq=3, div=6, codec freq=3, div=36\r
+[A][ALERT][sys_cmd_check_cmd_done:164] wait_time_us = 600\r
+[A][ALERT][drv_sys_pon:297] DSP0 power on\r
+[DISPLAY I/] GrallocInitialize: gralloc initialize success\r
+[DISPLAY I/] LayerInitialize: layer initialize success\r
+[DISPLAY I/] PrintLayerInfo: layerInfo:\r
+[DISPLAY I/] PrintLayerInfo: type = 0\r
+[DISPLAY I/] PrintLayerInfo: width = 360\r
+[DISPLAY I/] PrintLayerInfo: height = 360\r
+[DISPLAY I/] PrintLayerInfo: bpp = 24\r
+[DISPLAY I/] PrintLayerInfo: pixFormat = 17\r
+[DISPLAY I/] VGUInitialize: VGU initializes successfully\r
+[DISPLAY I/] InitMemPool: Memory Pool has been inited.\r
+[DISPLAY I/] GrallocInitialize: gralloc initialize success\r
+====InitDfxCmd===\r
+APP|lwip_main run start.\r
+SLIP test initialization...\r
+ sio_uart_init 583\r
+ sio_uart_init 588\r
+uapi_uart_register_rx_callback ret=0\r
+ sio_ubrightness:5\r
+Brightness: 5% → Fall Edge: 7 → LED Current: 2.5mA\r
+APP|LCD backlight turned on (CUSTOM_UTILS + BOARD_LEINIAO)\r
+[Graphic Error] [ResumeSlice: 225]No valid slice to resume\r
+APP|[POWER_MANAGER E/] filter_timer_execute_system_rule: filter timer, current default timeout:5000, keepon time:25000, event:5.\r
+APP|No need to upgrade...\r
+art_init 606\r
+ sio_open 1007\r
+[SLIP] Enabling SIO ping-pong buffer interrupt mode...\r
+[SIO] Enabling interrupt mode (ping-pong buffer)\r
+[SIO] Allocated 3 x 2048 bytes = 6.00 KB total\r
+[osal_msg_queue_create:25]:qName:sio_irq_queue qID=0xb \r
+[SIO] Message queue created (depth=32)\r
+[SIO] IRQ process thread started (ping-pong mode)\r
+[SIO] IRQ process thread created (PSRAM stack)\r
+[SIO] Timeout timer started (period=30 ms)\r
+[SIO] Interrupt mode enabled successfully!\r
+  - Buffers: 3 x 2 KB\r
+  - Timeout: 30 ms\r
+  - Queue: 32 slots\r
+[SLIP] SIO APP|audio manager init ok\r
+APP|app_main run start.\r
+ping-pong buffer enabled successfully!\r
+create slipif_loop_thread succed\r
+ sio_uart_init 583\r
+ sio_open 1007\r
+[SLIP] Enabling SIO ping-pong buffer interrupt mode...\r
+[SIO] Interrupt already enabled\r
+[SLIP] SIO ping-pong buffer enabled successfully!\r
+create slipif_loop_thread succed\r
+SLIP netif set as default interface\r
+SLIP netif initialized successfully\r
+IP: 172.16.1.5\r
+Netmask: 255.255.255.0\r
+Gateway: 172.16.1.2\r
+create tcpip_thread succed\r
+[SIO] Timer callback executed 1 times, enabled=1, running=1\r
+[osal_msg_queue_create:25]:qName:app_queue qID=0xc \r
+APP|uapi_vibrator_service_init !\r
+[osal_msg_queue_create:25]:qName:vibrator_service_queue qID=0xd \r
+fac:g_VibratorFunc delaytime_ms_high  2 ,  delaytime_ms_low 2 \r
+g_VibratorFunc delaytime_ms_high  2 ,  delaytime_ms_low 2 \r
+APP|uapi_battery_init !\r
+[osal_msg_queue_create:25]:qName:battery_queue qID=0xe \r
+APP|charging enable charge !  bat-temp 21.50 Vs highest temp value 50.00 !\r
+APP|44 < 90 percent , enable normal current charge !\r
+APP|charging enable charge !  bat-temp 21.58 Vs highest temp value 50.00 !\r
+APP|44 < 90 percent , enable normal current charge !\r
+APP|uapi_custom_cmd_service_init !\r
+[osal_msg_queue_create:25]:qName:custom_cmd_service_queue qID=0xf \r
+APP|uapi_custom_fileoperate_service_init !\r
+[osal_msg_queue_create:25]:qName:custom_fileoperate_service_queue qID=0x10 \r
+[A][ALERT][sys_cmd_check_cmd_done:164] wait_time_us = 400\r
+[A][ALERT][drv_sys_pd:331] DSP0 power down\r
+[SIO] Timer callback executed 101 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 8676, deepsleep time:0, lightsleep time:3593, m sleep flag:1\r
+APP|M core deepsleep cnt:0, lightsleep cnt:7632\r
+APP|M core last veto id:7, last veto count:0, total_counts=0\r
+[SIO] Timer callback executed 201 times, enabled=1, running=1\r
+[CAT1_WRN]MESSAGE_4G_VERSION_SYNCED\r
+[CAT1_WRN]MESSAGE_4G_POWERON pyver(PY_SRV_V29) modemver(EG800AKCN91LCR07A01M04_OCPU_QPY_BETA1215)\r
+kvPath: /user/system/kvstore\r
+dataPath: /user/system key: dmp_change_mode_old value: 0\r
+Set value ret: 0\r
+set_dmp_china_mobile_factory_flag:0\r
+kvPath: /user/system/kvstore\r
+dataPath: /user/system key: dmp_factory_status value: 0\r
+Set value ret: 0\r
+[CAT1_WRN]cat1_getsignal: rsrq_db=14.000000, rsrp_dbm=-83.000000\r
+\r
+[CAT1_WRN]cat1_getsignal: Updated signal strength via AT+CESQ - signal_bars=3 (was 0)\r
+\r
+[CAT1_WRN]MESSAGE_4G_NETWORK_CONNECTED\r
+[CAT1_WRN]MESSAGE_4G_AT_RECEIVED +CESQ:50,99,255,255,34,57\r
+\r
+\r
+[CAT1_WRN]MESSAGE_4G_AT_RECEIVED at error\r
+[CAT1_WRN]MESSAGE_4G_NETWORK_STAT_CHANGED netstat(1),signal(26),sim(1),network(4G/LTE),imei(867998086791248),iccid(89860492192590378178),operator(('CHINA MOBILE', 'CMCC', '460', '00'))\r
+Network Stat Signal值: 26\r
+sync time utc timestamp 1768636473, timezone_in_quarters 32 \r
+[CAT1_WRN]MESSAGE_4G_TIME_SYNCED\r
+uapi_get_screen_state = on . \r
+sync time utc timestamp 1768636474, timezone_in_quarters 32 \r
+[CAT1_WRN]MESSAGE_4G_TIME_SYNCED\r
+[SIO] Timer callback executed 301 times, enabled=1, running=1\r
+[CAT1_WRN]cat1_getsignal: rsrq_db=14.000000, rsrp_dbm=-83.000000\r
+\r
+[CAT1_WRN]MESSAGE_4G_AT_RECEIVED +CESQ:50,99,255,255,34,57\r
+\r
+\r
+APP|app_main run start.\r
+APP|sys_slp: 0x1\r
+APP|M core run time 13713, deepsleep time:399, lightsleep time:6213, m sleep flag:1\r
+APP|M core deepsleep cnt:13, lightsleep cnt:10661\r
+APP|M core last veto id:7, last veto count:0, total_counts=0\r
+[WEARABLE E/] kill boot_animation_task failed -3!\r
+APP|No need to upgrade...\r
+[WEARABLE I/] InitBroadcastService start!\r
+[WEARABLE I/] start! topicSubscriberInfo=0x0x6c104fb8\r
+[WEARABLE I/] InitBroadcastService end!\r
+APP|[POWER_MANAGER E/] filter_timer_execute_system_rule: filter timer, current default timeout:5000, keepon time:0, event:5.\r
+APP|startup_post_init !\r
+APP|startup_post_init_task !\r
+I ams starts successfully\r
+I bms starts successfully\r
+[23:54:35:079][I][Init:37]Locator service starts successfully \r
+[23:54:35:080][D][Init:56][SERVICE:sensor_service]: Init begin \r
+[WEARABLE I/] WatchConnectCmdRegister\r
+I ams feature init success\r
+I [BMS] bms feature init success\r
+[23:54:35:083][I][Init:56]Locator feature init success \r
+[23:54:35:085][D][GetTaskConfig:80][SERVICE:sensor_service]: GetTaskConfig begin \r
+[WEARABLE I/] BroadcastService featureId=4294967295, queueId=536924612, serviceId=2\r
+[WEARABLE I/] BroadcastFeature featureId=0, queueId=536924612, serviceId=2\r
+APP|fread failed \r
+=== Starting AudioPlayer playback ===\r
+File: /user/res/music/FactoryMode.mp3, Volume: 100.0%\r
+[WEARABLE I/] NativeAbility InstallAbility\r
+D MemUtils::InitPSRam g_psramMemory = 6c200000\r
+I BundleMgrService::ServiceMessageHandle\r
+[23:54:35:094][I][OnFeatureInitialize:85]Locator feature init \r
+[23:54:35:095][I][InitAbility:84]initAbility start \r
+[23:54:35:096][I][Initialize:71]ability constructed. \r
+[23:54:35:097][E][InitAbility:90]Initialize gps ability, result 1 \r
+[23:54:35:099][I][Initialize:54]LocatorAbility Initialize. \r
+[23:54:35:100][I][OnFeatureInitialize:89]LocatorAbility initialize success \r
+[23:54:35:102][D][Initialize:62][SERVICE:sensor_service]: Initialize begin \r
+[23:54:35:103][DAudio file exists, size: 32768 bytes\r
+AudioPlayer instance obtained\r
+[23:54:35:105][I]{IsPlaying():810} player_ is NULL! \r
+Initial playing state: false\r
+Setting audio source...\r
+Audio source set successfully\r
+Setting volume to 1.00 (100.0%)\r
+Starting playback...\r
+[23:54:35:108][I]{IsPlaying():810} player_ is NULL! \r
+Final state - Status: play, IsPlaying: false\r
+=== AudioPlayer playback started successfully ===\r
+[23:54:35:112][I]{Player():40} Player process \r
+[23:54:35:112][I]{RunAudioPlay():277} current play source = /user/res/music/FactoryMode.mp3, index = 0 \r
+[23:54:35:114][I]{Init():108} process in \r
+[23:54:35:116][I]{Init():138} process out \r
+[23:54:35:116][I]{SetSource():164} process in, source_type:0 \r
+[23:54:35:117][I]{Init():300} Init in \r
+][NewSensorInterfaceInstance:47]Get sensor device instance success \r
+I The public key already exists!\r
+E [BMS] GetJsonStream IsFile fail\r
+I [BMS] InstallPreBundle uninstallRecord is nullptr!\r
+[23:54:35:123][E]{EventCallback():1884} callbackFun nullptr  \r
+[23:54:35:124][I]{Prepare():271} process in \r
+[23:54:35:125][I]{UpdateState():215} @@player UpdateState, state:1 \r
+[23:54:35:139][I]{SyncPrepare():2047} no extradata metadata \r
+[23:54:35:140][I]{SyncPrepare():2054} used audiostream index 0 \r
+[23:54:35:141][I]{SyncPrepare():2055} used videostream index -1 \r
+[23:54:35:142][I]{UpdateState():215} @@player UpdateState, state:2 \r
+[23:54:35:143][I]{UpdateState():215} @@player UpdateState, state:2 \r
+[23:54:35:145][I]{ShowFileInfo():203} audio duration=1728,channel count=1,sample rate=16000 \r
+[23:54:35:147][I]{ShowFileInfo():206} used audio stream index=0, used video stream index=-1 \r
+[23:54:35:148][I]{Prepare():313} process out \r
+[23:54:35:149][I]{SetAudioSessionId():1304} process in \r
+[23:54:35:150][I]{DoInvoke():2108} audio sessionId: 1 \r
+[23:54:35:152][I]{UpdateState():215} @@player UpdateState, state:2 \r
+[23:54:35:153][I]{SetAudioStreamType():679} process in \r
+[23:54:35:154][I]{DoInvoke():2127} streamType: 0x400000 \r
+[23:54:35:155][I]{UpdateState():215} @@player UpdateState, state:2 \r
+[23:54:35:157][I]{SetPlayerCallback():837} process in \r
+[23:54:35:158][I]{Play():343} process in \r
+[23:54:35:159][I]{UpdateState():215} @@player UpdateState, state:2 \r
+[23:54:35:160][I]{SetMediaStream():333} used video w=0,h=0,index=-1 \r
+[23:54:35:161][I]{AddAudioSink():871} AddAudioSink, format:14, sampleRate:16000, channel:1, session:1, streamType:4194304, bitWidth:16 \r
+[23:54:35:164][I]{Init():149} AudioSink init audioformat:14 \r
+[23:54:35:166][I]{Init():156} init success \r
+[23:54:35:166][I]{GetOffloadSupport():892} GetOffloadSupport format:14, audio:8 \r
+[23:54:35:168][I]{GetOffloadSupport():894} supported audio offload \r
+APP|SET DSP freq=3, div=6, codec freq=3, div=36\r
+APP|set hifi mode=1.\r
+APP|SET DSP freq=3, div=6, codec freq=3, div=36\r
+[A][ALERT][sys_cmd_check_cmd_done:164] wait_time_us = 500\r
+[A][ALERT][drv_sys_pon:297] DSP0 power on\r
+[Graphic Warning] [InitLineBreakEngine: 138]Open lineBreak rule file failed\r
+[WEARABLE I/] NativeLauncher::InitNativeLauncher\r
+[WEARABLE I/] bt bts_set_features ret = 0\r
+[osal_msg_queue_create:25]:qName:BT_SERVICE_MSG qID=0x1b \r
+aw_sysst_check succed\r
+aw_pa_start \r
+[23:54:35:389][I]{DecoderStart():791} audio stream id: 0, video stream id: -1 \r
+[23:54:35:390][I]{DataSchProcess():1535} start work \r
+[23:54:35:391][I]{UpdateState():215} @@player UpdateState, state:3 \r
+[23:54:35:392][I]{Play():372} process out \r
+[23:54:35:393][I]{EnableSingleLooping():894} process in \r
+[23:54:35:394][I]{OnPlay():103} AudioPlayerCallback::OnPlay enter \r
+[23:54:35:395][I]{OnPlay():107} AudioPlayerCallback::OnPlay exit \r
+[23:54:35:397][I]{AudioPlay():204} wait play start ! \r
+[WEARABLE I/] bt enable_bt_stack ret = 0\r
+[WEARABLE I/] watchName: LNb5da\r
+[WEARABLE I/] nameLen: 7\r
+[WEARABLE E/] cm_initScreenBrightness\r
+kvPath: /user/system/kvstore\r
+dataPath: /user/system key: screen_brightness value: 5\r
+Set value ret: 0\r
+I AbilityMgrSliteFeature::OnFeatureInitialize featureId = 0, queueId = 536924804, serviceId = 6\r
+[WEARABLE I/] NativeAbility OnActive\r
+[WEARABLE E/] 目前绑定状态 1\r
+[WEARABLE E/] [DEVICE_CHARACTER] read character config\r
+[WEARABLE E/] ThunderBirdModel::ParseCharacterConfigData: parsing JSON data\r
+[WEARABLE E/] JSON data: {"data":{"characterId":"8541730805e2","characterName":"Amby","characterAvatar":{"eyesShape":"round-eyes","eyesColor":"amber","hairStyle":"curly-hair","hairColor":"warm-orange","staticAvatar":"https://file-virtual-person.api-cn.leiniao.com/92/virtual-person/015184811450900000989728653.png","screenImage":null,"deviceScreen":null,"screenImageAsEmoji":false}}}\r
+[WEARABLE E/] ThunderBirdModel::ParseCharacterConfigData: eyesShape = round-eyes\r
+[WEARABLE E/] ThunderBirdModel::ParseCharacterConfigData: hairColor = orange\r
+[WEARABLE E/] ThunderBirdModel::ParseCharacterConfigData: eyesColor = amber\r
+[WEARABLE E/] ThunderBirdModel::ParseCharacterConfigData: hairStyle = curly-hair\r
+[WEARABLE E/] ThunderBirdModel::ParseCharacterConfigData: screenImageAsEmoji = false\r
+[WEARABLE E/] ThunderBirdModel::ParseCharacterConfigData: parsing completed\r
+[WEARABLE E/] Final values: eyesShape=round-eyes, hairColor=orange, eyesColor=amber, hairStyle=curly-hair, screenImage=, screenImageAsEmoji=false\r
+[DEVICE_CHARACTER] read character config success\r
+  eyesShape_ = round-eyes  hairColor_ = orange  eyesColor_ = amber  hairStyle_ = curly-hair  hasScreenImage_ = 0  screenImageAsEmoji_ = 0[WEARABLE I/] Ability StartSlice 37 page 0 size:1\r
+[WEARABLE E/] ThunderBirdMainView::Initback videoPlay_->StartVideoPlay\r
+[23:54:35:508][I]{Player():40} Player process \r
+[23:54:35:509][I]{Init():108} process in \r
+[23:54:35:509][I]{Init():138} process out \r
+[23:54:35:510][I]{SetSource():164} process in, source_type:0 \r
+[23:54:35:511][I]{Init():300} Init in \r
+[23:54:35:521][E]{EventCallback():1884} callbackFun nullptr  \r
+[23:54:35:522][I]{Prepare():271} process in \r
+[23:54:35:522][I]{UpdateState():215} @@player UpdateState, state:1 \r
+关闭屏保模式\r
+[WEARABLE E/] ThunderBirdModel::StartBootOperation\r
+[WEARABLE E/] ThunderBirdModel::StartBootOperation\r
+[WEARABLE E/] ThunderBirdMainView::ChangeView hideView=8, showView=3, subView=2\r
+[WEARABLE E/] PullUpDownView::InitBaseData\r
+[WEARABLE E/] group1 init success\r
+[WEARABLE E/] timeLabelBlack add success - Position: (2,6) Size: (60,33) Color: Black\r
+[WEARABLE E/] timeLabel add success\r
+[WEARABLE E/] earphoneIcon add success\r
+[WEARABLE E/] NoSignal add success\r
+[WEARABLE E/] showSignalStrength add success\r
+[WEARABLE E/] batteryimage add success\r
+[WEARABLE E/] progress add success\r
+[WEARABLE E/] batteryLabel add success\r
+[WEARABLE E/] chargeBatteryicon add success\r
+[WEARABLE E/] listenIcon add success\r
+[WEARABLE E/] Network status changed: previous=0, current=1, hasNetwork=1\r
+volumeDelta = 50\r
+[WEARABLE E/] InitBaseData add success\r
+[WEARABLE I/] Slice 37 has no default page\r
+[WEARABLE I/] Ability ResumeSlice 37\r
+[WEARABLE E/] ThunderBirdPresenter::OnResume reset key listener\r
+APP|[POWER_MANAGER E/] filter_timer_execute_system_rule: filter timer, current default timeout:30000, keepon time:0, event:3.\r
+I AbilityService::SchedulerLifecycleDone state: STATE_ACTIVE\r
+I OnActiveDone [0]\r
+[WEARABLE I/] Transition end\r
+[Graphic Error] [EndTE HMF_CODEC_MAP [HMF_ConvertFormat2CodecID:784] invalid param, format:mp4v \r
+ransition: 533]force clear slide back images when transtion failed\r
+[23:54:35:611][I]{SyncPrepare():2047} no extradata metadata \r
+[23:54:35:611][I]{SyncPrepare():2054} used audiostream index -1 \r
+[23:54:35:612][I]{SyncPrepare():2055} used videostream index 0 \r
+[23:54:35:619][I]{UpdateState():215} @@player UpdateState, state:2 \r
+[23:54:35:619][I]{UpdateState():215} @@player UpdateState, state:2 \r
+[23:54:35:621][I]{ShowFileInfo():200} video[0],w=360,h=360,stream index=0  \r
+[23:54:35:622][I]{ShowFileInfo():203} audio duration=2042,channel count=0,sample rate=0 \r
+[23:54:35:627][I]{ShowFileInfo():206} used audio stream index=-1, used video stream index=0 \r
+[23:54:35:633][I]{Prepare():313} process out \r
+[23:54:35:634][I]{SetSurface():563} process in \r
+[23:54:35:635][I]{SetPlayerCallback():837} process in \r
+[23:54:35:636][I]{Play():343} process in \r
+[23:54:35:637][I]{UpdateState():215} @@player UpdateState, state:2 \r
+[23:54:35:639][I]{SetMediaStream():333} used video w=360,h=360,index=0 \r
+[23:54:35:640][I]{GetOffloadSupport():892} GetOffloadSupport format:19, audio:0 \r
+[23:54:35:642][I]{GetOffloadSupport():894} unsupported audio offload \r
+[23:54:35:643][I]{DecoderStart():791} audio stream id: -1, video stream id: 0 \r
+[23:54:35:645][I]{VideoDecoderStart():777} video decoder started \r
+[23:54:35:646][I]{DataSchProcess():1535} start work \r
+[23:54:35:647][I]{UpdateState():215} @@player UpdateState, state:3 \r
+[23:54:35:648][I]{Play():372} process out \r
+[23:54:35:649][I]{EnableSingleLooping():894} process in \r
+[DISPLAY I/] PrintLayerInfo: layerInfo:\r
+[DISPLAY I/] PrintLayerInfo: type = 0\r
+[DISPLAY I/] PrintLayerInfo: width = 360\r
+[DISPLAY I/] PrintLayerInfo: height = 360\r
+[DISPLAY I/] PrintLayerInfo: bpp = 1813705832\r
+[DISPLAY I/] PrintLayerInfo: pixFormat = 28\r
+[Graphic Error] [ReleaseBuffer: 286]Release invalid buffer: (nil)\r
+E HMF_MEDIA_FORMAT [MediaReadFrame:691] get frame fail: -541478725 \r
+[23:54:36:509][I]{QueueInputDataToAudioSink():1227} have render audio eos \r
+[23:54:36:975][I]{OnPlayControlEvent():536} Received audio play eos event \r
+[23:54:36:975][I]{PlayerControlEventCb():231} end of file \r
+[23:54:36:976][I]{NotifyPlaybackComplete():855} OnPlayBackComplete, iscallbackNull:0 \r
+[23:54:36:978][I]{OnPlaybackComplete():94} AudioPlayerCallback::OnPlaybackComplete enter \r
+[23:54:36:980][I]{OnPlaybackComplete():98} AudioPlayerCallback::OnPlaybackComplete exit \r
+[23:54:36:982][I]{OnPlaybackComplete():60} on playback complete! \r
+=== Starting AudioPlayer stop process ===\r
+AudioPlayer instance obtained successfully\r
+[23:54:37:114][I]{IsPlaying():378} process in \r
+Current status: play, IsPlaying: false\r
+Attempting to stop playback...\r
+[23:54:37:116][I]{Stop():721} MediaThreadCondWait start Stop! \r
+[23:54:37:117][I]{AudioPlay():206} wait play end ! \r
+[23:54:37:118][I]{Stop():414} process in \r
+[23:54:37:119][I]{DataSchProcess():1585} end work \r
+[23:54:37:120][I]{Stop():536} audio sink stop \r
+[SIO] Timer callback executed 401 times, enabled=1, running=1\r
+[23:54:37:232][I]{UpdateState():215} @@player UpdateState, state:0 \r
+[23:54:37:233][I]{Stop():439} process out \r
+[23:54:37:234][I]{Reset():761} process in \r
+[A][ALERT][core_adp_destroy:414] adp = 0x6D000001\r
+[A][ALERT][core_mod_free:316] mod_node->mid.u32 = 0x6D000001\r
+[A][aw88082_i2c_deinit:373]aw88082 i2c deinit success\r
+[23:54:37:259][I]{OnStop():121} AudioPlayerCallback::OnStop enter \r
+[23:54:37:259][I]{OnStop():125} AudioPlayerCallback::OnStop exit \r
+[23:54:37:264][E]{RunAudioPlay():310} isPlayListLoop exit \r
+[23:54:37:265][I]{~Player():45} ~Player process \r
+[23:54:37:266][I]{Release():775} process in \r
+[23:54:37:267][I]{AudioPlayThreadProcess():360} exit all! \r
+[23:54:37:268][I]{Stop():724} MediaThreadCondWait end Stop! \r
+Stop result: SUCCESS\r
+[23:54:37:270][I]{IsPlaying():810} player_ is NULL! \r
+After stop - Status: stop, IsPlaying: false\r
+=== AudioPlayer stop process completed ===\r
+[WEARABLE E/] cm_initScreenBrightness\r
+kvPath: /user/system/kvstore\r
+dataPath: /user/system key: screen_brightness value: 5\r
+Set value ret: 0\r
+[WEARABLE E/] cm_initializeRaiseToWake\r
+[WEARABLE E/] cm_initializeSilentModel\r
+get nv local_addr : ******dab5da\r
+fac:^^^^ BTMAC=1C:1D:2B:DA:B5:DA ^^^^ CyweeChipInfo=\r
+\r
+fac:BuildVer:V1.0.36_20260117_152353\r
+^^^^ BTMAC=1C:1D:2B:DA:B5:DA ^^^^ CyweeChipInfo=\r
+fac:^^^^ BTMAC=1C:1D:2B:DA:B5:DA ^^^^ CyweeChipInfo=\r
+BuildVer:V1.0.36_20260117_152353\r
+\r
+MCU WAKEUP SUCCESS\r
+\r
+OK~\r
+MCU has got pm_id_debug vote\r
+\r
+MCU WAKEUP SUCCESS\r
+\r
+OK~\r
+[23:54:38:390][I]{DoSeekIfNeed():1802} seek start \r
+[23:54:38:391][I]{PlayerControlEventCb():260} seek action end, time is 0 \r
+[23:54:38:391][I]{DoSeekIfNeed():1827} seek end \r
+APP|app_main run start.\r
+APP|sys_slp: 0x1\r
+APP|M core run time 18744, deepsleep time:617, lightsleep time:8437, m sleep flag:1\r
+APP|M core deepsleep cnt:20, lightsleep cnt:13671\r
+APP|M core last veto id:7, last veto count:0, total_counts=3\r
+Set Cat1 LOGLEVEL  4\r
+[SIO] Timer callback executed 501 times, enabled=1, running=1\r
+[A][ALERT][sys_cmd_check_cmd_done:164] wait_time_us = 900\r
+[A][ALERT][drv_sys_pd:331] DSP0 power down\r
+[23:54:40:747][I]{DoSeekIfNeed():1802} seek start \r
+[23:54:40:748][I]{PlayerControlEventCb():260} seek action end, time is 0 \r
+[23:54:40:749][I]{DoSeekIfNeed():1827} seek end \r
+APP|[POWER_MANAGER E/] filter_timer_execute_system_rule: filter timer, current default timeout:30000, keepon time:3600000, event:5.\r
+set_screen_set_keepon_timeout: 0\r
+LcdTestView::OnStart\r
+Initializing LcdTestView\r
+LcdTestView initialized successfully\r
+LcdTestPresenter::OnStart\r
+=== 启动LCD测试 ===\r
+Starting LCD test view\r
+Saved and removed current view for later restore\r
+LCD test started - BLACK background\r
+LCD test color changed\r
+LCDTEST ATCMD Enter LCD test interface (LcdTestView)\r
+Use AT^LCDTEST=3-8 to change colors: 3=Green, 4=Blue, 5=Yellow, 6=Red, 7=White, 8=Black\r
+APP|/user/exc does not exist!!!\r
+APP|exc file save failed \r
+APP|read open user/userdata/timestamp_of_day.bin failed\r
+key2_enter_ppp_testView_callback succed\r
+key3_enter_ppp_testView_callback succed\r
+[23:54:42:689][I]{DoSeekIfNeed():1802} seek start \r
+[23:54:42:690][I]{PlayerControlEventCb():260} seek action end, time is 0 \r
+[23:54:42:691][I]{DoSeekIfNeed():1827} seek end \r
+LCD test color changed\r
+fac:LCD test Red\r
+LCDTEST ATCMD Set LCD coLCD test Red\r
+lor: Red\r
+[SIO] Timer callback executed 601 times, enabled=1, running=1\r
+uapi_get_screen_state = on . \r
+[CAT1_INFO]g_signal_already_updated 1 , g_ws_idle 0, need_update_signal 1\r
+\r
+[CAT1_DBG]\r
+CAT1 SERVICE MCU SLEEP SUCCESS\r
+\r
+[SIO] Removed CAT1 vote after 10018ms idle\r
+LCD test color changed\r
+fac:LCD test Green\r
+LCDTEST ATCMD Set LCD LCD test Green\r
+color: Green\r
+[23:54:44:310][I]{DoSeekIfNeed():1802} seek start \r
+[23:54:44:310][I]{PlayerControlEventCb():260} seek action end, time is 0 \r
+[23:54:44:311][I]{DoSeekIfNeed():1827} seek end \r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 23743, deepsleep time:617, lightsleep time:11117, m sleep flag:0\r
+APP|M core deepsleep cnt:20, lightsleep cnt:17481\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+LCD test color changed\r
+fac:LCD test Blue\r
+LCDTEST ATCMD Set LCD cLCD test Blue\r
+olor: Blue\r
+APP|[POWER_MANAGER E/] filter_timer_execute_system_rule: filter timer, current default timeout:30000, keepon time:0, event:5.\r
+set_screen_set_keepon_timeout: 0\r
+=== 停止LCD测试 ===\r
+Stopping LCD test view\r
+LCD test view removed\r
+Attempting to restore view at address: 0x2001d990\r
+Warning: Original view still has parent, cannot restore\r
+LCDTEST ATCMD Exit LCD test interface (LcdTestView)\r
+[23:54:45:958][I]{DoSeekIfNeed():1802} seek start \r
+[23:54:45:959][I]{PlayerControlEventCb():260} seek action end, time is 0 \r
+[23:54:45:960][I]{DoSeekIfNeed():1827} seek end \r
+[23:54:46:025][I]{Pause():391} process in \r
+[23:54:46:026][I]{UpdateState():215} @@player UpdateState, state:4 \r
+[WEARABLE I/] Ability PauseSlice 37\r
+APP|uapi_lcd_backlight_off\r
+\r
+OK~\r
+[SIO] Timer callback executed 701 times, enabled=1, running=1\r
+Output RESET_LCD_GPIO 1 , VCI_LCD_GPIO 0\r
+[SIO] Timer callback executed 801 times, enabled=1, running=1\r
+APP|[POWER_MANAGER E/] filter_timer_execute_system_rule: filter timer, current default timeout:30000, keepon time:0, event:5.\r
+set_screen_set_keepon_timeout: 0\r
+=== 停止LCD测试 ===\r
+LCD测试未在运行\r
+LCDTEST ATCMD Exit LCD test interface (LcdTestView)\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 28742, deepsleep time:617, lightsleep time:15149, m sleep flag:0\r
+\r
+APP|M core deepsleep cnt:20, lightsleep cnt:22090\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+APP|VIBRATORTIMER ATCMD Start timer with 1s interval\r
+[SIO] Timer callback executed 901 times, enabled=1, running=1\r
+fac:g_VibratorFunc delaytime_ms_high  2 ,  delaytime_ms_low 2 \r
+g_VibratorFunc delaytime_ms_high  2 ,  delaytime_ms_low 2 \r
+uapi_get_screen_state = off . \r
+[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0\r
+\r
+fac:g_VibratorFunc delaytime_ms_high  2 ,  delaytime_ms_low 2 \r
+g_VibratorFunc delaytime_ms_high  2 ,  delaytime_ms_low 2 \r
+fac:g_VibratorFunc delaytime_ms_high  2 ,  delaytime_ms_low 2 \r
+g_VibratorFunc delaytime_ms_high  2 ,  delaytime_ms_low 2 \r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 33815, deepsleep time:617, lightsleep time:19278, m sleep flag:0\r
+\r
+APP|M core deepsleep cnt:20, lightsleep cnt:26547\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 1001 times, enabled=1, running=1\r
+fac:g_VibratorFunc delaytime_ms_high  2 ,  delaytime_ms_low 2 \r
+g_VibratorFunc delaytime_ms_high  2 ,  delaytime_ms_low 2 \r
+fac:g_VibratorFunc delaytime_ms_high  2 ,  delaytime_ms_low 2 \r
+g_VibratorFunc delaytime_ms_high  2 ,  delaytime_ms_low 2 \r
+fac:g_VibratorFunc delaytime_ms_high  2 ,  delaytime_ms_low 2 \r
+g_VibratorFunc delaytime_ms_high  2 ,  delaytime_ms_low 2 \r
+APP|VIBRATORTIMER ATCMD Stop and delete timer\r
+APP|VIBRATORTIMER ATCMD Unknown command 0\r
+APP|[at cmd]cannot find cmd handle, data=AT^VIBRATORTIMER=0 len=19\r
+[SIO] Timer callback executed 1101 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 38812, deepsleep time:617, lightsleep time:23340, m sleep flag:0\r
+\r
+APP|M core deepsleep cnt:20, lightsleep cnt:30925\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 1201 times, enabled=1, running=1\r
+uapi_get_screen_state = off . \r
+[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0\r
+\r
+[SIO] Timer callback executed 1301 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 43809, deepsleep time:617, lightsleep time:27963, m sleep flag:0\r
+\r
+APP|M core deepsleep cnt:20, lightsleep cnt:35919\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+\r
+OK~\r
+APP|[AudioTest] Starting audio test...\r
+[23:55:06:055][W]{ai_media_service_init():808} AI media service already initialized \r
+[23:55:06:057][E]{old_Start_AIVoice():1798} StartAIVoice \r
+[23:55:06:058][I]{GetGlobalMutex():866} Global AI voice context mutex created successfully \r
+[23:55:06:060][I]{old_Start_AIVoice():1834} Using custom input audio params: format=1, channels=1, sampleRate=16000 \r
+[23:55:06:062][I]{old_Start_AIVoice():1849} Using custom output audio params: format=1, channels=1, sampleRate=16000 \r
+[23:55:06:064][I]{old_Start_AIVoice():1865} OGG encapsulation disabled by parameter \r
+[23:55:06:066][I]{old_Start_AIVoice():1883} Second stream in disabled (null parameter) \r
+[23:55:06:068][E]{old_Start_AIVoice():1889} g_aiVoiceContext->taskHandle \r
+[23:55:06:069][I]{CreateAIVoiceQueue():1121} AI voice input queue created successfully \r
+APP|SET DSP freq=3, div=5, codec freq=3, div=36\r
+APP|set hifi mode=2.\r
+APP|SET DSP freq=3, div=5, codec freq=3, div=36\r
+[A][ALERT][sys_cmd_check_cmd_done:164] wait_time_us = 400\r
+[A][ALERT][drv_sys_pon:297] DSP0 power on\r
+[23:55:06:125][I]{old_Start_AIVoice():1919} AI voice thread created successfully with name: AIVoiceThread \r
+APP|[AudioTest] Play thread started\r
+APP|[AudioTest] Pre-filled 5 periods (160 bytes, 5.0 ms) of PCM data\r
+initial_volume : 1.000 \r
+g_audio_test_ctx.play_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.AudioSDKSeaOpen g_subPortSeaOpenCount 1\r
+AudioSDKAttach 6D000003 6D000005\r
+000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+initial_volume : 1.000 \r
+g_subPortSeaOpenCount 1\r
+APP|[AudioTest] Audio test started successfully\r
+APP|[AudioTest] Playing 1kHz tone, monitoring volume every 0.5s...\r
+AUDIO TEST START: Success\r
+  Playing 1kHz tone, monitoring volume every 0.5s...\r
+APP|[AudioTest] Play volume set to 2.00 (200%)\r
+AUDIO TEST SET VOLUME: Success (0.00, 0%)\r
+[A][aw88082_i2c_init:353]aw88082 i2c init success\r
+aw_sysst_check succed\r
+aw_pa_start \r
+[23:55:06:465][I]{CreateAIVoiceInputThread():1372} AI voice input thread created successfully \r
+[23:55:06:466][I]{RunAIVoice():1483} RunAIVoice: waiting for queue data... \r
+delay_us 10000\r
+[23:55:06:469][I]{AIVoiceInputThreadFunc():1390} AI voice input thread started \r
+[23:55:06:497][I]{AI_ReadFromFileCache():457} Read 1024 bytes from file cache at offset 0 \r
+delay_us 10000\r
+[23:55:06:522][I]{AI_ReadFromFileCache():457} Read 1024 bytes from file cache at offset 1024 \r
+delay_us 10000\r
+[23:55:06:548][I]{AI_ReadFromFileCache():457} Read 352 bytes from file cache at offset 2048 \r
+delay_us 10000\r
+[23:55:06:570][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 2400 \r
+delay_us 10000\r
+[23:55:06:593][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 2560 \r
+delay_us 10000\r
+[23:55:06:615][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 2720 \r
+delay_us 10000\r
+[23:55:06:637][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 2880 \r
+delay_us 10000\r
+[23:55:06:675][I]{AI_ReadFromFileCache():457} Read 320 bytes from file cache at offset 3040 \r
+delay_us 10000\r
+[23:55:06:701][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 3360 \r
+[23:55:06:701][E]{RunAIVoice():1543} Failed to restore cached data to queue: -3 \r
+delay_us 10000\r
+[23:55:06:725][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 3520 \r
+delay_us 10000\r
+[23:55:06:762][I]{AI_ReadFromFileCache():457} Read 320 bytes from file cache at offset 3680 \r
+delay_us 10000\r
+delay_us 10000\r
+fac:[AudioTest] Volume - RMS: 2.23% (-33.04 dB), Peak: 27.70% (-11.15 dB), Level: 低\r
+fac:mic level:低\r
+[AudioTest] Volume - RMS: 2.23% (-33.04 dB), Peak: 27.70% (-11.15 dB), Level: 低\r
+mic level:低\r
+delay_us 10000\r
+[23:55:06:817][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 4000 \r
+delay_us 10000\r
+[23:55:06:846][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 4160 \r
+delay_us 10000\r
+[23:55:06:872][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 4320 \r
+delay_us 10000\r
+[23:55:06:895][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 4480 \r
+delay_us 10000\r
+[23:55:06:932][I]{AI_ReadFromFileCache():457} Read 320 bytes from file cache at offset 4640 \r
+delay_us 10000\r
+[23:55:06:958][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 4960 \r
+delay_us 10000\r
+[23:55:06:980][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 5120 \r
+delay_us 10000\r
+[23:55:07:003][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 5280 \r
+delay_us 10000\r
+[23:55:07:025][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 5440 \r
+delay_us 10000\r
+[23:55:07:047][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 5600 \r
+delay_us 10000\r
+[23:55:07:069][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 5760 \r
+delay_us 10000\r
+[23:55:07:092][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 5920 \r
+delay_us 10000\r
+[23:55:07:121][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 6080 \r
+delay_us 10000\r
+[23:55:07:144][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 6240 \r
+delay_us 10000\r
+[23:55:07:166][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 6400 \r
+delay_us 10000\r
+[23:55:07:188][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 6560 \r
+delay_us 10000\r
+[23:55:07:211][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 6720 \r
+delay_us 10000\r
+[23:55:07:249][I]{AI_ReadFromFileCache():457} Read 320 bytes from file cache at offset 6880 \r
+delay_us 10000\r
+[23:55:07:275][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 7200 \r
+[23:55:07:276][E]{RunAIVoice():1543} Failed to restore cached data to queue: -3 \r
+delay_us 64250\r
+[23:55:07:391][I]{AI_ReadFromFileCache():457} Read 960 bytes from file cache at offset 7360 \r
+delay_us 64250\r
+fac:[AudioTest] Volume - RMS: 9.60% (-20.35 dB), Peak: 28.80% (-10.81 dB), Level: 低\r
+fac:mic level:低\r
+[AudioTest] Volume - RMS: 9.60% (-20.35 dB), Peak: 28.80% (-10.81 dB), Level: 低\r
+mic level:低\r
+[SIO] Timer callback executed 1401 times, enabled=1, running=1\r
+[23:55:07:485][I]{AI_ReadFromFileCache():457} Read 480 bytes from file cache at offset 8320 \r
+delay_us 22125\r
+[23:55:07:545][I]{AI_ReadFromFileCache():457} Read 480 bytes from file cache at offset 8800 \r
+delay_us 10000\r
+[23:55:07:575][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 9280 \r
+[23:55:07:576][E]{RunAIVoice():1543} Failed to restore cached data to queue: -3 \r
+delay_us 10000\r
+[23:55:07:599][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 9440 \r
+delay_us 10000\r
+[23:55:07:635][I]{AI_ReadFromFileCache():457} Read 320 bytes from file cache at offset 9600 \r
+delay_us 10000\r
+[23:55:07:661][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 9920 \r
+[23:55:07:662][E]{RunAIVoice():1543} Failed to restore cached data to queue: -3 \r
+delay_us 20000\r
+[23:55:07:703][I]{AI_ReadFromFileCache():457} Read 320 bytes from file cache at offset 10080 \r
+delay_us 10000\r
+[23:55:07:725][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 10400 \r
+delay_us 10000\r
+[23:55:07:747][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 10560 \r
+delay_us 20000\r
+[23:55:07:791][I]{AI_ReadFromFileCache():457} Read 320 bytes from file cache at offset 10720 \r
+delay_us 10000\r
+[23:55:07:813][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 11040 \r
+delay_us 10000\r
+[23:55:07:851][I]{AI_ReadFromFileCache():457} Read 320 bytes from file cache at offset 11200 \r
+delay_us 10000\r
+[23:55:07:876][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 11520 \r
+[23:55:07:877][E]{RunAIVoice():1543} Failed to restore cached data to queue: -3 \r
+delay_us 10000\r
+[23:55:07:900][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 11680 \r
+delay_us 10000\r
+[23:55:07:922][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 11840 \r
+delay_us 20000\r
+[23:55:07:969][I]{AI_ReadFromFileCache():457} Read 320 bytes from file cache at offset 12000 \r
+delay_us 10000\r
+[23:55:08:006][I]{AI_ReadFromFileCache():457} Read 320 bytes from file cache at offset 12320 \r
+delay_us 10000\r
+[23:55:08:031][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 12640 \r
+[23:55:08:032][E]{RunAIVoice():1543} Failed to restore cached data to queue: -3 \r
+delay_us 10000\r
+[23:55:08:063][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 12800 \r
+delay_us 10000\r
+[23:55:08:094][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 12960 \r
+delay_us 10000\r
+fac:[AudioTest] Volume - RMS: 10.26% (-19.77 dB), Peak: 29.86% (-10.50 dB), Level: 中\r
+fac:mic level:中\r
+[AudioTest] Volume - RMS: 10.26% (-19.77 dB), Peak: 29.86% (-10.50 dB), Level: 中\r
+mic level:中\r
+[23:55:08:125][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 13120 \r
+delay_us 10000\r
+[23:55:08:147][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 13280 \r
+delay_us 10000\r
+[23:55:08:170][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 13440 \r
+delay_us 10000\r
+[23:55:08:206][I]{AI_ReadFromFileCache():457} Read 320 bytes from file cache at offset 13600 \r
+delay_us 10000\r
+[23:55:08:231][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 13920 \r
+[23:55:08:232][E]{RunAIVoice():1543} Failed to restore cached data to queue: -3 \r
+delay_us 10000\r
+[23:55:08:260][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 14080 \r
+delay_us 10000\r
+[23:55:08:293][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 14240 \r
+delay_us 10000\r
+APP|charging enable charge !  bat-temp 21.94 Vs highest temp value 50.00 !\r
+APP|44 < 90 percent , enable normal current charge !\r
+[23:55:08:330][I]{AI_ReadFromFileCache():457} Read 320 bytes from file cache at offset 14400 \r
+delay_us 10000\r
+[23:55:08:357][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 14720 \r
+[23:55:08:358][E]{RunAIVoice():1543} Failed to restore cached data to queue: -3 \r
+delay_us 20000\r
+[23:55:08:398][I]{AI_ReadFromFileCache():457} Read 320 bytes from file cache at offset 14880 \r
+delay_us 10000\r
+[23:55:08:435][I]{AI_ReadFromFileCache():457} Read 320 bytes from file cache at offset 15200 \r
+delay_us 60000\r
+[23:55:08:528][I]{AI_ReadFromFileCache():457} Read 800 bytes from file cache at offset 15520 \r
+[23:55:08:529][E]{RunAIVoice():1543} Failed to restore cached data to queue: -3 \r
+delay_us 30000\r
+[23:55:08:593][I]{AI_ReadFromFileCache():457} Read 480 bytes from file cache at offset 16320 \r
+delay_us 30000\r
+[23:55:08:649][I]{AI_ReadFromFileCache():457} Read 480 bytes from file cache at offset 16800 \r
+delay_us 10000\r
+[23:55:08:672][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 17280 \r
+delay_us 10000\r
+[23:55:08:697][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 17440 \r
+delay_us 20000\r
+fac:[AudioTest] Volume - RMS: 11.60% (-18.71 dB), Peak: 30.17% (-10.41 dB), Level: 中\r
+fac:mic level:中\r
+[AudioTest] Volume - RMS: 11.60% (-18.71 dB), Peak: 30.17% (-10.41 dB), Level: 中\r
+mic level:中\r
+[23:55:08:744][I]{AI_ReadFromFileCache():457} Read 320 bytes from file cache at offset 17600 \r
+delay_us 10000\r
+[23:55:08:766][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 17920 \r
+delay_us 20000\r
+[23:55:08:806][I]{AI_ReadFromFileCache():457} Read 320 bytes from file cache at offset 18080 \r
+delay_us 10000\r
+[23:55:08:834][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 18400 \r
+delay_us 10000\r
+[23:55:08:872][I]{AI_ReadFromFileCache():457} Read 320 bytes from file cache at offset 18560 \r
+delay_us 20000\r
+[23:55:08:924][I]{AI_ReadFromFileCache():457} Read 320 bytes from file cache at offset 18880 \r
+[23:55:08:925][E]{RunAIVoice():1543} Failed to restore cached data to queue: -3 \r
+delay_us 10000\r
+[23:55:08:949][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 19200 \r
+delay_us 20000\r
+[23:55:08:988][I]{AI_ReadFromFileCache():457} Read 320 bytes from file cache at offset 19360 \r
+delay_us 10000\r
+[23:55:09:010][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 19680 \r
+delay_us 10000\r
+[23:55:09:032][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 19840 \r
+delay_us 10000\r
+[23:55:09:071][I]{AI_ReadFromFileCache():457} Read 320 bytes from file cache at offset 20000 \r
+delay_us 20000\r
+[23:55:09:114][I]{AI_ReadFromFileCache():457} Read 320 bytes from file cache at offset 20320 \r
+[23:55:09:115][E]{RunAIVoice():1543} Failed to restore cached data to queue: -3 \r
+delay_us 20000\r
+[23:55:09:156][I]{AI_ReadFromFileCache():457} Read 320 bytes from file cache at offset 20640 \r
+delay_us 10000\r
+[23:55:09:193][I]{AI_ReadFromFileCache():457} Read 320 bytes from file cache at offset 20960 \r
+delay_us 10000\r
+[23:55:09:218][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 21280 \r
+[23:55:09:219][E]{RunAIVoice():1543} Failed to restore cached data to queue: -3 \r
+delay_us 10000\r
+[23:55:09:242][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 21440 \r
+delay_us 10000\r
+[23:55:09:265][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 21600 \r
+delay_us 10000\r
+[23:55:09:287][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 21760 \r
+delay_us 10000\r
+[23:55:09:310][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 21920 \r
+delay_us 20000\r
+[23:55:09:351][I]{AI_ReadFromFileCache():457} Read 320 bytes from file cache at offset 22080 \r
+delay_us 10000\r
+[23:55:09:388][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 22400 \r
+delay_us 10000\r
+fac:[AudioTest] Volume - RMS: 10.49% (-19.58 dB), Peak: 30.44% (-10.33 dB), Level: 中\r
+fac:mic level:中\r
+[AudioTest] Volume - RMS: 10.49% (-19.58 dB), Peak: 30.44% (-10.33 dB), Level: 中\r
+mic level:中\r
+[23:55:09:421][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 22560 \r
+delay_us 10000\r
+APP|[AudioTest] Stopping audio test...\r
+APP|[AudioTest] Play thread stopped\r
+[23:55:09:442][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 22720 \r
+delay_us 20000\r
+delay_us 10000\r
+delay_us 20000\r
+delay_us 20000\r
+delay_us 10000\r
+delay_us 30000\r
+delay_us 30000\r
+delay_us 10000\r
+delay_us 10000\r
+delay_us 20000\r
+delay_us 10000\r
+delay_us 20000\r
+delay_us 10000\r
+delay_us 20000\r
+delay_us 10000\r
+delay_us 10000\r
+delay_us 20000\r
+delay_us 10000\r
+delay_us 10000\r
+delay_us 20000\r
+delay_us 10000\r
+delay_us 20000\r
+delay_us 20000\r
+delay_us 10000\r
+delay_us 10000\r
+delay_us 10000\r
+delay_us 10000\r
+delay_us 10000\r
+delay_us 20000\r
+APP|[AudioTest] Calling StopAIVoice()...\r
+Waiting for AI voice thread to stop...\r
+Thread validation passed, waiting for thread: AIVoiceThread\r
+osThreadJoin failed (-3), using state check...\r
+[23:55:09:943][I]{AIVoiceInputThreadFunc():1439} AI voice input thread stopped \r
+g_subPortSeaOpenCount 1\r
+AudioSDKDetach AUDIO_MOD_AI_SEA 6D000003 6D000005\r
+AudioSDKDetach AUDIO_MOD_SEA 6D000005 6D000001\r
+AudioSDKSeaClose g_subPortSeaOpenCount 0\r
+[A][ALERT][core_adp_destroy:414] adp = 0x6D000001\r
+[A][ALERT][core_mod_free:316] mod_node->mid.u32 = 0x6D000001\r
+APP|SET DSP freq=3, div=6, codec freq=3, div=36\r
+APP|set hifi mode=1.\r
+Waiting... 1/50 (state: 3, running: yes)\r
+[A][ALERT][core_adp_destroy:414] adp = 0x6D000101\r
+[A][ALERT][core_mod_free:316] mod_node->mid.u32 = 0x6D000101\r
+[A][aw88082_i2c_deinit:373]aw88082 i2c deinit success\r
+[23:55:10:130][I]{DeinitAIVoiceResources():1190} AI voice input queue deleted \r
+AI voice thread cleanup completed\r
+Waiting... 2/50 (state: 0, running: no)\r
+AI voice thread stopped successfully (state check)\r
+[23:55:10:164][I]{AI_ClearFileCache():514} File cache cleared successfully \r
+AI voice stopped and resources cleaned up\r
+APP|[AudioTest] Audio test stopped\r
+AUDIO TEST STOP: Success\r
+fac:voltage : 3.765 , percent 44 , temp : 21.683, charge : 1\r
+voltage : 3.765 , percent 44 , temp : 21.683, charge : 1\r
+fac:gsensor id : 0x13\r
+gsensor id : 0x13\r
+package_common_cmd_to_bt strCmd 36 5A 00 03 00 09 01 9A 20 inParam (null) para_len 0\r
+commandID = 0x1 payload_len=0\r
+bt_manager_at_process cmdId=0x1 atId=0x901\r
+[bts][info] btsrv_set_log_type_level bts sert log type levle:ff2\r
+gap reg cbk ret 0\r
+func:audio_manager_init, line:69, success\r
+a2dp reg cbk ret 0\r
+a2dp reg cbk ret 0\r
+avrcp reg cbk ret 0\r
+bt enable ok\r
+\r
+OK~\r
+APP|[BtScan] Starting Bluetooth scan test...\r
+APP|[BtScan] Enabling Bluetooth stack (same as AT^BTENABLE)...\r
+APP|[BtScan] Waiting for Bluetooth stack ready...\r
+APP|[BtScan] Inquiry parameters set successfully\r
+APP|[BtScan] Discovery state changed: 1\r
+APP|[BtScan] Discovery state changed: 2\r
+[bts][info] btsrv_start_bt_discovery discovery started\r
+APP|[BtScan] Discovery started successfully\r
+APP|[BtScan] Bluetooth scan started successfully\r
+APP|[BtScan] Scanning for devices...\r
+BT SCAN TEST START: Success\r
+[bts][info] btsrv_handle_remote_device_found addr: ****2b730073 [little endian: 7300732b**** ] name: LN73 hdl: 0\r
+[bts][debug] btsrv_add_remote_dev_node addr: ****2b730073 hdl: 0\r
+[bts][info] btsrv_notify_gap_discovery_result descovery result\r
+APP|[BtScan] New device discovered: 1C:1D:2B:73:00:73\r
+APP|[BtScan] Device name: LN73\r
+[bts][info] btsrv_notify_gap_discovery_result found device addr: ****2b730073 name: LN73fac:[BtScan] Device: 1C:1D:2B:73:00:73, RSSI=-97 dBm\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 49482, deepsleep time:617, lightsleep time:30476, m sleep flag:0\r
+\r
+APP|M core deepsleep cnt:20, lightsleep cnt:39568\r
+APP|M core last veto id:7, last veto count:0, total_counts=2\r
+[bts][info] btsrv_handle_remote_device_found addr: ****2b49f749 [little endian: 49f7492b**** ] name: LNf749 hdl: 0\r
+[bts][debug] btsrv_add_remote_dev_node addr: ****2b49f749 hdl: 0\r
+[bts][info] btsrv_notify_gap_discovery_result descovery result\r
+APP|[BtScan] New device discovered: 1C:1D:2B:49:F7:49\r
+APP|[BtScan] Device name: LNf749\r
+[bts][info] btsrv_notify_gap_discovery_result found device addr: ****2b49f749 name: LNf749fac:[BtScan] Device: 1C:1D:2B:49:F7:49, RSSI=-97 dBm\r
+[bts][info] btsrv_handle_remote_device_found addr: ****2be412e4 [little endian: e412e42b**** ] name:  hdl: 0\r
+[bts][debug] btsrv_add_remote_dev_node addr: ****2be412e4 hdl: 0\r
+[bts][info] btsrv_notify_gap_discovery_result descovery result\r
+APP|[BtScan] New device discovered: 1C:1D:2B:E4:12:E4\r
+[bts][info] btsrv_notify_gap_discovery_result found device addr: ****2be412e4 name: fac:[BtScan] Device: 1C:1D:2B:E4:12:E4, RSSI=-95 dBm\r
+APP|[BtScan] Stopping Bluetooth scan test...\r
+[bts][info] gap_br_cancel_discovery btsdk_stop_device_discovery ret=0x0\r
+[bts][info] gap_br_ca[bts][info] btsrv_inquiry_complete_ind_callback inquiry complete\r
+[bts][info] btsrv_handle_conn_event_msg set discovery status to stop\r
+APP|[BtScan] Discovery state changed: 3\r
+ncel_discovery discovery stopped\r
+APP|[BtScan] Discovery state changed: 3\r
+APP|[BtScan] Final scan results:\r
+APP|[BtScan] Found 3 device(s):\r
+APP|[BtScan] Device[1]: MAC=1C:1D:2B:73:00:73, RSSI=-97 dBmAPP|, Name=LN73APP|\r
+APP|[BtScan] Device[2]: MAC=1C:1D:2B:49:F7:49, RSSI=-97 dBmAPP|, Name=LNf749APP|\r
+APP|[BtScan] Device[3]: MAC=1C:1D:2B:E4:12:E4, RSSI=-95 dBmAPP|\r
+APP|[BtScan] Bluetooth scan stopped\r
+BT SCAN TEST STOP: Success\r
+[SIO] Timer callback executed 1501 times, enabled=1, running=1\r
+package_common_cmd_to_bt strCmd 36 5A 00 03 00 09 02 9A 20 inParam (null) para_len 0\r
+commandID = 0x2 payload_len=0\r
+bt_manager_at_process cmdId=0x2 atId=0x902\r
+[bts][info] btsrv_stop_phone_reconnect_timer stop timer\r
+[bts][info] btsrv_stop_phone_reconnect_timer stop timer success!\r
+[bts][error] gap_ble_stop_adv adv id is not active, please set param first.\r
+[bts][error] spp_service_delete_client client_id invalid\r
+[bts][error] spp_service_delete_client client_id invalid\r
+[bts][error] spp_service_delete_client client_id invalid\r
+[bts][error] spp_service_delete_client client_id invalid\r
+[bts][error] spp_service_delete_client client_id invalid\r
+[bts][error] spp_service_delete_client client_id invalid\r
+[bts][error] spp_service_delete_client client_id invalid\r
+[bts][error] spp_service_delete_client client_id invalid\r
+[bts][error] spp_service_delete_client client_id invalid\r
+[bts][error] spp_service_delete_client client_id invalid\r
+[bts][error] spp_service_delete_client client_id invalid\r
+[bts][error] spp_service_delete_client client_id invalid\r
+[bts][error] spp_service_delete_client client_id invalid\r
+[bts][error] spp_service_delete_client client_id invalid\r
+[bts][error] spp_service_delete_client client_id invalid\r
+[bts][error] spp_service_delete_client client_id invalid\r
+[bts][error] spp_service_delete_client client_id invalid\r
+[bts][error] spp_service_delete_client client_id invalid\r
+[bts][error] spp_service_delete_client client_id invalid\r
+[bts][error] spp_service_delete_client client_id invalid\r
+[bts][error] spp_service_delete_client client_id invalid\r
+[bts][error] spp_service_delete_client client_id invalid\r
+[bts][error] spp_service_delete_client client_id invalid\r
+[bts][error] spp_service_delete_client client_id invalid\r
+[bts][error] spp_service_delete_client client_id invalid\r
+[bts][error] spp_service_delete_client client_id invalid\r
+[bts][error] spp_service_delete_client client_id invalid\r
+[bts][error] spp_service_delete_client client_id invalid\r
+[bts][error] spp_service_delete_client client_id invalid\r
+[bts][error] spp_service_delete_client client_id invalid\r
+[bts][error] spp_service_delete_client client_id invalid\r
+[bts][error] spp_service_delete_client client_id invalid\r
+[bts][error] spp_service_delete_client client_id invalid\r
+[bts][error] spp_service_delete_client client_id invalid\r
+[bts][error] spp_service_delete_client client_id invalid\r
+[bts][error] spp_service_delete_client client_id invalid\r
+[bts][error] spp_service_delete_client client_id invalid\r
+[bts][error] spp_service_delete_client client_id invalid\r
+[bts][error] spp_service_delete_client client_id invalid\r
+[bts][error] spp_service_delete_client client_id invalid\r
+[bts][error] spp_service_delete_client client_id invalid\r
+[bts][error] spp_service_delete_client client_id invalid\r
+[bts][error] spp_service_delete_client client_id invalid\r
+[bts][error] spp_service_delete_client client_id invalid\r
+[bts][error] spp_service_delete_client client_id invalid\r
+[bts][error] spp_service_delete_client client_id invalid\r
+[bts][error] spp_service_delete_client client_id invalid\r
+[bts][error] spp_service_delete_client client_id invalid\r
+[bts][error] spp_service_delete_client client_id invalid\r
+[bts][error] spp_service_delete_client client_id invalid\r
+[bts][error] spp_service_delete_client client_id invalid\r
+[bts][error] spp_service_delete_client client_id invalid\r
+[bts][error] spp_service_delete_client client_id invalid\r
+[bts][error] spp_service_delete_client client_id invalid\r
+[bts][error] spp_service_delete_client client_id invalid\r
+[bts][error] spp_service_delete_client client_id invalid\r
+[bts][error] spp_service_delete_client client_id invalid\r
+[bts][error] spp_service_delete_client client_id invalid\r
+[bts][error] spp_service_delete_client client_id invalid\r
+[bts][error] spp_service_delete_client client_id invalid\r
+bt disable ok\r
+\r
+OK~\r
+[bts][info] btsdk_get_discovery_mode mode = 0d \r
+[bts][info] gap_br_set_bt_scan_mode set scan mode old=4 new=0\r
+[CAT1_INFO]CAT1TEST ATCMD  getsignal  \r
+\r
+[CAT1_DBG]cat1_getsignal: Sending AT+CESQ via UDP\r
+\r
+[bts][info] btsrv_disable_bt_remain_module deinit bt stack\r
+[A][ALERT][sys_cmd_check_cmd_done:164] wait_time_us = 600\r
+[A][ALERT][drv_sys_pd:331] DSP0 power down\r
+[SIO] Timer callback executed 1601 times, enabled=1, running=1\r
+uapi_get_screen_state = off . \r
+[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0\r
+\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 54481, deepsleep time:617, lightsleep time:34249, m sleep flag:0\r
+\r
+APP|M core deepsleep cnt:20, lightsleep cnt:43603\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 1701 times, enabled=1, running=1\r
+[SIO] Timer callback executed 1801 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 59480, deepsleep time:617, lightsleep time:38810, m sleep flag:0\r
+\r
+APP|M core deepsleep cnt:20, lightsleep cnt:48595\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 1901 times, enabled=1, running=1\r
+uapi_get_screen_state = off . \r
+[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0\r
+\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 64479, deepsleep time:617, lightsleep time:43425, m sleep flag:0\r
+\r
+APP|M core deepsleep cnt:20, lightsleep cnt:53588\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 2001 times, enabled=1, running=1\r
+[SIO] Timer callback executed 2101 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 69478, deepsleep time:617, lightsleep time:48067, m sleep flag:0\r
+\r
+APP|M core deepsleep cnt:20, lightsleep cnt:58581\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 2201 times, enabled=1, running=1\r
+uapi_get_screen_state = off . \r
+[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0\r
+\r
+[SIO] Timer callback executed 2301 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 74477, deepsleep time:617, lightsleep time:52786, m sleep flag:0\r
+\r
+APP|M core deepsleep cnt:20, lightsleep cnt:63576\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 2401 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 79476, deepsleep time:617, lightsleep time:57364, m sleep flag:0\r
+\r
+APP|M core deepsleep cnt:20, lightsleep cnt:3033\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 2501 times, enabled=1, running=1\r
+[SIO] Timer callback executed 2601 times, enabled=1, running=1\r
+uapi_get_screen_state = off . \r
+[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0\r
+\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 84476, deepsleep time:617, lightsleep time:61913, m sleep flag:0\r
+APP|M core deepsleep cnt:20, lightsleep cnt:8027\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 2701 times, enabled=1, running=1\r
+APP|charging enable charge !  bat-temp 21.86 Vs highest temp value 50.00 !\r
+APP|44 < 90 percent , enable normal current charge !\r
+[SIO] Timer callback executed 2801 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 89475, deepsleep time:617, lightsleep time:66451, m sleep flag:0\r
+\r
+APP|M core deepsleep cnt:20, lightsleep cnt:12886\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 2901 times, enabled=1, running=1\r
+uapi_get_screen_state = off . \r
+[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0\r
+\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 94475, deepsleep time:617, lightsleep time:71129, m sleep flag:0\r
+\r
+APP|M core deepsleep cnt:20, lightsleep cnt:17881\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 3001 times, enabled=1, running=1\r
+[SIO] Timer callback executed 3101 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 99474, deepsleep time:617, lightsleep time:75688, m sleep flag:0\r
+APP|M core deepsleep cnt:20, lightsleep cnt:22873\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 3201 times, enabled=1, running=1\r
+uapi_get_screen_state = off . \r
+[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0\r
+\r
+[SIO] Timer callback executed 3301 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 104474, deepsleep time:617, lightsleep time:80368, m sleep flag:0\r
+APP|M core deepsleep cnt:20, lightsleep cnt:27868\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+[SIO] Timer callback executed 3401 times, enabled=1, running=1\r
+fac:id : 3\r
+button_report_event: screen off, drop id=3, event=83\r
+id : 3\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 109474, deepsleep time:617, lightsleep time:85047, m sleep flag:0\r
+APP|M core deepsleep cnt:20, lightsleep cnt:32863\r
+APP|M core last veto id:7, last veto count:0, total_counts=1\r
+fac:id : 3\r
+button_report_event: screen off, drop id=3, event=84\r
+id : 3\r
+fac:id : 0\r
+id : 0\r
+APP|mipi_tx has been enable!\r
+APP|Succ read lcd id! Lcd id: 0x5598\r
+APP|timeout when wait phy ready \r
+[SIO] Timer callback executed 3501 times, enabled=1, running=1\r
+brightness:5\r
+Brightness: 5% → Fall Edge: 7 → LED Current: 2.5mA\r
+[WEARABLE I/] Ability ResumeSlice 37\r
+[WEARABLE E/] ThunderBirdPresenter::OnResume reset key listener\r
+[23:56:11:022][I]{Play():343} process in \r
+[23:56:11:023][I]{UpdateState():215} @@player UpdateState, state:3 \r
+[23:56:11:024][I]{Play():372} process out \r
+[23:56:11:025][I]{EnableSingleLooping():894} process in \r
+fac:id : 0\r
+id : 0\r
+[WEARABLE E/] OnKeyAct: keyID=4137, keyState=0, screenState=0\r
+[WEARABLE E/] HandlePowerKey: KEY_TYPE_POWER\r
+[23:56:13:282][I]{DoSeekIfNeed():1802} seek start \r
+[23:56:13:283][I]{PlayerControlEventCb():260} seek action end, time is 0 \r
+[23:56:13:284][I]{DoSeekIfNeed():1827} seek end \r
+[SIO] Timer callback executed 3601 times, enabled=1, running=1\r
+uapi_get_screen_state = on . \r
+[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 1\r
+\r
+[CAT1_DBG]cat1_getsignal: Sending AT+CESQ via UDP\r
+\r
+[CAT1_DBG]UDP_CMD_GET_TIME\r
+\r
+[CAT1_DBG]\r
+CAT1 SERVICE MCU WAKEUP SUCCESS\r
+\r
+[CAT1_DBG]recv len:126 rx_buffer:FE070118imei:867998086791248@sim:1@iccid:89860492192590378178@oper:('CHINA MOBILE', 'CMCC', '460', '00')@signal:26@net:0,0,1,7\r
+\r
+[CAT1_DBG]g_msg_format_type 1\r
+\r
+[CAT1_DBG]cmd 7,bSignal值: 26\r
+CAT1 Signal值: 26 (1/5)\r
+ufferlen 118 , buffer imei:867998086791248@sim:1@iccid:89860492192590378178@oper:('CHINA MOBILE', 'CMCC', '460', '00')@signal:26@net:0,0,1,7 \r
+\r
+Signal值: 26\r
+[CAT1_DBG]=== imei 867998086791248 to 867998086791248\r
+\r
+[CAT1_DBG]=== sim = 1\r
+\r
+[CAT1_DBG]=== iccid = 89860492192590378178\r
+\r
+[CAT1_DBG]=== opera ('CHINA MOBILE', 'CMCC', '460', '00') to ('CHINA MOBILE', 'CMCC', '460', '00')\r
+\r
+[CAT1_DBG]=== signal = 26, signal_bars = 3\r
+\r
+[CAT1_DBG]=== networkon = 1 , connected \r
+\r
+[CAT1_DBG]=== network_type = 7 , E_UTRAN\r
+\r
+[CAT1_DBG]\r
+CAT1 SERVICE MCU SLEEP SUCCESS\r
+\r
+[CAT1_INFO]CAT1TEST ATCMD  getsignal  \r
+\r
+[CAT1_DBG]cat1_getsignal: Sending AT+CESQ via UDP\r
+\r
+[CAT1_DBG]recv len:42 rx_buffer:FE060034(2026, 1, 17, 23, 56, 15, 5, 17)@8\r
+\r
+[CAT1_DBG]g_msg_format_type 1\r
+\r
+[CAT1_DBG]cmd 6,bufferlen 34 , buffer (2026, 1, 17, 23, 56, 15, 5, 17)@8 \r
+\r
+[CAT1_DBG]decodeTime (2026, 1, 17, 23, 56, 15, 5, 17)@8\r
+\r
+[CAT1_DBG]time 0126-00-17 23:56:15 \r
+stamp 1768636575 \r
+zone 8\r
+\r
+sync time utc timestamp 1768636575, timezone_in_quarters 32 \r
+[CAT1_WRN]MESSAGE_4G_TIME_SYNCED\r
+[CAT1_DBG]\r
+CAT1 SERVICE MCU SLEEP SUCCESS\r
+\r
+[CAT1_DBG]recv len:58 rx_buffer:FE090050+CESQ:50,99,255,255,34,57\r
+\r
+\r
+\r
+[CAT1_DBG]g_msg_format_type 1\r
+\r
+[CAT1_DBG]cmd 9,bufferlen 50 , buffer +CESQ:50,99,255,255,34,57\r
+\r
+ \r
+\r
+[CAT1_DBG]ATCMD reply len(28): +CESQ:50,99,255,255,34,57\r
+\r
+\r
+\r
+[CAT1_WRN]cat1_getsignal: rsrq_db=14.000000, rsrp_dbm=-83.000000\r
+\r
+[CAT1_WRN]MESSAGE_4G_AT_RECEIVED +CESQ:50,99,255,255,34,57\r
+\r
+\r
+[CAT1_DBG]\r
+CAT1 SERVICE MCU SLEEP SUCCESS\r
+\r
+[CAT1_DBG]recv len:58 rx_buffer:FE090050+CESQ:50,99,255,255,34,57\r
+\r
+\r
+\r
+[CAT1_DBG]g_msg_format_type 1\r
+\r
+[CAT1_DBG]cmd 9,bufferlen 50 , buffer +CESQ:50,99,255,255,34,57\r
+\r
+ \r
+\r
+[CAT1_DBG]ATCMD reply len(28): +CESQ:50,99,255,255,34,57\r
+\r
+\r
+\r
+[CAT1_WRN]cat1_getsignal: rsrq_db=14.000000, rsrp_dbm=-83.000000\r
+\r
+[CAT1_WRN]MESSAGE_4G_AT_RECEIVED +CESQ:50,99,255,255,34,57\r
+\r
+\r
+[CAT1_DBG]\r
+CAT1 SERVICE MCU SLEEP SUCCESS\r
+\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 114475, deepsleep time:617, lightsleep time:87114, m sleep flag:0\r
+APP|M core deepsleep cnt:20, lightsleep cnt:35610\r
+APP|M core last veto id:7, last veto count:0, total_counts=2\r
+[23:56:15:880][I]{DoSeekIfNeed():1802} seek start \r
+[23:56:15:880][I]{PlayerControlEventCb():260} seek action end, time is 0 \r
+[23:56:15:881][I]{DoSeekIfNeed():1827} seek end \r
+[CAT1_INFO]CAT1TEST ATCMD  getsignal  \r
+\r
+[CAT1_DBG]cat1_getsignal: Sending AT+CESQ via UDP\r
+\r
+[CAT1_DBG]recv len:58 rx_buffer:FE090050+CESQ:50,99,255,255,34,57\r
+\r
+\r
+\r
+[CAT1_DBG]g_msg_format_type 1\r
+\r
+[CAT1_DBG]cmd 9,bufferlen 50 , buffer +CESQ:50,99,255,255,34,57\r
+\r
+ \r
+\r
+[CAT1_DBG]ATCMD reply len(28): +CESQ:50,99,255,255,34,57\r
+\r
+\r
+\r
+[CAT1_WRN]cat1_getsignal: rsrq_db=14.000000, rsrp_dbm=-83.000000\r
+\r
+[CAT1_WRN]MESSAGE_4G_AT_RECEIVED +CESQ:50,99,255,255,34,57\r
+\r
+\r
+[CAT1_DBG]\r
+CAT1 SERVICE MCU SLEEP SUCCESS\r
+\r
+[CAT1_DBG]recv len:126 rx_buffer:FE070118imei:867998086791248@sim:1@iccid:89860492192590378178@oper:('CHINA MOBILE', 'CMCC', '460', '00')@signal:26@net:0,0,1,7\r
+\r
+[CAT1_DBG]g_msg_format_type 1\r
+\r
+[CAT1_DBG]cmd 7,buSignal值: 26\r
+CAT1 Signal值: 26 (2/5)\r
+fferlen 118 , buffer imei:867998086791248@sim:1@iccid:89860492192590378178@oper:('CHINA MOBILE', 'CMCC', '460', '00')@signal:26@net:0,0,1,7 \r
+\r
+Signal值: 26\r
+[CAT1_DBG]=== imei 867998086791248 to 867998086791248\r
+\r
+[CAT1_DBG]=== sim = 1\r
+\r
+[CAT1_DBG]=== iccid = 89860492192590378178\r
+\r
+[CAT1_DBG]=== opera ('CHINA MOBILE', 'CMCC', '460', '00') to ('CHINA MOBILE', 'CMCC', '460', '00')\r
+\r
+[CAT1_DBG]=== signal = 26, signal_bars = 3\r
+\r
+[CAT1_DBG]=== networkon = 1 , connected \r
+\r
+[CAT1_DBG]=== network_type = 7 , E_UTRAN\r
+\r
+[CAT1_DBG]\r
+CAT1 SERVICE MCU SLEEP SUCCESS\r
+\r
+[SIO] Timer callback executed 3701 times, enabled=1, running=1\r
+[23:56:18:101][I]{DoSeekIfNeed():1802} seek start \r
+[23:56:18:101][I]{PlayerControlEventCb():260} seek action end, time is 0 \r
+[23:56:18:102][I]{DoSeekIfNeed():1827} seek end \r
+[CAT1_INFO]CAT1TEST ATCMD  getsignal  \r
+\r
+[CAT1_DBG]cat1_getsignal: Sending AT+CESQ via UDP\r
+\r
+[CAT1_DBG]recv len:58 rx_buffer:FE090050+CESQ:50,99,255,255,34,57\r
+\r
+\r
+\r
+[CAT1_DBG]g_msg_format_type 1\r
+\r
+[CAT1_DBG]cmd 9,bufferlen 50 , buffer +CESQ:50,99,255,255,34,57\r
+\r
+ \r
+\r
+[CAT1_DBG]ATCMD reply len(28): +CESQ:50,99,255,255,34,57\r
+\r
+\r
+\r
+[CAT1_WRN]cat1_getsignal: rsrq_db=14.000000, rsrp_dbm=-83.000000\r
+\r
+[CAT1_WRN]MESSAGE_4G_AT_RECEIVED +CESQ:50,99,255,255,34,57\r
+\r
+\r
+[CAT1_DBG]\r
+CAT1 SERVICE MCU SLEEP SUCCESS\r
+\r
+[CAT1_DBG]recv len:126 rx_buffer:FE070118imei:867998086791248@sim:1@iccid:89860492192590378178@oper:('CHINA MOBILE', 'CMCC', '460', '00')@signal:26@net:0,0,1,7\r
+\r
+[CAT1_DBG]g_msg_format_type 1\r
+\r
+[CAT1_DBG]cmd 7,buffeSignal值: 26\r
+CAT1 Signal值: 26 (3/5)\r
+rlen 118 , buffer imei:867998086791248@sim:1@iccid:89860492192590378178@oper:('CHINA MOBILE', 'CMCC', '460', '00')@signal:26@net:0,0,1,7 \r
+\r
+Signal值: 26\r
+[CAT1_DBG]=== imei 867998086791248 to 867998086791248\r
+\r
+[CAT1_DBG]=== sim = 1\r
+\r
+[CAT1_DBG]=== iccid = 89860492192590378178\r
+\r
+[CAT1_DBG]=== opera ('CHINA MOBILE', 'CMCC', '460', '00') to ('CHINA MOBILE', 'CMCC', '460', '00')\r
+\r
+[CAT1_DBG]=== signal = 26, signal_bars = 3\r
+\r
+[CAT1_DBG]=== networkon = 1 , connected \r
+\r
+[CAT1_DBG]=== network_type = 7 , E_UTRAN\r
+\r
+[CAT1_DBG]\r
+CAT1 SERVICE MCU SLEEP SUCCESS\r
+\r
+[SIO] Timer callback executed 3801 times, enabled=1, running=1\r
+APP|app_main run start.\r
+APP|sys_slp: 0x0\r
+APP|M core run time 119475, deepsleep time:617, lightsleep time:89322, m sleep flag:0\r
+APP|M core deepsleep cnt:20, lightsleep cnt:38556\r
+APP|M core last veto id:7, last veto count:0, total_counts=2\r
+[CAT1_INFO]CAT1TEST ATCMD  getsignal  \r
+\r
+[CAT1_DBG]cat1_getsignal: Sending AT+CESQ via UDP\r
+\r
+[23:56:20:605][I]{DoSeekIfNeed():1802} seek start \r
+[23:56:20:605][I]{PlayerControlEventCb():260} seek action end, time is 0 \r
+[23:56:20:606][I]{DoSeekIfNeed():1827} seek end \r
+[CAT1_DBG]recv len:58 rx_buffer:FE090050+CESQ:50,99,255,255,34,57\r
+\r
+\r
+\r
+[CAT1_DBG]g_msg_format_type 1\r
+\r
+[CAT1_DBG]cmd 9,bufferlen 50 , buffer +CESQ:50,99,255,255,34,57\r
+\r
+ \r
+\r
+[CAT1_DBG]ATCMD reply len(28): +CESQ:50,99,255,255,34,57\r
+\r
+\r
+\r
+[CAT1_WRN]cat1_getsignal: rsrq_db=14.000000, rsrp_dbm=-83.000000\r
+\r
+[CAT1_WRN]MESSAGE_4G_AT_RECEIVED +CESQ:50,99,255,255,34,57\r
+\r
+\r
+[CAT1_DBG]\r
+CAT1 SERVICE MCU SLEEP SUCCESS\r
+\r
+[CAT1_DBG]recv len:126 rx_buffer:FE070118imei:867998086791248@sim:1@iccid:89860492192590378178@oper:('CHINA MOBILE', 'CMCC', '460', '00')@signal:26@net:0,0,1,7\r
+\r
+[CAT1_DBG]g_msg_fSignal值: 26\r
+CAT1 Signal值: 26 (4/5)\r
+ormat_type 1\r
+\r
+[CAT1_DBG]cmd 7,bufferlen 118 , buffer imei:867998086791248@sim:1@iccid:89860492192590378178@oper:('CHINA MOBILE', 'CMCC', '460', '00')@signal:26@net:0,0,1,7 \r
+\r
+Signal值: 26\r
+[CAT1_DBG]=== imei 867998086791248 to 867998086791248\r
+\r
+[CAT1_DBG]=== sim = 1\r
+\r
+[CAT1_DBG]=== iccid = 89860492192590378178\r
+\r
+[CAT1_DBG]=== opera ('CHINA MOBILE', 'CMCC', '460', '00') to ('CHINA MOBILE', 'CMCC', '460', '00')\r
+\r
+[CAT1_DBG]=== signal = 26, signal_bars = 3\r
+\r
+[CAT1_DBG]=== networkon = 1 , connected \r
+\r
+[CAT1_DBG]=== network_type = 7 , E_UTRAN\r
+\r
+[CAT1_DBG]\r
+CAT1 SERVICE MCU SLEEP SUCCESS\r
+\r
+[CAT1_INFO]CAT1TEST ATCMD  getsignal  \r
+\r
+[CAT1_DBG]cat1_getsignal: Sending AT+CESQ via UDP\r
+\r
+[CAT1_DBG]recv len:58 rx_buffer:FE090050+CESQ:50,99,255,255,34,57\r
+\r
+\r
+\r
+[CAT1_DBG]g_msg_format_type 1\r
+\r
+[CAT1_DBG]cmd 9,bufferlen 50 , buffer +CESQ:50,99,255,255,34,57\r
+\r
+ \r
+\r
+[CAT1_DBG]ATCMD reply len(28): +CESQ:50,99,255,255,34,57\r
+\r
+\r
+\r
+[CAT1_WRN]cat1_getsignal: rsrq_db=14.000000, rsrp_dbm=-83.000000\r
+\r
+[CAT1_WRN]MESSAGE_4G_AT_RECEIVED +CESQ:50,99,255,255,34,57\r
+\r
+\r
+[CAT1_DBG]\r
+CAT1 SERVICE MCU SLEEP SUCCESS\r
+\r
+[CAT1_DBG]recv len:126 rx_buffer:FE070118imei:867998086791248@sim:1@iccid:89860492192590378178@oper:('CHINA MOBILE', 'CMCC', '460', '00')@signal:26@net:0,0,1,7\r
+\r
+[CAT1_DBG]g_msg_format_type 1\r
+\r
+[CAT1_DBG]cmd 7,bufferlen 118 , buffer imei:867998086791248@sim:1@iccid:89860492192590378178@oper:('CHINA MOBILE', 'CMCC', '460', '00')@signal:26@net:0,0,1,7 \r
+\r
+Signal值: 26\r
+CAT1 Signal值: 26 (5/5)\r
+Signal值: 26\r
+[CAT1_DBG]=== imei 867998086791248 to 867998086791248\r
+\r
+[CAT1_DBG]=== sim = 1\r
+\r
+[CAT1_DBG]=== iccid = 89860492192590378178\r
+\r
+[CAT1_DBG]=== opera ('CHINA MOBILE', 'CMCC', '460', '00') to ('CHINA MOBILE', 'CMCC', '460', '00')\r
+\r
+[CAT1_DBG]=== signal = 26, signal_bars = 3\r
+\r
+[CAT1_DBG]=== networkon = 1 , connected \r
+\r
+[CAT1_DBG]=== network_type = 7 , E_UTRAN\r
+\r
+[CAT1_DBG]\r
+CAT1 SERVICE MCU SLEEP SUCCESS\r
+\r
+[23:56:23:052][I]{DoSeekIfNeed():1802} seek start \r
+[23:56:23:052][I]{PlayerControlEventCb():260} seek action end, time is 0 \r
+[23:56:23:053][I]{DoSeekIfNeed():1827} seek end \r
+[SIO] Timer callback executed 3901 times, enabled=1, running=1\r
+uapi_get_screen_state = on . \r
+[CAT1_INFO]g_signal_already_updated 1 , g_ws_idle 0, need_update_signal 1\r
+\r
+发送Ping指令: AT^PING=www.163.com\r
+OsShellPing 715 name www.163.com\r
+OsShellPing 739 dst_ip 0x62489C24 (from DNS)\r
+OsPingFunc: Creating RAW socket for ICMP, destip=0x62489C24, cnt=4, data_len=48\r
+OsPingFunc: Network interface OK, IP=172.16.1.5\r
+OsPingFunc: Destination is EXTERNAL, requires gateway routing\r
+OsPingFunc: Gateway: 172.16.1.2\r
+OsPingFunc: Socket created successfully, fd=2\r
+OsPingFunc: Allocating pbuf, size=28\r
+OsPingFunc: pbuf allocated successfully\r
+OsPingFunc: Allocating ICMP echo request, size=56\r
+OsPingFunc: ICMP echo request allocated successfully\r
+OsPingFunc: Target IP=36.156.72.98 (0x62489C24), socket family=2\r
+OsPingFunc: Sending ICMP echo request [0], len=56 to 0x62489C24\r
+OsPingFunc: ICMP echo request sent successfully, bytes=56\r
+OsPingFunc: poll returned 1, ready to receive\r
+OsPingFunc: received 28 bytes\r
+\r
+[0]Reply from 36.156.72.98: time=124ms TTL=56[23:56:25:155][I]{DoSeekIfNeed():1802} seek start \r
+[23:56:25:155Ping成功响应: [0]Reply from 36.156.72.98: time=124ms TTL=56[23:56:25:155][I]{DoSeekIfNeed():1802} seek start\r
+========== Ping测试通过 ==========\r
diff --git a/releasePackage/LN_Factorytool_V1.7/产测记录/logs/20260118_102017_867998086791248_89860492192590378178.log b/releasePackage/LN_Factorytool_V1.7/产测记录/logs/20260118_102017_867998086791248_89860492192590378178.log
new file mode 100644 (file)
index 0000000..4c2d055
--- /dev/null
@@ -0,0 +1,53 @@
+=== 测试开始时间: 2026-01-18 10:20:17 ===\r
+IMEI: 未知\r
+ICCID: 未知\r
+========================================\r
+enter or exit facotry mode :1\r
+g_VibratorFunc delaytime_ms_high  2 ,  delaytime_ms_low 2 \r\r
+Network Stat Signal值: 25\r
+Network Stat Signal值: 26\r
+^^^^ BTMAC=1C:1D:2B:DA:B5:DA ^^^^ CyweeChipInfo=\r
+fac:^^^^ BTMAC=1C:1D:2B:DA:B5:DA ^^^^ CyweeChipInfo=\r
+BuildVer:V1.0.36_20260117_152353\r
+LCD test Red\r
+LCD test Green\r
+LCD test Blue\r
+g_VibratorFunc delaytime_ms_high  2 ,  delaytime_ms_low 2 \r\r
+g_VibratorFunc delaytime_ms_high  2 ,  delaytime_ms_low 2 \r\r
+id : 2\r
+id : 2\r
+id : 1\r
+id : 1\r
+id : 0\r
+id : 0\r
+id : 3\r
+id : 3\r
+[AudioTest] Volume - RMS: 2.26% (-32.93 dB), Peak: 29.66% (-10.56 dB), Level: 低\r\r
+mic level:低\r
+[AudioTest] Volume - RMS: 7.83% (-22.12 dB), Peak: 29.33% (-10.65 dB), Level: 低\r\r
+mic level:低\r
+[AudioTest] Volume - RMS: 8.97% (-20.94 dB), Peak: 31.94% (-9.91 dB), Level: 低\r\r
+mic level:低\r
+[AudioTest] Volume - RMS: 8.25% (-21.67 dB), Peak: 29.90% (-10.49 dB), Level: 低\r\r
+mic level:低\r
+[AudioTest] Volume - RMS: 8.47% (-21.44 dB), Peak: 30.45% (-10.33 dB), Level: 低\r\r
+mic level:低\r
+[AudioTest] Volume - RMS: 8.30% (-21.62 dB), Peak: 30.53% (-10.31 dB), Level: 低\r\r
+mic level:低\r
+[AudioTest] Volume - RMS: 9.10% (-20.82 dB), Peak: 30.77% (-10.24 dB), Level: 低\r\r
+mic level:低\r
+[AudioTest] Volume - RMS: 9.12% (-20.80 dB), Peak: 36.11% (-8.85 dB), Level: 低\r\r
+mic level:低\r
+[AudioTest] Volume - RMS: 11.12% (-19.08 dB), Peak: 32.85% (-9.67 dB), Level: 中\r\r
+mic level:中\r
+[AudioTest] Volume - RMS: 10.56% (-19.52 dB), Peak: 35.52% (-8.99 dB), Level: 中\r\r
+mic level:中\r
+[AudioTest] Volume - RMS: 9.93% (-20.06 dB), Peak: 35.21% (-9.07 dB), Level: ���\r\r
+mic level:低\r
+[AudioTest] Volume - RMS: 10.51% (-19.57 dB), Peak: 46.19% (-6.71 dB), Level:[10:21:07:117][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 49600 \r
+mic level:中\r
+voltage : 3.727 , percent 38 , temp : 20.815, charge : 1\r\r
+gsensor id : 0x13\r
+id : 0\r
+id : 0\r
+Signal值: 29\r
diff --git a/releasePackage/LN_Factorytool_V1.7/产测记录/logs/20260118_102017_未知_未知.log b/releasePackage/LN_Factorytool_V1.7/产测记录/logs/20260118_102017_未知_未知.log
new file mode 100644 (file)
index 0000000..250e5b4
--- /dev/null
@@ -0,0 +1,40 @@
+CAT1 Signal值: 29 (1/5)\r
+Signal值: 29\r
+Network Stat Signal值: 29\r
+Signal值: 29\r
+Signal值: 29\r
+CAT1 Signal值: 29 (2/5)\r
+Signal值: 29\r
+Signal值: 29\r
+CAT1 Signal值: 29 (3/5)\r
+Signal值: 29\r
+Signal值: 29\r
+CAT1 Signal值: 29 (4/5)\r
+Signal值: 29\r
+Signal值: 29\r
+CAT1 Signal值: 29 (5/5)\r
+Signal值: 29\r
+发送Ping指令: AT^PING=www.163.com\r
+Ping成功响应: [0]Reply from 36.156.72.98: time=153ms TTL=56[10:22:39:834][I]{DoSeekIfNeed():1802} seek start\r
+========== Ping测试通过 ==========\r
+g_VibratorFunc delaytime_ms_high  2 ,  delaytime_ms_low 2 \r\r
+Network Stat Signal值: 29\r
+^^^^ BTMAC=1C:1D:2B:DA:B5:DA ^^^^ CyweeChipInfo=\r
+fac:^^^^ BTMAC=1C:1D:2B:DA:B5:DA ^^^^ CyweeChipInfo=\r
+BuildVer:V1.0.36_20260117_152353\r
+=== 检测到设备开机: BuildVer ===\r
+=== 检测到开机,自动发送产测模式检测指令: AT^FACTORY? ===\r
+产测模式检测指令响应: failed! mbedtls_net_connect returned -82, port:443.[WEARABLE E/] ln_get_device_token_http: request failed -5\r
+产测模式检测指令响应: [WEARABLE E/] [TOKEN] 刷新 Token 失败\r
+产测模式检测指令响应: [WEARABLE E/] [TOKEN] 网络离线,无法刷新 Token,重���次数: 1\r
+产测模式检测指令响应: [LN][WS][ERROR] ln_ws_url_callback: token is null or empty\r
+产测模式检测指令响应: [HAISI_WS 530][ERROR] URL callback failed: -1, will not create WebSocket client\r
+产测模式检测指令响应: [WEARABLE E/] [TOKEN] 刷新 Token\r
+产测模式检测指令响应: [WEARABLE E/] [TOKEN] 网络���线,刷新 Token\r
+产测模式检测指令响应: svr_cert verification ok.\r
+产测模式检测指令响应: [WEARABLE E/] ln_token_save_json: fwrite success\r
+产测模式检测指令响应: [WEARABLE E/] ln_token_save_json: save json={"device_token":"eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJXWVNaIiwiZGV2aWNlTW9kZWwiOiJBQjEwMSIsImRldmljZVZlcnNpb24iOiJWMS4wLjM2XzIwMjYwMTE3IiwiZGV2aWNlSWQiOiI4Njc5OTgwODY3OTEyNDgiLCJleHAiOjE3NzEyOTUwMTd9.asYbdqjVAhJRChOBtZKSD1851DYJqYqQklJa1i5ggJU","expire_timestamp":1768703017,"create_time":"2026-01-18 10:23:37"}\r
+产测模式检测指令响应: [WEARABLE E/] [TOKEN] 刷新 Token 成功\r
+产测模式检测指令响应: [HAISI_WS 569][INFO] 尝试连接WebSocket: ws://ambybox-o.api.leiniao.com/ambybox-device-api/v1/websocket?deviceToken=eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJXWVNaIiwiZGV2aWNlTW9kZWwiOiJBQjEwMSIsImRldmljZVZlcnNpb24iOiJWMS4wLjM2XzIwMjYwMTE3IiwiZGV2aWNlSWQiOiI4Njc5OTgwODY3OTEyNDgiLCJleHAiOjE3NzEyOTUwMTd9.asYbdqjVAhJRChOBtZKSD1851DYJqYqQklJa1i5ggJU&deviceId=867998086791248&reconnect=0\r
+产测模式检测指令响应: [WEARABLE E/] uapi_ln_get_device_token: cached token=eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJXWVNaIiwiZGV2aWNlTW9kZWwiOiJBQjEwMSIsImRldmljZVZlcnNpb24iOiJWMS4wLjM2XzIwMjYwMTE3IiwiZGV2aWNlSWQiOiI4Njc5OTgwODY3OTEyNDgiLCJleHAiOjE3NzEyOTUwMTd9.asYbdqjVAhJRChOBtZKSD1851DYJqYqQklJa1i5ggJU\r
+产测模式检测指令响应: deviceToken: eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJXWVNaIiwiZGV2aWNlTW9kZWwiOiJBQjEwMSIsImRldmljZVZlcnNpb24iOiJWMS4wLjM2XzIwMjYwMTE3IiwiZGV2aWNlSWQiOiI4Njc5OTgwODY3OTEyNDgiLCJleHAiOjE3NzEyOTUwMTd9.asYbdqjVAhJRChOBtZKSD1851DYJqYqQklJa1i5ggJU\r
diff --git a/releasePackage/LN_Factorytool_V1.7/产测记录/产测记录.csv b/releasePackage/LN_Factorytool_V1.7/产测记录/产测记录.csv
new file mode 100644 (file)
index 0000000..6c2e229
--- /dev/null
@@ -0,0 +1,11 @@
+开始时间,结束时间,测试耗时,软件版本,IMEI,ICCID,Modem版本,PYVER版本,LCD测试,马达测试,按键测试,录音测试,电池测试,G-sensor测试,蓝牙测试,4G测试,整体结果\r
+2025-12-05 13:00:44,2025-12-05 13:01:38,0分54秒,V1.0.13_20251205_072113,860132064641483,898604B7192590313310,EG810MCNLAR06A01M08_VOLTE_OCPU_QPY_TEST0725,PY_SRV_V26,通过,通过,通过,通过,通过,通过,通过,通过\r
+2025-12-04 22:53:01,2025-12-04 22:55:12,2分11秒,V1.0.11_20251204_111711,867998087101264,89860480192590667363,EG800AKCN91LCR07A01M04_OCPU_QPY_BETA1022,PY_SRV_V27,通过,通过,通过,通过,失败,通过,失败,通过\r
+2025-12-04 21:17:18,2025-12-04 21:22:19,5分0秒,V1.0.11_20251204_210213,867998087083025,89860480192590667477,EG800AKCN91LCR07A01M04_OCPU_QPY_BETA1022,PY_SRV_V27,通过,通过,通过,失败,失败,未测试,未测试,未测试\r
+2025-12-05 23:12:06,2025-12-05 23:12:56,0分49秒,V1.0.11_20251203_200318,867998086583140,89860480192590667349,EG800AKCN91LCR07A01M04_OCPU_QPY_BETA1022,PY_SRV_V27,未测试,未测试,未测试,未测试,未测试,通过,失败,通过\r
+2025-12-07 10:39:46,2025-12-07 10:41:02,1分15秒,V1.0.13_20251205_072113,867998086676464,89860480192590667383,EG800AKCN91LCR07A01M04_OCPU_QPY_BETA1022,PY_SRV_V27,通过,通过,通过,通过,通过,通过,失败,失败\r
+2025-12-07 09:49:34,2025-12-07 09:50:46,1分11秒,V1.0.13_20251205_072113,867998087084643,89860480192590667623,EG800AKCN91LCR07A01M04_OCPU_QPY_BETA1022,PY_SRV_V27,通过,通过,通过,失败,通过,通过,失败,通过\r
+2025-12-15 13:01:13,2025-12-15 13:01:56,0分42秒,V1.0.15_20251209_093136,867998086286447,89860480192590667572,EG800AKCN91LCR07A01M04_OCPU_QPY_BETA1022,PY_SRV_V28,通过,通过,未测试,未测试,通过,通过,通过,通过\r
+2025-12-08 14:14:15,2025-12-08 14:15:12,0分56秒,V1.0.13_20251208_115352,867998087083207,89860480192590667549,EG800AKCN91LCR07A01M04_OCPU_QPY_BETA1022,PY_SRV_V27,通过,通过,通过,通过,通过,通过,通过,通过\r
+2025-12-15 11:57:34,2025-12-15 11:58:46,1分12秒,V1.0.13_20251205_072113[SIO] Timer callback executed 401 times, enabled=1, running=1,867998086733067,89860480192590667660,EG800AKCN91LCR07A01M04_OCPU_QPY_BETA1022,PY_SRV_V27,通过,失败,通过,通过,通过,通过,通过,通过\r
+2026-01-17 23:54:21,2026-01-17 23:56:27,2分5秒,V1.0.36_20260117_152353,867998086791248,89860492192590378178,EG800AKCN91LCR07A01M04_OCPU_QPY_BETA1215,PY_SRV_V29,通过,通过,通过,通过,通过,通过,通过,通过\r
diff --git a/releasePackage/LN_Factorytool_V1.7/雷鸟产测使用说明_V1.7.pdf b/releasePackage/LN_Factorytool_V1.7/雷鸟产测使用说明_V1.7.pdf
new file mode 100644 (file)
index 0000000..e4649bb
Binary files /dev/null and "b/releasePackage/LN_Factorytool_V1.7/\351\233\267\351\270\237\344\272\247\346\265\213\344\275\277\347\224\250\350\257\264\346\230\216_V1.7.pdf" differ
diff --git a/releasePackage/雷鸟产测使用说明_V1.7.docx b/releasePackage/雷鸟产测使用说明_V1.7.docx
new file mode 100644 (file)
index 0000000..0466fd3
Binary files /dev/null and "b/releasePackage/\351\233\267\351\270\237\344\272\247\346\265\213\344\275\277\347\224\250\350\257\264\346\230\216_V1.7.docx" differ