D10拦截陌生人
authorp15692025051 <846603105@qq.com>
Mon, 11 Dec 2023 01:41:25 +0000 (09:41 +0800)
committerp15692025051 <846603105@qq.com>
Mon, 11 Dec 2023 01:41:25 +0000 (09:41 +0800)
2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/main_init.py
2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/mgr.py
2.sdk/project/D10/sdk/services/microPython/ports/quectel/core/protocol.py

index 50ee631..5e2b1e8 100644 (file)
@@ -188,6 +188,7 @@ def main_init():
     pcr.add_support(protocol.bloodglucose_ProtoCol())
     pcr.add_support(protocol.REMIND_CHDRINK_ProtoCol())
     pcr.add_support(protocol.REMIND_CHMEDICINE2_ProtoCol())
+    pcr.add_support(protocol.WLKEY_ProtoCol())
     pcr.add_support(protocol.REMIND_CH_WAKEUP_ProtoCol())
     pcr.add_support(protocol.REMIND_CH_SLEEP_ProtoCol())
     pcr.add_support(protocol.REMIND_CH_HOME_ProtoCol())
index ccd555d..6f800ab 100644 (file)
@@ -629,7 +629,9 @@ class sosInfoCallManager(Abstract):
                             elif num == 3:
                                 EventMesh.debug_log("phone 6")
                                 EventMesh.publish("set_callnumer_cb",number[0])   
-        
+WL_timer = osTimer()   
+def WL_timer_cb(*args):    
+    voiceCall.callAnswer()
 def voice_callback(args):
    EventMesh.debug_log('voicecall iinfo:{}'.format(args))
    if args[0] == 10:
@@ -646,6 +648,27 @@ def voice_callback(args):
 
         if b == True and size_len > 11:
             tmp = tmp[size_len-11:]
+        WLKEY = EventMesh.publish("get_storage_config","WLKEY") 
+        if WLKEY == "1" or WLKEY == "2":#开启了白名单
+            on_list_flag = 0
+            phonebook = EventMesh.publish("get_phonebook_list")
+            phonebook_list = phonebook[1]
+            EventMesh.debug_log("voice_callback:phonebook_list{}".format(phonebook_list))
+            try:
+                for value in phonebook_list.values():
+                    if value == args[6]:
+                        on_list_flag = 1
+                        break
+            except Exception as e:
+                usys.print_exception(e)
+            EventMesh.debug_log("voice_callback:on_list_flag{}".format(on_list_flag))
+            if on_list_flag == 1:#在白名单里
+                if WLKEY == "2":
+                    WL_timer.start(30000, 0, WL_timer_cb)
+            else:
+                EventMesh.debug_log("voice_callback:不在白名单中,挂断")
+                voiceCall.callEnd()
+                return 
         EventMesh.publish("set_call_state",2) 
         EventMesh.publish("dialin_call_event")#电话拨进响铃
         # EventMesh.publish("load_screen", {"screen": "incoming_call","meta":str(tmp)})
index 74f120f..b854cc7 100644 (file)
@@ -1694,28 +1694,7 @@ class Time_ProtoCol(ProtoCol):
         #EventMesh.publish(constants.PROTOCOL.TIME_SEND)  
 
 
-#拒接模式来电
-class WLKEY_ProtoCol(ProtoCol):
-    """"""
-    TYPE = "WLKEY"
-    def send(self, event, msg):
-        # [XT*334588000000156*0005*WLKEY]
-        send_data = self.PID+"*%s*0005*WLKEY"%(self.imei)
-        MD5_SIGN = self.pack_MD5_head(send_data)
-        data = "[%s%s]"%(str(MD5_SIGN),send_data)
-        # EventMesh.debug_log("WLKEY:data:%s"%(data))
-        # EventMesh.debug_log("WLKEY!!!!!!!!!!!!!")
-        # 通过socket发送到服务器端
-        EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND,data)
 
-    def recv(self, event, msg):
-        """
-        @param event:
-        @param msg: 接收到的下行数据
-        """
-        # b'[SZKW*867387060319166*000A*KEYBRD]'
-        # EventMesh.debug_log("WLKEY!!!!!!!!!!!!!",msg)
-        EventMesh.publish(constants.PROTOCOL.WLKEY_SEND)  
 
 #免打扰
 class SILENCETIME2_ProtoCol(ProtoCol):
@@ -2589,6 +2568,37 @@ class REMIND_CH_REST_ProtoCol(ProtoCol):#该休息了
 
 
 
+class WLKEY_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 = "WLKEY"
+    
+    def send(self, event, msg):
+        send_data = self.PID+"*%s*00006*WLKEY"%(self.imei)
+        MD5_SIGN = self.pack_MD5_head(send_data)
+        data = "[%s%s]"%(str(MD5_SIGN),send_data)
+        #Wechat_log("POWEROFF_ProtoCol:send:%s"%(data))
+        # 通过socket发送到服务器端
+        EventMesh.publish(constants.EVENT.CHANNEL_SOCKET_SEND, data)
+
+    def recv(self, event, msg):
+
+        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 ProtoColResolver(object):
     def __init__(self):