#include "graphic_service.h"
#include "bleService.h"
#include "ui_service.h"
+#include "dial_sos_c.h"
+
extern "C" uint8_t uapi_dev_runtime_get_lock_status(void);
namespace OHOS
{
GraphicService::GetInstance()->PostGraphicEvent(std::bind(PowerKeyLongPressCallBack));
}
+ static void SOSKeyLongPress(void)
+ {
+ start_SOS_phone_dail();
+ }
+
+
/*注册电源键的长按事件*/
bool RebootAndShutdownModel::RegisterPowerKeyLongPressEvent(void)
{
WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Register PowerKey LongPress Event error, ret = %d", ret);
return false;
}
+ ret = uapi_button_register_event_cb(SOSKeyLongPress, BUTTON1_LONGPRESS_8S);
+ if (ret != ERRCODE_SUCC)
+ {
+ WEARABLE_LOGE(WEARABLE_LOG_MODULE_APP, "Register PowerKey LongPress Event error, ret = %d", ret);
+ return false;
+ }
return true;
}
--- /dev/null
+/*
+ * Copyright (c) CompanyNameMagicTag 2023-2023. All rights reserved.
+ * Description: makephone notification api
+ * Author: CompanyName
+ * Create: 2023-08-11
+ */
+
+#ifndef MAKEPHONE_SOS_NOTIFICATION_H
+#define MAKEPHONE_SOS_NOTIFICATION_H
+
+#ifdef __cplusplus
+#if __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+#endif /* __cplusplus */
+
+
+void start_SOS_phone_dail(void);
+
+void sos_falg_add(void);
+
+void sos_falg_clean(void);
+
+#ifdef __cplusplus
+#if __cplusplus
+}
+#endif /* __cplusplus */
+#endif /* __cplusplus */
+
+#endif /* MAKEPHONE_NOTIFICATION_H */
#include "components/ui_label_button.h"
#include "bletest.h"
#include "NativeAbility.h"
+#include "dial_sos_c.h"
+#include <string>
+#include "string.h"
+#include "string/osal_string.h"
// #define NOTIFY_THREE_SECONDS 3000
// #define NOTIFY_ONE_SECOND 1000
// #define NOTIFY_THIRTY_SECONDS 30000
// #define NOTIFY_ONE_MINUTE 60000
// #define NOTOFY_NO_OPERATE_TIME 35000
+static uint8_t sos_dail_falg=0;
+static char*sos_dail_buf[]={"10085","10086","10084"};
+
+#define SOS_TEST_FLAG 0
+
+#define SOS_HFP_FALG 0
+
+#define DIAL_TIME 30
+
+//结束通话运行
+void sos_falg_add(void)
+{
+ if(sos_dail_falg)
+ {
+
+ #if SOS_TEST_FLAG
+ if(1)
+ #else
+ if(uapi_cat1_get_power_stat()==0 || uapi_dev_runtime_get_cat1_simstat()==0)
+ #endif
+ {
+ calldial_event_sendmsg_toUI(sos_dail_buf[(sos_dail_falg)%3]);
+ }
+ #if SOS_HFP_FALG
+ else if(uapi_hfp_connect_state()==0)
+ {
+ DialCall((unsigned char *)sos_dail_buf[sos_dail_falg],osal_strlen((const char*)sos_dail_buf[sos_dail_falg]));
+ }
+ #endif
+ else
+ {
+ //show 没连接也没卡UI
+ }
+ sos_dail_falg++;
+ if(sos_dail_falg>=9)
+ {
+ sos_dail_falg=0;
+ }
+ }
+}
+
+void sos_falg_clean(void)
+{
+ sos_dail_falg=0;
+}
+
+void start_SOS_phone_dail(void)
+{
+ #if SOS_TEST_FLAG
+ if(1)
+ #else
+ if(uapi_cat1_get_power_stat()==0 || uapi_dev_runtime_get_cat1_simstat()==0)
+ #endif
+ {
+ calldial_event_sendmsg_toUI(sos_dail_buf[(0)%3]);
+ sos_dail_falg=1;
+ }
+ #if SOS_HFP_FALG
+ else if(uapi_hfp_connect_state()==0)
+ {
+ DialCall((unsigned char *)sos_dail_buf,osal_strlen((const char*)sos_dail_buf));
+ sos_dail_falg=1;
+ }
+ #endif
+ else
+ {
+ //show 没连接也没卡UI
+ }
+
+
+}
+
+
namespace OHOS {
constexpr int32_t NOTIFY_THREE_SECONDS = 3000;
CallerLogModel::GetInstance()->SetDialingStatus("正在拨号");
CallerLogModel::GetInstance()->SetMakePhoneStatus(true);
+ StartCallTimer(CallTimerType::NOTIFY_PHONE_DIAL_DISPLAY, (int32_t)NOTIFY_ONE_SECOND);
+
+
}
static void AlertingHandle(void)
static void IncomingHandle(void)
{
CallerLogModel::GetInstance()->SetMakePhoneStatus(false);
+ DisableCallTimer(CallTimerType::NOTIFY_PHONE_DIAL_DISPLAY);
+
}
static void WaitingOpreate()
static void WatchActiveHandle()
{
+ DisableCallTimer(CallTimerType::NOTIFY_PHONE_DIAL_DISPLAY);
CallerLogModel::GetInstance()->SetCallStatus(true);
CallerLogModel::GetInstance()->SetWaitingStatus(false);
-
-}
-static void PhoneActiveHandle(void)
-{
-
}
+
+
static void WatchFinishHandle(void)
{
if (NativeAbility::GetInstance().GetCurSliceId() == VIEW_INCOMING_CALL ||
{
StatusReset();
}
+ sos_falg_add();
+ DisableCallTimer(CallTimerType::NOTIFY_PHONE_DIAL_DISPLAY);
}
void cat1_phone_state_change_cb(uint8_t state)
case OPERATE_DIALING:
// 显示正在呼出界面
DialingHandle();
+
call_stat=0;
calllog_info_init();
break;
// 手表接听,显示界面
if(call_stat==2)
call_stat=1;
+ sos_falg_clean();
WatchActiveHandle();
break;
case OPERATE_PHONE_HOLD:
uint16_t dail_falg=0;
void CalldialTimerCallBackProc(int data)
{
- if(dail_falg<=70)
+ if(dail_falg<=DIAL_TIME)
dail_falg++;
- if(dail_falg>=70)
+ if(dail_falg>=DIAL_TIME)
{
- NotificationManager::GetInstance()->StopNotify();
- addcalllog();
+ cat1_call_hungup();
+ cat1_handle_call_disconnected();
}
}
}
break;
case CallTimerType::NOTIFY_PHONE_DIAL_DISPLAY:
+ dail_falg=0;
g_calldialTime = osTimerNew((osTimerFunc_t)CalldialTimerCallBackProc, osTimerPeriodic, NULL, NULL);
tick = osMs2Tick(interval);
retTimer = osTimerStart(g_calldialTime, tick);