修复动态拼接存储路径死机问题

This commit is contained in:
sober.song 2024-01-04 13:39:07 +08:00
parent 04ffffa004
commit 13ebddc03b
5 changed files with 31 additions and 26 deletions

View File

@ -70,6 +70,8 @@ void SF_StrgInit(void) {
sf_mmc_dev[i]->space_state = MMC_DEV_SPACE_STATE_ENOUGH; sf_mmc_dev[i]->space_state = MMC_DEV_SPACE_STATE_ENOUGH;
sf_mmc_dev[i]->loop_state = MMC_DEV_LOOP_STATE_OFF; sf_mmc_dev[i]->loop_state = MMC_DEV_LOOP_STATE_OFF;
} }
pMMCDev = (SF_ST_MMC_DEV *)malloc(sizeof(SF_ST_MMC_DEV));
} }
void SF_StrgUnInit(void) void SF_StrgUnInit(void)
@ -342,32 +344,37 @@ SF_ST_MMC_DEV *SF_StrgCheckWorkableDev(void)
} }
} }
#if 1
static int sfStrgOnActionSendCurrentDev(SF_ST_MMC_DEV *pMMCDev) static int sfStrgOnActionSendCurrentDev(SF_ST_MMC_DEV *pMMCDev)
{ {
SF_MESSAGE_BUF_S stMessageBuf = {0}; SF_MESSAGE_BUF_S stMessageBuf = {0};
stMessageBuf.s32Wait = SF_SYS_STRG_DEV_MSG; stMessageBuf.arg1 = SF_SYS_STRG_DEV_MSG;
stMessageBuf.arg1 = pMMCDev->dev_type; stMessageBuf.arg2 = pMMCDev->dev_type;
stMessageBuf.arg2 = pMMCDev->node;
stMessageBuf.arg3 = pMMCDev->moumted_state; stMessageBuf.arg3 = pMMCDev->moumted_state;
stMessageBuf.cmdId = CMD_SD; stMessageBuf.cmdId = CMD_SD;
sf_com_message_send_to_app(&stMessageBuf); sf_com_message_send_to_app(&stMessageBuf);
MLOGD("sf sys strg update current dev!\n");
return 0; return 0;
} }
#endif
static void* mmc_monitoring_thread(void *arg) static void* mmc_monitoring_thread(void *arg)
{ {
static MMC_DEV_TYPE current_dev = MMC_DEV_NO; static MMC_DEV_TYPE current_id = MMC_DEV_NO;
while(MMCMonitorTskCfg.IsRun) while(MMCMonitorTskCfg.IsRun)
{ {
pMMCDev = SF_StrgCheckWorkableDev(); pMMCDev = SF_StrgCheckWorkableDev();
if(current_dev != pMMCDev->dev_type) if(pMMCDev != NULL) {
{ if(current_id != pMMCDev->dev_type)
current_dev = pMMCDev->dev_type; {
sfStrgOnActionSendCurrentDev(pMMCDev); current_id = pMMCDev->dev_type;
MLOGD("mmc monitor dev has changed!, %d\n", pMMCDev->dev_type);
sfStrgOnActionSendCurrentDev(pMMCDev);
}
} }
sf_sleep_ms(1000); sf_sleep_ms(5000);
} }
return NULL; return NULL;
} }

View File

@ -80,14 +80,13 @@ typedef enum
typedef struct typedef struct
{ {
MMC_DEV_TYPE dev_type; MMC_DEV_TYPE dev_type;
MMC_DEV_NODE_STATE node;
MMC_DEV_MOUNT_STATE moumted_state; MMC_DEV_MOUNT_STATE moumted_state;
}SF_STRG_DEV; }SF_STRG_DEV;
void sf_strg_dev_init(void); void sf_strg_dev_init(void);
void sf_strg_dev_uninit(void); void sf_strg_dev_uninit(void);
void sf_strg_dev_register(SF_MESSAGE_BUF_S *pMessageBuf); void sf_strg_dev_register(SINT32 dev_id, SINT32 mounted);
MMC_DEV_TYPE sf_get_strg_dev(void); MMC_DEV_TYPE sf_get_strg_dev(void);
char *sf_root_path_strcat(char *path_name); char *sf_root_path_strcat(char *path_name);
char *sf_get_root_path(void); char *sf_get_root_path(void);

View File

@ -260,9 +260,6 @@ int main(int argc, char *argv[])
stMessageBuf.arg2 = SF_KEY_PIN_AOTU_MODE_POWOFF;//auto mode powoff stMessageBuf.arg2 = SF_KEY_PIN_AOTU_MODE_POWOFF;//auto mode powoff
sf_com_message_send_to_cardv(&stMessageBuf); sf_com_message_send_to_cardv(&stMessageBuf);
}*/ }*/
//init stroage_dev struct
sf_strg_dev_uninit();
ftp_manager_uninit(); ftp_manager_uninit();
sf_share_mem_file_deinit(); sf_share_mem_file_deinit();

View File

@ -706,15 +706,15 @@ static SINT32 sfStrgDevEmmcHandler(SF_MESSAGE_BUF_S *pMessageBuf)
static SINT32 sf_app_process_cmd_SD(SF_MESSAGE_BUF_S *pMessageBuf) static SINT32 sf_app_process_cmd_SD(SF_MESSAGE_BUF_S *pMessageBuf)
{ {
MLOGD("[dev_id:%d,evt:%s]\n",pMessageBuf->arg2,app_process_SD_getstatusstring(pMessageBuf->arg1)); MLOGD("[dev_id:%d,evt:%d]\n",pMessageBuf->arg2,pMessageBuf->arg1);
if(pMessageBuf->arg2 == MMC_DEV_SD) //if(pMessageBuf->arg2 == MMC_DEV_SD)
{ {
sfStrgDevSdHandler(pMessageBuf); //sfStrgDevSdHandler(pMessageBuf);
} }
else if(pMessageBuf->arg2 == MMC_DEV_EMMC) //else if(pMessageBuf->arg2 == MMC_DEV_EMMC)
{ {
sfStrgDevEmmcHandler(pMessageBuf); //sfStrgDevEmmcHandler(pMessageBuf);
} }
switch(pMessageBuf->arg1) switch(pMessageBuf->arg1)
@ -732,7 +732,7 @@ static SINT32 sf_app_process_cmd_SD(SF_MESSAGE_BUF_S *pMessageBuf)
sf_set_card_statu(pMessageBuf->arg2); sf_set_card_statu(pMessageBuf->arg2);
break; break;
case CMD_SD_STRG_WORKABLE_DEV: case CMD_SD_STRG_WORKABLE_DEV:
sf_strg_dev_register(pMessageBuf); sf_strg_dev_register(pMessageBuf->arg2, pMessageBuf->arg3);
break; break;
default: default:
break; break;

View File

@ -42,8 +42,8 @@ void sf_strg_dev_init(void)
{ {
sf_strg_dev = (SF_STRG_DEV *)malloc(sizeof(SF_STRG_DEV)); sf_strg_dev = (SF_STRG_DEV *)malloc(sizeof(SF_STRG_DEV));
sf_strg_dev->dev_type = MMC_DEV_NO; sf_strg_dev->dev_type = MMC_DEV_NO;
sf_strg_dev->node = MMC_DEV_NODE_STATE_NO;
sf_strg_dev->moumted_state = MMC_DEV_MOUNT_STATE_NO; sf_strg_dev->moumted_state = MMC_DEV_MOUNT_STATE_NO;
MLOGD("sf_app strg dev init success!\n");
} }
void sf_strg_dev_uninit(void) void sf_strg_dev_uninit(void)
@ -52,11 +52,10 @@ void sf_strg_dev_uninit(void)
sf_strg_dev = NULL; sf_strg_dev = NULL;
} }
void sf_strg_dev_register(SF_MESSAGE_BUF_S *pMessageBuf) void sf_strg_dev_register(SINT32 dev_id, SINT32 mounted)
{ {
sf_strg_dev->dev_type = pMessageBuf->arg1; sf_strg_dev->dev_type = dev_id;
sf_strg_dev->node = pMessageBuf->arg2; sf_strg_dev->moumted_state = mounted;
sf_strg_dev->moumted_state = pMessageBuf->arg3;
} }
MMC_DEV_TYPE sf_get_strg_dev(void) MMC_DEV_TYPE sf_get_strg_dev(void)
@ -112,6 +111,7 @@ char *sf_get_root_path(void)
mmc_dev = sf_get_strg_dev(); mmc_dev = sf_get_strg_dev();
if (mmc_dev == MMC_DEV_NO) if (mmc_dev == MMC_DEV_NO)
{ {
MLOGE("get strg dev no!\n");
return NULL; return NULL;
} }
@ -125,6 +125,7 @@ char *sf_get_root_path(void)
strg_path = (char *)malloc(strlen(SF_EMMC_ROOT) + 1); strg_path = (char *)malloc(strlen(SF_EMMC_ROOT) + 1);
strcpy(strg_path, SF_EMMC_ROOT); strcpy(strg_path, SF_EMMC_ROOT);
} }
MLOGD("strg_path: %s\n", strg_path);
return strg_path; return strg_path;
} }
@ -143,6 +144,7 @@ char *sf_root_path_strcat(char *path_name)
strcat(tmp, path_name); strcat(tmp, path_name);
free(strg_path); // 释放内存 free(strg_path); // 释放内存
MLOGD("root path: %s\n", tmp);
return tmp; return tmp;
} }