From: SnickerSun Date: Sun, 18 Jan 2026 03:41:27 +0000 (+0800) Subject: 雷鸟产测工具V1.7 X-Git-Url: http://git.snicker.com.cn/sitemap.xml?a=commitdiff_plain;h=b51bbba822e386565a18e44cdd42b01ccd5227d4;p=mirrors%2Ffactory_tool.git 雷鸟产测工具V1.7 1、添加 压力测试按钮, 2、添4G测试的PING校验,方便确认SIM卡是否正常激活可以上网。 3、添加说明文档 --- diff --git a/config_manager.cpp b/config_manager.cpp index 6a9f753..7216de6 100644 --- a/config_manager.cpp +++ b/config_manager.cpp @@ -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; diff --git a/config_manager.h b/config_manager.h index a6476c9..5a34b02 100644 --- a/config_manager.h +++ b/config_manager.h @@ -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; diff --git a/mainwindow.cpp b/mainwindow.cpp index 3e829da..d3894f6 100644 --- a/mainwindow.cpp +++ b/mainwindow.cpp @@ -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() { - // 清空所有UI内容 + // 清空文本框内容 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() { - // 清空所有UI内容 + // 清空文本框内容 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() { - // 清空所有UI内容 + // 清空文本框内容 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() { diff --git a/mainwindow.h b/mainwindow.h index e0f7bd7..e0861d3 100644 --- a/mainwindow.h +++ b/mainwindow.h @@ -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; // 十六进制与字节数组转换工具函数 diff --git a/mainwindow.ui b/mainwindow.ui index b9b7b1e..1a63dab 100644 --- a/mainwindow.ui +++ b/mainwindow.ui @@ -7,7 +7,7 @@ 0 0 1309 - 829 + 930 @@ -68,6 +68,27 @@ + + + + false + + + QPushButton { +background-color: #ff0000; +color: white; +border-radius: 4px; +font-weight: bold; +} +QPushButton:hover { +background-color: #F57C00; +} + + + 压力测试 + + + @@ -686,9 +707,9 @@ background-color: #F57C00; 0 - -76 - 407 - 621 + 0 + 512 + 708 @@ -1306,7 +1327,7 @@ background-color: #F57C00; 0 0 1309 - 23 + 26 diff --git a/qrcodegen.hpp b/qrcodegen.hpp index cc60d6f..077d365 100644 --- a/qrcodegen.hpp +++ b/qrcodegen.hpp @@ -1,549 +1,550 @@ -/* - * 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 -#include -#include -#include -#include - - -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 &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 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 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 &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 &&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 &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 &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 &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 &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 > modules; - - // Indicates function modules that are not subjected to masking. Discarded when constructor finishes. - private: std::vector > 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 &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 addEccAndInterleave(const std::vector &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 &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 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 reedSolomonComputeDivisor(int degree); - - - // Returns the Reed-Solomon error correction codeword for the given data and divisor polynomials. - private: static std::vector reedSolomonComputeRemainder(const std::vector &data, const std::vector &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 &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 &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 &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 { - - /*---- 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); - -}; - -} +/* + * 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 +#include +#include +#include +#include + + +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 &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 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 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 &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 &&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 &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 &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 &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 &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 > modules; + + // Indicates function modules that are not subjected to masking. Discarded when constructor finishes. + private: std::vector > 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 &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 addEccAndInterleave(const std::vector &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 &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 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 reedSolomonComputeDivisor(int degree); + + + // Returns the Reed-Solomon error correction codeword for the given data and divisor polynomials. + private: static std::vector reedSolomonComputeRemainder(const std::vector &data, const std::vector &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 &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 &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 &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 { + + /*---- 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); + +}; + +} + diff --git a/releasePackage/LN_Factorytool_V1.7.zip b/releasePackage/LN_Factorytool_V1.7.zip new file mode 100644 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 index 0000000..af29449 Binary files /dev/null and b/releasePackage/LN_Factorytool_V1.7/LeiNiaoFactoryTool.exe differ diff --git a/settings.json b/releasePackage/LN_Factorytool_V1.7/settings.json similarity index 53% rename from settings.json rename to releasePackage/LN_Factorytool_V1.7/settings.json index fa7504d..2c5884a 100644 --- a/settings.json +++ b/releasePackage/LN_Factorytool_V1.7/settings.json @@ -4,24 +4,36 @@ "NAND flash ID", "NAND ID:" ], - "versionInfoCommands": [ - "AT^CAT1GETVER", - "AT^CAT1GETSIGNAL", - "AT^FACTORY" - ], "factoryModeCheckCommand": "AT^FACTORY", "factoryModeKeywords": [ "FACTORY TEST MODE:" ], + "pingCommand": "AT^PING=www.163.com", + "stressTestCommand": "AT^LN_STRESS_TEST_DIALOGUE", + "testCheckboxes": { + "4g": true, + "bt": true, + "btn": true, + "charge": true, + "gsensor": true, + "lcd": true, + "mic": true, + "ntc": true, + "vib": true + }, "testConfig": { - "portName": "", - "audioVolume": "2.0", "audioLevelStandard": "中", + "audioVolume": "2.0", + "bluetoothAddress": "", + "bluetoothRSSI": "", "expectedModemVer": "", "expectedPYVer": "", "expectedVer": "", - "bluetoothAddress": "", - "bluetoothRSSI": "" - } + "portName": "COM42 (USB-Enhanced-SERIAL CH343)" + }, + "versionInfoCommands": [ + "AT^CAT1GETVER", + "AT^CAT1GETSIGNAL", + "AT^FACTORY" + ] } - diff --git "a/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" "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" new file mode 100644 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/\344\272\247\346\265\213\350\256\260\345\275\225/logs/20260117_235421_867998086791248_89860492192590378178.log" "b/releasePackage/LN_Factorytool_V1.7/\344\272\247\346\265\213\350\256\260\345\275\225/logs/20260117_235421_867998086791248_89860492192590378178.log" new file mode 100644 index 0000000..de301dd --- /dev/null +++ "b/releasePackage/LN_Factorytool_V1.7/\344\272\247\346\265\213\350\256\260\345\275\225/logs/20260117_235421_867998086791248_89860492192590378178.log" @@ -0,0 +1,36 @@ +=== 测试开始时间: 2026-01-17 23:54:21 === +IMEI: 未知 +ICCID: 未知 +======================================== +enter or exit facotry mode :1 +g_VibratorFunc delaytime_ms_high 2 , delaytime_ms_low 2 +Network Stat Signal值: 26 +^^^^ BTMAC=1C:1D:2B:DA:B5:DA ^^^^ CyweeChipInfo= +fac:^^^^ BTMAC=1C:1D:2B:DA:B5:DA ^^^^ CyweeChipInfo= +BuildVer:V1.0.36_20260117_152353 +LCD test Red +LCD test Green +LCD test Blue +g_VibratorFunc delaytime_ms_high 2 , delaytime_ms_low 2 +g_VibratorFunc delaytime_ms_high 2 , delaytime_ms_low 2 +g_VibratorFunc delaytime_ms_high 2 , delaytime_ms_low 2 +g_VibratorFunc delaytime_ms_high 2 , delaytime_ms_low 2 +g_VibratorFunc delaytime_ms_high 2 , delaytime_ms_low 2 +g_VibratorFunc delaytime_ms_high 2 , delaytime_ms_low 2 +[AudioTest] Volume - RMS: 2.23% (-33.04 dB), Peak: 27.70% (-11.15 dB), Level: 低 +mic level:低 +[AudioTest] Volume - RMS: 9.60% (-20.35 dB), Peak: 28.80% (-10.81 dB), Level: 低 +mic level:低 +[AudioTest] Volume - RMS: 10.26% (-19.77 dB), Peak: 29.86% (-10.50 dB), Level: 中 +mic level:中 +[AudioTest] Volume - RMS: 11.60% (-18.71 dB), Peak: 30.17% (-10.41 dB), Level: 中 +mic level:中 +[AudioTest] Volume - RMS: 10.49% (-19.58 dB), Peak: 30.44% (-10.33 dB), Level: 中 +mic level:中 +voltage : 3.765 , percent 44 , temp : 21.683, charge : 1 +gsensor id : 0x13 +id : 3 +id : 3 +id : 0 +id : 0 +Signal值: 26 diff --git "a/releasePackage/LN_Factorytool_V1.7/\344\272\247\346\265\213\350\256\260\345\275\225/logs/20260117_235421_\346\234\252\347\237\245_\346\234\252\347\237\245.log" "b/releasePackage/LN_Factorytool_V1.7/\344\272\247\346\265\213\350\256\260\345\275\225/logs/20260117_235421_\346\234\252\347\237\245_\346\234\252\347\237\245.log" new file mode 100644 index 0000000..af3617e --- /dev/null +++ "b/releasePackage/LN_Factorytool_V1.7/\344\272\247\346\265\213\350\256\260\345\275\225/logs/20260117_235421_\346\234\252\347\237\245_\346\234\252\347\237\245.log" @@ -0,0 +1,111 @@ +CAT1 Signal值: 26 (1/5) +Signal值: 26 +Signal值: 26 +CAT1 Signal值: 26 (2/5) +Signal值: 26 +Signal值: 26 +CAT1 Signal值: 26 (3/5) +Signal值: 26 +Signal值: 26 +CAT1 Signal值: 26 (4/5) +Signal值: 26 +Signal值: 26 +CAT1 Signal值: 26 (5/5) +Signal值: 26 +发送Ping指令: AT^PING=www.163.com +Ping成功响应: [0]Reply from 36.156.72.98: time=124ms TTL=56[23:56:25:155][I]{DoSeekIfNeed():1802} seek start +========== Ping测试通过 ========== +=== 测试结束时间: 2026-01-17 23:56:27 === +测试记录已保存: 产测记录.csv + +=== UI日志内容 === +>>> 发送指令: AT^FACTORY=1 (开始产测)enter or exit facotry mode :1 + +>>> 发送指令: AT^FACTORY=1 (开始产测 - 第2次) +>>> 发送指令: AT^RESET (恢复出厂设置/重启设备)g_VibratorFunc delaytime_ms_high 2 , delaytime_ms_low 2 +Network Stat Signal值: 26 +^^^^ BTMAC=1C:1D:2B:DA:B5:DA ^^^^ CyweeChipInfo= +fac:^^^^ BTMAC=1C:1D:2B:DA:B5:DA ^^^^ CyweeChipInfo= +BuildVer:V1.0.36_20260117_152353 + +========== 开始LCD测试 ==========LCD test Red +LCD test Green +LCD test Blue + +>>> 发送指令: AT^LCDOFF (关闭LCD) +========== 开始马达测试 ==========g_VibratorFunc delaytime_ms_high 2 , delaytime_ms_low 2 +g_VibratorFunc delaytime_ms_high 2 , delaytime_ms_low 2 +g_VibratorFunc delaytime_ms_high 2 , delaytime_ms_low 2 +g_VibratorFunc delaytime_ms_high 2 , delaytime_ms_low 2 +g_VibratorFunc delaytime_ms_high 2 , delaytime_ms_low 2 +g_VibratorFunc delaytime_ms_high 2 , delaytime_ms_low 2 + +========== 开始按键测试 ========== +========== 开始录音测试 ========== +>>> 发送指令: AT^LCDOFF (关闭LCD,录音测试前强制关闭) +>>> 发送指令: AT^AUDIOTEST=5 +>>> 发送指令: AT^AUDIOTEST=7 2[AudioTest] Volume - RMS: 2.23% (-33.04 dB), Peak: 27.70% (-11.15 dB), Level: 低 +mic level:低 + +>>> 音频测试: 检测到等级 低 (< 中,不满足要求),连续计数已重置[AudioTest] Volume - RMS: 9.60% (-20.35 dB), Peak: 28.80% (-10.81 dB), Level: 低 +mic level:低 + +>>> 音频测试: 检测到等级 低 (< 中,不满足要求),连续计数已重置[AudioTest] Volume - RMS: 10.26% (-19.77 dB), Peak: 29.86% (-10.50 dB), Level: 中 +mic level:中 + +>>> 音频测试: 检测到等级 中 (>= 中),连续 1 次,累计 1 次[AudioTest] Volume - RMS: 11.60% (-18.71 dB), Peak: 30.17% (-10.41 dB), Level: 中 +mic level:中 + +>>> 音频测试: 检测到等级 中 (>= 中),连续 2 次,累计 2 次[AudioTest] Volume - RMS: 10.49% (-19.58 dB), Peak: 30.44% (-10.33 dB), Level: 中 +mic level:中 + +>>> 音频测试: 检测到等级 中 (>= 中),连续 3 次,累计 3 次 +>>> 音频测试通过: 连续 3 次满足要求 +>>> 发送指令: AT^AUDIOTEST=6 (结束音频测试) +========== 开始电池测试 ==========voltage : 3.765 , percent 44 , temp : 21.683, charge : 1 + +>>> 电池测试原始数据: fac:voltage : 3.765 , percent 44 , temp : 21.683, charge : 1 +>>> 电池测试: 检测到电池电压:3.765V, 电量:44%, 温度:21.683℃, 充电状态:充电中 +>>> 充电检查通过:设备正在充电 +========== 开始G-sensor测试 ==========gsensor id : 0x13 + +========== 开始蓝牙测试 ========== +>>> 发送指令: AT^BTENABLE (启用蓝牙) +>>> 发送指令: AT^BTSCANTEST=1 (开始蓝牙扫描) +>>> 检测到蓝牙设备: MAC=1C:1D:2B:73:00:73, RSSI=-97 dBm +>>> 新蓝牙设备: MAC=1C:1D:2B:73:00:73, RSSI=-97 dBm (已检测到 1 个不同设备) +>>> 检测到蓝牙设备: MAC=1C:1D:2B:49:F7:49, RSSI=-97 dBm +>>> 新蓝牙设备: MAC=1C:1D:2B:49:F7:49, RSSI=-97 dBm (已检测到 2 个不同设备) +>>> 检测到蓝牙设备: MAC=1C:1D:2B:E4:12:E4, RSSI=-95 dBm +>>> 新蓝牙设备: MAC=1C:1D:2B:E4:12:E4, RSSI=-95 dBm (已检测到 3 个不同设备) +>>> 蓝牙测试通过: 已检测到 3 个不同设备 (要求>=3) +>>> 发送指令: AT^BTSCANTEST=2 (结束蓝牙扫描) +>>> 发送指令: AT^BTDISABLE (禁用蓝牙)id : 3 + +========== 开始4G测试 ========== +========== 开始4G信号质量测试 ========== +>>> 发送指令: AT^CAT1GETSIGNALid : 3 +id : 0 +id : 0 +Signal值: 26 +CAT1 Signal值: 26 (1/5) +Signal值: 26 +Signal值: 26 +CAT1 Signal值: 26 (2/5) +Signal值: 26 +Signal值: 26 +CAT1 Signal值: 26 (3/5) +Signal值: 26 +Signal值: 26 +CAT1 Signal值: 26 (4/5) +Signal值: 26 +Signal值: 26 +CAT1 Signal值: 26 (5/5) +Signal值: 26 + +========== 开始Ping测试 ==========发送Ping指令: AT^PING=www.163.com +Ping成功响应: [0]Reply from 36.156.72.98: time=124ms TTL=56[23:56:25:155][I]{DoSeekIfNeed():1802} seek start + +========== Ping测试通过 ==================== Ping测试通过 ========== + +=== UI日志结束 === diff --git "a/releasePackage/LN_Factorytool_V1.7/\344\272\247\346\265\213\350\256\260\345\275\225/logs/20260117_235627_867998086791248_89860492192590378178_UI\346\227\245\345\277\227.log" "b/releasePackage/LN_Factorytool_V1.7/\344\272\247\346\265\213\350\256\260\345\275\225/logs/20260117_235627_867998086791248_89860492192590378178_UI\346\227\245\345\277\227.log" new file mode 100644 index 0000000..c949a2e --- /dev/null +++ "b/releasePackage/LN_Factorytool_V1.7/\344\272\247\346\265\213\350\256\260\345\275\225/logs/20260117_235627_867998086791248_89860492192590378178_UI\346\227\245\345\277\227.log" @@ -0,0 +1,92 @@ +=== UI日志保存时间: 2026-01-17 23:56:27 === +IMEI: 867998086791248 +ICCID: 89860492192590378178 +======================================== +>>> 发送指令: AT^FACTORY=1 (开始产测)enter or exit facotry mode :1 + +>>> 发送指令: AT^FACTORY=1 (开始产测 - 第2次) +>>> 发送指令: AT^RESET (恢复出厂设置/重启设备)g_VibratorFunc delaytime_ms_high 2 , delaytime_ms_low 2 +Network Stat Signal值: 26 +^^^^ BTMAC=1C:1D:2B:DA:B5:DA ^^^^ CyweeChipInfo= +fac:^^^^ BTMAC=1C:1D:2B:DA:B5:DA ^^^^ CyweeChipInfo= +BuildVer:V1.0.36_20260117_152353 + +========== 开始LCD测试 ==========LCD test Red +LCD test Green +LCD test Blue + +>>> 发送指令: AT^LCDOFF (关闭LCD) +========== 开始马达测试 ==========g_VibratorFunc delaytime_ms_high 2 , delaytime_ms_low 2 +g_VibratorFunc delaytime_ms_high 2 , delaytime_ms_low 2 +g_VibratorFunc delaytime_ms_high 2 , delaytime_ms_low 2 +g_VibratorFunc delaytime_ms_high 2 , delaytime_ms_low 2 +g_VibratorFunc delaytime_ms_high 2 , delaytime_ms_low 2 +g_VibratorFunc delaytime_ms_high 2 , delaytime_ms_low 2 + +========== 开始按键测试 ========== +========== 开始录音测试 ========== +>>> 发送指令: AT^LCDOFF (关闭LCD,录音测试前强制关闭) +>>> 发送指令: AT^AUDIOTEST=5 +>>> 发送指令: AT^AUDIOTEST=7 2[AudioTest] Volume - RMS: 2.23% (-33.04 dB), Peak: 27.70% (-11.15 dB), Level: 低 +mic level:低 + +>>> 音频测试: 检测到等级 低 (< 中,不满足要求),连续计数已重置[AudioTest] Volume - RMS: 9.60% (-20.35 dB), Peak: 28.80% (-10.81 dB), Level: 低 +mic level:低 + +>>> 音频测试: 检测到等级 低 (< 中,不满足要求),连续计数已重置[AudioTest] Volume - RMS: 10.26% (-19.77 dB), Peak: 29.86% (-10.50 dB), Level: 中 +mic level:中 + +>>> 音频测试: 检测到等级 中 (>= 中),连续 1 次,累计 1 次[AudioTest] Volume - RMS: 11.60% (-18.71 dB), Peak: 30.17% (-10.41 dB), Level: 中 +mic level:中 + +>>> 音频测试: 检测到等级 中 (>= 中),连续 2 次,累计 2 次[AudioTest] Volume - RMS: 10.49% (-19.58 dB), Peak: 30.44% (-10.33 dB), Level: 中 +mic level:中 + +>>> 音频测试: 检测到等级 中 (>= 中),连续 3 次,累计 3 次 +>>> 音频测试通过: 连续 3 次满足要求 +>>> 发送指令: AT^AUDIOTEST=6 (结束音频测试) +========== 开始电池测试 ==========voltage : 3.765 , percent 44 , temp : 21.683, charge : 1 + +>>> 电池测试原始数据: fac:voltage : 3.765 , percent 44 , temp : 21.683, charge : 1 +>>> 电池测试: 检测到电池电压:3.765V, 电量:44%, 温度:21.683℃, 充电状态:充电中 +>>> 充电检查通过:设备正在充电 +========== 开始G-sensor测试 ==========gsensor id : 0x13 + +========== 开始蓝牙测试 ========== +>>> 发送指令: AT^BTENABLE (启用蓝牙) +>>> 发送指令: AT^BTSCANTEST=1 (开始蓝牙扫描) +>>> 检测到蓝牙设备: MAC=1C:1D:2B:73:00:73, RSSI=-97 dBm +>>> 新蓝牙设备: MAC=1C:1D:2B:73:00:73, RSSI=-97 dBm (已检测到 1 个不同设备) +>>> 检测到蓝牙设备: MAC=1C:1D:2B:49:F7:49, RSSI=-97 dBm +>>> 新蓝牙设备: MAC=1C:1D:2B:49:F7:49, RSSI=-97 dBm (已检测到 2 个不同设备) +>>> 检测到蓝牙设备: MAC=1C:1D:2B:E4:12:E4, RSSI=-95 dBm +>>> 新蓝牙设备: MAC=1C:1D:2B:E4:12:E4, RSSI=-95 dBm (已检测到 3 个不同设备) +>>> 蓝牙测试通过: 已检测到 3 个不同设备 (要求>=3) +>>> 发送指令: AT^BTSCANTEST=2 (结束蓝牙扫描) +>>> 发送指令: AT^BTDISABLE (禁用蓝牙)id : 3 + +========== 开始4G测试 ========== +========== 开始4G信号质量测试 ========== +>>> 发送指令: AT^CAT1GETSIGNALid : 3 +id : 0 +id : 0 +Signal值: 26 +CAT1 Signal值: 26 (1/5) +Signal值: 26 +Signal值: 26 +CAT1 Signal值: 26 (2/5) +Signal值: 26 +Signal值: 26 +CAT1 Signal值: 26 (3/5) +Signal值: 26 +Signal值: 26 +CAT1 Signal值: 26 (4/5) +Signal值: 26 +Signal值: 26 +CAT1 Signal值: 26 (5/5) +Signal值: 26 + +========== 开始Ping测试 ==========发送Ping指令: AT^PING=www.163.com +Ping成功响应: [0]Reply from 36.156.72.98: time=124ms TTL=56[23:56:25:155][I]{DoSeekIfNeed():1802} seek start + +========== Ping测试通过 ==================== Ping测试通过 ========== diff --git "a/releasePackage/LN_Factorytool_V1.7/\344\272\247\346\265\213\350\256\260\345\275\225/logs/20260117_235627_867998086791248_89860492192590378178_UI\346\227\245\345\277\227full.log" "b/releasePackage/LN_Factorytool_V1.7/\344\272\247\346\265\213\350\256\260\345\275\225/logs/20260117_235627_867998086791248_89860492192590378178_UI\346\227\245\345\277\227full.log" new file mode 100644 index 0000000..6349877 --- /dev/null +++ "b/releasePackage/LN_Factorytool_V1.7/\344\272\247\346\265\213\350\256\260\345\275\225/logs/20260117_235627_867998086791248_89860492192590378178_UI\346\227\245\345\277\227full.log" @@ -0,0 +1,2777 @@ +=== 完整日志保存时间: 2026-01-17 23:56:27 === +IMEI: 867998086791248 +ICCID: 89860492192590378178 +======================================== +�����1 +[SIO] Timer callback executed 18901 times, enabled=1, running=1 +uapi_get_screen_state = off . +[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0 + +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 574876, deepsleep time:390, lightsleep time:513387, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:37003 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 19001 times, enabled=1, running=1 +[SIO] Timer callback executed 19101 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 579877, deepsleep time:390, lightsleep time:518065, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:41976 +APP|M core last veto id:7, last veto count:0, total_counts=1 +APP|charging enable charge ! bat-temp 22.26 Vs highest temp value 50.00 ! +APP|44 < 90 percent , enable normal current charge ! +[SIO] Timer callback executed 19201 times, enabled=1, running=1 +uapi_get_screen_state = off . +[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0 + +[SIO] Timer callback executed 19301 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 584878, deepsleep time:390, lightsleep time:522533, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:46857 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 19401 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 589880, deepsleep time:390, lightsleep time:527278, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:51851 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 19501 times, enabled=1, running=1 +[SIO] Timer callback executed 19601 times, enabled=1, running=1 +uapi_get_screen_state = off . +[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0 + +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 594881, deepsleep time:390, lightsleep time:531869, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:56844 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 19701 times, enabled=1, running=1 +[SIO] Timer callback executed 19801 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 599883, deepsleep time:390, lightsleep time:536416, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:61838 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 19901 times, enabled=1, running=1 +uapi_get_screen_state = off . +[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0 + +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 604884, deepsleep time:390, lightsleep time:541223, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:1296 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 20001 times, enabled=1, running=1 +[SIO] Timer callback executed 20101 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 609885, deepsleep time:390, lightsleep time:545774, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:6289 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 20201 times, enabled=1, running=1 +uapi_get_screen_state = off . +[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0 + +[SIO] Timer callback executed 20301 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 614886, deepsleep time:390, lightsleep time:550378, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:11283 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 20401 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 619888, deepsleep time:390, lightsleep time:555111, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:16277 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 20501 times, enabled=1, running=1 +APP|charging enable charge ! bat-temp 22.31 Vs highest temp value 50.00 ! +APP|44 < 90 percent , enable normal current charge ! +[SIO] Timer callback executed 20601 times, enabled=1, running=1 +uapi_get_screen_state = off . +[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0 + +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 624890, deepsleep time:390, lightsleep time:559465, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:21137 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 20701 times, enabled=1, running=1 +[SIO] Timer callback executed 20801 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 629891, deepsleep time:390, lightsleep time:564229, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:26130 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 20901 times, enabled=1, running=1 +uapi_get_screen_state = off . +[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0 + +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 634892, deepsleep time:390, lightsleep time:568758, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:31123 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 21001 times, enabled=1, running=1 +[SIO] Timer callback executed 21101 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 639894, deepsleep time:390, lightsleep time:573500, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:36114 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 21201 times, enabled=1, running=1 +uapi_get_screen_state = off . +[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0 + +[SIO] Timer callback executed 21301 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 644896, deepsleep time:390, lightsleep time:578011, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:41107 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 21401 times, enabled=1, running=1 +[SIO] Timer callback executed 21501 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 649897, deepsleep time:390, lightsleep time:582790, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:46100 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 21601 times, enabled=1, running=1 +uapi_get_screen_state = off . +[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0 + +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 654899, deepsleep time:390, lightsleep time:587269, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:51094 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 21701 times, enabled=1, running=1 +[SIO] Timer callback executed 21801 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 659900, deepsleep time:390, lightsleep time:591995, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:56087 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 21901 times, enabled=1, running=1 +APP|charging enable charge ! bat-temp 22.23 Vs highest temp value 50.00 ! +APP|44 < 90 percent , enable normal current charge ! +uapi_get_screen_state = off . +[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0 + +[SIO] Timer callback executed 22001 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 664902, deepsleep time:390, lightsleep time:596556, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:60949 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 22101 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 669904, deepsleep time:390, lightsleep time:601237, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:406 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 22201 times, enabled=1, running=1 +uapi_get_screen_state = off . +[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0 + +[SIO] Timer callback executed 22301 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 674906, deepsleep time:390, lightsleep time:605902, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:5402 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 22401 times, enabled=1, running=1 +[SIO] Timer callback executed 22501 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 679908, deepsleep time:390, lightsleep time:610626, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:10394 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 22601 times, enabled=1, running=1 +uapi_get_screen_state = off . +[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0 + +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 684910, deepsleep time:390, lightsleep time:615247, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:15388 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 22701 times, enabled=1, running=1 +[SIO] Timer callback executed 22801 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 689912, deepsleep time:390, lightsleep time:619876, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:20380 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 22901 times, enabled=1, running=1 +uapi_get_screen_state = off . +[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0 + +[SIO] Timer callback executed 23001 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 694914, deepsleep time:390, lightsleep time:624327, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:25376 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 23101 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 699915, deepsleep time:390, lightsleep time:628963, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:30370 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 23201 times, enabled=1, running=1 +uapi_get_screen_state = off . +[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0 + +APP|charging enable charge ! bat-temp 22.28 Vs highest temp value 50.00 ! +APP|45 < 90 percent , enable normal current charge ! +[SIO] Timer callback executed 23301 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 704917, deepsleep time:390, lightsleep time:633534, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:35232 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 23401 times, enabled=1, running=1 +[SIO] Timer callback executed 23501 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 709919, deepsleep time:390, lightsleep time:638258, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:40224 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 23601 times, enabled=1, running=1 +uapi_get_screen_state = off . +[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0 + +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 714921, deepsleep time:390, lightsleep time:642942, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:45219 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 23701 times, enabled=1, running=1 +[SIO] Timer callback executed 23801 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 719923, deepsleep time:390, lightsleep time:647556, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:50212 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 23901 times, enabled=1, running=1 +uapi_get_screen_state = off . +[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0 + +[SIO] Timer callback executed 24001 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 724925, deepsleep time:390, lightsleep time:652243, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:55206 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 24101 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 729927, deepsleep time:390, lightsleep time:656906, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:60200 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 24201 times, enabled=1, running=1 +uapi_get_screen_state = off . +[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0 + +[SIO] Timer callback executed 24301 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 734929, deepsleep time:390, lightsleep time:661574, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:65193 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 24401 times, enabled=1, running=1 +[SIO] Timer callback executed 24501 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 739931, deepsleep time:390, lightsleep time:666095, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:4650 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 24601 times, enabled=1, running=1 +uapi_get_screen_state = off . +[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0 + +APP|charging enable charge ! bat-temp 22.15 Vs highest temp value 50.00 ! +APP|45 < 90 percent , enable normal current charge ! +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 744933, deepsleep time:390, lightsleep time:670272, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:9511 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 24701 times, enabled=1, running=1 +[SIO] Timer callback executed 24801 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 749935, deepsleep time:390, lightsleep time:674899, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:14503 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 24901 times, enabled=1, running=1 +uapi_get_screen_state = off . +[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0 + +[SIO] Timer callback executed 25001 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 754937, deepsleep time:390, lightsleep time:679598, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:19498 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 25101 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 759938, deepsleep time:390, lightsleep time:684248, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:24491 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 25201 times, enabled=1, running=1 +uapi_get_screen_state = off . +[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0 + +[SIO] Timer callback executed 25301 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 764940, deepsleep time:390, lightsleep time:688885, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:29485 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 25401 times, enabled=1, running=1 +[SIO] Timer callback executed 25501 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 769943, deepsleep time:390, lightsleep time:693436, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:34478 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 25601 times, enabled=1, running=1 +uapi_get_screen_state = off . +[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0 + +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 774946, deepsleep time:390, lightsleep time:698211, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:39472 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 25701 times, enabled=1, running=1 +[SIO] Timer callback executed 25801 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 779949, deepsleep time:390, lightsleep time:702999, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:44467 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 25901 times, enabled=1, running=1 +uapi_get_screen_state = off . +[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0 + +[SIO] Timer callback executed 26001 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 784951, deepsleep time:390, lightsleep time:707584, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:49441 +APP|M core last veto id:7, last veto count:0, total_counts=1 +APP|charging enable charge ! bat-temp 22.05 Vs highest temp value 50.00 ! +APP|45 < 90 percent , enable normal current charge ! +[SIO] Timer callback executed 26101 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 789953, deepsleep time:390, lightsleep time:712009, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:54321 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 26201 times, enabled=1, running=1 +uapi_get_screen_state = off . +[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0 + +[SIO] Timer callback executed 26301 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 794955, deepsleep time:390, lightsleep time:716610, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:59315 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 26401 times, enabled=1, running=1 +[SIO] Timer callback executed 26501 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 799957, deepsleep time:390, lightsleep time:721113, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:64310 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 26601 times, enabled=1, running=1 +uapi_get_screen_state = off . +[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0 + +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 804960, deepsleep time:390, lightsleep time:726033, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:3768 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 26701 times, enabled=1, running=1 +[SIO] Timer callback executed 26801 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 809962, deepsleep time:390, lightsleep time:730607, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:8763 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 26901 times, enabled=1, running=1 +uapi_get_screen_state = off . +[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0 + +[SIO] Timer callback executed 27001 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 814964, deepsleep time:390, lightsleep time:735159, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:13756 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 27101 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 819966, deepsleep time:390, lightsleep time:739828, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:18750 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 27201 times, enabled=1, running=1 +uapi_get_screen_state = off . +[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0 + +[SIO] Timer callback executed 27301 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 824968, deepsleep time:390, lightsleep time:744408, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:23743 +APP|M core last veto id:7, last veto count:0, total_counts=1 +APP|charging enable charge ! bat-temp 22.05 Vs highest temp value 50.00 ! +APP|45 < 90 percent , enable normal current charge ! +[SIO] Timer callback executed 27401 times, enabled=1, running=1 +[SIO] Timer callback executed 27501 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 829971, deepsleep time:390, lightsleep time:749009, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:28603 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 27601 times, enabled=1, running=1 +uapi_get_screen_state = off . +[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0 + +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 834973, deepsleep time:390, lightsleep time:753660, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:33596 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 27701 times, enabled=1, running=1 +[SIO] Timer callback executed 27801 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 839975, deepsleep time:390, lightsleep time:758164, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:38592 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 27901 times, enabled=1, running=1 +uapi_get_screen_state = off . +[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0 + +[SIO] Timer callback executed 28001 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 844977, deepsleep time:390, lightsleep time:762699, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:43585 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 28101 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 849980, deepsleep time:390, lightsleep time:767691, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:48580 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 28201 times, enabled=1, running=1 +uapi_get_screen_state = off . +[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0 + +[SIO] Timer callback executed 28301 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 854982, deepsleep time:390, lightsleep time:772206, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:53573 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 28401 times, enabled=1, running=1 +[SIO] Timer callback executed 28501 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 859984, deepsleep time:390, lightsleep time:776692, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:58569 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 28601 times, enabled=1, running=1 +uapi_get_screen_state = off . +[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0 + +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 864987, deepsleep time:390, lightsleep time:781664, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:63562 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 28701 times, enabled=1, running=1 +APP|charging enable charge ! bat-temp 21.97 Vs highest temp value 50.00 ! +APP|45 < 90 percent , enable normal current charge ! +[SIO] Timer callback executed 28801 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 869989, deepsleep time:390, lightsleep time:786070, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:2887 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 28901 times, enabled=1, running=1 +uapi_get_screen_state = off . +[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0 + +[SIO] Timer callback executed 29001 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 874992, deepsleep time:390, lightsleep time:790535, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:7881 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 29101 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 879994, deepsleep time:390, lightsleep time:795517, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:12875 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 29201 times, enabled=1, running=1 +uapi_get_screen_state = off . +[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0 + +[SIO] Timer callback executed 29301 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 884997, deepsleep time:390, lightsleep time:799920, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:17868 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 29401 times, enabled=1, running=1 +[SIO] Timer callback executed 29501 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 889999, deepsleep time:390, lightsleep time:804911, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:22863 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 29601 times, enabled=1, running=1 +uapi_get_screen_state = off . +[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0 + +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 895001, deepsleep time:390, lightsleep time:809242, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:27857 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 29701 times, enabled=1, running=1 +[SIO] Timer callback executed 29801 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 900004, deepsleep time:390, lightsleep time:814138, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:32851 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 29901 times, enabled=1, running=1 +uapi_get_screen_state = off . +[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0 + +[SIO] Timer callback executed 30001 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 905006, deepsleep time:390, lightsleep time:818641, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:37844 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 30101 times, enabled=1, running=1 +APP|charging enable charge ! bat-temp 22.02 Vs highest temp value 50.00 ! +APP|45 < 90 percent , enable normal current charge ! +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 910009, deepsleep time:390, lightsleep time:823498, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:42704 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 30201 times, enabled=1, running=1 +uapi_get_screen_state = off . +[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0 + +[SIO] Timer callback executed 30301 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 915012, deepsleep time:390, lightsleep time:827668, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:47697 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 30401 times, enabled=1, running=1 +[SIO] Timer callback executed 30501 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 920014, deepsleep time:390, lightsleep time:832647, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:52691 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 30601 times, enabled=1, running=1 +uapi_get_screen_state = off . +[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0 + +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 925017, deepsleep time:390, lightsleep time:837426, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:57684 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 30701 times, enabled=1, running=1 +[SIO] Timer callback executed 30801 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 930019, deepsleep time:390, lightsleep time:841978, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:62677 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 30901 times, enabled=1, running=1 +uapi_get_screen_state = off . +[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0 + +[SIO] Timer callback executed 31001 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 935022, deepsleep time:390, lightsleep time:846966, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:2135 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 31101 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 940024, deepsleep time:390, lightsleep time:851367, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:7130 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 31201 times, enabled=1, running=1 +uapi_get_screen_state = off . +[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0 + +[SIO] Timer callback executed 31301 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 945027, deepsleep time:390, lightsleep time:856357, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:12123 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 31401 times, enabled=1, running=1 +APP|charging enable charge ! bat-temp 21.92 Vs highest temp value 50.00 ! +APP|45 < 90 percent , enable normal current charge ! +[SIO] Timer callback executed 31501 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 950030, deepsleep time:390, lightsleep time:859924, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:16983 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 31601 times, enabled=1, running=1 +uapi_get_screen_state = off . +[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0 + +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 955032, deepsleep time:390, lightsleep time:864233, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:21976 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 31701 times, enabled=1, running=1 +[SIO] Timer callback executed 31801 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 960035, deepsleep time:390, lightsleep time:869225, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:26970 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 31901 times, enabled=1, running=1 +uapi_get_screen_state = off . +[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0 + +[SIO] Timer callback executed 32001 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 965037, deepsleep time:390, lightsleep time:873247, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:31963 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 32101 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 970040, deepsleep time:390, lightsleep time:878238, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:36957 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 32201 times, enabled=1, running=1 +uapi_get_screen_state = off . +[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0 + +[SIO] Timer callback executed 32301 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 975043, deepsleep time:390, lightsleep time:883228, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:41950 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 32401 times, enabled=1, running=1 +[SIO] Timer callback executed 32501 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 980046, deepsleep time:390, lightsleep time:887347, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:46945 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 32601 times, enabled=1, running=1 +uapi_get_screen_state = off . +[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0 + +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 985048, deepsleep time:390, lightsleep time:892273, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:51938 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 32701 times, enabled=1, running=1 +[SIO] Timer callback executed 32801 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 990051, deepsleep time:390, lightsleep time:897245, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:56914 +APP|M core last veto id:7, last veto count:0, total_counts=1 +APP|charging enable charge ! bat-temp 21.81 Vs highest temp value 50.00 ! +APP|45 < 90 percent , enable normal current charge ! +[SIO] Timer callback executed 32901 times, enabled=1, running=1 +uapi_get_screen_state = off . +[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0 + +[SIO] Timer callback executed 33001 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 995054, deepsleep time:390, lightsleep time:902120, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:61794 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 33101 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 1000057, deepsleep time:390, lightsleep time:907112, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:1253 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 33201 times, enabled=1, running=1 +uapi_get_screen_state = off . +[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0 + +[SIO] Timer callback executed 33301 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 1005060, deepsleep time:390, lightsleep time:910345, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:6245 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 33401 times, enabled=1, running=1 +[SIO] Timer callback executed 33501 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 1010062, deepsleep time:390, lightsleep time:915334, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:11239 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 33601 times, enabled=1, running=1 +uapi_get_screen_state = off . +[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0 + +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 1015065, deepsleep time:390, lightsleep time:920324, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:16233 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 33701 times, enabled=1, running=1 +[SIO] Timer callback executed 33801 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 1020068, deepsleep time:390, lightsleep time:925316, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:21228 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 33901 times, enabled=1, running=1 +uapi_get_screen_state = off . +[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0 + +[SIO] Timer callback executed 34001 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 1025071, deepsleep time:390, lightsleep time:930306, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:26222 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 34101 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 1030074, deepsleep time:390, lightsleep time:933408, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:31216 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 34201 times, enabled=1, running=1 +APP|charging enable charge ! bat-temp 21.81 Vs highest temp value 50.00 ! +APP|45 < 90 percent , enable normal current charge ! +uapi_get_screen_state = off . +[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0 + +[SIO] Timer callback executed 34301 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 1035077, deepsleep time:390, lightsleep time:936876, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:36075 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 34401 times, enabled=1, running=1 +[SIO] Timer callback executed 34501 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 1040079, deepsleep time:390, lightsleep time:941864, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:41069 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 34601 times, enabled=1, running=1 +uapi_get_screen_state = off . +[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0 + +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 1045082, deepsleep time:390, lightsleep time:946854, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:46062 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 34701 times, enabled=1, running=1 +[SIO] Timer callback executed 34801 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 1050085, deepsleep time:390, lightsleep time:951157, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:51057 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 34901 times, enabled=1, running=1 +uapi_get_screen_state = off . +[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0 + +[SIO] Timer callback executed 35001 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 1055087, deepsleep time:390, lightsleep time:956119, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:56051 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 35101 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 1060090, deepsleep time:390, lightsleep time:961104, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:61044 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 35201 times, enabled=1, running=1 +uapi_get_screen_state = off . +[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0 + +[SIO] Timer callback executed 35301 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 1065093, deepsleep time:390, lightsleep time:966089, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:500 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 35401 times, enabled=1, running=1 +[SIO] Timer callback executed 35501 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 1070096, deepsleep time:390, lightsleep time:971081, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:5495 +APP|M core last veto id:7, last veto count:0, total_counts=1 +APP|charging enable charge ! bat-temp 21.71 Vs highest temp value 50.00 ! +APP|45 < 90 percent , enable normal current charge ! +[SIO] Timer callback executed 35601 times, enabled=1, running=1 +uapi_get_screen_state = off . +[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0 + +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 1075099, deepsleep time:390, lightsleep time:975935, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:10354 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 35701 times, enabled=1, running=1 +[SIO] Timer callback executed 35801 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 1080102, deepsleep time:390, lightsleep time:980927, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:15349 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 35901 times, enabled=1, running=1 +uapi_get_screen_state = off . +[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0 + +[SIO] Timer callback executed 36001 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 1085105, deepsleep time:390, lightsleep time:984276, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:20342 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 36101 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 1090107, deepsleep time:390, lightsleep time:989266, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:25336 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 36201 times, enabled=1, running=1 +uapi_get_screen_state = off . +[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0 + +[SIO] Timer callback executed 36301 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 1095110, deepsleep time:390, lightsleep time:994256, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:30330 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 36401 times, enabled=1, running=1 +[SIO] Timer callback executed 36501 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 1100113, deepsleep time:390, lightsleep time:999248, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:35326 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 36601 times, enabled=1, running=1 +uapi_get_screen_state = off . +[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0 + +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 1105115, deepsleep time:390, lightsleep time:1003501, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:40319 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 36701 times, enabled=1, running=1 +[SIO] Timer callback executed 36801 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 1110118, deepsleep time:390, lightsleep time:1008493, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:45315 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 36901 times, enabled=1, running=1 +uapi_get_screen_state = off . +[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0 + +APP|charging enable charge ! bat-temp 21.71 Vs highest temp value 50.00 ! +APP|45 < 90 percent , enable normal current charge ! +[SIO] Timer callback executed 37001 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 1115121, deepsleep time:390, lightsleep time:1013348, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:50175 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 37101 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 1120124, deepsleep time:390, lightsleep time:1018340, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:55169 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 37201 times, enabled=1, running=1 +uapi_get_screen_state = off . +[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0 + +[SIO] Timer callback executed 37301 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 1125127, deepsleep time:390, lightsleep time:1023330, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:60162 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 37401 times, enabled=1, running=1 +[SIO] Timer callback executed 37501 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 1130130, deepsleep time:390, lightsleep time:1027647, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:65158 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 37601 times, enabled=1, running=1 +uapi_get_screen_state = off . +[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0 + +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 1135133, deepsleep time:390, lightsleep time:1029646, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:4614 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 37701 times, enabled=1, running=1 +[SIO] Timer callback executed 37801 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 1140135, deepsleep time:390, lightsleep time:1034593, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:9610 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 37901 times, enabled=1, running=1 +uapi_get_screen_state = off . +[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0 + +[SIO] Timer callback executed 38001 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 1145138, deepsleep time:390, lightsleep time:1039580, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:14603 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 38101 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 1150141, deepsleep time:390, lightsleep time:1044572, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:19599 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 38201 times, enabled=1, running=1 +uapi_get_screen_state = off . +[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0 + +[SIO] Timer callback executed 38301 times, enabled=1, running=1 +APP|charging enable charge ! bat-temp 21.71 Vs highest temp value 50.00 ! +APP|45 < 90 percent , enable normal current charge ! +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 1155144, deepsleep time:390, lightsleep time:1049426, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:24457 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 38401 times, enabled=1, running=1 +[SIO] Timer callback executed 38501 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 1160147, deepsleep time:390, lightsleep time:1054418, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:29450 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 38601 times, enabled=1, running=1 +uapi_get_screen_state = off . +[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0 + +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 1165150, deepsleep time:390, lightsleep time:1059408, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:34442 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 38701 times, enabled=1, running=1 +[SIO] Timer callback executed 38801 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 1170153, deepsleep time:390, lightsleep time:1064210, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:39437 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 38901 times, enabled=1, running=1 +uapi_get_screen_state = off . +[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0 + +[SIO] Timer callback executed 39001 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 1175156, deepsleep time:390, lightsleep time:1067648, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:44430 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 39101 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 1180158, deepsleep time:390, lightsleep time:1072637, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:49424 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 39201 times, enabled=1, running=1 +uapi_get_screen_state = off . +[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0 + +[SIO] Timer callback executed 39301 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 1185161, deepsleep time:390, lightsleep time:1077624, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:54417 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 39401 times, enabled=1, running=1 +[SIO] Timer callback executed 39501 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 1190164, deepsleep time:390, lightsleep time:1082616, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:59412 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 39601 times, enabled=1, running=1 +uapi_get_screen_state = off . +[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0 + +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 1195167, deepsleep time:390, lightsleep time:1087586, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:64386 +APP|M core last veto id:7, last veto count:0, total_counts=1 +APP|charging enable charge ! bat-temp 21.55 Vs highest temp value 50.00 ! +APP|45 < 90 percent , enable normal current charge ! +[SIO] Timer callback executed 39701 times, enabled=1, running=1 +[SIO] Timer callback executed 39801 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 1200170, deepsleep time:390, lightsleep time:1092464, m sleep flag:0 +APP|M core deepsleep cnt:12, lightsleep cnt:3731 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 39901 times, enabled=1, running=1 +uapi_get_screen_state = off . +[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0 + +fac:enter or exit facotry mode :1 +enter or exit facotry mode :1 +APP|bt not send ack[b66],don't to reset,try 0. +����������������������������x���������������������������x������APP|App uart init succ. +APP|ipc reg info:int en:0,int:0,int sts:0. +APP|int clr:0,clr sts:0,int set:0. +APP|pmu_power_on_init begin +APP|ppmu_power�on_init end +chip temperature=27.400000(tmp=1818) +APP|Flash id is 186585, init success +APP|startup reason flag is 0x0 +APP|bootup reasion 3 (0-systick 1-pwrkey 2-vbus 3-other) cpu_resetcase 0x2001 +APP|CPU reset Case is REBOOT , no need check PowerKey +[osal_msg_queue_write_copy:35]:LOS_QueueWriteCopy failed! ret = 0x200060e.qID=0xffffffff +APP|at cmd receive send msg error! +APP|battery Voltage 3.81 +APP|entering NormalMode +APP|partition init success +APP|upg init success +[osal_msg_queue_create:25]:qName:nv_write_task qID=0x0 +APP|calibration nv is not active + +cpu 0 entering scheduler +app_init start ok +APP|thread_main start +APP|find nand flash chip id: 0x0B52 +APP|nand flash XT26Q02D start init +APP| +nandflash init start. +APP|xt26q02d_init +APP|nandflash A0 Reg:0x0 +APP|nandflash B0 Reg:0x11 +APP|nandflash C0 Reg:0x2 +APP| +nandflash_qspi_init success +APP| + nandflash init end. +APP|yaffs filesystem init start! +mount outer. +APP|formate filesystem devinfo: index = 0 , dev_name = /dev/nandblk0, folder_name = /user/, part_start_sector = 0, part_count_sector = 2048 +APP|yaffs filesystem init end! +APP|nandflash init success +APP|Succ read lcd id! Lcd id: 0x5598 +APP|PowerOn Cat1 ! +[CAT1_ERR]Unable to create socket: errno 105 + +[CAT1_ERR]socket init fail and retry + +[WEARABLE I/] UtilsSetEnv /system ret = 0 +[WEARABLE E/] ConfigModel::Init 1 +[WEARABLE E/] /* -------------------------------- ConfigData: ------------------------------- */ + +[WEARABLE E/] item(classicbt_service_on):type(bool):value(1) +[WEARABLE E/] item(screen_brightness):type(int):value(5) +[WEARABLE E/] item(screenoff_timeout_value):type(int):value(5000) +[WEARABLE E/] item(cat1_service_on):type(bool):value(0) +[WEARABLE E/] item(cat1_imei):type(string):value(pls poweron 4G first) +[WEARABLE E/] item(cat1_modemver):type(string):value(pls poweron 4G first) +[WEARABLE E/] item(cat1_pyver):type(string):value(pls poweron 4G first) +[WEARABLE E/] item(ppp_baudrate):type(int):value(1000000) +[WEARABLE E/] item(language_id):type(int):value(0) +[WEARABLE E/] item(language_code):type(string):value(zh) +[WEARABLE E/] item(timezone):type(int):value(32) +[WEARABLE E/] item(slient_mode):type(bool):value(0) +[WEARABLE E/] item(vibrator_switch):type(int):value(2) +[WEARABLE E/] item(rase2wake):type(bool):value(1) +[WEARABLE E/] item(stepcount):type(int):value(0) +[WEARABLE E/] item(calories):type(int):value(0) +[WEARABLE E/] item(standup_times):type(int):value(0) +[WEARABLE E/] item(duration):type(int):value(0) +[WEARABLE E/] item(distance):type(double):value(0.000000) +[WEARABLE E/] item(activity_timestamp):type(int):value(0) +[WEARABLE E/] item(height):type(int):value(175) +[WEARABLE E/] item(weight):type(int):value(70) +[WEARABLE E/] item(sex):type(int):value(1) +[WEARABLE E/] item(age):type(int):value(30) +[WEARABLE E/] item(wearing_mode):type(int):value(0) +[WEARABLE E/] item(goal_stepcount):type(int):value(5000) +[WEARABLE E/] item(goal_calories):type(int):value(300) +[WEARABLE E/] item(goal_standup_times):type(int):value(10) +[WEARABLE E/] item(goal_duration):type(int):value(30) +[WEARABLE E/] item(goal_distance):type(int):value(3) +[WEARABLE E/] item(goal_step_notification):type(int):value(1) +[CAT1_ERR]Unable to create socket: errno 105 + +[CAT1_ERR]socket init fail and retry + +[WEARABLE E/] item(goal_other_notification):type(int):value(1) +[WEARABLE E/] item(dnotdisturb):type(bool):value(0) +[WEARABLE E/] item(unread):type(bool):value(0) +[WEARABLE E/] item(voltecall):type(bool):value(1) +[WEARABLE E/] item(motion_recognition):type(bool):value(0) +[WEARABLE E/] item(hfp):type(bool):value(1) +[WEARABLE E/] item(a2dp):type(bool):value(1) +[WEARABLE E/] item(spp):type(bool):value(1) +[WEARABLE E/] item(traningfreq):type(int):value(10) +[WEARABLE E/] item(traningauto):type(int):value(1) +[WEARABLE E/] item(traningheart):type(int):value(190) +[WEARABLE E/] item(heartrate_freq):type(int):value(30) +[WEARABLE E/] item(heartrate_remind):type(int):value(0) +[WEARABLE E/] item(heartrate_threshold_value):type(int):value(0) +[WEARABLE E/] item(heart_max_min):type(int):value(0) +[WEARABLE E/] item(oxygen_freq):type(int):value(0) +[WEARABLE E/] item(oxygen_remind):type(int):value(0) +[WEARABLE E/] item(oxygen_threshold_value):type(int):value(95) +[WEARABLE E/] item(notify):type(int):value(0) +[WEARABLE E/] item(quick_auxil_parameter):type(int):value(0) +[WEARABLE E/] item(drink):type(int):value(0) +[WEARABLE E/] item(drinkgoal):type(int):value(0) +[WEARABLE E/] item(drinkstart):type(int):value(0) +[WEARABLE E/] item(drinkend):type(int):value(0) +[WEARABLE E/] item(drinkfreq):type(int):value(0) +[WEARABLE E/] item(sleep):type(int):value(1) +[WEARABLE E/] item(sleep_bedtime):type(int):value(1310720) +[WEARABLE E/] item(sleep_getup):type(int):value(589824) +[WEARABLE E/] item(sleep_remide):type(int):value(0) +[WEARABLE E/] item(sleep_mode):type(int):value(0) +[WEARABLE E/] item(sedentary_switch):type(int):value(0) +[WEARABLE E/] item(sedentary_interval):type(int):value(1) +[WEARABLE E/] item(sedentary_remindertime):type(int):value(0) +[WEARABLE E/] item(password):type(string):value(000000) +[WEARABLE E/] item(passwordswich):type(int):value(0) +[WEARABLE E/] item(message_index):type(int):value(0) +Invalid key or value +[WEARABLE E/] item(sim_iccid):type(string):value(-1) +Invalid key or value +[WEARABLE E/] item(telecom_regist_timesec):type(string):value(-1) +[WEARABLE E/] item(dmp_factory_status):type(int):value(0) +[WEARABLE E/] item(dmp_change_mode):type(int):value(0) +[WEARABLE E/] item(dmp_change_mode_old):type(int):value(0) +[WEARABLE E/] item(time_hour_show_model):type(int):value(24) +[WEARABLE E/] item(dmp_china_mobile_address):type(string):value(b.fxltsbl.com) +[WEARABLE E/] item(select_aimodel):type(int):value(0) +[WEARABLE E/] item(is_first_time_start):type(bool):value(1) +[WEARABLE E/] item(open_ai_api_keys):type(string):value(-1) +[WEARABLE E/] item(applist_style):type(string):value(arc_scale_list) +[WEARABLE E/] item(android_or_ios):type(int):value(0) +[WEARABLE E/] item(br_pari):type(int):value(0) +[WEARABLE E/] item(ota_upgrade):type(int):value(0) +[WEARABLE E/] item(color_index):type(int):value(0) +[WEARABLE E/] item(color_value):type(int):value(0) +[WEARABLE E/] item(flashing_level):type(int):value(0) +[WEARABLE E/] item(rt_select_time):type(int):value(1) +[WEARABLE E/] item(goal_stepcount_time):type(int):value(1) +[WEARABLE E/] item(goal_calories_time):type(int):value(1) +[WEARABLE E/] item(goal_standup_times_time):type(int):value(1) +[WEARABLE E/] item(goal_duration_time):type(int):value(1) +[WEARABLE E/] item(goal_distance_time):type(int):value(1) +[WEARABLE E/] item(urat_at_status):type(bool):value(0) +[WEARABLE E/] item(runtime_log_status):type(int):value(0) +Invalid key or value +[WEARABLE E/] item(ai_dev_id):type(string):value(-1) +Invalid key or value +[WEARABLE E/] item(dmp_data_pass):type(string):value(-1) +[WEARABLE E/] /* -------------------------------------------------------------------------- */ + +get nv local_addr : ******dab5da +CALLENDAR:year = 2026, month = 1, day = 17, hour = 23, minute = 54, second = 25 +callendar timestamp = 1768694065907 +sync time timestamp 1768694065, timezone_in_quarters 32 +[A][aw88082_i2c_init:353]aw88082 i2c init success +[osal_msg_queue_create:25]:qName:sap_msg qID=0x1 +APP|audio init OK +APP|**********startup info********** +APP|os init class is liteos. +APP|store init class is nandflash. +APP|display init class is MIPI. +APP|board init class is E0B4. +APP|psram density is 32MB. +APP|**********startup info********** +APP|No need to upgrade... +[osal_msg_queue_create:25]:qName:at_queue qID=0x2 +[osal_msg_queue_create:25]:qName:graphic_at_service_queue qID=0x3 +[osal_msg_queue_create:25]:qName:app_at_service_queue qID=0x4 +[osal_msg_queue_create:25]:qName:audio_at_service_queue qID=0x5 +[osal_msg_queue_create:25]:qName:bt_cmd_queue qID=0x6 +[osal_msg_queue_create:25]:qName:media_at_service_queue qID=0x7 +[osal_msg_queue_create:25]:qName:dfx_msg qID=0x8 +[osal_msg_queue_create:25]:qName:transmit qID=0x9 +APP|Turning on LCD backlight... +APP|SET DSP freq=3, div=6, codec freq=3, div=36 +[A][ALERT][sys_cmd_check_cmd_done:164] wait_time_us = 600 +[A][ALERT][drv_sys_pon:297] DSP0 power on +[DISPLAY I/] GrallocInitialize: gralloc initialize success +[DISPLAY I/] LayerInitialize: layer initialize success +[DISPLAY I/] PrintLayerInfo: layerInfo: +[DISPLAY I/] PrintLayerInfo: type = 0 +[DISPLAY I/] PrintLayerInfo: width = 360 +[DISPLAY I/] PrintLayerInfo: height = 360 +[DISPLAY I/] PrintLayerInfo: bpp = 24 +[DISPLAY I/] PrintLayerInfo: pixFormat = 17 +[DISPLAY I/] VGUInitialize: VGU initializes successfully +[DISPLAY I/] InitMemPool: Memory Pool has been inited. +[DISPLAY I/] GrallocInitialize: gralloc initialize success +====InitDfxCmd=== +APP|lwip_main run start. +SLIP test initialization... + sio_uart_init 583 + sio_uart_init 588 +uapi_uart_register_rx_callback ret=0 + sio_ubrightness:5 +Brightness: 5% → Fall Edge: 7 → LED Current: 2.5mA +APP|LCD backlight turned on (CUSTOM_UTILS + BOARD_LEINIAO) +[Graphic Error] [ResumeSlice: 225]No valid slice to resume +APP|[POWER_MANAGER E/] filter_timer_execute_system_rule: filter timer, current default timeout:5000, keepon time:25000, event:5. +APP|No need to upgrade... +art_init 606 + sio_open 1007 +[SLIP] Enabling SIO ping-pong buffer interrupt mode... +[SIO] Enabling interrupt mode (ping-pong buffer) +[SIO] Allocated 3 x 2048 bytes = 6.00 KB total +[osal_msg_queue_create:25]:qName:sio_irq_queue qID=0xb +[SIO] Message queue created (depth=32) +[SIO] IRQ process thread started (ping-pong mode) +[SIO] IRQ process thread created (PSRAM stack) +[SIO] Timeout timer started (period=30 ms) +[SIO] Interrupt mode enabled successfully! + - Buffers: 3 x 2 KB + - Timeout: 30 ms + - Queue: 32 slots +[SLIP] SIO APP|audio manager init ok +APP|app_main run start. +ping-pong buffer enabled successfully! +create slipif_loop_thread succed + sio_uart_init 583 + sio_open 1007 +[SLIP] Enabling SIO ping-pong buffer interrupt mode... +[SIO] Interrupt already enabled +[SLIP] SIO ping-pong buffer enabled successfully! +create slipif_loop_thread succed +SLIP netif set as default interface +SLIP netif initialized successfully +IP: 172.16.1.5 +Netmask: 255.255.255.0 +Gateway: 172.16.1.2 +create tcpip_thread succed +[SIO] Timer callback executed 1 times, enabled=1, running=1 +[osal_msg_queue_create:25]:qName:app_queue qID=0xc +APP|uapi_vibrator_service_init ! +[osal_msg_queue_create:25]:qName:vibrator_service_queue qID=0xd +fac:g_VibratorFunc delaytime_ms_high 2 , delaytime_ms_low 2 +g_VibratorFunc delaytime_ms_high 2 , delaytime_ms_low 2 +APP|uapi_battery_init ! +[osal_msg_queue_create:25]:qName:battery_queue qID=0xe +APP|charging enable charge ! bat-temp 21.50 Vs highest temp value 50.00 ! +APP|44 < 90 percent , enable normal current charge ! +APP|charging enable charge ! bat-temp 21.58 Vs highest temp value 50.00 ! +APP|44 < 90 percent , enable normal current charge ! +APP|uapi_custom_cmd_service_init ! +[osal_msg_queue_create:25]:qName:custom_cmd_service_queue qID=0xf +APP|uapi_custom_fileoperate_service_init ! +[osal_msg_queue_create:25]:qName:custom_fileoperate_service_queue qID=0x10 +[A][ALERT][sys_cmd_check_cmd_done:164] wait_time_us = 400 +[A][ALERT][drv_sys_pd:331] DSP0 power down +[SIO] Timer callback executed 101 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 8676, deepsleep time:0, lightsleep time:3593, m sleep flag:1 +APP|M core deepsleep cnt:0, lightsleep cnt:7632 +APP|M core last veto id:7, last veto count:0, total_counts=0 +[SIO] Timer callback executed 201 times, enabled=1, running=1 +[CAT1_WRN]MESSAGE_4G_VERSION_SYNCED +[CAT1_WRN]MESSAGE_4G_POWERON pyver(PY_SRV_V29) modemver(EG800AKCN91LCR07A01M04_OCPU_QPY_BETA1215) +kvPath: /user/system/kvstore +dataPath: /user/system key: dmp_change_mode_old value: 0 +Set value ret: 0 +set_dmp_china_mobile_factory_flag:0 +kvPath: /user/system/kvstore +dataPath: /user/system key: dmp_factory_status value: 0 +Set value ret: 0 +[CAT1_WRN]cat1_getsignal: rsrq_db=14.000000, rsrp_dbm=-83.000000 + +[CAT1_WRN]cat1_getsignal: Updated signal strength via AT+CESQ - signal_bars=3 (was 0) + +[CAT1_WRN]MESSAGE_4G_NETWORK_CONNECTED +[CAT1_WRN]MESSAGE_4G_AT_RECEIVED +CESQ:50,99,255,255,34,57 + + +[CAT1_WRN]MESSAGE_4G_AT_RECEIVED at error +[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')) +Network Stat Signal值: 26 +sync time utc timestamp 1768636473, timezone_in_quarters 32 +[CAT1_WRN]MESSAGE_4G_TIME_SYNCED +uapi_get_screen_state = on . +sync time utc timestamp 1768636474, timezone_in_quarters 32 +[CAT1_WRN]MESSAGE_4G_TIME_SYNCED +[SIO] Timer callback executed 301 times, enabled=1, running=1 +[CAT1_WRN]cat1_getsignal: rsrq_db=14.000000, rsrp_dbm=-83.000000 + +[CAT1_WRN]MESSAGE_4G_AT_RECEIVED +CESQ:50,99,255,255,34,57 + + +APP|app_main run start. +APP|sys_slp: 0x1 +APP|M core run time 13713, deepsleep time:399, lightsleep time:6213, m sleep flag:1 +APP|M core deepsleep cnt:13, lightsleep cnt:10661 +APP|M core last veto id:7, last veto count:0, total_counts=0 +[WEARABLE E/] kill boot_animation_task failed -3! +APP|No need to upgrade... +[WEARABLE I/] InitBroadcastService start! +[WEARABLE I/] start! topicSubscriberInfo=0x0x6c104fb8 +[WEARABLE I/] InitBroadcastService end! +APP|[POWER_MANAGER E/] filter_timer_execute_system_rule: filter timer, current default timeout:5000, keepon time:0, event:5. +APP|startup_post_init ! +APP|startup_post_init_task ! +I ams starts successfully +I bms starts successfully +[23:54:35:079][I][Init:37]Locator service starts successfully +[23:54:35:080][D][Init:56][SERVICE:sensor_service]: Init begin +[WEARABLE I/] WatchConnectCmdRegister +I ams feature init success +I [BMS] bms feature init success +[23:54:35:083][I][Init:56]Locator feature init success +[23:54:35:085][D][GetTaskConfig:80][SERVICE:sensor_service]: GetTaskConfig begin +[WEARABLE I/] BroadcastService featureId=4294967295, queueId=536924612, serviceId=2 +[WEARABLE I/] BroadcastFeature featureId=0, queueId=536924612, serviceId=2 +APP|fread failed +=== Starting AudioPlayer playback === +File: /user/res/music/FactoryMode.mp3, Volume: 100.0% +[WEARABLE I/] NativeAbility InstallAbility +D MemUtils::InitPSRam g_psramMemory = 6c200000 +I BundleMgrService::ServiceMessageHandle +[23:54:35:094][I][OnFeatureInitialize:85]Locator feature init +[23:54:35:095][I][InitAbility:84]initAbility start +[23:54:35:096][I][Initialize:71]ability constructed. +[23:54:35:097][E][InitAbility:90]Initialize gps ability, result 1 +[23:54:35:099][I][Initialize:54]LocatorAbility Initialize. +[23:54:35:100][I][OnFeatureInitialize:89]LocatorAbility initialize success +[23:54:35:102][D][Initialize:62][SERVICE:sensor_service]: Initialize begin +[23:54:35:103][DAudio file exists, size: 32768 bytes +AudioPlayer instance obtained +[23:54:35:105][I]{IsPlaying():810} player_ is NULL! +Initial playing state: false +Setting audio source... +Audio source set successfully +Setting volume to 1.00 (100.0%) +Starting playback... +[23:54:35:108][I]{IsPlaying():810} player_ is NULL! +Final state - Status: play, IsPlaying: false +=== AudioPlayer playback started successfully === +[23:54:35:112][I]{Player():40} Player process +[23:54:35:112][I]{RunAudioPlay():277} current play source = /user/res/music/FactoryMode.mp3, index = 0 +[23:54:35:114][I]{Init():108} process in +[23:54:35:116][I]{Init():138} process out +[23:54:35:116][I]{SetSource():164} process in, source_type:0 +[23:54:35:117][I]{Init():300} Init in +][NewSensorInterfaceInstance:47]Get sensor device instance success +I The public key already exists! +E [BMS] GetJsonStream IsFile fail +I [BMS] InstallPreBundle uninstallRecord is nullptr! +[23:54:35:123][E]{EventCallback():1884} callbackFun nullptr +[23:54:35:124][I]{Prepare():271} process in +[23:54:35:125][I]{UpdateState():215} @@player UpdateState, state:1 +[23:54:35:139][I]{SyncPrepare():2047} no extradata metadata +[23:54:35:140][I]{SyncPrepare():2054} used audiostream index 0 +[23:54:35:141][I]{SyncPrepare():2055} used videostream index -1 +[23:54:35:142][I]{UpdateState():215} @@player UpdateState, state:2 +[23:54:35:143][I]{UpdateState():215} @@player UpdateState, state:2 +[23:54:35:145][I]{ShowFileInfo():203} audio duration=1728,channel count=1,sample rate=16000 +[23:54:35:147][I]{ShowFileInfo():206} used audio stream index=0, used video stream index=-1 +[23:54:35:148][I]{Prepare():313} process out +[23:54:35:149][I]{SetAudioSessionId():1304} process in +[23:54:35:150][I]{DoInvoke():2108} audio sessionId: 1 +[23:54:35:152][I]{UpdateState():215} @@player UpdateState, state:2 +[23:54:35:153][I]{SetAudioStreamType():679} process in +[23:54:35:154][I]{DoInvoke():2127} streamType: 0x400000 +[23:54:35:155][I]{UpdateState():215} @@player UpdateState, state:2 +[23:54:35:157][I]{SetPlayerCallback():837} process in +[23:54:35:158][I]{Play():343} process in +[23:54:35:159][I]{UpdateState():215} @@player UpdateState, state:2 +[23:54:35:160][I]{SetMediaStream():333} used video w=0,h=0,index=-1 +[23:54:35:161][I]{AddAudioSink():871} AddAudioSink, format:14, sampleRate:16000, channel:1, session:1, streamType:4194304, bitWidth:16 +[23:54:35:164][I]{Init():149} AudioSink init audioformat:14 +[23:54:35:166][I]{Init():156} init success +[23:54:35:166][I]{GetOffloadSupport():892} GetOffloadSupport format:14, audio:8 +[23:54:35:168][I]{GetOffloadSupport():894} supported audio offload +APP|SET DSP freq=3, div=6, codec freq=3, div=36 +APP|set hifi mode=1. +APP|SET DSP freq=3, div=6, codec freq=3, div=36 +[A][ALERT][sys_cmd_check_cmd_done:164] wait_time_us = 500 +[A][ALERT][drv_sys_pon:297] DSP0 power on +[Graphic Warning] [InitLineBreakEngine: 138]Open lineBreak rule file failed +[WEARABLE I/] NativeLauncher::InitNativeLauncher +[WEARABLE I/] bt bts_set_features ret = 0 +[osal_msg_queue_create:25]:qName:BT_SERVICE_MSG qID=0x1b +aw_sysst_check succed +aw_pa_start +[23:54:35:389][I]{DecoderStart():791} audio stream id: 0, video stream id: -1 +[23:54:35:390][I]{DataSchProcess():1535} start work +[23:54:35:391][I]{UpdateState():215} @@player UpdateState, state:3 +[23:54:35:392][I]{Play():372} process out +[23:54:35:393][I]{EnableSingleLooping():894} process in +[23:54:35:394][I]{OnPlay():103} AudioPlayerCallback::OnPlay enter +[23:54:35:395][I]{OnPlay():107} AudioPlayerCallback::OnPlay exit +[23:54:35:397][I]{AudioPlay():204} wait play start ! +[WEARABLE I/] bt enable_bt_stack ret = 0 +[WEARABLE I/] watchName: LNb5da +[WEARABLE I/] nameLen: 7 +[WEARABLE E/] cm_initScreenBrightness +kvPath: /user/system/kvstore +dataPath: /user/system key: screen_brightness value: 5 +Set value ret: 0 +I AbilityMgrSliteFeature::OnFeatureInitialize featureId = 0, queueId = 536924804, serviceId = 6 +[WEARABLE I/] NativeAbility OnActive +[WEARABLE E/] 目前绑定状态 1 +[WEARABLE E/] [DEVICE_CHARACTER] read character config +[WEARABLE E/] ThunderBirdModel::ParseCharacterConfigData: parsing JSON data +[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}}} +[WEARABLE E/] ThunderBirdModel::ParseCharacterConfigData: eyesShape = round-eyes +[WEARABLE E/] ThunderBirdModel::ParseCharacterConfigData: hairColor = orange +[WEARABLE E/] ThunderBirdModel::ParseCharacterConfigData: eyesColor = amber +[WEARABLE E/] ThunderBirdModel::ParseCharacterConfigData: hairStyle = curly-hair +[WEARABLE E/] ThunderBirdModel::ParseCharacterConfigData: screenImageAsEmoji = false +[WEARABLE E/] ThunderBirdModel::ParseCharacterConfigData: parsing completed +[WEARABLE E/] Final values: eyesShape=round-eyes, hairColor=orange, eyesColor=amber, hairStyle=curly-hair, screenImage=, screenImageAsEmoji=false +[DEVICE_CHARACTER] read character config success + eyesShape_ = round-eyes hairColor_ = orange eyesColor_ = amber hairStyle_ = curly-hair hasScreenImage_ = 0 screenImageAsEmoji_ = 0[WEARABLE I/] Ability StartSlice 37 page 0 size:1 +[WEARABLE E/] ThunderBirdMainView::Initback videoPlay_->StartVideoPlay +[23:54:35:508][I]{Player():40} Player process +[23:54:35:509][I]{Init():108} process in +[23:54:35:509][I]{Init():138} process out +[23:54:35:510][I]{SetSource():164} process in, source_type:0 +[23:54:35:511][I]{Init():300} Init in +[23:54:35:521][E]{EventCallback():1884} callbackFun nullptr +[23:54:35:522][I]{Prepare():271} process in +[23:54:35:522][I]{UpdateState():215} @@player UpdateState, state:1 +关闭屏保模式 +[WEARABLE E/] ThunderBirdModel::StartBootOperation +[WEARABLE E/] ThunderBirdModel::StartBootOperation +[WEARABLE E/] ThunderBirdMainView::ChangeView hideView=8, showView=3, subView=2 +[WEARABLE E/] PullUpDownView::InitBaseData +[WEARABLE E/] group1 init success +[WEARABLE E/] timeLabelBlack add success - Position: (2,6) Size: (60,33) Color: Black +[WEARABLE E/] timeLabel add success +[WEARABLE E/] earphoneIcon add success +[WEARABLE E/] NoSignal add success +[WEARABLE E/] showSignalStrength add success +[WEARABLE E/] batteryimage add success +[WEARABLE E/] progress add success +[WEARABLE E/] batteryLabel add success +[WEARABLE E/] chargeBatteryicon add success +[WEARABLE E/] listenIcon add success +[WEARABLE E/] Network status changed: previous=0, current=1, hasNetwork=1 +volumeDelta = 50 +[WEARABLE E/] InitBaseData add success +[WEARABLE I/] Slice 37 has no default page +[WEARABLE I/] Ability ResumeSlice 37 +[WEARABLE E/] ThunderBirdPresenter::OnResume reset key listener +APP|[POWER_MANAGER E/] filter_timer_execute_system_rule: filter timer, current default timeout:30000, keepon time:0, event:3. +I AbilityService::SchedulerLifecycleDone state: STATE_ACTIVE +I OnActiveDone [0] +[WEARABLE I/] Transition end +[Graphic Error] [EndTE HMF_CODEC_MAP [HMF_ConvertFormat2CodecID:784] invalid param, format:mp4v +ransition: 533]force clear slide back images when transtion failed +[23:54:35:611][I]{SyncPrepare():2047} no extradata metadata +[23:54:35:611][I]{SyncPrepare():2054} used audiostream index -1 +[23:54:35:612][I]{SyncPrepare():2055} used videostream index 0 +[23:54:35:619][I]{UpdateState():215} @@player UpdateState, state:2 +[23:54:35:619][I]{UpdateState():215} @@player UpdateState, state:2 +[23:54:35:621][I]{ShowFileInfo():200} video[0],w=360,h=360,stream index=0 +[23:54:35:622][I]{ShowFileInfo():203} audio duration=2042,channel count=0,sample rate=0 +[23:54:35:627][I]{ShowFileInfo():206} used audio stream index=-1, used video stream index=0 +[23:54:35:633][I]{Prepare():313} process out +[23:54:35:634][I]{SetSurface():563} process in +[23:54:35:635][I]{SetPlayerCallback():837} process in +[23:54:35:636][I]{Play():343} process in +[23:54:35:637][I]{UpdateState():215} @@player UpdateState, state:2 +[23:54:35:639][I]{SetMediaStream():333} used video w=360,h=360,index=0 +[23:54:35:640][I]{GetOffloadSupport():892} GetOffloadSupport format:19, audio:0 +[23:54:35:642][I]{GetOffloadSupport():894} unsupported audio offload +[23:54:35:643][I]{DecoderStart():791} audio stream id: -1, video stream id: 0 +[23:54:35:645][I]{VideoDecoderStart():777} video decoder started +[23:54:35:646][I]{DataSchProcess():1535} start work +[23:54:35:647][I]{UpdateState():215} @@player UpdateState, state:3 +[23:54:35:648][I]{Play():372} process out +[23:54:35:649][I]{EnableSingleLooping():894} process in +[DISPLAY I/] PrintLayerInfo: layerInfo: +[DISPLAY I/] PrintLayerInfo: type = 0 +[DISPLAY I/] PrintLayerInfo: width = 360 +[DISPLAY I/] PrintLayerInfo: height = 360 +[DISPLAY I/] PrintLayerInfo: bpp = 1813705832 +[DISPLAY I/] PrintLayerInfo: pixFormat = 28 +[Graphic Error] [ReleaseBuffer: 286]Release invalid buffer: (nil) +E HMF_MEDIA_FORMAT [MediaReadFrame:691] get frame fail: -541478725 +[23:54:36:509][I]{QueueInputDataToAudioSink():1227} have render audio eos +[23:54:36:975][I]{OnPlayControlEvent():536} Received audio play eos event +[23:54:36:975][I]{PlayerControlEventCb():231} end of file +[23:54:36:976][I]{NotifyPlaybackComplete():855} OnPlayBackComplete, iscallbackNull:0 +[23:54:36:978][I]{OnPlaybackComplete():94} AudioPlayerCallback::OnPlaybackComplete enter +[23:54:36:980][I]{OnPlaybackComplete():98} AudioPlayerCallback::OnPlaybackComplete exit +[23:54:36:982][I]{OnPlaybackComplete():60} on playback complete! +=== Starting AudioPlayer stop process === +AudioPlayer instance obtained successfully +[23:54:37:114][I]{IsPlaying():378} process in +Current status: play, IsPlaying: false +Attempting to stop playback... +[23:54:37:116][I]{Stop():721} MediaThreadCondWait start Stop! +[23:54:37:117][I]{AudioPlay():206} wait play end ! +[23:54:37:118][I]{Stop():414} process in +[23:54:37:119][I]{DataSchProcess():1585} end work +[23:54:37:120][I]{Stop():536} audio sink stop +[SIO] Timer callback executed 401 times, enabled=1, running=1 +[23:54:37:232][I]{UpdateState():215} @@player UpdateState, state:0 +[23:54:37:233][I]{Stop():439} process out +[23:54:37:234][I]{Reset():761} process in +[A][ALERT][core_adp_destroy:414] adp = 0x6D000001 +[A][ALERT][core_mod_free:316] mod_node->mid.u32 = 0x6D000001 +[A][aw88082_i2c_deinit:373]aw88082 i2c deinit success +[23:54:37:259][I]{OnStop():121} AudioPlayerCallback::OnStop enter +[23:54:37:259][I]{OnStop():125} AudioPlayerCallback::OnStop exit +[23:54:37:264][E]{RunAudioPlay():310} isPlayListLoop exit +[23:54:37:265][I]{~Player():45} ~Player process +[23:54:37:266][I]{Release():775} process in +[23:54:37:267][I]{AudioPlayThreadProcess():360} exit all! +[23:54:37:268][I]{Stop():724} MediaThreadCondWait end Stop! +Stop result: SUCCESS +[23:54:37:270][I]{IsPlaying():810} player_ is NULL! +After stop - Status: stop, IsPlaying: false +=== AudioPlayer stop process completed === +[WEARABLE E/] cm_initScreenBrightness +kvPath: /user/system/kvstore +dataPath: /user/system key: screen_brightness value: 5 +Set value ret: 0 +[WEARABLE E/] cm_initializeRaiseToWake +[WEARABLE E/] cm_initializeSilentModel +get nv local_addr : ******dab5da +fac:^^^^ BTMAC=1C:1D:2B:DA:B5:DA ^^^^ CyweeChipInfo= + +fac:BuildVer:V1.0.36_20260117_152353 +^^^^ BTMAC=1C:1D:2B:DA:B5:DA ^^^^ CyweeChipInfo= +fac:^^^^ BTMAC=1C:1D:2B:DA:B5:DA ^^^^ CyweeChipInfo= +BuildVer:V1.0.36_20260117_152353 + +MCU WAKEUP SUCCESS + +OK~ +MCU has got pm_id_debug vote + +MCU WAKEUP SUCCESS + +OK~ +[23:54:38:390][I]{DoSeekIfNeed():1802} seek start +[23:54:38:391][I]{PlayerControlEventCb():260} seek action end, time is 0 +[23:54:38:391][I]{DoSeekIfNeed():1827} seek end +APP|app_main run start. +APP|sys_slp: 0x1 +APP|M core run time 18744, deepsleep time:617, lightsleep time:8437, m sleep flag:1 +APP|M core deepsleep cnt:20, lightsleep cnt:13671 +APP|M core last veto id:7, last veto count:0, total_counts=3 +Set Cat1 LOGLEVEL 4 +[SIO] Timer callback executed 501 times, enabled=1, running=1 +[A][ALERT][sys_cmd_check_cmd_done:164] wait_time_us = 900 +[A][ALERT][drv_sys_pd:331] DSP0 power down +[23:54:40:747][I]{DoSeekIfNeed():1802} seek start +[23:54:40:748][I]{PlayerControlEventCb():260} seek action end, time is 0 +[23:54:40:749][I]{DoSeekIfNeed():1827} seek end +APP|[POWER_MANAGER E/] filter_timer_execute_system_rule: filter timer, current default timeout:30000, keepon time:3600000, event:5. +set_screen_set_keepon_timeout: 0 +LcdTestView::OnStart +Initializing LcdTestView +LcdTestView initialized successfully +LcdTestPresenter::OnStart +=== 启动LCD测试 === +Starting LCD test view +Saved and removed current view for later restore +LCD test started - BLACK background +LCD test color changed +LCDTEST ATCMD Enter LCD test interface (LcdTestView) +Use AT^LCDTEST=3-8 to change colors: 3=Green, 4=Blue, 5=Yellow, 6=Red, 7=White, 8=Black +APP|/user/exc does not exist!!! +APP|exc file save failed +APP|read open user/userdata/timestamp_of_day.bin failed +key2_enter_ppp_testView_callback succed +key3_enter_ppp_testView_callback succed +[23:54:42:689][I]{DoSeekIfNeed():1802} seek start +[23:54:42:690][I]{PlayerControlEventCb():260} seek action end, time is 0 +[23:54:42:691][I]{DoSeekIfNeed():1827} seek end +LCD test color changed +fac:LCD test Red +LCDTEST ATCMD Set LCD coLCD test Red +lor: Red +[SIO] Timer callback executed 601 times, enabled=1, running=1 +uapi_get_screen_state = on . +[CAT1_INFO]g_signal_already_updated 1 , g_ws_idle 0, need_update_signal 1 + +[CAT1_DBG] +CAT1 SERVICE MCU SLEEP SUCCESS + +[SIO] Removed CAT1 vote after 10018ms idle +LCD test color changed +fac:LCD test Green +LCDTEST ATCMD Set LCD LCD test Green +color: Green +[23:54:44:310][I]{DoSeekIfNeed():1802} seek start +[23:54:44:310][I]{PlayerControlEventCb():260} seek action end, time is 0 +[23:54:44:311][I]{DoSeekIfNeed():1827} seek end +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 23743, deepsleep time:617, lightsleep time:11117, m sleep flag:0 +APP|M core deepsleep cnt:20, lightsleep cnt:17481 +APP|M core last veto id:7, last veto count:0, total_counts=1 +LCD test color changed +fac:LCD test Blue +LCDTEST ATCMD Set LCD cLCD test Blue +olor: Blue +APP|[POWER_MANAGER E/] filter_timer_execute_system_rule: filter timer, current default timeout:30000, keepon time:0, event:5. +set_screen_set_keepon_timeout: 0 +=== 停止LCD测试 === +Stopping LCD test view +LCD test view removed +Attempting to restore view at address: 0x2001d990 +Warning: Original view still has parent, cannot restore +LCDTEST ATCMD Exit LCD test interface (LcdTestView) +[23:54:45:958][I]{DoSeekIfNeed():1802} seek start +[23:54:45:959][I]{PlayerControlEventCb():260} seek action end, time is 0 +[23:54:45:960][I]{DoSeekIfNeed():1827} seek end +[23:54:46:025][I]{Pause():391} process in +[23:54:46:026][I]{UpdateState():215} @@player UpdateState, state:4 +[WEARABLE I/] Ability PauseSlice 37 +APP|uapi_lcd_backlight_off + +OK~ +[SIO] Timer callback executed 701 times, enabled=1, running=1 +Output RESET_LCD_GPIO 1 , VCI_LCD_GPIO 0 +[SIO] Timer callback executed 801 times, enabled=1, running=1 +APP|[POWER_MANAGER E/] filter_timer_execute_system_rule: filter timer, current default timeout:30000, keepon time:0, event:5. +set_screen_set_keepon_timeout: 0 +=== 停止LCD测试 === +LCD测试未在运行 +LCDTEST ATCMD Exit LCD test interface (LcdTestView) +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 28742, deepsleep time:617, lightsleep time:15149, m sleep flag:0 + +APP|M core deepsleep cnt:20, lightsleep cnt:22090 +APP|M core last veto id:7, last veto count:0, total_counts=1 +APP|VIBRATORTIMER ATCMD Start timer with 1s interval +[SIO] Timer callback executed 901 times, enabled=1, running=1 +fac:g_VibratorFunc delaytime_ms_high 2 , delaytime_ms_low 2 +g_VibratorFunc delaytime_ms_high 2 , delaytime_ms_low 2 +uapi_get_screen_state = off . +[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0 + +fac:g_VibratorFunc delaytime_ms_high 2 , delaytime_ms_low 2 +g_VibratorFunc delaytime_ms_high 2 , delaytime_ms_low 2 +fac:g_VibratorFunc delaytime_ms_high 2 , delaytime_ms_low 2 +g_VibratorFunc delaytime_ms_high 2 , delaytime_ms_low 2 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 33815, deepsleep time:617, lightsleep time:19278, m sleep flag:0 + +APP|M core deepsleep cnt:20, lightsleep cnt:26547 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 1001 times, enabled=1, running=1 +fac:g_VibratorFunc delaytime_ms_high 2 , delaytime_ms_low 2 +g_VibratorFunc delaytime_ms_high 2 , delaytime_ms_low 2 +fac:g_VibratorFunc delaytime_ms_high 2 , delaytime_ms_low 2 +g_VibratorFunc delaytime_ms_high 2 , delaytime_ms_low 2 +fac:g_VibratorFunc delaytime_ms_high 2 , delaytime_ms_low 2 +g_VibratorFunc delaytime_ms_high 2 , delaytime_ms_low 2 +APP|VIBRATORTIMER ATCMD Stop and delete timer +APP|VIBRATORTIMER ATCMD Unknown command 0 +APP|[at cmd]cannot find cmd handle, data=AT^VIBRATORTIMER=0 len=19 +[SIO] Timer callback executed 1101 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 38812, deepsleep time:617, lightsleep time:23340, m sleep flag:0 + +APP|M core deepsleep cnt:20, lightsleep cnt:30925 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 1201 times, enabled=1, running=1 +uapi_get_screen_state = off . +[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0 + +[SIO] Timer callback executed 1301 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 43809, deepsleep time:617, lightsleep time:27963, m sleep flag:0 + +APP|M core deepsleep cnt:20, lightsleep cnt:35919 +APP|M core last veto id:7, last veto count:0, total_counts=1 + +OK~ +APP|[AudioTest] Starting audio test... +[23:55:06:055][W]{ai_media_service_init():808} AI media service already initialized +[23:55:06:057][E]{old_Start_AIVoice():1798} StartAIVoice +[23:55:06:058][I]{GetGlobalMutex():866} Global AI voice context mutex created successfully +[23:55:06:060][I]{old_Start_AIVoice():1834} Using custom input audio params: format=1, channels=1, sampleRate=16000 +[23:55:06:062][I]{old_Start_AIVoice():1849} Using custom output audio params: format=1, channels=1, sampleRate=16000 +[23:55:06:064][I]{old_Start_AIVoice():1865} OGG encapsulation disabled by parameter +[23:55:06:066][I]{old_Start_AIVoice():1883} Second stream in disabled (null parameter) +[23:55:06:068][E]{old_Start_AIVoice():1889} g_aiVoiceContext->taskHandle +[23:55:06:069][I]{CreateAIVoiceQueue():1121} AI voice input queue created successfully +APP|SET DSP freq=3, div=5, codec freq=3, div=36 +APP|set hifi mode=2. +APP|SET DSP freq=3, div=5, codec freq=3, div=36 +[A][ALERT][sys_cmd_check_cmd_done:164] wait_time_us = 400 +[A][ALERT][drv_sys_pon:297] DSP0 power on +[23:55:06:125][I]{old_Start_AIVoice():1919} AI voice thread created successfully with name: AIVoiceThread +APP|[AudioTest] Play thread started +APP|[AudioTest] Pre-filled 5 periods (160 bytes, 5.0 ms) of PCM data +initial_volume : 1.000 +g_audio_test_ctx.play_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.AudioSDKSeaOpen g_subPortSeaOpenCount 1 +AudioSDKAttach 6D000003 6D000005 +000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +initial_volume : 1.000 +g_subPortSeaOpenCount 1 +APP|[AudioTest] Audio test started successfully +APP|[AudioTest] Playing 1kHz tone, monitoring volume every 0.5s... +AUDIO TEST START: Success + Playing 1kHz tone, monitoring volume every 0.5s... +APP|[AudioTest] Play volume set to 2.00 (200%) +AUDIO TEST SET VOLUME: Success (0.00, 0%) +[A][aw88082_i2c_init:353]aw88082 i2c init success +aw_sysst_check succed +aw_pa_start +[23:55:06:465][I]{CreateAIVoiceInputThread():1372} AI voice input thread created successfully +[23:55:06:466][I]{RunAIVoice():1483} RunAIVoice: waiting for queue data... +delay_us 10000 +[23:55:06:469][I]{AIVoiceInputThreadFunc():1390} AI voice input thread started +[23:55:06:497][I]{AI_ReadFromFileCache():457} Read 1024 bytes from file cache at offset 0 +delay_us 10000 +[23:55:06:522][I]{AI_ReadFromFileCache():457} Read 1024 bytes from file cache at offset 1024 +delay_us 10000 +[23:55:06:548][I]{AI_ReadFromFileCache():457} Read 352 bytes from file cache at offset 2048 +delay_us 10000 +[23:55:06:570][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 2400 +delay_us 10000 +[23:55:06:593][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 2560 +delay_us 10000 +[23:55:06:615][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 2720 +delay_us 10000 +[23:55:06:637][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 2880 +delay_us 10000 +[23:55:06:675][I]{AI_ReadFromFileCache():457} Read 320 bytes from file cache at offset 3040 +delay_us 10000 +[23:55:06:701][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 3360 +[23:55:06:701][E]{RunAIVoice():1543} Failed to restore cached data to queue: -3 +delay_us 10000 +[23:55:06:725][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 3520 +delay_us 10000 +[23:55:06:762][I]{AI_ReadFromFileCache():457} Read 320 bytes from file cache at offset 3680 +delay_us 10000 +delay_us 10000 +fac:[AudioTest] Volume - RMS: 2.23% (-33.04 dB), Peak: 27.70% (-11.15 dB), Level: 低 +fac:mic level:低 +[AudioTest] Volume - RMS: 2.23% (-33.04 dB), Peak: 27.70% (-11.15 dB), Level: 低 +mic level:低 +delay_us 10000 +[23:55:06:817][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 4000 +delay_us 10000 +[23:55:06:846][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 4160 +delay_us 10000 +[23:55:06:872][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 4320 +delay_us 10000 +[23:55:06:895][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 4480 +delay_us 10000 +[23:55:06:932][I]{AI_ReadFromFileCache():457} Read 320 bytes from file cache at offset 4640 +delay_us 10000 +[23:55:06:958][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 4960 +delay_us 10000 +[23:55:06:980][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 5120 +delay_us 10000 +[23:55:07:003][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 5280 +delay_us 10000 +[23:55:07:025][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 5440 +delay_us 10000 +[23:55:07:047][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 5600 +delay_us 10000 +[23:55:07:069][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 5760 +delay_us 10000 +[23:55:07:092][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 5920 +delay_us 10000 +[23:55:07:121][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 6080 +delay_us 10000 +[23:55:07:144][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 6240 +delay_us 10000 +[23:55:07:166][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 6400 +delay_us 10000 +[23:55:07:188][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 6560 +delay_us 10000 +[23:55:07:211][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 6720 +delay_us 10000 +[23:55:07:249][I]{AI_ReadFromFileCache():457} Read 320 bytes from file cache at offset 6880 +delay_us 10000 +[23:55:07:275][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 7200 +[23:55:07:276][E]{RunAIVoice():1543} Failed to restore cached data to queue: -3 +delay_us 64250 +[23:55:07:391][I]{AI_ReadFromFileCache():457} Read 960 bytes from file cache at offset 7360 +delay_us 64250 +fac:[AudioTest] Volume - RMS: 9.60% (-20.35 dB), Peak: 28.80% (-10.81 dB), Level: 低 +fac:mic level:低 +[AudioTest] Volume - RMS: 9.60% (-20.35 dB), Peak: 28.80% (-10.81 dB), Level: 低 +mic level:低 +[SIO] Timer callback executed 1401 times, enabled=1, running=1 +[23:55:07:485][I]{AI_ReadFromFileCache():457} Read 480 bytes from file cache at offset 8320 +delay_us 22125 +[23:55:07:545][I]{AI_ReadFromFileCache():457} Read 480 bytes from file cache at offset 8800 +delay_us 10000 +[23:55:07:575][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 9280 +[23:55:07:576][E]{RunAIVoice():1543} Failed to restore cached data to queue: -3 +delay_us 10000 +[23:55:07:599][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 9440 +delay_us 10000 +[23:55:07:635][I]{AI_ReadFromFileCache():457} Read 320 bytes from file cache at offset 9600 +delay_us 10000 +[23:55:07:661][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 9920 +[23:55:07:662][E]{RunAIVoice():1543} Failed to restore cached data to queue: -3 +delay_us 20000 +[23:55:07:703][I]{AI_ReadFromFileCache():457} Read 320 bytes from file cache at offset 10080 +delay_us 10000 +[23:55:07:725][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 10400 +delay_us 10000 +[23:55:07:747][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 10560 +delay_us 20000 +[23:55:07:791][I]{AI_ReadFromFileCache():457} Read 320 bytes from file cache at offset 10720 +delay_us 10000 +[23:55:07:813][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 11040 +delay_us 10000 +[23:55:07:851][I]{AI_ReadFromFileCache():457} Read 320 bytes from file cache at offset 11200 +delay_us 10000 +[23:55:07:876][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 11520 +[23:55:07:877][E]{RunAIVoice():1543} Failed to restore cached data to queue: -3 +delay_us 10000 +[23:55:07:900][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 11680 +delay_us 10000 +[23:55:07:922][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 11840 +delay_us 20000 +[23:55:07:969][I]{AI_ReadFromFileCache():457} Read 320 bytes from file cache at offset 12000 +delay_us 10000 +[23:55:08:006][I]{AI_ReadFromFileCache():457} Read 320 bytes from file cache at offset 12320 +delay_us 10000 +[23:55:08:031][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 12640 +[23:55:08:032][E]{RunAIVoice():1543} Failed to restore cached data to queue: -3 +delay_us 10000 +[23:55:08:063][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 12800 +delay_us 10000 +[23:55:08:094][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 12960 +delay_us 10000 +fac:[AudioTest] Volume - RMS: 10.26% (-19.77 dB), Peak: 29.86% (-10.50 dB), Level: 中 +fac:mic level:中 +[AudioTest] Volume - RMS: 10.26% (-19.77 dB), Peak: 29.86% (-10.50 dB), Level: 中 +mic level:中 +[23:55:08:125][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 13120 +delay_us 10000 +[23:55:08:147][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 13280 +delay_us 10000 +[23:55:08:170][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 13440 +delay_us 10000 +[23:55:08:206][I]{AI_ReadFromFileCache():457} Read 320 bytes from file cache at offset 13600 +delay_us 10000 +[23:55:08:231][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 13920 +[23:55:08:232][E]{RunAIVoice():1543} Failed to restore cached data to queue: -3 +delay_us 10000 +[23:55:08:260][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 14080 +delay_us 10000 +[23:55:08:293][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 14240 +delay_us 10000 +APP|charging enable charge ! bat-temp 21.94 Vs highest temp value 50.00 ! +APP|44 < 90 percent , enable normal current charge ! +[23:55:08:330][I]{AI_ReadFromFileCache():457} Read 320 bytes from file cache at offset 14400 +delay_us 10000 +[23:55:08:357][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 14720 +[23:55:08:358][E]{RunAIVoice():1543} Failed to restore cached data to queue: -3 +delay_us 20000 +[23:55:08:398][I]{AI_ReadFromFileCache():457} Read 320 bytes from file cache at offset 14880 +delay_us 10000 +[23:55:08:435][I]{AI_ReadFromFileCache():457} Read 320 bytes from file cache at offset 15200 +delay_us 60000 +[23:55:08:528][I]{AI_ReadFromFileCache():457} Read 800 bytes from file cache at offset 15520 +[23:55:08:529][E]{RunAIVoice():1543} Failed to restore cached data to queue: -3 +delay_us 30000 +[23:55:08:593][I]{AI_ReadFromFileCache():457} Read 480 bytes from file cache at offset 16320 +delay_us 30000 +[23:55:08:649][I]{AI_ReadFromFileCache():457} Read 480 bytes from file cache at offset 16800 +delay_us 10000 +[23:55:08:672][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 17280 +delay_us 10000 +[23:55:08:697][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 17440 +delay_us 20000 +fac:[AudioTest] Volume - RMS: 11.60% (-18.71 dB), Peak: 30.17% (-10.41 dB), Level: 中 +fac:mic level:中 +[AudioTest] Volume - RMS: 11.60% (-18.71 dB), Peak: 30.17% (-10.41 dB), Level: 中 +mic level:中 +[23:55:08:744][I]{AI_ReadFromFileCache():457} Read 320 bytes from file cache at offset 17600 +delay_us 10000 +[23:55:08:766][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 17920 +delay_us 20000 +[23:55:08:806][I]{AI_ReadFromFileCache():457} Read 320 bytes from file cache at offset 18080 +delay_us 10000 +[23:55:08:834][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 18400 +delay_us 10000 +[23:55:08:872][I]{AI_ReadFromFileCache():457} Read 320 bytes from file cache at offset 18560 +delay_us 20000 +[23:55:08:924][I]{AI_ReadFromFileCache():457} Read 320 bytes from file cache at offset 18880 +[23:55:08:925][E]{RunAIVoice():1543} Failed to restore cached data to queue: -3 +delay_us 10000 +[23:55:08:949][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 19200 +delay_us 20000 +[23:55:08:988][I]{AI_ReadFromFileCache():457} Read 320 bytes from file cache at offset 19360 +delay_us 10000 +[23:55:09:010][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 19680 +delay_us 10000 +[23:55:09:032][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 19840 +delay_us 10000 +[23:55:09:071][I]{AI_ReadFromFileCache():457} Read 320 bytes from file cache at offset 20000 +delay_us 20000 +[23:55:09:114][I]{AI_ReadFromFileCache():457} Read 320 bytes from file cache at offset 20320 +[23:55:09:115][E]{RunAIVoice():1543} Failed to restore cached data to queue: -3 +delay_us 20000 +[23:55:09:156][I]{AI_ReadFromFileCache():457} Read 320 bytes from file cache at offset 20640 +delay_us 10000 +[23:55:09:193][I]{AI_ReadFromFileCache():457} Read 320 bytes from file cache at offset 20960 +delay_us 10000 +[23:55:09:218][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 21280 +[23:55:09:219][E]{RunAIVoice():1543} Failed to restore cached data to queue: -3 +delay_us 10000 +[23:55:09:242][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 21440 +delay_us 10000 +[23:55:09:265][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 21600 +delay_us 10000 +[23:55:09:287][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 21760 +delay_us 10000 +[23:55:09:310][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 21920 +delay_us 20000 +[23:55:09:351][I]{AI_ReadFromFileCache():457} Read 320 bytes from file cache at offset 22080 +delay_us 10000 +[23:55:09:388][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 22400 +delay_us 10000 +fac:[AudioTest] Volume - RMS: 10.49% (-19.58 dB), Peak: 30.44% (-10.33 dB), Level: 中 +fac:mic level:中 +[AudioTest] Volume - RMS: 10.49% (-19.58 dB), Peak: 30.44% (-10.33 dB), Level: 中 +mic level:中 +[23:55:09:421][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 22560 +delay_us 10000 +APP|[AudioTest] Stopping audio test... +APP|[AudioTest] Play thread stopped +[23:55:09:442][I]{AI_ReadFromFileCache():457} Read 160 bytes from file cache at offset 22720 +delay_us 20000 +delay_us 10000 +delay_us 20000 +delay_us 20000 +delay_us 10000 +delay_us 30000 +delay_us 30000 +delay_us 10000 +delay_us 10000 +delay_us 20000 +delay_us 10000 +delay_us 20000 +delay_us 10000 +delay_us 20000 +delay_us 10000 +delay_us 10000 +delay_us 20000 +delay_us 10000 +delay_us 10000 +delay_us 20000 +delay_us 10000 +delay_us 20000 +delay_us 20000 +delay_us 10000 +delay_us 10000 +delay_us 10000 +delay_us 10000 +delay_us 10000 +delay_us 20000 +APP|[AudioTest] Calling StopAIVoice()... +Waiting for AI voice thread to stop... +Thread validation passed, waiting for thread: AIVoiceThread +osThreadJoin failed (-3), using state check... +[23:55:09:943][I]{AIVoiceInputThreadFunc():1439} AI voice input thread stopped +g_subPortSeaOpenCount 1 +AudioSDKDetach AUDIO_MOD_AI_SEA 6D000003 6D000005 +AudioSDKDetach AUDIO_MOD_SEA 6D000005 6D000001 +AudioSDKSeaClose g_subPortSeaOpenCount 0 +[A][ALERT][core_adp_destroy:414] adp = 0x6D000001 +[A][ALERT][core_mod_free:316] mod_node->mid.u32 = 0x6D000001 +APP|SET DSP freq=3, div=6, codec freq=3, div=36 +APP|set hifi mode=1. +Waiting... 1/50 (state: 3, running: yes) +[A][ALERT][core_adp_destroy:414] adp = 0x6D000101 +[A][ALERT][core_mod_free:316] mod_node->mid.u32 = 0x6D000101 +[A][aw88082_i2c_deinit:373]aw88082 i2c deinit success +[23:55:10:130][I]{DeinitAIVoiceResources():1190} AI voice input queue deleted +AI voice thread cleanup completed +Waiting... 2/50 (state: 0, running: no) +AI voice thread stopped successfully (state check) +[23:55:10:164][I]{AI_ClearFileCache():514} File cache cleared successfully +AI voice stopped and resources cleaned up +APP|[AudioTest] Audio test stopped +AUDIO TEST STOP: Success +fac:voltage : 3.765 , percent 44 , temp : 21.683, charge : 1 +voltage : 3.765 , percent 44 , temp : 21.683, charge : 1 +fac:gsensor id : 0x13 +gsensor id : 0x13 +package_common_cmd_to_bt strCmd 36 5A 00 03 00 09 01 9A 20 inParam (null) para_len 0 +commandID = 0x1 payload_len=0 +bt_manager_at_process cmdId=0x1 atId=0x901 +[bts][info] btsrv_set_log_type_level bts sert log type levle:ff2 +gap reg cbk ret 0 +func:audio_manager_init, line:69, success +a2dp reg cbk ret 0 +a2dp reg cbk ret 0 +avrcp reg cbk ret 0 +bt enable ok + +OK~ +APP|[BtScan] Starting Bluetooth scan test... +APP|[BtScan] Enabling Bluetooth stack (same as AT^BTENABLE)... +APP|[BtScan] Waiting for Bluetooth stack ready... +APP|[BtScan] Inquiry parameters set successfully +APP|[BtScan] Discovery state changed: 1 +APP|[BtScan] Discovery state changed: 2 +[bts][info] btsrv_start_bt_discovery discovery started +APP|[BtScan] Discovery started successfully +APP|[BtScan] Bluetooth scan started successfully +APP|[BtScan] Scanning for devices... +BT SCAN TEST START: Success +[bts][info] btsrv_handle_remote_device_found addr: ****2b730073 [little endian: 7300732b**** ] name: LN73 hdl: 0 +[bts][debug] btsrv_add_remote_dev_node addr: ****2b730073 hdl: 0 +[bts][info] btsrv_notify_gap_discovery_result descovery result +APP|[BtScan] New device discovered: 1C:1D:2B:73:00:73 +APP|[BtScan] Device name: LN73 +[bts][info] btsrv_notify_gap_discovery_result found device addr: ****2b730073 name: LN73fac:[BtScan] Device: 1C:1D:2B:73:00:73, RSSI=-97 dBm +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 49482, deepsleep time:617, lightsleep time:30476, m sleep flag:0 + +APP|M core deepsleep cnt:20, lightsleep cnt:39568 +APP|M core last veto id:7, last veto count:0, total_counts=2 +[bts][info] btsrv_handle_remote_device_found addr: ****2b49f749 [little endian: 49f7492b**** ] name: LNf749 hdl: 0 +[bts][debug] btsrv_add_remote_dev_node addr: ****2b49f749 hdl: 0 +[bts][info] btsrv_notify_gap_discovery_result descovery result +APP|[BtScan] New device discovered: 1C:1D:2B:49:F7:49 +APP|[BtScan] Device name: LNf749 +[bts][info] btsrv_notify_gap_discovery_result found device addr: ****2b49f749 name: LNf749fac:[BtScan] Device: 1C:1D:2B:49:F7:49, RSSI=-97 dBm +[bts][info] btsrv_handle_remote_device_found addr: ****2be412e4 [little endian: e412e42b**** ] name: hdl: 0 +[bts][debug] btsrv_add_remote_dev_node addr: ****2be412e4 hdl: 0 +[bts][info] btsrv_notify_gap_discovery_result descovery result +APP|[BtScan] New device discovered: 1C:1D:2B:E4:12:E4 +[bts][info] btsrv_notify_gap_discovery_result found device addr: ****2be412e4 name: fac:[BtScan] Device: 1C:1D:2B:E4:12:E4, RSSI=-95 dBm +APP|[BtScan] Stopping Bluetooth scan test... +[bts][info] gap_br_cancel_discovery btsdk_stop_device_discovery ret=0x0 +[bts][info] gap_br_ca[bts][info] btsrv_inquiry_complete_ind_callback inquiry complete +[bts][info] btsrv_handle_conn_event_msg set discovery status to stop +APP|[BtScan] Discovery state changed: 3 +ncel_discovery discovery stopped +APP|[BtScan] Discovery state changed: 3 +APP|[BtScan] Final scan results: +APP|[BtScan] Found 3 device(s): +APP|[BtScan] Device[1]: MAC=1C:1D:2B:73:00:73, RSSI=-97 dBmAPP|, Name=LN73APP| +APP|[BtScan] Device[2]: MAC=1C:1D:2B:49:F7:49, RSSI=-97 dBmAPP|, Name=LNf749APP| +APP|[BtScan] Device[3]: MAC=1C:1D:2B:E4:12:E4, RSSI=-95 dBmAPP| +APP|[BtScan] Bluetooth scan stopped +BT SCAN TEST STOP: Success +[SIO] Timer callback executed 1501 times, enabled=1, running=1 +package_common_cmd_to_bt strCmd 36 5A 00 03 00 09 02 9A 20 inParam (null) para_len 0 +commandID = 0x2 payload_len=0 +bt_manager_at_process cmdId=0x2 atId=0x902 +[bts][info] btsrv_stop_phone_reconnect_timer stop timer +[bts][info] btsrv_stop_phone_reconnect_timer stop timer success! +[bts][error] gap_ble_stop_adv adv id is not active, please set param first. +[bts][error] spp_service_delete_client client_id invalid +[bts][error] spp_service_delete_client client_id invalid +[bts][error] spp_service_delete_client client_id invalid +[bts][error] spp_service_delete_client client_id invalid +[bts][error] spp_service_delete_client client_id invalid +[bts][error] spp_service_delete_client client_id invalid +[bts][error] spp_service_delete_client client_id invalid +[bts][error] spp_service_delete_client client_id invalid +[bts][error] spp_service_delete_client client_id invalid +[bts][error] spp_service_delete_client client_id invalid +[bts][error] spp_service_delete_client client_id invalid +[bts][error] spp_service_delete_client client_id invalid +[bts][error] spp_service_delete_client client_id invalid +[bts][error] spp_service_delete_client client_id invalid +[bts][error] spp_service_delete_client client_id invalid +[bts][error] spp_service_delete_client client_id invalid +[bts][error] spp_service_delete_client client_id invalid +[bts][error] spp_service_delete_client client_id invalid +[bts][error] spp_service_delete_client client_id invalid +[bts][error] spp_service_delete_client client_id invalid +[bts][error] spp_service_delete_client client_id invalid +[bts][error] spp_service_delete_client client_id invalid +[bts][error] spp_service_delete_client client_id invalid +[bts][error] spp_service_delete_client client_id invalid +[bts][error] spp_service_delete_client client_id invalid +[bts][error] spp_service_delete_client client_id invalid +[bts][error] spp_service_delete_client client_id invalid +[bts][error] spp_service_delete_client client_id invalid +[bts][error] spp_service_delete_client client_id invalid +[bts][error] spp_service_delete_client client_id invalid +[bts][error] spp_service_delete_client client_id invalid +[bts][error] spp_service_delete_client client_id invalid +[bts][error] spp_service_delete_client client_id invalid +[bts][error] spp_service_delete_client client_id invalid +[bts][error] spp_service_delete_client client_id invalid +[bts][error] spp_service_delete_client client_id invalid +[bts][error] spp_service_delete_client client_id invalid +[bts][error] spp_service_delete_client client_id invalid +[bts][error] spp_service_delete_client client_id invalid +[bts][error] spp_service_delete_client client_id invalid +[bts][error] spp_service_delete_client client_id invalid +[bts][error] spp_service_delete_client client_id invalid +[bts][error] spp_service_delete_client client_id invalid +[bts][error] spp_service_delete_client client_id invalid +[bts][error] spp_service_delete_client client_id invalid +[bts][error] spp_service_delete_client client_id invalid +[bts][error] spp_service_delete_client client_id invalid +[bts][error] spp_service_delete_client client_id invalid +[bts][error] spp_service_delete_client client_id invalid +[bts][error] spp_service_delete_client client_id invalid +[bts][error] spp_service_delete_client client_id invalid +[bts][error] spp_service_delete_client client_id invalid +[bts][error] spp_service_delete_client client_id invalid +[bts][error] spp_service_delete_client client_id invalid +[bts][error] spp_service_delete_client client_id invalid +[bts][error] spp_service_delete_client client_id invalid +[bts][error] spp_service_delete_client client_id invalid +[bts][error] spp_service_delete_client client_id invalid +[bts][error] spp_service_delete_client client_id invalid +[bts][error] spp_service_delete_client client_id invalid +bt disable ok + +OK~ +[bts][info] btsdk_get_discovery_mode mode = 0d +[bts][info] gap_br_set_bt_scan_mode set scan mode old=4 new=0 +[CAT1_INFO]CAT1TEST ATCMD getsignal + +[CAT1_DBG]cat1_getsignal: Sending AT+CESQ via UDP + +[bts][info] btsrv_disable_bt_remain_module deinit bt stack +[A][ALERT][sys_cmd_check_cmd_done:164] wait_time_us = 600 +[A][ALERT][drv_sys_pd:331] DSP0 power down +[SIO] Timer callback executed 1601 times, enabled=1, running=1 +uapi_get_screen_state = off . +[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0 + +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 54481, deepsleep time:617, lightsleep time:34249, m sleep flag:0 + +APP|M core deepsleep cnt:20, lightsleep cnt:43603 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 1701 times, enabled=1, running=1 +[SIO] Timer callback executed 1801 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 59480, deepsleep time:617, lightsleep time:38810, m sleep flag:0 + +APP|M core deepsleep cnt:20, lightsleep cnt:48595 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 1901 times, enabled=1, running=1 +uapi_get_screen_state = off . +[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0 + +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 64479, deepsleep time:617, lightsleep time:43425, m sleep flag:0 + +APP|M core deepsleep cnt:20, lightsleep cnt:53588 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 2001 times, enabled=1, running=1 +[SIO] Timer callback executed 2101 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 69478, deepsleep time:617, lightsleep time:48067, m sleep flag:0 + +APP|M core deepsleep cnt:20, lightsleep cnt:58581 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 2201 times, enabled=1, running=1 +uapi_get_screen_state = off . +[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0 + +[SIO] Timer callback executed 2301 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 74477, deepsleep time:617, lightsleep time:52786, m sleep flag:0 + +APP|M core deepsleep cnt:20, lightsleep cnt:63576 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 2401 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 79476, deepsleep time:617, lightsleep time:57364, m sleep flag:0 + +APP|M core deepsleep cnt:20, lightsleep cnt:3033 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 2501 times, enabled=1, running=1 +[SIO] Timer callback executed 2601 times, enabled=1, running=1 +uapi_get_screen_state = off . +[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0 + +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 84476, deepsleep time:617, lightsleep time:61913, m sleep flag:0 +APP|M core deepsleep cnt:20, lightsleep cnt:8027 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 2701 times, enabled=1, running=1 +APP|charging enable charge ! bat-temp 21.86 Vs highest temp value 50.00 ! +APP|44 < 90 percent , enable normal current charge ! +[SIO] Timer callback executed 2801 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 89475, deepsleep time:617, lightsleep time:66451, m sleep flag:0 + +APP|M core deepsleep cnt:20, lightsleep cnt:12886 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 2901 times, enabled=1, running=1 +uapi_get_screen_state = off . +[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0 + +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 94475, deepsleep time:617, lightsleep time:71129, m sleep flag:0 + +APP|M core deepsleep cnt:20, lightsleep cnt:17881 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 3001 times, enabled=1, running=1 +[SIO] Timer callback executed 3101 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 99474, deepsleep time:617, lightsleep time:75688, m sleep flag:0 +APP|M core deepsleep cnt:20, lightsleep cnt:22873 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 3201 times, enabled=1, running=1 +uapi_get_screen_state = off . +[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 0 + +[SIO] Timer callback executed 3301 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 104474, deepsleep time:617, lightsleep time:80368, m sleep flag:0 +APP|M core deepsleep cnt:20, lightsleep cnt:27868 +APP|M core last veto id:7, last veto count:0, total_counts=1 +[SIO] Timer callback executed 3401 times, enabled=1, running=1 +fac:id : 3 +button_report_event: screen off, drop id=3, event=83 +id : 3 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 109474, deepsleep time:617, lightsleep time:85047, m sleep flag:0 +APP|M core deepsleep cnt:20, lightsleep cnt:32863 +APP|M core last veto id:7, last veto count:0, total_counts=1 +fac:id : 3 +button_report_event: screen off, drop id=3, event=84 +id : 3 +fac:id : 0 +id : 0 +APP|mipi_tx has been enable! +APP|Succ read lcd id! Lcd id: 0x5598 +APP|timeout when wait phy ready +[SIO] Timer callback executed 3501 times, enabled=1, running=1 +brightness:5 +Brightness: 5% → Fall Edge: 7 → LED Current: 2.5mA +[WEARABLE I/] Ability ResumeSlice 37 +[WEARABLE E/] ThunderBirdPresenter::OnResume reset key listener +[23:56:11:022][I]{Play():343} process in +[23:56:11:023][I]{UpdateState():215} @@player UpdateState, state:3 +[23:56:11:024][I]{Play():372} process out +[23:56:11:025][I]{EnableSingleLooping():894} process in +fac:id : 0 +id : 0 +[WEARABLE E/] OnKeyAct: keyID=4137, keyState=0, screenState=0 +[WEARABLE E/] HandlePowerKey: KEY_TYPE_POWER +[23:56:13:282][I]{DoSeekIfNeed():1802} seek start +[23:56:13:283][I]{PlayerControlEventCb():260} seek action end, time is 0 +[23:56:13:284][I]{DoSeekIfNeed():1827} seek end +[SIO] Timer callback executed 3601 times, enabled=1, running=1 +uapi_get_screen_state = on . +[CAT1_INFO]g_signal_already_updated 0 , g_ws_idle 0, need_update_signal 1 + +[CAT1_DBG]cat1_getsignal: Sending AT+CESQ via UDP + +[CAT1_DBG]UDP_CMD_GET_TIME + +[CAT1_DBG] +CAT1 SERVICE MCU WAKEUP SUCCESS + +[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 + +[CAT1_DBG]g_msg_format_type 1 + +[CAT1_DBG]cmd 7,bSignal值: 26 +CAT1 Signal值: 26 (1/5) +ufferlen 118 , buffer imei:867998086791248@sim:1@iccid:89860492192590378178@oper:('CHINA MOBILE', 'CMCC', '460', '00')@signal:26@net:0,0,1,7 + +Signal值: 26 +[CAT1_DBG]=== imei 867998086791248 to 867998086791248 + +[CAT1_DBG]=== sim = 1 + +[CAT1_DBG]=== iccid = 89860492192590378178 + +[CAT1_DBG]=== opera ('CHINA MOBILE', 'CMCC', '460', '00') to ('CHINA MOBILE', 'CMCC', '460', '00') + +[CAT1_DBG]=== signal = 26, signal_bars = 3 + +[CAT1_DBG]=== networkon = 1 , connected + +[CAT1_DBG]=== network_type = 7 , E_UTRAN + +[CAT1_DBG] +CAT1 SERVICE MCU SLEEP SUCCESS + +[CAT1_INFO]CAT1TEST ATCMD getsignal + +[CAT1_DBG]cat1_getsignal: Sending AT+CESQ via UDP + +[CAT1_DBG]recv len:42 rx_buffer:FE060034(2026, 1, 17, 23, 56, 15, 5, 17)@8 + +[CAT1_DBG]g_msg_format_type 1 + +[CAT1_DBG]cmd 6,bufferlen 34 , buffer (2026, 1, 17, 23, 56, 15, 5, 17)@8 + +[CAT1_DBG]decodeTime (2026, 1, 17, 23, 56, 15, 5, 17)@8 + +[CAT1_DBG]time 0126-00-17 23:56:15 +stamp 1768636575 +zone 8 + +sync time utc timestamp 1768636575, timezone_in_quarters 32 +[CAT1_WRN]MESSAGE_4G_TIME_SYNCED +[CAT1_DBG] +CAT1 SERVICE MCU SLEEP SUCCESS + +[CAT1_DBG]recv len:58 rx_buffer:FE090050+CESQ:50,99,255,255,34,57 + + + +[CAT1_DBG]g_msg_format_type 1 + +[CAT1_DBG]cmd 9,bufferlen 50 , buffer +CESQ:50,99,255,255,34,57 + + + +[CAT1_DBG]ATCMD reply len(28): +CESQ:50,99,255,255,34,57 + + + +[CAT1_WRN]cat1_getsignal: rsrq_db=14.000000, rsrp_dbm=-83.000000 + +[CAT1_WRN]MESSAGE_4G_AT_RECEIVED +CESQ:50,99,255,255,34,57 + + +[CAT1_DBG] +CAT1 SERVICE MCU SLEEP SUCCESS + +[CAT1_DBG]recv len:58 rx_buffer:FE090050+CESQ:50,99,255,255,34,57 + + + +[CAT1_DBG]g_msg_format_type 1 + +[CAT1_DBG]cmd 9,bufferlen 50 , buffer +CESQ:50,99,255,255,34,57 + + + +[CAT1_DBG]ATCMD reply len(28): +CESQ:50,99,255,255,34,57 + + + +[CAT1_WRN]cat1_getsignal: rsrq_db=14.000000, rsrp_dbm=-83.000000 + +[CAT1_WRN]MESSAGE_4G_AT_RECEIVED +CESQ:50,99,255,255,34,57 + + +[CAT1_DBG] +CAT1 SERVICE MCU SLEEP SUCCESS + +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 114475, deepsleep time:617, lightsleep time:87114, m sleep flag:0 +APP|M core deepsleep cnt:20, lightsleep cnt:35610 +APP|M core last veto id:7, last veto count:0, total_counts=2 +[23:56:15:880][I]{DoSeekIfNeed():1802} seek start +[23:56:15:880][I]{PlayerControlEventCb():260} seek action end, time is 0 +[23:56:15:881][I]{DoSeekIfNeed():1827} seek end +[CAT1_INFO]CAT1TEST ATCMD getsignal + +[CAT1_DBG]cat1_getsignal: Sending AT+CESQ via UDP + +[CAT1_DBG]recv len:58 rx_buffer:FE090050+CESQ:50,99,255,255,34,57 + + + +[CAT1_DBG]g_msg_format_type 1 + +[CAT1_DBG]cmd 9,bufferlen 50 , buffer +CESQ:50,99,255,255,34,57 + + + +[CAT1_DBG]ATCMD reply len(28): +CESQ:50,99,255,255,34,57 + + + +[CAT1_WRN]cat1_getsignal: rsrq_db=14.000000, rsrp_dbm=-83.000000 + +[CAT1_WRN]MESSAGE_4G_AT_RECEIVED +CESQ:50,99,255,255,34,57 + + +[CAT1_DBG] +CAT1 SERVICE MCU SLEEP SUCCESS + +[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 + +[CAT1_DBG]g_msg_format_type 1 + +[CAT1_DBG]cmd 7,buSignal值: 26 +CAT1 Signal值: 26 (2/5) +fferlen 118 , buffer imei:867998086791248@sim:1@iccid:89860492192590378178@oper:('CHINA MOBILE', 'CMCC', '460', '00')@signal:26@net:0,0,1,7 + +Signal值: 26 +[CAT1_DBG]=== imei 867998086791248 to 867998086791248 + +[CAT1_DBG]=== sim = 1 + +[CAT1_DBG]=== iccid = 89860492192590378178 + +[CAT1_DBG]=== opera ('CHINA MOBILE', 'CMCC', '460', '00') to ('CHINA MOBILE', 'CMCC', '460', '00') + +[CAT1_DBG]=== signal = 26, signal_bars = 3 + +[CAT1_DBG]=== networkon = 1 , connected + +[CAT1_DBG]=== network_type = 7 , E_UTRAN + +[CAT1_DBG] +CAT1 SERVICE MCU SLEEP SUCCESS + +[SIO] Timer callback executed 3701 times, enabled=1, running=1 +[23:56:18:101][I]{DoSeekIfNeed():1802} seek start +[23:56:18:101][I]{PlayerControlEventCb():260} seek action end, time is 0 +[23:56:18:102][I]{DoSeekIfNeed():1827} seek end +[CAT1_INFO]CAT1TEST ATCMD getsignal + +[CAT1_DBG]cat1_getsignal: Sending AT+CESQ via UDP + +[CAT1_DBG]recv len:58 rx_buffer:FE090050+CESQ:50,99,255,255,34,57 + + + +[CAT1_DBG]g_msg_format_type 1 + +[CAT1_DBG]cmd 9,bufferlen 50 , buffer +CESQ:50,99,255,255,34,57 + + + +[CAT1_DBG]ATCMD reply len(28): +CESQ:50,99,255,255,34,57 + + + +[CAT1_WRN]cat1_getsignal: rsrq_db=14.000000, rsrp_dbm=-83.000000 + +[CAT1_WRN]MESSAGE_4G_AT_RECEIVED +CESQ:50,99,255,255,34,57 + + +[CAT1_DBG] +CAT1 SERVICE MCU SLEEP SUCCESS + +[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 + +[CAT1_DBG]g_msg_format_type 1 + +[CAT1_DBG]cmd 7,buffeSignal值: 26 +CAT1 Signal值: 26 (3/5) +rlen 118 , buffer imei:867998086791248@sim:1@iccid:89860492192590378178@oper:('CHINA MOBILE', 'CMCC', '460', '00')@signal:26@net:0,0,1,7 + +Signal值: 26 +[CAT1_DBG]=== imei 867998086791248 to 867998086791248 + +[CAT1_DBG]=== sim = 1 + +[CAT1_DBG]=== iccid = 89860492192590378178 + +[CAT1_DBG]=== opera ('CHINA MOBILE', 'CMCC', '460', '00') to ('CHINA MOBILE', 'CMCC', '460', '00') + +[CAT1_DBG]=== signal = 26, signal_bars = 3 + +[CAT1_DBG]=== networkon = 1 , connected + +[CAT1_DBG]=== network_type = 7 , E_UTRAN + +[CAT1_DBG] +CAT1 SERVICE MCU SLEEP SUCCESS + +[SIO] Timer callback executed 3801 times, enabled=1, running=1 +APP|app_main run start. +APP|sys_slp: 0x0 +APP|M core run time 119475, deepsleep time:617, lightsleep time:89322, m sleep flag:0 +APP|M core deepsleep cnt:20, lightsleep cnt:38556 +APP|M core last veto id:7, last veto count:0, total_counts=2 +[CAT1_INFO]CAT1TEST ATCMD getsignal + +[CAT1_DBG]cat1_getsignal: Sending AT+CESQ via UDP + +[23:56:20:605][I]{DoSeekIfNeed():1802} seek start +[23:56:20:605][I]{PlayerControlEventCb():260} seek action end, time is 0 +[23:56:20:606][I]{DoSeekIfNeed():1827} seek end +[CAT1_DBG]recv len:58 rx_buffer:FE090050+CESQ:50,99,255,255,34,57 + + + +[CAT1_DBG]g_msg_format_type 1 + +[CAT1_DBG]cmd 9,bufferlen 50 , buffer +CESQ:50,99,255,255,34,57 + + + +[CAT1_DBG]ATCMD reply len(28): +CESQ:50,99,255,255,34,57 + + + +[CAT1_WRN]cat1_getsignal: rsrq_db=14.000000, rsrp_dbm=-83.000000 + +[CAT1_WRN]MESSAGE_4G_AT_RECEIVED +CESQ:50,99,255,255,34,57 + + +[CAT1_DBG] +CAT1 SERVICE MCU SLEEP SUCCESS + +[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 + +[CAT1_DBG]g_msg_fSignal值: 26 +CAT1 Signal值: 26 (4/5) +ormat_type 1 + +[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 + +Signal值: 26 +[CAT1_DBG]=== imei 867998086791248 to 867998086791248 + +[CAT1_DBG]=== sim = 1 + +[CAT1_DBG]=== iccid = 89860492192590378178 + +[CAT1_DBG]=== opera ('CHINA MOBILE', 'CMCC', '460', '00') to ('CHINA MOBILE', 'CMCC', '460', '00') + +[CAT1_DBG]=== signal = 26, signal_bars = 3 + +[CAT1_DBG]=== networkon = 1 , connected + +[CAT1_DBG]=== network_type = 7 , E_UTRAN + +[CAT1_DBG] +CAT1 SERVICE MCU SLEEP SUCCESS + +[CAT1_INFO]CAT1TEST ATCMD getsignal + +[CAT1_DBG]cat1_getsignal: Sending AT+CESQ via UDP + +[CAT1_DBG]recv len:58 rx_buffer:FE090050+CESQ:50,99,255,255,34,57 + + + +[CAT1_DBG]g_msg_format_type 1 + +[CAT1_DBG]cmd 9,bufferlen 50 , buffer +CESQ:50,99,255,255,34,57 + + + +[CAT1_DBG]ATCMD reply len(28): +CESQ:50,99,255,255,34,57 + + + +[CAT1_WRN]cat1_getsignal: rsrq_db=14.000000, rsrp_dbm=-83.000000 + +[CAT1_WRN]MESSAGE_4G_AT_RECEIVED +CESQ:50,99,255,255,34,57 + + +[CAT1_DBG] +CAT1 SERVICE MCU SLEEP SUCCESS + +[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 + +[CAT1_DBG]g_msg_format_type 1 + +[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 + +Signal值: 26 +CAT1 Signal值: 26 (5/5) +Signal值: 26 +[CAT1_DBG]=== imei 867998086791248 to 867998086791248 + +[CAT1_DBG]=== sim = 1 + +[CAT1_DBG]=== iccid = 89860492192590378178 + +[CAT1_DBG]=== opera ('CHINA MOBILE', 'CMCC', '460', '00') to ('CHINA MOBILE', 'CMCC', '460', '00') + +[CAT1_DBG]=== signal = 26, signal_bars = 3 + +[CAT1_DBG]=== networkon = 1 , connected + +[CAT1_DBG]=== network_type = 7 , E_UTRAN + +[CAT1_DBG] +CAT1 SERVICE MCU SLEEP SUCCESS + +[23:56:23:052][I]{DoSeekIfNeed():1802} seek start +[23:56:23:052][I]{PlayerControlEventCb():260} seek action end, time is 0 +[23:56:23:053][I]{DoSeekIfNeed():1827} seek end +[SIO] Timer callback executed 3901 times, enabled=1, running=1 +uapi_get_screen_state = on . +[CAT1_INFO]g_signal_already_updated 1 , g_ws_idle 0, need_update_signal 1 + +发送Ping指令: AT^PING=www.163.com +OsShellPing 715 name www.163.com +OsShellPing 739 dst_ip 0x62489C24 (from DNS) +OsPingFunc: Creating RAW socket for ICMP, destip=0x62489C24, cnt=4, data_len=48 +OsPingFunc: Network interface OK, IP=172.16.1.5 +OsPingFunc: Destination is EXTERNAL, requires gateway routing +OsPingFunc: Gateway: 172.16.1.2 +OsPingFunc: Socket created successfully, fd=2 +OsPingFunc: Allocating pbuf, size=28 +OsPingFunc: pbuf allocated successfully +OsPingFunc: Allocating ICMP echo request, size=56 +OsPingFunc: ICMP echo request allocated successfully +OsPingFunc: Target IP=36.156.72.98 (0x62489C24), socket family=2 +OsPingFunc: Sending ICMP echo request [0], len=56 to 0x62489C24 +OsPingFunc: ICMP echo request sent successfully, bytes=56 +OsPingFunc: poll returned 1, ready to receive +OsPingFunc: received 28 bytes + +[0]Reply from 36.156.72.98: time=124ms TTL=56[23:56:25:155][I]{DoSeekIfNeed():1802} seek start +[23:56:25:155Ping成功响应: [0]Reply from 36.156.72.98: time=124ms TTL=56[23:56:25:155][I]{DoSeekIfNeed():1802} seek start +========== Ping测试通过 ========== diff --git "a/releasePackage/LN_Factorytool_V1.7/\344\272\247\346\265\213\350\256\260\345\275\225/logs/20260118_102017_867998086791248_89860492192590378178.log" "b/releasePackage/LN_Factorytool_V1.7/\344\272\247\346\265\213\350\256\260\345\275\225/logs/20260118_102017_867998086791248_89860492192590378178.log" new file mode 100644 index 0000000..4c2d055 --- /dev/null +++ "b/releasePackage/LN_Factorytool_V1.7/\344\272\247\346\265\213\350\256\260\345\275\225/logs/20260118_102017_867998086791248_89860492192590378178.log" @@ -0,0 +1,53 @@ +=== 测试开始时间: 2026-01-18 10:20:17 === +IMEI: 未知 +ICCID: 未知 +======================================== +enter or exit facotry mode :1 +g_VibratorFunc delaytime_ms_high 2 , delaytime_ms_low 2 +Network Stat Signal值: 25 +Network Stat Signal值: 26 +^^^^ BTMAC=1C:1D:2B:DA:B5:DA ^^^^ CyweeChipInfo= +fac:^^^^ BTMAC=1C:1D:2B:DA:B5:DA ^^^^ CyweeChipInfo= +BuildVer:V1.0.36_20260117_152353 +LCD test Red +LCD test Green +LCD test Blue +g_VibratorFunc delaytime_ms_high 2 , delaytime_ms_low 2 +g_VibratorFunc delaytime_ms_high 2 , delaytime_ms_low 2 +id : 2 +id : 2 +id : 1 +id : 1 +id : 0 +id : 0 +id : 3 +id : 3 +[AudioTest] Volume - RMS: 2.26% (-32.93 dB), Peak: 29.66% (-10.56 dB), Level: 低 +mic level:低 +[AudioTest] Volume - RMS: 7.83% (-22.12 dB), Peak: 29.33% (-10.65 dB), Level: 低 +mic level:低 +[AudioTest] Volume - RMS: 8.97% (-20.94 dB), Peak: 31.94% (-9.91 dB), Level: 低 +mic level:低 +[AudioTest] Volume - RMS: 8.25% (-21.67 dB), Peak: 29.90% (-10.49 dB), Level: 低 +mic level:低 +[AudioTest] Volume - RMS: 8.47% (-21.44 dB), Peak: 30.45% (-10.33 dB), Level: 低 +mic level:低 +[AudioTest] Volume - RMS: 8.30% (-21.62 dB), Peak: 30.53% (-10.31 dB), Level: 低 +mic level:低 +[AudioTest] Volume - RMS: 9.10% (-20.82 dB), Peak: 30.77% (-10.24 dB), Level: 低 +mic level:低 +[AudioTest] Volume - RMS: 9.12% (-20.80 dB), Peak: 36.11% (-8.85 dB), Level: 低 +mic level:低 +[AudioTest] Volume - RMS: 11.12% (-19.08 dB), Peak: 32.85% (-9.67 dB), Level: 中 +mic level:中 +[AudioTest] Volume - RMS: 10.56% (-19.52 dB), Peak: 35.52% (-8.99 dB), Level: 中 +mic level:中 +[AudioTest] Volume - RMS: 9.93% (-20.06 dB), Peak: 35.21% (-9.07 dB), Level: ��� +mic level:低 +[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 +mic level:中 +voltage : 3.727 , percent 38 , temp : 20.815, charge : 1 +gsensor id : 0x13 +id : 0 +id : 0 +Signal值: 29 diff --git "a/releasePackage/LN_Factorytool_V1.7/\344\272\247\346\265\213\350\256\260\345\275\225/logs/20260118_102017_\346\234\252\347\237\245_\346\234\252\347\237\245.log" "b/releasePackage/LN_Factorytool_V1.7/\344\272\247\346\265\213\350\256\260\345\275\225/logs/20260118_102017_\346\234\252\347\237\245_\346\234\252\347\237\245.log" new file mode 100644 index 0000000..250e5b4 --- /dev/null +++ "b/releasePackage/LN_Factorytool_V1.7/\344\272\247\346\265\213\350\256\260\345\275\225/logs/20260118_102017_\346\234\252\347\237\245_\346\234\252\347\237\245.log" @@ -0,0 +1,40 @@ +CAT1 Signal值: 29 (1/5) +Signal值: 29 +Network Stat Signal值: 29 +Signal值: 29 +Signal值: 29 +CAT1 Signal值: 29 (2/5) +Signal值: 29 +Signal值: 29 +CAT1 Signal值: 29 (3/5) +Signal值: 29 +Signal值: 29 +CAT1 Signal值: 29 (4/5) +Signal值: 29 +Signal值: 29 +CAT1 Signal值: 29 (5/5) +Signal值: 29 +发送Ping指令: AT^PING=www.163.com +Ping成功响应: [0]Reply from 36.156.72.98: time=153ms TTL=56[10:22:39:834][I]{DoSeekIfNeed():1802} seek start +========== Ping测试通过 ========== +g_VibratorFunc delaytime_ms_high 2 , delaytime_ms_low 2 +Network Stat Signal值: 29 +^^^^ BTMAC=1C:1D:2B:DA:B5:DA ^^^^ CyweeChipInfo= +fac:^^^^ BTMAC=1C:1D:2B:DA:B5:DA ^^^^ CyweeChipInfo= +BuildVer:V1.0.36_20260117_152353 +=== 检测到设备开机: BuildVer === +=== 检测到开机,自动发送产测模式检测指令: AT^FACTORY? === +产测模式检测指令响应: failed! mbedtls_net_connect returned -82, port:443.[WEARABLE E/] ln_get_device_token_http: request failed -5 +产测模式检测指令响应: [WEARABLE E/] [TOKEN] 刷新 Token 失败 +产测模式检测指令响应: [WEARABLE E/] [TOKEN] 网络离线,无法刷新 Token,重���次数: 1 +产测模式检测指令响应: [LN][WS][ERROR] ln_ws_url_callback: token is null or empty +产测模式检测指令响应: [HAISI_WS 530][ERROR] URL callback failed: -1, will not create WebSocket client +产测模式检测指令响应: [WEARABLE E/] [TOKEN] 刷新 Token +产测模式检测指令响应: [WEARABLE E/] [TOKEN] 网络���线,刷新 Token +产测模式检测指令响应: svr_cert verification ok. +产测模式检测指令响应: [WEARABLE E/] ln_token_save_json: fwrite success +产测模式检测指令响应: [WEARABLE E/] ln_token_save_json: save json={"device_token":"eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJXWVNaIiwiZGV2aWNlTW9kZWwiOiJBQjEwMSIsImRldmljZVZlcnNpb24iOiJWMS4wLjM2XzIwMjYwMTE3IiwiZGV2aWNlSWQiOiI4Njc5OTgwODY3OTEyNDgiLCJleHAiOjE3NzEyOTUwMTd9.asYbdqjVAhJRChOBtZKSD1851DYJqYqQklJa1i5ggJU","expire_timestamp":1768703017,"create_time":"2026-01-18 10:23:37"} +产测模式检测指令响应: [WEARABLE E/] [TOKEN] 刷新 Token 成功 +产测模式检测指令响应: [HAISI_WS 569][INFO] 尝试连接WebSocket: ws://ambybox-o.api.leiniao.com/ambybox-device-api/v1/websocket?deviceToken=eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJXWVNaIiwiZGV2aWNlTW9kZWwiOiJBQjEwMSIsImRldmljZVZlcnNpb24iOiJWMS4wLjM2XzIwMjYwMTE3IiwiZGV2aWNlSWQiOiI4Njc5OTgwODY3OTEyNDgiLCJleHAiOjE3NzEyOTUwMTd9.asYbdqjVAhJRChOBtZKSD1851DYJqYqQklJa1i5ggJU&deviceId=867998086791248&reconnect=0 +产测模式检测指令响应: [WEARABLE E/] uapi_ln_get_device_token: cached token=eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJXWVNaIiwiZGV2aWNlTW9kZWwiOiJBQjEwMSIsImRldmljZVZlcnNpb24iOiJWMS4wLjM2XzIwMjYwMTE3IiwiZGV2aWNlSWQiOiI4Njc5OTgwODY3OTEyNDgiLCJleHAiOjE3NzEyOTUwMTd9.asYbdqjVAhJRChOBtZKSD1851DYJqYqQklJa1i5ggJU +产测模式检测指令响应: deviceToken: eyJhbGciOiJIUzI1NiJ9.eyJzdWIiOiJXWVNaIiwiZGV2aWNlTW9kZWwiOiJBQjEwMSIsImRldmljZVZlcnNpb24iOiJWMS4wLjM2XzIwMjYwMTE3IiwiZGV2aWNlSWQiOiI4Njc5OTgwODY3OTEyNDgiLCJleHAiOjE3NzEyOTUwMTd9.asYbdqjVAhJRChOBtZKSD1851DYJqYqQklJa1i5ggJU diff --git "a/releasePackage/LN_Factorytool_V1.7/\344\272\247\346\265\213\350\256\260\345\275\225/\344\272\247\346\265\213\350\256\260\345\275\225.csv" "b/releasePackage/LN_Factorytool_V1.7/\344\272\247\346\265\213\350\256\260\345\275\225/\344\272\247\346\265\213\350\256\260\345\275\225.csv" new file mode 100644 index 0000000..6c2e229 --- /dev/null +++ "b/releasePackage/LN_Factorytool_V1.7/\344\272\247\346\265\213\350\256\260\345\275\225/\344\272\247\346\265\213\350\256\260\345\275\225.csv" @@ -0,0 +1,11 @@ +开始时间,结束时间,测试耗时,软件版本,IMEI,ICCID,Modem版本,PYVER版本,LCD测试,马达测试,按键测试,录音测试,电池测试,G-sensor测试,蓝牙测试,4G测试,整体结果 +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,通过,通过,通过,通过,通过,通过,通过,通过 +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,通过,通过,通过,通过,失败,通过,失败,通过 +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,通过,通过,通过,失败,失败,未测试,未测试,未测试 +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,未测试,未测试,未测试,未测试,未测试,通过,失败,通过 +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,通过,通过,通过,通过,通过,通过,失败,失败 +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,通过,通过,通过,失败,通过,通过,失败,通过 +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,通过,通过,未测试,未测试,通过,通过,通过,通过 +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,通过,通过,通过,通过,通过,通过,通过,通过 +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,通过,失败,通过,通过,通过,通过,通过,通过 +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,通过,通过,通过,通过,通过,通过,通过,通过 diff --git "a/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" "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" new file mode 100644 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/\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" "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" new file mode 100644 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