1.增加参数同步线程休眠唤醒功能;2.gprs开关
This commit is contained in:
parent
4e18af6e26
commit
4c9527f1a9
|
@ -480,6 +480,8 @@ typedef enum sf_PARA_MESSAGE_TYPE_E
|
|||
SF_PARA_CMD_NET_STATUS = 0x1F00,
|
||||
SF_PARA_CMD_IR_LED_STATUS = 0x1F01,
|
||||
SF_PARA_CMD_BATTERY_LEVEL = 0x1F02,
|
||||
SF_PARA_CMD_WAIT = 0x1F03,
|
||||
SF_PARA_CMD_SIG = 0x1F04,
|
||||
}SF_PARA_MESSAGE_TYPE_E;
|
||||
|
||||
typedef enum sf_WIFI_MESSAGE_TYPE_E
|
||||
|
|
|
@ -49,7 +49,8 @@ SINT32 app_preinit(void);
|
|||
UINT8 *sf_versionGet(UINT8 ver[],UINT8 fea[]);
|
||||
|
||||
void sf_power_off(void);
|
||||
|
||||
void sf_set_wait_shared_condition(int in);
|
||||
SINT32 sf_app_para_signaling_start(void);
|
||||
SINT32 sf_app_para_check_start(void);
|
||||
SINT32 sf_app_para_check_stop(void);
|
||||
SINT32 sf_app_battery_start(void);
|
||||
|
|
|
@ -61,6 +61,7 @@
|
|||
|
||||
extern pthread_mutex_t Param_mutexLock;
|
||||
extern pthread_mutex_t GPIO_mutexLock;
|
||||
extern pthread_cond_t condition;
|
||||
//---------------------UIInfo Global Variables -----------------------------
|
||||
UIMenuStoreInfo currentInfo = {0}; //#NT#Init the array to zero.
|
||||
UIMenuStoreInfo origInfo = {0}; /* backup */
|
||||
|
@ -154,7 +155,7 @@ int main(int argc, char *argv[])
|
|||
if((!isUsb) && (SF_MCU_STARTUP_NORMAL != startup) && (SF_MCU_STARTUP_OFF != startup)/*&& (0 == isUpdate)*/)
|
||||
{
|
||||
#if SF_IQ_TEST != ENABLE
|
||||
if((0 == isUpdate))
|
||||
if((0 == isUpdate) && (puiPara->GprsSwitch))
|
||||
{
|
||||
sf_4G_usb_init();
|
||||
app_RegisterNet_start();
|
||||
|
@ -217,7 +218,10 @@ int main(int argc, char *argv[])
|
|||
|
||||
}
|
||||
}*/
|
||||
|
||||
if((!isUsb) && (SF_MCU_STARTUP_NORMAL != startup) && (SF_MCU_STARTUP_OFF != startup) && (SF_MCU_STARTUP_ONKEY != startup)&& (!puiPara->GprsSwitch))
|
||||
{
|
||||
sf_power_off();
|
||||
}
|
||||
//if((SF_MCU_STARTUP_ONKEY == startup) || (TRUE == autosend))
|
||||
{
|
||||
////////////////////////////////
|
||||
|
@ -244,6 +248,7 @@ int main(int argc, char *argv[])
|
|||
sf_share_mem_customer_deinit();
|
||||
SF_MUTEX_DESTROY(Param_mutexLock);
|
||||
SF_MUTEX_DESTROY(GPIO_mutexLock);
|
||||
pthread_cond_destroy(&condition);
|
||||
exit(0);
|
||||
printf("********************sf app end***********************\n");
|
||||
|
||||
|
|
|
@ -790,6 +790,13 @@ static SINT32 sf_app_proccess_cmd_para_update(SF_MESSAGE_BUF_S *pMessageBuf)
|
|||
case SF_PARA_CMD_IR_LED_STATUS:
|
||||
IsNightLedOn = pMessageBuf->arg2;
|
||||
break;
|
||||
case SF_PARA_CMD_WAIT:
|
||||
sf_set_wait_shared_condition(0);
|
||||
break;
|
||||
case SF_PARA_CMD_SIG:
|
||||
sf_app_para_signaling_start();
|
||||
break;
|
||||
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -123,7 +123,11 @@ SF_THREAD_S McuParaTskCfg =
|
|||
.IsRun = 0,
|
||||
.TskId = -1,
|
||||
};
|
||||
|
||||
SF_THREAD_S WaiParaTskCfg =
|
||||
{
|
||||
.IsRun = 0,
|
||||
.TskId = -1,
|
||||
};
|
||||
SINT8 debugFlag = 0;
|
||||
|
||||
void app_poweroff_time_clear(void)
|
||||
|
@ -934,6 +938,48 @@ void sf_power_off(void)
|
|||
sf_com_message_send_to_cardv(&stMessageBuf);
|
||||
printf("[%s:%d] e\n", __FUNCTION__, __LINE__);
|
||||
}
|
||||
pthread_cond_t condition;
|
||||
extern pthread_mutex_t Param_mutexLock;
|
||||
int shared_condition = 1;
|
||||
|
||||
void* sf_para_signaling_thread(void* arg)
|
||||
{
|
||||
pthread_mutex_lock(&Param_mutexLock);
|
||||
|
||||
// Modify the status that meets the conditions
|
||||
shared_condition = 1;
|
||||
|
||||
// Wake up waiting threads
|
||||
pthread_cond_signal(&condition);
|
||||
|
||||
pthread_mutex_unlock(&Param_mutexLock);
|
||||
WaiParaTskCfg.IsRun = 0;
|
||||
pthread_exit(NULL);
|
||||
}
|
||||
|
||||
SINT32 sf_app_para_signaling_start(void)
|
||||
{
|
||||
SINT32 ret = SF_FAILURE;
|
||||
if(WaiParaTskCfg.IsRun)
|
||||
{
|
||||
SLOGE("thread has already run !!!\n");
|
||||
return SF_FAILURE;
|
||||
}
|
||||
SLOGI("thread run\n");
|
||||
ret = pthread_create(&WaiParaTskCfg.TskId, NULL, sf_para_signaling_thread, NULL);
|
||||
if(ret != SF_SUCCESS)
|
||||
{
|
||||
MLOGD("thread creat fail!\n");
|
||||
return ret;
|
||||
}
|
||||
return SF_SUCCESS;
|
||||
}
|
||||
|
||||
void sf_set_wait_shared_condition(int in)
|
||||
{
|
||||
shared_condition = in;
|
||||
SLOGI("shared_condition:%d\n", shared_condition);
|
||||
}
|
||||
|
||||
void* sf_app_para_check_thread(void *arg)
|
||||
{
|
||||
|
@ -941,6 +987,10 @@ void* sf_app_para_check_thread(void *arg)
|
|||
ParaTskCfg.IsRun = 1;
|
||||
while(ParaTskCfg.IsRun)
|
||||
{
|
||||
while (shared_condition == 0) {
|
||||
pthread_cond_wait(&condition, &Param_mutexLock);
|
||||
}
|
||||
|
||||
if(TRUE == sf_get_para_check_flag()){
|
||||
MLOGI("menu info is changed\n");
|
||||
sf_share_mem_customer_down(1);
|
||||
|
@ -960,6 +1010,7 @@ SINT32 sf_app_para_check_start(void)
|
|||
SLOGE("thread has already run !!!\n");
|
||||
return SF_FAILURE;
|
||||
}
|
||||
pthread_cond_init(&condition, NULL);
|
||||
ret = pthread_create(&ParaTskCfg.TskId, NULL, sf_app_para_check_thread, NULL);
|
||||
if(ret != SF_SUCCESS)
|
||||
{
|
||||
|
|
|
@ -120,4 +120,6 @@ BOOL sf_cmd_ftp(unsigned char argc, char **argv);
|
|||
BOOL sf_cmd_ftps(unsigned char argc, char **argv);
|
||||
UINT32 sf_cardv_cap_start(void);
|
||||
UINT32 sf_cardv_hd_cap_start(void);
|
||||
void sf_cardv_set_wait_shared_condition(int in);
|
||||
int sf_cardv_para_signaling_start(void);
|
||||
#endif
|
||||
|
|
|
@ -83,6 +83,10 @@ static UINT8 batteryVal = 0;
|
|||
static UINT8 batteryType = 0;
|
||||
static SINT16 fTemper = 0;
|
||||
static SINT16 cTemper = 0;
|
||||
static pthread_cond_t condition;
|
||||
static pthread_mutex_t Param_mutexLock;
|
||||
static int shared_condition = 1;
|
||||
|
||||
static SF_THREAD_S UpgradeTskParam =
|
||||
{
|
||||
.IsRun = 0,
|
||||
|
@ -109,6 +113,11 @@ static SF_THREAD_S HdCapTskCfg =
|
|||
.IsRun = 0,
|
||||
.TskId = -1,
|
||||
};
|
||||
static SF_THREAD_S WaiParaTskCfg =
|
||||
{
|
||||
.IsRun = 0,
|
||||
.TskId = -1,
|
||||
};
|
||||
int sf_pir_statu_read(void)
|
||||
{
|
||||
static UINT8 state = 0;
|
||||
|
@ -388,6 +397,7 @@ BOOL sf_cmd_img_size(unsigned char argc, char **argv)
|
|||
printf("[%s:%d] value:%d\n", __FUNCTION__, __LINE__,value);
|
||||
if(value < PHOTO_SIZE_ID_MAX){
|
||||
SysSetFlag(FL_PHOTO_SIZE, value);
|
||||
Photo_SetUserIndex(PHOTO_USR_SIZE, puiPara->ImgSize);
|
||||
puiPara->ImgSize = value;
|
||||
Save_MenuInfo();
|
||||
}
|
||||
|
@ -1595,6 +1605,12 @@ static SINT32 sf_cardv_proccess_cmd_para_update(SF_MESSAGE_BUF_S *pMessageBuf)
|
|||
case SF_PARA_CMD_NET_STATUS:
|
||||
NetWorkFlag = pMessageBuf->arg2;
|
||||
break;
|
||||
case SF_PARA_CMD_WAIT:
|
||||
sf_cardv_set_wait_shared_condition(0);
|
||||
break;
|
||||
case SF_PARA_CMD_SIG:
|
||||
sf_cardv_para_signaling_start();
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
|
@ -2010,6 +2026,47 @@ void sf_do_upgrade_thread(void)
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
void* sf_cardv_para_signaling_thread(void* arg)
|
||||
{
|
||||
pthread_mutex_lock(&Param_mutexLock);
|
||||
|
||||
// Modify the status that meets the conditions
|
||||
shared_condition = 1;
|
||||
|
||||
// Wake up waiting threads
|
||||
pthread_cond_signal(&condition);
|
||||
|
||||
pthread_mutex_unlock(&Param_mutexLock);
|
||||
WaiParaTskCfg.IsRun = 0;
|
||||
pthread_exit(NULL);
|
||||
}
|
||||
|
||||
int sf_cardv_para_signaling_start(void)
|
||||
{
|
||||
int ret = SF_FAILURE;
|
||||
if(WaiParaTskCfg.IsRun)
|
||||
{
|
||||
SLOGE("thread has already run !!!\n");
|
||||
return SF_FAILURE;
|
||||
}
|
||||
SLOGI("thread run\n");
|
||||
ret = pthread_create(&WaiParaTskCfg.TskId, NULL, sf_cardv_para_signaling_thread, NULL);
|
||||
if(ret != SF_SUCCESS)
|
||||
{
|
||||
MLOGD("thread creat fail!\n");
|
||||
return ret;
|
||||
}
|
||||
return SF_SUCCESS;
|
||||
}
|
||||
|
||||
void sf_cardv_set_wait_shared_condition(int in)
|
||||
{
|
||||
shared_condition = in;
|
||||
SLOGI("shared_condition:%d\n", shared_condition);
|
||||
}
|
||||
|
||||
|
||||
void* sf_cardv_para_check_thread(void *arg)
|
||||
{
|
||||
SLOGI("thread run\n");
|
||||
|
@ -2038,6 +2095,7 @@ UINT32 sf_cardv_para_check_start(void)
|
|||
SLOGE("thread has already run !!!\n");
|
||||
return 1;
|
||||
}
|
||||
pthread_cond_init(&condition, NULL);
|
||||
ret = pthread_create(&ParaTskCfg.TskId, NULL, sf_cardv_para_check_thread, NULL);
|
||||
if(ret != SF_SUCCESS)
|
||||
{
|
||||
|
|
Loading…
Reference in New Issue
Block a user