From 4fb63df7704edacbc5825c323a7c1176c9fad401 Mon Sep 17 00:00:00 2001 From: =?utf8?q?=E8=83=A1=E4=BC=A0=E5=86=9B?= <1224667075@qq.com> Date: Wed, 20 Nov 2024 14:50:50 +0000 Subject: [PATCH] Merge #1432 into sdk602patch0911 from refs/changes/1432/head MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit 电话优化 * refs/changes/1432/head: (1 commits squashed) - 电话优化 Signed-off-by: aliyun8003852482 <1224667075@qq.com> Reviewed-by: Caisking <3449750381@qq.com> Reviewed-by: 罗正 <1732036298@qq.com> Reviewed-by: aliyun8003852482 <1224667075@qq.com> Reviewed-by: snickersun@163.com Reviewed-by: aliyun6865282430 <1624952103@qq.com> Merged-by: Caisking <3449750381@qq.com> CR-link: https://codeup.aliyun.com/64191456b9581d62e8f81ac0/FD230/change/1432 --- cat1modem/src/cat1Service.py | 149 ++++++++++++++---- .../nativeui/callerlog/src/CallerLogModel.cpp | 1 + .../broadcast/include/broadcast_feature.h | 1 + .../broadcast/src/broadcast_implement.c | 1 + .../include/notify/makephone_notification.h | 1 + .../msg_center/src/msg_center_customer.cpp | 36 ++++- .../src/notify/makephone_notification.cpp | 120 +++++++++++++- .../fs/user/system/cat1ota/cat1Service.py | 149 ++++++++++++++---- .../slip/cat1Service/cat1_server.cpp | 134 +++++++++++++--- .../peripheral/utils/custom_utils_at_cmd.c | 2 +- code/sdk/drivers/peripheral/utils/pdu.c | 14 +- code/sdk/drivers/peripheral/utils/pdu.h | 8 +- 12 files changed, 518 insertions(+), 98 deletions(-) diff --git a/cat1modem/src/cat1Service.py b/cat1modem/src/cat1Service.py index 8678bb3a3..306d718d5 100644 --- a/cat1modem/src/cat1Service.py +++ b/cat1modem/src/cat1Service.py @@ -74,11 +74,16 @@ sms.setCallback(msg_cb)#sms注册回调 CAT1_SERVICE_HEAD = 'FE' #固定head PROJECT_NAME = "Cat1SlipUDPService" -PROJECT_VERSION = "PY_SRV_V15" +PROJECT_VERSION = "PY_SRV_V16" CONFIG_JSON="/usr/system_config.json" CURRENT_APP_TYPE="pysrv" + + + + + # 设置日志输出级别 log.basicConfig(level=log.INFO) cat1service_log = log.getLogger("cat1service") @@ -100,7 +105,7 @@ def get_default_versionvalue_by_py(app_type): elif (app_type == "pyota"): return "PY_OTA_V14" elif (app_type == "pysrv"): - return "PY_SRV_V15" + return "PY_SRV_V16" #如果没有configfile则创建它 if not ql_fs.path_exists(CONFIG_JSON): @@ -272,7 +277,14 @@ class Cat1Service: self.msg_nums_old = 0 self.china_mobile_init = 0 self.factory_status = 0 + self.send_data_q = Queue(100) + self.ack_sem=0 + _thread.start_new_thread(self.Socket_SEND_Thread,()) + # 发数据线程 + + + return None def __socket_init(self): @@ -311,19 +323,35 @@ class Cat1Service: # UDP_CMD_DIAL_NUMB if eventMesh.publish("get_volte_switch") == 1: #只有BLE开了VOLTE才允许打电话 ret = voiceCall.callStart(str(parm)) - if ret != 0: - ret = voiceCall.callStart(str(parm)) + # if ret != 0: + # ret = voiceCall.callStart(str(parm)) print("ret={} {} {}".format(ret,cmd,parm)) if ret != 0: - self.reply_cmd('0F',"callfail") + self.reply_cmd('0F',"callcmd_fail") + else: + self.reply_cmd('0F',"callcmd_success") + else: + self.reply_cmd('0F',"callcmd_fail") elif cmd == "02": print(cmd) # UDP_CMD_HUNGUP - voiceCall.callEnd() + ret = voiceCall.callEnd() + if ret != 0: + ret = voiceCall.callEnd() + if ret != 0: + self.reply_cmd('0F',"callend_fail") + else: + self.reply_cmd('0F',"callend_success") elif cmd == "03": print(cmd) # UDP_CMD_ANSWER - voiceCall.callAnswer() + ret = voiceCall.callAnswer() + if ret != 0: + ret = voiceCall.callAnswer() + if ret != 0: + self.reply_cmd('0F',"callanswer_fail") + else: + self.reply_cmd('0F',"callanswer_success") elif cmd == "04": print(cmd) result = check_fota() @@ -405,6 +433,9 @@ class Cat1Service: voiceCall.startDtmf(str(parm),100) #100ms 持续时间 100-1000 elif cmd == "1A": eventMesh.publish("set_volte_switch",int(parm)) + elif cmd == "AC":# + if self.ack_sem==1: + self.ack_sem=0 def telecom_recv_cmd(self,cmd,parm): if cmd == "10": @@ -415,6 +446,7 @@ class Cat1Service: pass elif cmd == "14":# pass + pass @@ -663,8 +695,8 @@ class Cat1Service: def notifyIncomingcall(self, incomming_numb): self.clear_remain() __head = '0C' - self.__message = str(incomming_numb) - self.__Socket_UDP(__head, self.__message) + __message = str(incomming_numb) + self.__Socket_UDP(__head, __message) # if self.__err == 1 or self.__value[2] != 'OK': # return -1 return 0 @@ -673,8 +705,8 @@ class Cat1Service: def notifyConnecteCall(self, phone_numb): self.clear_remain() __head = '0A' - self.__message = str(phone_numb) - self.__Socket_UDP(__head, self.__message) + __message = str(phone_numb) + self.__Socket_UDP(__head, __message) # if self.__err == 1 or self.__value[2] != 'OK': # return -1 return 0 @@ -683,8 +715,8 @@ class Cat1Service: def notifyDisconnectCall(self, phone_numb): self.clear_remain() __head = '0B' - self.__message = str(phone_numb) - self.__Socket_UDP(__head, self.__message) + __message = str(phone_numb) + self.__Socket_UDP(__head, __message) # if self.__err == 1 or self.__value[2] != 'OK': # return -1 return 0 @@ -714,20 +746,25 @@ class Cat1Service: # 查询网卡状态 def timesync(self,_timesync): self.clear_remain() - self.__message = str(_timesync) - self.__Socket_UDP('0D', self.__message) + message = str(_timesync) + self.__Socket_UDP('0D', message) return 0 def reply_timesync(self,_timesync): self.clear_remain() - self.__message = str(_timesync) - self.__Socket_UDP_noreply('0D', self.__message) + message = str(_timesync) + self.__Socket_UDP_noreply('0D', message) return 0 def reply_cmd(self,cmd,_timesync): - self.clear_remain() - self.__message = str(_timesync) - self.__Socket_UDP_noreply(cmd, self.__message) + try : + print('reply_cmd 1') + self.clear_remain() + message = str(_timesync) + print('reply_cmd 2') + self.__Socket_UDP_noreply(cmd, message) + except: + print('reply_cmd') return 0 def clear_remain(self): @@ -832,13 +869,13 @@ class Cat1Service: # 封装tlv数据包 def __pack_tlv_format(self, head, content): - self.head = head - self.content = content - if len(self.content) == 0 or len(self.content) > 9999 or len(self.head) != 2: + # self.head = head + # self.content = content + if len(content) == 0 or len(content) > 9999 or len(head) != 2: print('illegal pack tlv content') return -1 - len_str ='%04d' % len(self.content) - tlv_pack = CAT1_SERVICE_HEAD+self.head+len_str+self.content + len_str ='%04d' % len(content) + tlv_pack = CAT1_SERVICE_HEAD+head+len_str+content return tlv_pack # 解码tlv数据包 def __unpack_tlv_format(self, msg): @@ -856,21 +893,57 @@ class Cat1Service: return unpack # socket通信(UDP)模块 def __Socket_UDP(self, head, content): + # 0 则 __Socket_UDP_write + self.send_data_q.put([head,content]) + def Socket_SEND_Thread(self): + while True: + try: + print("send====") + data=self.send_data_q.get() + self.ack_sem=1 + # # if data[2]: + # self.__Socket_UDP_noreply_write( data[0], data[1]) + # else : + self.__Socket_UDP_write( data[0], data[1]) + + + print("Socket_SEND_Thread data:{} {}".format(data[0],data[1])) + count=20 + + while count & self.ack_sem : + utime.sleep_ms(1) + count=count-1 + # if data[2]: + # self.__Socket_UDP_noreply_write( data[0], data[1]) + # else : + self.__Socket_UDP_write( data[0], data[1]) + + print("Socket_SEND_Thread while data:{} {}".format(data[0],data[1])) + + if data: + print("data ok!!") + else: + print("data error!!") + except Exception : + print("sned Socket >>>") + + def __Socket_UDP_write(self, head, content): try: - self.head = head - self.content = content + ##self.head = head + # self.content = content gpioWakeBT.write(1) utime.sleep_ms(2) gpioWakeBT.write(0) utime.sleep_ms(20) # 消息处理 - msg = self.__pack_tlv_format(self.head, self.content) + msg = self.__pack_tlv_format(head, content) # 向服务端发送消息 server_addr = ('172.16.1.5',1000) print("__Socket_UDP send msg {}".format(msg)) self.__err = 0 self.__sock.sendto(msg,server_addr) + print("__Socket_UDP send 2") self.__wait_resp = 1 # data = self.__queue.get() self.__wait_resp = 0 @@ -879,16 +952,20 @@ class Cat1Service: except Exception as error: print(error) return 0 - + def __Socket_UDP_noreply(self, head, content): - self.head = head - self.content = content + # 1 则 __Socket_UDP_noreply_write + self.send_data_q.put([head,content]) + + def __Socket_UDP_noreply_write(self, head, content): + # self.head = head + # self.content = content gpioWakeBT.write(1) utime.sleep_ms(2) gpioWakeBT.write(0) utime.sleep_ms(20) # 消息处理 - msg = self.__pack_tlv_format(self.head, self.content) + msg = self.__pack_tlv_format(head, content) # 向服务端发送消息 server_addr = ('172.16.1.5',1000) @@ -950,7 +1027,7 @@ print("Cat1Service start") cat1service = Cat1Service() - +#send_data_q = Queue(100) #voice call callback function def voice_callback(args): @@ -979,6 +1056,8 @@ def voice_callback(args): print('voicecall alerting, PhoneNO: ', args[6]) elif args[0] == 16: print('voicecall holding, PhoneNO: ', args[6]) + else: + print('voice_callback , args[0]: ', args[0]) #电话消息反馈 voiceCall.setCallback(voice_callback) @@ -1014,6 +1093,10 @@ delaybootupmsg_timer.start(1000,0,bootupmsg_cb) # timerCheckRevPin.start(1000,1,checkpin_cb) + + + + # while True: # utime.sleep(5) diff --git a/code/sdk/application/wearable/fd230app/nativeui/callerlog/src/CallerLogModel.cpp b/code/sdk/application/wearable/fd230app/nativeui/callerlog/src/CallerLogModel.cpp index 113caff54..4010b8529 100644 --- a/code/sdk/application/wearable/fd230app/nativeui/callerlog/src/CallerLogModel.cpp +++ b/code/sdk/application/wearable/fd230app/nativeui/callerlog/src/CallerLogModel.cpp @@ -624,6 +624,7 @@ static void WatchFinishHandle(void) } else { + StatusReset(); WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "??????????????????????"); } g_phoneStatus = PHONE_SINGLE_STATUS; diff --git a/code/sdk/application/wearable/service/broadcast/include/broadcast_feature.h b/code/sdk/application/wearable/service/broadcast/include/broadcast_feature.h index 61fd1f09f..75ce71cf6 100644 --- a/code/sdk/application/wearable/service/broadcast/include/broadcast_feature.h +++ b/code/sdk/application/wearable/service/broadcast/include/broadcast_feature.h @@ -80,6 +80,7 @@ typedef enum { TOPIC_EVENT_CAT1_SIGNAL_UPDATE, TOPIC_EVENT_CAT1_POWER_ON, TOPIC_EVENT_CAT1_POWER_OFF, + TOPIC_EVENT_CAT1_CALL_FAIL, #endif #ifdef SUPPORT_DEVICE_PAIRING_NOTIFICATION diff --git a/code/sdk/application/wearable/service/broadcast/src/broadcast_implement.c b/code/sdk/application/wearable/service/broadcast/src/broadcast_implement.c index 59d39c2a9..77a8747de 100644 --- a/code/sdk/application/wearable/service/broadcast/src/broadcast_implement.c +++ b/code/sdk/application/wearable/service/broadcast/src/broadcast_implement.c @@ -84,6 +84,7 @@ static const TopicToCore topicToCoreArray[] = { {TOPIC_EVENT_CAT1_SIGNAL_UPDATE, A_CORE_MASK, 1}, {TOPIC_EVENT_CAT1_POWER_ON, A_CORE_MASK, 1}, {TOPIC_EVENT_CAT1_POWER_OFF, A_CORE_MASK, 1}, + {TOPIC_EVENT_CAT1_CALL_FAIL,A_CORE_MASK, 1}, #endif }; diff --git a/code/sdk/application/wearable/service/msg_center/include/notify/makephone_notification.h b/code/sdk/application/wearable/service/msg_center/include/notify/makephone_notification.h index a8d78f320..e1c399ef6 100755 --- a/code/sdk/application/wearable/service/msg_center/include/notify/makephone_notification.h +++ b/code/sdk/application/wearable/service/msg_center/include/notify/makephone_notification.h @@ -27,6 +27,7 @@ UIViewGroup* CreateWaitingHintsView(void); UIViewGroup* CreateCalldialView(void); UIViewGroup* SOS_cant_dial(void); UIViewGroup* CALL_INCOMING_HINT(void); +UIViewGroup* CALL_FAIL_HINT(void); void HonrsViewChange(void); VolumeSettingView *GetvolumeSetting(void); diff --git a/code/sdk/application/wearable/service/msg_center/src/msg_center_customer.cpp b/code/sdk/application/wearable/service/msg_center/src/msg_center_customer.cpp index 19d9af34a..594d00e7c 100644 --- a/code/sdk/application/wearable/service/msg_center/src/msg_center_customer.cpp +++ b/code/sdk/application/wearable/service/msg_center/src/msg_center_customer.cpp @@ -125,6 +125,7 @@ const PriorityMapper PRI_MAPPER[] = { {TOPIC_EVENT_CAT1_SIGNAL_UPDATE, PRIORITY_ONE}, {TOPIC_EVENT_CAT1_POWER_ON, PRIORITY_ONE}, {TOPIC_EVENT_CAT1_POWER_OFF, PRIORITY_ONE}, + {TOPIC_EVENT_CAT1_CALL_FAIL,PRIORITY_ONE}, #endif #ifdef SUPPORT_SPO2_NOTIFICATION {TOPIC_EVENT_SPO2_UPDATE, PRIORITY_TWO}, @@ -209,6 +210,8 @@ void MsgCenterSubscribe() MsgCenterSubscribeTopic(TOPIC_EVENT_CAT1_SIGNAL_UPDATE); MsgCenterSubscribeTopic(TOPIC_EVENT_CAT1_POWER_ON); MsgCenterSubscribeTopic(TOPIC_EVENT_CAT1_POWER_OFF); + MsgCenterSubscribeTopic(TOPIC_EVENT_CAT1_CALL_FAIL); + #endif #ifdef SUPPORT_DEVICE_PAIRING_NOTIFICATION //如果支持设备配对通知 MsgCenterSubscribeTopic(TOPIC_EVENT_DEVICE_BIND); @@ -341,6 +344,13 @@ static OHOS::UIViewGroup* showDebugOutputNotify(void) return OHOS::CreateDebugOutputMainView(); } + +static OHOS::UIViewGroup* showcallfailNotify(void) +{ + return OHOS::CALL_FAIL_HINT(); +} + + void MsgCenterNotifyAlarmProc(const Topic topic, Request* req) { unused(req); @@ -789,6 +799,27 @@ void MsgCenterNotifyHfpWatchHintProc(const Topic topic, Request* req) } + +void MsgCenterNotifyCat1FailEProc(const Topic topic, Request* req) +{ + unused(req); + + if (true != OHOS::ConfigModel::GetInstance()->GetDnotdisturb() && (!uapi_sleep_mode_flag_get())) + { + ui_api_vibrate_once_func(); + } + + //NotificationManager::GetInstance()->SetNotifyPriority(PRIORITY_ONE); + + if(NotificationManager::GetInstance()->HasNotifyShowing()) + NotificationManager::GetInstance()->StopNotify(); + + NotificationManager::GetInstance()->ShowNotify(showcallfailNotify, + static_cast(topic), true); +} + + + void MsgCenterNotifyHfpWatchProc(const Topic topic, Request* req) { unused(req); @@ -1158,8 +1189,10 @@ void MsgCenterNotifyCat1CallEndedProc(const Topic topic, Request* req) { cat1_call_hungup(); - cat1_phone_state_change_cb(OPERATE_WATCH_FINISH); + + CustomEventPublish(TOPIC_EVENT_CAT1_CALL_FAIL,NULL,0); + free(call_data); return; } @@ -1796,6 +1829,7 @@ static MsgCenterNotifyTable g_msgCenterNotifyTable[] = { {TOPIC_EVENT_CAT1_SIGNAL_UPDATE, MsgCenterNotifyCat1SignalUpdateProc}, {TOPIC_EVENT_CAT1_POWER_ON, MsgCenterNotifyCat1PowerOnProc}, {TOPIC_EVENT_CAT1_POWER_OFF, MsgCenterNotifyCat1PowerOffProc}, + {TOPIC_EVENT_CAT1_CALL_FAIL, MsgCenterNotifyCat1FailEProc}, #endif #ifdef SUPPORT_DEVICE_PAIRING_NOTIFICATION {TOPIC_EVENT_DEVICE_BIND, MsgCenterNotifyDeviceBindProc}, diff --git a/code/sdk/application/wearable/service/msg_center/src/notify/makephone_notification.cpp b/code/sdk/application/wearable/service/msg_center/src/notify/makephone_notification.cpp index 2b0e8f618..b8549ddd7 100755 --- a/code/sdk/application/wearable/service/msg_center/src/notify/makephone_notification.cpp +++ b/code/sdk/application/wearable/service/msg_center/src/notify/makephone_notification.cpp @@ -227,6 +227,10 @@ static UILabelButtonExt *alarm_labelbutton=nullptr; UIViewGroup* HintView = nullptr; static UILabelExt *Hint_UILabel=nullptr; + + +UIViewGroup* FAILHintView = nullptr; +static UILabelExt *FAIL_Hint_UILabel=nullptr; // typedef struct { // char name[NAME_SIZE]; // unsigned char nameLen; @@ -316,13 +320,120 @@ void FreehintView(void) } } +void hintdialfailtimerCallBack(int data) +{ + { + NotificationManager::GetInstance()->StopNotify(); + } + + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "hintdialtimerCallBack ??????!"); + +} + + +static osTimerId_t CALL_FAIl_HINT_timer= NULL; + +void FreeFAILhintView(void) +{ + if (FAILHintView != nullptr) { + + FAILHintView->RemoveAll(); + if(FAIL_Hint_UILabel) + { + delete FAIL_Hint_UILabel; + FAIL_Hint_UILabel=nullptr; + } + + if(CALL_FAIl_HINT_timer) + { + osTimerStop(CALL_FAIl_HINT_timer); + osStatus_t ret = osTimerDelete(CALL_FAIl_HINT_timer); + if (ret != osOK) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Disatransmitting_timer failed ret = %lx!", ret); + //return; + } + CALL_FAIl_HINT_timer = nullptr; + } + + + RootView::GetInstance()->Remove(FAILHintView); + delete FAILHintView; + FAILHintView = nullptr; + } +} + + + +UIViewGroup* CALL_FAIL_HINT(void) +{ + + if (FAILHintView == nullptr) { + FAILHintView = new UIViewGroup(); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateCallingView callingView null!"); + + } + FAILHintView->SetPosition(MATH_ZERO, MATH_ZERO); + FAILHintView->SetWidth(Screen::GetInstance().GetWidth()); + FAILHintView->SetHeight(Screen::GetInstance().GetHeight()); + FAILHintView->SetStyle(STYLE_BACKGROUND_OPA, 0); + + if (FAIL_Hint_UILabel == nullptr) { + FAIL_Hint_UILabel = new UILabelExt(); + } + FAIL_Hint_UILabel->SetPosition(62, 199); // widget's left position and top position + FAIL_Hint_UILabel->Resize(340, 30); // widget's width and height + FAIL_Hint_UILabel->SetViewId("label3");// Set style + FAIL_Hint_UILabel->SetStyle(STYLE_BACKGROUND_COLOR, 0xffAAAAAA); + FAIL_Hint_UILabel->SetStyle(STYLE_BACKGROUND_OPA, 0xff); + FAIL_Hint_UILabel->SetStyle(STYLE_BORDER_RADIUS, 27); + FAIL_Hint_UILabel->SetStyle(STYLE_TEXT_FONT, 40); + FAIL_Hint_UILabel->SetStyle(STYLE_LINE_SPACE, 0); + + // Set additional property + FAIL_Hint_UILabel->SetText("网络异常"); + FAIL_Hint_UILabel->SetLineBreakMode(UILabel::LINE_BREAK_WRAP); + FAIL_Hint_UILabel->SetAlign(TEXT_ALIGNMENT_CENTER, TEXT_ALIGNMENT_CENTER); + FAIL_Hint_UILabel->SetRollSpeed(0); + FAIL_Hint_UILabel->SetFont(DEFAULT_VECTOR_FONT_FILENAME, 40); + + FAILHintView->Add(FAIL_Hint_UILabel); + FAIL_Hint_UILabel->SetVisible(true); + FAIL_Hint_UILabel->LayoutCenterOfParent(); + + uint32_t tick; + osStatus_t retTimer; + // CALL_INCOMING_HINT_timer_FALG=3; + + if(CALL_FAIl_HINT_timer) + osTimerDelete(CALL_FAIl_HINT_timer); + CALL_FAIl_HINT_timer=NULL; + + CALL_FAIl_HINT_timer = osTimerNew((osTimerFunc_t)hintdialfailtimerCallBack, osTimerPeriodic, NULL, NULL); + tick =osMs2Tick(2000);// osMs2Tick(1000); + retTimer = osTimerStart(CALL_FAIl_HINT_timer, tick); + if (retTimer != osOK && CALL_FAIl_HINT_timer != NULL) { + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"StartCallTimer osTimerStart failed, ret = %lx!!", retTimer); + osTimerDelete(CALL_FAIl_HINT_timer); + CALL_FAIl_HINT_timer = NULL; + return NULL; + } + + NotificationManager::GetInstance()->RegisterNotifyCleanupFunction(FreeFAILhintView); + + return FAILHintView; + +} + + + UIViewGroup* CALL_INCOMING_HINT(void) { - HintView = new UIViewGroup(); + if (HintView == nullptr) { + HintView = new UIViewGroup(); WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "CreateCallingView callingView null!"); - return nullptr; + //return nullptr; } HintView->SetPosition(MATH_ZERO, MATH_ZERO); HintView->SetWidth(Screen::GetInstance().GetWidth()); @@ -352,6 +463,10 @@ UIViewGroup* CALL_INCOMING_HINT(void) Hint_UILabel->SetVisible(true); Hint_UILabel->LayoutCenterOfParent(); + if(CALL_INCOMING_HINT_timer) + osTimerDelete(CALL_INCOMING_HINT_timer); + CALL_INCOMING_HINT_timer=NULL; + uint32_t tick; osStatus_t retTimer; CALL_INCOMING_HINT_timer_FALG=3; @@ -548,6 +663,7 @@ static void WaitingOpreate() } + static void WatchActiveHandle() { DisableCallTimer(CallTimerType::NOTIFY_PHONE_DIAL_DISPLAY); diff --git a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/system/cat1ota/cat1Service.py b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/system/cat1ota/cat1Service.py index 8678bb3a3..306d718d5 100644 --- a/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/system/cat1ota/cat1Service.py +++ b/code/sdk/build/config/target_config/brandy/mk_fs_image/fd230/fs/user/system/cat1ota/cat1Service.py @@ -74,11 +74,16 @@ sms.setCallback(msg_cb)#sms注册回调 CAT1_SERVICE_HEAD = 'FE' #固定head PROJECT_NAME = "Cat1SlipUDPService" -PROJECT_VERSION = "PY_SRV_V15" +PROJECT_VERSION = "PY_SRV_V16" CONFIG_JSON="/usr/system_config.json" CURRENT_APP_TYPE="pysrv" + + + + + # 设置日志输出级别 log.basicConfig(level=log.INFO) cat1service_log = log.getLogger("cat1service") @@ -100,7 +105,7 @@ def get_default_versionvalue_by_py(app_type): elif (app_type == "pyota"): return "PY_OTA_V14" elif (app_type == "pysrv"): - return "PY_SRV_V15" + return "PY_SRV_V16" #如果没有configfile则创建它 if not ql_fs.path_exists(CONFIG_JSON): @@ -272,7 +277,14 @@ class Cat1Service: self.msg_nums_old = 0 self.china_mobile_init = 0 self.factory_status = 0 + self.send_data_q = Queue(100) + self.ack_sem=0 + _thread.start_new_thread(self.Socket_SEND_Thread,()) + # 发数据线程 + + + return None def __socket_init(self): @@ -311,19 +323,35 @@ class Cat1Service: # UDP_CMD_DIAL_NUMB if eventMesh.publish("get_volte_switch") == 1: #只有BLE开了VOLTE才允许打电话 ret = voiceCall.callStart(str(parm)) - if ret != 0: - ret = voiceCall.callStart(str(parm)) + # if ret != 0: + # ret = voiceCall.callStart(str(parm)) print("ret={} {} {}".format(ret,cmd,parm)) if ret != 0: - self.reply_cmd('0F',"callfail") + self.reply_cmd('0F',"callcmd_fail") + else: + self.reply_cmd('0F',"callcmd_success") + else: + self.reply_cmd('0F',"callcmd_fail") elif cmd == "02": print(cmd) # UDP_CMD_HUNGUP - voiceCall.callEnd() + ret = voiceCall.callEnd() + if ret != 0: + ret = voiceCall.callEnd() + if ret != 0: + self.reply_cmd('0F',"callend_fail") + else: + self.reply_cmd('0F',"callend_success") elif cmd == "03": print(cmd) # UDP_CMD_ANSWER - voiceCall.callAnswer() + ret = voiceCall.callAnswer() + if ret != 0: + ret = voiceCall.callAnswer() + if ret != 0: + self.reply_cmd('0F',"callanswer_fail") + else: + self.reply_cmd('0F',"callanswer_success") elif cmd == "04": print(cmd) result = check_fota() @@ -405,6 +433,9 @@ class Cat1Service: voiceCall.startDtmf(str(parm),100) #100ms 持续时间 100-1000 elif cmd == "1A": eventMesh.publish("set_volte_switch",int(parm)) + elif cmd == "AC":# + if self.ack_sem==1: + self.ack_sem=0 def telecom_recv_cmd(self,cmd,parm): if cmd == "10": @@ -415,6 +446,7 @@ class Cat1Service: pass elif cmd == "14":# pass + pass @@ -663,8 +695,8 @@ class Cat1Service: def notifyIncomingcall(self, incomming_numb): self.clear_remain() __head = '0C' - self.__message = str(incomming_numb) - self.__Socket_UDP(__head, self.__message) + __message = str(incomming_numb) + self.__Socket_UDP(__head, __message) # if self.__err == 1 or self.__value[2] != 'OK': # return -1 return 0 @@ -673,8 +705,8 @@ class Cat1Service: def notifyConnecteCall(self, phone_numb): self.clear_remain() __head = '0A' - self.__message = str(phone_numb) - self.__Socket_UDP(__head, self.__message) + __message = str(phone_numb) + self.__Socket_UDP(__head, __message) # if self.__err == 1 or self.__value[2] != 'OK': # return -1 return 0 @@ -683,8 +715,8 @@ class Cat1Service: def notifyDisconnectCall(self, phone_numb): self.clear_remain() __head = '0B' - self.__message = str(phone_numb) - self.__Socket_UDP(__head, self.__message) + __message = str(phone_numb) + self.__Socket_UDP(__head, __message) # if self.__err == 1 or self.__value[2] != 'OK': # return -1 return 0 @@ -714,20 +746,25 @@ class Cat1Service: # 查询网卡状态 def timesync(self,_timesync): self.clear_remain() - self.__message = str(_timesync) - self.__Socket_UDP('0D', self.__message) + message = str(_timesync) + self.__Socket_UDP('0D', message) return 0 def reply_timesync(self,_timesync): self.clear_remain() - self.__message = str(_timesync) - self.__Socket_UDP_noreply('0D', self.__message) + message = str(_timesync) + self.__Socket_UDP_noreply('0D', message) return 0 def reply_cmd(self,cmd,_timesync): - self.clear_remain() - self.__message = str(_timesync) - self.__Socket_UDP_noreply(cmd, self.__message) + try : + print('reply_cmd 1') + self.clear_remain() + message = str(_timesync) + print('reply_cmd 2') + self.__Socket_UDP_noreply(cmd, message) + except: + print('reply_cmd') return 0 def clear_remain(self): @@ -832,13 +869,13 @@ class Cat1Service: # 封装tlv数据包 def __pack_tlv_format(self, head, content): - self.head = head - self.content = content - if len(self.content) == 0 or len(self.content) > 9999 or len(self.head) != 2: + # self.head = head + # self.content = content + if len(content) == 0 or len(content) > 9999 or len(head) != 2: print('illegal pack tlv content') return -1 - len_str ='%04d' % len(self.content) - tlv_pack = CAT1_SERVICE_HEAD+self.head+len_str+self.content + len_str ='%04d' % len(content) + tlv_pack = CAT1_SERVICE_HEAD+head+len_str+content return tlv_pack # 解码tlv数据包 def __unpack_tlv_format(self, msg): @@ -856,21 +893,57 @@ class Cat1Service: return unpack # socket通信(UDP)模块 def __Socket_UDP(self, head, content): + # 0 则 __Socket_UDP_write + self.send_data_q.put([head,content]) + def Socket_SEND_Thread(self): + while True: + try: + print("send====") + data=self.send_data_q.get() + self.ack_sem=1 + # # if data[2]: + # self.__Socket_UDP_noreply_write( data[0], data[1]) + # else : + self.__Socket_UDP_write( data[0], data[1]) + + + print("Socket_SEND_Thread data:{} {}".format(data[0],data[1])) + count=20 + + while count & self.ack_sem : + utime.sleep_ms(1) + count=count-1 + # if data[2]: + # self.__Socket_UDP_noreply_write( data[0], data[1]) + # else : + self.__Socket_UDP_write( data[0], data[1]) + + print("Socket_SEND_Thread while data:{} {}".format(data[0],data[1])) + + if data: + print("data ok!!") + else: + print("data error!!") + except Exception : + print("sned Socket >>>") + + def __Socket_UDP_write(self, head, content): try: - self.head = head - self.content = content + ##self.head = head + # self.content = content gpioWakeBT.write(1) utime.sleep_ms(2) gpioWakeBT.write(0) utime.sleep_ms(20) # 消息处理 - msg = self.__pack_tlv_format(self.head, self.content) + msg = self.__pack_tlv_format(head, content) # 向服务端发送消息 server_addr = ('172.16.1.5',1000) print("__Socket_UDP send msg {}".format(msg)) self.__err = 0 self.__sock.sendto(msg,server_addr) + print("__Socket_UDP send 2") self.__wait_resp = 1 # data = self.__queue.get() self.__wait_resp = 0 @@ -879,16 +952,20 @@ class Cat1Service: except Exception as error: print(error) return 0 - + def __Socket_UDP_noreply(self, head, content): - self.head = head - self.content = content + # 1 则 __Socket_UDP_noreply_write + self.send_data_q.put([head,content]) + + def __Socket_UDP_noreply_write(self, head, content): + # self.head = head + # self.content = content gpioWakeBT.write(1) utime.sleep_ms(2) gpioWakeBT.write(0) utime.sleep_ms(20) # 消息处理 - msg = self.__pack_tlv_format(self.head, self.content) + msg = self.__pack_tlv_format(head, content) # 向服务端发送消息 server_addr = ('172.16.1.5',1000) @@ -950,7 +1027,7 @@ print("Cat1Service start") cat1service = Cat1Service() - +#send_data_q = Queue(100) #voice call callback function def voice_callback(args): @@ -979,6 +1056,8 @@ def voice_callback(args): print('voicecall alerting, PhoneNO: ', args[6]) elif args[0] == 16: print('voicecall holding, PhoneNO: ', args[6]) + else: + print('voice_callback , args[0]: ', args[0]) #电话消息反馈 voiceCall.setCallback(voice_callback) @@ -1014,6 +1093,10 @@ delaybootupmsg_timer.start(1000,0,bootupmsg_cb) # timerCheckRevPin.start(1000,1,checkpin_cb) + + + + # while True: # utime.sleep(5) diff --git a/code/sdk/drivers/peripheral/slip/cat1Service/cat1_server.cpp b/code/sdk/drivers/peripheral/slip/cat1Service/cat1_server.cpp index 4e89fd956..763f10e8c 100644 --- a/code/sdk/drivers/peripheral/slip/cat1Service/cat1_server.cpp +++ b/code/sdk/drivers/peripheral/slip/cat1Service/cat1_server.cpp @@ -93,9 +93,13 @@ enum UDP_COMMAND_HEAD { UDP_MSG_SEND_DTMF_NUMBER = 0x19,//DTMF 功能 UDP_MSG_SEND_VOLTE_SWITCH = 0x1A,//VOLTE开关 + + UDP_MSG_WATCH_REPLY_ACK = 0xAC,// + // UDP_MSG_WATCH_REPLY_HANGUP = 0x21,// }; /** 0: old format 1字节cmd, 1: new format 2字节cmd */ static uint8_t g_msg_format_type = 0; +// void watch_replay_cat1_ANSWER(void); static char ble_buffer[20] = {0}; void set_skip_cat1_service_udp_transfer(uint8_t skip) @@ -243,7 +247,7 @@ static uint8_t g_time_synced = 0; #define MAX_TIME_SYNC_RETRY_TIME 5 static uint8_t g_time_sync_retry_time = 0; -#define PY_SRV_VER_CURRENT 15 +#define PY_SRV_VER_CURRENT 16 #define PY_SRV_VER_SUPORT_PY_OTA_MINI_VER 13 #define PY_SRV_VER_4 "PY_SRV_V4" @@ -252,6 +256,11 @@ static uint8_t g_time_sync_retry_time = 0; static uint8_t g_py_ver = 4; + +static osTimerId_t g_timer_time_answer = NULL; + +static osTimerId_t g_timer_time_Dial = NULL; + /**如果 * g_python_updated == 0 && * g_py_ver >= PY_SRV_VER_SUPORT_PY_OTA_MINI_VER && @@ -397,7 +406,10 @@ void udp_send_msg_toCat1(uint8_t cmd,char *content) static int decodeSMS(char* msg) { // FE150117ref:0@total_num:1@seq:1@data:0100240D91688139687502F200084250926172722316662F6211670B53CB621153EF80FD9700898198847EA6 - + uint32_t ref=0; + uint16_t num=0; + uint16_t seq=0; + int msglen = strlen(msg)+1; if (msglen < 25) { @@ -423,19 +435,23 @@ static int decodeSMS(char* msg) { char* ptmp=s+4; WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"ref %s\r\n",ptmp); + ref=atoi(ptmp); }else if ((strlen(s)> 10) && (strncmp(s,"total_num:",10) == 0) ) { + char* ptmp=s+10; WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"total_num %s\r\n",ptmp); + num=atoi(ptmp); }else if ((strlen(s)> 4) && (strncmp(s,"seq:",4) == 0) ) { char* ptmp=s+4; WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"seq %s\r\n",ptmp); + seq=atoi(ptmp); }else if ((strlen(s)> 5) && (strncmp(s,"data:",5) == 0) ) { char* ptmp=s+5; WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"data %s\r\n",ptmp); - pdu_decode_example(ptmp); + pdu_decode_example(ptmp,ref,num,seq); } } free(msgbuf); @@ -546,7 +562,7 @@ static int decodeNetStat(char* msg) int update = 0; if (strlen(msg) < 50) { - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"msg len is too short !\r\n"); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"msg len is too short !\r\n"); return -1; } char buf[200] = {0}; @@ -579,7 +595,7 @@ static int decodeNetStat(char* msg) { ppbuf = s+5; char* imei = uapi_dev_runtime_get_cat1_imei(); - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"=== imei %s to %s\r\n",imei,ppbuf); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"=== imei %s to %s\r\n",imei,ppbuf); if ( strcmp(imei,ppbuf)!=0 ) { update++; @@ -590,7 +606,7 @@ static int decodeNetStat(char* msg) { ppbuf=s+4; int simstat = atoi(ppbuf); - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"=== sim = %d\r\n",simstat); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"=== sim = %d\r\n",simstat); if ( uapi_dev_runtime_get_cat1_simstat() != simstat) { update++; @@ -607,7 +623,7 @@ static int decodeNetStat(char* msg) char* opera=uapi_dev_runtime_get_cat1_operator(); - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"=== opera %s to %s\r\n",opera,ppbuf); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"=== opera %s to %s\r\n",opera,ppbuf); if ( strcmp(opera,ppbuf)!=0 ) { update++; @@ -619,7 +635,7 @@ static int decodeNetStat(char* msg) { ppbuf=s+7; int signals = atoi(ppbuf); - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"=== signal = %d\r\n",signals); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"=== signal = %d\r\n",signals); if ( uapi_dev_runtime_get_cat1_signal() != signals) { update++; @@ -678,7 +694,7 @@ static int decodeNetStat(char* msg) case 2: { int networkon = atoi(s) ; - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"=== networkon = %d , %s \n",networkon,networkon==1?"connected":networkon==5?"roaming":"unkown"); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"=== networkon = %d , %s \n",networkon,networkon==1?"connected":networkon==5?"roaming":"unkown"); switch(networkon) { case 1: @@ -696,7 +712,7 @@ static int decodeNetStat(char* msg) case 3: { int network_type = atoi(s); - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"=== network_type = %d , %s\n",network_type, + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"=== network_type = %d , %s\n",network_type, network_type==0?"GSM":network_type==1?"GSM COMPACT":network_type==2?"UTRAN":network_type==3?"GSM wEGPRS":network_type==4?"UTRAN wHSDPA":network_type==5?"UTRAN wHSUPA":network_type==6?"UTRAN wHSDPA HSUPA":network_type==7?"E_UTRAN":network_type==8?"UTRAN HSPAP":network_type==9?"E_UTRAN_CA":"NONE" ); switch (network_type) @@ -743,7 +759,7 @@ static int decodeNetStat(char* msg) WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"start cat1 python ota\n"); Cat1_OTA(CAT1_TCP_START_OTA); }else{ - WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"current PyVer %d, mini pyVer %d , local pyVer %d, skip cat1 python ota!\n",g_py_ver,PY_SRV_VER_SUPORT_PY_OTA_MINI_VER,PY_SRV_VER_CURRENT); + WEARABLE_LOGD(WEARABLE_LOG_MODULE_APP,"current PyVer %d, mini pyVer %d , local pyVer %d, skip cat1 python ota!\n",g_py_ver,PY_SRV_VER_SUPORT_PY_OTA_MINI_VER,PY_SRV_VER_CURRENT); } } g_python_updated = 1; @@ -783,9 +799,6 @@ void cat1_call_hungup_timer(void) - - - void cat1_call_hungup(void) { udp_send_msg_toCat1(UDP_CMD_HUNGUP,"0"); @@ -793,9 +806,17 @@ void cat1_call_hungup(void) void cat1_call_answer(void) { - udp_send_msg_toCat1(UDP_CMD_ANSWER,"0"); + #if PY_SRV_VER_CURRENT >=16 + if(osTimerIsRunning(g_timer_time_answer)==0 ) + { + osStatus_t ret = osTimerStart(g_timer_time_answer,3000); + WEARABLE_LOGI(WEARABLE_LOG_MODULE_MAIN_SERVICE,"cat1 g_timer_time_answer timer ret %d\n",ret); + } + #endif + udp_send_msg_toCat1(UDP_CMD_ANSWER,"0"); } + void cat1_ota_update(char *url) { udp_send_msg_toCat1(UDP_CMD_CAT1_OTA_UPDATE,url); @@ -806,8 +827,17 @@ void cat1_call_dial(char* phonenum) bool volte = OHOS::ConfigModel::GetInstance()->GetVoLTE_Call(); if (volte == true){ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"cat1_call_dial %s\n",phonenum); + #if PY_SRV_VER_CURRENT >=16 + if(osTimerIsRunning(g_timer_time_Dial)==0 ) + { + osStatus_t ret = osTimerStart(g_timer_time_Dial,3000); + WEARABLE_LOGI(WEARABLE_LOG_MODULE_MAIN_SERVICE,"cat1 g_timer_time_Dial timer ret %d\n",ret); + } + #endif + udp_send_msg_toCat1(UDP_CMD_DIAL_NUMB,phonenum); } + } @@ -824,8 +854,20 @@ void cat1_gettime(void) { WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"UDP_CMD_GET_TIME\n"); udp_send_msg_toCat1(UDP_CMD_GET_TIME,"0"); - } + +// void watch_replay_cat1_ANSWER(void) +// { +// udp_send_msg_toCat1(UDP_MSG_WATCH_REPLY_ANSWER,"0"); +// } + + +// void watch_replay_cat1_HANGUP(void) +// { +// udp_send_msg_toCat1(UDP_MSG_WATCH_REPLY_HANGUP,"0"); +// } + + void cat1_getver(void) { udp_send_msg_toCat1(UDP_CMD_GET_CAT1VER,"0"); @@ -869,10 +911,6 @@ int cat1_handle_call_incomming(char * msg) WEARABLE_LOGI(WEARABLE_LOG_MODULE_MAIN_SERVICE,"cat1 incomming call %s\n",phonenum); incomingcall_event_sendmsg_toUI(phonenum); - //声音 - //uapi_cat1_start_volte_voice(); - //由于incomingcall_event_sendmsg_toUI中的参数是char* 在其他地方会使用。因此要保留内存存在,只能在更新时刷新。 - // free(phonenum); return 1; @@ -1055,14 +1093,30 @@ void restart_time_sync(void) } } +//电话接听超时 +static void time_answer_func(void) +{ + osTimerStop(g_timer_time_answer); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_MAIN_SERVICE,"time_answer_func\n"); + cat1_handle_call_disconnected("callfail"); +} + +//电话接听超时 +static void time_dial_func(void) +{ + osTimerStop(g_timer_time_Dial); + WEARABLE_LOGE(WEARABLE_LOG_MODULE_MAIN_SERVICE,"time_dial_func\n"); + cat1_handle_call_disconnected("callfail"); +} + int cat1_handle_call_connected(char* phonenum) { - - WEARABLE_LOGI(WEARABLE_LOG_MODULE_MAIN_SERVICE,"cat1 call connected %s\n",phonenum); + // watch_replay_cat1_ANSWER(); + + WEARABLE_LOGE(WEARABLE_LOG_MODULE_MAIN_SERVICE,"cat1 call connected %s\n",phonenum); //声音处理 incomedcall_event_sendmsg_toUI(phonenum); //uapi_cat1_start_volte_voice(); - return 1; } //来电挂断处理 @@ -1070,6 +1124,8 @@ int cat1_handle_call_disconnected(char* phonenum) { WEARABLE_LOGI(WEARABLE_LOG_MODULE_MAIN_SERVICE,"cat1 call disconnected %s\n",phonenum); //TODO: 关闭声音 + // watch_replay_cat1_HANGUP(); + callend_event_sendmsg_toUI(phonenum); return 1; } @@ -1271,7 +1327,10 @@ static int udp_packet_parse(char *rx_buffer, int len) msg_buffer_len = msg->length; cmd = get_int8_from_ascii_char(rx_buffer[1]); } - // printf("cmd %x,bufferlen %d , buffer %s \n",cmd,msg_buffer_len,msg_buffer); + printf("cmd %x,bufferlen %d , buffer %s \n",cmd,msg_buffer_len,msg_buffer); + + udp_send_msg_toCat1(UDP_MSG_WATCH_REPLY_ACK,"0"); + switch (cmd) { case UDP_MSG_COMMING_CALL: if (get_volte_switch() == false) //如果VOLTE开关没有开启则不接CAT1的来电功能 @@ -1340,9 +1399,23 @@ static int udp_packet_parse(char *rx_buffer, int len) } } - if(strstr(msg_buffer,"callfail")!=NULL) + if(strstr(msg_buffer,"callanswer_success")!=NULL) + { + osTimerStop(g_timer_time_answer); + incomedcall_event_sendmsg_toUI("callanswer_success"); + + } + if(strstr(msg_buffer,"callcmd_fail")!=NULL) { - cat1_handle_call_disconnected("callfail"); + // osTimerStop(g_timer_time_Dial); + // cat1_handle_call_disconnected("callfail"); + } + + if(strstr(msg_buffer,"callcmd_success")!=NULL) + { + //cat1_handle_call_disconnected("callfail"); + osTimerStop(g_timer_time_Dial); + } break; case UDP_MSG_GET_TELECON_DMP_TIMESEC://暂时不用 @@ -1506,6 +1579,15 @@ errcode_t cat1_server_init(void) restart_time_sync(); + g_timer_time_Dial = osTimerNew((osTimerFunc_t)time_dial_func, osTimerPeriodic, NULL, NULL); + if (g_timer_time_Dial == NULL) + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"g_timer_time_sync create failed\n"); + + g_timer_time_answer = osTimerNew((osTimerFunc_t)time_answer_func, osTimerPeriodic, NULL, NULL); + if (g_timer_time_answer == NULL) + WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP,"g_timer_time_sync create failed\n"); + + #ifdef USE_CAT1_SLEEP_TIMER g_timer_cat1_sleep = osTimerNew((osTimerFunc_t)timeout_handler_sleep_cat1, osTimerPeriodic, NULL, NULL); if (g_timer_cat1_sleep == NULL) diff --git a/code/sdk/drivers/peripheral/utils/custom_utils_at_cmd.c b/code/sdk/drivers/peripheral/utils/custom_utils_at_cmd.c index 728e28a27..c52ec6f6e 100644 --- a/code/sdk/drivers/peripheral/utils/custom_utils_at_cmd.c +++ b/code/sdk/drivers/peripheral/utils/custom_utils_at_cmd.c @@ -575,7 +575,7 @@ static uint32_t custom_utils_pdudec(uint8_t *para, uint32_t paraLen, char *strCo const char *inpdustr = (const char*)argv[0]; - pdu_decode_example(inpdustr); + pdu_decode_example(inpdustr,0,0,0); return ERRCODE_SUCC; } diff --git a/code/sdk/drivers/peripheral/utils/pdu.c b/code/sdk/drivers/peripheral/utils/pdu.c index 6315b759d..cff60cbb9 100644 --- a/code/sdk/drivers/peripheral/utils/pdu.c +++ b/code/sdk/drivers/peripheral/utils/pdu.c @@ -295,9 +295,21 @@ strHex2bytearray 0891683108705505F0240D91685125419665F1000842508281025223108BA15 output_sms_text_length 16, index 29 pdustr len 45,phonenumb:8615521469561 ,text:计划的好好的基金 ,txtlen:24, receive time 0124-04-28 18:20:25 offset 28800 , timestampe 1716891625 */ + + static uint32_t ancs_msg_index =0; -int pdu_decode_example(const char *inpdustr ) +// typedef struct +// { +// uint32_t ref; +// uint16_t num; +// char *phone_number; +// char *text; +// }pdu_data; + +// static pdu_data[20]={0}; + +int pdu_decode_example(const char *inpdustr, uint32_t ref,uint16_t num, uint16_t seq) { int ret=0; diff --git a/code/sdk/drivers/peripheral/utils/pdu.h b/code/sdk/drivers/peripheral/utils/pdu.h index 0481bd816..1ff20a8f1 100644 --- a/code/sdk/drivers/peripheral/utils/pdu.h +++ b/code/sdk/drivers/peripheral/utils/pdu.h @@ -5,6 +5,11 @@ #define SMS_PDU_H_ #include +#include +#include +// #include "errcode.h" + +// #include "bts_def.h" enum { SMS_MAX_PDU_LENGTH = 256 }; @@ -47,7 +52,8 @@ int pdu_decode_hexstr(unsigned char* inpdustr, time_t *output_sms_timestamp, char* output_sender_phone_number, int sender_phone_number_size, char* output_sms_text, int sms_text_size); -int pdu_decode_example(const char *inpdustr ); + +int pdu_decode_example(const char *inpdustr , uint32_t ref,uint16_t num, uint16_t seq); #endif // SMS_SMS_H_ -- 2.17.1