K01视频通话测试
authordxy15521469561 <1731678236@qq.com>
Sat, 16 Dec 2023 09:47:28 +0000 (17:47 +0800)
committerdxy15521469561 <1731678236@qq.com>
Sat, 16 Dec 2023 09:47:28 +0000 (17:47 +0800)
27 files changed:
2.sdk/Helios_SDK/components/juphoon/lib/libjrtc.a
2.sdk/Helios_SDK/services/microPython/ports/quectel/core/source/camera_capture.c
2.sdk/Helios_SDK/services/microPython/ports/quectel/core/source/camera_preview.c
2.sdk/Helios_SDK/services/microPython/ports/quectel/core/source/camera_scandecode.c
2.sdk/Helios_SDK/services/microPython/ports/quectel/core/source/modVideoCall_juphoon.c
2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/constants.py
2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/main_init.py
2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/protocol.py
2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/alarm.py
2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/appFactoryMode.py
2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/appWechat.py
2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/calculator.py
2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/constants.py
2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/main_init.py
2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/mgr.py
2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/pp_main.py
2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/protocol.py
2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/ui.py
2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/ui_WatchFaceScreen.py
2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/ui_main_menu.py
2.sdk/project/K01/sdk/services/microPython/ports/quectel/core/ui_setting.py
2.sdk/project/K01/sdk/system/platform/ASR_1606/boards/EG810MCN_GA_VOLTE/images/DBG.7z
2.sdk/project/K01/sdk/system/platform/ASR_1606/boards/EG810MCN_GA_VOLTE/libraries/libHeliosAPI.lib
2.sdk/project/K01/sdk/system/platform/ASR_1606/boards/EG810MCN_GA_VOLTE/libraries/ql_common_api.lib
2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/alarm.py
2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/ui.py
2.sdk/project/K5/sdk/services/microPython/ports/quectel/core/ui_setting.py

index 3a835ed..cb42772 100644 (file)
Binary files a/2.sdk/Helios_SDK/components/juphoon/lib/libjrtc.a and b/2.sdk/Helios_SDK/components/juphoon/lib/libjrtc.a differ
index 7173329..2ea8ead 100644 (file)
@@ -47,7 +47,9 @@ WHEN          WHO                     WHAT,WHERE,WHY
 #include "jpeglib.h"
 #include "jpeg_operation.h"
 
+#if MICROPY_QPY_CAMERA_LVGL_PREVIEW
 #include "lvgl.h"
+#endif
 #include "helios_debug.h"
 
 #define CAPTURE_LOG(msg, ...)      custom_log("capture", msg, ##__VA_ARGS__)
@@ -76,6 +78,7 @@ typedef struct _preview_obj_t {
 static preview_obj_t *capture_obj = NULL;
 
 static Helios_CAMConfig camconfig = {0};
+static int camera_angle = CAM_SW_ROTATE_90; // 摄像头旋转角度 
 
 #define CHECK_CMAERA_IS_OPEN (capture_obj->is_open ? TRUE:FALSE)
 
@@ -223,6 +226,7 @@ uint16_t rgb_buffer[128*128] = {0};
 #if MICROPY_QPY_CAMERA_LVGL_PREVIEW
 lv_obj_t *camera_img = NULL;
 int open_capture = 0;
+lv_img_dsc_t camera_img_dsc;
 #endif
 
 char CAM_rotate = 1;  
@@ -233,7 +237,7 @@ STATIC mp_obj_t camera_set_rotate(mp_obj_t self_in,mp_obj_t val1)
     return mp_obj_new_int(1);
 }
 STATIC MP_DEFINE_CONST_FUN_OBJ_2(camera_set_rotate_obj, camera_set_rotate);
-lv_img_dsc_t camera_img_dsc;
+
 void rgb565_decode_handle(void * argv) {
     uint8_t *buff_addr = NULL;
     int ret = -1;
@@ -354,6 +358,17 @@ STATIC mp_obj_t remove_img(mp_obj_t self_in) {
 }
 STATIC MP_DEFINE_CONST_FUN_OBJ_1(remove_img_obj, remove_img);
 #endif
+
+STATIC mp_obj_t mp_capture_set_cam_angle(mp_obj_t self_in, mp_obj_t angle_j) {
+       int cam_angle = mp_obj_get_int(angle_j);
+       if ((cam_angle<CAM_SW_ROTATE_0) || (cam_angle>CAM_SW_ROTATE_270)) {
+               mp_raise_ValueError("Camera rotation Angle is out of range!!!");
+       }
+               
+    camera_angle = mp_obj_get_int(angle_j);
+    return mp_obj_new_int(1);
+}
+STATIC MP_DEFINE_CONST_FUN_OBJ_2(mp_capture_set_cam_angle_obj, mp_capture_set_cam_angle);
 /****************************end add********************************/
 
 STATIC mp_obj_t camera_open(mp_obj_t self_in)
@@ -371,7 +386,6 @@ STATIC mp_obj_t camera_open(mp_obj_t self_in)
                self->is_open = TRUE;
        }
 
-#if MICROPY_QPY_CAMERA_LVGL_PREVIEW
        Helios_ThreadAttr attr = {0};
        if (get_picture_q == 0) {
                get_picture_q = Helios_MsgQ_Create(1, sizeof(uint8_t));
@@ -389,7 +403,9 @@ STATIC mp_obj_t camera_open(mp_obj_t self_in)
             mp_raise_ValueError("create interrupt handle task failed\n");
         }
        }
-#endif
+#if MICROPY_QPY_CAMERA_LVGL_PREVIEW
+       Helios_camera_scandecode_start();
+#endif 
        return mp_obj_new_int(error);
 }
 STATIC MP_DEFINE_CONST_FUN_OBJ_1(camera_capture_open_obj, camera_open);
@@ -503,6 +519,11 @@ STATIC const mp_rom_map_elem_t Preview_locals_dict_table[] = {
        {MP_ROM_QSTR(MP_QSTR_set_img), MP_ROM_PTR(&set_img_obj)},
     {MP_ROM_QSTR(MP_QSTR_remove_img), MP_ROM_PTR(&remove_img_obj)},
 #endif
+       {MP_ROM_QSTR(MP_QSTR_set_cam_angle), MP_ROM_PTR(&mp_capture_set_cam_angle_obj)},
+       { MP_ROM_QSTR(MP_QSTR_CAM_ROTATE_0),        MP_ROM_INT(CAM_SW_ROTATE_0) },
+       { MP_ROM_QSTR(MP_QSTR_CAM_ROTATE_90),        MP_ROM_INT(CAM_SW_ROTATE_90) },
+       { MP_ROM_QSTR(MP_QSTR_CAM_ROTATE_180),        MP_ROM_INT(CAM_SW_ROTATE_180) },
+       { MP_ROM_QSTR(MP_QSTR_CAM_ROTATE_270),        MP_ROM_INT(CAM_SW_ROTATE_270) },
 };
 STATIC MP_DEFINE_CONST_DICT(camCapture_locals_dict, Preview_locals_dict_table);
 
index 0fb9096..713c91c 100644 (file)
@@ -43,7 +43,6 @@ WHEN          WHO                     WHAT,WHERE,WHY
 #if MICROPY_QPY_CAMERA_CAMPREVIEW
 
 #include "helios_camera.h"
-#include "lvgl.h"
 #include "jpeg_operation.h"
 #include "helios_debug.h"
 
index ed96297..2e7dffa 100644 (file)
@@ -56,7 +56,7 @@ WHEN          WHO                     WHAT,WHERE,WHY
 #endif
 
 #ifdef CONFIG_DECODE_QINGYA
-#if !defined(PLAT_ASR) && !defined(PLAT_ASR_1606)
+#if !defined(PLAT_ASR) && !defined(PLAT_ASR_1606) || defined(PLAT_ASR_1609) || defined(PLAT_ASR_1602)
 #include "ql_api_decoder.h"
 #endif
 #endif
@@ -194,7 +194,7 @@ zbar_image_scanner_t *scanner = NULL;
 #endif
 
 #ifdef CONFIG_DECODE_QINGYA
-#if defined(PLAT_ASR) || defined(PLAT_ASR_1606)
+#if defined(PLAT_ASR) || defined(PLAT_ASR_1606) || defined(PLAT_ASR_1609) || defined(PLAT_ASR_1602)
 
 void camDecode(unsigned char* raw, int width, int height) {
 
index d2026d8..19c0fe8 100644 (file)
@@ -50,6 +50,13 @@ static Helios_LCDInitStruct init_data = {0};
 #define YEND 0xD3
 #define PWM_FREQ        10000
 #define PWM_DUTY        0.2
+
+
+#define JRTC_ROTATE_0    (0)
+#define JRTC_ROTATE_90   (90)
+#define JRTC_ROTATE_180  (180)
+#define JRTC_ROTATE_270  (270)
+
 /** 通话错误值 */
 
 struct jrtc_t
@@ -403,7 +410,15 @@ STATIC mp_obj_t mp_jrtc_get_state(void)
 }
 STATIC MP_DEFINE_CONST_FUN_OBJ_0(mp_jrtc_get_state_obj, mp_jrtc_get_state);
 
-
+STATIC mp_obj_t mp_jrtc_set_cam_angle(mp_obj_t angle_j) {
+    int cam_angle = mp_obj_get_int(angle_j);
+       if ((cam_angle<JRTC_ROTATE_0) || (cam_angle>JRTC_ROTATE_270)) {
+               mp_raise_ValueError("Camera rotation Angle is out of range!!!");
+       }
+    _jrtc_cam_angle = cam_angle;
+    return mp_obj_new_int(1);
+}
+STATIC MP_DEFINE_CONST_FUN_OBJ_1(mp_jrtc_set_cam_angle_obj, mp_jrtc_set_cam_angle);
 
 /* 定义的modjrtc本地字典 */
 STATIC const mp_rom_map_elem_t jrtc_globals_table[] = {
@@ -418,6 +433,11 @@ STATIC const mp_rom_map_elem_t jrtc_globals_table[] = {
     {MP_ROM_QSTR(MP_QSTR_remove_img), MP_ROM_PTR(&remove_img_obj)},
     {MP_ROM_QSTR(MP_QSTR_get_state), MP_ROM_PTR(&mp_jrtc_get_state_obj)},
     {MP_ROM_QSTR(MP_QSTR_set_rotate), MP_ROM_PTR(&mp_jrtc_set_rotate_obj)},
+       {MP_ROM_QSTR(MP_QSTR_set_cam_angle), MP_ROM_PTR(&mp_jrtc_set_cam_angle_obj)},
+    { MP_ROM_QSTR(MP_QSTR_CAM_ROTATE_0),        MP_ROM_INT(JRTC_ROTATE_0) },
+       { MP_ROM_QSTR(MP_QSTR_CAM_ROTATE_90),        MP_ROM_INT(JRTC_ROTATE_90) },
+       { MP_ROM_QSTR(MP_QSTR_CAM_ROTATE_180),        MP_ROM_INT(JRTC_ROTATE_180) },
+       { MP_ROM_QSTR(MP_QSTR_CAM_ROTATE_270),        MP_ROM_INT(JRTC_ROTATE_270) },
 };
 
 /* 把modjrtc_globals_table注册到 mp_module_modjrtc_globals里面去 */
index 88b2e6d..5d7ea8d 100644 (file)
@@ -131,6 +131,12 @@ class PROTOCOL:
 
     REMIND_CH_REST_SEND = "REMIND_CH_REST_SEND"
     REMIND_CH_REST_RECV = "REMIND_CH_REST_RECV"
+
+    SLEEP_DATA_SEND = "SleepReport_SEND"
+    SLEEP_DATA_RECV = "SleepReport_RECV"
+
+    SLEEPTIME_SEND = "SLEEPTIME_SEND"
+    SLEEPTIME_RECV = "SLEEPTIME_RECV"
     
 
 class EVENT:
index 5e2b1e8..f326bb5 100644 (file)
@@ -193,6 +193,8 @@ def main_init():
     pcr.add_support(protocol.REMIND_CH_SLEEP_ProtoCol())
     pcr.add_support(protocol.REMIND_CH_HOME_ProtoCol())
     pcr.add_support(protocol.REMIND_CH_REST_ProtoCol())
+    pcr.add_support(protocol.SLEEP_DATA_ProtoCol())
+    pcr.add_support(protocol.SLEEPTIME_ProtoCol())
 
     sm = protocol.SockManager()
     sm.add_support_resolver(pcr)
index 4b36dd9..bdb0178 100644 (file)
@@ -23,7 +23,7 @@ import usys
 
 
 def server_init(server_type = None):
-    #服务器选择1,防走丢,2大锤,3三基同创,4童信,5云米,6荣为
+    #服务器选择1,防走丢,2大锤,3三基同创,4童信,5云米,6荣为 8:ds未知 dey.hinwatch. com:9968  9:183.62.239.121:31869
     if server_type == None:
         server_type = 1
     #EventMesh.debug_log("server_init:server_type:{}".format(server_type))
@@ -67,6 +67,12 @@ def server_init(server_type = None):
     elif server_type == 99:
         d_server_addr = "lab.xcloudtech.com"
         d_server_port = 9000
+    elif server_type == 8:
+        d_server_addr = "dev.hxinwatch.com"
+        d_server_port = 9968
+    elif server_type == 9:
+        d_server_addr = "183.62.239.121"
+        d_server_port = 31869
 
     return [d_server_addr,d_server_port,d_md5_key,d_PID]
 from queue import Queue
@@ -492,7 +498,8 @@ class PING_ProtoCol(ProtoCol):
 class KA_ProtoCol(ProtoCol):
     """心跳"""
     TYPE = "KA"
-
+    count = 0
+    roll_count = 0
     def send(self, event, msg):
         #"{:04d}-{:02d}-{:02d}".format(*utime.localtime()[0:3])
         #[XT*YYYYYYYYYYYYYYY*LEN*KA,日期,步数,翻滚次数,电量百分数,车载里程数(km)] 实例:[XT*334588000000156*0014*KA,120414,50,100,100,100.12]
@@ -517,9 +524,39 @@ class KA_ProtoCol(ProtoCol):
         old_step = step
         # step = EventMesh.publish(constants.EVENT.GET_STEP)[0]
         # 电池电量百分比 
+        
         bat_tmp = EventMesh.publish("screen_get_battery")
+        sleep_time = EventMesh.publish("get_storage_config","sleep_time")
+        if sleep_time != None:
+            if len(sleep_time) != 0:
+                hour = utime.localtime()[3]
+                min = utime.localtime()[4]
+                cur_time = hour*60+min
+                start_hour = int(sleep_time["start_hour"])
+                start_min = int(sleep_time["start_min"])
+                start_total = start_hour*60+start_min
+
+                end_hour = int(sleep_time["end_hour"])
+                end_min = int(sleep_time["end_min"])
+                end_total = end_hour*60+end_min
+                # EventMesh.debug_log("ka roll_:",hour,min,cur_time,start_total,end_total)
+                if cur_time >= start_total and cur_time <= end_total:
+                    self.roll_count = int(hour)
+                    if self.roll_count == 0:
+                        self.roll_count+=1
+                else:
+                    self.roll_count = 0
+            else:
+                self.roll_count = 0
+        else:
+            self.roll_count = 0
+
+
+        # EventMesh.debug_log("ka roll_count:",roll_count)
+
+        
         battery_caption =  bat_tmp[1]
-        send_data = "KA,%s,%d,%d,%d"%(date,step,0,battery_caption)
+        send_data = "KA,%s,%d,%d,%d"%(date,step,self.roll_count,battery_caption)
         send_len = len(send_data)
 
         send_data = self.PID+"*%s*%04X*%s"%(self.imei,send_len,send_data)
@@ -2597,8 +2634,87 @@ class WLKEY_ProtoCol(ProtoCol):#白名单开关
         
 
         EventMesh.publish(constants.PROTOCOL.WLKEY_SEND) 
+# 终端发送:
+# [XT*YYYYYYYYYYYYYYY*LEN*SLEEP_DATA,清醒时间(分钟),浅睡时间(分钟),深睡时间(分钟),日期(年月日)]
+# 实例: [XT*334588000000156*0004*SLEEP_DATA,120,240,360,20221008]
+# 实例表示:上传睡眠数据
+#[XT*334588000000156*0010*SleepReport,2022-02-09,80,2,532,164,164,25,25,25,25,21:45-0-164-155-3,22:00-1-162-155-0,22:15-2-162-155-0]
+class SLEEP_DATA_ProtoCol(ProtoCol):#睡眠时间
+    """
+    白名单开关
+    [XT*YYYYYYYYYYYYYYY*LEN*WLKEY,ONOFF]  ONOFF: 1:开启,0:关闭,2:30秒后自动接听。
+    实例:[XT*334588000000156*0008*WLKEY,1]
+    终端回复
+    [XT*YYYYYYYYYYYYYYY*LEN*WLKEY]
+    实例:[XT*334588000000156*0006*WLKEY]
+    """
+    TYPE = "SleepReport"
+    
+    def send(self, event, msg):
+        send_data = self.PID+"*%s*0000b*SleepReport"%(self.imei)
+        MD5_SIGN = self.pack_MD5_head(send_data)
+        data = "[%s%s,%s]"%(str(MD5_SIGN),send_data,msg)
+        EventMesh.debug_log("SLEEP_DATA:send:%s"%(data))
+        # 通过socket发送到服务器端
+        EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND, data)
+
+    def recv(self, event, msg):
+
+        EventMesh.debug_log("SLEEP_DATA!!!!!!!!!")
+        # msg = msg[1:-1]
+        # msg_tmp = msg.decode('ascii')
+        # msg_data = msg_tmp.split(',')
+        # EventMesh.debug_log("WLKEY_ProtoCol".format(msg_data[1]))
+        # EventMesh.publish("set_storage_config",["WLKEY",msg_data[1]])
+        
+
+        # EventMesh.publish(constants.PROTOCOL.WLKEY_SEND) 
+
+class SLEEPTIME_ProtoCol(ProtoCol):#睡眠时间
+    """
+    白名单开关
+    [XT*YYYYYYYYYYYYYYY*LEN*WLKEY,ONOFF]  ONOFF: 1:开启,0:关闭,2:30秒后自动接听。
+    实例:[XT*334588000000156*0008*WLKEY,1]
+    终端回复
+    [XT*YYYYYYYYYYYYYYY*LEN*WLKEY]
+    实例:[XT*334588000000156*0006*WLKEY]
+    """
+    TYPE = "SLEEPTIME"
+    
+    def send(self, event, msg):
+        send_data = self.PID+"*%s*00009*SLEEPTIME"%(self.imei)
+        MD5_SIGN = self.pack_MD5_head(send_data)
+        data = "[%s%s]"%(str(MD5_SIGN),send_data)
+        EventMesh.debug_log("SLEEPTIME:send:%s"%(data))
+        # 通过socket发送到服务器端
+        EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND, data)
+
+    def recv(self, event, msg):
+        # 实例:[XT*5678901234*0014*SLEEPTIME,23:30-7:30]
+        EventMesh.debug_log("SLEEPTIME!!!!!!!!!")
+        msg = msg[1:-1]
+        msg_tmp = msg.decode('ascii')
+        msg_data = msg_tmp.split(',')[1]
+        data = {}
+        if len(msg_data) == 0:
+            EventMesh.publish("set_storage_config",["sleep_time",data])
+            pass
+        else:
+            sleep_start = msg_data.split("-")[0]
+            sleep_end = msg_data.split("-")[1]
+            start_hour = int(sleep_start.split(":")[0])
+            start_min = int(sleep_start.split(":")[1])
+
+            end_hour = int(sleep_end.split(":")[0])
+            end_min = int(sleep_end.split(":")[1])
 
+            data = {"start_hour":start_hour,"start_min":start_min,"end_hour":end_hour,"end_min":end_min}
+            # EventMesh.debug_log("SLEEPTIME".format(data))
+            EventMesh.publish("set_storage_config",["sleep_time",data])
+            # sleep_time = EventMesh.publish("get_storage_config","sleep_time")
+            # EventMesh.debug_log("sleep_time:{}".format(sleep_time))
 
+        EventMesh.publish(constants.PROTOCOL.SLEEPTIME_SEND) 
 
 class ProtoColResolver(object):
     def __init__(self):
index 7039939..b27a855 100644 (file)
@@ -363,7 +363,7 @@ class ClockManager(Abstract):
             alarm_list[idx]["enabled"] = False
             with open("/usr/static/storage_file/alarm_msg.json", 'w+',encoding='utf-8') as fd:
                 ujson.dump(alarm_list,fd)
-        EventMesh.publish("set_rtc_alarm")
+        
         #设置下一个闹钟,定时开关机功能
         if 0 :
             msg_data = EventMesh.publish("get_boot_off_time")
@@ -553,11 +553,12 @@ class PopupAlarmScreen(Screen):
     def exit_alarm_page(self,*arges):
         EventMesh.publish("system_sleep_rest")
         self.alarm_count+=1
-        if self.alarm_count > 5*60:
+        if self.alarm_count > 100:
             self.alarm_count = 0
             self.aud.stop()
             self.timer.stop()
-            EventMesh.publish("load_screen", {"screen": "main_menu"})
+            EventMesh.publish("return_prev_screen")
+            # EventMesh.publish("load_screen", {"screen": "main_menu"})
             return
         self.aud.play(1, 1, 'U:/static/R_VOLUME_SET_1.mp3')  #播放声音
     
@@ -568,35 +569,43 @@ class PopupAlarmScreen(Screen):
 
     def done_left_to_right(self):
         self.close_timer()
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
+        EventMesh.publish("return_prev_screen")
+        # EventMesh.publish("load_screen", {"screen": "main_menu"})
 
     def done_right_to_left(self):
         self.close_timer()
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
+        EventMesh.publish("return_prev_screen")
+        # EventMesh.publish("load_screen", {"screen": "main_menu"})
 
     def done_bottom_to_top(self):
         self.close_timer()
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
+        EventMesh.publish("return_prev_screen")
+        # EventMesh.publish("load_screen", {"screen": "main_menu"})
 
     def done_top_to_bottom(self):
         self.close_timer()
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
+        EventMesh.publish("return_prev_screen")
+        # EventMesh.publish("load_screen", {"screen": "main_menu"})
 
     def done_return(self):
         self.close_timer()
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
+        EventMesh.publish("return_prev_screen")
+        # EventMesh.publish("load_screen", {"screen": "main_menu"})
                
     def done_click(self):
         self.close_timer()
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
+        EventMesh.publish("return_prev_screen")
+        # EventMesh.publish("load_screen", {"screen": "main_menu"})
 
     def btn1_release(self):
         self.close_timer()
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
+        EventMesh.publish("return_prev_screen")
+        # EventMesh.publish("load_screen", {"screen": "main_menu"})
 
     def btn8_press(self):
         self.close_timer()
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
+        EventMesh.publish("return_prev_screen")
+        # EventMesh.publish("load_screen", {"screen": "main_menu"})
 
 #闹钟列表
 style_common_pressed =  lv.style_t()
@@ -656,7 +665,7 @@ class ClkListScreen(Screen):
             _btn.add_style(alarm_main_default, lv.PART.MAIN|lv.STATE.DEFAULT)
             _btn.add_flag(lv.obj.FLAG.CLICKABLE)
             _btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.edit_alarm(e)),
-                                    lv.EVENT.CLICKED, None)
+                                    lv.EVENT.SHORT_CLICKED, None)
             
             _btn_label1 = lv.label(_btn)
             _btn_label2 = lv.label(_btn)
@@ -669,43 +678,41 @@ class ClkListScreen(Screen):
 
     def initialization(self): 
         EventMesh.publish("read_alarminjson")
-        EventMesh.publish("set_rtc_alarm")
         print("n闹钟列表初始化!!")
         self.alarm_draw_btn()
         
     def update_show_info(self,event,msg):
-        EventMesh.publish("read_alarminjson")
+        # EventMesh.publish("read_alarminjson")
         self.timer.start(1*1000,0,self.delay_update)
     def delay_update(self,*agrs):
-        EventMesh.publish("set_rtc_alarm")
+        
         self.alarm_draw_btn()
 
 
     def alarm_draw_btn(self):
-        global alarm_list 
-        self.clock_list = alarm_list  
-        IFEXIST = ql_fs.path_exists("/usr/static/storage_file/alarm_msg.json")    
-        if IFEXIST == True:
-            if self.clock_list:
+        get_alarm_data = EventMesh.publish("get_storage_config","normal_alarm")  
+        if get_alarm_data != None and get_alarm_data != []:
+            if len(get_alarm_data) != 0:
 
                 no_add_alarm.add_flag(lv.obj.FLAG.HIDDEN)
 
                 num = 0
                 count = 0
-                clock_nums = len(self.clock_list)-2#3-2 = 1 0 
+                clock_nums = len(get_alarm_data)#3-2 = 1 0 
                 # for i ,each in enumerate(self.clock_list):
-                for i in range(0,self.MXA_clk_num):
+                i=0
+                for i in range(self.MXA_clk_num):
                     if i >= clock_nums:
                         self.contact_detail_listt_dict[i]["_btn"].add_flag(lv.obj.FLAG.HIDDEN)
                         continue
-                    each = self.clock_list[2+i]
-                    num = each["idx"]
+                    hour = get_alarm_data[i]["hour"]
+                    min = get_alarm_data[i]["min"]
+
+                    # repeart = get_alarm_data[i]["repeart"]
+
+                    day = get_alarm_data[i]["day"]
+                    
 
-                    if count >= 3:
-                        break
-                    repeart = each["repeart"]#
-                    if repeart >= 10:
-                        continue
                     print("alarm!!!!!!!!!!")
                     #_btn = lv.btn(self.alarm_show_list)
                     self.contact_detail_listt_dict[count]["_btn"].set_size(120,35)
@@ -714,24 +721,23 @@ class ClkListScreen(Screen):
                     #_btn_label1 = lv.label(_btn)
                     self.contact_detail_listt_dict[count]["_btn_label1"].set_pos(20, 0)
                     self.contact_detail_listt_dict[count]["_btn_label1"].set_size(0, 0)
-                    self.contact_detail_listt_dict[count]["_btn_label1"].set_text(str(num))
+                    self.contact_detail_listt_dict[count]["_btn_label1"].set_text(" ")
 
                     #_btn_label2 = lv.label(_btn)
                     self.contact_detail_listt_dict[count]["_btn_label2"].set_pos(10, 0)
                     self.contact_detail_listt_dict[count]["_btn_label2"].set_size(97, 20)
-                    self.contact_detail_listt_dict[count]["_btn_label2"].set_text("%02d" % each["hour"] + ":"+"%02d" % each["minute"])
+                    self.contact_detail_listt_dict[count]["_btn_label2"].set_text("%02d" % hour + ":"+"%02d" %min)
                     self.contact_detail_listt_dict[count]["_btn_label2"].set_style_text_align(lv.TEXT_ALIGN.LEFT, 0)
 
-                    _new_list = sorted(each["days"])
-                    repeart = each["repeart"]
+                    _new_list = sorted(day)
                     _output = [self.weekdays_list[x] for x in _new_list]
                     #_btn_label3 = lv.label(_btn)
                     self.contact_detail_listt_dict[count]["_btn_label3"].set_pos(10, 18)
                     self.contact_detail_listt_dict[count]["_btn_label3"].set_size(128-8, 20)
-                    print("_new_list:{} repeart:{}".format(_new_list,repeart))
-                    if repeart == 1:
+                    print("_new_list:{}".format(_new_list))
+                    if day == []:
                         self.contact_detail_listt_dict[count]["_btn_label3"].set_text("一次")
-                    elif repeart == 2:
+                    elif len(day) > 6:
                         self.contact_detail_listt_dict[count]["_btn_label3"].set_text("每天")
                     else:
                         self.contact_detail_listt_dict[count]["_btn_label3"].set_text(",".join(_output))
@@ -791,7 +797,8 @@ class ClkListScreen(Screen):
     #     print("sw_event_cb ~~~")
 
     def done_return(self):
-        EventMesh.publish("load_screen", {"screen": "toolbox"})
+        EventMesh.publish("return_prev_screen")
+        # EventMesh.publish("load_screen", {"screen": "toolbox"})
                
     def btn1_release(self):
         EventMesh.publish("load_screen", {"screen": "toolbox"})
@@ -809,9 +816,9 @@ class ClkListScreen(Screen):
 #     def __init__(self):
 #         super().__init__()
 #         self.meta = clk_edit_screen
-#         clk_edit_weekday.add_event_cb(lambda e: EventMesh.callback_wrapper(self.edit_weekday(e)), lv.EVENT.CLICKED, None)
-#         clk_edit_time.add_event_cb(lambda e: EventMesh.callback_wrapper(self.edit_time(e)), lv.EVENT.CLICKED, None)
-#         clk_delete_alarm.add_event_cb(lambda e: EventMesh.callback_wrapper(self.delete_alarm(e)), lv.EVENT.CLICKED, None)
+#         clk_edit_weekday.add_event_cb(lambda e: EventMesh.callback_wrapper(self.edit_weekday(e)), lv.EVENT.SHORT_CLICKED, None)
+#         clk_edit_time.add_event_cb(lambda e: EventMesh.callback_wrapper(self.edit_time(e)), lv.EVENT.SHORT_CLICKED, None)
+#         clk_delete_alarm.add_event_cb(lambda e: EventMesh.callback_wrapper(self.delete_alarm(e)), lv.EVENT.SHORT_CLICKED, None)
 
 #     def initialization(self):  
 #         print("hahahahh",self.meta_info["idx"])
index dd97ddb..7d9f113 100644 (file)
@@ -85,9 +85,9 @@ class FactoryModeScreen(Screen):
     def __init__(self):
         super().__init__()
         self.meta = factorymode_screen
-        factorymode_location.add_event_cb(lambda e: EventMesh.callback_wrapper(self.load_screen(e, {"screen": "FactoryModeLocation"})), lv.EVENT.CLICKED, None)
-        factorymode_bat_test.add_event_cb(lambda e: EventMesh.callback_wrapper(self.load_screen(e, {"screen": "FactoryModeBatTest"})), lv.EVENT.CLICKED, None)
-        factorymode_step.add_event_cb(lambda e: EventMesh.callback_wrapper(self.load_screen(e, {"screen": "FactoryModestep"})), lv.EVENT.CLICKED, None)
+        factorymode_location.add_event_cb(lambda e: EventMesh.callback_wrapper(self.load_screen(e, {"screen": "FactoryModeLocation"})), lv.EVENT.SHORT_CLICKED, None)
+        factorymode_bat_test.add_event_cb(lambda e: EventMesh.callback_wrapper(self.load_screen(e, {"screen": "FactoryModeBatTest"})), lv.EVENT.SHORT_CLICKED, None)
+        factorymode_step.add_event_cb(lambda e: EventMesh.callback_wrapper(self.load_screen(e, {"screen": "FactoryModestep"})), lv.EVENT.SHORT_CLICKED, None)
 
     def done_return(self):
         EventMesh.publish("load_screen", {"screen": "main_menu"})
index 63837fa..086d71f 100644 (file)
@@ -223,7 +223,7 @@ class WechatScreen(Screen):
             wechat_obj.add_flag(lv.obj.FLAG.HIDDEN)
             wechat_btn.add_flag(lv.obj.FLAG.CLICKABLE)
             wechat_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.play_label_cb(e)),
-            lv.EVENT.CLICKED, None)
+            lv.EVENT.SHORT_CLICKED, None)
             self.wechat_list_dict.append({"num":i,"wechat_obj":wechat_obj,"wechat_btn":wechat_btn,"_btn_label1":_btn_label1,"_btn_label2":_btn_label2,"_btn_img":_btn_img})
 
         EventMesh.subscribe("wechat_updata_list_show", self.wechat_updata_list_show)
index 2eda62d..47ca599 100644 (file)
@@ -658,7 +658,8 @@ class calculatorScreen(Screen):
 
 
     def done_return(self):
-        EventMesh.publish("load_screen", {"screen": "toolbox"})
+        EventMesh.publish("return_prev_screen")
+        # EventMesh.publish("load_screen", {"screen": "toolbox"})
 
     def btn1_release(self):
         EventMesh.publish("load_screen", {"screen": "main_menu"})
index 49a6927..657aa31 100644 (file)
@@ -146,6 +146,18 @@ class PROTOCOL:
     RTALK_SEND = "RTALK_SEND"
     RTALK_RECV = "RTALK_RECV"
 
+    JMEMBERS_SEND = "JMEMBERS_SEND"
+    JMEMBERS_RECV = "JMEMBERS_RECV"
+
+    RINGING_SEND = "RINGING_SEND"
+    RINGING_RECV = "RINGING_RECV"
+
+    HANGUP_SEND = "HANGUP_SEND"
+    HANGUP_RECV = "HANGUP_RECV"
+
+    CALLCANCEL_SEND ="CALLCANCEL_SEND"
+    CALLCANCEL_RECV = "CALLCANCEL_RECV"
+
 class EVENT:
     CHANNEL_SOCKET_SEND = "CHANNEL_SOCKET_SEND"
     START_LOCATION = "START_LOCATION" 
index ae05827..bb8465c 100644 (file)
@@ -159,13 +159,15 @@ def main_init():
     ui.add_screen(calculatorScreen())
     ui.add_screen(_ui.cameraScreen())
     ui.add_screen(_ui.cameraalbumScreen())
-    ui.add_screen(_ui.cameraVdieoScreen())
     ui.add_screen(_ui.albumPreviewScreen())
     ui.add_screen(_ui.cameraFullScreen())
     ui.add_screen(_ui.restore_confirmScreen())
     ui.add_screen(_ui.down_Screen())
     ui.add_screen(_ui.up_Screen())
     ui.add_screen(_ui.videolistScreen())
+    ui.add_screen(_ui.VdieoVoiceScreen())
+    ui.add_screen(_ui.VoiceShowScreen())
+    ui.add_screen(_ui.voiceInCallScreen())
 
     from pp_main import allppPopupScreen,delOnePopupScreen,ppListScreen,noppPopupScreen,delppsucessPopupScreen,ppMainScreen,addfaileppPopupScreen,ppMainPopupScreen,addppPopupScreen,addedppPopupScreen,ownaddppPopupScreen
     ui.add_screen(ppMainScreen())
@@ -189,6 +191,8 @@ def main_init():
         TEMP_ProtoCol,DLT_ProtoCol,WT_ProtoCol,UD_ProtoCol,REMIND_ProtoCol, CR_ProtoCol,KA_ProtoCol,FIND_ProtoCol,POWEROFF_ProtoCol,Time_ProtoCol,\
         pp_ProtoCol,ppfriends_ProtoCol,revpp_ProtoCol,reqpp_ProtoCol,delpp_ProtoCol,ProtoColResolver,PHL_ProtoCol,MONITOR_ProtoCol,bootoff_ProtoCol,WDSTART_ProtoCol,LOWBAT_ProtoCol,sosHome_dial_ProtoCol,SockManager,NetManager
     
+    from protocol import CALLCANCEL_ProtoCol,HANGUP_ProtoCol,JMEMBERS_ProtoCol
+
     import mgr as mgr
     print("init7:{}".format(utime.localtime()))
     
@@ -293,10 +297,12 @@ def main_init():
 
     pcr.add_support(JPREG_ProtoCol())
     pcr.add_support(MEMBERS_ProtoCol())
+    pcr.add_support(JMEMBERS_ProtoCol())
     pcr.add_support(AGTALK_ProtoCol())
     pcr.add_support(CALLING_ProtoCol())
     pcr.add_support(RCALLING_ProtoCol())
     pcr.add_support(RTALK_ProtoCol())
+    # pcr.add_support(HANGUP_ProtoCol())
     EventMesh.publish("load_screen", {"screen": "poweron"})
     sm = SockManager()
     sm.add_support_resolver(pcr)
@@ -316,7 +322,7 @@ def main_init():
         if timeSecond != 0:
             next_alarm_time = utime.localtime(timeSecond)
             machine.RTC().datetime((next_alarm_time[0],next_alarm_time[1],next_alarm_time[2],next_alarm_time[6],next_alarm_time[3],next_alarm_time[4],next_alarm_time[5],0))
-    EventMesh.publish("set_rtc_alarm")
+    
    
     
 
index d40ded7..917430f 100644 (file)
@@ -606,6 +606,10 @@ class DeviceInfoManager(Abstract):
         self.class_count = 0
         self.old_temp_time = 0
         self.sim_old_count = 0
+
+        self.normal_oldtotalmin = 0
+        self.normal_flag = 0
+        self.normal_count = 0
         # #print("hsensor.open_heart:%d\r\n"%(self.hsensor.open_heart()))
         print("DeviceInfoManager:3")
         self.i2c0 = I2C(I2C.I2C0, I2C.FAST_MODE)
@@ -1386,8 +1390,74 @@ class DeviceInfoManager(Abstract):
         else:
             # print("self.class_count",self.class_count)
             EventMesh.publish("get_class_in_time_page")
+        self.normal_alarm()
 
     
+      #普通闹钟
+    def normal_alarm(self):
+        date_tmp = utime.localtime()
+        time_tmp = utime.mktime(date_tmp)
+        data = RTC().datetime()
+        hour = data[4]
+        min = data[5]
+
+        week = int(data[3])
+
+        date1 = data[1]
+        date2 = data[2]
+        cur_total_min = int(hour)*60+int(min)
+        # EventMesh.debug_log("self.normal_oldtotalmin",self.normal_oldtotalmin,cur_total_min,self.alarm_flag)
+        if self.normal_oldtotalmin == 0:
+            self.normal_oldtotalmin = cur_total_min #549
+        if self.normal_oldtotalmin != cur_total_min: #上次响过的闹钟分钟数不等于当前的分钟数据需要清零否则下一个不会响铃
+            if self.normal_flag == 1:
+                self.normal_flag = 0
+                self.normal_count = 0
+        normal_alarm = []
+        normal_alarm = EventMesh.publish("get_storage_config","normal_alarm")
+        # EventMesh.debug_log("sleep info2",sleep,cur_total_min)
+        if self.normal_flag == 1:#表示闹钟响过清除标志
+            self.normal_count+=1
+            if self.normal_count > 6:
+                self.normal_count = 0
+                self.normal_flag = 0
+        if normal_alarm != None:
+            if len(normal_alarm) != 0 and normal_alarm != []:
+                j = 0
+                for i in range(len(normal_alarm)):
+                    # EventMesh.debug_log("normal_alarm normal_alarm 33",normal_alarm,j)
+                    normalalarm_hour = normal_alarm[j]["hour"]
+                    normalalarm_min = normal_alarm[j]["min"]
+                    normalalarm_day = normal_alarm[j]["day"]
+                    normalalarm_enale = normal_alarm[j]["enable"]
+                    normalalarm_totalmin = int(normalalarm_hour)*60+int(normalalarm_min)
+                    # EventMesh.debug_log("wake alarm",normalalarm_hour,sleep_min,sleep_day,sleep_enale,sleep_totalmin,week)
+                    if normalalarm_day == []:#单次闹钟只响一次
+                        if normalalarm_enale != 0:
+                            if normalalarm_totalmin == cur_total_min:#14:00
+                                self.normal_count = 0
+                                self.normal_flag  = 0    
+                                normal_alarm[j]["enable"] = 0
+                                
+                                # EventMesh.debug_log("wakeup wakeup1",sleep,j)
+                                EventMesh.publish("set_storage_config",["normal_alarm",normal_alarm])#删除之后重新保存
+                                EventMesh.publish("push_update_alarm_show")
+                                # new_data=EventMesh.publish("get_storage_config","normal_alarm")
+                                # print("normal wakeup1",new_data,j)
+                                EventMesh.publish("load_screen", {"screen": "popup_alarm"})                                                                                                                                           
+                                break
+                    else:
+                        if normalalarm_enale != 0 and (week in normalalarm_day):#记录响过的时间分钟数
+                            if normalalarm_totalmin == cur_total_min and self.normal_flag == 0:#14:00
+                                self.normal_flag  = 1
+                                self.normal_count = 0
+                                self.normal_oldtotalmin = normalalarm_totalmin
+                                EventMesh.publish("load_screen", {"screen": "popup_alarm"})                                                                                                                                                 
+                                break
+                    j+=1
+
+
+
       
     def get_sim_Status(self, event, msg):
         return sim.getStatus()
@@ -1577,7 +1647,8 @@ class DeviceInfoManager(Abstract):
     def get_imei(self, topic, msg):
         if not self.imei:
             self.imei = modem.getDevImei()
-        self.imei = "876226002021444"
+        # self.imei = "876226002021444"
+        # self.imei = "860132060129194"
         return self.imei
 
     def get_cid(self, topic, msg):
@@ -2763,9 +2834,9 @@ class getStorageDataManager(Abstract):#获取内存数据
             # print("set_storage_key_data2:{}".format(self.config_data[msg[0]]))
             EventMesh.publish("publish_message_event_ui",{"func":self.set_storage_save,"data":0})
     def set_storage_save(self, data): 
-            print("set_storage_key_data2:{}".format(self.config_data))
-            with open("/usr/static/storage_file/config.json",'w+',encoding="utf-8") as fd:
-                ujson.dump(self.config_data,fd)
+            # print("set_storage_key_data2:{}".format(self.config_data))
+        with open("/usr/static/storage_file/config.json",'w+',encoding="utf-8") as fd:
+            ujson.dump(self.config_data,fd)
     def get_storage_data(self, event, msg): 
         # print("get_storage_data:{}".format(self.config_data))
         return self.config_data 
@@ -2773,7 +2844,7 @@ class getStorageDataManager(Abstract):#获取内存数据
         # print("get_storage_key_data1:{}".format(msg))
         b = msg in self.config_data.keys()
         if b == True:
-            print("get_storage_key_data2:{}".format(self.config_data[msg]))
+            # print("get_storage_key_data2:{}".format(self.config_data[msg]))
             return self.config_data[msg]
         else :
             return None
@@ -2999,10 +3070,13 @@ class testSmsSetIPManager(Abstract):#
     def __init__(self):
         self.timer = osTimer()
         # self.newip = "test.iot.socket.thisiot.com"
+        # self.newip = "device.miwitracker.com"
+        # self.newcom = 8505
         self.newip = "api.xcloudtech.com"
+        self.newcom = 9000
         # "8.134.110.49"#默认大锤服务器 在大锤服务器更改要连接新的服务器地址
         # self.newcom = 9999
-        self.newcom = 9000
+        
         # 31379
         
         # self.new_key = "3JyCjsw4ryXKzjzudayY"
@@ -3010,6 +3084,10 @@ class testSmsSetIPManager(Abstract):#
 
         self.new_key = "bZld0ALsZTt15tKEZhOlLPgbsO75BLTP"
         self.new_pid = "SZKW"
+
+        # self.new_key = ""
+        # self.new_pid = "3G"
+
         self.server_sate = 0
 
         #  d_server_addr = "api.xcloudtech.com"
@@ -3315,121 +3393,36 @@ class setclassTimeManager(Abstract):#设置上课禁用时间
         hour = data[4]#当前小时
         min = data[5]#当前分钟
 
-        cur_week = data[3]#星期几
-
-
-
+        cur_week = int(data[3])#星期几
         cur_hour = hour
         cur_min = min
-        cur_total_min = cur_hour*60+cur_min
+        
         #print("cur_total_min",cur_total_min)
 
-        start_time1 = 0
-        end_time1 = 0
-        week1 = []
-        enable1 = 0
-
-        start_time2 = 0
-        end_time2 = 0
-        week2 = []
-        enable2 = 0
-
-        start_time3 = 0
-        end_time3 = 0
-        week3 = []
-        enable3 = 0
-
-        start_time4 = 0
-        end_time4 = 0
-        week4 = []
-        enable4 = 0
-
         self.class_state = 0
-        # {'1': {'enabled': 1, 'end_hour': '17:00', 'start_hour': '10:00', 'week': [1, 2, 3, 4, 5]}, 
-        #  '0': {'enabled': 1, 'end_hour': '17:00', 'start_hour': '08:00', 'week': [1, 2, 3, 4, 5]}, 
-        #  '3': {'enabled': 1, 'end_hour': '17:00', 'start_hour': '08:00', 'week': [1, 2, 3, 4, 5]}, 
-        #  '2': {'enabled': 1, 'end_hour': '17:00', 'start_hour': '08:00', 'week': [1, 2, 3, 4, 5]}}
-        # print("self.class_buf time:",self.class_buf)
-        if len(self.class_buf) != 0:
-            #19:56; 9:16
-            data1 = self.class_buf["0"]
-            start_time1 = int(data1["start_time"].split(":")[0])*60+int(data1["start_time"].split(":")[1])
-            end_time1 = int(data1["end_time"].split(":")[0])*60 + int(data1["end_time"].split(":")[1])
-
-            week1 = data1["week"]
-            enable1 = data1["enable"]
-
-            data2 = self.class_buf["1"]
-            start_time2 = int(data2["start_time"].split(":")[0])*60 + int(data2["start_time"].split(":")[1])
-            end_time2 = int(data2["end_time"].split(":")[0])*60 + int(data2["end_time"].split(":")[1])
-
-            week2 = data2["week"]
-            enable2 = data2["enable"]
-
-            data3 = self.class_buf["2"]
-            start_time3 = int(data3["start_time"].split(":")[0])*60 + int(data3["start_time"].split(":")[1])
-            end_time3= int(data3["end_time"].split(":")[0])*60 + int(data3["end_time"].split(":")[1])
-
-            week3 = data3["week"]
-            enable3 = data3["enable"]
-
-            data4 = self.class_buf["3"]
-            start_time4= int(data4["start_time"].split(":")[0])*60 + int(data4["start_time"].split(":")[1])
-            end_time4 = int(data4["end_time"].split(":")[0])*60 + int(data4["end_time"].split(":")[1])
-
-            week4 = data4["week"]
-            enable4 = data4["enable"]
-            week1_state = 0
-            week2_state = 0
-            week3_state = 0
-            week4_state = 0
-            print("week4 ",cur_week,week1,week2,week3,week4,enable1,enable2,enable3,enable4)
-            # print("end_time1 ",start_time1,end_time1,start_time2,end_time2,start_time3,end_time3,start_time4,end_time4)
-            for i in range(0,7):
-                if ((cur_week in week1) and enable1 == 1):
-                    week1_state = 1
-                if ((cur_week in week2) and enable2 == 1):
-                    week2_state = 1
-                
-                if ((cur_week in week3) and enable3 == 1):
-                    week3_state = 1
-                
-                if ((cur_week in week4) and enable4 == 1):
-                    week4_state = 1
-                # print("week4_state ",cur_week,week1_state,week2_state,week3_state,week4_state,cur_week)
-                if week1 != [] or week2 != [] or week3 != [] or week4 != []:
-                    if ((cur_week in week1) and enable1 == 1 and week1 != []) or ((cur_week in week2) and enable2 == 1 and week2 != []) or\
-                        ((cur_week in week3) and enable3 == 1 and week3 != []) or ((cur_week in week4) and enable4 == 1 and week4 != []):
-                        if  enable1 == 1 or enable2 == 1 or enable3 == 1 or enable4 == 1:
-                            if (end_time1 > start_time1):#结束时间大于开始时间否则不通过
-                                if (cur_total_min <= end_time1 and cur_total_min >= start_time1 and enable1 == 1 and week1_state == 1):#当前时间大于开始小于结束时间而且星期在内,且使能1了
-                                    self.class_state = 1
-                                    print("class_in1")
-                                    break
-                            if (end_time2 > start_time2):#结束时间大于开始时间否则不通过
-                                if (cur_total_min <= end_time2 and cur_total_min >= start_time2 and enable2 == 1 and week2_state == 1):#当前时间大于开始小于结束时间而且星期在内,且使能1了
-                                    self.class_state = 1
-                                    print("class_in2")
-                                    break
-                            if (end_time3 > start_time3):#结束时间大于开始时间否则不通过
-                                if (cur_total_min <= end_time3 and cur_total_min >= start_time3 and enable3 == 1 and week3_state == 1):#当前时间大于开始小于结束时间而且星期在内,且使能1了
-                                    self.class_state = 1
-                                    print("class_in3")
-                                    break
-                            if (end_time4 > start_time4):#结束时间大于开始时间否则不通过
-                                if (cur_total_min <= end_time4 and cur_total_min >= start_time4 and enable4 == 1 and week4_state == 1):#当前时间大于开始小于结束时间而且星期在内,且使能1了
-                                    self.class_state = 1
-                                    print("class_in4")
-                                    break
-
-
-                            # if (end_time1 > start_time1  and  enable1 == 1 and week1_state == 1) or (end_time2 > start_time2 and  enable2 == 1 and week2_state == 1) or\
-                            # (end_time3 > start_time3 and  enable3 == 1 and week3_state == 1) or (end_time4 > start_time4 and  enable4 == 1 and week4_state == 1):
-                            #     if (cur_total_min <= end_time1 and cur_total_min >= start_time1 and enable1 == 1 and week1_state == 1) or (cur_total_min <= end_time2 and cur_total_min >= start_time2 and enable2 == 1 and week2_state == 1) or\
-                            #         (cur_total_min <= end_time3 and cur_total_min >= start_time3 and enable3 == 1 and week3_state == 1) or (cur_total_min <= end_time4 and cur_total_min >= start_time4 and enable4 == 1 and week4_state == 1):
-                            #         self.class_state = 1
-                            #         print("class_in1")
-                            #         break
+        class_info = EventMesh.publish("get_storage_config","class_alarm")
+        # print("10s class_inf o",class_info)
+        if class_info != None and class_info != []:
+            if len(class_info) != 0:
+                i = 0
+                for i in range(len(class_info)):
+                    start_hour = int(class_info[i]["start_hour"])
+                    start_min = int(class_info[i]["start_min"])
+                    end_hour = int(class_info[i]["end_hour"])
+                    end_min = int(class_info[i]["end_min"])
+                    enable = int(class_info[i]["enable"])
+                    day = class_info[i]["day"]
+
+                    start_total_min = start_hour*60+start_min
+                    end_total_min = end_hour*60+end_min
+
+                    cur_total_min = cur_hour*60+cur_min
+                    
+                    if enable != 0 and cur_week in day:#使能并且星期在内 判断时间是否大于开始时间并且小于结束时间
+                        if cur_total_min >= start_total_min and cur_total_min <= end_total_min:#
+                            self.class_state = 1
+                            print("enter class")
+                            break
         return self.class_state
     
     def get_class_in_time_page(self, event, msg):
@@ -3445,7 +3438,9 @@ class setclassTimeManager(Abstract):#设置上课禁用时间
         else:
             if screen_NAME != None:
                 if screen_NAME == "class_time":
-                   EventMesh.publish("load_screen", {"screen": "main_menu"})
+                   EventMesh.publish("set_UI_high_priority", 0)
+                   EventMesh.publish("return_prev_screen")
+                #    EventMesh.publish("load_screen", {"screen": "main_menu"})
             
         pass
 
index d26c491..a4544cf 100644 (file)
@@ -78,7 +78,7 @@ class ppMainScreen(Screen):
             ppmain_name.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
             ppmain_name.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
             ppmain_name.add_event_cb(lambda e: EventMesh.callback_wrapper(self.addpp(e)),
-                                    lv.EVENT.CLICKED, None)
+                                    lv.EVENT.SHORT_CLICKED, None)
             
             delpp_img = lv.img(ppmain_screen)
             delpp_img.set_pos(5, 60)
@@ -102,7 +102,7 @@ class ppMainScreen(Screen):
             delppmain_name.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
             delppmain_name.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
             delppmain_name.add_event_cb(lambda e: EventMesh.callback_wrapper(self.delpp_cb(e)),
-                                    lv.EVENT.CLICKED, None)
+                                    lv.EVENT.SHORT_CLICKED, None)
             
 
             self.meta = ppmain_screen
@@ -258,7 +258,7 @@ class ppListScreen(Screen):
             _btn.add_style(pp_main_default, lv.PART.MAIN|lv.STATE.DEFAULT)
             _btn.add_flag(lv.obj.FLAG.CLICKABLE)
             _btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.edit_pp(e)),
-                                    lv.EVENT.CLICKED, None)
+                                    lv.EVENT.SHORT_CLICKED, None)
             _btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.edit_pp(e)),
                                     lv.EVENT.PRESSING, None)
             
@@ -399,7 +399,7 @@ class ppListScreen(Screen):
             #print("PRESSING")
             self.is_sliding += 1
 
-        elif  code == lv.EVENT.CLICKED:
+        elif  code == lv.EVENT.SHORT_CLICKED:
             #utime.sleep_ms(10)
             print("1self.is_sliding",self.is_sliding)
             if self.is_sliding <= 5 and self.is_sliding != 0:#如果是在滑动中则不需要点击事件
@@ -447,6 +447,7 @@ class delOnePopupScreen(Screen):#删除单个好友
         self.timer_out=osTimer()
         self.count = 0
         self.is_sliding = 0
+        self.meta_type = "popup"
 
     def initialization(self):
         self.is_sliding = 0
@@ -477,7 +478,7 @@ class delOnePopupScreen(Screen):#删除单个好友
             delComfriPopup_call_label1.set_text(" ")
             delComfriPopup_call_label1.add_flag(lv.obj.FLAG.CLICKABLE)
             delComfriPopup_call_label1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.confirm(e)),
-                                        lv.EVENT.CLICKED, None)
+                                        lv.EVENT.SHORT_CLICKED, None)
             delComfriPopup_call_label1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.confirm(e)),
                                         lv.EVENT.PRESSING, None)
 
@@ -487,7 +488,7 @@ class delOnePopupScreen(Screen):#删除单个好友
             delComfriPopup_call_label2.set_text(" ")
             delComfriPopup_call_label2.add_flag(lv.obj.FLAG.CLICKABLE)
             delComfriPopup_call_label2.add_event_cb(lambda e: EventMesh.callback_wrapper(self.concel(e)),
-                                        lv.EVENT.CLICKED, None)
+                                        lv.EVENT.SHORT_CLICKED, None)
             delComfriPopup_call_label2.add_event_cb(lambda e: EventMesh.callback_wrapper(self.concel(e)),
                                         lv.EVENT.PRESSING, None)
             
@@ -498,7 +499,7 @@ class delOnePopupScreen(Screen):#删除单个好友
             delComfriPopup_call_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
             delComfriPopup_call_label.add_flag(lv.obj.FLAG.CLICKABLE)
             delComfriPopup_call_label.add_event_cb(lambda e: EventMesh.callback_wrapper(self.confirm(e)),
-                                        lv.EVENT.CLICKED, None)
+                                        lv.EVENT.SHORT_CLICKED, None)
             delComfriPopup_call_label.add_event_cb(lambda e: EventMesh.callback_wrapper(self.confirm(e)),
                                         lv.EVENT.PRESSING, None)
             delComfriPopup_call_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
@@ -510,7 +511,7 @@ class delOnePopupScreen(Screen):#删除单个好友
             delconcelPopup_call_label.set_text("取消")
             delconcelPopup_call_label.add_flag(lv.obj.FLAG.CLICKABLE)
             delconcelPopup_call_label.add_event_cb(lambda e: EventMesh.callback_wrapper(self.concel(e)),
-                                        lv.EVENT.CLICKED, None)
+                                        lv.EVENT.SHORT_CLICKED, None)
             delconcelPopup_call_label.add_event_cb(lambda e: EventMesh.callback_wrapper(self.concel(e)),
                                         lv.EVENT.PRESSING, None)
             delconcelPopup_call_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
@@ -525,7 +526,7 @@ class delOnePopupScreen(Screen):#删除单个好友
             #print("PRESSING")
             self.is_sliding += 1
 
-        elif  code == lv.EVENT.CLICKED:
+        elif  code == lv.EVENT.SHORT_CLICKED:
             #utime.sleep_ms(10)
             print("1self.is_sliding",self.is_sliding)
             if self.is_sliding <= 5 and self.is_sliding != 0:#如果是在滑动中则不需要点击事件
@@ -549,7 +550,7 @@ class delOnePopupScreen(Screen):#删除单个好友
             #print("PRESSING")
             self.is_sliding += 1
 
-        elif  code == lv.EVENT.CLICKED:
+        elif  code == lv.EVENT.SHORT_CLICKED:
             #utime.sleep_ms(10)
             print("1self.is_sliding",self.is_sliding)
             if self.is_sliding <= 5 and self.is_sliding != 0:#如果是在滑动中则不需要点击事件
@@ -571,7 +572,8 @@ class delOnePopupScreen(Screen):#删除单个好友
         self.timer.stop()
 
     def done_return(self):
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
+        EventMesh.publish("return_prev_screen")
+        # EventMesh.publish("load_screen", {"screen": "main_menu"})
 
     def btn1_release(self):
         EventMesh.publish("load_screen", {"screen": "main_menu"})
@@ -624,7 +626,8 @@ class allppPopupScreen(Screen):#没有加好友弹窗提示
         self.timer.stop()
 
     def done_return(self):
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
+        EventMesh.publish("return_prev_screen")
+        # EventMesh.publish("load_screen", {"screen": "main_menu"})
 
     def btn1_release(self):
         EventMesh.publish("load_screen", {"screen": "main_menu"})
@@ -677,7 +680,8 @@ class noppPopupScreen(Screen):#没有加好友弹窗提示
         self.timer.stop()
 
     def done_return(self):
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
+        EventMesh.publish("return_prev_screen")
+        # EventMesh.publish("load_screen", {"screen": "main_menu"})
 
     def btn1_release(self):
         EventMesh.publish("load_screen", {"screen": "main_menu"})
@@ -729,7 +733,8 @@ class delppsucessPopupScreen(Screen):#没有加好友弹窗提示
         self.timer.stop()
 
     def done_return(self):
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
+        EventMesh.publish("return_prev_screen")
+        # EventMesh.publish("load_screen", {"screen": "main_menu"})
 
     def btn1_release(self):
         EventMesh.publish("load_screen", {"screen": "main_menu"})
@@ -776,7 +781,7 @@ class ppMainPopupScreen(Screen):#弹窗提示
             ppPopup_imgbtn.set_pos(14, 5)
 
             self.meta = ppPopup_screen
-        EventMesh.publish(constants.EVENT.START_LOCATION,constants.PROTOCOL.PP_SEND) #开始WT定位
+        EventMesh.publish(constants.EVENT.START_LOCATION,constants.PROTOCOL.PP_SEND) #开始碰碰
         self.timer.start(1*1000,1,self.fun)
         self.timer_out.start(30*1000,0,self.timeout_fun)
     def fun(self,*argc):
@@ -795,7 +800,8 @@ class ppMainPopupScreen(Screen):#弹窗提示
         self.timer.stop()
 
     def done_return(self):
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
+        EventMesh.publish("return_prev_screen")
+        # EventMesh.publish("load_screen", {"screen": "main_menu"})
 
     def btn1_release(self):
         EventMesh.publish("load_screen", {"screen": "main_menu"})
@@ -865,7 +871,8 @@ class addppPopupScreen(Screen):#弹窗提示
         self.timer.stop()
         
     def done_return(self):
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
+        EventMesh.publish("return_prev_screen")
+        # EventMesh.publish("load_screen", {"screen": "main_menu"})
 
     def btn1_release(self):
         EventMesh.publish("load_screen", {"screen": "main_menu"})
@@ -917,7 +924,8 @@ class addedppPopupScreen(Screen):#已加过好友弹窗提示
         self.timer.stop()
         
     def done_return(self):
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
+        EventMesh.publish("return_prev_screen")
+        # EventMesh.publish("load_screen", {"screen": "main_menu"})
 
     def btn1_release(self):
         EventMesh.publish("load_screen", {"screen": "main_menu"})
@@ -968,7 +976,8 @@ class ownaddppPopupScreen(Screen):#自己已过好友弹窗提示
         self.timer.stop()
         
     def done_return(self):
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
+        EventMesh.publish("return_prev_screen")
+        # EventMesh.publish("load_screen", {"screen": "main_menu"})
 
     def btn1_release(self):
         EventMesh.publish("load_screen", {"screen": "main_menu"})
@@ -1021,7 +1030,8 @@ class addfaileppPopupScreen(Screen):#交友失败
         self.timer.stop()
         
     def done_return(self):
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
+        EventMesh.publish("return_prev_screen")
+        # EventMesh.publish("load_screen", {"screen": "main_menu"})
 
     def btn1_release(self):
         EventMesh.publish("load_screen", {"screen": "main_menu"})
index 8ed6663..e5809c8 100644 (file)
@@ -841,114 +841,195 @@ class WT_ProtoCol(ProtoCol):
         EventMesh.publish("set_weather_data",[msg_date,msg_time,msg_weather_content,msg_type,msg_temp,msg_min_temp,msg_max_temp,msg_city,1])
         EventMesh.publish("updata_weather_show")
 
-
-class REMIND_ProtoCol(ProtoCol):
-    """闹钟数据"""
+class REMIND_ProtoCol(ProtoCol):#普通闹钟
+    """
+    
+    平台发送:
+    [XT*YYYYYYYYYYYYYYY*LEN*REMIND,,时间1-开关,时间2-开关,周几]
+    实例:[XT*334588000000156*0008*REMIND,,时间1-开关,时间2-开关,周几]
+    终端回复:
+    [XT*YYYYYYYYYYYYYYY*LEN*REMIND]
+    """
     TYPE = "REMIND"
-
-
+    
     def send(self, event, msg):
-        
-        # [SZKW*867387060319491*0008*REMIND]
-        send_data = EventMesh.publish("get_new_pid")+"*%s*0006*REMIND"%(self.imei)
+        send_data = self.PID+"*%s*0006*REMIND"%(self.imei)
         MD5_SIGN = self.pack_MD5_head(send_data)
         data = "[%s%s]"%(str(MD5_SIGN),send_data)
-        # print("REMIND_ProtoCol:send:%s"%(data))
+        #Wechat_log("POWEROFF_ProtoCol:send:%s"%(data))
         # 通过socket发送到服务器端
         EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND, data)
 
     def recv(self, event, msg):
-        """
-        @param event: 闹钟数据下发
-        @param msg: 接收到的下行数据
-        """
-        
-        # b'SZKW*860132060004322*0035*REMIND,23-04-06,14:41:06,b6e0d4c6,1,27,-1,40,6DF157335E02'
-        # print("REMIND_ProtoCol RECV msg:%s"%(msg))
-        alarm_new = []
-
+        # SZKW*860132060346475*0013*REMIND_CH_MEDICINE2,4-1
         msg = msg[1:-1]
         msg_tmp = msg.decode('ascii')
-        msg_tmp = msg_tmp.split('REMIND,')
-        msg_tmp = msg_tmp[1]
-
-        alarm_new  = EventMesh.publish("read_alarminjson")
-        # print("alarm_list:{} msg_tmp:{}",alarm_new,msg_tmp)
-        k=1
+        msg_tmp_new = msg_tmp.split('REMIND,')[1]
         count = 0
+        for i in str(msg_tmp_new):
+            # print("i",i)
+            if i == ",":
+                count+=1
         
-        for i in range(len(str(msg_tmp))):#寻找有多少个,号
-            if msg_tmp[i] == ',':#, , ,
-                k+=1
-        # if len(alarm_new) < 5 :
-        #     alarm_new = []
-        #     for i in range(5):
-        #         alarm_new.append({'hour': 8, 'repeart': 10, 'idx': i, 'enabled': 0, 'days': [], 'minute': 39}) 
-        # print("msg_tmp",len(msg_tmp),msg_tmp)
-        if len(msg_tmp) > 0:
-            if len(alarm_new) > 2:
-                for i in range(0,len(alarm_new)-2):
-                    # print("alarm_new_tmp",alarm_new)
-                    del alarm_new[2]
-            # print("alarm_new:{}",alarm_new)
-            if k > 3:
-                k = 3
-
-            for j in range(2,2+k):#0 1是开关机,234是闹钟
-                alarm_day = []
-                alarm_week = []
-                alarm_total_data = []
-                alarm_day_num = 1
-                # print("j!!!!!!!!!!",j)
-                if k == 1:
-                    if len(msg_tmp) != 0:
-                        alarm_data = msg_tmp.split('-')#-作为分隔符
-                        alarm_switch = int(alarm_data[1])#开关
-                        alarm_day_num = int(alarm_data[2])#天
-                        alarm_time = alarm_data[0]#时间
-                        alarm_time_tmp = alarm_time.split(':')#冒号分隔时间 时 分
-                        alarm_time_hour = int(alarm_time_tmp[0])
-                        alarm_time_min = int(alarm_time_tmp[1])
-                        if alarm_day_num == 2:#每一天
-                            alarm_day = [1,2,3,4,5,6,0]
-                        elif alarm_day_num == 3:#自定义
+        if count != 0:
+            count+=1
+        normal_alarm_save = []
+        # # ("handler -> b'[SZKW*860132060346475*001C*REMIND,08:00-1-1,,]'",)
+        # b'[SZKW*860132060346475*001B*REMIND,08:00-1-1,,]'",)
+        # medicine_alarmday = str(msg_data[4])
+        # alarmday=[]
+        alarm_day = []
+        alarm_switch = 0
+
+        print("count",count,msg_tmp_new)
+        if count >= 3:
+            count = 3
+        for i in range(0,count):#默认是三个时间多了也不保存
+            alarm_day = []
+            alarm_data = str(msg_tmp_new.split(',')[i])
+            # print("i",i,sleep_data)
+            if len(alarm_data) != 0:
+                b = alarm_data.find('-')
+                if b != -1:
+                    alarm_time = alarm_data.split('-')[0]#-作为分隔符
+                    alarm_switch = int(alarm_data.split('-')[1])#开关
+                    alarm_repeat = int(alarm_data.split('-')[2])#是单次还是每天 还是自定义
+
+                    alarm_hour = int(alarm_time.split(":")[0])#时间
+                    alarm_min = int(alarm_time.split(":")[1])#冒号分隔时间 时 分
+                    
+                    
+                    if alarm_repeat == 2:#每一天
+                        alarm_day = [0,1,2,3,4,5,6]
+                    elif alarm_repeat == 3:#自定义
+                        alarm_day_tmp = alarm_data.split('-')[3]#-作为分隔符
+                        if len(str(alarm_day_tmp)) != 0:
                             for i in range(0,7):
-                                if alarm_week[i] != '0':
+                                if alarm_day_tmp[i] != '0':
                                     alarm_day.append(i)
-                        if alarm_day_num == 0:
-                            alarm_day_num = 1
-                        alarm_new.append({"idx": j, "hour": alarm_time_hour, "minute": alarm_time_min, "days":alarm_day, "enabled": alarm_switch,"repeart":alarm_day_num})
-                else:
-                    if len(msg_tmp) != 0:
-                        alarm_total_data = msg_tmp.split(',')[count]
-                        count+=1
-                        b = alarm_total_data.find('-')
-                        if b != -1:
-                            alarm_data = alarm_total_data.split('-')#-作为分隔符
-                            alarm_switch = int(alarm_data[1])#开关
-                            alarm_day_num = int(alarm_data[2])#天
-                            alarm_time = alarm_data[0]#时间
-                            alarm_time_tmp = alarm_time.split(':')#冒号分隔时间 时 分
-                            alarm_time_hour = int(alarm_time_tmp[0])
-                            alarm_time_min = int(alarm_time_tmp[1])
-                            if alarm_day_num == 2:#每一天
-                                alarm_day = [1,2,3,4,5,6,0]
-                            elif alarm_day_num == 3:#自定义
-                                for i in range(0,7):
-                                    if alarm_week[i] != '0':
-                                        alarm_day.append(i)
-                            if alarm_day_num == 0:
-                                alarm_day_num = 1
-                            alarm_new.append({"idx": j, "hour": alarm_time_hour, "minute": alarm_time_min, "days":alarm_day, "enabled": alarm_switch,"repeart":alarm_day_num})
+                    else:#单次 1
+                       alarm_day=[] 
+                    # if alarm_switch = 0:
+                    normal_alarm_save.append({"hour":alarm_hour,"min":alarm_min,"day":alarm_day,"enable":alarm_switch})
+        
+        EventMesh.publish("set_storage_config",["normal_alarm",normal_alarm_save])
+        normal_alarm = EventMesh.publish("get_storage_config","normal_alarm")
+
+        print("recv REMIND_SEND:{} normal_alarm ;{}".format(msg,normal_alarm))
+       
+        EventMesh.publish(constants.PROTOCOL.REMIND_SEND)   
+        EventMesh.publish("clear_normal_alarm")
+        EventMesh.publish("push_update_alarm_show")
+
+
+
+# class REMIND_ProtoCol(ProtoCol):
+#     """闹钟数据"""
+#     TYPE = "REMIND"
+
+
+#     def send(self, event, msg):
+        
+#         # [SZKW*867387060319491*0008*REMIND]
+#         send_data = EventMesh.publish("get_new_pid")+"*%s*0006*REMIND"%(self.imei)
+#         MD5_SIGN = self.pack_MD5_head(send_data)
+#         data = "[%s%s]"%(str(MD5_SIGN),send_data)
+#         # print("REMIND_ProtoCol:send:%s"%(data))
+#         # 通过socket发送到服务器端
+#         EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND, data)
+
+#     def recv(self, event, msg):
+#         """
+#         @param event: 闹钟数据下发
+#         @param msg: 接收到的下行数据
+#         """
+        
+#         # b'SZKW*860132060004322*0035*REMIND,23-04-06,14:41:06,b6e0d4c6,1,27,-1,40,6DF157335E02'
+#         # print("REMIND_ProtoCol RECV msg:%s"%(msg))
+#         alarm_new = []
+
+#         msg = msg[1:-1]
+#         msg_tmp = msg.decode('ascii')
+#         msg_tmp = msg_tmp.split('REMIND,')
+#         msg_tmp = msg_tmp[1]
+
+#         alarm_new  = EventMesh.publish("read_alarminjson")
+#         # print("alarm_list:{} msg_tmp:{}",alarm_new,msg_tmp)
+#         k=1
+#         count = 0
+        
+#         for i in range(len(str(msg_tmp))):#寻找有多少个,号
+#             if msg_tmp[i] == ',':#, , ,
+#                 k+=1
+#         # if len(alarm_new) < 5 :
+#         #     alarm_new = []
+#         #     for i in range(5):
+#         #         alarm_new.append({'hour': 8, 'repeart': 10, 'idx': i, 'enabled': 0, 'days': [], 'minute': 39}) 
+#         # print("msg_tmp",len(msg_tmp),msg_tmp)
+#         if len(msg_tmp) > 0:
+#             if len(alarm_new) > 2:
+#                 for i in range(0,len(alarm_new)-2):
+#                     # print("alarm_new_tmp",alarm_new)
+#                     del alarm_new[2]
+#             # print("alarm_new:{}",alarm_new)
+#             if k > 3:
+#                 k = 3
+
+#             for j in range(2,2+k):#0 1是开关机,234是闹钟
+#                 alarm_day = []
+#                 alarm_week = []
+#                 alarm_total_data = []
+#                 alarm_day_num = 1
+#                 # print("j!!!!!!!!!!",j)
+#                 if k == 1:
+#                     if len(msg_tmp) != 0:
+#                         alarm_data = msg_tmp.split('-')#-作为分隔符
+#                         alarm_switch = int(alarm_data[1])#开关
+#                         alarm_day_num = int(alarm_data[2])#天
+#                         alarm_time = alarm_data[0]#时间
+#                         alarm_time_tmp = alarm_time.split(':')#冒号分隔时间 时 分
+#                         alarm_time_hour = int(alarm_time_tmp[0])
+#                         alarm_time_min = int(alarm_time_tmp[1])
+#                         if alarm_day_num == 2:#每一天
+#                             alarm_day = [1,2,3,4,5,6,0]
+#                         elif alarm_day_num == 3:#自定义
+#                             for i in range(0,7):
+#                                 if alarm_week[i] != '0':
+#                                     alarm_day.append(i)
+#                         if alarm_day_num == 0:
+#                             alarm_day_num = 1
+#                         alarm_new.append({"idx": j, "hour": alarm_time_hour, "minute": alarm_time_min, "days":alarm_day, "enabled": alarm_switch,"repeart":alarm_day_num})
+#                 else:
+#                     if len(msg_tmp) != 0:
+#                         alarm_total_data = msg_tmp.split(',')[count]
+#                         count+=1
+#                         b = alarm_total_data.find('-')
+#                         if b != -1:
+#                             alarm_data = alarm_total_data.split('-')#-作为分隔符
+#                             alarm_switch = int(alarm_data[1])#开关
+#                             alarm_day_num = int(alarm_data[2])#天
+#                             alarm_time = alarm_data[0]#时间
+#                             alarm_time_tmp = alarm_time.split(':')#冒号分隔时间 时 分
+#                             alarm_time_hour = int(alarm_time_tmp[0])
+#                             alarm_time_min = int(alarm_time_tmp[1])
+#                             if alarm_day_num == 2:#每一天
+#                                 alarm_day = [1,2,3,4,5,6,0]
+#                             elif alarm_day_num == 3:#自定义
+#                                 for i in range(0,7):
+#                                     if alarm_week[i] != '0':
+#                                         alarm_day.append(i)
+#                             if alarm_day_num == 0:
+#                                 alarm_day_num = 1
+#                             alarm_new.append({"idx": j, "hour": alarm_time_hour, "minute": alarm_time_min, "days":alarm_day, "enabled": alarm_switch,"repeart":alarm_day_num})
                             
-            # print("alarm_new end:{}",alarm_new)
+#             # print("alarm_new end:{}",alarm_new)
             
-            with open("/usr/static/storage_file/alarm_msg.json", 'w',encoding='utf-8') as fd:
-                ujson.dump(alarm_new,fd)
-            EventMesh.publish("push_update_alarm_show")
+#             with open("/usr/static/storage_file/alarm_msg.json", 'w',encoding='utf-8') as fd:
+#                 ujson.dump(alarm_new,fd)
+#             EventMesh.publish("push_update_alarm_show")
         
-        # EventMesh.publish("add_alarm",[0,msg_tmp])
-        EventMesh.publish(constants.PROTOCOL.REMIND_SEND)
+#         # EventMesh.publish("add_alarm",[0,msg_tmp])
+#         EventMesh.publish(constants.PROTOCOL.REMIND_SEND)
 
 
 
@@ -1496,79 +1577,57 @@ class SILENCETIMEFS_ProtoCol(ProtoCol):#云米
         @param event:
         @param msg: 接收到的下行数据
         """
-        class_in_buf = {"1": {'enable': 0, 'end_time': '00:00', 'start_time': '00:00', 'week': []},\
-        "0": {'enable': 0, 'end_time': '00:00', 'start_time': '00:00', 'week': []}, \
-        "3": {'enable': 0, 'end_time': '00:00', 'start_time': '00:00', 'week': []}, \
-        "2": {'enable': 0, 'end_time': '00:00', 'start_time': '00:00', 'week': []}}
-
+        # [XT*YYYYYYYYYYYYYYY*LEN*SILENCETIME2,时间段-开关-自定义日期,时间段-开关-自定义日期,时
+        # 间段-开关-自定义日期]
+        class_in_buf = []
+        # b'[SZKW*860132060128139*004E*SILENCETIME2,00:00-09:00-1-0111110,15:00-22:00-0-1111111,00:00-23:00-0-0100001]'
         # class_in_buf.append({'start_hour': "16:54", 'week': [], 'idx': 0, 'enabled': 0, 'end_hour': "18:39"}) 
         msg = msg[1:-1]
         msg_tmp = msg.decode('ascii')
-        msg_tmp_d = str(msg_tmp.split('SILENCETIMEFS,')[1])
+        msg_tmp_d = str(msg_tmp.split('SILENCETIME2,')[1])
         
-        count = 1
+        count = 0
         k = 0
-
+        i = 0
         for i in range(len(str(msg_tmp_d))):
             if msg_tmp_d[i] == ',':
                 count+=1
-        if count > 4:
-            count = 4
-        if len(msg_tmp_d) > 0:
-            for x in range(count):#21:10-7:30@0111110,21:10-7:30@0111110,21:10-7:30@0111110,21:10-7:30@0111110
-                week = []
-                if x >= 4:
-                    break
-                if count > 1:
-                    # 0100001
-                    msg_data = msg_tmp_d.split(',')[x]
-                    print("SILENCETIMEFS count",msg_data)
-                    b = msg_data.find('-')
-                    if b != -1:
-                        data = msg_data.split('-')#-作为分隔符
-                        time = data[1].split('@')#@作为分隔符
-                        print("data",data,time,data[0],time[0])
-                        start_time = data[0]#开始时间
-                        end_time = time[0]#结束时间
-                        enable = 1
-                        week_day = time[1]
-                        for i in range(0,7):
-                            if week_day[i] != '0':
-                                week.append(i)
-                        tmp={}
-                        tmp["start_time"] = start_time
-                        tmp["end_time"] = end_time
-                        tmp["week"] = week
-                        tmp["enable"] = enable
-                        class_in_buf["{}".format(x)] = tmp
-                else:
-                    if len(msg_tmp_d) != 0:
-                        b = msg_tmp_d.find('-')
-                        if b != -1:
-                            
-                            data = msg_tmp_d.split('-')#-作为分隔符
-                            time = data[1].split('@')#@作为分隔符
-                            print("data",data,time,data[0],time[0])
-                            start_time = data[0]#开始时间
-                            end_time = time[0]#结束时间
-                            enable = 1
-                            week_day = time[1]
-                            for i in range(0,7):
-                                if week_day[i] != '0':
-                                    week.append(i)
-                            tmp={}
-                            tmp["start_time"] = start_time
-                            tmp["end_time"] = end_time
-                            tmp["week"] = week
-                            tmp["enable"] = enable
-                            class_in_buf["{}".format(x)] = tmp
+        
+        count+=1
+        if count >= 3:
+            count = 3
+        print("class count",count)
+        for i in range(0,count):#00:00-09:00-1-0111110,15:00-22:00-0-1111111,00:00-23:00-0-0100001默认是三个时间多了也不保存
+            alarm_day = []
+            alarm_data = str(msg_tmp_d.split(',')[i])
+            # print("i",i,sleep_data)
+            if len(alarm_data) != 0:
+                b = alarm_data.find('-')
+                if b != -1:
+                    start_time = alarm_data.split('-')[0]#-作为分隔符
+                    end_time = alarm_data.split('-')[1]#-作为分隔符
+                    alarm_enable = int(alarm_data.split('-')[2])#是单次还是每天 还是自定义
 
-        with open("/usr/static/storage_file/class_msg.json", 'w+',encoding='utf-8') as fd:
-            ujson.dump(class_in_buf,fd)
+                    start_hour = int(start_time.split(":")[0])#时间
+                    start_min = int(start_time.split(":")[1])#冒号分隔时间 时 分
 
+                    end_hour = int(end_time.split(":")[0])#时间
+                    end_min = int(end_time.split(":")[1])#冒号分隔时间 时 分
+                    
+                    alarm_day_tmp = alarm_data.split('-')[3]#-作为分隔符
+                    if len(str(alarm_day_tmp)) != 0:
+                        for i in range(0,7):
+                            if alarm_day_tmp[i] != '0':
+                                alarm_day.append(i)
+                    # if alarm_switch = 0:
+                    class_in_buf.append({"start_hour":start_hour,"start_min":start_min,"end_hour":end_hour,"end_min":end_min,"day":alarm_day,"enable":alarm_enable})
+        
+        EventMesh.publish("set_storage_config",["class_alarm",class_in_buf])
+        class_alarm = EventMesh.publish("get_storage_config","class_alarm")
+        print("class_alarm",class_alarm)
 
         EventMesh.publish("set_class_time", class_in_buf)
-        EventMesh.publish(constants.PROTOCOL.SILENCETIMEFS_SEND)  
+        EventMesh.publish(constants.PROTOCOL.SILENCETIME2_SEND)  
         EventMesh.publish("get_class_in_time_page")
 
 
@@ -1592,67 +1651,54 @@ class SILENCETIME2_ProtoCol(ProtoCol):
         @param event:
         @param msg: 接收到的下行数据
         """
-        class_in_buf = {"1": {'enable': 0, 'end_time': '00:00', 'start_time': '00:00', 'week': []},\
-        "0": {'enable': 0, 'end_time': '00:00', 'start_time': '00:00', 'week': []}, \
-        "3": {'enable': 0, 'end_time': '00:00', 'start_time': '00:00', 'week': []}, \
-        "2": {'enable': 0, 'end_time': '00:00', 'start_time': '00:00', 'week': []}}
-
+        # [XT*YYYYYYYYYYYYYYY*LEN*SILENCETIME2,时间段-开关-自定义日期,时间段-开关-自定义日期,时
+        # 间段-开关-自定义日期]
+        class_in_buf = []
+        # b'[SZKW*860132060128139*004E*SILENCETIME2,00:00-09:00-1-0111110,15:00-22:00-0-1111111,00:00-23:00-0-0100001]'
         # class_in_buf.append({'start_hour': "16:54", 'week': [], 'idx': 0, 'enabled': 0, 'end_hour': "18:39"}) 
         msg = msg[1:-1]
         msg_tmp = msg.decode('ascii')
         msg_tmp_d = str(msg_tmp.split('SILENCETIME2,')[1])
         
-        count = 1
+        count = 0
         k = 0
-
+        i = 0
         for i in range(len(str(msg_tmp_d))):
             if msg_tmp_d[i] == ',':
                 count+=1
-        if count > 4:
-            count = 4
-        for x in range(count):#08:00-17:00-1-0111110,08:00-17:00-1-0111110
-            week = []
-            if count > 1:
-                msg_data = msg_tmp_d.split(',')[k]
-                # print("SILENCETIME count",msg_data)
-                k+= 1
-                b = msg_data.find('-')
-                if b != -1:
-                    data = msg_data.split('-')#-作为分隔符
-                    start_time = data[0]
-                    end_time = data[1]
-                    enable = int(data[2])
-                    week_day = data[3]
-                    for i in range(0,7):
-                        if week_day[i] != '0':
-                            week.append(i)
-                    tmp={}
-                    tmp["start_time"] = start_time
-                    tmp["end_time"] = end_time
-                    tmp["week"] = week
-                    tmp["enable"] = enable
-                    class_in_buf["{}".format(x)] = tmp
-            else:
-                b = msg_tmp_d.find('-')
+        
+        count+=1
+        if count >= 3:
+            count = 3
+        print("class count",count)
+        for i in range(0,count):#00:00-09:00-1-0111110,15:00-22:00-0-1111111,00:00-23:00-0-0100001默认是三个时间多了也不保存
+            alarm_day = []
+            alarm_data = str(msg_tmp_d.split(',')[i])
+            # print("i",i,sleep_data)
+            if len(alarm_data) != 0:
+                b = alarm_data.find('-')
                 if b != -1:
-                    data = msg_tmp_d.split('-')#-作为分隔符
-                    start_time = data[0]
-                    end_time = data[1]
-                    enable = int(data[2])
-                    week_day = data[3]
-                    for i in range(0,7):
-                        if week_day[i] != '0':
-                            week.append(i)
-                    tmp={}
-                    tmp["start_time"] = start_time
-                    tmp["end_time"] = end_time
-                    tmp["week"] = week
-                    tmp["enable"] = enable
-                    class_in_buf["{}".format(x)] = tmp
-
-        with open("/usr/static/storage_file/class_msg.json", 'w+',encoding='utf-8') as fd:
-            ujson.dump(class_in_buf,fd)
+                    start_time = alarm_data.split('-')[0]#-作为分隔符
+                    end_time = alarm_data.split('-')[1]#-作为分隔符
+                    alarm_enable = int(alarm_data.split('-')[2])#是单次还是每天 还是自定义
 
+                    start_hour = int(start_time.split(":")[0])#时间
+                    start_min = int(start_time.split(":")[1])#冒号分隔时间 时 分
+
+                    end_hour = int(end_time.split(":")[0])#时间
+                    end_min = int(end_time.split(":")[1])#冒号分隔时间 时 分
+                    
+                    alarm_day_tmp = alarm_data.split('-')[3]#-作为分隔符
+                    if len(str(alarm_day_tmp)) != 0:
+                        for i in range(0,7):
+                            if alarm_day_tmp[i] != '0':
+                                alarm_day.append(i)
+                    # if alarm_switch = 0:
+                    class_in_buf.append({"start_hour":start_hour,"start_min":start_min,"end_hour":end_hour,"end_min":end_min,"day":alarm_day,"enable":alarm_enable})
+        
+        EventMesh.publish("set_storage_config",["class_alarm",class_in_buf])
+        class_alarm = EventMesh.publish("get_storage_config","class_alarm")
+        # print("class_alarm",class_alarm)
 
         EventMesh.publish("set_class_time", class_in_buf)
         EventMesh.publish(constants.PROTOCOL.SILENCETIME2_SEND)  
@@ -2410,13 +2456,15 @@ class srvtextmsg_ProtoCol(ProtoCol):#微聊文字
 
         EventMesh.publish(constants.PROTOCOL.SRVTEXTMSG_SEND,[msg_x,msg_id])
 
-#视频通话
-# [XT*YYYYYYYYYYYYYYY*LEN*JPREG]
-# 实例:
-# [XT*334588000000156*0004*JPREG]
-# 平台回复:
-# [XT*设备ID*LEN*JPREG,账号(整型)]
-# 实例:[XT*334588000000156*0010*JPREG,1087654321]
+
+
+# #小见平台视频通话
+# # [XT*YYYYYYYYYYYYYYY*LEN*JPREG]
+# # 实例:
+# # [XT*334588000000156*0004*JPREG]
+# # 平台回复:
+# # [XT*设备ID*LEN*JPREG,账号(整型)]
+# # 实例:[XT*334588000000156*0010*JPREG,1087654321]
 class JPREG_ProtoCol(ProtoCol):#登入注册
     """"""
     TYPE = "JPREG"
@@ -2440,13 +2488,13 @@ class JPREG_ProtoCol(ProtoCol):#登入注册
         print("JPREG!!!!!!!!!!!!!",msg)
         # EventMesh.publish(constants.PROTOCOL.JPREG_SEND)  
 
-# (声网,佰锐的账号是整型)
-# [XT*YYYYYYYYYYYYYYY*LEN*MEMBERS]
-# 实例:[XT*334588000000156*0007*MEMBERS]
-# 平台回复:[XT*设备ID*LEN*MEMBERS,账号1,昵称1,电话1,账号2,昵称2,电话2.....]
-# 实例:
-# [XT*334588000000156*003F*MEMBERS,d3e2f759f9d5af3858f3530,爸爸,13662313580,妈妈,555]
-# 以上数据部分使用Unicode编码,最终上面示例传到服务端将是:
+# # (声网,佰锐的账号是整型)
+# # [XT*YYYYYYYYYYYYYYY*LEN*MEMBERS]
+# # 实例:[XT*334588000000156*0007*MEMBERS]
+# # 平台回复:[XT*设备ID*LEN*MEMBERS,账号1,昵称1,电话1,账号2,昵称2,电话2.....]
+# # 实例:
+# # [XT*334588000000156*003F*MEMBERS,d3e2f759f9d5af3858f3530,爸爸,13662313580,妈妈,555]
+# # 以上数据部分使用Unicode编码,最终上面示例传到服务端将是:
 
 class MEMBERS_ProtoCol(ProtoCol):#获取账号列表
     """"""
@@ -2504,11 +2552,11 @@ class MEMBERS_ProtoCol(ProtoCol):#获取账号列表
         EventMesh.publish("video_updata_list_show")
         # EventMesh.publish(constants.PROTOCOL.MEMBERS_SEND)  
 
-# [X*Y*LEN*CALLING,呼叫者id,会议id,通话类型,Token]
+# # [X*Y*LEN*CALLING,呼叫者id,会议id,通话类型,Token]
 
-# 设备回复
-# [X*Y*LEN*CALLING,音视频状态]
-# 音视频状态:为0表示正常可通讯状态,否则填上用音视频返回的状态码,比如200,如果未获取到返回状态码,则填1
+# # 设备回复
+# # [X*Y*LEN*CALLING,音视频状态]
+# # 音视频状态:为0表示正常可通讯状态,否则填上用音视频返回的状态码,比如200,如果未获取到返回状态码,则填1
 class CALLING_ProtoCol(ProtoCol):#app发起视频通话
     """"""
     TYPE = "CALLING"
@@ -2528,7 +2576,7 @@ class CALLING_ProtoCol(ProtoCol):#app发起视频通话
         @param event:
         @param msg: 接收到的下行数据
         """
-        # b'[SZKW*867387060319166*000A*KEYBRD]'
+        # b'[SZKW*867387060319166*000A*CALLING]'
         print("CALLING!!!!!!!!!!!!!",msg)
         msg = msg[1:-1]
         msg_tmp = msg.decode('ascii')
@@ -2542,18 +2590,31 @@ class CALLING_ProtoCol(ProtoCol):#app发起视频通话
         EventMesh.publish("set_vedio_call_type", call_type)#
         EventMesh.publish("set_vedio_tokens_data", tokens_data)#
 
+        get_ui = EventMesh.publish("get_UI_high_priority")
+        if get_ui == None:
+            get_ui = 0
+        
+        if get_ui == 1:#不能通话 因为在打电话或者禁用时间段
+            EventMesh.publish(constants.PROTOCOL.CALLING_SEND,1)
+        else:
+            EventMesh.publish(constants.PROTOCOL.CALLING_SEND,0)
+            if int(call_type) == 1:#视频通话
+                EventMesh.publish("load_screen", {"screen": "vedio_incall"})
+                # EventMesh.publish("load_screen", {"screen": "vedio_incall","meta":"1"})
+                pass
+            else:
+                EventMesh.publish("load_screen", {"screen": "voice_incall"})
+                # EventMesh.publish("load_screen", {"screen": "vedio_incall","meta":"0"})#语音界面
+                pass
+        
 
-        # EventMesh.publish("set_vedio_infor",[call_id,meet_id,call_type,tokens_data])#
-        EventMesh.publish(constants.PROTOCOL.CALLING_SEND,0)
-        EventMesh.publish("load_screen", {"screen": "vedio_incall"})
-
-# [XT*YYYYYYYYYYYYYYY*LEN*RCALLING,呼叫者id,会议id/声网频道名(没有则留空,但位置保留),音频还是视频(0为音频,1为视频)]
-# 实例:
-# [XT*334588000000156*0007*RCALLING,d3e2f759f9d5af3858f3530b,,0]
-# 终端回复:
-# [XT*设备ID*LEN*RCALLING]
-# 实例:[XT*334588000000156*0009*RCALLING]  
-#   
+# # [XT*YYYYYYYYYYYYYYY*LEN*RCALLING,呼叫者id,会议id/声网频道名(没有则留空,但位置保留),音频还是视频(0为音频,1为视频)]
+# # 实例:
+# # [XT*334588000000156*0007*RCALLING,d3e2f759f9d5af3858f3530b,,0]
+# # 终端回复:
+# # [XT*设备ID*LEN*RCALLING]
+# # 实例:[XT*334588000000156*0009*RCALLING]  
+# #   
 class RCALLING_ProtoCol(ProtoCol):#设备拒接接听
     """"""
     TYPE = "RCALLING"
@@ -2644,11 +2705,334 @@ class RTALK_ProtoCol(ProtoCol):#app拒接视频通话
         msg_tmp_d = msg_tmp.split(',')
         screen_NAME = EventMesh.publish("get_screen_NAME")
         if screen_NAME != None:
-            if screen_NAME == "video_outcall":
+            if screen_NAME == "vedioing" or screen_NAME == "voiceing" or screen_NAME == "video_outcall" or screen_NAME == "vedio_incall" or screen_NAME == "voice_incall":
                 # EventMesh.publish("close_jrtc_event")
                 EventMesh.publish("set_UI_high_priority", 0)
-                EventMesh.publish("load_screen", {"screen": "videolist"})
+                EventMesh.publish("return_prev_screen")
+        
+
+
+#云米视频通话
+# [XT*YYYYYYYYYYYYYYY*LEN*JPREG]
+# 实例:
+# [XT*334588000000156*0004*JPREG]
+# 平台回复:
+# [XT*设备ID*LEN*JPREG,账号(整型)]
+# 实例:[XT*334588000000156*0010*JPREG,1087654321]
+# class JPREG_ProtoCol(ProtoCol):#登入注册
+#     """"""
+#     TYPE = "JPREG"
+#     def send(self, event, msg):
+        
+#         # [XT*334588000000156*0005*WLKEY]
+#         send_data = EventMesh.publish("get_new_pid")+"*%s*0005*JPREG"%(self.imei)
+#         MD5_SIGN = self.pack_MD5_head(send_data)
+#         data = "[%s%s]"%(str(MD5_SIGN),send_data)
+#         # print("WLKEY:data:%s"%(data))
+#         # print("WLKEY!!!!!!!!!!!!!")
+#         # 通过socket发送到服务器端
+#         EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND,data)
+
+#     def recv(self, event, msg):
+#         """
+#         @param event:
+#         @param msg: 接收到的下行数据
+#         """
+#         # b'[SZKW*867387060319166*000A*KEYBRD]'
+#         print("JPREG!!!!!!!!!!!!!",msg)
+#         # EventMesh.publish(constants.PROTOCOL.JPREG_SEND)  
+
+# (声网,佰锐的账号是整型)
+# [XT*YYYYYYYYYYYYYYY*LEN*MEMBERS]
+# 实例:[XT*334588000000156*0007*MEMBERS]
+# 平台回复:[XT*设备ID*LEN*MEMBERS,账号1,昵称1,电话1,账号2,昵称2,电话2.....]
+# 实例:
+# [XT*334588000000156*003F*MEMBERS,d3e2f759f9d5af3858f3530,爸爸,13662313580,妈妈,555]
+# 以上数据部分使用Unicode编码,最终上面示例传到服务端将是:
+
+class JMEMBERS_ProtoCol(ProtoCol):#获取账号列表
+    """"""
+    TYPE = "JMEMBERS"
+    def send(self, event, msg):
         
+        # [XT*334588000000156*0005*WLKEY]
+        send_data = EventMesh.publish("get_new_pid")+"*%s*0008*JMEMBERS"%(self.imei)
+        MD5_SIGN = self.pack_MD5_head(send_data)
+        data = "[%s%s]"%(str(MD5_SIGN),send_data)
+        # print("WLKEY:data:%s"%(data))
+        # print("WLKEY!!!!!!!!!!!!!")
+        # 通过socket发送到服务器端
+        EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND,data)
+
+    def recv(self, event, msg):
+        """
+        @param event:
+        @param msg: 接收到的下行数据
+        """
+        # b'[SZKW*876226002021444*0048*MEMBERS,0036003900350031003800330032002C563F563FD83CDF410020D83CDF42002C]'
+        print("JMEMBERS!!!!!!!!!!!!!",msg)
+        msg = msg[1:-1]
+        msg_tmp = msg.decode('ascii')
+        msg_tmp = msg_tmp.split(',')
+
+        videobook = {}
+        msg_tmp = msg_tmp[1:]
+        msg_tmp = msg_tmp[0]
+
+        j = 0
+        i = 0
+        videobook_old = {}
+        videobook_name_tmp = UnicodeHexStr_To_Utf8Str(msg_tmp)
+        lst = videobook_name_tmp.split(",")
+        
+        print("msg_tmp:{} phonebook_oldtmp:{} type:{}".format(msg_tmp,videobook_name_tmp,lst))
+        # 0 1 2 3
+        for vediobook_tmp in lst: 
+            
+            if (j % 3) == 0:#账号
+                videobook_old = vediobook_tmp
+            elif (j % 3) == 1:#名称
+                i+=1
+                videobook_name_cont= "{}:{}".format("%03d"%(i),videobook_old)                                      
+                videobook[videobook_name_cont] = vediobook_tmp
+            j+=1
+        print("videobook!!!:{}".format(str(videobook)))
+        # print("phonebook!!!:{}".format(str(phonebook)))
+        with open("/usr/static/storage_file/videobook.json","w",encoding="utf-8") as fd:
+            ujson.dump(videobook,fd)
+            print("创建视频通话账号")
+        
+        EventMesh.publish("set_videobook_list",[1,videobook])
+        EventMesh.publish("video_updata_list_show")
+        # EventMesh.publish(constants.PROTOCOL.JMEMBERS_SEND)  
+
+# # [X*Y*LEN*CALLING,呼叫者id,会议id,通话类型,Token]
+
+# # 设备回复
+# # [X*Y*LEN*CALLING,音视频状态]
+# # 音视频状态:为0表示正常可通讯状态,否则填上用音视频返回的状态码,比如200,如果未获取到返回状态码,则填1
+# class CALLING_ProtoCol(ProtoCol):#app发起视频通话
+#     """"""
+#     TYPE = "CALLING"
+#     def send(self, event, msg):
+        
+#         # [XT*334588000000156*0005*WLKEY]
+#         send_data = EventMesh.publish("get_new_pid")+"*%s*0007*CALLING"%(self.imei)
+#         MD5_SIGN = self.pack_MD5_head(send_data)
+#         data = "[%s%s,%d]"%(str(MD5_SIGN),send_data,msg)
+#         print("CALLING:send data:%s"%(data))
+#         # print("WLKEY!!!!!!!!!!!!!")
+#         # 通过socket发送到服务器端
+#         EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND,data)
+
+#     def recv(self, event, msg):
+#         """
+#         @param event:
+#         @param msg: 接收到的下行数据
+#         """
+#         # b'[SZKW*867387060319166*000A*CALLING]'
+#         print("CALLING!!!!!!!!!!!!!",msg)
+#         msg = msg[1:-1]
+#         msg_tmp = msg.decode('ascii')
+#         msg_tmp_d = msg_tmp.split(',')
+#         call_id = msg_tmp_d[2]#id
+#         meet_id = msg_tmp_d[1]#会议id
+#         call_type = msg_tmp_d[3]#通话类型id
+#         tokens_data = ""
+#         # tokens_data = msg_tmp_d[4]#tokens
+#         EventMesh.publish("set_vedio_call_id",call_id)#
+#         EventMesh.publish("set_vedio_meet_id",meet_id)#
+#         EventMesh.publish("set_vedio_call_type", call_type)#
+#         EventMesh.publish("set_vedio_tokens_data", tokens_data)#
+
+
+#         # EventMesh.publish("set_vedio_infor",[call_id,meet_id,call_type,tokens_data])#
+#         EventMesh.publish(constants.PROTOCOL.CALLING_SEND,1)
+#         EventMesh.publish("load_screen", {"screen": "vedio_incall"})
+
+# # [XT*YYYYYYYYYYYYYYY*LEN*RCALLING,呼叫者id,会议id/声网频道名(没有则留空,但位置保留),音频还是视频(0为音频,1为视频)]
+# # 实例:
+# # [XT*334588000000156*0007*RCALLING,d3e2f759f9d5af3858f3530b,,0]
+# # 终端回复:
+# # [XT*设备ID*LEN*RCALLING]
+# # 实例:[XT*334588000000156*0009*RCALLING]  
+# #   
+# class RCALLING_ProtoCol(ProtoCol):#设备拒接接听
+#     """"""
+#     TYPE = "RCALLING"
+#     def send(self, event, msg):
+        
+#         # [XT*334588000000156*0005*WLKEY]
+#         send_data = EventMesh.publish("get_new_pid")+"*%s*0008*RCALLING"%(self.imei)
+#         MD5_SIGN = self.pack_MD5_head(send_data)
+#         data = "[%s%s]"%(str(MD5_SIGN),send_data)
+#         print("RCALLING:send data:%s"%(data))
+#         # print("WLKEY!!!!!!!!!!!!!")
+#         # 通过socket发送到服务器端
+#         EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND,data)
+
+#     def recv(self, event, msg):
+#         """
+#         @param event:
+#         @param msg: 接收到的下行数据
+#         """
+#         # b'[SZKW*867387060319166*000A*RCALLING]'
+#         print("RCALLING!!!!!!!!!!!!!")
+#         EventMesh.publish(constants.PROTOCOL.RCALLING_SEND)
+
+# class AGTALK_ProtoCol(ProtoCol):#设备发起视频通话与app接听视频通话
+#     """"""
+#     TYPE = "RINGING"
+#     def send(self, event, msg):
+        
+#         # [XT*334588000000156*0005*WLKEY]
+#         send_data = EventMesh.publish("get_new_pid")+"*%s*0007*RINGING"%(self.imei)
+#         MD5_SIGN = self.pack_MD5_head(send_data)
+#         data = "[%s%s,%d,%s]"%(str(MD5_SIGN),send_data,msg[0],msg[1])
+#         print("AGTALK:send data:%s"%(data))
+#         # print("WLKEY!!!!!!!!!!!!!")
+#         # 通过socket发送到服务器端
+#         EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND,data)
+
+#     def recv(self, event, msg):
+#         """
+#         @param event:
+#         @param msg: 接收到的下行数据
+#         """
+#         # b'[SZKW*876226002021444*007B*AGTALK,0,01lqlyqzzQHpfwv5g7jFVC2H6Ha2tHFpMlfSm5sd2uo7o55JEcc=OVxewje6MjP0NgEODwsLDwkJCwkLCA0NDQ==,8762260020214441701226895]'
+        
+#         # msg = msg[1:-1]
+#         # msg_tmp = msg.decode('ascii')
+#         # msg_tmp_d = msg_tmp.split(',')
+#         # call_state = int(msg_tmp_d[1])#id
+       
+#         # if call_state == 0:#可正常通话
+#         #     tokens_data = msg_tmp_d[2]#会议id
+#         #     meet_id = msg_tmp_d[3]#会议id
+#         #     EventMesh.publish("set_vedio_meet_id", meet_id)#
+#         #     EventMesh.publish("set_vedio_tokens_data", tokens_data)#
+#         #     EventMesh.publish("open_vedio_infor")
+#         #     # EventMesh.publish("set_UI_high_priority", 0)
+#         #     # EventMesh.publish("load_screen", {"screen": "vedio_answer"})
+#         #     # EventMesh.publish("set_vedio_infor",[call_id,meet_id,call_type,tokens_data])#
+        
+        
+
+#         print("RINGING!!!!!!!!!!!!!")
+
+# 注:终端一旦收到该请求,则退出当前通话
+# [DL*YYYYYYYYYYYYYYY*LEN*HANGUP]
+# 实 例 : [DL*334588000000156*0006*HANGUP]
+# 终端回复:
+# [DL*设备 ID*LEN*HANGUP]
+
+class HANGUP_ProtoCol(ProtoCol):#app拒接视频通话
+    """"""
+    TYPE = "HANGUP"
+    def send(self, event, msg):
+        
+        # [XT*334588000000156*0005*WLKEY]
+        send_data = EventMesh.publish("get_new_pid")+"*%s*0006*HANGUP"%(self.imei)
+        MD5_SIGN = self.pack_MD5_head(send_data)
+        data = "[%s%s]"%(str(MD5_SIGN),send_data)
+        print("AGTALK:send data:%s"%(data))
+        # print("WLKEY!!!!!!!!!!!!!")
+        # 通过socket发送到服务器端
+        EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND,data)
+
+    def recv(self, event, msg):
+        """
+        @param event:
+        @param msg: 接收到的下行数据
+        """
+        # b'[SZKW*867387060319166*000A*RTALK]'
+        print("HANGUP!!!!!!!!!!!!!")  
+        # [SZKW*876226002021444*003A*RTALK,3ef20e64f3abb84b27f7d764,8762260020214441701226522,1]'
+        # msg = msg[1:-1]
+        # msg_tmp = msg.decode('ascii')
+        # msg_tmp_d = msg_tmp.split(',')
+        # screen_NAME = EventMesh.publish("get_screen_NAME")
+        # if screen_NAME != None:
+        #     if screen_NAME == "video_outcall":
+        #         # EventMesh.publish("close_jrtc_event")
+        #         EventMesh.publish("set_UI_high_priority", 0)
+        #         EventMesh.publish("load_screen", {"screen": "videolist"})
+        
+        EventMesh.publish(constants.PROTOCOL.HANGUP_SEND)
+
+# 注:终端一旦收到该请求,则退出当前通话
+# [DL*YYYYYYYYYYYYYYY*LEN*CALLCANCEL]
+# 实 例 : [DL*334588000000156*000A*CALLCANCEL]
+# 终端回复:
+# [DL*设备 ID*LEN*CALLCANCEL]
+class CALLCANCEL_ProtoCol(ProtoCol):#app拒接视频通话
+    """"""
+    TYPE = "CALLCANCEL"
+    def send(self, event, msg):
+        
+        # [XT*334588000000156*0005*WLKEY]
+        send_data = EventMesh.publish("get_new_pid")+"*%s*000A*CALLCANCEL"%(self.imei)
+        MD5_SIGN = self.pack_MD5_head(send_data)
+        data = "[%s%s]"%(str(MD5_SIGN),send_data)
+        print("AGTALK:send data:%s"%(data))
+        # print("WLKEY!!!!!!!!!!!!!")
+        # 通过socket发送到服务器端
+        EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND,data)
+
+    def recv(self, event, msg):
+        """
+        @param event:
+        @param msg: 接收到的下行数据
+        """
+        # b'[SZKW*867387060319166*000A*RTALK]'
+        print("CALLCANCEL!!!!!!!!!!!!!")  
+        # [SZKW*876226002021444*003A*RTALK,3ef20e64f3abb84b27f7d764,8762260020214441701226522,1]'
+        # msg = msg[1:-1]
+        # msg_tmp = msg.decode('ascii')
+        # msg_tmp_d = msg_tmp.split(',')
+        # screen_NAME = EventMesh.publish("get_screen_NAME")
+        # if screen_NAME != None:
+        #     if screen_NAME == "video_outcall":
+        #         # EventMesh.publish("close_jrtc_event")
+        #         EventMesh.publish("set_UI_high_priority", 0)
+        #         EventMesh.publish("load_screen", {"screen": "videolist"})
+        
+        EventMesh.publish(constants.PROTOCOL.CALLCANCEL_SEND)
+
+# class RTALK_ProtoCol(ProtoCol):#app拒接视频通话
+#     """"""
+#     TYPE = "RTALK"
+#     def send(self, event, msg):
+        
+#         # [XT*334588000000156*0005*WLKEY]
+#         send_data = EventMesh.publish("get_new_pid")+"*%s*0005*RTALK"%(self.imei)
+#         MD5_SIGN = self.pack_MD5_head(send_data)
+#         data = "[%s%s,%d,%s]"%(str(MD5_SIGN),send_data,msg[0],msg[1])
+#         print("AGTALK:send data:%s"%(data))
+#         # print("WLKEY!!!!!!!!!!!!!")
+#         # 通过socket发送到服务器端
+#         EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND,data)
+
+#     def recv(self, event, msg):
+#         """
+#         @param event:
+#         @param msg: 接收到的下行数据
+#         """
+#         # b'[SZKW*867387060319166*000A*RTALK]'
+#         print("RTALK!!!!!!!!!!!!!")  
+#         # [SZKW*876226002021444*003A*RTALK,3ef20e64f3abb84b27f7d764,8762260020214441701226522,1]'
+#         msg = msg[1:-1]
+#         msg_tmp = msg.decode('ascii')
+#         msg_tmp_d = msg_tmp.split(',')
+#         screen_NAME = EventMesh.publish("get_screen_NAME")
+#         if screen_NAME != None:
+#             if screen_NAME == "video_outcall":
+#                 # EventMesh.publish("close_jrtc_event")
+#                 EventMesh.publish("set_UI_high_priority", 0)
+#                 EventMesh.publish("load_screen", {"screen": "videolist"})
+        
+
+
 
 
 class ProtoColResolver(object):
index af78ed2..7dac7ec 100644 (file)
@@ -529,19 +529,19 @@ class PhoneScreen(Screen):
             self.meta = phone_screen
 
             phone_one.add_event_cb(lambda e: EventMesh.callback_wrapper(self.one(e)),
-                                     lv.EVENT.CLICKED, None)
+                                     lv.EVENT.SHORT_CLICKED, None)
             phone_two.add_event_cb(lambda e: EventMesh.callback_wrapper(self.two(e)),
-                                        lv.EVENT.CLICKED, None)
+                                        lv.EVENT.SHORT_CLICKED, None)
             phone_three.add_event_cb(lambda e: EventMesh.callback_wrapper(self.three(e)),
-                                        lv.EVENT.CLICKED, None)
+                                        lv.EVENT.SHORT_CLICKED, None)
             phone_four.add_event_cb(lambda e: EventMesh.callback_wrapper(self.four(e)),
-                                        lv.EVENT.CLICKED, None)
+                                        lv.EVENT.SHORT_CLICKED, None)
             phone_five.add_event_cb(lambda e: EventMesh.callback_wrapper(self.five(e)),
-                                        lv.EVENT.CLICKED, None)
+                                        lv.EVENT.SHORT_CLICKED, None)
             phone_six.add_event_cb(lambda e: EventMesh.callback_wrapper(self.six(e)),
-                                        lv.EVENT.CLICKED, None)
+                                        lv.EVENT.SHORT_CLICKED, None)
             phone_seven.add_event_cb(lambda e: EventMesh.callback_wrapper(self.start(e)),
-                                        lv.EVENT.CLICKED, None)
+                                        lv.EVENT.SHORT_CLICKED, None)
             
             phone_seven.add_event_cb(lambda e: EventMesh.callback_wrapper(self.pressed_start(e)),
                                          lv.EVENT.LONG_PRESSED, None)#长按显示+
@@ -550,9 +550,9 @@ class PhoneScreen(Screen):
                                          lv.EVENT.RELEASED, None)#释放按键
 
             phone_eight.add_event_cb(lambda e: EventMesh.callback_wrapper(self.eight(e)),
-                                        lv.EVENT.CLICKED, None)
+                                        lv.EVENT.SHORT_CLICKED, None)
             phone_nine.add_event_cb(lambda e: EventMesh.callback_wrapper(self.start(e)),
-                                         lv.EVENT.CLICKED, None)
+                                         lv.EVENT.SHORT_CLICKED, None)
             
             phone_nine.add_event_cb(lambda e: EventMesh.callback_wrapper(self.pressed_start(e)),
                                         lv.EVENT.LONG_PRESSED, None)#长按显示+
@@ -561,10 +561,10 @@ class PhoneScreen(Screen):
                                          lv.EVENT.RELEASED, None)#释放按键
 
             # phone_zero.add_event_cb(lambda e: EventMesh.callback_wrapper(self.zero(e)),
-            #                             lv.EVENT.CLICKED, None)
+            #                             lv.EVENT.SHORT_CLICKED, None)
             
             phone_zero.add_event_cb(lambda e: EventMesh.callback_wrapper(self.start(e)),
-                                         lv.EVENT.CLICKED, None)#短按显示* 
+                                         lv.EVENT.SHORT_CLICKED, None)#短按显示* 
 
             phone_zero.add_event_cb(lambda e: EventMesh.callback_wrapper(self.pressed_start(e)),
                                         lv.EVENT.LONG_PRESSED, None)#长按显示+
@@ -573,14 +573,14 @@ class PhoneScreen(Screen):
                                          lv.EVENT.RELEASED, None)#释放按键
 
             phone_call.add_event_cb(lambda e: EventMesh.callback_wrapper(self.call(e)),
-                                        lv.EVENT.CLICKED, None)
+                                        lv.EVENT.SHORT_CLICKED, None)
             # phone_contact_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.contact(e)),
-            #                             lv.EVENT.CLICKED, None)
+            #                             lv.EVENT.SHORT_CLICKED, None)
             phone_delete.add_event_cb(lambda e: EventMesh.callback_wrapper(self.delete(e)),
-                                        lv.EVENT.CLICKED, None)
+                                        lv.EVENT.SHORT_CLICKED, None)
             
             # phone_start.add_event_cb(lambda e: EventMesh.callback_wrapper(self.start(e)),
-            #                             lv.EVENT.CLICKED, None)#短按显示* 
+            #                             lv.EVENT.SHORT_CLICKED, None)#短按显示* 
             
             # phone_start.add_event_cb(lambda e: EventMesh.callback_wrapper(self.pressed_start(e)),
             #                             lv.EVENT.LONG_PRESSED, None)#长按显示+
@@ -590,7 +590,7 @@ class PhoneScreen(Screen):
             
 
             # phone_hash.add_event_cb(lambda e: EventMesh.callback_wrapper(self.hash(e)),
-            #                             lv.EVENT.CLICKED, None)
+            #                             lv.EVENT.SHORT_CLICKED, None)
             
 
         self.phone_num=''
@@ -912,7 +912,7 @@ class CallLogScreen(Screen):
                 _btn = lv.btn(self.call_log_detail_list)
                 _btn.add_flag(lv.obj.FLAG.CLICKABLE)
                 _btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.calling(e)),
-                                        lv.EVENT.CLICKED, None)
+                                        lv.EVENT.SHORT_CLICKED, None)
                 _btn.add_flag(lv.obj.FLAG.HIDDEN)
                 _btn_label2 = lv.label(_btn)
                
@@ -973,7 +973,7 @@ class CallLogScreen(Screen):
                     self.call_log_detail_list_dict[h]["_btn"].set_style_bg_color(lv.color_make(0xff, 0xff, 0xff), lv.PART.MAIN | lv.STATE.DEFAULT)
                     # self.call_log_detail_list_dict[h]["_btn"].add_style(style_contact_btn, lv.PART.MAIN | lv.STATE.DEFAULT)
                     self.call_log_detail_list_dict[h]["_btn"].add_event_cb(lambda e: EventMesh.callback_wrapper(self.calling(e)),
-                                            lv.EVENT.CLICKED, None)
+                                            lv.EVENT.SHORT_CLICKED, None)
 
 
                     #_btn_label2 = lv.label(_btn)
@@ -1022,7 +1022,7 @@ class CallLogScreen(Screen):
         
     def calling(self,e):
         code = e.get_code()
-        if code == lv.EVENT.CLICKED:
+        if code == lv.EVENT.SHORT_CLICKED:
             global call_log_screen,contacts_cont_list ,call_log_title ,none_call_log_title 
             # print("e.get_text():{} {}".format(e.get_target().get_child(0).get_text(),e.get_target().get_child(3).get_text()))
             phonnum = str(e.get_target().get_child(0).get_text())
@@ -1143,7 +1143,7 @@ class DialingScreen(Screen):
             hangup_imgbtn.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
             hangup_imgbtn.set_pos(48, 90)
             hangup_imgbtn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.hangup(e)),
-                                    lv.EVENT.CLICKED, None)
+                                    lv.EVENT.SHORT_CLICKED, None)
             self.meta = dialing_screen
         if dialing_name != None:
             name = EventMesh.publish("get_phonename")#获取拨打电话名称
@@ -1302,7 +1302,7 @@ class wechatFailedScreen(Screen):#录音失败提示
         EventMesh.publish("load_screen",{"screen":"wechat"})
 
     def btn8_press(self):
-        EventMesh.publish("load_screen",{"screen":"wechat"})
+        EventMesh.publish("load_screen",{"screen":"main_menu"})
 
 
 
@@ -1464,10 +1464,10 @@ class NoSimPowerScreen(Screen):#
 
             self.meta = no_sim_power_screen
             no_sim_power_screen_comfirm_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.confirm(e)),
-                                     lv.EVENT.CLICKED, None)
+                                     lv.EVENT.SHORT_CLICKED, None)
         
             no_sim_power_screen_cancel_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.cancel(e)),
-                                     lv.EVENT.CLICKED, None)
+                                     lv.EVENT.SHORT_CLICKED, None)
 
     def confirm(self,e):
         EventMesh.publish("load_screen", {"screen": "poweroff_comfirm"})
@@ -1547,7 +1547,7 @@ class DialingNoPlayPopupScreen(Screen):#正在拨号中...未打出
             dialing_popup_hangup_imgbtn.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
             dialing_popup_hangup_imgbtn.set_pos(48, 90)
             dialing_popup_hangup_imgbtn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.hangup(e)),
-                                    lv.EVENT.CLICKED, None)
+                                    lv.EVENT.SHORT_CLICKED, None)
             self.meta = dialing_popup_screen
         if dialing_popup_name != None:
             name = EventMesh.publish("get_phonename")#获取拨打电话名称
@@ -1831,8 +1831,8 @@ class MessageFullScreen(Screen):
             # message_full_cancel.set_ext_click_area(63)
             self.meta = message_full_screen
             
-            message_full_confirm.add_event_cb(lambda e: EventMesh.callback_wrapper(self.confirm(e)),lv.EVENT.CLICKED, None)
-            message_full_cancel.add_event_cb(lambda e: EventMesh.callback_wrapper(self.concel(e)),lv.EVENT.CLICKED, None)
+            message_full_confirm.add_event_cb(lambda e: EventMesh.callback_wrapper(self.confirm(e)),lv.EVENT.SHORT_CLICKED, None)
+            message_full_cancel.add_event_cb(lambda e: EventMesh.callback_wrapper(self.concel(e)),lv.EVENT.SHORT_CLICKED, None)
 
 
     def remove_all_sms_cb(self, event, msg):
@@ -2052,7 +2052,7 @@ class PopupScreen(Screen):
             for i in range(MSG_MAX):
                 msg_btn = lv.btn(self.sms_detail_list)
                 msg_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.sms_cb(e)),
-                                        lv.EVENT.CLICKED, None)
+                                        lv.EVENT.SHORT_CLICKED, None)
                 msg_btn.add_flag(lv.obj.FLAG.HIDDEN)
                 _btn_label2 = lv.label(msg_btn)
                 _btn_label3 = lv.label(msg_btn)
@@ -2258,7 +2258,7 @@ class PopupScreen(Screen):
                     self.sms_detail_list_dict[i]["msg_btn"].set_pos(0,47*count)
                     self.sms_detail_list_dict[i]["msg_btn"].add_style(style_sms_bg_btn, lv.PART.MAIN | lv.STATE.DEFAULT)
                     # self.sms_detail_list_dict[i]["msg_btn"].add_event_cb(lambda e: EventMesh.callback_wrapper(self.sms_cb(e)),
-                    #                         lv.EVENT.CLICKED, None)
+                    #                         lv.EVENT.SHORT_CLICKED, None)
                 
                     title = tmp[0] 
                     # print("title:{}".format(title))
@@ -2315,7 +2315,7 @@ class PopupScreen(Screen):
             
     def sms_cb(self,e):
         code = e.get_code()
-        if code == lv.EVENT.CLICKED:
+        if code == lv.EVENT.SHORT_CLICKED:
             print("tp test!!!!!!!!!!!!!!")
             #上传标题和内容
             _name = e.get_target().get_child(0).get_text()
@@ -2550,7 +2550,7 @@ class HeartrateScreen(Screen):
 
             self.meta = heartrate_screen
             heartrate_reset_btn_img.add_event_cb(lambda e: EventMesh.callback_wrapper(self.restart_up(e)),
-                lv.EVENT.CLICKED, None)
+                lv.EVENT.SHORT_CLICKED, None)
         heartrate_done_label.set_text(" ")
         heartrate_bpm_label.set_text("-- bpm")
         heartrate_start_label.set_text("正在测量中.")
@@ -2981,27 +2981,27 @@ class ToolboxScreen(Screen):
             toolbox_calcut_img_label.set_style_text_align(lv.TEXT_ALIGN.LEFT, 0)
             toolbox_calcut_img_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
 
-            toolbox_step_img_btn_1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_tool_cb(e, "step")), lv.EVENT.CLICKED, None)
-            toolbox_weather_img_btn_1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_tool_cb(e, "weather")), lv.EVENT.CLICKED, None)
-            toolbox_alarm_img_btn_1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_tool_cb(e, "clk_list")), lv.EVENT.CLICKED, None)
-            # toolbox_sms_img.add_event_cb(lambda e: EventMesh.callback_wrapper(self.load_screen(e, {"screen": "popup"})), lv.EVENT.CLICKED, None)
-            toolbox_countdown_img_btn_1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_tool_cb(e,"countdown")), lv.EVENT.CLICKED, None)
-            toolbox_stopwatch_img_btn_1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_tool_cb(e, "stopwatch")), lv.EVENT.CLICKED, None)
+            toolbox_step_img_btn_1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_tool_cb(e, "step")), lv.EVENT.SHORT_CLICKED, None)
+            toolbox_weather_img_btn_1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_tool_cb(e, "weather")), lv.EVENT.SHORT_CLICKED, None)
+            toolbox_alarm_img_btn_1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_tool_cb(e, "clk_list")), lv.EVENT.SHORT_CLICKED, None)
+            # toolbox_sms_img.add_event_cb(lambda e: EventMesh.callback_wrapper(self.load_screen(e, {"screen": "popup"})), lv.EVENT.SHORT_CLICKED, None)
+            toolbox_countdown_img_btn_1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_tool_cb(e,"countdown")), lv.EVENT.SHORT_CLICKED, None)
+            toolbox_stopwatch_img_btn_1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_tool_cb(e, "stopwatch")), lv.EVENT.SHORT_CLICKED, None)
             
-            toolbox_calcut_img_btn_1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_tool_cb(e, "calculator")), lv.EVENT.CLICKED, None)
+            toolbox_calcut_img_btn_1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_tool_cb(e, "calculator")), lv.EVENT.SHORT_CLICKED, None)
             
-            # toolbox_step_img_label.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_tool_cb(e, "step")), lv.EVENT.CLICKED, None)
-            # toolbox_weather_img_label.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_tool_cb(e, "weather")), lv.EVENT.CLICKED, None)
-            # toolbox_alarm_img_label.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_tool_cb(e, "clk_list")), lv.EVENT.CLICKED, None)
-            # # toolbox_sms_img.add_event_cb(lambda e: EventMesh.callback_wrapper(self.load_screen(e, {"screen": "popup"})), lv.EVENT.CLICKED, None)
-            # toolbox_countdown_img_label.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_tool_cb(e, "countdown")), lv.EVENT.CLICKED, None)
-            # toolbox_stopwatch_img_label_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_tool_cb(e, "stopwatch")), lv.EVENT.CLICKED, None)
+            # toolbox_step_img_label.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_tool_cb(e, "step")), lv.EVENT.SHORT_CLICKED, None)
+            # toolbox_weather_img_label.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_tool_cb(e, "weather")), lv.EVENT.SHORT_CLICKED, None)
+            # toolbox_alarm_img_label.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_tool_cb(e, "clk_list")), lv.EVENT.SHORT_CLICKED, None)
+            # # toolbox_sms_img.add_event_cb(lambda e: EventMesh.callback_wrapper(self.load_screen(e, {"screen": "popup"})), lv.EVENT.SHORT_CLICKED, None)
+            # toolbox_countdown_img_label.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_tool_cb(e, "countdown")), lv.EVENT.SHORT_CLICKED, None)
+            # toolbox_stopwatch_img_label_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_tool_cb(e, "stopwatch")), lv.EVENT.SHORT_CLICKED, None)
             
 
             toolbox_step_img_btn_1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_tool_cb(e, "step")), lv.EVENT.PRESSING, None)
             toolbox_weather_img_btn_1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_tool_cb(e, "weather")), lv.EVENT.PRESSING, None)
             toolbox_alarm_img_btn_1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_tool_cb(e, "clk_list")), lv.EVENT.PRESSING, None)
-            # toolbox_sms_img.add_event_cb(lambda e: EventMesh.callback_wrapper(self.load_screen(e, {"screen": "popup"})), lv.EVENT.CLICKED, None)
+            # toolbox_sms_img.add_event_cb(lambda e: EventMesh.callback_wrapper(self.load_screen(e, {"screen": "popup"})), lv.EVENT.SHORT_CLICKED, None)
             toolbox_countdown_img_btn_1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_tool_cb(e, "countdown")), lv.EVENT.PRESSING, None)
             toolbox_stopwatch_img_btn_1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_tool_cb(e, "stopwatch")), lv.EVENT.PRESSING, None)
             toolbox_calcut_img_btn_1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_tool_cb(e, "calculator")), lv.EVENT.PRESSING, None)
@@ -3009,7 +3009,7 @@ class ToolboxScreen(Screen):
             # toolbox_step_img_label.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_tool_cb(e,"step")), lv.EVENT.PRESSING, None)
             # toolbox_weather_img_label.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_tool_cb(e, "weather")), lv.EVENT.PRESSING, None)
             # toolbox_alarm_img_label.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_tool_cb(e, "clk_list")), lv.EVENT.PRESSING, None)
-            # # toolbox_sms_img.add_event_cb(lambda e: EventMesh.callback_wrapper(self.load_screen(e, {"screen": "popup"})), lv.EVENT.CLICKED, None)
+            # # toolbox_sms_img.add_event_cb(lambda e: EventMesh.callback_wrapper(self.load_screen(e, {"screen": "popup"})), lv.EVENT.SHORT_CLICKED, None)
             # toolbox_countdown_img_label.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_tool_cb(e, "countdown")), lv.EVENT.PRESSING, None)
             # toolbox_stopwatch_img_label_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_tool_cb(e, "stopwatch")), lv.EVENT.PRESSING, None)
             
@@ -3029,7 +3029,7 @@ class ToolboxScreen(Screen):
             #print("PRESSING")
             self.is_sliding += 1
 
-        elif  code == lv.EVENT.CLICKED:
+        elif  code == lv.EVENT.SHORT_CLICKED:
             #utime.sleep_ms(10)
             print("1self.is_sliding",self.is_sliding)
             if self.is_sliding <= 5 and self.is_sliding != 0:#如果是在滑动中则不需要点击事件
@@ -3129,9 +3129,9 @@ class IncomingCallScreen(Screen):
             incoming_call_hangup.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
             incoming_call_hangup.set_src("U:/static/hang_up.png")
             incoming_call_answer.add_event_cb(lambda e: EventMesh.callback_wrapper(self.answer(e)),
-                                     lv.EVENT.CLICKED, None)
+                                     lv.EVENT.SHORT_CLICKED, None)
             incoming_call_hangup.add_event_cb(lambda e: EventMesh.callback_wrapper(self.hangup(e)),
-                                     lv.EVENT.CLICKED, None)
+                                     lv.EVENT.SHORT_CLICKED, None)
             self.meta = incoming_call_screen 
         EventMesh.publish("set_UI_high_priority", 1)
 
@@ -3401,14 +3401,14 @@ class OnCallScreen(Screen):
             on_call_volum_reduce.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
             on_call_volum_reduce.set_src("U:/static/REDUCE_VOLUM_ICON.png")
             # on_call_volum_reduce.add_event_cb(lambda e: EventMesh.callback_wrapper(self.reduce_volum_size(e)),
-            #                          lv.EVENT.CLICKED, None)
+            #                          lv.EVENT.SHORT_CLICKED, None)
             
             on_call_volum_reduce_btn = lv.img(on_call_obj)
             on_call_volum_reduce_btn.set_size(80, 40)
             on_call_volum_reduce_btn.add_flag(lv.obj.FLAG.CLICKABLE)
             on_call_volum_reduce_btn.set_pos(48, 50)
             on_call_volum_reduce_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.add_volum_size(e)),
-                                     lv.EVENT.CLICKED, None)
+                                     lv.EVENT.SHORT_CLICKED, None)
 
             
             on_call_volum_add = lv.img(on_call_obj)
@@ -3418,14 +3418,14 @@ class OnCallScreen(Screen):
             on_call_volum_add.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
             on_call_volum_add.set_src("U:/static/VOLUM_ADD_ICON.png")
             # on_call_volum_add.add_event_cb(lambda e: EventMesh.callback_wrapper(self.add_volum_size(e)),
-            #                          lv.EVENT.CLICKED, None)
+            #                          lv.EVENT.SHORT_CLICKED, None)
             
             on_call_volum_add_btn = lv.img(on_call_obj)
             on_call_volum_add_btn.set_size(40, 40)
             on_call_volum_add_btn.add_flag(lv.obj.FLAG.CLICKABLE)
             on_call_volum_add_btn.set_pos(0, 50)
             on_call_volum_add_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.reduce_volum_size(e)),
-                                     lv.EVENT.CLICKED, None)
+                                     lv.EVENT.SHORT_CLICKED, None)
 
 
             on_call_volum_label = lv.label(on_call_obj)
@@ -3436,7 +3436,7 @@ class OnCallScreen(Screen):
             on_call_volum_label.set_style_text_align(lv.TEXT_ALIGN.CENTER,0)
             on_call_volum_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
             on_call_volum_label.add_event_cb(lambda e: EventMesh.callback_wrapper(self.open_volum_show(e)),
-                                    lv.EVENT.CLICKED, None)
+                                    lv.EVENT.SHORT_CLICKED, None)
 
             on_call_hangup = lv.img(on_call_obj)
             on_call_hangup.set_size(32, 32)
@@ -3445,7 +3445,7 @@ class OnCallScreen(Screen):
             on_call_hangup.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
             on_call_hangup.set_src("U:/static/hang_up.png")
             on_call_hangup.add_event_cb(lambda e: EventMesh.callback_wrapper(self.hangup(e)),
-                                     lv.EVENT.CLICKED, None)
+                                     lv.EVENT.SHORT_CLICKED, None)
             
             on_call_tab_label = lv.label(on_call_obj)
             on_call_tab_label.set_pos(80, 100)
@@ -3455,7 +3455,7 @@ class OnCallScreen(Screen):
             on_call_tab_label.set_style_text_align(lv.TEXT_ALIGN.CENTER,0)
             on_call_tab_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
             on_call_tab_label.add_event_cb(lambda e: EventMesh.callback_wrapper(self.on_call_tab_show(e)),
-                                    lv.EVENT.CLICKED, None)
+                                    lv.EVENT.SHORT_CLICKED, None)
 
             on_call_screen_tab = lv.obj(on_call_screen)
             on_call_screen_tab.set_size(128,128)
@@ -3483,7 +3483,7 @@ class OnCallScreen(Screen):
             on_call_phone_return_btn.set_pos(0, 0)
             on_call_phone_return_btn.set_size(50, 25)
             on_call_phone_return_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.on_return_show(e)),
-                                    lv.EVENT.CLICKED, None)
+                                    lv.EVENT.SHORT_CLICKED, None)
 
             on_call_phone_one = lv.img(on_call_screen_tab)
             on_call_phone_one.set_src("U:/static/IMAGE_NUMBER_KEY1_ICON.png")
@@ -3578,37 +3578,37 @@ class OnCallScreen(Screen):
 
             self.meta = on_call_screen
             on_call_phone_jing.add_event_cb(lambda e: EventMesh.callback_wrapper(self.jingpressed_start(e)),
-                                     lv.EVENT.CLICKED, None)
+                                     lv.EVENT.SHORT_CLICKED, None)
             
             on_call_phone_xing.add_event_cb(lambda e: EventMesh.callback_wrapper(self.xingpressed_start(e)),
-                                     lv.EVENT.CLICKED, None)
+                                     lv.EVENT.SHORT_CLICKED, None)
 
             on_call_phone_one.add_event_cb(lambda e: EventMesh.callback_wrapper(self.one(e)),
-                                     lv.EVENT.CLICKED, None)
+                                     lv.EVENT.SHORT_CLICKED, None)
             on_call_phone_two.add_event_cb(lambda e: EventMesh.callback_wrapper(self.two(e)),
-                                        lv.EVENT.CLICKED, None)
+                                        lv.EVENT.SHORT_CLICKED, None)
             on_call_phone_three.add_event_cb(lambda e: EventMesh.callback_wrapper(self.three(e)),
-                                        lv.EVENT.CLICKED, None)
+                                        lv.EVENT.SHORT_CLICKED, None)
             on_call_phone_four.add_event_cb(lambda e: EventMesh.callback_wrapper(self.four(e)),
-                                        lv.EVENT.CLICKED, None)
+                                        lv.EVENT.SHORT_CLICKED, None)
             on_call_phone_five.add_event_cb(lambda e: EventMesh.callback_wrapper(self.five(e)),
-                                        lv.EVENT.CLICKED, None)
+                                        lv.EVENT.SHORT_CLICKED, None)
             on_call_phone_six.add_event_cb(lambda e: EventMesh.callback_wrapper(self.six(e)),
-                                        lv.EVENT.CLICKED, None)
+                                        lv.EVENT.SHORT_CLICKED, None)
             on_call_phone_seven.add_event_cb(lambda e: EventMesh.callback_wrapper(self.endpressed_start(e)),
-                                        lv.EVENT.CLICKED, None)
+                                        lv.EVENT.SHORT_CLICKED, None)
 
             on_call_phone_eight.add_event_cb(lambda e: EventMesh.callback_wrapper(self.eight(e)),
-                                        lv.EVENT.CLICKED, None)
+                                        lv.EVENT.SHORT_CLICKED, None)
             
             on_call_phone_nine.add_event_cb(lambda e: EventMesh.callback_wrapper(self.nine_endpressed_start(e)),
-                                         lv.EVENT.CLICKED, None)
+                                         lv.EVENT.SHORT_CLICKED, None)
 
             # phone_zero.add_event_cb(lambda e: EventMesh.callback_wrapper(self.zero(e)),
-            #                             lv.EVENT.CLICKED, None)
+            #                             lv.EVENT.SHORT_CLICKED, None)
             
             on_call_phone_zero.add_event_cb(lambda e: EventMesh.callback_wrapper(self.start(e)),
-                                         lv.EVENT.CLICKED, None)#短按显示* 
+                                         lv.EVENT.SHORT_CLICKED, None)#短按显示* 
 
             on_call_phone_zero.add_event_cb(lambda e: EventMesh.callback_wrapper(self.pressed_start(e)),
                                         lv.EVENT.LONG_PRESSED, None)#长按显示+
@@ -4001,7 +4001,8 @@ class StepScreen(Screen):
         self.timer.stop()
 
     def done_return(self):
-        EventMesh.publish("load_screen", {"screen": "toolbox"})
+        EventMesh.publish("return_prev_screen")
+        # EventMesh.publish("load_screen", {"screen": "toolbox"})
 
     def btn1_release(self):
         EventMesh.publish("load_screen", {"screen": "toolbox"})
@@ -4164,7 +4165,8 @@ class WeatherScreen(Screen):
                 no_connect_label1.set_text("请联网后重试")
 
     def done_return(self):
-        EventMesh.publish("load_screen", {"screen": "toolbox"})
+        EventMesh.publish("return_prev_screen")
+        # EventMesh.publish("load_screen", {"screen": "toolbox"})
 
     def btn1_release(self):
         EventMesh.publish("load_screen", {"screen": "toolbox"})
@@ -4256,7 +4258,7 @@ class ContactsScreen(Screen):
                 contact_btn = lv.btn(self.contact_detail_list)
                 contact_btn.add_flag(lv.obj.FLAG.CLICKABLE)
                 contact_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.calling_cb(e)),
-                                        lv.EVENT.CLICKED, None)
+                                        lv.EVENT.SHORT_CLICKED, None)
                 contact_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.calling_cb(e)), lv.EVENT.PRESSING, None)
                 contact_btn.add_flag(lv.obj.FLAG.HIDDEN)
                 # contact_btn.add_style(style_press_btn, lv.PART.MAIN | lv.STATE.PRESSED)
@@ -4314,7 +4316,7 @@ class ContactsScreen(Screen):
                 # add_style(style_contact_btn, lv.PART.MAIN | lv.STATE.DEFAULT)
                 # contact_btn.add_style(style_contact_btn_pressed, lv.PART.MAIN | lv.STATE.PRESSED)
                 # self.contact_detail_listt_dict[i]["contact_btn"].add_event_cb(lambda e: EventMesh.callback_wrapper(self.calling(e)),
-                #                         lv.EVENT.CLICKED, None)
+                #                         lv.EVENT.SHORT_CLICKED, None)
 
                 #contact_btn_label_1 = lv.label(contact_btn)
                 self.contact_detail_listt_dict[i]["contact_btn_label_1"].set_pos(0, 0)
@@ -4358,7 +4360,7 @@ class ContactsScreen(Screen):
             #print("PRESSING")
             self.is_sliding += 1
 
-        elif  code == lv.EVENT.CLICKED:
+        elif  code == lv.EVENT.SHORT_CLICKED:
             #utime.sleep_ms(10)
             print("1self.is_sliding",self.is_sliding)
             if self.is_sliding <= 5 and self.is_sliding != 0:#如果是在滑动中则不需要点击事件
@@ -4557,7 +4559,7 @@ class TemperatureScreen(Screen):
 
             self.meta = temperature_screen
             temp_reset_btn_img.add_event_cb(lambda e: EventMesh.callback_wrapper(self.restart_up(e)),
-                lv.EVENT.CLICKED, None)
+                lv.EVENT.SHORT_CLICKED, None)
             
         temperature_bpm_label.set_text("- -")
         temperature_start_label.set_text("正在测量中.")
@@ -4967,7 +4969,7 @@ class Spo2Screen(Screen):
 
             self.meta = spo2_screen
             spo2_reset_btn_img.add_event_cb(lambda e: EventMesh.callback_wrapper(self.restart_up(e)),
-                lv.EVENT.CLICKED, None)
+                lv.EVENT.SHORT_CLICKED, None)
 
     def post_processor_after_initialization(self):
         self.point = 0
@@ -5413,23 +5415,23 @@ class CountdownScreen(Screen):
             self.meta = countdown_screen
 
             countdown_sec_up_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.sec_up(e)),
-                                        lv.EVENT.CLICKED, None)
+                                        lv.EVENT.SHORT_CLICKED, None)
             countdown_sec_down_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.sec_down(e)),
-                                        lv.EVENT.CLICKED, None)
+                                        lv.EVENT.SHORT_CLICKED, None)
             countdown_min_up_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.min_up(e)),
-                                        lv.EVENT.CLICKED, None)
+                                        lv.EVENT.SHORT_CLICKED, None)
             countdown_min_down_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.min_down(e)),
-                                        lv.EVENT.CLICKED, None)
+                                        lv.EVENT.SHORT_CLICKED, None)
             countdown_hour_up_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.hour_up(e)),
-                                        lv.EVENT.CLICKED, None)
+                                        lv.EVENT.SHORT_CLICKED, None)
             countdown_hour_down_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.hour_down(e)),
-                                        lv.EVENT.CLICKED, None)
+                                        lv.EVENT.SHORT_CLICKED, None)
             countdown_start_imgbtn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.start(e)),
-                                        lv.EVENT.CLICKED, None)
+                                        lv.EVENT.SHORT_CLICKED, None)
             countdown_reset_imgbtn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.reset(e)),
-                                        lv.EVENT.CLICKED, None)
+                                        lv.EVENT.SHORT_CLICKED, None)
             # countdown_stop_imgbtn.add_event_cb(lambda e: self.stop(e),
-            #                              lv.EVENT.CLICKED, None)  
+            #                              lv.EVENT.SHORT_CLICKED, None)  
         date_tmp = utime.localtime()
         self.time_tmp = utime.mktime(date_tmp) 
   
@@ -5710,7 +5712,8 @@ class CountdownScreen(Screen):
         if self.g_end == 1:
             EventMesh.publish("load_screen", {"screen": "countdown"})
         else:
-            EventMesh.publish("load_screen", {"screen": "toolbox"})
+            EventMesh.publish("return_prev_screen")
+            # EventMesh.publish("load_screen", {"screen": "toolbox"})
 
     def btn1_release(self):
         if self.g_state == 0:
@@ -5783,23 +5786,28 @@ class CountdownEndScreen(Screen):
 
     def done_left_to_right(self):
         self.stop_FIND()
-        EventMesh.publish("load_screen", {"screen": "countdown"})
+        EventMesh.publish("return_prev_screen")
+        # EventMesh.publish("load_screen", {"screen": "countdown"})
 
     def done_right_to_left(self):
         self.stop_FIND()
-        EventMesh.publish("load_screen", {"screen": "countdown"})
+        EventMesh.publish("return_prev_screen")
+        # EventMesh.publish("load_screen", {"screen": "countdown"})
 
     def done_bottom_to_top(self):
         self.stop_FIND()
-        EventMesh.publish("load_screen", {"screen": "countdown"})
+        EventMesh.publish("return_prev_screen")
+        # EventMesh.publish("load_screen", {"screen": "countdown"})
 
     def done_top_to_bottom(self):
         self.stop_FIND()
-        EventMesh.publish("load_screen", {"screen": "countdown"})
+        EventMesh.publish("return_prev_screen")
+        # EventMesh.publish("load_screen", {"screen": "countdown"})
 
     def done_return(self):
         self.stop_FIND()
-        EventMesh.publish("load_screen", {"screen": "countdown"})
+        EventMesh.publish("return_prev_screen")
+        # EventMesh.publish("load_screen", {"screen": "countdown"})
 
     def done_click(self):
         self.stop_FIND()
@@ -5936,10 +5944,10 @@ class StopwatchScreen(Screen):
             stopwatch_stop_img.set_pos(66, 90)
             stopwatch_stop_img.add_flag(lv.obj.FLAG.HIDDEN)
             stopwatch_start_imgbtn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.start(e)),
-                                     lv.EVENT.CLICKED, None)
+                                     lv.EVENT.SHORT_CLICKED, None)
         
             stopwatch_reset_imgbtn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.reset(e)),
-                                     lv.EVENT.CLICKED, None)
+                                     lv.EVENT.SHORT_CLICKED, None)
             self.meta = stopwatch_screen
 
         if self.s_state == 0:
@@ -6088,7 +6096,8 @@ class StopwatchScreen(Screen):
     def done_return(self):
         if self.s_state == 0:
             self.timer.stop()
-        EventMesh.publish("load_screen", {"screen": "toolbox"})
+        EventMesh.publish("return_prev_screen")
+        # EventMesh.publish("load_screen", {"screen": "toolbox"})
 
     def btn1_release(self):
         if self.s_state == 0:
@@ -6159,7 +6168,8 @@ class UIFINDScreen(Screen):
     def stop_FIND(self) :
         self.FIND_timer.stop()
         self.aud.stop()  #播放声音
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
+        EventMesh.publish("return_prev_screen")
+        # EventMesh.publish("load_screen", {"screen": "main_menu"})
 
     def Close(self):
         print("self.FIND_timer_Close")
@@ -6198,6 +6208,7 @@ class LowPowerScreen(Screen):
     def __init__(self):
         super().__init__()
         self.meta = None
+        self.meta_type = "popup"
 
     def initialization(self):
         global Lowpower_screen ,Lowpower_screen_img  
@@ -6226,20 +6237,27 @@ class LowPowerScreen(Screen):
             self.meta = Lowpower_screen
 
     def done_left_to_right(self):
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
+        EventMesh.publish("return_prev_screen")
+        # EventMesh.publish("load_screen", {"screen": "main_menu"})
     def done_right_to_left(self):
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
+        EventMesh.publish("return_prev_screen")
+        # EventMesh.publish("load_screen", {"screen": "main_menu"})
     def done_bottom_to_top(self):
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
+        EventMesh.publish("return_prev_screen")
+        # EventMesh.publish("load_screen", {"screen": "main_menu"})
     def done_top_to_bottom(self):
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
+        EventMesh.publish("return_prev_screen")
+        # EventMesh.publish("load_screen", {"screen": "main_menu"})
     def done_return(self):
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
+        EventMesh.publish("return_prev_screen")
+        # EventMesh.publish("load_screen", {"screen": "main_menu"})
     def done_click(self):
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
+        EventMesh.publish("return_prev_screen")
+        # EventMesh.publish("load_screen", {"screen": "main_menu"})
 
     def btn1_release(self):
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
+        EventMesh.publish("return_prev_screen")
+        # EventMesh.publish("load_screen", {"screen": "main_menu"})
 
     def btn8_press(self):
         EventMesh.publish("load_screen", {"screen": "main_menu"})
@@ -6254,6 +6272,7 @@ class LowOnePowerScreen(Screen): #0%的电池电量
         super().__init__()
         self.meta = None
         self.timer = osTimer()
+        self.meta_type = "popup"
 
     def initialization(self):
         global LowOnePower_screen ,LowOnePower_screen_img ,LowOnePower_screen_label2,LowOnePower_screen_label1
@@ -6299,25 +6318,32 @@ class LowOnePowerScreen(Screen): #0%的电池电量
         EventMesh.publish("load_screen", {"screen": "poweroff_comfirm"})
 
     def done_left_to_right(self):
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
+        EventMesh.publish("return_prev_screen")
+        # EventMesh.publish("load_screen", {"screen": "main_menu"})
 
     def done_right_to_left(self):
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
+        EventMesh.publish("return_prev_screen")
+        # EventMesh.publish("load_screen", {"screen": "main_menu"})
 
     def done_bottom_to_top(self):
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
+        EventMesh.publish("return_prev_screen")
+        # EventMesh.publish("load_screen", {"screen": "main_menu"})
 
     def done_top_to_bottom(self):
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
+        EventMesh.publish("return_prev_screen")
+        # EventMesh.publish("load_screen", {"screen": "main_menu"})
 
     def done_return(self):
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
+        EventMesh.publish("return_prev_screen")
+        # EventMesh.publish("load_screen", {"screen": "main_menu"})
 
     def done_click(self):
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
+        EventMesh.publish("return_prev_screen")
+        # EventMesh.publish("load_screen", {"screen": "main_menu"})
 
     def btn1_release(self):
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
+        EventMesh.publish("return_prev_screen")
+        # EventMesh.publish("load_screen", {"screen": "main_menu"})
 
     def btn8_press(self):
         EventMesh.publish("load_screen", {"screen": "main_menu"})
@@ -6398,10 +6424,10 @@ class sosScreen(Screen):
 
             self.meta = sos_screen
             sos_screen_confirm_img.add_event_cb(lambda e: EventMesh.callback_wrapper(self.timer_comfirm_cb(e)),
-                                     lv.EVENT.CLICKED, None)
+                                     lv.EVENT.SHORT_CLICKED, None)
             
             sos_screen_return.add_event_cb(lambda e: EventMesh.callback_wrapper(self.timer_cancel_cb(e)),
-                                     lv.EVENT.CLICKED, None)
+                                     lv.EVENT.SHORT_CLICKED, None)
 
     def timer_comfirm_cb(self,e):
         EventMesh.publish("set_sos_flag", 1)
@@ -6845,10 +6871,10 @@ class NoSimAutoScreen(Screen):#无sim卡是否关机
 
             self.meta = no_sim_auto_screen
             no_sim_auto_screen_comfirm.add_event_cb(lambda e: EventMesh.callback_wrapper(self.confirm(e)),
-                                     lv.EVENT.CLICKED, None)
+                                     lv.EVENT.SHORT_CLICKED, None)
         
             no_sim_auto_screen_cancel.add_event_cb(lambda e: EventMesh.callback_wrapper(self.cancel(e)),
-                                     lv.EVENT.CLICKED, None)
+                                     lv.EVENT.SHORT_CLICKED, None)
         self.timer.start(1*1000,1,self.fun)
         self.count = 0
     def fun(self,*argc):
@@ -6891,12 +6917,13 @@ class SystemInitScreen(Screen):
         self.meta = None
         self.system_init_timer=osTimer()
         self.system_init_timer_count = 0
+        self.meta_type = "popup"
 
     def initialization(self):
         global system_init_screen ,system_init_label  
         if system_init_screen == None:
             system_init_screen = lv.obj()
-            print("Lowpower_screen")
+            print("SystemInitScreen")
             system_init_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
        
             system_init_label = lv.label(system_init_screen)
@@ -6946,11 +6973,13 @@ class classMgrPopupScreen(Screen):#上课禁用时间界面
         super().__init__()
         self.meta = None
         self.timer = osTimer()
+        self.meta_type = "popup"
+
     def initialization(self):
         global class_mgr_popup_screen ,class_mgr_popup_label ,class_mgr_popup_time1_text
         if class_mgr_popup_screen == None:
             class_mgr_popup_screen = lv.obj()
-            print("Lowpower_screen")
+            print("class_mgr_popup_screen")
             class_mgr_popup_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
        
             class_mgr_popup_time1_text = lv.label(class_mgr_popup_screen)
@@ -6979,6 +7008,7 @@ class classMgrPopupScreen(Screen):#上课禁用时间界面
         hour = data[4]
         min = data[5]
         class_mgr_popup_time1_text.set_text("{}:{}".format("%02d"%(hour),"%02d"%(min)))
+        EventMesh.publish("set_UI_high_priority", 1)
         self.timer.start(1*1000,1,self.fun)
 
     def lcd_on(self):
@@ -6987,6 +7017,9 @@ class classMgrPopupScreen(Screen):#上课禁用时间界面
     def lcd_off(self):
         self.timer.stop()
     
+    def Close(self):
+        EventMesh.publish("set_UI_high_priority", 0)
+    
     def fun(self,*argc):
         global class_mgr_popup_time1_text
         data = RTC().datetime()
@@ -7473,6 +7506,7 @@ class up_Screen(Screen):#上滑界面
 
 camera_popup_screen = None
 camera_popup_label = None
+camera_img_test = None
 def camCapturecallback(result_list):
     print("camCapturecallback",result_list)
     if result_list[0] == 0:#保存成功
@@ -7481,7 +7515,9 @@ def camCapturecallback(result_list):
         tmp = tmp.split("_camera")[0]
         time = int(tmp)
         album_data = int(EventMesh.publish("get_camera_num"))
-
+        if album_data >= 1:
+            album_data=1
+        print("album_data",album_data)
         EventMesh.publish("set_camera_num",album_data+1)
         EventMesh.publish("save_album_succ",1)
         pass
@@ -7521,16 +7557,19 @@ class cameraFullScreen(Screen):#相册已满
 
 
     def done_click(self):
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
+        EventMesh.publish("return_prev_screen")
+        # EventMesh.publish("load_screen", {"screen": "main_menu"})
         pass
    
             
     def done_return(self):
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
+        EventMesh.publish("return_prev_screen")
+        # EventMesh.publish("load_screen", {"screen": "main_menu"})
         
 
     def btn1_release(self):
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
+        EventMesh.publish("return_prev_screen")
+        # EventMesh.publish("load_screen", {"screen": "main_menu"})
         pass
 
     def btn8_press(self):
@@ -7569,16 +7608,19 @@ class deletealbumScreen(Screen):#删除图片
 
 
     def done_click(self):
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
+        EventMesh.publish("return_prev_screen")
+        # EventMesh.publish("load_screen", {"screen": "main_menu"})
         pass
    
             
     def done_return(self):
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
+        EventMesh.publish("return_prev_screen")
+        # EventMesh.publish("load_screen", {"screen": "main_menu"})
         
 
     def btn1_release(self):
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
+        EventMesh.publish("return_prev_screen")
+        # EventMesh.publish("load_screen", {"screen": "main_menu"})
         pass
 
     def btn8_press(self):
@@ -7594,71 +7636,72 @@ class cameraScreen(Screen):#相机拍照二级界面
         self.meta = None
         self.preview1 = None
         self.timer = osTimer()
-        self.timer2 =osTimer()
+        self.timer2 = osTimer()
         self.timer3 = osTimer()
         self.camera_num = 0
         EventMesh.subscribe("save_album_succ",self.save_album_succ)
 
     def initialization(self):
-        global camera_popup_screen ,camera_popup_label
-        
+        global camera_popup_screen ,camera_popup_label,camera_img_test
+        # dec = camera.camCapture(0,240,320,1,128,128)
+        # dec.callback(camCapturecallback)
         state = dec.open()
-        dec.set_rotate(1)
+        dec.set_rotate(0)
         if camera_popup_screen == None:
             camera_popup_screen = lv.obj()
-            print("Lowpower_screen")
+            print("camera_popup_screen")
             camera_popup_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
 
             
-
-            img_test = lv.img(camera_popup_screen)
+            camera_img_test = lv.img(camera_popup_screen)
                 # img_test.set_src("U:/hang_up.png")
-            ret = dec.set_img(img_test)
-            print("set img:", ret)
-            img_test.align(lv.ALIGN.CENTER, 0, 0)
-            img_test.set_size(128,128)
+            ret = dec.set_img(camera_img_test)
+            
+            camera_img_test.align(lv.ALIGN.CENTER, 0, 0)
+            camera_img_test.set_size(128,128)
+            
         
             camera_camera_btn = lv.img(camera_popup_screen)
             camera_camera_btn.add_flag(lv.obj.FLAG.CLICKABLE)
             camera_camera_btn.set_pos(48, 90)
             camera_camera_btn.set_size(30,30)
             camera_camera_btn.set_src("U:/static/camera_btn.png")
-            # camera_camera_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.camera_click(e)), lv.EVENT.CLICKED, None)
+            # camera_camera_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.camera_click(e)), lv.EVENT.SHORT_CLICKED, None)
 
             camera_camera_album_btn = lv.img(camera_popup_screen)
             camera_camera_album_btn.add_flag(lv.obj.FLAG.CLICKABLE)
             camera_camera_album_btn.set_pos(100, 10)
             camera_camera_album_btn.set_size(20,20)
             camera_camera_album_btn.set_src("U:/static/camera_album_btn.png")
-            # camera_camera_album_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.camera_album_click(e)), lv.EVENT.CLICKED, None)
+            # camera_camera_album_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.camera_album_click(e)), lv.EVENT.SHORT_CLICKED, None)
 
             camera_camera_return_btn = lv.img(camera_popup_screen)
             camera_camera_return_btn.add_flag(lv.obj.FLAG.CLICKABLE)
             camera_camera_return_btn.set_pos(0, 10)
             camera_camera_return_btn.set_size(18,18)
             camera_camera_return_btn.set_src("U:/static/RED_RETURN_PNG.png")
-            # camera_camera_return_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.camera_album_click(e)), lv.EVENT.CLICKED, None)
+            # camera_camera_return_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.camera_album_click(e)), lv.EVENT.SHORT_CLICKED, None)
 
             camera_camera_return_btn_label = lv.label(camera_popup_screen)
             camera_camera_return_btn_label.set_pos(0, 0)
             camera_camera_return_btn_label.set_size(40, 40)
             camera_camera_return_btn_label.set_text(" ")
             camera_camera_return_btn_label.add_flag(lv.obj.FLAG.CLICKABLE)
-            camera_camera_return_btn_label.add_event_cb(lambda e: EventMesh.callback_wrapper(self.camera_return_click(e)), lv.EVENT.CLICKED, None)
+            camera_camera_return_btn_label.add_event_cb(lambda e: EventMesh.callback_wrapper(self.camera_return_click(e)), lv.EVENT.SHORT_CLICKED, None)
 
             camera_camera_album_btn_label = lv.label(camera_popup_screen)
             camera_camera_album_btn_label.set_pos(80, 0)
             camera_camera_album_btn_label.set_size(48, 40)
             camera_camera_album_btn_label.set_text(" ")
             camera_camera_album_btn_label.add_flag(lv.obj.FLAG.CLICKABLE)
-            camera_camera_album_btn_label.add_event_cb(lambda e: EventMesh.callback_wrapper(self.camera_album_click(e)), lv.EVENT.CLICKED, None)
+            camera_camera_album_btn_label.add_event_cb(lambda e: EventMesh.callback_wrapper(self.camera_album_click(e)), lv.EVENT.SHORT_CLICKED, None)
 
             camera_camera_btn_label = lv.label(camera_popup_screen)
             camera_camera_btn_label.set_pos(40, 88)
             camera_camera_btn_label.set_size(50, 40)
             camera_camera_btn_label.set_text(" ")
             camera_camera_btn_label.add_flag(lv.obj.FLAG.CLICKABLE)
-            camera_camera_btn_label.add_event_cb(lambda e: EventMesh.callback_wrapper(self.camera_click(e)), lv.EVENT.CLICKED, None)
+            camera_camera_btn_label.add_event_cb(lambda e: EventMesh.callback_wrapper(self.camera_click(e)), lv.EVENT.SHORT_CLICKED, None)
 
             camera_popup_label = lv.label(camera_popup_screen)
             camera_popup_label.set_pos(0, 40)
@@ -7670,9 +7713,12 @@ class cameraScreen(Screen):#相机拍照二级界面
             camera_popup_label.add_flag(lv.obj.FLAG.HIDDEN)
 
             self.meta = camera_popup_screen
+
+        
+
         album_data = EventMesh.publish("get_camera_num")
         if int(album_data) >= 1:#相册已满
-            EventMesh.publish("load_screen", {"screen": "camera_full"})
+            # EventMesh.publish("load_screen", {"screen": "camera_full"})
             pass
         if camera_popup_label != None:
             camera_popup_label.add_flag(lv.obj.FLAG.HIDDEN)
@@ -7696,9 +7742,10 @@ class cameraScreen(Screen):#相机拍照二级界面
         self.timer3.stop()
         EventMesh.publish("save_album_succ",2)
         album_data = EventMesh.publish("get_camera_num")
-        if int(album_data) >= 1:#相册已满
-            EventMesh.publish("load_screen", {"screen": "camera_full"})
-            return
+        if album_data != None:
+            if int(album_data) >= 1:#相册已满
+                EventMesh.publish("load_screen", {"screen": "camera_full"})
+                return
         self.timer2.start(1*1000,0,self.save_album)#延迟1s保存图片
 
     def camera_album_click(self,e):
@@ -7711,6 +7758,8 @@ class cameraScreen(Screen):#相机拍照二级界面
         self.timer.stop()
         self.timer2.stop()
         self.timer3.stop()
+        # dec.remove_img()
+        print("close camera!!!!!!!")
         state = dec.close()
 
     def save_suc_album(self,*argc):
@@ -7781,20 +7830,20 @@ class cameraalbumScreen(Screen):#相册
             # camera_album_popup_img1.add_flag(lv.obj.FLAG.HIDDEN)
             # camera_album_popup_img1.add_flag(lv.obj.FLAG.CLICKABLE)
             # # camera_album_popup_img1.set_zoom(256)
-            # camera_album_popup_img1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.click_album(e,0)), lv.EVENT.CLICKED, None)
+            # camera_album_popup_img1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.click_album(e,0)), lv.EVENT.SHORT_CLICKED, None)
 
             camera_album_popup_img2 = lv.img(camera_album_popup_screen)
             camera_album_popup_img2.set_pos(51, 100)
             camera_album_popup_img2.set_size(25, 25)
             camera_album_popup_img2.add_flag(lv.obj.FLAG.CLICKABLE)
-            camera_album_popup_img2.add_event_cb(lambda e: EventMesh.callback_wrapper(self.click_album(e,0)), lv.EVENT.CLICKED, None)
+            camera_album_popup_img2.add_event_cb(lambda e: EventMesh.callback_wrapper(self.click_album(e,0)), lv.EVENT.SHORT_CLICKED, None)
 
             camera_album_popup_img3 = lv.img(camera_album_popup_screen)
             camera_album_popup_img3.set_pos(0, 10)
             camera_album_popup_img3.set_size(18,18)
             camera_album_popup_img3.add_flag(lv.obj.FLAG.CLICKABLE)
             camera_album_popup_img3.set_src("U:/static/RED_RETURN_PNG.png")
-            camera_album_popup_img3.add_event_cb(lambda e: EventMesh.callback_wrapper(self.click_album(e,1)), lv.EVENT.CLICKED, None)
+            camera_album_popup_img3.add_event_cb(lambda e: EventMesh.callback_wrapper(self.click_album(e,1)), lv.EVENT.SHORT_CLICKED, None)
 
             self.meta = camera_album_popup_screen
         read_album = 0
@@ -7916,8 +7965,8 @@ class albumPreviewScreen(Screen):#点击预览
         album_num_tmp = None
         album_num_tmp = int(self.meta_info)
         print(album_num_tmp)
-        album_preview_popup_delet_can_label.add_event_cb(lambda e:EventMesh.callback_wrapper(self.cancel_pop(e)),lv.EVENT.CLICKED,None)
-        album_preview_popup_delet_con_label.add_event_cb(lambda e:EventMesh.callback_wrapper(self.confirm_pop(e)),lv.EVENT.CLICKED,None)
+        album_preview_popup_delet_can_label.add_event_cb(lambda e:EventMesh.callback_wrapper(self.cancel_pop(e)),lv.EVENT.SHORT_CLICKED,None)
+        album_preview_popup_delet_con_label.add_event_cb(lambda e:EventMesh.callback_wrapper(self.confirm_pop(e)),lv.EVENT.SHORT_CLICKED,None)
         
         album_preview_popup_img.set_src("U:/static/album/%d_camera.jpg"%(album_num_tmp))#'U:/6_camera.jpeg'
 
@@ -7968,76 +8017,273 @@ class albumPreviewScreen(Screen):#点击预览
     def btn8_press(self):
         EventMesh.publish("load_screen", {"screen": "main_menu"})
         pass
-camera_video_screen = None
-camera_video_label = None
 
-class cameraVdieoScreen(Screen):#
+voice_answer_screen = None
+voice_answer_label = None
+voice_answer_btn1 = None
+voice_answer_btn_label1 = None
+class VdieoVoiceScreen(Screen):#语音接听画面
     #
-    NAME = "camera_video"
+    NAME = "voice_answer"
     
     def __init__(self):
         super().__init__()
         self.meta = None
-        self.preview1 = None
         self.timer = osTimer()
+        self.meta_type = "popup"
+        self.count = 0
 
     def initialization(self):
-        global camera_video_screen ,camera_video_label
-        
+        global voice_answer_screen ,video_answer_btn_label1
+        self.count = 0
+        if voice_answer_screen == None:
+            voice_answer_screen = lv.obj()
+            print("voice_answer_screen")
+            voice_answer_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+            video_answer_btn_label1 = lv.label(voice_answer_screen)
+            video_answer_btn_label1.set_pos(0, 50)
+            video_answer_btn_label1.set_text("正在接听中...")
+            video_answer_btn_label1.set_size(128, 40)
+            video_answer_btn_label1.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+            video_answer_btn_label1.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+            self.meta = voice_answer_screen
+        EventMesh.publish("set_UI_high_priority", 1)
+        self.timer.start(1*1000,1,self.fun)
+
+    def fun(self,*argc):
+        call_state = jrtc.get_state()
+        if call_state == 5:
+            self.timer.stop()
+            EventMesh.publish("set_UI_high_priority", 0)
+            EventMesh.publish("load_screen", {"screen": "voiceing"})
+            return
+        if call_state == 0:
+            call_id = str(EventMesh.publish("get_vedio_call_id"))#
+            meet_id = str(EventMesh.publish("get_vedio_meet_id"))#
+            call_type = int(EventMesh.publish("get_vedio_call_type"))#
+            EventMesh.publish("set_UI_high_priority", 0)
+            EventMesh.publish(constants.PROTOCOL.RCALLING_SEND,[call_id,meet_id,call_type])
+            EventMesh.publish("load_screen", {"screen": "main_menu"})
+            return
+        # print("voiceing_answer call_state",call_state)
+        self.count+=1
+        if self.count >= 20:
+            
+            self.timer.stop()
+            EventMesh.publish("set_UI_high_priority", 0)
+            EventMesh.publish("close_jrtc_event")
+            EventMesh.publish("load_screen", {"screen": "main_menu"})
+            
+            return
+
+        EventMesh.publish("system_sleep_rest")#防止黑屏
+
+
+    def Close(self):
+        self.timer.stop()
+
+    def done_return(self):
+        pass
+        # EventMesh.publish("load_screen", {"screen": "main_menu"})
         
-        if camera_video_screen == None:
-            camera_video_screen = lv.obj()
-            print("camera_video_screen")
-            camera_video_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
 
-            camera_video_label = lv.label(camera_video_screen)
-            camera_video_label.set_pos(0, 20)
-            camera_video_label.set_size(128, 40)
-            camera_video_label.set_text("正在对方接听中")
-            camera_video_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
-            camera_video_label.set_long_mode(lv.label.LONG.WRAP)
-            camera_video_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+    def btn1_release(self):
+        # EventMesh.publish("load_screen", {"screen": "main_menu"})
+        pass
+
+    def btn8_press(self):
+        # EventMesh.publish("load_screen", {"screen": "main_menu"})
+        pass
+
+
+
+camera_voice_answer_second_label = None
+camera_voice_answer_screen = None
+camera_voice_answer_label = None
+camera_voice_answer_btn = None
+camera_voice_answer_btn_label =None
+
+class VoiceShowScreen(Screen):#正在语音通话中
+    #
+    NAME = "voiceing"
+    
+    def __init__(self):
+        super().__init__()
+        self.meta = None
+        self.preview1 = None
+        self.timer = osTimer()
+        self.statu_open = -1
+        self.show_label = 0
+        self.second_count = 0
+        self.time_out = 0
+        self.meta_type = "popup"
+
+
+    def initialization(self):
+        global camera_voice_answer_screen,camera_voice_answer_second_label ,camera_voice_answer_btn_label,camera_voice_answer_label,camera_voice_answer_btn
+        if camera_voice_answer_screen == None:
+            camera_voice_answer_screen = lv.obj()
+            print("camera_voice_answer_screen")
+            camera_voice_answer_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+
+            camera_voice_answer_label = lv.label(camera_voice_answer_screen)
+            camera_voice_answer_label.set_pos(0, 20)
+            camera_voice_answer_label.set_text("正在通话中...")
+            camera_voice_answer_label.set_size(128, 40)
+            camera_voice_answer_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+            camera_voice_answer_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+            camera_voice_answer_second_label = lv.label(camera_voice_answer_screen)
+            camera_voice_answer_second_label.set_pos(0, 50)
+            camera_voice_answer_second_label.set_text(" ")
+            camera_voice_answer_second_label.set_size(128, 40)
+            camera_voice_answer_second_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+            camera_voice_answer_second_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+            camera_voice_answer_btn = lv.img(camera_voice_answer_screen)
+            camera_voice_answer_btn.add_flag(lv.obj.FLAG.CLICKABLE)
+            camera_voice_answer_btn.set_pos(48, 90)
+            camera_voice_answer_btn.set_size(32,32)
+            camera_voice_answer_btn.set_src("U:/static/hang_up.png")
+
+            camera_voice_answer_btn_label = lv.label(camera_voice_answer_screen)
+            camera_voice_answer_btn_label.set_pos(18, 50)
+            camera_voice_answer_btn_label.set_text(" ")
+            camera_voice_answer_btn_label.set_size(90, 78)
+            camera_voice_answer_btn_label.add_flag(lv.obj.FLAG.CLICKABLE)
+
+            camera_voice_answer_btn_label.add_event_cb(lambda e: EventMesh.callback_wrapper(self.close_cb(e)), lv.EVENT.SHORT_CLICKED, None)
+            
+            camera_voice_answer_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.close_cb(e)), lv.EVENT.SHORT_CLICKED, None)
+            
+            self.meta = camera_voice_answer_screen
+        call_state = jrtc.get_state()
+
+        self.second_count = 0
+        self.statu_open = 0
+      
+        self.time_out = 0
+        
+        EventMesh.publish("set_UI_high_priority", 1)
+        if call_state == 5:#接通
+            camera_voice_answer_label.set_text("正在通话中...")
+            camera_voice_answer_label.set_pos(0, 20)
+            camera_voice_answer_second_label.clear_flag(lv.obj.FLAG.HIDDEN)
+            camera_voice_answer_second_label.set_text("00:00")
+            camera_voice_answer_second_label.set_pos(0, 50)
+            # camera_voice_answer_btn.clear_flag(lv.obj.FLAG.HIDDEN)
+            # camera_voice_answer_btn_label.clear_flag(lv.obj.FLAG.HIDDEN)
+        else:
+            camera_voice_answer_label.set_text("正在接听中...")
+            camera_voice_answer_label.set_pos(0, 50)
+            camera_voice_answer_second_label.add_flag(lv.obj.FLAG.HIDDEN)
+            # camera_voice_answer_btn.add_flag(lv.obj.FLAG.HIDDEN)
+            # camera_voice_answer_btn_label.add_flag(lv.obj.FLAG.HIDDEN)
+        self.timer.start(1*1000,1,self.fun)
 
-            img_btn = lv.img(camera_video_screen)
-            img_btn.add_flag(lv.obj.FLAG.CLICKABLE)
-            img_btn.set_pos(0, 90)
-            img_btn.set_size(32,32)
-            img_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.close_cb(e)), lv.EVENT.CLICKED, None)
-            self.meta = camera_video_screen
 
     def close_cb(self,e):
-        pass
+        self.statu_open = 1
+        call_id = str(EventMesh.publish("get_vedio_call_id"))#
+        meet_id = str(EventMesh.publish("get_vedio_meet_id"))#
+        call_type = int(EventMesh.publish("get_vedio_call_type"))#
+        
+        EventMesh.publish(constants.PROTOCOL.RCALLING_SEND,[call_id,meet_id,call_type])
+        # EventMesh.publish("load_screen", {"screen": "main_menu"})
+        EventMesh.publish("set_UI_high_priority", 0)
+        
+        EventMesh.publish("close_jrtc_event")
+        EventMesh.publish("return_prev_screen")
 
     def fun(self,*argc):
-        pass
-        # EventMesh.publish("system_sleep_rest")#防止黑屏
+        EventMesh.publish("system_sleep_rest")#防止黑屏
+        call_state = jrtc.get_state()
+        if call_state == 5:
+            camera_voice_answer_label.set_text("正在通话中...")
+            camera_voice_answer_label.set_pos(0, 20)
+            # camera_video_answer_label.clear_flag(lv.obj.FLAG.HIDDEN)
+            camera_voice_answer_second_label.clear_flag(lv.obj.FLAG.HIDDEN)
+            camera_voice_answer_second_label.set_pos(0, 50)
+            camera_voice_answer_btn.clear_flag(lv.obj.FLAG.HIDDEN)
+            camera_voice_answer_btn_label.clear_flag(lv.obj.FLAG.HIDDEN)
+            
+            self.second_count+=1
+            self.show_time()
+        # print("call_state",call_state)
+        if call_state == 0 and self.statu_open == 0:
+            self.timer.stop()
+            
+            call_id = str(EventMesh.publish("get_vedio_call_id"))#
+            meet_id = str(EventMesh.publish("get_vedio_meet_id"))#
+            call_type = int(EventMesh.publish("get_vedio_call_type"))#
+            EventMesh.publish(constants.PROTOCOL.RCALLING_SEND,[call_id,meet_id,call_type])
+            # EventMesh.publish("load_screen", {"screen": "main_menu"})
+            EventMesh.publish("set_UI_high_priority", 0)
+            EventMesh.publish("close_jrtc_event")
+            EventMesh.publish("return_prev_screen")
+            
+            return
+        
+        if call_state != 5:
+            self.time_out+=1
+            if self.time_out >= 60 or (call_state == 0 and self.time_out >= 5):
+                self.time_out = 0
+                self.timer.stop()
+                
+                call_id = str(EventMesh.publish("get_vedio_call_id"))#
+                meet_id = str(EventMesh.publish("get_vedio_meet_id"))#
+                call_type = int(EventMesh.publish("get_vedio_call_type"))#
+                EventMesh.publish("set_UI_high_priority", 0)
+                EventMesh.publish(constants.PROTOCOL.RCALLING_SEND,[call_id,meet_id,call_type])
+                # EventMesh.publish("load_screen", {"screen": "main_menu"})
+                EventMesh.publish("set_UI_high_priority", 0)
+                EventMesh.publish("close_jrtc_event")
+                EventMesh.publish("return_prev_screen")
+                
+        
+
+        
+        
+    def show_time(self):
 
+        if self.second_count >= 99*60:
+            total_hour = self.second_count//3600#小时
+            total_min = (self.second_count%3600)//60#分钟
+            total_sec = (self.second_count%3600)%60#秒
+            camera_voice_answer_second_label.set_text("{}:{}:{}".format("%02d"%(total_hour),"%02d"%(total_min),"%02d"%(total_sec)))
+            
+        else:
+            total_min = self.second_count//60
+            total_sec = self.second_count%60
+            camera_voice_answer_second_label.set_text("{}:{}".format("%02d"%(total_min),"%02d"%(total_sec)))
 
     def Close(self):
         self.timer.stop()
-        if self.open_preview1 == 1:
-            self.timer.stop()
-            self.preview1.close()
 
     def done_return(self):
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
+        pass
+        # EventMesh.publish("load_screen", {"screen": "main_menu"})
         
 
     def btn1_release(self):
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
+        # EventMesh.publish("load_screen", {"screen": "main_menu"})
         pass
 
     def btn8_press(self):
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
+        # EventMesh.publish("load_screen", {"screen": "main_menu"})
         pass
 
 
 
+
+
 video_answer_screen = None
 video_answer_label = None
 video_answer_btn1 = None
 video_answer_btn_label1 = None
-class cameraVdieoAnswerScreen(Screen):#接听画面
+class cameraVdieoAnswerScreen(Screen):#视频通话接听画面
     #
     NAME = "vedio_answer"
     
@@ -8045,6 +8291,7 @@ class cameraVdieoAnswerScreen(Screen):#接听画面
         super().__init__()
         self.meta = None
         self.timer = osTimer()
+        self.meta_type = "popup"
         self.count = 0
 
     def initialization(self):
@@ -8062,28 +8309,33 @@ class cameraVdieoAnswerScreen(Screen):#接听画面
             video_answer_btn_label1.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
             video_answer_btn_label1.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
             self.meta = video_answer_screen
+        EventMesh.publish("set_UI_high_priority", 1)
         self.timer.start(1*1000,1,self.fun)
 
     def fun(self,*argc):
         call_state = jrtc.get_state()
         if call_state == 5:
             self.timer.stop()
+            EventMesh.publish("set_UI_high_priority", 0)
             EventMesh.publish("load_screen", {"screen": "vedioing"})
             return
         if call_state == 0:
             call_id = str(EventMesh.publish("get_vedio_call_id"))#
             meet_id = str(EventMesh.publish("get_vedio_meet_id"))#
             call_type = int(EventMesh.publish("get_vedio_call_type"))#
-       
+            EventMesh.publish("set_UI_high_priority", 0)
             EventMesh.publish(constants.PROTOCOL.RCALLING_SEND,[call_id,meet_id,call_type])
-            EventMesh.publish("load_screen", {"screen": "main_menu"})
+            EventMesh.publish("return_prev_screen")
             return
-        print("vedio_answer call_state",call_state)
+        # print("vedio_answer call_state",call_state)
         self.count+=1
         if self.count >= 20:
-            EventMesh.publish("close_jrtc_event")
+            
             self.timer.stop()
-            EventMesh.publish("load_screen", {"screen": "main_menu"})
+            EventMesh.publish("set_UI_high_priority", 0)
+            EventMesh.publish("close_jrtc_event")
+            EventMesh.publish("return_prev_screen")
+            
             return
 
         EventMesh.publish("system_sleep_rest")#防止黑屏
@@ -8106,14 +8358,15 @@ class cameraVdieoAnswerScreen(Screen):#接听画面
         pass
 
 camera_video_answer_screen = None
+camera_video_answer_second_label = None
 camera_video_answer_label = None
 camera_video_answer_btn = None
-vcamera_video_answer_btn_label = None
-camera_video_answer_label = None
+camera_video_answer_btn_label = None
+video_img_test = None
 def jrtc_cb(close_sta):
     print("jrtc callback:", close_sta)
     if close_sta == 0 or close_sta == 1:
-        jrtc.close(1)
+        jrtc.close(0)
 jrtc.set_callback(jrtc_cb)
 class VedioShowScreen(Screen):#正在视频通话中
     #
@@ -8126,6 +8379,9 @@ class VedioShowScreen(Screen):#正在视频通话中
         self.timer = osTimer()
         self.statu_open = -1
         self.show_label = 0
+        self.second_count = 0
+        self.time_out = 0
+        self.meta_type = "popup"
         EventMesh.subscribe("open_vedio_infor",self.open_vedio_infor)
         EventMesh.subscribe("close_jrtc_event",self.close_jrtc_event)
 
@@ -8133,105 +8389,362 @@ class VedioShowScreen(Screen):#正在视频通话中
         call_id = EventMesh.publish("get_vedio_call_id")#对方的账号
         meet_id = EventMesh.publish("get_vedio_meet_id")#共有的会议id
         call_type = EventMesh.publish("get_vedio_call_type")#呼叫类型
-        tokens_data = EventMesh.publish("get_vedio_tokens_data")#tookens数据
+        tokens_data = EventMesh.publish("get_vedio_tokens_data")#tookens数据#云米平台不需要tokens
     
         
-        print("vedio infor",call_id,meet_id,call_type,tokens_data)
+        
         # data = ['6951832', '876226002021444', '1', '01lqlyqzQ4Gozdz8OJv1Mij2Y3PBq2y3+rtIA26Ge+m2QHTc/Vk=gufkGNMBiYhPjbq1tLCwtLKysLKws7a2tg==']
         jrtc.init()
         # jrtc.config_server("119.3.54.56:1050")#测试服地址
         tokens = str(tokens_data)
-        oneself_id = str(876226002021444)#自己的账号
-        jrtc.config("efe9f8800a39d96244234097", oneself_id, "25v9C652123QL3N8", tokens)
+        appkey = "efe9f8800a39d96244234097"#小见
+        uid_key = "25v9C652123QL3N8"
+
+        # appkey = "249e7d505516af0a7ed44097"
+        # uid_key = "qQI4gkB9FxH8J2cb"
+        imei = EventMesh.publish(constants.EVENT.GET_IMEI)
+        oneself_id = str(imei)#自己的账号默认是imei号
+        jrtc.config(appkey,oneself_id,uid_key,tokens)#只初始化一次发起通话
         uid = str(call_id)
         ticket = str(meet_id)
         
-        print("uid ",uid,ticket,tokens)
-        #jrtc.set_rotate(0)
+        print("uid ",uid,ticket,oneself_id)
+               #jrtc.set_rotate(0)
         jrtc.open(uid,ticket,[15,120,240,320],[15,129,128,128])
         
         pass
 
     def close_jrtc_event(self,event,msg):
         call_state = jrtc.get_state()
-        print("close_jrtc_event",call_state)
-        jrtc.close(1)
+        # print("close_jrtc_event1",call_state)
+        # jrtc.remove_img()
+        # print("close_jrtc_event2",call_state)
+        jrtc.close(0)
+        # print("close_jrtc_event3",call_state)
         pass
 
     def initialization(self):
-        global camera_video_answer_screen ,camera_video_answer_label,camera_video_answer_btn,vcamera_video_answer_btn_label
+        jrtc.set_rotate(jrtc.CAM_ROTATE_180)
+        global camera_video_answer_screen,video_img_test,camera_video_answer_btn_label,camera_video_answer_label,camera_video_answer_second_label,camera_video_answer_btn,vcamera_video_answer_btn_label
         if camera_video_answer_screen == None:
             camera_video_answer_screen = lv.obj()
             print("camera_video_answer_screen")
             camera_video_answer_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
 
-            img_test = lv.img(camera_video_answer_screen)
-            ret = jrtc.set_img(img_test)
-            img_test.align(lv.ALIGN.CENTER, 0, 0)
-            img_test.set_size(128,128)
+            video_img_test = lv.img(camera_video_answer_screen)
+            ret = jrtc.set_img(video_img_test)
+            video_img_test.align(lv.ALIGN.CENTER, 0, 0)
+            video_img_test.set_size(128,128)
         
-            # camera_video_answer_label = lv.label(camera_video_answer_screen)
-            # camera_video_answer_label.set_pos(0, 50)
-            # camera_video_answer_label.set_text("正在接听中...")
-            # camera_video_answer_label.set_size(128, 40)
-            # camera_video_answer_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
-            # camera_video_answer_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+            camera_video_answer_label = lv.label(camera_video_answer_screen)
+            camera_video_answer_label.set_pos(0, 20)
+            camera_video_answer_label.set_text("正在通话中...")
+            camera_video_answer_label.set_size(128, 40)
+            camera_video_answer_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+            camera_video_answer_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+
+            camera_video_answer_second_label = lv.label(camera_video_answer_screen)
+            camera_video_answer_second_label.set_pos(0, 50)
+            camera_video_answer_second_label.set_text(" ")
+            camera_video_answer_second_label.set_size(128, 40)
+            camera_video_answer_second_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+            camera_video_answer_second_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
 
             camera_video_answer_btn = lv.img(camera_video_answer_screen)
             camera_video_answer_btn.add_flag(lv.obj.FLAG.CLICKABLE)
             camera_video_answer_btn.set_pos(48, 90)
             camera_video_answer_btn.set_size(32,32)
             camera_video_answer_btn.set_src("U:/static/hang_up.png")
-            camera_video_answer_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.close_cb(e)), lv.EVENT.CLICKED, None)
-            
+
+
+            camera_video_answer_btn_label = lv.label(camera_video_answer_screen)
+            camera_video_answer_btn_label.set_pos(18, 50)
+            camera_video_answer_btn_label.set_text(" ")
+            camera_video_answer_btn_label.set_size(90, 78)
+            camera_video_answer_btn_label.add_flag(lv.obj.FLAG.CLICKABLE)
+
+
+            camera_video_answer_btn_label.add_event_cb(lambda e: EventMesh.callback_wrapper(self.close_cb(e)), lv.EVENT.SHORT_CLICKED, None)
+            camera_video_answer_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.close_cb(e)), lv.EVENT.SHORT_CLICKED, None)
             self.meta = camera_video_answer_screen
-        # camera_video_answer_label.clear_flag(lv.obj.FLAG.HIDDEN)
-        # camera_video_answer_btn.add_flag(lv.obj.FLAG.HIDDEN)
+        
+        call_state = jrtc.get_state()
+
+        self.second_count = 0
         self.statu_open = 0
+      
+        self.time_out = 0
+        call_state = jrtc.get_state()
+        
+        EventMesh.publish("set_UI_high_priority", 1)
+        if call_state == 5:#接通
+            camera_video_answer_label.set_text("正在通话中...")
+            camera_video_answer_label.set_pos(0, 20)
+            # camera_video_answer_label.clear_flag(lv.obj.FLAG.HIDDEN)
+            camera_video_answer_second_label.clear_flag(lv.obj.FLAG.HIDDEN)
+            camera_video_answer_second_label.set_text("00:00")
+            camera_video_answer_second_label.set_pos(0, 50)
+            # camera_video_answer_btn.clear_flag(lv.obj.FLAG.HIDDEN)
+            # camera_video_answer_btn_label.clear_flag(lv.obj.FLAG.HIDDEN)
+            video_img_test.clear_flag(lv.obj.FLAG.HIDDEN)
+        else:
+            camera_video_answer_label.set_text("正在接听中...")
+            camera_video_answer_label.set_pos(0, 50)
+            # camera_video_answer_label.add_flag(lv.obj.FLAG.HIDDEN)
+            camera_video_answer_second_label.add_flag(lv.obj.FLAG.HIDDEN)
+            # camera_video_answer_btn.add_flag(lv.obj.FLAG.HIDDEN)
+            # camera_video_answer_btn_label.add_flag(lv.obj.FLAG.HIDDEN)
+            video_img_test.add_flag(lv.obj.FLAG.HIDDEN)
         self.timer.start(1*1000,1,self.fun)
 
 
     def close_cb(self,e):
         self.statu_open = 1
-        EventMesh.publish("close_jrtc_event")
-        
         call_id = str(EventMesh.publish("get_vedio_call_id"))#
         meet_id = str(EventMesh.publish("get_vedio_meet_id"))#
         call_type = int(EventMesh.publish("get_vedio_call_type"))#
-       
+        EventMesh.publish("set_UI_high_priority", 0)
         EventMesh.publish(constants.PROTOCOL.RCALLING_SEND,[call_id,meet_id,call_type])
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
+        EventMesh.publish("set_UI_high_priority", 0)
+        EventMesh.publish("close_jrtc_event")
+        EventMesh.publish("return_prev_screen")
+        
 
     def fun(self,*argc):
         EventMesh.publish("system_sleep_rest")#防止黑屏
         call_state = jrtc.get_state()
-        print("call_state",call_state)
+        if call_state == 5:
+            camera_video_answer_label.set_text("正在通话中...")
+            camera_video_answer_label.set_pos(0, 20)
+            # camera_video_answer_label.clear_flag(lv.obj.FLAG.HIDDEN)
+            camera_video_answer_second_label.clear_flag(lv.obj.FLAG.HIDDEN)
+            camera_video_answer_btn.clear_flag(lv.obj.FLAG.HIDDEN)
+            camera_video_answer_btn_label.clear_flag(lv.obj.FLAG.HIDDEN)
+            
+            video_img_test.clear_flag(lv.obj.FLAG.HIDDEN)
+            self.second_count+=1
+            self.show_time()
+        # print("call_state",call_state)
         if call_state == 0 and self.statu_open == 0:
             self.timer.stop()
+            
+            call_id = str(EventMesh.publish("get_vedio_call_id"))#
+            meet_id = str(EventMesh.publish("get_vedio_meet_id"))#
+            call_type = int(EventMesh.publish("get_vedio_call_type"))#
+            EventMesh.publish("set_UI_high_priority", 0)
+            EventMesh.publish(constants.PROTOCOL.RCALLING_SEND,[call_id,meet_id,call_type])
+            EventMesh.publish("set_UI_high_priority", 0)
             EventMesh.publish("close_jrtc_event")
-            EventMesh.publish("load_screen", {"screen": "main_menu"})
+            EventMesh.publish("return_prev_screen")
+            
+            return
+        
+        if call_state != 5:
+            self.time_out+=1
+            if self.time_out >= 60 or (call_state == 0 and self.time_out >= 5):
+                self.time_out = 0
+                self.timer.stop()
+                
+                call_id = str(EventMesh.publish("get_vedio_call_id"))#
+                meet_id = str(EventMesh.publish("get_vedio_meet_id"))#
+                call_type = int(EventMesh.publish("get_vedio_call_type"))#
+                EventMesh.publish("set_UI_high_priority", 0)
+                EventMesh.publish(constants.PROTOCOL.RCALLING_SEND,[call_id,meet_id,call_type])
+                EventMesh.publish("set_UI_high_priority", 0)
+                EventMesh.publish("close_jrtc_event")
+                EventMesh.publish("return_prev_screen")
+                
+        
+
         
         
+    def show_time(self):
 
+        if self.second_count >= 99*60:
+            total_hour = self.second_count//3600#小时
+            total_min = (self.second_count%3600)//60#分钟
+            total_sec = (self.second_count%3600)%60#秒
+            camera_video_answer_second_label.set_text("{}:{}:{}".format("%02d"%(total_hour),"%02d"%(total_min),"%02d"%(total_sec)))
+            
+        else:
+            total_min = self.second_count//60
+            total_sec = self.second_count%60
+            camera_video_answer_second_label.set_text("{}:{}".format("%02d"%(total_min),"%02d"%(total_sec)))
+            # camera_video_answer_second_label.set_text("%02d"%(total_min),"%02d"%(total_sec))
 
     def Close(self):
         self.timer.stop()
 
     def done_return(self):
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
+        pass
+        # EventMesh.publish("load_screen", {"screen": "main_menu"})
         
 
     def btn1_release(self):
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
+        # EventMesh.publish("load_screen", {"screen": "main_menu"})
         pass
 
     def btn8_press(self):
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
+        # EventMesh.publish("load_screen", {"screen": "main_menu"})
         pass
 
 
 
 
+
+voice_call_screen = None
+voice_call_img = None
+voice_call_name_label = None
+voice_call_answer = None
+voice_call_hangup = None
+voice_call_label = None
+# CALL_LOG_MAX = 50
+class voiceInCallScreen(Screen):#语音通话打入中
+    NAME = "voice_incall"
+
+    def __init__(self):
+        super().__init__()
+        self.CALL_LOG_MAX = CALL_LOG_MAX
+        self.read_data = {}
+        self.meta_type = "popup"
+        self.aud = audio.Audio(0)
+        self.call_timer = osTimer()
+        self.call_timer1 = osTimer()
+        self.name = None
+        self.phonebook = {}
+        self.pro_state = 0
+        self.meta = None
+        self.timeout = 0
+        
+    def initialization(self):
+        global voice_call_screen,voice_call_img,voice_call_name_label,voice_call_answer,voice_call_hangup,voice_call_label
+        if voice_call_screen == None :
+            # -------------------------------------------vedio_call screen----------------------------------------------------------
+            voice_call_screen = lv.obj()
+            print("voice_call_screen")
+            voice_call_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+            voice_call_label = lv.label(voice_call_screen)
+            voice_call_label.set_pos(0, 10)
+            voice_call_label.set_text("是否接听语音通话")
+            voice_call_label.set_size(128, 40)
+            voice_call_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+            voice_call_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+            # vedio_call_img = lv.img(voice_call_screen)
+            # vedio_call_img.set_pos(48, 10)
+            # vedio_call_img.set_size(32, 32)
+            # vedio_call_img.set_src("U:/static/IMAGE_NOTICE_CALL.png")
+            # vedio_call_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+            voice_call_name_label = lv.label(voice_call_screen)
+            voice_call_name_label.set_pos(0, 50)
+            voice_call_name_label.set_text(" ")
+            voice_call_name_label.set_size(128, 40)
+            voice_call_name_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
+            voice_call_name_label.add_style(style_font_youyuan_20, lv.PART.MAIN | lv.STATE.DEFAULT)
+
+            voice_call_answer = lv.img(voice_call_screen)
+            voice_call_answer.set_size(32, 32)
+            voice_call_answer.add_flag(lv.obj.FLAG.CLICKABLE)
+            voice_call_answer.set_pos(84, 85)
+            voice_call_answer.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+            voice_call_answer.set_src("U:/static/answer.png")
+
+            voice_call_hangup = lv.img(voice_call_screen)
+            voice_call_hangup.set_size(32, 32)
+            voice_call_hangup.add_flag(lv.obj.FLAG.CLICKABLE)
+            voice_call_hangup.set_pos(11, 85)
+            voice_call_hangup.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+            voice_call_hangup.set_src("U:/static/hang_up.png")
+
+            voice_call_answer.add_event_cb(lambda e: EventMesh.callback_wrapper(self.answer(e)),
+                                     lv.EVENT.SHORT_CLICKED, None)
+            voice_call_hangup.add_event_cb(lambda e: EventMesh.callback_wrapper(self.hangup(e)),
+                                     lv.EVENT.SHORT_CLICKED, None)
+            self.meta = voice_call_screen 
+    
+
+        EventMesh.publish("set_UI_high_priority", 1)
+        call_id = str(EventMesh.publish("get_vedio_call_id"))#
+
+        voice_call_name_label.set_text(call_id)
+
+
+    def post_processor_after_initialization(self):
+        global voice_call_screen,voice_call_img,voice_call_name_label,voice_call_answer,voice_call_hangup  
+        self.call_timer.start(6000, 1, self.call_timer_cb)
+        self.timeout = 0
+        self.call_timer1.start(1*1000, 1, self.get_video_state)
+        self.aud.play(1, 1, 'U:/static/R_CALL_mp3.mp3')  #播放来电铃声
+
+    def call_timer_cb(self,e):
+       self.aud.play(1, 1, 'U:/static/R_CALL_mp3.mp3')  #播放来电铃声
+
+    def get_video_state(self,e):
+        call_state = jrtc.get_state()
+        # print("vedio_incall",call_state)
+        self.timeout+=1
+        if self.timeout >= 1*60:
+            self.timeout = 0
+            self.call_timer1.stop()
+            call_id = str(EventMesh.publish("get_vedio_call_id"))#
+            meet_id = str(EventMesh.publish("get_vedio_meet_id"))#
+            call_type = int(EventMesh.publish("get_vedio_call_type"))#
+            EventMesh.publish("set_UI_high_priority", 0)
+            EventMesh.publish(constants.PROTOCOL.RCALLING_SEND,[call_id,meet_id,call_type])
+            EventMesh.publish("return_prev_screen")
+
+    def answer(self,e):
+        self.call_timer.stop()
+        self.aud.stop() 
+        EventMesh.publish("set_UI_high_priority", 0)
+        EventMesh.publish("open_vedio_infor")
+        EventMesh.publish("load_screen", {"screen": "voiceing"})
+
+    def Close(self):
+        self.call_timer.stop()
+        self.call_timer1.stop()
+        self.aud.stop() 
+    
+    def hangup(self,e):
+        EventMesh.publish("set_UI_high_priority", 0)
+        call_id = str(EventMesh.publish("get_vedio_call_id"))#
+        meet_id = str(EventMesh.publish("get_vedio_meet_id"))#
+        call_type = int(EventMesh.publish("get_vedio_call_type"))#
+        EventMesh.publish(constants.PROTOCOL.RCALLING_SEND,[call_id,meet_id,call_type])
+
+        EventMesh.publish("return_prev_screen")
+
+    def btn1_release(self):
+        pass
+        
+    def btn8_press(self):
+        flag = EventMesh.publish("get_lcd_state")
+        if flag == 1:
+            EventMesh.publish(constants.EVENT.SYSTEM_SLEEP)
+        else:
+            EventMesh.publish(constants.EVENT.SYSTEM_UP)
+        pass
+
+    def done_left_to_right(self):
+        pass
+    
+    def done_right_to_left(self):
+        pass
+
+    def done_bottom_to_top(self):
+        pass
+    
+    def done_top_to_bottom(self):
+        pass
+    
+    def done_return(self):
+        pass
+
+
+
 vedio_call_screen = None
 vedio_call_img = None
 vedio_call_name_label = None
@@ -8298,10 +8811,13 @@ class vedioCallingCallScreen(Screen):#视频通话打入中
             vedio_call_hangup.set_src("U:/static/hang_up.png")
 
             vedio_call_answer.add_event_cb(lambda e: EventMesh.callback_wrapper(self.answer(e)),
-                                     lv.EVENT.CLICKED, None)
+                                     lv.EVENT.SHORT_CLICKED, None)
             vedio_call_hangup.add_event_cb(lambda e: EventMesh.callback_wrapper(self.hangup(e)),
-                                     lv.EVENT.CLICKED, None)
+                                     lv.EVENT.SHORT_CLICKED, None)
             self.meta = vedio_call_screen 
+        
+        vedio_call_label.set_text("是否接听视频通话")
+
         EventMesh.publish("set_UI_high_priority", 1)
         call_id = str(EventMesh.publish("get_vedio_call_id"))#
 
@@ -8320,7 +8836,7 @@ class vedioCallingCallScreen(Screen):#视频通话打入中
 
     def get_video_state(self,e):
         call_state = jrtc.get_state()
-        print("vedio_incall",call_state)
+        # print("vedio_incall",call_state)
         self.timeout+=1
         if self.timeout >= 1*60:
             self.timeout = 0
@@ -8330,14 +8846,14 @@ class vedioCallingCallScreen(Screen):#视频通话打入中
             call_type = int(EventMesh.publish("get_vedio_call_type"))#
             EventMesh.publish("set_UI_high_priority", 0)
             EventMesh.publish(constants.PROTOCOL.RCALLING_SEND,[call_id,meet_id,call_type])
-            EventMesh.publish("load_screen", {"screen": "main_menu"})
+            EventMesh.publish("return_prev_screen")
 
     def answer(self,e):
         self.call_timer.stop()
         self.aud.stop() 
         EventMesh.publish("set_UI_high_priority", 0)
         EventMesh.publish("open_vedio_infor")
-        EventMesh.publish("load_screen", {"screen": "vedio_answer"})
+        EventMesh.publish("load_screen", {"screen": "vedioing"})
 
     def Close(self):
         self.call_timer.stop()
@@ -8349,10 +8865,9 @@ class vedioCallingCallScreen(Screen):#视频通话打入中
         call_id = str(EventMesh.publish("get_vedio_call_id"))#
         meet_id = str(EventMesh.publish("get_vedio_meet_id"))#
         call_type = int(EventMesh.publish("get_vedio_call_type"))#
-        EventMesh.publish("set_UI_high_priority", 0)
         EventMesh.publish(constants.PROTOCOL.RCALLING_SEND,[call_id,meet_id,call_type])
 
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
+        EventMesh.publish("return_prev_screen")
 
     def btn1_release(self):
         pass
@@ -8380,11 +8895,17 @@ class vedioCallingCallScreen(Screen):#视频通话打入中
     def done_return(self):
         pass
 
+
+
+
+
 video_outcall_screen = None
 video_outcall_img = None
 video_outcall_name = None
 video_outcall_hangup_imgbtn = None
 video_outcall_call = None
+video_outcall_img_test = None
+video_outcall_hangup_imgbtnlabel = None
 class videoOutCallScreen(Screen):#正在拨号中...未打出
     NAME = "video_outcall"
 
@@ -8394,32 +8915,26 @@ class videoOutCallScreen(Screen):#正在拨号中...未打出
         self.meta_type = "popup"
         self.timer1 = osTimer()
         self.time_count = 0
-        self.timer2 = osTimer()
-        self.CALL_LOG_MAX = CALL_LOG_MAX
-        self.read_call_log = {}
+        self.second_count = 0
        
+
     def initialization(self):
         EventMesh.publish("set_UI_high_priority", 1)
         self.time_count = 0
-        global video_outcall_screen,video_outcall_img,video_outcall_name ,video_outcall_call,video_outcall_hangup_imgbtn 
+        global video_outcall_screen,video_outcall_img,video_outcall_hangup_imgbtnlabel,video_outcall_img_test,video_outcall_name ,video_outcall_call,video_outcall_hangup_imgbtn 
         if video_outcall_screen == None:
             video_outcall_screen = lv.obj()
             print("video_outcall_screen")
             video_outcall_screen.add_style(style_screen, lv.PART.MAIN | lv.STATE.DEFAULT)
 
-            # img_test = lv.img(video_outcall_screen)
-            # ret = jrtc.set_img(img_test)
-            # img_test.align(lv.ALIGN.CENTER, 0, 0)
-            # img_test.set_size(128,128)
-
-            # dialing_popup_img = lv.img(video_outcall_screen)
-            # dialing_popup_img.set_pos(32, 5)
-            # dialing_popup_img.set_size(64, 64)
-            # dialing_popup_img.set_src("U:/static/IMAGE_NOTICE_CALL.png")
-            # dialing_popup_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
+            video_outcall_img_test = lv.img(video_outcall_screen)
+            ret = jrtc.set_img(video_outcall_img_test)
+            video_outcall_img_test.align(lv.ALIGN.CENTER, 0, 0)
+            video_outcall_img_test.set_size(128,128)
+            video_outcall_img_test.add_flag(lv.obj.FLAG.HIDDEN)
 
             video_outcall_name = lv.label(video_outcall_screen)
-            video_outcall_name.set_pos(0, 15)
+            video_outcall_name.set_pos(0, 20)
             video_outcall_name.set_size(LCD_X, 20)
             video_outcall_name.set_text(" ")
             video_outcall_name.set_long_mode(lv.label.LONG.DOT)
@@ -8439,43 +8954,93 @@ class videoOutCallScreen(Screen):#正在拨号中...未打出
             video_outcall_hangup_imgbtn.add_flag(lv.obj.FLAG.CLICKABLE)
             video_outcall_hangup_imgbtn.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
             video_outcall_hangup_imgbtn.set_pos(48, 90)
+
+            video_outcall_hangup_imgbtnlabel = lv.label(video_outcall_screen)
+            video_outcall_hangup_imgbtnlabel.set_pos(18, 50)
+            video_outcall_hangup_imgbtnlabel.set_text(" ")
+            video_outcall_hangup_imgbtnlabel.set_size(90, 78)
+            video_outcall_hangup_imgbtnlabel.add_flag(lv.obj.FLAG.CLICKABLE)
+
+            video_outcall_hangup_imgbtnlabel.add_event_cb(lambda e: EventMesh.callback_wrapper(self.hangup(e)),
+                                    lv.EVENT.SHORT_CLICKED, None)
+            
             video_outcall_hangup_imgbtn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.hangup(e)),
-                                    lv.EVENT.CLICKED, None)
+                                    lv.EVENT.SHORT_CLICKED, None)
+            
+
+            
             self.meta = video_outcall_screen
         if video_outcall_name != None:
             video_outcall_name.set_text(self.meta_info)#名称
+        
         self.time_count = 0
+        self.second_count = 0
+        EventMesh.publish("set_UI_high_priority", 1)
+        call_state = jrtc.get_state()
+        # print("video_outcall",call_state)
+        if call_state == 5:
+            video_outcall_img_test.clear_flag(lv.obj.FLAG.HIDDEN)
+            video_outcall_name.set_text("正在通话中...")#
+            video_outcall_name.set_pos(0, 20)
+        else:
+            video_outcall_img_test.add_flag(lv.obj.FLAG.HIDDEN)
+            video_outcall_call.set_text("正在等待对方接听中...")
+            video_outcall_call.set_pos(0, 50)
+            video_outcall_name.set_text(self.meta_info)#名称
+            video_outcall_name.set_pos(0, 20)
+
         self.timer1.start(1*1000,1,self.fun_cb)
-        # video_outcall_call.clear_flag(lv.obj.FLAG.HIDDEN)
-        # video_outcall_name.clear_flag(lv.obj.FLAG.HIDDEN)
 
     def post_processor_after_initialization(self):
         pass
    
     def hangup(self,e):
+        self.timer1.stop()
         call_id = str(EventMesh.publish("get_vedio_call_id"))#
         meet_id = str(EventMesh.publish("get_vedio_meet_id"))#
         call_type = int(EventMesh.publish("get_vedio_call_type"))#
-        # EventMesh.publish(constants.PROTOCOL.RCALLING_SEND,[call_id,meet_id,call_type])
         EventMesh.publish(constants.PROTOCOL.RCALLING_SEND,[call_id,meet_id,call_type])
+        # EventMesh.publish(constants.PROTOCOL.RCALLING_SEND,[call_id,meet_id,call_type])
         EventMesh.publish("set_UI_high_priority", 0)
         EventMesh.publish("load_screen", {"screen": "videolist"})
 
         pass
     def fun_cb(self,*argc):
         call_state = jrtc.get_state()
-        print("video_outcall",call_state)
+        # print("video_outcall",call_state)
         EventMesh.publish("system_sleep_rest")#防止黑屏
         if call_state == 5:
-            self.timer1.stop()
-            EventMesh.publish("set_UI_high_priority", 0)
-            EventMesh.publish("load_screen", {"screen": "vedioing"})
-        self.time_count+=1
-        if self.time_count >= 1*60:
-            self.time_count = 0
-            self.timer1.stop()
-            EventMesh.publish("set_UI_high_priority", 0)
-            EventMesh.publish("load_screen", {"screen": "videolist"})
+            video_outcall_img_test.clear_flag(lv.obj.FLAG.HIDDEN)
+            video_outcall_name.set_text("正在通话中...")#
+            video_outcall_name.set_pos(0, 20)
+            video_outcall_call.set_pos(0, 50)
+            self.second_count += 1
+            self.show_time()
+        if call_state != 5:
+            self.time_count+=1
+            if self.time_count >= 1*60 or (call_state == 0 and self.time_count >= 5):
+                self.time_count = 0
+                self.timer1.stop()
+                call_id = str(EventMesh.publish("get_vedio_call_id"))#
+                meet_id = str(EventMesh.publish("get_vedio_meet_id"))#
+                call_type = int(EventMesh.publish("get_vedio_call_type"))#
+                EventMesh.publish(constants.PROTOCOL.RCALLING_SEND,[call_id,meet_id,call_type])
+                # EventMesh.publish(constants.PROTOCOL.RCALLING_SEND,[call_id,meet_id,call_type])
+                EventMesh.publish("set_UI_high_priority", 0)
+                EventMesh.publish("load_screen", {"screen": "videolist"})
+
+    def show_time(self):
+
+        if self.second_count >= 99*60:
+            total_hour = self.second_count//3600#小时
+            total_min = (self.second_count%3600)//60#分钟
+            total_sec = (self.second_count%3600)%60#秒
+            video_outcall_call.set_text("{}:{}:{}".format("%02d"%(total_hour),"%02d"%(total_min),"%02d"%(total_sec)))
+            
+        else:
+            total_min = self.second_count//60
+            total_sec = self.second_count%60
+            video_outcall_call.set_text("{}:{}".format("%02d"%(total_min),"%02d"%(total_sec)))
 
     def Close(self):
         self.timer1.stop()
@@ -8551,7 +9116,7 @@ class videolistScreen(Screen):
 
             videolist_none_label = lv.label(videolist_screen_list_screen)
             videolist_none_label.set_pos(0, 20)
-            videolist_none_label.set_size(LCD_X, 40)
+            videolist_none_label.set_size(LCD_X, 60)
             videolist_none_label.set_text("无网络或者无SIM卡或者无添加账号")
             videolist_none_label.set_long_mode(lv.label.LONG.WRAP)
             videolist_none_label.set_style_text_align(lv.TEXT_ALIGN.CENTER, 0)
@@ -8566,7 +9131,7 @@ class videolistScreen(Screen):
                 contact_btn = lv.btn(self.videolist_detail_list)
                 contact_btn.add_flag(lv.obj.FLAG.CLICKABLE)
                 contact_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.calling_cb(e)),
-                                        lv.EVENT.CLICKED, None)
+                                        lv.EVENT.SHORT_CLICKED, None)
                 contact_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.calling_cb(e)), lv.EVENT.PRESSING, None)
                 contact_btn.add_flag(lv.obj.FLAG.HIDDEN)
                 # contact_btn.add_style(style_press_btn, lv.PART.MAIN | lv.STATE.PRESSED)
@@ -8628,7 +9193,7 @@ class videolistScreen(Screen):
                     # add_style(style_contact_btn, lv.PART.MAIN | lv.STATE.DEFAULT)
                     # contact_btn.add_style(style_contact_btn_pressed, lv.PART.MAIN | lv.STATE.PRESSED)
                     # self.contact_detail_listt_dict[i]["contact_btn"].add_event_cb(lambda e: EventMesh.callback_wrapper(self.calling(e)),
-                    #                         lv.EVENT.CLICKED, None)
+                    #                         lv.EVENT.SHORT_CLICKED, None)
 
                     #contact_btn_label_1 = lv.label(contact_btn)
                     self.videolist_detail_listt_dict[i]["contact_btn_label_1"].set_pos(0, 0)
@@ -8672,7 +9237,7 @@ class videolistScreen(Screen):
             #print("PRESSING")
             self.is_sliding += 1
 
-        elif  code == lv.EVENT.CLICKED:
+        elif  code == lv.EVENT.SHORT_CLICKED:
             #utime.sleep_ms(10)
             print("1self.is_sliding",self.is_sliding)
             if self.is_sliding <= 5 and self.is_sliding != 0:#如果是在滑动中则不需要点击事件
@@ -8829,6 +9394,8 @@ class UI(object):
         self.screen = None
         self.screen_old = None
         self.screen_prev = None
+        self.screen_prev_new = None
+        self.screen_last = None
         self.screen_list = []
         self.lv = lv
         self.system_sleep_timer = osTimer()
@@ -8841,6 +9408,10 @@ class UI(object):
         self.main_id = 0
         self.set_interrup_flag = 0
         self.UI_high_priority_flag = 0 #如果=1,则当前ui不被打断
+
+        self.page_id = ["main_menu"]
+        self.page_count = 0
+
         self.level = EventMesh.publish("get_storage_config","brightness_level")
         print("self.level:{}".format(self.level))
         
@@ -8888,6 +9459,9 @@ class UI(object):
         EventMesh.subscribe("publish_message_event_ui",self.publish_message_event_ui)
         EventMesh.subscribe("return_prev_screen",self.return_prev_screen)
 
+        EventMesh.subscribe("del_prev_screen",self.del_prev_screen)#退出当前界面就删除当前界面 进去需要保存当前界面
+        EventMesh.subscribe("add_new_screen",self.add_new_screen)#保存新的界面用作返回上一级
+
         self.system_sleep_timer.start(1000, 1, self.system_sleep_timer_cb)
 
     def publish_message_event_ui(self,event,msg):
@@ -8906,10 +9480,61 @@ class UI(object):
             # for scr in self.screen_list:
             #     if scr.handle_message_event(data) == 1 :
             #         break
+
+    def add_new_screen(self, event, msg):
+        if msg == "main_menu":
+            if self.page_count > 0:
+                self.page_id.clear()#清空所有
+            self.page_count = 0
+            self.page_id = ["main_menu"]
+            print("add_new_screen ",self.page_id,self.page_count)
+        else:
+            if self.page_count == None:
+                self.page_count = 0
+                self.page_id.clear()#清空所有
+                self.page_id = ["main_menu"]
+            last_screen = self.page_id[int(self.page_count)]
+            print("self.page_id",last_screen,msg,self.page_id,self.page_count)
+            if last_screen != msg and (msg in last_screen) == False:
+                self.page_count+=1
+                page_pre = "{}".format(msg)
+                self.page_id.append(page_pre) 
+
+    def del_prev_screen(self, event, msg):
+        if self.page_count > 0:
+            # print("del_prev_screen self.page_id",self.page_id,self.page_count)
+            if self.screen.meta_type != "popup":
+                del self.page_id[int(self.page_count)]
+                self.page_count-=1
+
+            if self.page_count == 0:
+                self.page_id.clear()#清空所有
+                self.page_id = ["main_menu"]
+
+        if self.page_count == None:
+            self.page_count = 0
+            self.page_id.clear()#清空所有
+            self.page_id = ["main_menu"]
+
     def return_prev_screen(self, event, msg):
-        if self.screen_prev != None:
-            # print("return_prev_screen",self.screen_prev)
-            EventMesh.publish("load_screen", {"screen": self.screen_prev.NAME})
+        EventMesh.publish("del_prev_screen")#退出当前界面就删除当前界面 进去需要保存当前界面
+
+        pre_page = self.page_id[int(self.page_count)]
+        # print("pre_page:data = {} self.page_count:{}".format(pre_page,self.page_count))
+        if len(pre_page) == 0:#预防是空的界面
+           self.page_count = 0
+           pre_page = "main_menu"
+
+        if self.page_count == None:
+            self.page_count = 0
+
+        if self.page_count == 0:
+            pre_page = "main_menu"
+        if pre_page != None:
+            EventMesh.publish("load_screen", {"screen": pre_page})
+        # if self.screen_prev != None:
+        #     print("return_prev_screen",self.screen_prev)
+        #     EventMesh.publish("load_screen", {"screen": self.screen_prev.NAME})
 
     def set_interrup_incall(self, event, msg):
         self.set_interrup_flag = msg
@@ -9131,20 +9756,20 @@ class UI(object):
             if state == 1:
                 screen_NAME = EventMesh.publish("get_screen_NAME")
                 if screen_NAME != None:
-                        if msg["screen"] == "charge_out" or  msg["screen"] == "charge_in":
-                                pass
+                    if msg["screen"] == "charge_out" or  msg["screen"] == "charge_in":
+                            pass
+                    else:
+                        if screen_NAME == "class_time" :#在上课禁用界面打断其他操作界面
+                            print("class_time UI")
+                            if msg["screen"] == "countdown_end":
+                                # print("countdown_end UI")
+                                EventMesh.publish("close_count_show_info")
+                            return
                         else:
-                            if screen_NAME == "class_time" :#在上课禁用界面打断其他操作界面
-                                print("class_time UI")
-                                if msg["screen"] == "countdown_end":
-                                    # print("countdown_end UI")
-                                    EventMesh.publish("close_count_show_info")
-                                return
-                            else:
-                                if screen_NAME != "dialing_noplay_popup" or  screen_NAME != "dial_no_connect_popup" or \
-                                screen_NAME != "on_call" or screen_NAME != "dialing" or screen_NAME != "incoming_call" or \
-                                screen_NAME != "charge_in" or screen_NAME != "charge_out":
-                                    EventMesh.publish("load_screen", {"screen": "class_time"}) 
+                            if screen_NAME != "dialing_noplay_popup" or  screen_NAME != "dial_no_connect_popup" or \
+                            screen_NAME != "on_call" or screen_NAME != "dialing" or screen_NAME != "incoming_call" or \
+                            screen_NAME != "charge_in" or screen_NAME != "charge_out":
+                                EventMesh.publish("load_screen", {"screen": "class_time"}) 
                             
         if self.screen :
             
@@ -9168,12 +9793,34 @@ class UI(object):
                         self.aud.stop()
 
                 if self.screen_old != None :
+                    
                     self.screen_old.Close() #先关闭上一次界面
                     self.lv.img.cache_invalidate_src(None) #清img cache
                     self.lv.img.cache_set_size(16) #开img cache
-                    if self.screen_old.meta_type != "popup": #不是弹窗,保存上一个界面,用来返回
-                        self.screen_prev = self.screen_old #
-                self.screen_old = self.screen
+                    # if self.screen_old.meta_type != "popup": #不是弹窗,保存上一个界面,用来返回
+                    if self.screen.meta_type != "popup": #只要当前界面不是弹窗界面都要保存当前界面
+                        # if self.screen_prev_new != self.screen:#screen_prev = setiing  self.screen = imei self.screen_prev = setiing self.screen_prev_new = imei 
+                        #     print('self.screen_prev.NAME6:{} self.screen_old:{}'.format(self.screen_old.NAME,self.screen.NAME))#第一种
+                        #     self.screen_prev = self.screen_prev_new
+                        #     self.screen_last = self.screen_prev_new
+                        #     self.screen_prev_new = self.screen
+                        #     print('self.screen_prev.NAME5:{} self.screen_prev_new:{} self.screen_old:{}'.format(self.screen_prev.NAME,self.screen_prev_new.NAME,self.screen_old.NAME))
+                        # else:
+                        #     if self.screen_last != None:
+                        #         self.screen_prev = self.screen_last
+                            
+                        #     print('self.screen_prev.NAME4:{} self.screen:{} self.screen_old:{}'.format(self.screen_prev.NAME,self.screen.NAME,self.screen_old.NAME))
+                        # print('self.screen_prev.NAME2:{} self.screen_old:{}'.format(self.screen_prev.NAME,self.screen.NAME))
+                    # else:
+                    #     if self.screen_prev_new != None:#self.screen_prev = imei self.screen_prev = imei
+                    #         self.screen_prev = self.screen_prev_new
+                        if self.screen_old.meta_type != "popup":
+                            self.screen_prev = self.screen_old #第二种方式
+                            screen_new = msg["screen"]
+                            # print('self.screen_prev.NAME:{} self.screen_old:{}'.format(self.screen_prev.NAME,self.screen.NAME))
+                            if self.screen_prev.NAME != self.screen.NAME:
+                                EventMesh.publish("add_new_screen",screen_new)#保存新的界面用作返回上一级 
+                
                 if msg.get("meta"):
                     self.screen.meta_info = msg.get("meta")
                 print("load_screen:post_processor_before_initialization")
@@ -9186,9 +9833,15 @@ class UI(object):
                 self.lv.scr_load(self.screen.get_meta())
                 
                 self.screen.post_processor_after_initialization()
+                self.screen_old = self.screen
+                # if self.screen_prev == None:
+                #     self.screen_prev = self.screen
+                # if self.screen_prev_new == None:
+                #     self.screen_prev_new = self.screen
                 self.__lcd_on()
                 mem = gc.mem_free()
                 print('2剩余内存RAM:{} KB'.format(mem / 1024))
+                
 
                 
 
index 56e123d..a1ecfb2 100644 (file)
@@ -76,7 +76,7 @@ watchface1_res_stat_battery_img.add_style(style_watchface_img_default, lv.PART.M
 
 watchface1_res_stat_battery_line = lv.line(Watchface1)
 watchface1_res_stat_battery_line.set_points(power_line_points,2)
-watchface1_res_stat_battery_line.set_pos(int(110),int(6))
+watchface1_res_stat_battery_line.set_pos(int(103),int(6))
 watchface1_res_stat_battery_line.set_size(0,10)#高度12
 watchface1_res_stat_battery_line.add_style(power_line_red,0)
 
@@ -141,19 +141,19 @@ watchface1_week_span.add_style(style_font_youyuan_28, lv.PART.MAIN|lv.STATE.DEFA
 
 #天气
 watchface1_weather_span = lv.label(Watchface1)
-watchface1_weather_span.set_pos(70, 100)
+watchface1_weather_span.set_pos(65, 100)
 watchface1_weather_span.set_size(58, 24)
 watchface1_weather_span.set_align(lv.TEXT_ALIGN.LEFT)
 watchface1_weather_span.set_text("_ _")
 watchface1_weather_span.add_style(style_font_youyuan_28, lv.PART.MAIN|lv.STATE.DEFAULT)
 
 watchface1_weather_img = lv.img(Watchface1)
-watchface1_weather_img.set_pos(110, 5)
+watchface1_weather_img.set_pos(105, 5)
 watchface1_weather_img.set_size(0, 0)
 watchface1_weather_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
 
 watchface1_weather_unit_img = lv.img(Watchface1)
-watchface1_weather_unit_img.set_pos(99, 5)
+watchface1_weather_unit_img.set_pos(94, 5)
 watchface1_weather_unit_img.set_size(11, 11)
 watchface1_weather_unit_img.set_src("U:/static/degree.png")
 watchface1_weather_unit_img.add_style(style_img, lv.PART.MAIN | lv.STATE.DEFAULT)
@@ -239,12 +239,12 @@ class WatchFace1():
             # print("weather_type weather_temp",type(weather_type),type(weather_temp),weather_type,weather_temp)
             if weather_type != None and weather_temp != None:
                 if int(weather_type) > 3:
-                    watchface1_weather_unit_img.set_pos(70+12+10, 102)
+                    watchface1_weather_unit_img.set_pos(60+12+10, 102)
 
-                    watchface1_weather_span.set_pos(70,92)
+                    watchface1_weather_span.set_pos(60,92)
                     watchface1_weather_span.set_text(str("_ _"))
                     
-                    watchface1_weather_img.set_pos(70+12+8+20, 102)
+                    watchface1_weather_img.set_pos(60+12+8+20, 102)
                     watchface1_weather_img.set_size(11, 10)
                     watchface1_weather_img.set_src("U:/static/04_WM.png")
 
@@ -252,32 +252,32 @@ class WatchFace1():
                 else:
                     
                     len_data = len(str(weather_temp))*8
-                    watchface1_weather_unit_img.set_pos(70+len_data+5, 102)
-                    watchface1_weather_span.set_pos(70,100)
+                    watchface1_weather_unit_img.set_pos(60+len_data+5, 102)
+                    watchface1_weather_span.set_pos(60,100)
                     watchface1_weather_span.set_text(str(weather_temp))
 
-                    watchface1_weather_img.set_pos(70+len_data+6+15, 103)
+                    watchface1_weather_img.set_pos(60+len_data+6+15, 103)
                     watchface1_weather_img.set_size(11, 10)
                     watchface1_weather_img.set_src("U:/static/%02d_WM.png"%(int(weather_type)))
 
             else:
-                watchface1_weather_unit_img.set_pos(70+12+10, 102)
+                watchface1_weather_unit_img.set_pos(60+12+10, 102)
 
-                watchface1_weather_span.set_pos(70,92)
+                watchface1_weather_span.set_pos(60,92)
                 watchface1_weather_span.set_text(str("_ _"))
                 
-                watchface1_weather_img.set_pos(70+12+8+20, 102)
+                watchface1_weather_img.set_pos(60+12+8+20, 102)
                 watchface1_weather_img.set_size(11, 10)
                 watchface1_weather_img.set_src("U:/static/04_WM.png")
 
 
         else:
-            watchface1_weather_unit_img.set_pos(70+12+10, 102)
+            watchface1_weather_unit_img.set_pos(60+12+10, 102)
 
-            watchface1_weather_span.set_pos(70,92)
+            watchface1_weather_span.set_pos(60,92)
             watchface1_weather_span.set_text(str("_ _"))
             
-            watchface1_weather_img.set_pos(70+12+8+20, 102)
+            watchface1_weather_img.set_pos(60+12+8+20, 102)
             watchface1_weather_img.set_size(11, 10)
             watchface1_weather_img.set_src("U:/static/04_WM.png")
 
@@ -309,7 +309,7 @@ class WatchFace1():
 
     def __battery(self, event, msg):
         #print("__battery_cb:",str(msg))
-        print("__battery",msg)
+        # print("__battery",msg)
         if msg[0] == '1':
             watchface1_res_stat_battery_line.set_pos(int(0),int(0))
             watchface1_res_stat_battery_line.set_size(0,0)
@@ -326,7 +326,6 @@ class WatchFace1():
                 line_len = 5
             if level <= 5:
                 level = 5
-
             line_points = [
                    {"x":0, "y":0}, 
                    {"x":line_len, "y":0}, 
index 55d67c6..4e1c9dc 100644 (file)
@@ -365,17 +365,17 @@ class MainMenuScreen(Screen):
         print("MainMenu1:__init__")    
         # MainMenu2_til.add_event_cb(lambda e: EventMesh.callback_wrapper(self.scroll_begin_event(e)),lv.EVENT.ALL,None)
         #lv_obj_add_event_cb(lv_tabview_get_content(tabview), scroll_begin_event, LV_EVENT_SCROLL_END, NULL);
-        MainMenu2_img_phone.add_event_cb(lambda e: EventMesh.callback_wrapper(self.img_cb(e,  "Phone")), lv.EVENT.CLICKED, None)
-        MainMenu2_img_toolbox.add_event_cb(lambda e: EventMesh.callback_wrapper(self.img_cb(e, "toolbox")), lv.EVENT.CLICKED, None)
-        MainMenu2_img_setting.add_event_cb(lambda e: EventMesh.callback_wrapper(self.img_cb(e, "setting")), lv.EVENT.CLICKED, None)
-        MainMenu2_img_add_friends.add_event_cb(lambda e: EventMesh.callback_wrapper(self.img_cb(e, "pp_main")), lv.EVENT.CLICKED, None)
-        MainMenu2_img_camera_video.add_event_cb(lambda e: EventMesh.callback_wrapper(self.img_cb(e, "videolist")), lv.EVENT.CLICKED, None)
-        MainMenu2_img_camera.add_event_cb(lambda e: EventMesh.callback_wrapper(self.img_cb(e, "camera")), lv.EVENT.CLICKED, None)
-        MainMenu2_img_camera_album.add_event_cb(lambda e: EventMesh.callback_wrapper(self.img_cb(e, "camera_album")), lv.EVENT.CLICKED, None)
-        MainMenu2_img_contacts.add_event_cb(lambda e: EventMesh.callback_wrapper(self.img_cb(e,  "contacts")), lv.EVENT.CLICKED, None)
-        MainMenu2_img_wechat.add_event_cb(lambda e: EventMesh.callback_wrapper(self.img_cb(e, "wechat")), lv.EVENT.CLICKED, None)
-        # MainMenu2_img_spo2.add_event_cb(lambda e: EventMesh.callback_wrapper(self.img_cb(e, "spo2")), lv.EVENT.CLICKED, None)
-        #MainMenu2_img_sms.add_event_cb(lambda e: EventMesh.callback_wrapper(self.img_cb(e, "popup")), lv.EVENT.CLICKED, None)
+        MainMenu2_img_phone.add_event_cb(lambda e: EventMesh.callback_wrapper(self.img_cb(e,  "Phone")), lv.EVENT.SHORT_CLICKED, None)
+        MainMenu2_img_toolbox.add_event_cb(lambda e: EventMesh.callback_wrapper(self.img_cb(e, "toolbox")), lv.EVENT.SHORT_CLICKED, None)
+        MainMenu2_img_setting.add_event_cb(lambda e: EventMesh.callback_wrapper(self.img_cb(e, "setting")), lv.EVENT.SHORT_CLICKED, None)
+        MainMenu2_img_add_friends.add_event_cb(lambda e: EventMesh.callback_wrapper(self.img_cb(e, "pp_main")), lv.EVENT.SHORT_CLICKED, None)
+        MainMenu2_img_camera_video.add_event_cb(lambda e: EventMesh.callback_wrapper(self.img_cb(e, "videolist")), lv.EVENT.SHORT_CLICKED, None)
+        MainMenu2_img_camera.add_event_cb(lambda e: EventMesh.callback_wrapper(self.img_cb(e, "camera")), lv.EVENT.SHORT_CLICKED, None)
+        MainMenu2_img_camera_album.add_event_cb(lambda e: EventMesh.callback_wrapper(self.img_cb(e, "camera_album")), lv.EVENT.SHORT_CLICKED, None)
+        MainMenu2_img_contacts.add_event_cb(lambda e: EventMesh.callback_wrapper(self.img_cb(e,  "contacts")), lv.EVENT.SHORT_CLICKED, None)
+        MainMenu2_img_wechat.add_event_cb(lambda e: EventMesh.callback_wrapper(self.img_cb(e, "wechat")), lv.EVENT.SHORT_CLICKED, None)
+        # MainMenu2_img_spo2.add_event_cb(lambda e: EventMesh.callback_wrapper(self.img_cb(e, "spo2")), lv.EVENT.SHORT_CLICKED, None)
+        #MainMenu2_img_sms.add_event_cb(lambda e: EventMesh.callback_wrapper(self.img_cb(e, "popup")), lv.EVENT.SHORT_CLICKED, None)
 
         MainMenu2_img_phone.add_event_cb(lambda e: EventMesh.callback_wrapper(self.img_cb(e,  "Phone")), lv.EVENT.PRESSING, None)
         MainMenu2_img_toolbox.add_event_cb(lambda e: EventMesh.callback_wrapper(self.img_cb(e, "toolbox")), lv.EVENT.PRESSING, None)
@@ -386,8 +386,8 @@ class MainMenuScreen(Screen):
         MainMenu2_img_camera_album.add_event_cb(lambda e: EventMesh.callback_wrapper(self.img_cb(e, "camera_album")), lv.EVENT.PRESSING, None)
         MainMenu2_img_contacts.add_event_cb(lambda e: EventMesh.callback_wrapper(self.img_cb(e,  "contacts")), lv.EVENT.PRESSING, None)
         MainMenu2_img_wechat.add_event_cb(lambda e: EventMesh.callback_wrapper(self.img_cb(e, "wechat")), lv.EVENT.PRESSING, None)
-        # MainMenu2_img_spo2.add_event_cb(lambda e: EventMesh.callback_wrapper(self.img_cb(e, "spo2")), lv.EVENT.CLICKED, None)
-        #MainMenu2_img_sms.add_event_cb(lambda e: EventMesh.callback_wrapper(self.img_cb(e, "popup")), lv.EVENT.CLICKED, None)
+        # MainMenu2_img_spo2.add_event_cb(lambda e: EventMesh.callback_wrapper(self.img_cb(e, "spo2")), lv.EVENT.SHORT_CLICKED, None)
+        #MainMenu2_img_sms.add_event_cb(lambda e: EventMesh.callback_wrapper(self.img_cb(e, "popup")), lv.EVENT.SHORT_CLICKED, None)
         
 
         EventMesh.subscribe("watch_top_show", self.watch_top_show)
@@ -417,7 +417,7 @@ class MainMenuScreen(Screen):
             #print("PRESSING")
             self.is_sliding += 1
 
-        elif  code == lv.EVENT.CLICKED:
+        elif  code == lv.EVENT.SHORT_CLICKED:
             #utime.sleep_ms(10)
             # print("1self.is_sliding",self.is_sliding)
             if self.is_sliding <= 5 and self.is_sliding != 0:#如果是在滑动中则不需要点击事件
index 13cd22b..9fb22dd 100644 (file)
@@ -370,33 +370,33 @@ class SettingScreen(Screen):
         self.is_sliding = 0
         self.is_left_sliding = 0
         self.meta = setting_screen
-        # setting_language.add_event_cb(lambda e: self.load_screen(e, {"screen": "language"}), lv.EVENT.CLICKED, None)
-        # setting_dialswitch_img_btn_1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_setting_cb(e, "dialswitch")), (lv.EVENT.CLICKED ), None)
-        # setting_imei_label.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_setting_cb(e, "imei")), (lv.EVENT.CLICKED ), None)
-        # setting_app_label.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_setting_cb(e,  "app")), (lv.EVENT.CLICKED ), None)
-        # setting_bright_label.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_setting_cb(e,  "brightness")), (lv.EVENT.CLICKED ), None)
-        # setting_volume_label.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_setting_cb(e, "totalvolume")), (lv.EVENT.CLICKED ), None)
-        # setting_restore_label.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_setting_cb(e,  "restore")), (lv.EVENT.CLICKED ), None)
-        # setting_poweroff_label.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_setting_cb(e, "poweroff")), (lv.EVENT.CLICKED ), None)
-        # setting_update_label_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_setting_cb(e, "update")), (lv.EVENT.CLICKED ), None)
-        # setting_version_label.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_setting_cb(e, "version")), (lv.EVENT.CLICKED ), None)
+        # setting_language.add_event_cb(lambda e: self.load_screen(e, {"screen": "language"}), lv.EVENT.SHORT_CLICKED, None)
+        # setting_dialswitch_img_btn_1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_setting_cb(e, "dialswitch")), (lv.EVENT.SHORT_CLICKED ), None)
+        # setting_imei_label.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_setting_cb(e, "imei")), (lv.EVENT.SHORT_CLICKED ), None)
+        # setting_app_label.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_setting_cb(e,  "app")), (lv.EVENT.SHORT_CLICKED ), None)
+        # setting_bright_label.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_setting_cb(e,  "brightness")), (lv.EVENT.SHORT_CLICKED ), None)
+        # setting_volume_label.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_setting_cb(e, "totalvolume")), (lv.EVENT.SHORT_CLICKED ), None)
+        # setting_restore_label.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_setting_cb(e,  "restore")), (lv.EVENT.SHORT_CLICKED ), None)
+        # setting_poweroff_label.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_setting_cb(e, "poweroff")), (lv.EVENT.SHORT_CLICKED ), None)
+        # setting_update_label_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_setting_cb(e, "update")), (lv.EVENT.SHORT_CLICKED ), None)
+        # setting_version_label.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_setting_cb(e, "version")), (lv.EVENT.SHORT_CLICKED ), None)
 
         # img regist btton
-        # setting_language.add_event_cb(lambda e: self.load_screen(e, {"screen": "language"}), (lv.EVENT.CLICKED ), None)
-        # setting_dialswitch_img.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_setting_cb(e, "dialswitch")), (lv.EVENT.CLICKED ), None)
-
-        setting_imei_img_btn_1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_setting_cb(e, "imei")), (lv.EVENT.CLICKED ), None)
-        setting_app_img_btn_1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_setting_cb(e, "app")), (lv.EVENT.CLICKED ), None)
-        setting_bright_img_btn_1.add_event_cb(lambda e:EventMesh.callback_wrapper( self.ui_setting_cb(e, "brightness")), (lv.EVENT.CLICKED ), None)
-        setting_volume_img_btn_1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_setting_cb(e, "totalvolume")), (lv.EVENT.CLICKED ), None)
-        setting_restore_img_btn_1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_setting_cb(e, "restore")), (lv.EVENT.CLICKED ), None)
-        setting_poweroff_img_btn_1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_setting_cb(e, "poweroff")), (lv.EVENT.CLICKED ), None)
-        setting_restart_img_btn_1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_setting_cb(e, "restart")), lv.EVENT.CLICKED, None)
-        # setting_update_img_btn_1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_setting_cb(e, "update")), (lv.EVENT.CLICKED ), None)
-        setting_version_img_btn_1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_setting_cb(e, "version")), (lv.EVENT.CLICKED ), None)
-        setting_dialswitch_img_btn_1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_setting_cb(e, "dialswitch")), lv.EVENT.CLICKED, None)
-
-        # # setting_themeswitch.add_event_cb(lambda e: self.load_screen(e, {"screen": "themeswitch"}), lv.EVENT.CLICKED, None)
+        # setting_language.add_event_cb(lambda e: self.load_screen(e, {"screen": "language"}), (lv.EVENT.SHORT_CLICKED ), None)
+        # setting_dialswitch_img.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_setting_cb(e, "dialswitch")), (lv.EVENT.SHORT_CLICKED ), None)
+
+        setting_imei_img_btn_1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_setting_cb(e, "imei")), (lv.EVENT.SHORT_CLICKED ), None)
+        setting_app_img_btn_1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_setting_cb(e, "app")), (lv.EVENT.SHORT_CLICKED ), None)
+        setting_bright_img_btn_1.add_event_cb(lambda e:EventMesh.callback_wrapper( self.ui_setting_cb(e, "brightness")), (lv.EVENT.SHORT_CLICKED ), None)
+        setting_volume_img_btn_1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_setting_cb(e, "totalvolume")), (lv.EVENT.SHORT_CLICKED ), None)
+        setting_restore_img_btn_1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_setting_cb(e, "restore")), (lv.EVENT.SHORT_CLICKED ), None)
+        setting_poweroff_img_btn_1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_setting_cb(e, "poweroff")), (lv.EVENT.SHORT_CLICKED ), None)
+        setting_restart_img_btn_1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_setting_cb(e, "restart")), lv.EVENT.SHORT_CLICKED, None)
+        # setting_update_img_btn_1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_setting_cb(e, "update")), (lv.EVENT.SHORT_CLICKED ), None)
+        setting_version_img_btn_1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_setting_cb(e, "version")), (lv.EVENT.SHORT_CLICKED ), None)
+        setting_dialswitch_img_btn_1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_setting_cb(e, "dialswitch")), lv.EVENT.SHORT_CLICKED, None)
+
+        # # setting_themeswitch.add_event_cb(lambda e: self.load_screen(e, {"screen": "themeswitch"}), lv.EVENT.SHORT_CLICKED, None)
         # setting_imei_label.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_setting_cb(e, "imei")), lv.EVENT.PRESSING, None)
         # setting_app_label.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_setting_cb(e,  "app")), lv.EVENT.PRESSING, None)
         # setting_bright_label.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_setting_cb(e,  "brightness")), lv.EVENT.PRESSING, None)
@@ -407,9 +407,9 @@ class SettingScreen(Screen):
         # setting_version_label.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_setting_cb(e, "version")), lv.EVENT.PRESSING, None)
 
         # img regist btton
-        # setting_language.add_event_cb(lambda e: self.load_screen(e, {"screen": "language"}), lv.EVENT.CLICKED, None)
+        # setting_language.add_event_cb(lambda e: self.load_screen(e, {"screen": "language"}), lv.EVENT.SHORT_CLICKED, None)
         setting_dialswitch_img_btn_1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_setting_cb(e, "dialswitch")), lv.EVENT.PRESSING, None)
-        # setting_themeswitch.add_event_cb(lambda e: self.load_screen(e, {"screen": "themeswitch"}), lv.EVENT.CLICKED, None)
+        # setting_themeswitch.add_event_cb(lambda e: self.load_screen(e, {"screen": "themeswitch"}), lv.EVENT.SHORT_CLICKED, None)
         setting_imei_img_btn_1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_setting_cb(e, "imei")), lv.EVENT.PRESSING, None)
         setting_app_img_btn_1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.ui_setting_cb(e, "app")), lv.EVENT.PRESSING, None)
         setting_bright_img_btn_1.add_event_cb(lambda e:EventMesh.callback_wrapper( self.ui_setting_cb(e, "brightness")), lv.EVENT.PRESSING, None)
@@ -439,7 +439,7 @@ class SettingScreen(Screen):
             #print("PRESSING")
             self.is_sliding += 1
 
-        elif  code == lv.EVENT.CLICKED:
+        elif  code == lv.EVENT.SHORT_CLICKED:
             #utime.sleep_ms(10)
             print("1self.is_sliding",self.is_sliding)
             if self.is_sliding <= 5 and self.is_sliding != 0:#如果是在滑动中则不需要点击事件
@@ -450,7 +450,8 @@ class SettingScreen(Screen):
             self.is_sliding =0
             
     def done_return(self):
-        EventMesh.publish("load_screen", {"screen": "main_menu"})
+        EventMesh.publish("return_prev_screen")
+        # EventMesh.publish("load_screen", {"screen": "main_menu"})
 
     def btn1_release(self):
         EventMesh.publish("return_setiing")
@@ -946,18 +947,20 @@ class RestoreScreen(Screen):
     def __init__(self):
         super().__init__()
         self.meta = restore_screen
-        restore_confirm.add_event_cb(lambda e: EventMesh.callback_wrapper(self.confirm(e)),lv.EVENT.CLICKED, None)
-        restore_cancel.add_event_cb(lambda e: EventMesh.callback_wrapper(self.concel(e)),lv.EVENT.CLICKED, None)
+        restore_confirm.add_event_cb(lambda e: EventMesh.callback_wrapper(self.confirm(e)),lv.EVENT.SHORT_CLICKED, None)
+        restore_cancel.add_event_cb(lambda e: EventMesh.callback_wrapper(self.concel(e)),lv.EVENT.SHORT_CLICKED, None)
         
     
     def confirm(self, e):
         EventMesh.publish("load_screen", {"screen": "restore_confirm"})
 
     def concel(self, e):
-        EventMesh.publish("load_screen", {"screen": "setting"})
+        EventMesh.publish("return_prev_screen")
+        # EventMesh.publish("load_screen", {"screen": "setting"})
 
     def done_return(self):
-        EventMesh.publish("load_screen", {"screen": "setting"})
+        EventMesh.publish("return_prev_screen")
+        # EventMesh.publish("load_screen", {"screen": "setting"})
 
     def btn1_release(self):
         EventMesh.publish("load_screen", {"screen": "setting"})
@@ -1101,8 +1104,8 @@ class RestartScreen(Screen):
         super().__init__()
         self.meta = restart_screen
         self.old_x = 0
-        # restart_confirm.add_event_cb(lambda e: EventMesh.callback_wrapper(self.confirm(e)),lv.EVENT.CLICKED, None)
-        # restart_cancel.add_event_cb(lambda e: EventMesh.callback_wrapper(self.concel(e)),lv.EVENT.CLICKED, None)
+        # restart_confirm.add_event_cb(lambda e: EventMesh.callback_wrapper(self.confirm(e)),lv.EVENT.SHORT_CLICKED, None)
+        # restart_cancel.add_event_cb(lambda e: EventMesh.callback_wrapper(self.concel(e)),lv.EVENT.SHORT_CLICKED, None)
         screen_slider_1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.save_choice(e)), lv.EVENT.VALUE_CHANGED, None)
         screen_slider_1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.save_choice(e)), lv.EVENT.RELEASED, None)
     
@@ -1157,7 +1160,8 @@ class RestartScreen(Screen):
         EventMesh.publish("load_screen", {"screen": "setting"})
 
     def done_return(self):
-        EventMesh.publish("load_screen", {"screen": "setting"})
+        EventMesh.publish("return_prev_screen")
+        # EventMesh.publish("load_screen", {"screen": "setting"})
 
     def btn1_release(self):
         EventMesh.publish("load_screen", {"screen": "setting"})
@@ -1172,7 +1176,7 @@ class UpdateScreen(Screen):
     def __init__(self):
         super().__init__()
         self.meta = update_screen
-        update_return.add_event_cb(lambda e: EventMesh.callback_wrapper(self.back(e)),lv.EVENT.CLICKED, None)
+        update_return.add_event_cb(lambda e: EventMesh.callback_wrapper(self.back(e)),lv.EVENT.SHORT_CLICKED, None)
     
     def back(self,e):
         EventMesh.publish("load_screen", {"screen": "setting"})
@@ -1214,7 +1218,8 @@ class VersionScreen(Screen):
             EventMesh.publish("load_screen", {"screen": "factorymode"})
 
     def done_return(self):
-        EventMesh.publish("load_screen", {"screen": "setting"})
+        EventMesh.publish("return_prev_screen")
+        # EventMesh.publish("load_screen", {"screen": "setting"})
 
     def btn1_release(self):
         EventMesh.publish("load_screen", {"screen": "setting"})
@@ -1380,7 +1385,8 @@ class PoweroffScreen(Screen):
         pass
         
     def done_return(self):
-        EventMesh.publish("load_screen", {"screen": "setting"})
+        EventMesh.publish("return_prev_screen")
+        # EventMesh.publish("load_screen", {"screen": "setting"})
         
     def confirm(self, e):
         EventMesh.publish("load_screen", {"screen": "poweroff_comfirm"})   
@@ -1415,6 +1421,7 @@ class PoweroffConfirmScreen(Screen):
         self.meta = poweroff_confirm_screen
         self.timer = osTimer()
         self.aud = audio.Audio(0)
+        self.meta_type = "popup"
         
 
     def initialization(self):
@@ -1465,6 +1472,7 @@ class PowerOnScreen(Screen):
         self.timer1 = osTimer()
         self.timer2 = osTimer()
         self.aud = audio.Audio(0)
+        self.meta_type = "popup"
         self.aud.set_pa(Pin.GPIO29)
         self.volum_size = 8
         check_volum = EventMesh.publish("get_storage_config","volum")
@@ -1581,7 +1589,7 @@ class DialswitchScreen(Screen):
         self.read_data = {}
         self.watchface_style_num = "Watchface1"
         dialswitch_img1.add_event_cb(lambda e: EventMesh.callback_wrapper(self.watchface01(e)),
-                                     lv.EVENT.CLICKED, None)
+                                     lv.EVENT.SHORT_CLICKED, None)
         self.dial_num = 1
         self.move = 0
         self.timer= osTimer()
@@ -1604,7 +1612,7 @@ class DialswitchScreen(Screen):
 
     def watchface01(self,e):
         code  = e.get_code()
-        # if code == lv.EVENT.CLICKED:
+        # if code == lv.EVENT.SHORT_CLICKED:
         #     self.timer.start(50,0,self.enter_main_show)
         self.enter_main_show(0)
             
@@ -1616,7 +1624,8 @@ class DialswitchScreen(Screen):
 
 
     def done_return(self):
-        EventMesh.publish("load_screen", {"screen": "setting"})
+        EventMesh.publish("return_prev_screen")
+        # EventMesh.publish("load_screen", {"screen": "setting"})
 
     def done_left_to_right(self):#右滑
         pass
@@ -1712,7 +1721,8 @@ class ImeiScreen(Screen):
         imei_label.set_text(imei)
 
     def done_return(self):
-        EventMesh.publish("load_screen", {"screen": "setting"})
+        EventMesh.publish("return_prev_screen")
+        # EventMesh.publish("load_screen", {"screen": "setting"})
 
     def btn1_release(self):
         EventMesh.publish("load_screen", {"screen": "setting"})
@@ -1733,7 +1743,8 @@ class AppScreen(Screen):
         app_label.set_text(imei)
     
     def done_return(self):
-        EventMesh.publish("load_screen", {"screen": "setting"})
+        EventMesh.publish("return_prev_screen")
+        # EventMesh.publish("load_screen", {"screen": "setting"})
 
     def btn1_release(self):
         EventMesh.publish("load_screen", {"screen": "setting"})
@@ -1838,15 +1849,15 @@ class BrightnessScreen(Screen):
         self.read_data = {}
         self.meta = brightness_screen
         brightness_add_imgbtn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.add_level(e)),
-                                     lv.EVENT.CLICKED, None)
+                                     lv.EVENT.SHORT_CLICKED, None)
         brightness_reduce_imgbtn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.reduce_level(e)),
-                                     lv.EVENT.CLICKED, None)
+                                     lv.EVENT.SHORT_CLICKED, None)
         
         brightness_time_reduce_imgbtn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.add_time_level(e)),
-                                     lv.EVENT.CLICKED, None)
+                                     lv.EVENT.SHORT_CLICKED, None)
 
         brightness_time_add_imgbtn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.reduce_time_level(e)),
-                                     lv.EVENT.CLICKED, None)
+                                     lv.EVENT.SHORT_CLICKED, None)
     def initialization(self):
         self.level = EventMesh.publish("get_brightness_level")
         self.time = EventMesh.publish("get_brightness_time")
@@ -1891,7 +1902,8 @@ class BrightnessScreen(Screen):
 
     
     def done_return(self):
-        EventMesh.publish("load_screen", {"screen": "setting"})
+        EventMesh.publish("return_prev_screen")
+        # EventMesh.publish("load_screen", {"screen": "setting"})
 
     def btn1_release(self):
         EventMesh.publish("load_screen", {"screen": "setting"})
@@ -1907,9 +1919,9 @@ class VolumeScreen(Screen):
     def __init__(self):
         super().__init__()
         self.meta = volume_screen
-        volume_phone_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.load_screen(e, {"screen": "phonering"})), lv.EVENT.CLICKED, None)
-        volume_message_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.load_screen(e, {"screen": "msgvolume"})), lv.EVENT.CLICKED, None)
-        volume_alarm_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.load_screen(e, {"screen": "alarmvolume"})), lv.EVENT.CLICKED, None)
+        volume_phone_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.load_screen(e, {"screen": "phonering"})), lv.EVENT.SHORT_CLICKED, None)
+        volume_message_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.load_screen(e, {"screen": "msgvolume"})), lv.EVENT.SHORT_CLICKED, None)
+        volume_alarm_btn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.load_screen(e, {"screen": "alarmvolume"})), lv.EVENT.SHORT_CLICKED, None)
 
     def done_return(self):
         EventMesh.publish("load_screen", {"screen": "setting"})
@@ -1930,9 +1942,9 @@ class PhoneringScreen(Screen):
         self.level = 2
         self.meta = phonering_screen
         phonering_add_imgbtn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.add_level(e)),
-                                     lv.EVENT.CLICKED, None)
+                                     lv.EVENT.SHORT_CLICKED, None)
         phonering_reduce_imgbtn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.reduce_level(e)),
-                                     lv.EVENT.CLICKED, None)
+                                     lv.EVENT.SHORT_CLICKED, None)
         phonering_add_imgbtn.set_ext_click_area(20)
         phonering_reduce_imgbtn.set_ext_click_area(20)
 
@@ -1977,9 +1989,9 @@ class AlarmvolumeScreen(Screen):
         self.level = 2
         self.meta = alarmvolume_screen
         alarmvolume_add_imgbtn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.add_level(e)),
-                                     lv.EVENT.CLICKED, None)
+                                     lv.EVENT.SHORT_CLICKED, None)
         alarmvolume_reduce_imgbtn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.reduce_level(e)),
-                                     lv.EVENT.CLICKED, None)
+                                     lv.EVENT.SHORT_CLICKED, None)
 
     def add_level(self, e):
         EventMesh.publish("push_add_alarmvolume_level")
@@ -2017,9 +2029,9 @@ class MsgvolumeScreen(Screen):
         self.level = 2
         self.meta = msgvolume_screen
         msgvolume_add_imgbtn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.add_level(e)),
-                                     lv.EVENT.CLICKED, None)
+                                     lv.EVENT.SHORT_CLICKED, None)
         msgvolume_reduce_imgbtn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.reduce_level(e)),
-                                     lv.EVENT.CLICKED, None)
+                                     lv.EVENT.SHORT_CLICKED, None)
 
     def add_level(self, e):
         EventMesh.publish("push_add_msgvolume_level")
@@ -2102,9 +2114,9 @@ class totalvolumeScreen(Screen):
         super().__init__()
         self.meta = volume_adjust_screen
         totalvolume_add_imgbtn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.add_volum_size(e)),
-                                     lv.EVENT.CLICKED, None)
+                                     lv.EVENT.SHORT_CLICKED, None)
         totalvolume_reduce_imgbtn.add_event_cb(lambda e: EventMesh.callback_wrapper(self.reduce_volum_size(e)),
-                                     lv.EVENT.CLICKED, None)
+                                     lv.EVENT.SHORT_CLICKED, None)
         self.read_data = {}
         self.volum_size = 8
         self.aud = audio.Audio(0)
@@ -2146,7 +2158,8 @@ class totalvolumeScreen(Screen):
 
     def done_return(self):
         self.aud.stop()
-        EventMesh.publish("load_screen", {"screen": "setting"})
+
+        EventMesh.publish("return_prev_screen")
 
     def btn1_release(self):
         EventMesh.publish("load_screen", {"screen": "setting"})
index bbe1f4a..ea1414f 100644 (file)
Binary files a/2.sdk/project/K01/sdk/system/platform/ASR_1606/boards/EG810MCN_GA_VOLTE/images/DBG.7z and b/2.sdk/project/K01/sdk/system/platform/ASR_1606/boards/EG810MCN_GA_VOLTE/images/DBG.7z differ
index 714d069..73c5340 100644 (file)
Binary files a/2.sdk/project/K01/sdk/system/platform/ASR_1606/boards/EG810MCN_GA_VOLTE/libraries/libHeliosAPI.lib and b/2.sdk/project/K01/sdk/system/platform/ASR_1606/boards/EG810MCN_GA_VOLTE/libraries/libHeliosAPI.lib differ
index c0f815c..f5bf2c8 100644 (file)
Binary files a/2.sdk/project/K01/sdk/system/platform/ASR_1606/boards/EG810MCN_GA_VOLTE/libraries/ql_common_api.lib and b/2.sdk/project/K01/sdk/system/platform/ASR_1606/boards/EG810MCN_GA_VOLTE/libraries/ql_common_api.lib differ
index 22814c3..afdbf34 100644 (file)
@@ -806,6 +806,7 @@ class PopupAlarmScreen(Screen):
         self.timer = osTimer()
         self.aud = audio.Audio(0)
         self.alarm_count = 0
+        self.meta_type = "popup"
 
     def initialization(self):
         self.alarm_count = 0
index 5a5ffc1..ec2750e 100644 (file)
@@ -996,6 +996,9 @@ class DialingScreen(Screen):
         self.read_call_log = {}
         self.number_tmp = {}
         self.CALL_LOG_MAX = CALL_LOG_MAX
+        self.meta_type = "popup"
+
+
     def initialization(self):
         EventMesh.publish("set_UI_high_priority", 1)
         global dialing_screen,dialing_img,dialing_name ,hangup_imgbtn 
@@ -2859,7 +2862,7 @@ class IncomingCallScreen(Screen):
         self.pro_state = 0
         self.meta = None
         
-
+        self.meta_type = "popup"
         self.call_log = {}
         self.call_log_value = {}
         self.read_call_log = {}
@@ -3117,6 +3120,7 @@ class OnCallScreen(Screen):
         self.phone_list = []
         self.button = 0
         self.mute_btn = 0
+        self.meta_type = "popup"
 
     def initialization(self):
         EventMesh.publish("set_UI_high_priority", 1)
@@ -5341,6 +5345,7 @@ class CountdownEndScreen(Screen):
         self.FIND_timer=osTimer()
         self.aud = audio.Audio(0)
         self.FIND_timer_count = 0
+        self.meta_type = "popup"
 
     def initialization(self):
         global countdown_end_screen ,countdown_end_img ,countdown_end_label 
@@ -5713,7 +5718,7 @@ class UIFINDScreen(Screen):
         # self.aud.setVolume(self.volum_size)
         self.FIND_timer = osTimer()
         self.FIND_timer_count = 0
-
+        self.meta_type = "popup"
         self.meta = None
 
     def initialization(self):
@@ -5792,6 +5797,7 @@ class LowPowerScreen(Screen):
     def __init__(self):
         super().__init__()
         self.meta = None
+        self.meta_type = "popup"
 
     def initialization(self):
         global Lowpower_screen ,Lowpower_screen_img  
@@ -5840,6 +5846,7 @@ class LowOnePowerScreen(Screen): #0%的电池电量
         super().__init__()
         self.meta = None
         self.timer = osTimer()
+        self.meta_type = "popup"
 
     def initialization(self):
         global LowOnePower_screen ,LowOnePower_screen_img ,LowOnePower_screen_label2,LowOnePower_screen_label1
@@ -6128,6 +6135,7 @@ class SystemInitScreen(Screen):
         self.meta = None
         self.system_init_timer=osTimer()
         self.system_init_timer_count = 0
+        self.meta_type = "popup"
 
     def initialization(self):
         global system_init_screen ,system_init_label  
@@ -6426,6 +6434,7 @@ class classMgrPopupScreen(Screen):#上课禁用时间界面
         super().__init__()
         self.meta = None
         self.timer = osTimer()
+        self.meta_type = "popup"
     def initialization(self):
         global class_mgr_popup_screen ,class_mgr_popup_label ,class_mgr_popup_time1_text
         if class_mgr_popup_screen == None:
index 2c0d6de..cd4b289 100644 (file)
@@ -1046,6 +1046,7 @@ class PowerOnScreen(Screen):
         self.timer = osTimer()
         self.aud = audio.Audio(0)
         self.aud.set_pa(Pin.GPIO29)
+        self.meta_type = "popup"
         self.volum_size = 8
         check_volum = EventMesh.publish("get_storage_config","volum")
         if check_volum != None:
@@ -1106,6 +1107,7 @@ class PoweroffConfirmScreen(Screen):
         self.meta = poweroff_confirm_screen
         self.timer = osTimer()
         self.count = 0
+        self.meta_type = "popup"
 
     def initialization(self):
         step = EventMesh.publish("get_old_step_value")