⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 state.c~

📁 cam ui application for linux
💻 C~
📖 第 1 页 / 共 4 页
字号:
            }
            memset(aCmdBuf,0,sizeof(aCmdBuf));
            
            _itoa (Day_Chg , aCmdBuf);
            printf("set_DAY = %d\n",Day_Chg);
            printf("DAY_aCmdBuf %s\n",aCmdBuf);
            PANEL_Output (LCM_LINE_2, aCmdBuf);
            dateBuffer[7]=aCmdBuf[0];
            dateBuffer[8]=aCmdBuf[1];
            break;

        case STATE_CHG_DAY:
            if (Day_Chg>30)
                Day_Chg=1;
            else{
                 Day_Chg++;
                
            }
            break;
            
        case STATE_SET_TIME:
            PANEL_ClearDisplay (LCM_LINE_2);
            iTimeDisplayMode = TIME_DISPLAY_TIME_HMS;
            PANEL_Output (LCM_LINE_1, "  Time");
            PANEL_ShowTime ();
            hour_state=0;
            if (day_state==1){
            	 Hour_Chg=tmTimeNow.tm_hour;
            	 _itoa (Hour_Chg , TimeB);
            	 dateBuffer[9]=TimeB[0];
            	 dateBuffer[10]=TimeB[1];
            	 Min_Chg=tmTimeNow.tm_min;
            	 _itoa (Min_Chg , TimeB);
            	 dateBuffer[11]=TimeB[0];
            	 dateBuffer[12]=TimeB[1];
            	 Sec_Chg=tmTimeNow.tm_sec;
            	 _itoa (Sec_Chg , TimeB);
            	 dateBuffer[18]=TimeB[0];
            	 dateBuffer[19]=TimeB[1];
            	 system(dateBuffer);
            }
            day_state=0;
            break;
        case STATE_SET_HOUR: 
		PANEL_Output (LCM_LINE_1, "Hour Set");
            if (hour_state==0){
            	Hour_Chg = (tmTimeNow.tm_hour);
            	hour_state=1;
            }
            memset(aCmdBuf,0,sizeof(aCmdBuf));
            _itoa (Hour_Chg , aCmdBuf);
            printf("set_hour = %d\n",Hour_Chg );
            printf("Hour_aCmdBuf %s\n",aCmdBuf);
            PANEL_Output (LCM_LINE_2, aCmdBuf);
            min_state=0;
            dateBuffer[9]=aCmdBuf[0];
            dateBuffer[10]=aCmdBuf[1];
            break;

        case STATE_CHG_HOUR:
            if (Hour_Chg>22)
                Hour_Chg=1;
            else{
                 Hour_Chg++;
                
            }
            break;
            
        case STATE_SET_MIN: 
		PANEL_Output (LCM_LINE_1, "Min Set");
            if (min_state==0){
            	Min_Chg = (tmTimeNow.tm_min);
            	min_state=1;
            }
            memset(aCmdBuf,0,sizeof(aCmdBuf));
            _itoa (Min_Chg , aCmdBuf);
            printf("set_min = %d\n",Min_Chg );
            printf("Min_aCmdBuf %s\n",aCmdBuf);
            PANEL_Output (LCM_LINE_2, aCmdBuf);
            sec_state=0;
            dateBuffer[11]=aCmdBuf[0];
            dateBuffer[12]=aCmdBuf[1];
            break;

        case STATE_CHG_MIN:
            if (Min_Chg>58)
                Min_Chg=0;
            else{
                 Min_Chg++;
                
            }
            break;
            
       case STATE_SET_SEC: 
		PANEL_Output (LCM_LINE_1, "Sec Set");
            if (sec_state==0){
            	Sec_Chg = (tmTimeNow.tm_sec);
            	sec_state=1;
            }
            memset(aCmdBuf,0,sizeof(aCmdBuf));
            _itoa (Sec_Chg , aCmdBuf);
            printf("set_sec = %d\n",Sec_Chg );
            printf("Sec_aCmdBuf %s\n",aCmdBuf);
            PANEL_Output (LCM_LINE_2, aCmdBuf);
            dateBuffer[18]=aCmdBuf[0];
            dateBuffer[19]=aCmdBuf[1];
            break;
            
        case STATE_CHG_SEC:
           if (Sec_Chg>58)
                Sec_Chg=0;
            else{
                 Sec_Chg++;
                
            }
            break;

        case STATE_SET_FMT_SD:
            PANEL_Output (LCM_LINE_1, "Fmt SD?");
            PANEL_Output (LCM_LINE_2, " K2:Yes");
            if(sec_state==1){
            system(dateBuffer);
            sec_state=0;
            }
            break;

        case STATE_FMT_SD:
            iSDStatus = UTL_CheckSDCard ();
            if (iSDStatus == SD_NO_SD)
            {
                iErrCode = ERR_SD_NO_SD;
                break;
            }
            if (iSDStatus == SD_READ_ONLY)
            {
                iErrCode = ERR_SD_READ_ONLY;
                break;
            }
            if (system ("mkdosfs /dev/mmcblk0p1"))
                iErrCode = ERR_SD_FMT_FAIL;       
            break;

        case STATE_SET_UPG:
            PANEL_Output (LCM_LINE_1, "Upg FW?");
            PANEL_Output (LCM_LINE_2, " K2:Yes");
            break;

        case STATE_UPG:
            if (UTL_CheckSDCard () == SD_NO_SD)
            {
                iErrCode = ERR_SD_NO_SD;
                break;
            }
            if (UTL_MountSD ())
            {
                iErrCode = ERR_SD_MOUNT_FAIL;
                break;
            }
            if (access ("/mnt/uzImage.bin", 0) || access ("/mnt/cramfs.bin", 0))
            {
                iErrCode = ERR_UPG_NO_NEW_FW;
                break;
            }

            PANEL_Output (LCM_LINE_1, " UPG FW");
            PANEL_Output (LCM_LINE_2, " Kernel");
            system ("cp /mnt/uzImage.bin /var");
            sync ();
            system ("systool upkernel /var/uzImage.bin");
            system ("rm /var/uzImage.bin");
            PANEL_Output (LCM_LINE_1, " UPG FW");
            PANEL_Output (LCM_LINE_2, " RootFS");
            system ("cp /mnt/cramfs.bin /var");
            sync ();
            system ("systool upfs /var/cramfs.bin");
            break;

        case STATE_REBOOT:
            PANEL_Output (LCM_LINE_1, " Reboot");
            PANEL_Output (LCM_LINE_2, " System");
            UTL_CloseHIU ();
            UTL_CloseGPIO ();
            system ("reboot");
            break;
            
        case STATE_SET_IMGDISP:
        		  PANEL_Output (LCM_LINE_1, " IMGDISP");
            strcpy (aCmdBuf, aImageDisp[iMAGE]);
            aCmdBuf[0] = 0x7e;   // Show Arrow
            PANEL_Output (LCM_LINE_2, aCmdBuf);
            break;

        case STATE_CHG_IMGDISP:
            if (iMAGE == IMAGE_END)
                iMAGE = IMAGE_START;
            else
                iMAGE ++;
            break;

        default:
            break;
    }
    iStateNow = iStateNext;
    iStateNext = STATE_NO_CHANGE;encode_to_file(aCmdBuf, 0);
    return 0;
}

int _ForkENCProcess (void)
{
		iRecording=1; 
    if((ENCpid = vfork()) < 0)
    {
        printf("fork fail\n");
    }
    else if(ENCpid == 0)
    {
    		system("testapp3 set script /var/streamer/qlcpgTest2m.sh");
	       sprintf (aCmdBuf, "/mnt/%s_%02d%02d%02d%02d.%s", aFileType[iFileType], tmTimeNow.tm_mon + 1, tmTimeNow.tm_mday, tmTimeNow.tm_hour, tmTimeNow.tm_min, aExtNmae[iFileType]);
		execlp("testapp3", "testapp3", "encodev4", aCmdBuf, "0", (char *)0);
		sleep(1);
    }
}
	

void schedule_rec(void){
	int iStatus;
  
  if( !sch_status )    // Added by KCHong 
        return;
		     if (((TimeNow - time_sch) >= (default_rec_time*60)) && (SC_Value) ){
			       SC_Value=0;
			       sch_status=SCH_STOP;        
           
			       iStateNext = STATE_STANDBY;
		     }
		     if( (tmTimeNow.tm_mday==default_sch_day) && (tmTimeNow.tm_hour==default_sch_hour) && (tmTimeNow.tm_min==default_sch_min) && (!SC_Value) ){
		  	     //time(&temps);
		  	     printf("default_rec_time %d \n",default_rec_time);
			       time_sch=TimeNow;
			       SC_Value=1;
			       //sch_status=SCH_STOP;
			       _ForkENCProcess ();
            sprintf (aCmdBuf, "<%s_%02d%02d%02d%02d.%s>", aFileType[iFileType], tmTimeNow.tm_mon + 1, tmTimeNow.tm_mday, tmTimeNow.tm_hour, tmTimeNow.tm_min, aExtNmae[iFileType]);
            PANEL_Output (LCM_LINE_1, aCmdBuf);
		     }
			
	   //}if
	return;
}

void MD_RECFUN(void){
	if(!MD_Status)    // Added by RoberLo 
        return;
	if (mcontrol.md_mode != MD_OFF)
		{
			if(mcontrol.md_state == MD_STOP)
			{
				start_motion_detection_vi();
				mcontrol.md_state = MD_START;
				MD_Value=1;
			}
			if (get_motion_detection_vi())
			{
				printf("Get md message\n");
				MD_Value = 0;
				mcontrol.md_det = 1;
				//evt = EVT_ENCODE;
				
				system("testapp3 set vid_stream_type ps");
				stop_motion_detection_vi();
				_ForkENCProcess();
				mcontrol.md_state = MD_STOP;
				
			}
		}
		else
		{
			if(MD_Result=0){
				if (mcontrol.md_state != MD_STOP)
				{
					stop_motion_detection_vi();
					mcontrol.md_state = MD_STOP;
					system("testapp3 set vid_stream_type ps");
				}
			}
			mcontrol.md_det = 0;
		}
}

////////////Motion detection////////////////////
//rober
void MD_Service(){
if(!MD_Status)    // Added by RoberLo 
        return;
      if (((TimeNow - time_MD) >= ONE_MINUTE )  && (MD_Value)){
		iStateNext = STATE_STANDBY;
      		PANEL_Output (LCM_LINE_1, "Rec Stop");
       	MD_Value = 0;
       	 iRecording=0;
       	 //bCtrlCReceived=FALSE;
       	 start_motion_detection_vi();
       }
        // one minutes unit
  		if (!MD_Value){ // MD enable
  				//bCtrlCReceived=TRUE;
  				if(get_motion_detection_vi()){
					MD_Value = 1;
					stop_motion_detection_vi();
					PANEL_Output (LCM_LINE_1, "Motion  Start...   " );
					_ForkENCProcess ();
        				sprintf (aCmdBuf, "<%s_%02d%02d%02d%02d.%s>", aFileType[iFileType], tmTimeNow.tm_mon + 1, tmTimeNow.tm_mday, tmTimeNow.tm_hour,tmTimeNow.tm_min, aExtNmae[iFileType]);
					
        				PANEL_Output (LCM_LINE_2, aCmdBuf);
        				mcontrol.md_det = 0;
			  		time_MD=TimeNow;//value of time
  				}
  			
		 }//if
}


/////////////////////////////////////////////////////////////////////////////

void nv_sch_get(void){
		int m=0;
		value_time = nvram_get("NV_SCH_DAY");
		printf("value_day %s \n",value_time);
		SchBuffer[4]=value_time[0];
		SchBuffer[5]=value_time[1];
		default_sch_day = atoi(value_time);
		//sch_save_day=m;
		printf("default_sch_day=%d\n",default_sch_day);
	
		value_time = nvram_get("NV_SCH_HOUR");
		printf("value_hour %s \n",value_time);
		SchBuffer[12]=value_time[0];
		SchBuffer[13]=value_time[1];
		default_sch_hour = atoi(value_time);
		printf("default_sch_hour=%d\n",default_sch_hour);
		
		value_time = nvram_get("NV_SCH_MIN");
		printf("value_min %s \n",value_time);
		SchBuffer[19]=value_time[0];
		SchBuffer[20]=value_time[1];
		default_sch_min = atoi(value_time);
		printf("default_sch_min=%d\n",default_sch_min);
		
		value_time = nvram_get("NV_REC_TIME");
		printf("value_day %d \n",value_time);
		Rec_Buffer[0]=value_time[0];
		Rec_Buffer[1]=value_time[1];
		Rec_Buffer[2]=value_time[2];
		default_rec_time = atoi(value_time);
		printf("default_rec_time=%d\n",default_rec_time);
		
		
		value_time = nvram_get("BITRATE_STATUS");
		printf("BITRATE %d \n",value_time);		
		Rec_Buffer[0]=value_time[0];
		iBitRate = atoi(value_time);
		printf("iBitRate=%d\n",iBitRate);
		
		memset(value_time,0,sizeof(value_time));
		memset(Rec_Buffer,0,sizeof(Rec_Buffer));
		value_time = nvram_get("FRAMERATE_STATUS");
		printf("FrameRate %d \n",value_time);
		memset(Rec_Buffer,0,sizeof(Rec_Buffer));
		Rec_Buffer[0]=value_time[0];
		iFrameRate = atoi(value_time);
		printf("iBitRate=%d\n",iBitRate);
}


/////////////////////////freeMb///////////////////////////////////


void getDeviceFreeMb(char *wkDirPtr){
	int iStatus;
    if(!iRecording)    // Added by KCHong 
        return;
      if ((TimeNow - timep_save_FreeMb) >= FIVE_SECOND ){
		  
               timep_save_FreeMb= TimeNow;
               
					if ( (statusVfs=statvfs(wkDirPtr,pStatVfs8)) <0){    //statvfs failed
							fprintf(stdout,"statvfs failed %d ! \n",statusVfs);
							freeMb = 0;
							goto getDeviceFreeMbX;
					}
					freeMb =pStatVfs8->f_bavail *(pStatVfs8->f_bsize/1000);
					freeMb /=1000;     // ==> Mb
					getDeviceFreeMbX:
					printf("FreeMB=(%dMB,%d)!\n",freeMb,pStatVfs8->f_bsize);
					if (freeMb<=5){
							/*if(!kill(ENCpid,2))
            	{
              	  ENCpid = wait(&iStatus) ;
                	if ( ENCpid == -1 )
                  	  printf("\n Wait Error \n");
                	else if ( !iStatus )
                  	  printf("\n Child %d terminated normall\n", ENCpid);
                	else
                  	  printf("\n Child terminated failed!\n");
            	}
            	PANEL_Output (LCM_LINE_1, "Saving");
            	PANEL_Output (LCM_LINE_2, " File...");
            	sync();
            	UTL_UnMountSD ();
			       	usleep(100);*/
			       	iRecording=0; 
							PANEL_Output (LCM_LINE_1, "Memory ...");
							PANEL_Output (LCM_LINE_2, " Full.....");
							sleep(1);
							iStateNext = STATE_STANDBY;
					}
					//ret freeMb: Dev free space in MB
			}//if
	return;
}

//mctest.c
/*int encode_to_file(char *file, int time)
{
	int err = 0;
#if 1
	err = EncodeAndStreamv4(file, time, 0);					
	sync();
#else
	char cmd[64];
	if (time != 0)
		sprintf(cmd, "testapp3 -d0 encodev4 %s 0 0 %d", file, time);
	else
		sprintf(cmd, "testapp3 -d0 encodev4 %s 0 0", file);
	system(cmd);					
	sync();
#endif
	return err;
}*/

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -