411 lines
16 KiB
C
411 lines
16 KiB
C
|
|
/* user_cmd.c - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ڵ<EFBFBD><DAB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EEB4A6>
|
|||
|
|
*
|
|||
|
|
* ͨ<EFBFBD><EFBFBD> USART1 <EFBFBD><EFBFBD><EFBFBD>ռ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ı<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֳ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>:
|
|||
|
|
* RESET/OTA - <EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* WIFIRESET - WiFiģ<EFBFBD><EFBFBD> AT+RESTORE <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ѵ<EFBFBD><EFBFBD>ȵ<EFBFBD>(<EFBFBD><EFBFBD><EFBFBD><EFBFBD>SmartConfig) + <EFBFBD><EFBFBD>λ
|
|||
|
|
* INFO - <EFBFBD><EFBFBD>ӡ MQTT <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ϣ
|
|||
|
|
* SETMQTT <ID> <<EFBFBD>û<EFBFBD><EFBFBD><EFBFBD>> <<EFBFBD><EFBFBD><EFBFBD><EFBFBD>> - <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>豸<EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD>д EEPROM<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD>
|
|||
|
|
* SETIP <ip> <port> - <EFBFBD>ķ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ/<EFBFBD>˿ڣ<EFBFBD>д EEPROM<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD>
|
|||
|
|
* MQTTINFO - <EFBFBD><EFBFBD>ѯ<EFBFBD><EFBFBD>ǰ MQTT <EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* FACTORY - <EFBFBD>ָ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> EEPROM ȫ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ
|
|||
|
|
* SETWIFI ssid <EFBFBD><EFBFBD><EFBFBD><EFBFBD> - <EFBFBD><EFBFBD><EFBFBD><EFBFBD> WiFi <EFBFBD>̶<EFBFBD><EFBFBD>ȵ㣨д EEPROM<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD>
|
|||
|
|
* WIFIINFO - <EFBFBD><EFBFBD>ѯ<EFBFBD><EFBFBD>ǰ WiFi <EFBFBD>ȵ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* WIFICLEAR - <EFBFBD><EFBFBD><EFBFBD><EFBFBD> SETWIFI <EFBFBD><EFBFBD><EFBFBD>õ<EFBFBD><EFBFBD>ȵ㣬<EFBFBD>ص<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD>ϣ<EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч<EFBFBD><EFBFBD>
|
|||
|
|
* FEEDSTART Ͷ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>KG - <EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼͶι<EFBFBD><EFBFBD><EFBFBD><EFBFBD> FEEDSTART 1.5<EFBFBD><EFBFBD>
|
|||
|
|
* FEEDSTOP - ֹͣͶι<EFBFBD><EFBFBD>FEED - <EFBFBD><EFBFBD>ѯͶι״̬
|
|||
|
|
* STATUS - <EFBFBD><EFBFBD>ӡ<EFBFBD>̵<EFBFBD><EFBFBD><EFBFBD>״̬
|
|||
|
|
* R1ON ~ R4OFF - <EFBFBD><EFBFBD>·<EFBFBD>̵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* ALLON / ALLOFF - ȫ<EFBFBD><EFBFBD><EFBFBD>̵<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
* HISTORY - <EFBFBD><EFBFBD>ӡ<EFBFBD><EFBFBD><EFBFBD><EFBFBD> 10 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><EFBFBD><EFBFBD>ӡ<EFBFBD><EFBFBD>
|
|||
|
|
* HELP - <EFBFBD><EFBFBD>ʾ֧<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>
|
|||
|
|
*/
|
|||
|
|
|
|||
|
|
#include "user_cmd.h"
|
|||
|
|
#include <stdlib.h>
|
|||
|
|
#include "ble_at.h"
|
|||
|
|
#include "app_common.h"
|
|||
|
|
#include "relay.h"
|
|||
|
|
#include "24c02.h"
|
|||
|
|
#include "uart.h"
|
|||
|
|
#include "log.h"
|
|||
|
|
#include "network.h"
|
|||
|
|
#include "net_wifi.h"
|
|||
|
|
#include "esp8266.h"
|
|||
|
|
#include "reset_log.h"
|
|||
|
|
#include "feed_scale.h"
|
|||
|
|
#include "air780e.h"
|
|||
|
|
#include "hlw8032.h"
|
|||
|
|
|
|||
|
|
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD>Сд<D0A1>Ƚ<EFBFBD> */
|
|||
|
|
static int cmd_is(const char *a, const char *b)
|
|||
|
|
{
|
|||
|
|
while (*a && *b) {
|
|||
|
|
char ca = *a, cb = *b;
|
|||
|
|
if (ca >= 'A' && ca <= 'Z') ca += 'a' - 'A';
|
|||
|
|
if (cb >= 'A' && cb <= 'Z') cb += 'a' - 'A';
|
|||
|
|
if (ca != cb) return 0;
|
|||
|
|
a++; b++;
|
|||
|
|
}
|
|||
|
|
return (*a == 0 && *b == 0);
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/* ͨ<><CDA8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֱ<EFBFBD>ӿ<EFBFBD><D3BF>Ƶ<EFBFBD><C6B5><EFBFBD><EFBFBD>̵<EFBFBD><CCB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F>ϱ<EFBFBD>״̬ */
|
|||
|
|
static void relay_set(uint8_t ch, uint8_t on)
|
|||
|
|
{
|
|||
|
|
if (ch < 1 || ch > 4) return;
|
|||
|
|
|
|||
|
|
relaySet(ch, on);
|
|||
|
|
log_info("> BT: SW%d %s", ch, on ? "<EFBFBD><EFBFBD>" : "<EFBFBD><EFBFBD>");
|
|||
|
|
eepromWriteData(102, &MqttInfoStr.Relay_State[0], 7);
|
|||
|
|
relayRequestReport();
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/* <20><><EFBFBD><EFBFBD><EFBFBD>ִ<EFBFBD>Сд<D0A1><D0B4><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǰ<C7B0>Ƚϣ<C8BD>cmd <20><> prefix <20><>ͷ<EFBFBD><CDB7><EFBFBD><EFBFBD> 1 */
|
|||
|
|
static int cmd_prefix_is(const char *cmd, const char *prefix)
|
|||
|
|
{
|
|||
|
|
while (*prefix) {
|
|||
|
|
char ca = *cmd, cb = *prefix;
|
|||
|
|
if (ca == 0) return 0;
|
|||
|
|
if (ca >= 'A' && ca <= 'Z') ca += 'a' - 'A';
|
|||
|
|
if (cb >= 'A' && cb <= 'Z') cb += 'a' - 'A';
|
|||
|
|
if (ca != cb) return 0;
|
|||
|
|
cmd++; prefix++;
|
|||
|
|
}
|
|||
|
|
return 1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ո<EFBFBD><D5B8>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD> "SETMQTT id user pass"<22><><EFBFBD><EFBFBD>
|
|||
|
|
* <EFBFBD><EFBFBD><EFBFBD>ز<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>t Ϊ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ÿ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> cap-1 <EFBFBD>ַ<EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
|
static int parse_tokens(const char *s, char t[][20], int cap)
|
|||
|
|
{
|
|||
|
|
int n = 0;
|
|||
|
|
for (;;) {
|
|||
|
|
while (*s == ' ') s++; /* <20><><EFBFBD><EFBFBD><EFBFBD>ָ<EFBFBD><D6B8>ո<EFBFBD> */
|
|||
|
|
if (*s == 0) break;
|
|||
|
|
if (n >= 3) return 4; /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
|
int i = 0;
|
|||
|
|
while (*s && *s != ' ' && i < cap - 1) t[n][i++] = *s++;
|
|||
|
|
t[n][i] = 0;
|
|||
|
|
n++;
|
|||
|
|
}
|
|||
|
|
return n;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/* У<><D0A3><EFBFBD>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ǿա<C7BF><D5A1><EFBFBD><EFBFBD><EFBFBD> < cap<61><70><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD><EFBFBD> */
|
|||
|
|
static int token_valid(const char *t, int cap)
|
|||
|
|
{
|
|||
|
|
int len = (int)strlen(t);
|
|||
|
|
if (len <= 0 || len >= cap) return 0;
|
|||
|
|
for (const char *p = t; *p; p++) {
|
|||
|
|
if (!((*p >= '0' && *p <= '9') || (*p >= 'a' && *p <= 'z') || (*p >= 'A' && *p <= 'Z'))) return 0;
|
|||
|
|
}
|
|||
|
|
return 1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/* WiFi <20><><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD>У<EFBFBD>飺<EFBFBD>ǿա<C7BF><D5A1><EFBFBD><EFBFBD><EFBFBD> < cap<61><70><EFBFBD>ɴ<EFBFBD>ӡ<EFBFBD>ǿո<C7BF><D5B8>ַ<EFBFBD> */
|
|||
|
|
static int wifi_token_valid(const char *t, int cap)
|
|||
|
|
{
|
|||
|
|
int len = (int)strlen(t);
|
|||
|
|
if (len <= 0 || len >= cap) return 0;
|
|||
|
|
for (const char *p = t; *p; p++) {
|
|||
|
|
if (*p < 0x21 || *p > 0x7E) return 0;
|
|||
|
|
}
|
|||
|
|
return 1;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
void userCmdInit(void)
|
|||
|
|
{
|
|||
|
|
/* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼ<EFBFBD><CABC> */
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/* <20><><EFBFBD><EFBFBD> USART1 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
|
void process_usart1_command(void)
|
|||
|
|
{
|
|||
|
|
const char *cmd = USART1_GetCommand();
|
|||
|
|
if (!cmd) return;
|
|||
|
|
|
|||
|
|
/* ȥ<><C8A5><EFBFBD><EFBFBD>β<EFBFBD>ո<EFBFBD><D5B8><EFBFBD><EFBFBD>ֻ<EFBFBD><D6BB><EFBFBD><EFBFBD>뷨/APP <20><><EFBFBD>״<EFBFBD>β<EFBFBD>ͣ<EFBFBD><CDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD>жϸ<D0B6><CFB8><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
|
while (*cmd == ' ') cmd++;
|
|||
|
|
{
|
|||
|
|
char *end = (char *)cmd + strlen(cmd);
|
|||
|
|
while (end > cmd && (end[-1] == ' ' || end[-1] == '\r' || end[-1] == '\n')) *--end = 0;
|
|||
|
|
if (*cmd == 0) return;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/* <20><>Ʒģʽ<C4A3><CABD>ѯ/<2F>л<EFBFBD><D0BB><EFBFBD>SCALE <20><>ѯ<EFBFBD><D1AF>SCALE0=<3D><>·<EFBFBD>̵<EFBFBD><CCB5><EFBFBD>(<28><EFBFBD>)<29><>SCALE1=<3D><><EFBFBD><EFBFBD>Ͷ<EFBFBD><CDB6>(<28><><EFBFBD><EFBFBD>)<29><><EFBFBD>л<EFBFBD><D0BB><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч */
|
|||
|
|
if (cmd_is(cmd, "SCALE")) {
|
|||
|
|
log_info("> BT: <20><>Ʒģʽ %s", g_feed_scale_on ? "SCALE1 <20><><EFBFBD><EFBFBD>Ͷ<EFBFBD><CDB6>(<28><><EFBFBD><EFBFBD>)" : "SCALE0 <20><>·<EFBFBD>̵<EFBFBD><CCB5><EFBFBD>(<28><EFBFBD>)");
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
if (cmd_is(cmd, "SCALE0") || cmd_is(cmd, "SCALE1")) {
|
|||
|
|
uint8_t on = (cmd[5] == '1') ? 1 : 0;
|
|||
|
|
if (on == g_feed_scale_on) {
|
|||
|
|
log_info("> BT: <20><><EFBFBD>Ǹ<EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD>");
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
feed_scale_set_mode(on);
|
|||
|
|
log_warn("> BT: <20><>Ʒģʽ<C4A3><CABD><EFBFBD>е<EFBFBD> %s<><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч...", on ? "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ͷ<EFBFBD><EFBFBD>(<28><><EFBFBD><EFBFBD>)" : "<EFBFBD><EFBFBD>·<EFBFBD>̵<EFBFBD><EFBFBD><EFBFBD>(<28><EFBFBD>)");
|
|||
|
|
reset_log_mark(RSN_CMD_RESET);
|
|||
|
|
HAL_Delay(200);
|
|||
|
|
NVIC_SystemReset();
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/* GPS <20><>λ<EFBFBD><CEBB><EFBFBD>أ<EFBFBD>GPS <20><>ѯ<EFBFBD><D1AF>GPS0=<3D>رգ<D8B1>GPS1=<3D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD><D0BB><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч */
|
|||
|
|
if (cmd_is(cmd, "GPS")) {
|
|||
|
|
log_info("> BT: GPS <20><>λ %s", g_gps_on ? "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>(GPS1)" : "<EFBFBD>ر<EFBFBD>(GPS0)");
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
if (cmd_is(cmd, "GPS0") || cmd_is(cmd, "GPS1")) {
|
|||
|
|
uint8_t on = (cmd[3] == '1') ? 1 : 0;
|
|||
|
|
if (on == g_gps_on) {
|
|||
|
|
log_info("> BT: <20><><EFBFBD>Ǹ<EFBFBD>״̬<D7B4><CCAC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD>");
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
gps_set_mode(on);
|
|||
|
|
log_warn("> BT: GPS <20><>λ<EFBFBD><CEBB><EFBFBD>е<EFBFBD> %s<><73><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч...", on ? "<EFBFBD><EFBFBD><EFBFBD><EFBFBD>" : "<EFBFBD>ر<EFBFBD>");
|
|||
|
|
reset_log_mark(RSN_CMD_RESET);
|
|||
|
|
HAL_Delay(200);
|
|||
|
|
NVIC_SystemReset();
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
/* <20>ۼƵ<DBBC><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD>㣨EEPROM ͬ<><CDAC><EFBFBD><EFBFBD><EFBFBD>̣<EFBFBD><CCA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
|
if (cmd_is(cmd, "ENCLR")) {
|
|||
|
|
hlw8032_clear();
|
|||
|
|
log_warn("> BT: <20>ۼƵ<DBBC><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
if (cmd_is(cmd, "RESET")) {
|
|||
|
|
log_warn("> USART1: <20>յ<EFBFBD> RESET <20><><EFBFBD><EFBFBD><EEA3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>...");
|
|||
|
|
reset_log_mark(RSN_CMD_RESET);
|
|||
|
|
HAL_Delay(100);
|
|||
|
|
NVIC_SystemReset();
|
|||
|
|
}
|
|||
|
|
else if (cmd_is(cmd, "INFO")) {
|
|||
|
|
log_info("> BT INFO: <20>汾=%u, <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>=%s:%d, <20>ͻ<EFBFBD><CDBB><EFBFBD>=%s",
|
|||
|
|
MqttInfoStr.Ver, MqttInfoStr.ServerIP,
|
|||
|
|
MqttInfoStr.ServerPort, MqttInfoStr.ClientID);
|
|||
|
|
}
|
|||
|
|
else if (cmd_prefix_is(cmd, "SETMQTT")) {
|
|||
|
|
char args[3][20] = {{0}};
|
|||
|
|
char *id = args[0], *user = args[1], *pass = args[2];
|
|||
|
|
int n = parse_tokens(cmd + 7, args, 20);
|
|||
|
|
if (n != 3 || !token_valid(id, sizeof(MqttInfoStr.ClientID)) ||
|
|||
|
|
!token_valid(user, sizeof(MqttInfoStr.Username)) ||
|
|||
|
|
!token_valid(pass, sizeof(MqttInfoStr.Passward))) {
|
|||
|
|
log_warn("> BT: <20><>ʽ/<2F>ַ<EFBFBD><D6B7><EFBFBD><EFBFBD>ԣ<EFBFBD><D4A3>÷<EFBFBD>: SETMQTT <ID> <<3C>û<EFBFBD><C3BB><EFBFBD>> <<3C><><EFBFBD><EFBFBD>><3E><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ĸ<EFBFBD><C4B8><EFBFBD>֣<EFBFBD><D6A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>19λ<39><CEBB>");
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
strcpy(MqttInfoStr.ClientID, id);
|
|||
|
|
strcpy(MqttInfoStr.Username, user);
|
|||
|
|
strcpy(MqttInfoStr.Passward, pass);
|
|||
|
|
MqttInfoStr.Magic = EEPROM_MAGIC;
|
|||
|
|
eepromWriteData(0, &MqttInfoStr, MQTT_STRUCT_LEN);
|
|||
|
|
log_info("> BT: <20><><EFBFBD><EFBFBD><EFBFBD>ѱ<EFBFBD><D1B1><EFBFBD> ID=%s <20>û<EFBFBD>=%s <20><><EFBFBD><EFBFBD>=%s<><73><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч...", id, user, pass);
|
|||
|
|
HAL_Delay(1000); /* <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1> */
|
|||
|
|
NVIC_SystemReset();
|
|||
|
|
}
|
|||
|
|
else if (cmd_prefix_is(cmd, "SETIP")) {
|
|||
|
|
char args[3][20] = {{0}};
|
|||
|
|
int port = 0, dots = 0;
|
|||
|
|
int n = parse_tokens(cmd + 5, args, 20);
|
|||
|
|
char *ip = args[0];
|
|||
|
|
if (n == 2) port = atoi(args[1]);
|
|||
|
|
for (const char *q = ip; *q; q++) {
|
|||
|
|
if (*q == '.') dots++;
|
|||
|
|
else if (*q < '0' || *q > '9') { dots = -1; break; }
|
|||
|
|
}
|
|||
|
|
if (n != 2 || dots != 3 || port < 1 || port > 65535) {
|
|||
|
|
log_warn("> BT: <20><>ʽ<EFBFBD><CABD><EFBFBD>ԣ<EFBFBD><D4A3>÷<EFBFBD>: SETIP <ip> <port><3E><><EFBFBD><EFBFBD> SETIP 58.17.14.95 1880<38><30>");
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
strcpy(MqttInfoStr.ServerIP, ip);
|
|||
|
|
MqttInfoStr.ServerPort = (uint16_t)port;
|
|||
|
|
MqttInfoStr.Magic = EEPROM_MAGIC;
|
|||
|
|
eepromWriteData(0, &MqttInfoStr, MQTT_STRUCT_LEN);
|
|||
|
|
log_info("> BT: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѱ<EFBFBD><D1B1><EFBFBD> %s:%d<><64><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч...", ip, port);
|
|||
|
|
HAL_Delay(1000);
|
|||
|
|
NVIC_SystemReset();
|
|||
|
|
}
|
|||
|
|
else if (cmd_is(cmd, "MQTTINFO")) {
|
|||
|
|
log_info("> BT MQTT: ״̬=%s", g_mqtt_configured ? "<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>" : "δ<EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
|||
|
|
log_info("> BT MQTT: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>=%s:%d", MqttInfoStr.ServerIP, MqttInfoStr.ServerPort);
|
|||
|
|
log_info("> BT MQTT: ID=%s <20>û<EFBFBD>=%s <20><><EFBFBD><EFBFBD>=%s <20>汾=%u",
|
|||
|
|
MqttInfoStr.ClientID[0] ? MqttInfoStr.ClientID : "(<28><>)",
|
|||
|
|
MqttInfoStr.Username[0] ? MqttInfoStr.Username : "(<28><>)",
|
|||
|
|
MqttInfoStr.Passward[0] ? MqttInfoStr.Passward : "(<28><>)",
|
|||
|
|
MqttInfoStr.Ver);
|
|||
|
|
}
|
|||
|
|
else if (cmd_is(cmd, "FACTORY")) {
|
|||
|
|
/* <20>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ƭ EEPROM д 0xFF<46><46><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/<2F>̵<EFBFBD><CCB5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/ģʽ/<2F><><EFBFBD><EFBFBD><EFBFBD>ۼƵ<DBBC>ȫ<EFBFBD>壩<EFBFBD><E5A3A9>
|
|||
|
|
* <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"ȫ<EFBFBD>°<EFBFBD>"·<EFBFBD><EFBFBD><EFBFBD><EFBFBD>Magic <EFBFBD><EFBFBD>Ч -> <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ<EFBFBD><EFBFBD><EFBFBD>汾<EFBFBD>Ź<EFBFBD> 0 */
|
|||
|
|
log_warn("> BT: <20>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><C3A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> EEPROM...");
|
|||
|
|
uint8_t ff[16];
|
|||
|
|
memset(ff, 0xFF, sizeof(ff));
|
|||
|
|
for (uint16_t addr = 0; addr < 256; addr += sizeof(ff)) {
|
|||
|
|
eepromWriteData((uint8_t)addr, ff, sizeof(ff));
|
|||
|
|
}
|
|||
|
|
log_warn("> BT: <20><><EFBFBD><EFBFBD><EFBFBD>գ<EFBFBD><D5A3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ģʽ");
|
|||
|
|
HAL_Delay(500);
|
|||
|
|
NVIC_SystemReset();
|
|||
|
|
}
|
|||
|
|
else if (cmd_prefix_is(cmd, "SETWIFI")) {
|
|||
|
|
char args[3][20] = {{0}};
|
|||
|
|
int n = parse_tokens(cmd + 7, args, 20);
|
|||
|
|
if (n != 2 || !wifi_token_valid(args[0], 20) || !wifi_token_valid(args[1], 20)) {
|
|||
|
|
log_warn("> BT: <20><>ʽ<EFBFBD><CABD><EFBFBD>ԣ<EFBFBD><D4A3>÷<EFBFBD>: SETWIFI <20><><EFBFBD><EFBFBD> <20><><EFBFBD>루<EFBFBD>ո<EFBFBD><D5B8>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>19λ<39><CEBB>");
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
uint8_t buf[WIFI_CFG_STR_LEN];
|
|||
|
|
uint8_t magic = WIFI_CFG_MAGIC;
|
|||
|
|
eepromWriteData(WIFI_CFG_MAGIC_ADDR, &magic, 1);
|
|||
|
|
memset(buf, 0, sizeof(buf)); strcpy((char *)buf, args[0]);
|
|||
|
|
eepromWriteData(WIFI_CFG_SSID_ADDR, buf, sizeof(buf));
|
|||
|
|
memset(buf, 0, sizeof(buf)); strcpy((char *)buf, args[1]);
|
|||
|
|
eepromWriteData(WIFI_CFG_PASS_ADDR, buf, sizeof(buf));
|
|||
|
|
log_info("> BT: WiFi <20>ȵ<EFBFBD><C8B5>ѱ<EFBFBD><D1B1><EFBFBD> '%s'<27><><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч...", args[0]);
|
|||
|
|
HAL_Delay(1000);
|
|||
|
|
NVIC_SystemReset();
|
|||
|
|
}
|
|||
|
|
else if (cmd_is(cmd, "WIFIINFO")) {
|
|||
|
|
uint8_t magic = 0;
|
|||
|
|
char ssid[WIFI_CFG_STR_LEN] = {0}, pass[WIFI_CFG_STR_LEN] = {0};
|
|||
|
|
eepromReadData(WIFI_CFG_MAGIC_ADDR, &magic, 1);
|
|||
|
|
if (magic == WIFI_CFG_MAGIC) {
|
|||
|
|
eepromReadData(WIFI_CFG_SSID_ADDR, ssid, WIFI_CFG_STR_LEN);
|
|||
|
|
eepromReadData(WIFI_CFG_PASS_ADDR, pass, WIFI_CFG_STR_LEN);
|
|||
|
|
log_info("> BT WiFi: EEPROM <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>=%s <20><><EFBFBD><EFBFBD>=%s", ssid, pass);
|
|||
|
|
} else {
|
|||
|
|
log_info("> BT WiFi: δ<><CEB4><EFBFBD>ã<EFBFBD><C3A3>ñ<EFBFBD><C3B1><EFBFBD>Ĭ<EFBFBD><C4AC><EFBFBD>ȵ<EFBFBD> '%s'<27><><EFBFBD><EFBFBD>SETWIFI <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD>", WIFI_SSID);
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else if (cmd_is(cmd, "WIFICLEAR")) {
|
|||
|
|
/* <20><><EFBFBD><EFBFBD> EEPROM <20><><EFBFBD><EFBFBD> SETWIFI <20><><EFBFBD>ã<EFBFBD>magic <20><><EFBFBD><EFBFBD>Ч<EFBFBD><D0A7><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC><EFBFBD>ȵ㣬<C8B5>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Ч */
|
|||
|
|
uint8_t magic = 0;
|
|||
|
|
eepromReadData(WIFI_CFG_MAGIC_ADDR, &magic, 1);
|
|||
|
|
if (magic != WIFI_CFG_MAGIC) {
|
|||
|
|
log_info("> BT: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>û<EFBFBD><C3BB> SETWIFI <20><><EFBFBD>ã<EFBFBD><C3A3><EFBFBD>ǰ<EFBFBD>ñ<EFBFBD><C3B1><EFBFBD>Ĭ<EFBFBD><C4AC> '%s'<27><>", WIFI_SSID);
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
magic = 0xFF;
|
|||
|
|
eepromWriteData(WIFI_CFG_MAGIC_ADDR, &magic, 1);
|
|||
|
|
log_info("> BT: SETWIFI <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD><C4AC> '%s'<27><><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD>...", WIFI_SSID);
|
|||
|
|
HAL_Delay(1000);
|
|||
|
|
NVIC_SystemReset();
|
|||
|
|
}
|
|||
|
|
else if (cmd_prefix_is(cmd, "FEEDSTART")) {
|
|||
|
|
if (!g_feed_scale_on) { log_warn("> BT: <20><>ǰ<EFBFBD><EFBFBD>ģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD>Ƽ̵<C6BC><CCB5><EFBFBD> 1 <20><><EFBFBD><EFBFBD> R1ON/R1OFF"); return; }
|
|||
|
|
char args[3][20] = {{0}};
|
|||
|
|
int n = parse_tokens(cmd + 9, args, 20);
|
|||
|
|
float kg = (n == 1) ? (float)atof(args[0]) : 0.0f;
|
|||
|
|
uint16_t w100 = (uint16_t)(kg * 10.0f + 0.5f);
|
|||
|
|
if (n != 1 || kg <= 0.0f || w100 < FEED_SCALE_ONCEWT_MIN || w100 > FEED_SCALE_ONCEWT_MAX) {
|
|||
|
|
log_warn("> BT: <20><>ʽ<EFBFBD><CABD><EFBFBD>ԣ<EFBFBD><D4A3>÷<EFBFBD>: FEEDSTART Ͷ<><CDB6><EFBFBD><EFBFBD>KG<4B><47>0.1~500.0<EFBFBD><EFBFBD><EFBFBD><EFBFBD> FEEDSTART 1.5<EFBFBD><EFBFBD>");
|
|||
|
|
return;
|
|||
|
|
}
|
|||
|
|
log_info("> BT: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʼͶι %.1fKG", (double)kg);
|
|||
|
|
feedScaleStart(w100);
|
|||
|
|
}
|
|||
|
|
else if (cmd_is(cmd, "FEEDSTOP")) {
|
|||
|
|
feedScaleStop();
|
|||
|
|
log_info("> BT: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ֹͣͶι");
|
|||
|
|
}
|
|||
|
|
else if (cmd_is(cmd, "FEED")) {
|
|||
|
|
static const char *sts[] = {"<EFBFBD><EFBFBD><EFBFBD><EFBFBD>", "Ͷι<EFBFBD><EFBFBD>", "Ͷι<EFBFBD><EFBFBD><EFBFBD><EFBFBD>", "<EFBFBD>쳣<EFBFBD><EFBFBD><EFBFBD><EFBFBD>"};
|
|||
|
|
FeedScaleState st = feedScaleGetState();
|
|||
|
|
log_info("> BT FEED: ״̬=%s ʣ<><CAA3>=%.1fKG <20><><EFBFBD><EFBFBD>=%.1fKG <20>Ѽ<EFBFBD>=%.1fKG",
|
|||
|
|
sts[(int)st],
|
|||
|
|
(double)(feedScaleGetWeight() / 10.0f),
|
|||
|
|
(double)(feedScaleGetOnceWeight() / 10.0f),
|
|||
|
|
(double)(feedScaleGetReduced() / 10.0f));
|
|||
|
|
}
|
|||
|
|
else if (cmd_is(cmd, "R1ON")) { relay_set(1, 1); }
|
|||
|
|
else if (cmd_is(cmd, "R1OFF")) { relay_set(1, 0); }
|
|||
|
|
else if (cmd_is(cmd, "R2ON")) { relay_set(2, 1); }
|
|||
|
|
else if (cmd_is(cmd, "R2OFF")) { relay_set(2, 0); }
|
|||
|
|
else if (cmd_is(cmd, "R3ON")) { relay_set(3, 1); }
|
|||
|
|
else if (cmd_is(cmd, "R3OFF")) { relay_set(3, 0); }
|
|||
|
|
else if (cmd_is(cmd, "R4ON")) { relay_set(4, 1); }
|
|||
|
|
else if (cmd_is(cmd, "R4OFF")) { relay_set(4, 0); }
|
|||
|
|
else if (cmd_is(cmd, "ALLON")) {
|
|||
|
|
relay_set(1, 1); relay_set(2, 1); relay_set(3, 1); relay_set(4, 1);
|
|||
|
|
}
|
|||
|
|
else if (cmd_is(cmd, "ALLOFF")) {
|
|||
|
|
relay_set(1, 0); relay_set(2, 0); relay_set(3, 0); relay_set(4, 0);
|
|||
|
|
}
|
|||
|
|
else if (cmd_is(cmd, "STATUS")) {
|
|||
|
|
log_info("> BT STATUS: SW1=%s, SW2=%s, SW3=%s, SW4=%s",
|
|||
|
|
MqttInfoStr.Relay_State[1] ? "<EFBFBD><EFBFBD>" : "<EFBFBD><EFBFBD>",
|
|||
|
|
MqttInfoStr.Relay_State[2] ? "<EFBFBD><EFBFBD>" : "<EFBFBD><EFBFBD>",
|
|||
|
|
MqttInfoStr.Relay_State[3] ? "<EFBFBD><EFBFBD>" : "<EFBFBD><EFBFBD>",
|
|||
|
|
MqttInfoStr.Relay_State[4] ? "<EFBFBD><EFBFBD>" : "<EFBFBD><EFBFBD>");
|
|||
|
|
}
|
|||
|
|
else if (cmd_is(cmd, "OTA")) {
|
|||
|
|
log_info("> BT OTA: <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> BootLoader <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
|||
|
|
reset_log_mark(RSN_CMD_OTA);
|
|||
|
|
HAL_Delay(100);
|
|||
|
|
NVIC_SystemReset();
|
|||
|
|
}
|
|||
|
|
else if (cmd_is(cmd, "WIFIRESET")) {
|
|||
|
|
/* WiFi ģ<><C4A3> AT+RESTORE <20>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ѱ<EFBFBD><D1B1><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ȵ㣩<C8B5><E3A3A9><EFBFBD><EFBFBD><EFBFBD>ڲ<EFBFBD><DAB2><EFBFBD> SmartConfig<69><67>
|
|||
|
|
* <EFBFBD><EFBFBD> WiFi ͨ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ʱ<EFBFBD>Ų<EFBFBD><EFBFBD><EFBFBD>ģ<EFBFBD>飨UART4 <EFBFBD><EFBFBD> 4G <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ջ<EFBFBD><EFBFBD>壬
|
|||
|
|
* 4G ģʽ<EFBFBD>¶<EFBFBD> UART4 <EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> 4G <EFBFBD><EFBFBD><EFBFBD>ݣ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>λ<EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> */
|
|||
|
|
if (NET_GetActiveBackend() == NET_BACKEND_WIFI) {
|
|||
|
|
log_warn("> BT WIFIRESET: <20>Ѱ<EFBFBD><D1B0><EFBFBD> WiFi <20>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>"); g_wifi_restore_req = 1;
|
|||
|
|
} else {
|
|||
|
|
log_warn("> BT WIFIRESET: 4G ģʽ<C4A3><CABD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> WiFi ģ<>飬<EFBFBD><E9A3AC><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
|||
|
|
reset_log_mark(RSN_CMD_RECOVERY);
|
|||
|
|
HAL_Delay(100);
|
|||
|
|
NVIC_SystemReset();
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
else if (cmd_is(cmd, "BLESET")) {
|
|||
|
|
log_info("> BT: ǿ<><C7BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/UUID");
|
|||
|
|
ble_force_setup();
|
|||
|
|
}
|
|||
|
|
else if (cmd_is(cmd, "LOGTRACE")) { log_set_level(LOG_TRACE); log_info("> BT: <20><>־<EFBFBD>ȼ<EFBFBD> TRACE"); }
|
|||
|
|
else if (cmd_is(cmd, "LOGDEBUG")) { log_set_level(LOG_DEBUG); log_info("> BT: <20><>־<EFBFBD>ȼ<EFBFBD> DEBUG"); }
|
|||
|
|
else if (cmd_is(cmd, "LOGINFO")) { log_set_level(LOG_INFO); log_info("> BT: <20><>־<EFBFBD>ȼ<EFBFBD> INFO"); }
|
|||
|
|
else if (cmd_is(cmd, "LOGWARN")) { log_set_level(LOG_WARN); log_info("> BT: <20><>־<EFBFBD>ȼ<EFBFBD> WARN"); }
|
|||
|
|
else if (cmd_is(cmd, "LOGERROR")) { log_set_level(LOG_ERROR); log_info("> BT: <20><>־<EFBFBD>ȼ<EFBFBD> ERROR"); }
|
|||
|
|
else if (cmd_is(cmd, "LOGFATAL")) { log_set_level(LOG_FATAL); log_info("> BT: <20><>־<EFBFBD>ȼ<EFBFBD> FATAL"); }
|
|||
|
|
else if (cmd_is(cmd, "LOG")) {
|
|||
|
|
static const char *lvs[] = {"TRACE", "DEBUG", "INFO", "WARN", "ERROR", "FATAL"};
|
|||
|
|
log_info("> BT: <20><>ǰ<EFBFBD><C7B0>־<EFBFBD>ȼ<EFBFBD> %s", lvs[(int)log_get_level()]);
|
|||
|
|
}
|
|||
|
|
else if (cmd_is(cmd, "HISTORY")) {
|
|||
|
|
reset_log_print_history();
|
|||
|
|
}
|
|||
|
|
else if (cmd_is(cmd, "HELP")) {
|
|||
|
|
log_info("===<3D><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ո<EFBFBD><D5B8>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>===");
|
|||
|
|
log_info("RESET - ϵͳ<CFB5><CDB3>λ");
|
|||
|
|
log_info("INFO - <20><>ӡ MQTT <20><><EFBFBD>ü<EFBFBD><C3BC><EFBFBD>");
|
|||
|
|
log_info("MQTTINFO - <20><>ѯ MQTT <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
|||
|
|
log_info("SETMQTT ID <20>û<EFBFBD><C3BB><EFBFBD> <20><><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD><EFBFBD>豸<EFBFBD><E8B1B8><EFBFBD>ݣ<EFBFBD><DDA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
|||
|
|
log_info("SETIP ip <20>˿<EFBFBD> - <20>ķ<DEB8><C4B7><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ַ/<2F>˿ڣ<CBBF><DAA3><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
|||
|
|
log_info("FACTORY - <20>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> EEPROM ȫ<><C8AB><EFBFBD><EFBFBD><EFBFBD>ò<EFBFBD><C3B2><EFBFBD><EFBFBD><EFBFBD>");
|
|||
|
|
log_info("STATUS - <20><>ӡ<EFBFBD><D3A1>·<EFBFBD>̵<EFBFBD><CCB5><EFBFBD>״̬");
|
|||
|
|
log_info("R1ON/R1OFF~R4ON/R4OFF - <20><>·<EFBFBD>̵<EFBFBD><CCB5><EFBFBD><EFBFBD><EFBFBD>/<2F><>");
|
|||
|
|
log_info("ALLON/ALLOFF - ȫ<><C8AB><EFBFBD>̵<EFBFBD><CCB5><EFBFBD><EFBFBD><EFBFBD>/<2F><>");
|
|||
|
|
log_info("OTA - <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD> BootLoader <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
|||
|
|
log_info("WIFICLEAR - <20><><EFBFBD><EFBFBD> SETWIFI <20><><EFBFBD>õ<EFBFBD><C3B5>ȵ㣬<C8B5>ص<EFBFBD><D8B5><EFBFBD><EFBFBD><EFBFBD>Ĭ<EFBFBD>ϣ<EFBFBD><CFA3>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
|||
|
|
log_info("WIFIRESET - WiFi ģ<><C4A3><EFBFBD>ָ<EFBFBD><D6B8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD> SmartConfig <20>Ѵ<EFBFBD><D1B4>ȵ㣩<C8B5><E3A3A9><EFBFBD><EFBFBD>λ");
|
|||
|
|
log_info("BLESET - ǿ<><C7BF><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>/GATT UUID");
|
|||
|
|
log_info("SCALE - <20><>ѯ<EFBFBD><D1AF>Ʒģʽ<C4A3><CABD>SCALE0 <20><EFBFBD> / SCALE1 <20><><EFBFBD>ӣ<EFBFBD><D3A3>л<EFBFBD><D0BB><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
|||
|
|
log_info("GPS - <20><>ѯ GPS <20><><EFBFBD>أ<EFBFBD>GPS0 <20><> / GPS1 <20><><EFBFBD><EFBFBD><EFBFBD>л<EFBFBD><D0BB><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
|||
|
|
log_info("ENCLR - <20>ۼƵ<DBBC><C6B5><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
|||
|
|
log_info("SETWIFI <20><><EFBFBD><EFBFBD> <20><><EFBFBD><EFBFBD> - <20><><EFBFBD><EFBFBD> WiFi <20>̶<EFBFBD><CCB6>ȵ㣨<C8B5><E3A3A8><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>Զ<EFBFBD><D4B6><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
|||
|
|
log_info("WIFIINFO - <20><>ѯ WiFi <20>ȵ<EFBFBD><C8B5><EFBFBD><EFBFBD><EFBFBD>");
|
|||
|
|
log_info("FEEDSTART Ͷ<><CDB6><EFBFBD><EFBFBD>KG - <20><><EFBFBD><EFBFBD>ģʽ<C4A3><CABD>ʼͶι<CDB6><CEB9>FEEDSTOP ֹͣ<CDA3><D6B9>FEED <20><>ѯ״̬");
|
|||
|
|
log_info("LOG - <20><>ѯ<EFBFBD><D1AF>־<EFBFBD>ȼ<EFBFBD><C8BC><EFBFBD>LOGTRACE~LOGFATAL <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>ã<EFBFBD><C3A3>ϵ籣<CFB5>棩");
|
|||
|
|
log_info("HISTORY - <20><>ӡ<EFBFBD><D3A1><EFBFBD><EFBFBD> 10 <20><><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD><EFBFBD>¼<EFBFBD><C2BC>ԭ<EFBFBD><D4AD>+<2B><><EFBFBD><EFBFBD>ʱ<EFBFBD><CAB1><EFBFBD><EFBFBD>");
|
|||
|
|
log_info("HELP - <20><>ʾ<EFBFBD><CABE><EFBFBD><EFBFBD><EFBFBD><EFBFBD>");
|
|||
|
|
log_info("========= END =========");
|
|||
|
|
}
|
|||
|
|
else {
|
|||
|
|
log_warn("> BT: δ֪<CEB4><D6AA><EFBFBD><EFBFBD> %s", cmd);
|
|||
|
|
}
|
|||
|
|
}
|