Merge "[Feature][MD310][task-view-882][LCD] Added the scan to connect display and changed the version number to two-line display"
diff --git a/lynq/MD310/ap/app/fota_upi/src/upi_led.c b/lynq/MD310/ap/app/fota_upi/src/upi_led.c
new file mode 100755
index 0000000..2ed298d
--- /dev/null
+++ b/lynq/MD310/ap/app/fota_upi/src/upi_led.c
@@ -0,0 +1,313 @@
+/**
+* @file upi_led.c
+* @brief ÁÁµÆÏà¹Ø½Ó¿Ú
+*
+* Copyright (C) 2017 Sanechips Technology Co., Ltd.
+* @author
+*
+*/
+
+
+/*******************************************************************************
+ * Include header files *
+ ******************************************************************************/
+#define _GNU_SOURCE
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <string.h>
+
+#include "upi_led.h"
+#include "update.h"
+
+
+// nv½Ó¿ÚÐèÒª
+#include "softap_api.h"
+
+#include "upi_cmd.h"
+#include "zxic_fs_interface.h"
+
+
+
+/*******************************************************************************
+ * Macro definitions *
+ ******************************************************************************/
+// LEDµÆÃû³Æ¶¨Òå
+#define WL_LED "/sys/class/leds/wl_led_en/"
+
+#define SIGNAL_1_LED "/sys/class/leds/signal_status1_led/"
+#define SIGNAL_2_LED "/sys/class/leds/signal_status2_led/"
+#define SIGNAL_3_LED "/sys/class/leds/signal_status3_led/"
+
+#define WIFI_RED_LED "/sys/class/leds/wifi_r_led/"
+#define WIFI_GREEN_LED "/sys/class/leds/wifi_g_led/"
+#define WIFI_BLUE_LED "/sys/class/leds/wifi_b_led/"
+
+
+#define BATTERY_RED_LED "/sys/class/leds/battery_r_led/"
+#define BATTERY_GREEN_LED "/sys/class/leds/battery_g_led/"
+#define BATTERY_BLUE_LED "/sys/class/leds/battery_b_led/"
+
+#define SMS_LED "/sys/class/leds/sms_led/"
+
+#define MODEM_RED_LED "/sys/class/leds/modem_r_led/"
+#define MODEM_GREEN_LED "/sys/class/leds/modem_g_led/"
+#define MODEM_BLUE_LED "/sys/class/leds/modem_b_led/"
+
+// LEDµÆ²Ù×÷¶¨Òå
+#define BRIGHTNESS "/brightness" // µÆ×Ü¿ª¹Ø
+#define BLINKSWITDH "/trigger" // ÉÁ˸¿ª¹Ø
+#define BLINKTIMEON "/delay_on" // ÉÁ˸ÁÁµÆÊ±¼ä(ms)
+#define BLINKTIMEOFF "/delay_off" // ÉÁ˸ÃðµÆÊ±¼ä(ms)
+
+
+#define LEDON (1)
+#define LEDOFF (0)
+
+#define LEDBLINKON "timer"
+#define LEDBLINKOFF "none"
+
+#define FOTA_LED_BLINK_ON_MS (300)
+#define FOTA_LED_BLINK_OFF_MS (300)
+
+
+// system command max len
+//#define CMD_MAX_LEN (256)
+
+
+// nv max len
+#define LED_NV_MAX_LEN (256)
+
+
+
+/*******************************************************************************
+ * Type definitions *
+ ******************************************************************************/
+
+typedef enum {
+ SHOW_MODE_UNDEFINE = 0,
+ SHOW_MODE_LED = 1,
+ SHOW_MODE_LCD,
+ SHOW_MODE_ALL
+} E_zShowMode;
+
+
+/*******************************************************************************
+ * Global variable declarations *
+ ******************************************************************************/
+
+E_zShowMode g_show_mode = SHOW_MODE_UNDEFINE;
+
+/*******************************************************************************
+ * Static function declarations *
+ ******************************************************************************/
+static int write_led_file(const char* filepath, const char* content)
+{
+ int ret = -1;
+ int fd = -1;
+
+ fd = open(filepath, O_RDWR|O_TRUNC);
+ if (fd < 0)
+ {
+ upi_err("open file fail [%s], error:%d[%s]\n", filepath, errno, strerror(errno));
+ return -1;
+ }
+
+ ret = upi_writen(fd, content, strlen(content));
+ if (ret < 0)
+ {
+ upi_err("write fail ,file path:%s , error:%d[%s]\n", filepath, errno, strerror(errno));
+ close(fd);
+ return -1;
+ }
+ else
+ {
+ upi_log("write counts: %d\n", ret);
+ }
+
+ ret = close(fd);
+ if(ret < 0)
+ {
+ upi_err("close file fail [%s], error:%d[%s]\n", filepath, errno, strerror(errno));
+ return -1;
+ }
+
+ return 0;
+}
+
+
+/**
+ * @brief ÉèÖÃLEDµÈÁÁÃð¼°ÉÁ˸
+ * @param ledName: LEDµÆÃû³Æ
+ * @param brightNess: µÆ×Ü¿ª¹Ø£¬0-¹Ø£¬1-¿ª
+ * @param blinkSwitch: ÉÁ˸¿ª¹Ø£¬0-¹Ø£¬1-¿ª
+ * @param onMs: ÉÁ˸ÁÁµÆºÁÃëÊý
+ * @param offMs: ÉÁ˸ÃðµÆºÁÃëÊý
+ */
+static int led_handle(const char *ledName, unsigned int brightNess,
+ const char * blinkSwitch, unsigned int onMs, unsigned int offMs)
+{
+ char content[128] = {0};
+ char path[256] = {0};
+ int ret = -1;
+ int ret_1 = -1;
+ int ret_2 = -1;
+ int ret_3 = -1;
+
+ if (NULL == ledName) {
+ upi_err("set_led_blink NULL parameter ledName\n");
+ return -1;
+ }
+
+ if (0 != access(ledName, F_OK)) {
+ upi_err("set_led_blink led device [%s] does not exist!\n", ledName);
+ return -2;
+ }
+
+ switch (brightNess) {
+ case 0:
+ {
+ memset(content, 0, sizeof(content));
+ memset(path, 0, sizeof(path));
+ snprintf(content, sizeof(content), "%d", brightNess);
+ snprintf(path, sizeof(path), "%s%s", ledName, BRIGHTNESS);
+ ret = write_led_file(path, content);
+ upi_log("set_led_blink set [%s] off :%d \n", ledName, ret);
+ break;
+ }
+
+ case 1:
+ {
+ memset(content, 0, sizeof(content));
+ memset(path, 0, sizeof(path));
+ snprintf(content, sizeof(content), "%s", blinkSwitch);
+ snprintf(path, sizeof(path), "%s%s", ledName, BLINKSWITDH);
+ ret_1 = write_led_file(path, content);
+
+ memset(content, 0, sizeof(content));
+ memset(path, 0, sizeof(path));
+ snprintf(content, sizeof(content), "%d", onMs);
+ snprintf(path, sizeof(path), "%s%s", ledName, BLINKTIMEON);
+ ret_2 = write_led_file(path, content);
+
+ memset(content, 0, sizeof(content));
+ memset(path, 0, sizeof(path));
+ snprintf(content, sizeof(content), "%d", offMs);
+ snprintf(path, sizeof(path), "%s%s", ledName, BLINKTIMEOFF);
+ ret_3 = write_led_file(path, content);
+
+ upi_log("set_led_blink set [%s] blink: %dms on, %dms off, ret=%d|%d|%d \n", ledName, onMs, offMs, ret_1, ret_2, ret_3);
+ ret = (ret_1 & ret_2 & ret_3);
+
+ break;
+ }
+
+ default:
+ {
+ upi_err("set_led_blink invalid parameter: MUST BE 0 or 1\n");
+ ret = -1;
+ break;
+ }
+ }
+
+
+ return ret;
+}
+
+
+
+
+/*******************************************************************************
+ * Global function declarations *
+ ******************************************************************************/
+
+/**
+ * @brief ÉèÖôò¿ªupiÉý¼¶ledÉÁµÆ
+ * @note ÉèÖÃÉÁµÆÇ°ÐèÒªÏÈ¹Ø±ÕÆäËüÎÞ¹ØÉÁµÆ
+ */
+void set_upi_leds_on(void)
+{
+ int i = 0;
+ char* led_list[] = {MODEM_GREEN_LED, WIFI_GREEN_LED, BATTERY_GREEN_LED, NULL};
+ int led_list_len = sizeof(led_list) / sizeof(char*);
+
+
+ // ϨÃðÆäËûLEDµÆ
+ led_handle(WIFI_RED_LED, LEDOFF, LEDBLINKOFF, 0, 0);
+ led_handle(WIFI_GREEN_LED, LEDOFF, LEDBLINKOFF, 0, 0);
+ led_handle(WIFI_BLUE_LED, LEDOFF, LEDBLINKOFF, 0, 0);
+
+ led_handle(BATTERY_RED_LED, LEDOFF, LEDBLINKOFF, 0, 0);
+ led_handle(BATTERY_GREEN_LED, LEDOFF, LEDBLINKOFF, 0, 0);
+ led_handle(BATTERY_BLUE_LED, LEDOFF, LEDBLINKOFF, 0, 0);
+
+ led_handle(MODEM_RED_LED, LEDOFF, LEDBLINKOFF, 0, 0);
+ led_handle(MODEM_GREEN_LED, LEDOFF, LEDBLINKOFF, 0, 0);
+ led_handle(MODEM_BLUE_LED, LEDOFF, LEDBLINKOFF, 0, 0);
+
+ // FOTAÉý¼¶¹ý³ÌÖÐLEDµÆÉÁ˸ÓÅÏȼ¶ 300msÁÁ£¬300msÃð:
+ // 1. modemÀ¶µÆ 2. batteryÀ¶µÆ 3. wifiÀ¶µÆ 4. batteryÂÌµÆ 5. modemÂ̵Æ
+ for (i = 0; i < led_list_len; i++) {
+ if (NULL == led_list[i]) {
+ break;
+ }
+
+ if (0 == led_handle(led_list[i], LEDON, LEDBLINKON, FOTA_LED_BLINK_ON_MS, FOTA_LED_BLINK_OFF_MS)) {
+ upi_err("FOTA set led blink success, current led device file is %s! \n", led_list[i]);
+ return;
+ }
+ }
+
+ upi_log("FOTA set led blink failed! No blue and green led!\n");
+}
+
+/**
+ * @brief ÉèÖùرÕupiÉý¼¶ledÉÁµÆ
+ * @note
+ */
+void set_upi_leds_off(void)
+{
+ led_handle(WIFI_BLUE_LED, LEDOFF, LEDBLINKOFF, 0, 0);
+ led_handle(WIFI_GREEN_LED, LEDOFF, LEDBLINKOFF, 0, 0);
+ led_handle(WIFI_RED_LED, LEDOFF, LEDBLINKOFF, 0, 0);
+ led_handle(BATTERY_RED_LED, LEDOFF, LEDBLINKOFF, 0, 0);
+ led_handle(BATTERY_GREEN_LED, LEDOFF, LEDBLINKOFF, 0, 0);
+ led_handle(BATTERY_BLUE_LED, LEDOFF, LEDBLINKOFF, 0, 0);
+ led_handle(MODEM_GREEN_LED, LEDOFF, LEDBLINKOFF, 0, 0);
+ led_handle(MODEM_BLUE_LED, LEDOFF, LEDBLINKOFF, 0, 0);
+ led_handle(MODEM_RED_LED, LEDOFF, LEDBLINKOFF, 0, 0);
+}
+
+
+
+/**
+ * @brief »ñÈ¡ÏÔʾģʽ£¬Ö÷ÒªÅжÏÊÇ·ñÐèÒªLED
+ * @note
+ */
+
+int init_show_mode()
+{
+#if 0
+ char led_nv_value[LED_NV_MAX_LEN] = {0};
+
+ //ÉèÖÃmmiÏÔʾģʽȫ¾Ö±äÁ¿
+ cfg_get_item("mmi_showmode", led_nv_value, sizeof(led_nv_value));
+ if (0 == strcmp(led_nv_value, "led")) {
+ g_show_mode = SHOW_MODE_LED;
+ } else if (0 == strcmp(led_nv_value, "lcd")) {
+ g_show_mode = SHOW_MODE_LCD;
+ } else if (0 == strcmp(led_nv_value, "all")) {
+ g_show_mode = SHOW_MODE_ALL;
+ } else {
+ assert(0);
+ return -1;
+ }
+#endif
+
+ return 0;
+
+}
+
+
+
+
diff --git a/lynq/MD310/ap/app/zte_comm/at_ctl/src/atconfig/extat_softap_register.c b/lynq/MD310/ap/app/zte_comm/at_ctl/src/atconfig/extat_softap_register.c
index 23ee0c7..b00ad68 100755
--- a/lynq/MD310/ap/app/zte_comm/at_ctl/src/atconfig/extat_softap_register.c
+++ b/lynq/MD310/ap/app/zte_comm/at_ctl/src/atconfig/extat_softap_register.c
@@ -159,16 +159,16 @@
return AT_END;
memset(opt, 0 , sizeof(restart_info));
void *p[2] = {&opt->action, &opt->subaction};
-
+
parse_param2("%d,%d", at_paras, p);
-
+
if (3 != strlen(at_paras) || opt->action < Restart_Action_RESTART || opt->action > Restart_Action_RESET || opt->subaction < Operate_By_MCU || opt->subaction > Operate_By_SOC)
{
*res_msg = at_err_build(ATERR_PARAM_INVALID);
*res_msglen = strlen(*res_msg);
return AT_END;
}
-
+
printf("ext_restart_req action=%d,subaction=%d ,len=%d \n",opt->action, opt->subaction,strlen(at_paras));
*res_msg = opt;
*res_msglen = sizeof(restart_info);
@@ -246,12 +246,12 @@
snprintf(nv_atv,12,"%d",g_atv);
snprintf(nv_atq,12,"%d",g_atq);
snprintf(nv_at_d,12,"%d",g_at_d);
-
+
cfg_set("at_atv", nv_atv);
cfg_set("at_atq", nv_atq);
cfg_set("at_at_d", nv_at_d);
cfg_save();
-
+
return AT_END;
}
@@ -311,11 +311,11 @@
}
else
sprintf(at_str,"\r\n+CME ERROR: %d\r\n",101);
-
+
}
else
sprintf(at_str,"\r\n+CME ERROR: %d\r\n",102);
-
+
*res_msg = at_str;
return AT_END;
}
@@ -372,7 +372,7 @@
}
else
sprintf(at_str,"\r\n+CME ERROR: %d\r\n",102);
-
+
*res_msg = at_str;
return AT_END;
}
@@ -424,11 +424,11 @@
}
else
sprintf(at_str,"\r\n+CME ERROR: %d\r\n",101);
-
+
}
else
sprintf(at_str,"\r\n+CME ERROR: %d\r\n",102);
-
+
*res_msg = at_str;
return AT_END;
}
@@ -525,23 +525,26 @@
int ext_at_led_func(char *at_paras, void ** res_msg)
{
int i = 0;
- char *led_list[6] = {
+ char *led_list[9] = {
"battery_g_led",
"modem_g_led",
+ "wifi_g_led",
"battery_r_led",
"modem_r_led",
- "wifi_led",
- "modem_b_led",};
- set_led_states(led_list, 0, 6, 0); // turn off all leds
- set_led_states(led_list, 0, 2, 1); // turn on all green leds
+ "wifi_r_led",
+ "battery_b_led",
+ "modem_b_led",
+ "wifi_b_led",};
+ set_led_states(led_list, 0, 9, 0); // turn off all leds
+ set_led_states(led_list, 0, 3, 1); // turn on all green leds
usleep(500000);
- set_led_states(led_list, 0, 2, 0); // turn off all green leds
- set_led_states(led_list, 2, 2, 1); // turn on all red leds
+ set_led_states(led_list, 0, 3, 0); // turn off all green leds
+ set_led_states(led_list, 3, 3, 1); // turn on all red leds
usleep(500000);
- set_led_states(led_list, 2, 2, 0); // turn off all red leds
- set_led_states(led_list, 4, 2, 1); // turn on all blue leds
+ set_led_states(led_list, 3, 3, 0); // turn off all red leds
+ set_led_states(led_list, 6, 3, 1); // turn on all blue leds
usleep(500000);
- set_led_states(led_list, 4, 2, 0); // turn off all blue leds
+ set_led_states(led_list, 6, 3, 0); // turn off all blue leds
return AT_END;
}
@@ -560,7 +563,7 @@
MSG_CMD_WIFI_CFG_PWD_RSP,
ext_wifi_cfg_auth_req, ext_wifi_operate_rsp);
-
+
register_serv_func2("ZRESET",MODULE_ID_MAIN_CTRL,MSG_CMD_RESET_REQUEST,MSG_CMD_RESTART_RSP,ext_reset_req,ext_restart_rsp);//½ö¹©Éú²ú²âÊÔÓÃ
register_serv_func2("ZRESTART=",MODULE_ID_MAIN_CTRL,MSG_CMD_RESTART_REQUEST,MSG_CMD_RESTART_RSP,ext_restart_req,ext_restart_rsp);//ZRESTART=0,0,²ÎÊý1±íʾRESET /RESTART£¬²ÎÊý2±íʾʵ¼ÊÖØÆô²Ù×÷ÊÇ·ñÓɱ¾ºË×Ô¼ºÊµÏÖ
register_serv_func("TC_CONTROL=",MODULE_ID_MAIN_CTRL,ext_tc_control_func);