[feature][Task-106][T800-WOM-SWR-046][network] use led dispaly net signal
Change-Id: I1cbcff782214793880fb78fa88583da11333ceed
diff --git a/src/lynq/framework/lynq-ril-service/src/cc.cpp b/src/lynq/framework/lynq-ril-service/src/cc.cpp
index d067540..b1094c4 100755
--- a/src/lynq/framework/lynq-ril-service/src/cc.cpp
+++ b/src/lynq/framework/lynq-ril-service/src/cc.cpp
@@ -47,6 +47,7 @@
/*Warren add for t800 ril servie 2021/12/23 start*/
#include "lynq_interface.h"
#include <binder/Parcel.h>
+#include "led.h"
using android::Parcel;
/*Warren add for t800 ril servie 2021/12/23 end*/
@@ -1266,7 +1267,7 @@
static int callIndex = 0;
RLOGD("callnum = %d, Call State Change then judge speech on/off!", callnum);
callIndex = callnum;
- if( callIndex == 1 && speechStatus == SPEECH_OFF) { //speech on
+ if( callIndex > 0 && speechStatus == SPEECH_OFF) { //speech on
//RLOGD("DemoAPP Call shell command (pactl set-card-profile 0 phonecall)");
//system("pactl set-card-profile 0 phonecall");
//RLOGD("DemoAPP Call shell command end");
@@ -1280,6 +1281,7 @@
inCallstatus = CALL_ON;
RLOGD("[speech]: set on");
sendCallMsg(true); //for Power Manager test
+ mbtk_netled_state_update(GPIO_NETLED_CS_CALLING);
} else if (callIndex == 0
&& (speechStatus == NORMAL_SPEECH_ON
|| speechStatus == BT_SPEECH_ON)) { //speech off
@@ -1298,6 +1300,7 @@
speechStatus = SPEECH_OFF;
inCallstatus = CALL_OFF;
resetMute();
+ mbtk_netled_state_update(GPIO_NETLED_CS_CALLEND);
RLOGD("[speech]: set off");
} else {
RLOGD("callIndex is %d, speechStatus is %d.",callIndex, speechStatus);
diff --git a/src/lynq/framework/lynq-ril-service/src/common.cpp b/src/lynq/framework/lynq-ril-service/src/common.cpp
index bf45112..f2901a6 100755
--- a/src/lynq/framework/lynq-ril-service/src/common.cpp
+++ b/src/lynq/framework/lynq-ril-service/src/common.cpp
@@ -39,6 +39,7 @@
#include "cc.h"
#include "include/lynq_systime.h"
#include <include/lynq_uci.h>
+#include "led.h"
static pthread_mutex_t s_DataMutex = PTHREAD_MUTEX_INITIALIZER;
static pthread_cond_t s_DataCond = PTHREAD_COND_INITIALIZER;
@@ -531,6 +532,7 @@
} else {
RLOGD("[slot%d]updateCardStatusV6: sim card message is null", slot);
}
+ mbtk_netled_state_update(GPIO_NETLED_REFLASH_NORMAL);
}
char* getAid(int slot)
@@ -557,6 +559,7 @@
reg_voice_service_state[slot] = atoi(code);
regCodeToServiceState(request, atoi(code), slot);
}
+ mbtk_netled_state_update(GPIO_NETLED_REFLASH_NORMAL);
}
void update_reg_voice_radio_tech(int request, int code, int slot, int32_t token) {
@@ -970,6 +973,28 @@
return -1;
}
}
+
+bool ril_get_if_insert_simcard()
+{
+ int slot_id=get_default_sim_voice();
+
+ if(slot_id==0 || slot_id ==1)
+ {
+ return cur_CardS_Status[slot_id]->card_state == RIL_CARDSTATE_PRESENT;
+ }
+ return false;
+}
+
+bool ril_get_if_3gpp_reg_success()
+{
+ int slot_id=get_default_sim_voice();
+
+ if(slot_id==0 || slot_id ==1)
+ {
+ return reg_voice_service_state[slot_id] ==1;
+ }
+ return false;
+}
/*hq add for key info output 2022/03/01 begin*/
// void lynq_output_LINFO_all()
// {
diff --git a/src/lynq/framework/lynq-ril-service/src/common.h b/src/lynq/framework/lynq-ril-service/src/common.h
index aa9d89c..9d1446d 100755
--- a/src/lynq/framework/lynq-ril-service/src/common.h
+++ b/src/lynq/framework/lynq-ril-service/src/common.h
@@ -200,6 +200,12 @@
const char *radioStateToString(RIL_RadioState);
const char * rilSocketIdToString(RIL_SOCKET_ID socket_id);
+/*for led add by hq 20221202*/
+bool ril_get_if_insert_simcard();
+bool ril_get_if_3gpp_reg_success();
+
+
+
#if EM_MODE_SUPPORT
typedef void (* netwokInfoNotify)(int type, char *data);
typedef void (*atCmdResponse)(char *response,int responselen);
diff --git a/src/lynq/framework/lynq-ril-service/src/data/data_gdbus.cpp b/src/lynq/framework/lynq-ril-service/src/data/data_gdbus.cpp
index 03b43dd..196cac6 100755
--- a/src/lynq/framework/lynq-ril-service/src/data/data_gdbus.cpp
+++ b/src/lynq/framework/lynq-ril-service/src/data/data_gdbus.cpp
@@ -48,6 +48,7 @@
#include "lynq_common.h"
#include "lynq_interface.h"
#include <binder/Parcel.h>
+#include "led.h"
using android::Parcel;
/*Warren add for t800 ril service 2021/12/25 end*/
@@ -140,6 +141,10 @@
writeStringToParcel(p,urc_response->apnType);
android::LYNQ_RIL_urcBroadcast(p);
RLOGD("removed apn:%s,apntype:%s",apn_table[i].apn,apn_table[i].apntype);
+ if(apn_count==0)
+ {
+ mbtk_netled_state_update(GPIO_NETLED_PPP_CLOSED);
+ }
break;
}
}
@@ -180,6 +185,7 @@
writeStringToParcel(p,urc_response->apnType);
writeStringToParcel(p,urc_response->ifname);
android::LYNQ_RIL_urcBroadcast(p);
+ mbtk_netled_state_update(GPIO_NETLED_PPP_CONNECT);
}
else
{
diff --git a/src/lynq/framework/lynq-ril-service/src/led/include/led.h b/src/lynq/framework/lynq-ril-service/src/led/include/led.h
new file mode 100755
index 0000000..bd5b6b3
--- /dev/null
+++ b/src/lynq/framework/lynq-ril-service/src/led/include/led.h
@@ -0,0 +1,42 @@
+/**
+ * @file led.h
+ * @author hq
+ * @brief
+ * @version 1.0
+ * @date 2022-11-28
+ *
+ * @copyright Copyright (c) 2022
+ *
+ */
+#ifndef LED_H
+#define LED_H 1
+
+#define wait_led_update_effective_timer_ms 20
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+typedef enum
+{
+ GPIO_NETLED_REFLASH_NORMAL,
+ GPIO_NETLED_CS_CALLING,
+ GPIO_NETLED_CS_CALLEND,
+ GPIO_NETLED_PPP_CONNECT,
+ GPIO_NETLED_PPP_CLOSED,
+ GPIO_NETLED_AP_GOINGSLEEP,
+ GPIO_NETLED_AP_WAKEUP,
+ GPIO_NETLED_WWAN_CONNECT,
+ GPIO_NETLED_WWAN_CLOSED,
+} mbtk_netled_reflash_type;
+
+void mbtk_netled_state_update(mbtk_netled_reflash_type flag);
+
+void mbtk_netled_init();
+
+void mbtk_netled_deinit();
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/src/lynq/framework/lynq-ril-service/src/led/led.cpp b/src/lynq/framework/lynq-ril-service/src/led/led.cpp
new file mode 100755
index 0000000..27d27ca
--- /dev/null
+++ b/src/lynq/framework/lynq-ril-service/src/led/led.cpp
@@ -0,0 +1,565 @@
+#include <stdio.h>
+#include <stdlib.h>
+#include <string.h>
+#include <binder/Parcel.h>
+#include <sys/socket.h>
+#include <errno.h>
+#include <unistd.h>
+#include <cutils/jstring.h>
+#include <sys/types.h>
+#include <time.h>
+#include <signal.h>
+#include "led.h"
+#include "led_inner.h"
+#include <liblog/lynq_deflog.h>
+#include "common.h"
+
+#undef LOG_TAG
+#define LOG_TAG "LED"
+
+
+/*************************************************************
+ Constants and Macros
+*************************************************************/
+#define GPIO_NETLED_CONNECT_REFLASH_TIMER 200
+#define GPIO_NETLED_CREG_REFLASH_TIMER 800
+#define MBTK_GPIO_NETLED_N 77
+
+/*************************************************************
+ Extern Function Declaration
+*************************************************************/
+void mbtk_netled_reflash_handle();
+
+/*************************************************************
+ Variables:local,extern
+*************************************************************/
+//static rex_timer_type mbtk_gpio_netled_timer;
+static mbtk_netled_state_t mbtk_netled_state;
+/*************************************************************
+ Definitions:enum,struct,union
+*************************************************************/
+
+/*=============================================
+FUNCTION
+ mbtk_get_netled_state
+
+DESCRIPTION
+ This function to return pointer of mbtk_netled_state.
+
+DEPENDENCIES
+ None
+
+PARAMETERS
+ None
+
+RETURN VALUE
+ &mbtk_netled_state
+
+SIDE EFFECTS
+ None
+=============================================*/
+
+mbtk_netled_state_t * mbtk_get_netled_state()
+{
+ return &mbtk_netled_state;
+}
+
+/*=============================================
+FUNCTION
+ mbtk_init_netled_state
+
+DESCRIPTION
+ This function to init mbtk_netled_state.
+
+DEPENDENCIES
+ None
+
+PARAMETERS
+ None
+
+RETURN VALUE
+ None
+
+SIDE EFFECTS
+ None
+=============================================*/
+
+void mbtk_init_netled_state()
+{
+ mbtk_netled_state_t * netled_state = NULL;
+ netled_state = mbtk_get_netled_state();
+
+ netled_state->gpio_netled_cs_flag = false;
+ netled_state->gpio_netled_goingsleep_flag = false;
+ netled_state->gpio_netled_ppp_flag = false;
+ netled_state->gpio_netled_wwan_flag = false;
+
+}
+
+static timer_t s_mbtk_gpio_netled_timer;
+
+static int s_mbtk_gpio_netled_timer_sig_value = 11; /* 2,3,4 are used by network */
+
+void start_led_timer(timer_t timer, int signal_value, int milliseconds)
+{
+ RLOGD("start_led_timer(), timer_id=%ld, signal_value=%d, time=%d",(long)timer, signal_value, milliseconds);
+
+ struct itimerspec expire;
+ expire.it_interval.tv_sec = 0;
+ expire.it_interval.tv_nsec = 0;
+ expire.it_value.tv_sec = milliseconds/1000;
+ expire.it_value.tv_nsec = (milliseconds%1000)*1000000;
+ if (timer_settime(timer, 0, &expire, NULL) == -1) {
+ RLOGE("timer_settime failed reason=[%s]", strerror(errno));
+ }
+
+}
+
+void stop_led_timer(timer_t timer, int signal_value) {
+ RLOGD("stop_led_timer(), timer_id=%ld, signal_value=%d", (long)timer, signal_value);
+ struct itimerspec timespec;
+ if(timer_gettime(timer, ×pec) == -1) {
+ RLOGE("stop_led_timer(), get time fail(%s)", strerror(errno));
+ return;
+ }
+ RLOGD("stop_led_timer(), tv_sec=%ld, tv_nsec=%ld",timespec.it_value.tv_sec, timespec.it_value.tv_nsec);
+ if((timespec.it_value.tv_sec == 0) && (timespec.it_value.tv_nsec == 0) ) {
+ RLOGD("stop_led_timer(), timer_id(%ld) had stopped, just return", (long)timer);
+ return;
+ } else {
+ start_led_timer(timer, signal_value, 0);
+ }
+}
+
+void led_timer_handler(sigval_t sig)
+{
+ RLOGD("led_timer_handler, sig_value: %d", sig.sival_int);
+ if(sig.sival_int == s_mbtk_gpio_netled_timer_sig_value)
+ {
+ mbtk_netled_reflash_handle();
+ }
+}
+
+void init_led_timer(timer_t* timer, int signal_value)
+{
+ struct sigevent sevp;
+ memset(&sevp, 0, sizeof(sevp));
+ sevp.sigev_value.sival_int = signal_value;
+ sevp.sigev_notify = SIGEV_THREAD;
+ sevp.sigev_notify_function = led_timer_handler;
+
+ if(timer_create(CLOCK_MONOTONIC, &sevp, timer) == -1) {
+ RLOGE("init_led_timer() failed reason=[%s]", strerror(errno));
+ }
+ RLOGD("init_led_timer(), timer_Id = %ld, signal_value=%d", (long)(*timer), signal_value);
+}
+
+void init_led_timer_all()
+{
+ init_led_timer(&s_mbtk_gpio_netled_timer,s_mbtk_gpio_netled_timer_sig_value);
+}
+
+void deinit_led_timer_all()
+{
+ stop_led_timer(s_mbtk_gpio_netled_timer,s_mbtk_gpio_netled_timer_sig_value);
+}
+
+/*=============================================
+FUNCTION
+ mbtk_netled_init
+
+DESCRIPTION
+ This function to init timer
+
+DEPENDENCIES
+ None
+
+PARAMETERS
+ param not used
+
+RETURN VALUE
+ None
+
+SIDE EFFECTS
+ None
+=============================================*/
+void mbtk_netled_init()
+{
+ mbtk_init_netled_state();
+ init_led_timer_all();
+}
+
+/*=============================================
+FUNCTION
+ mbtk_netled_deinit
+
+DESCRIPTION
+ This function to init timer
+
+DEPENDENCIES
+ None
+
+PARAMETERS
+ param not used
+
+RETURN VALUE
+ None
+
+SIDE EFFECTS
+ None
+=============================================*/
+void mbtk_netled_deinit()
+{
+ deinit_led_timer_all();
+}
+
+
+/*=============================================
+FUNCTION
+ mbtk_get_at_netled_cmd
+
+DESCRIPTION
+ This function to return netled switch value.
+
+DEPENDENCIES
+ None
+
+PARAMETERS
+ None
+
+RETURN VALUE
+ int
+
+SIDE EFFECTS
+ None
+=============================================*/
+
+int mbtk_get_at_netled_cmd(void)
+{
+ return 1;
+// return (int) dsatutil_get_val(MBTK_AT_GPIO_CGNETLED_IDX,0,0,NUM_TYPE);
+}
+
+/*=============================================
+FUNCTION
+ mbtk_get_reg_net_status
+
+DESCRIPTION
+ This function that determine if net registers successfully.
+
+DEPENDENCIES
+ None
+
+PARAMETERS
+ param not used
+
+RETURN VALUE
+ mbtk_netled_reg_net_status
+
+SIDE EFFECTS
+ None
+=============================================*/
+
+mbtk_netled_reg_net_status mbtk_get_reg_net_status(void)
+{
+ mbtk_netled_reg_net_status reg_net_status = NET_REG_FAIL;
+
+ if(false == ril_get_if_insert_simcard())
+ {
+ RLOGE("ril_get_if_insert_simcard false" );
+ reg_net_status = NET_REG_FAIL;
+ return reg_net_status;
+ }
+
+ if(true == ril_get_if_3gpp_reg_success())
+ {
+ RLOGD("ril_get_if_3gpp_reg_success true");
+ reg_net_status = NET_REG_SUCCESS;
+ return reg_net_status;
+ }
+
+ return reg_net_status;
+
+}
+
+/*=============================================
+FUNCTION
+ mbtk_netled_get_socket_conn_status
+
+DESCRIPTION
+ This function that socket connects successfully.
+
+DEPENDENCIES
+ None
+
+PARAMETERS
+ param not used
+
+RETURN VALUE
+ mbtk_netled_socket_conn_status
+
+SIDE EFFECTS
+ None
+=============================================*/
+
+mbtk_netled_socket_conn_status mbtk_netled_get_socket_conn_status(void)
+{
+ mbtk_netled_socket_conn_status socket_conn_status = MBTK_SOCKET_DISCONNECT;
+ mbtk_netled_state_t * netled_state = mbtk_get_netled_state();
+
+ if(netled_state->gpio_netled_ppp_flag || netled_state->gpio_netled_wwan_flag)
+ {
+ RLOGD("GPIO: ppp wwan netled state sockNum %d,%d",
+ netled_state->gpio_netled_ppp_flag, netled_state->gpio_netled_wwan_flag);
+
+ socket_conn_status = MBTK_SOCKET_CONNECTED;
+ return socket_conn_status;
+ }
+
+ return socket_conn_status;
+
+}
+
+/*=============================================
+FUNCTION
+ mbtk_netled_get_current_state
+
+DESCRIPTION
+ get the netled status .
+
+DEPENDENCIES
+ None
+
+PARAMETERS
+ param not used
+
+RETURN VALUE
+ mbtk_netled_status_type
+
+SIDE EFFECTS
+ None
+=============================================*/
+mbtk_netled_status_type mbtk_netled_get_current_state(void)
+{
+ mbtk_netled_reg_net_status reg_net_status = NET_REG_FAIL;
+ mbtk_netled_status_type netled_status_type = GPIO_NETLED_OFF;
+ mbtk_netled_socket_conn_status socket_conn_status = MBTK_SOCKET_DISCONNECT;
+ int mbtk_netled_at_cmd_value = mbtk_get_at_netled_cmd(); // 0 -- close netled / 1 -- open netled
+ mbtk_netled_state_t * netled_state = mbtk_get_netled_state();
+
+ if(mbtk_netled_at_cmd_value == 0 ||
+ netled_state->gpio_netled_goingsleep_flag == true)
+ {
+ netled_status_type = GPIO_NETLED_OFF;
+ return netled_status_type;
+ }
+
+ reg_net_status = mbtk_get_reg_net_status();
+ if( NET_REG_FAIL == reg_net_status || true == netled_state->gpio_netled_cs_flag )
+ {
+ netled_status_type = GPIO_NETLED_LIGHT;
+ }
+ else if( NET_REG_SUCCESS == reg_net_status )
+ {
+ socket_conn_status = mbtk_netled_get_socket_conn_status();
+
+ if( MBTK_SOCKET_CONNECTED == socket_conn_status )
+ {
+ netled_status_type = GPIO_NETLED_CONNECT;
+ }
+ else if( MBTK_SOCKET_DISCONNECT == socket_conn_status )
+ {
+ netled_status_type = GPIO_NETLED_REG;
+ }
+ }
+ return netled_status_type;
+}
+
+
+
+bool is_mbtk_timer_finish() {
+ struct itimerspec timespec;
+ if(timer_gettime(s_mbtk_gpio_netled_timer, ×pec) == -1) {
+ RLOGD("%s(), get time fail(%s)", __FUNCTION__, strerror(errno));
+ return true;
+ }
+ RLOGD("%s(), tv_sec=%ld, tv_nsec=%ld", __FUNCTION__,timespec.it_value.tv_sec, timespec.it_value.tv_nsec);
+ if((timespec.it_value.tv_sec == 0) && (timespec.it_value.tv_nsec == 0) ) {
+ RLOGD("%s(), timer_id(%ld) had stopped", __FUNCTION__, (long)s_mbtk_gpio_netled_timer);
+ return true;
+ }
+ return false;
+}
+
+/*=============================================
+FUNCTION
+ mbtk_netled_state_update
+
+DESCRIPTION
+ This function to reflash network led status and write gpio value
+
+DEPENDENCIES
+ None
+
+PARAMETERS
+ param flag
+
+RETURN VALUE
+ None
+
+SIDE EFFECTS
+ None
+=============================================*/
+void mbtk_netled_state_update(mbtk_netled_reflash_type flag)
+{
+// rex_timer_cnt_type prev_value;
+ mbtk_netled_state_t * netled_state = NULL;
+ netled_state = mbtk_get_netled_state();
+
+ switch (flag)
+ {
+ case GPIO_NETLED_REFLASH_NORMAL:
+ break;
+ case GPIO_NETLED_CS_CALLING:
+ netled_state->gpio_netled_cs_flag = true;
+ break;
+ case GPIO_NETLED_PPP_CONNECT:
+ netled_state->gpio_netled_ppp_flag = true;
+ break;
+ case GPIO_NETLED_PPP_CLOSED:
+ netled_state->gpio_netled_ppp_flag = false;
+ break;
+ case GPIO_NETLED_CS_CALLEND:
+ netled_state->gpio_netled_cs_flag = false;
+ break;
+ case GPIO_NETLED_AP_GOINGSLEEP:
+ netled_state->gpio_netled_goingsleep_flag = true;
+ break;
+ case GPIO_NETLED_AP_WAKEUP:
+ netled_state->gpio_netled_goingsleep_flag = false;
+ break;
+ case GPIO_NETLED_WWAN_CONNECT:
+ netled_state->gpio_netled_wwan_flag = true;
+ break;
+ case GPIO_NETLED_WWAN_CLOSED:
+ netled_state->gpio_netled_wwan_flag = false;
+ break;
+
+ }
+
+ //prev_value = rex_get_timer(&mbtk_gpio_netled_timer);
+// prev_value = timer_get_64(&mbtk_gpio_netled_timer, T_MSEC);
+// if( prev_value == 0)
+ if((flag== GPIO_NETLED_AP_GOINGSLEEP) || is_mbtk_timer_finish())
+ {
+ // MBTK_MSG1_HIGH("GPIO: rex_get_timer prev_value =%d",prev_value);
+ //rex_set_timer(&mbtk_gpio_netled_timer, 1);
+ //timer_set_64(&mbtk_gpio_netled_timer,1,0,T_MSEC);
+ start_led_timer(s_mbtk_gpio_netled_timer, s_mbtk_gpio_netled_timer_sig_value, 1);
+ }
+
+ return ;
+}
+
+/*=============================================
+FUNCTION
+ mbtk_netled_reflash_handle
+
+DESCRIPTION
+ This function to reflash network led status and write gpio value
+
+DEPENDENCIES
+ None
+
+PARAMETERS
+ param not used
+
+RETURN VALUE
+ None
+
+SIDE EFFECTS
+ None
+=============================================*/
+
+void mbtk_gpio_write_output(int gpio_port, int value)
+{
+ if(value==1)
+ {
+ system("echo 255 > /sys/class/leds/led9515:green:cellular-radio/brightness");
+ }
+ else
+ {
+ system("echo 0 > /sys/class/leds/led9515:green:cellular-radio/brightness");
+ }
+}
+
+
+/*=============================================
+FUNCTION
+ mbtk_netled_reflash_handle
+
+DESCRIPTION
+ This function to reflash network led status and write gpio value
+
+DEPENDENCIES
+ None
+
+PARAMETERS
+ param not used
+
+RETURN VALUE
+ None
+
+SIDE EFFECTS
+ None
+=============================================*/
+void mbtk_netled_reflash_handle()
+{
+ mbtk_netled_status_type state = GPIO_NETLED_MAX;
+ state = mbtk_netled_get_current_state();
+ RLOGD("mbtk_netled_get_current_state state = %d",state);
+ static int led_val = 0;
+
+ switch(state)
+ {
+ case GPIO_NETLED_OFF:
+ {
+ if( 0 != led_val )
+ {
+ led_val = 0;
+ mbtk_gpio_write_output(MBTK_GPIO_NETLED_N, 0);
+ }
+ }
+ break;
+ case GPIO_NETLED_REG:
+ {
+ led_val = ( (1 == led_val)? 0:1 );
+ mbtk_gpio_write_output(MBTK_GPIO_NETLED_N, led_val);
+ start_led_timer(s_mbtk_gpio_netled_timer, s_mbtk_gpio_netled_timer_sig_value, GPIO_NETLED_CREG_REFLASH_TIMER);
+
+ // timer_set_64(&mbtk_gpio_netled_timer,GPIO_NETLED_CREG_REFLASH_TIMER,0,T_MSEC);
+ //rex_set_timer(&mbtk_gpio_netled_timer, GPIO_NETLED_CREG_REFLASH_TIMER);
+ }
+ break;
+ case GPIO_NETLED_CONNECT:
+ {
+ led_val = ( (1 == led_val)? 0:1 );
+ mbtk_gpio_write_output(MBTK_GPIO_NETLED_N, led_val);
+ start_led_timer(s_mbtk_gpio_netled_timer, s_mbtk_gpio_netled_timer_sig_value, GPIO_NETLED_CONNECT_REFLASH_TIMER);
+ // timer_set_64(&mbtk_gpio_netled_timer,GPIO_NETLED_CONNECT_REFLASH_TIMER,0,T_MSEC);
+ //rex_set_timer(&mbtk_gpio_netled_timer, GPIO_NETLED_CONNECT_REFLASH_TIMER);
+ }
+ break;
+ case GPIO_NETLED_LIGHT:
+ {
+ if( 1 != led_val )
+ {
+ led_val = 1;
+ mbtk_gpio_write_output(MBTK_GPIO_NETLED_N, 1);
+ }
+ }
+ break;
+ default:
+ RLOGE("GPIO: Unkown netled state !");
+ }
+}
diff --git a/src/lynq/framework/lynq-ril-service/src/led/led_inner.h b/src/lynq/framework/lynq-ril-service/src/led/led_inner.h
new file mode 100755
index 0000000..2e31e21
--- /dev/null
+++ b/src/lynq/framework/lynq-ril-service/src/led/led_inner.h
@@ -0,0 +1,59 @@
+/**
+ * @file led_inner.h
+ * @author hq
+ * @brief
+ * @version 1.0
+ * @date 2022-11-28
+ *
+ * @copyright Copyright (c) 2022
+ *
+ */
+#ifndef LED_INNER_H
+#define LED_INNER_H 1
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+/*************************************************************
+ Definitions:enum,struct,union,class
+*************************************************************/
+typedef struct {
+ bool gpio_netled_cs_flag;
+ bool gpio_netled_ppp_flag;
+ bool gpio_netled_wwan_flag;
+ bool gpio_netled_goingsleep_flag;
+}mbtk_netled_state_t;
+
+typedef enum
+{
+ GPIO_NETLED_OFF,
+ GPIO_NETLED_REG,
+ GPIO_NETLED_CONNECT,
+ GPIO_NETLED_LIGHT,
+ GPIO_CS_REG,
+ GPIO_NETLED_MAX
+}mbtk_netled_status_type;
+
+typedef enum
+{
+ NET_REG_SUCCESS,
+ NET_REG_FAIL,
+ NET_REG_MAX
+}mbtk_netled_reg_net_status;
+
+typedef enum
+{
+ MBTK_SOCKET_CONNECTED,
+ MBTK_SOCKET_DISCONNECT,
+ MBTK_SOCKET_CONN_MAX
+}mbtk_netled_socket_conn_status;
+
+/*************************************************************
+ Function Declaration
+*************************************************************/
+
+#ifdef __cplusplus
+}
+#endif
+#endif
diff --git a/src/lynq/framework/lynq-ril-service/src/makefile b/src/lynq/framework/lynq-ril-service/src/makefile
index 23715e6..2b49b61 100755
--- a/src/lynq/framework/lynq-ril-service/src/makefile
+++ b/src/lynq/framework/lynq-ril-service/src/makefile
@@ -68,6 +68,7 @@
-I$(LOCAL_PATH)/factory \
-I$(LOCAL_PATH)/fota \
-I$(LOCAL_PATH)/temp \
+ -I$(LOCAL_PATH)/led/include \
-I$(ROOT)$(includedir)/logger \
-I$(ROOT)$(includedir)/liblog \
-I$(ROOT)$(includedir)/liblynq-thermal \
@@ -124,7 +125,7 @@
endif
-SOURCES = $(wildcard util/*.cpp *.cpp ecall/*.cpp ecall/gost/*.cpp ecall/gost/utils/*.cpp ecall/gost/sslp/*.cpp ecall/gost/sslp/auth/*.cpp ecall/gost/sslp/firmware/*.cpp ecall/gost/sslp/commands/*.cpp ecall/gost/sslp/ecall/*.cpp ecall/gost/sslp/teledata/*.cpp data/*.cpp em/rfdesense/*.cpp em/networkinfo/*.cpp em/*.cpp sms/*.cpp sms/gsm/*.cpp sms/cdma/*.cpp atci/*.cpp stateManager/*.cpp sms/lynqSmsManager/*.cpp rndis/*.cpp factory/*.cpp temp/*.cpp fota/*.cpp)
+SOURCES = $(wildcard util/*.cpp *.cpp ecall/*.cpp ecall/gost/*.cpp ecall/gost/utils/*.cpp ecall/gost/sslp/*.cpp ecall/gost/sslp/auth/*.cpp ecall/gost/sslp/firmware/*.cpp ecall/gost/sslp/commands/*.cpp ecall/gost/sslp/ecall/*.cpp ecall/gost/sslp/teledata/*.cpp data/*.cpp em/rfdesense/*.cpp em/networkinfo/*.cpp em/*.cpp sms/*.cpp sms/gsm/*.cpp sms/cdma/*.cpp atci/*.cpp stateManager/*.cpp sms/lynqSmsManager/*.cpp rndis/*.cpp factory/*.cpp temp/*.cpp fota/*.cpp led/*.cpp)
EXECUTABLE = lynq-ril-service
diff --git a/src/lynq/framework/lynq-ril-service/src/ril.cpp b/src/lynq/framework/lynq-ril-service/src/ril.cpp
index e44cd49..a66ab71 100755
--- a/src/lynq/framework/lynq-ril-service/src/ril.cpp
+++ b/src/lynq/framework/lynq-ril-service/src/ril.cpp
@@ -91,6 +91,7 @@
#include "lynq_fota.h"
/*lt add end*/
/*Warren add for t800 RIL service 2021_12_10 end*/
+#include "led.h"
#define LOG_TAG "DEMO_RIL"
#define WAIT_TIME_FOR_SIM_SWITCH 30
@@ -5670,6 +5671,7 @@
static void initCoditions()
{
+ mbtk_netled_init();
mixer_init();
if(utils::is_support_dsds()) {
for(int i = 0; i < 2 ; i++) {
@@ -6168,6 +6170,7 @@
}
RLOGD("close socket fd");
close(server_socket_fd);
+ mbtk_netled_deinit();
return ;
}
int LYNQ_RIL_respSocket(Parcel &p,RIL_Token t)
diff --git a/src/lynq/framework/lynq-ril-service/src/stateManager/stateManager.cpp b/src/lynq/framework/lynq-ril-service/src/stateManager/stateManager.cpp
index 9e16b5e..b1142ef 100755
--- a/src/lynq/framework/lynq-ril-service/src/stateManager/stateManager.cpp
+++ b/src/lynq/framework/lynq-ril-service/src/stateManager/stateManager.cpp
@@ -47,6 +47,7 @@
#include "util/utils.h"
#include <cutils/jstring.h>
#include <liblog/lynq_deflog.h>
+#include "led.h"
#undef LOG_TAG
#define LOG_TAG "DEMO_MANAGER"
@@ -96,7 +97,12 @@
size_t pos = p.dataPosition();
p.writeInt32(1);
- p.writeInt32(atoi(argv[1]));
+
+ int screen_state= atoi(argv[1]);
+ p.writeInt32(screen_state);
+
+ mbtk_netled_state_update(screen_state==0 ? GPIO_NETLED_AP_GOINGSLEEP : GPIO_NETLED_AP_WAKEUP);
+ usleep(wait_led_update_effective_timer_ms*1000);
p.setDataPosition(pos);
pRI->pCI->dispatchFunction(p, pRI);