示例#1
0
int eng_linuxcmd_infactorymode(char *req, char *rsp)
{
    char *ptr;
    int status;
    int length=strlen(req);
    ENG_LOG("%s: req=%s\n",__FUNCTION__, req);
    if((ptr=strchr(req, '?'))!= NULL){
        status = eng_sql_string2int_get(ENG_TESTMODE);
        if(status==ENG_SQLSTR2INT_ERR)
            status = 1;
        sprintf(rsp, "%d%s%s%s", status, ENG_STREND,SPRDENG_OK,ENG_STREND);
    } else if ((ptr=strchr(req, '='))!= NULL) {
        ptr++;
        if(ptr <= (req+length)) {
            status = atoi(ptr);
            ENG_LOG("%s: status=%d\n",__FUNCTION__, status);
            if(status==0||status==1) {
                eng_sql_string2int_set(ENG_TESTMODE, status);
                eng_check_factorymode(0);
                sprintf(rsp, "%s\r\n", SPRDENG_OK);
            } else {
                sprintf(rsp, "%s\r\n", SPRDENG_ERROR);
            }
        } else {
            sprintf(rsp, "%s\r\n", SPRDENG_ERROR);
        }
    } else {
        sprintf(rsp, "%s\r\n", SPRDENG_ERROR);
    }
    ENG_LOG("%s: rsp=%s\n",__FUNCTION__, rsp);

    return 0;
}
int main(void)
{
	int fd, rc, califlag=0;
	int engtest=0;
	char cmdline[ENG_CMDLINE_LEN];
    eng_thread_t t1,t2, t3,t4, t5;

#if 0
	int index;
	index = eng_sql_string2int_get("index");
	if(index == ENG_SQLSTR2INT_ERR){
		index = 0;
	} else {
		index++;
	}
	eng_sql_string2int_set("index", index);
	memset(cmdline, 0, ENG_CMDLINE_LEN);
	sprintf(cmdline, "logcat > /data/eng_%d.log &", index);
	system(cmdline);

#endif
	eng_sqlite_create();

	memset(cmdline, 0, ENG_CMDLINE_LEN);
	fd = open("/proc/cmdline", O_RDONLY);
	if(fd > 0) {
		rc = read(fd, cmdline, sizeof(cmdline));
		ENG_LOG("ENGTEST_MODE: cmdline=%s\n", cmdline);
		if(rc > 0) {
			if(strstr(cmdline,ENG_CALISTR) != NULL)
				califlag = 1;
			if(strstr(cmdline,"engtest") != NULL)
				engtest = 1;
		}
	}
	ALOGD("eng_pcclient califlag=%d, engtest=%d\n",califlag, engtest);

	if(engtest == 1) {
		eng_ctpcali();
	}

	if(califlag == 1){ //at handler in calibration mode
		eng_atcali_thread();
		return 0;
	}

#ifdef CONFIG_EMMC
	eng_check_factorymode_formmc();
#else
	eng_check_factorymode_fornand();
#endif

	set_vlog_priority();
	
	if (0 != eng_thread_create( &t1, eng_vlog_thread, NULL)){
		ENG_LOG("vlog thread start error");
	}

	if (0 != eng_thread_create( &t2, eng_vdiag_thread, NULL)){
		ENG_LOG("vdiag thread start error");
	}

	if (0 != eng_thread_create( &t3, eng_modemreset_thread, NULL)){
		ENG_LOG("vdiag thread start error");
	}

	if (0 != eng_thread_create( &t4, eng_sd_log, NULL)){
		ENG_LOG("sd log thread start error");
	}


	rc = eng_pcclient_init();

	if(rc == -1) {
		ENG_LOG("%s: init fail, exit\n",__func__);
		return -1;
	}

	if (0 != eng_thread_create( &t5, eng_atauto_thread, NULL)){
		ENG_LOG("atauto thread start error");
	}	

	eng_pcclient_hdlr(NULL);

	return 0;

}