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

📄 main.c

📁 1、基于韩国at2041芯片开发的Linux环境的DVR代码。 2、以原来代码进行了修改。 3、主要修改网络通讯出现异常问题处理 4、硬盘覆盖录像不起作用
💻 C
📖 第 1 页 / 共 3 页
字号:
	return 0;}#ifdef NVRAM_TEST	RETURN nvram_check_magic_num(SETUP_PARAM	*psp){	UNS16	ii, kk, jj;	UNS32	value;	value = get_nvram_para( offsetof(SETUP_PARAM, magic_num), sizeof(psp->magic_num) );	if (value != MPEG4_MAGICNUM) {		m_ERROR("MPEG4_MAGICNUM NOT Matched. \nSo, all parameter set according to DEFAULT data\n");				/* write magic number to NVRAM */		value = MPEG4_MAGICNUM;		set_nvram_para( offsetof(SETUP_PARAM, magic_num), sizeof(psp->magic_num), &value);		/*		 * GLOBAL PARAMETER		 */		/* format : '0' NTSC, '1' PAL, default is '0'   */		if (gp_state_thread->state_main.mode == PAL) {					value = PAL;		} else {			value = NTSC;		}		set_nvram_para( offsetof(SETUP_PARAM, gp.video_form), sizeof(psp->gp.video_form), &value );		/* resolution : '0' 720 x 480(576), '1' 360 x 240(288) */		value = CIF;		set_nvram_para( offsetof(SETUP_PARAM, gp.resolution), sizeof(psp->gp.resolution), &value );				/* 		 * ENCODER PARAMETER 		 */	    for (ii = 0; ii < MAX_CH_NUM; ii++) {			/* CONTINUE RECORD FLAG : '0' OFF, '1' ON, default is '1' */			value = 1;			set_nvram_para( offsetof(SETUP_PARAM, enc_ch[ii].flag_conti_rec), sizeof(psp->enc_ch[ii].flag_conti_rec), &value );			/* frame rate : 0 ~ 30 */			if (gp_state_thread->state_main.mode == PAL) {				value = MAX_PAL_FPS_LIST - 1;							} else {				value = MAX_NTSC_FPS_LIST - 1;			}			set_nvram_para( offsetof(SETUP_PARAM, enc_ch[ii].frame_rate), sizeof(psp->enc_ch[ii].frame_rate), &value );			/* CBR Q value : 0 ~ 4 ( 0.5M ~ 6.0M ) */			value = 2;			set_nvram_para( offsetof(SETUP_PARAM, enc_ch[ii].cbr_q), sizeof(psp->enc_ch[ii].cbr_q), &value );				/* MOTION FLAG : '0' OFF, '1' ON, default is '0' */			value = 0;			set_nvram_para( offsetof(SETUP_PARAM, enc_ch[ii].motion.flag), sizeof(psp->enc_ch[ii].motion.flag), &value );			/* MOTION SENSITIVITY : 0 ~ 4 */			value = 2;			set_nvram_para( offsetof(SETUP_PARAM, enc_ch[ii].motion.sensitivity), sizeof(psp->enc_ch[ii].motion.sensitivity), &value );			/* MOTION AREA */			value = 0;			for (kk = 0; kk < AT2041_MB_TABLE; kk ++) {				set_nvram_para( offsetof(SETUP_PARAM, enc_ch[ii].motion.area[kk]), sizeof(psp->enc_ch[ii].motion.area[kk]), &value );			}			/* SENSOR IN FLAG : '0' OFF, '1' ON, default is '0' */			value = 0;			set_nvram_para( offsetof(SETUP_PARAM, enc_ch[ii].sensor.flag_in), sizeof(psp->enc_ch[ii].sensor.flag_in), &value );			/* SENSOR IN NORMAL OPEN/CLOSE : '0' OPEN, '1' CLOSE, default is '1' */			value = 1;			set_nvram_para( offsetof(SETUP_PARAM, enc_ch[ii].sensor.flag_in_noc), sizeof(psp->enc_ch[ii].sensor.flag_in_noc), &value );			/* SENSOR OUT FLAG : '0' OFF, '1' ON, default is '0' */			value = 0;			set_nvram_para( offsetof(SETUP_PARAM, enc_ch[ii].sensor.flag_out), sizeof(psp->enc_ch[ii].sensor.flag_out), &value );			/* SENSOR OUT NORMAL OPEN/CLOSE : '0' OPEN, '1' CLOSE, default is '1' */			value = 1;			set_nvram_para( offsetof(SETUP_PARAM, enc_ch[ii].sensor.flag_out_noc), sizeof(psp->enc_ch[ii].sensor.flag_out_noc), &value );			/* SENSOR OUT DURATION : default is 5 sec */			value = 5;			set_nvram_para( offsetof(SETUP_PARAM, enc_ch[ii].sensor.flag_out_duration), sizeof(psp->enc_ch[ii].sensor.flag_out_duration), &value );			/* SCHEDULE FLAG : '0' OFF, '1' ON, default is '0' */			value = 0;			set_nvram_para( offsetof(SETUP_PARAM, enc_ch[ii].schedule.flag), sizeof(psp->enc_ch[ii].schedule.flag), &value );			/* SCHEDULE TIME : from->2004-01-01 00:00, to->2004-01-01 00:00 */			for (kk = 0; kk < MAX_DAY_OF_WEEK; kk ++) {				value = 2005 -1900;	// year				set_nvram_para( offsetof(SETUP_PARAM, enc_ch[ii].schedule.from_time[kk].tm_year), sizeof(psp->enc_ch[ii].schedule.from_time[kk].tm_year), &value );				value = 1 - 1;		// month				set_nvram_para( offsetof(SETUP_PARAM, enc_ch[ii].schedule.from_time[kk].tm_mon), sizeof(psp->enc_ch[ii].schedule.from_time[kk].tm_mon), &value );				value = 1;			// day				set_nvram_para( offsetof(SETUP_PARAM, enc_ch[ii].schedule.from_time[kk].tm_mday), sizeof(psp->enc_ch[ii].schedule.from_time[kk].tm_mday), &value );				value = 0;			// hour				set_nvram_para( offsetof(SETUP_PARAM, enc_ch[ii].schedule.from_time[kk].tm_hour), sizeof(psp->enc_ch[ii].schedule.from_time[kk].tm_hour), &value );				value = 0;			// minute				set_nvram_para( offsetof(SETUP_PARAM, enc_ch[ii].schedule.from_time[kk].tm_min), sizeof(psp->enc_ch[ii].schedule.from_time[kk].tm_min), &value );				value = 0;			// second				set_nvram_para( offsetof(SETUP_PARAM, enc_ch[ii].schedule.from_time[kk].tm_sec), sizeof(psp->enc_ch[ii].schedule.from_time[kk].tm_sec), &value );				value = 2005 -1900;	// year				set_nvram_para( offsetof(SETUP_PARAM, enc_ch[ii].schedule.to_time[kk].tm_year), sizeof(psp->enc_ch[ii].schedule.to_time[kk].tm_year), &value );				value = 1 - 1;		// month				set_nvram_para( offsetof(SETUP_PARAM, enc_ch[ii].schedule.to_time[kk].tm_mon), sizeof(psp->enc_ch[ii].schedule.to_time[kk].tm_mon), &value );				value = 1;			// day				set_nvram_para( offsetof(SETUP_PARAM, enc_ch[ii].schedule.to_time[kk].tm_mday), sizeof(psp->enc_ch[ii].schedule.to_time[kk].tm_mday), &value );				value = 0;			// hour				set_nvram_para( offsetof(SETUP_PARAM, enc_ch[ii].schedule.to_time[kk].tm_hour), sizeof(psp->enc_ch[ii].schedule.to_time[kk].tm_hour), &value );				value = 0;			// minute				set_nvram_para( offsetof(SETUP_PARAM, enc_ch[ii].schedule.to_time[kk].tm_min), sizeof(psp->enc_ch[ii].schedule.to_time[kk].tm_min), &value );				value = 0;			// second				set_nvram_para( offsetof(SETUP_PARAM, enc_ch[ii].schedule.to_time[kk].tm_sec), sizeof(psp->enc_ch[ii].schedule.to_time[kk].tm_sec), &value );			}    	}// pentamicro 2006.01.11		/* set MPEG4 type ( 0=JPEG, 1=MPEG1, 2=MPEG2, 3=H.263, 4=MPEG4 ) */		value = 4; 		set_nvram_para( offsetof(SETUP_PARAM, enc_attr.encoding_type), sizeof(psp->enc_attr.encoding_type), &value );		/* save for water marker attribute */		value = 0;		set_nvram_para( offsetof(SETUP_PARAM, enc_attr.wm.flag_wm), sizeof(psp->enc_attr.wm.flag_wm), &value );		value = 0;		set_nvram_para( offsetof(SETUP_PARAM, enc_attr.wm.strength), sizeof(psp->enc_attr.wm.strength), &value );		value = 0;		set_nvram_para( offsetof(SETUP_PARAM, enc_attr.wm.key), sizeof(psp->enc_attr.wm.key), &value );		/* 		 * DECODER PARAMETER 		 */		/* play_conti : '0' single file play, '1' continuous file play */		value = 1;		set_nvram_para( offsetof(SETUP_PARAM, dec.play_conti), sizeof(psp->dec.play_conti), &value );						/* 		 * SYSTEM PARAMETER 		 */		#if 1//big endian		/* network ip configuration : default 192.168.1.100 */		value = (192 & 0xff) << 24 | (168 & 0xff) << 16 | (1 & 0xff) << 8 | (100 & 0xff);  		set_nvram_para( offsetof(SETUP_PARAM, sys.network.ipaddr),sizeof(psp->sys.network.ipaddr), &value );		/* network netmask configuration : default 255.255.255.0 */		value = (255 & 0xff) << 24 | (255 & 0xff) << 16 | (255 & 0xff) << 8 | (0 & 0xff);  		set_nvram_para( offsetof(SETUP_PARAM, sys.network.netmask), sizeof(psp->sys.network.netmask), &value );		/* network gateway configuration : default 192.168.1.1 */		value = (192 & 0xff) << 24 | (168 & 0xff) << 16 | (1 & 0xff) << 8 | (1 & 0xff);  		set_nvram_para( offsetof(SETUP_PARAM, sys.network.gateway), sizeof(psp->sys.network.gateway), &value );#else//little endian		/* network ip configuration : default 192.168.1.100 */		value = (100 & 0xff) << 24 | (1 & 0xff) << 16 | (168 & 0xff) << 8 | (192 & 0xff);  		set_nvram_para( offsetof(SETUP_PARAM, sys.network.ipaddr),sizeof(psp->sys.network.ipaddr), &value );		/* network netmask configuration : default 255.255.255.0 */		value = (0 & 0xff) << 24 | (255 & 0xff) << 16 | (255 & 0xff) << 8 | (255 & 0xff);  		set_nvram_para( offsetof(SETUP_PARAM, sys.network.netmask), sizeof(psp->sys.network.netmask), &value );		/* network gateway configuration : default 192.168.1.1 */		value = (1 & 0xff) << 24 | (1 & 0xff) << 16 | (168 & 0xff) << 8 | (192 & 0xff);  		set_nvram_para( offsetof(SETUP_PARAM, sys.network.gateway), sizeof(psp->sys.network.gateway), &value );#endif				/* password configuration : default 0000 */		for (ii = 0; ii < USER_NUM; ii ++) {			value = ii;			set_nvram_para( offsetof(SETUP_PARAM, sys.password[ii].id), sizeof(psp->sys.password[ii].id), &value );			value = 0;			set_nvram_para( offsetof(SETUP_PARAM, sys.password[ii].value), sizeof(psp->sys.password[ii].value), &value );		}		/* hdd management configuration : default 10 min( cut time ) */		value = 3;  		set_nvram_para( offsetof(SETUP_PARAM, sys.disk.slice_time), sizeof(psp->sys.disk.slice_time), &value );	   	 /* hdd management configuration : default overwrite true ( continuous save )  */		value = TRUE;		set_nvram_para( offsetof(SETUP_PARAM, sys.disk.over_wt_flag), sizeof(psp->sys.disk.over_wt_flag), &value );		gp_state_thread->state_diskm.state = ENOUGH;        	/* camera configuration : default brightness=0, contrast=0, color=0 */        	for(ii = 0; ii < MAX_CH_NUM; ii ++) {			/* The resolution is 0.2IRE / step. ( -128 ~ +128 ) */     			value = 0;      			set_nvram_para( offsetof(SETUP_PARAM, sys.camera[ii].brightness), sizeof(psp->sys.camera[ii].brightness), &value );			/* The resolution is 0.8% / step. ( -128 ~ +128 ) */			value = 0;      			set_nvram_para( offsetof(SETUP_PARAM, sys.camera[ii].contrast),   sizeof(psp->sys.camera[ii].contrast), &value );			/* The resolution is 1.4 / step. ( -128 ~ +128 ) */     			value = 0;      			set_nvram_para( offsetof(SETUP_PARAM, sys.camera[ii].color),      sizeof(psp->sys.camera[ii].color), &value );        	}        	/* ptz configuration : default cam_vendor=scc-641, cam_speed=3, cam_ch=1 */		value = 4;  		set_nvram_para( offsetof(SETUP_PARAM, sys.ptz.cam_vendor), sizeof(psp->sys.ptz.cam_vendor), &value );        		value = 2;  		set_nvram_para( offsetof(SETUP_PARAM, sys.ptz.cam_speed),     sizeof(psp->sys.ptz.cam_speed), &value );        		value = 0;  		set_nvram_para( offsetof(SETUP_PARAM, sys.ptz.cam_ch),     sizeof(psp->sys.ptz.cam_ch), &value );  	}	return SUCCESS;}#elseRETURN nvram_check_magic_num(SETUP_PARAM	*psp){	UNS16	ii, jj, kk;	UNS32	value;	/*	 * GLOBAL PARAMETER	 */	/* format : '0' NTSC, '1' PAL, default is '0'   */	if (gp_state_thread->state_main.mode == PAL) {				psp->gp.video_form = PAL;	} else {		psp->gp.video_form = NTSC;	}	/* resolution : '0' 720 x 480(576), '1' 360 x 240(288) */	psp->gp.resolution = CIF;	/* 	 * ENCODER PARAMETER 	 */    for (ii = 0; ii < MAX_CH_NUM; ii++) {		/* CONTINUE RECORD FLAG : '0' OFF, '1' ON, default is '1' */		psp->enc_ch[ii].flag_conti_rec = 1;		/* frame rate : 0 ~ 30 */		if (gp_state_thread->state_main.mode == PAL) {					psp->enc_ch[ii].frame_rate = MAX_PAL_FPS_LIST - 1;		} else {				psp->enc_ch[ii].frame_rate = MAX_NTSC_FPS_LIST - 1;		}		/* CBR Q value : 0 ~ 4 ( 0.5M ~ 6.0M ) */		psp->enc_ch[ii].cbr_q = 2;		/* MOTION FLAG : '0' OFF, '1' ON, default is '0' */		psp->enc_ch[ii].motion.flag = 0;		/* MOTION SENSITIVITY : 0 ~ 4 */		psp->enc_ch[ii].motion.sensitivity = 2;				/* MOTION AREA */		for (kk = 0; kk < AT2041_MB_TABLE; kk ++) {			psp->enc_ch[ii].motion.area[kk] = 0x00;		}		/* SENSOR IN FLAG : '0' OFF, '1' ON, default is '0' */		psp->enc_ch[ii].sensor.flag_in = 0;		psp->enc_ch[ii].sensor.flag_in_noc = 1; /* default is normal close */		/* SENSOR OUT FLAG : '0' OFF, '1' ON, default is '0' */		psp->enc_ch[ii].sensor.flag_out = 0;				psp->enc_ch[ii].sensor.flag_out_noc = 1;/* default is normal close */		psp->enc_ch[ii].sensor.flag_out_duration = 5;		/* SCHEDULE FLAG : '0' OFF, '1' ON, default is '0' */		psp->enc_ch[ii].schedule.flag = 0;		/* SCHEDULE TIME : from->2004-01-01 00:00, to->2004-01-01 00:00 */		for (kk = 0; kk < MAX_DAY_OF_WEEK; kk ++) {			psp->enc_ch[ii].schedule.from_time[kk].tm_year = 2005 -1900;	// year			psp->enc_ch[ii].schedule.from_time[kk].tm_mon = 1 - 1;			// month			psp->enc_ch[ii].schedule.from_time[kk].tm_mday = 1;				// day			psp->enc_ch[ii].schedule.from_time[kk].tm_hour = 0;				// hour			psp->enc_ch[ii].schedule.from_time[kk].tm_min = 0;				// minute			psp->enc_ch[ii].schedule.from_time[kk].tm_sec = 0;				// second			psp->enc_ch[ii].schedule.to_time[kk].tm_year = 2005 -1900;		// year			psp->enc_ch[ii].schedule.to_time[kk].tm_mon = 1 - 1;			// month			psp->enc_ch[ii].schedule.to_time[kk].tm_mday = 1;				// day			psp->enc_ch[ii].schedule.to_time[kk].tm_hour = 0;				// hour			psp->enc_ch[ii].schedule.to_time[kk].tm_min = 0;				// minute			psp->enc_ch[ii].schedule.to_time[kk].tm_sec = 0;				// second		}		   	}// pentamicro 2006.01.11	/* set MPEG4 type ( 0=JPEG, 1=MPEG1, 2=MPEG2, 3=H.263, 4=MPEG4 ) */	psp->enc_attr.encoding_type = 4;	/* save for water marker attribute */	psp->enc_attr.wm.flag_wm = 0;	psp->enc_attr.wm.strength = 0;	psp->enc_attr.wm.key = 0;			/* 	 * DECODER PARAMETER 	 */	/* play_conti : '0' single file play, '1' continuous file play */	psp->dec.play_conti = 1;		/* 	 * SYSTEM PARAMETER 	 */			/* network ip configuration : default 192.168.1.100 */	psp->sys.network.ipaddr = (192 & 0xff) << 24 | (168 & 0xff) << 16 | (1 & 0xff) << 8 | (100 & 0xff);  	/* network netmask configuration : default 255.255.255.0 */	psp->sys.network.netmask = (255 & 0xff) << 24 | (255 & 0xff) << 16 | (255 & 0xff) << 8 | (0 & 0xff); 	/* network gateway configuration : default 192.168.1.1 */	psp->sys.network.gateway = (192 & 0xff) << 24 | (168 & 0xff) << 16 | (1 & 0xff) << 8 | (1 & 0xff);  	/* password configuration : default 0000 */	for (ii = 0; ii < USER_NUM; ii ++) {		psp->sys.password[ii].id = ii;		psp->sys.password[ii].value = 0x0000;	}	/* hdd management configuration : default 10 min( cut time ) */	psp->sys.disk.slice_time = 3;	/* hdd management configuration : default overwrite true ( continuous save )  */	psp->sys.disk.over_wt_flag = TRUE;	gp_state_thread->state_diskm.state = ENOUGH;	/* camera configuration : default brightness=0, contrast=0, color=0 */	for(ii = 0; ii < MAX_CH_NUM; ii ++) {		/* The resolution is 0.2IRE / step. ( -128 ~ +128 ) */		psp->sys.camera[ii].brightness = 0;		tw2834_write_reg(TW2834_PAGE0, 0x12 + 0x40 * ii, (UNS8)(psp->sys.camera[ii].brightness+128));  // brightness				/* The resolution is 0.8% / step. ( -128 ~ +128 ) */		psp->sys.camera[ii].contrast = 0;		tw2834_write_reg(TW2834_PAGE0, 0x11 + 0x40 * ii, (UNS8)(psp->sys.camera[ii].contrast+128));  // contrast				/* The resolution is 1.4 / step. ( -128 ~ +128 ) */		psp->sys.camera[ii].color = 0;		tw2834_write_reg(TW2834_PAGE0, 0x0f + 0x40 * ii, (UNS8)(psp->sys.camera[ii].color+128));  // color			}	/* ptz configuration : default cam_vendor=scc-641, cam_speed=3, cam_ch=1 */	psp->sys.ptz.cam_vendor = 4;	psp->sys.ptz.cam_speed = 2;	psp->sys.ptz.cam_ch = 0;	return SUCCESS;}#endifRETURN nvram_load_setup_value(SETUP_PARAM	*psp){	UNS32	ii, kk, jj;	UNS32	value;	/*	 * GLOBAL PARAMETER	 */	psp->gp.video_form = gp_state_thread->state_main.mode;	/* resolution : '0' 720 x 480(576), '1' 360 x 240(288) */	psp->gp.resolution = get_nvram_para( offsetof(SETUP_PARAM, gp.resolution), sizeof(psp->gp.resolution) );			/* 	 * ENCODER PARAMETER 	 */    for (ii = 0; ii < MAX_CH_NUM; ii++) {		/* CONTINUE RECORD FLAG : '0' OFF, '1' ON, default is '1' */		psp->enc_ch[ii].flag_conti_rec = get_nvram_para( offsetof(SETUP_PARAM, enc_ch[ii].flag_conti_rec), sizeof(psp->enc_ch[ii].flag_conti_rec) );    			/* frame rate : 0 ~ 30 */		psp->enc_ch[ii].frame_rate = get_nvram_para( offsetof(SETUP_PARAM, enc_ch[ii].frame_rate), sizeof(psp->enc_ch[ii].frame_rate) );#if 1/* xchannel add ( when the NTSC(30fps) -> PAL(25fps) updating */		if(psp->gp.video_form == PAL) {			if(psp->enc_ch[ii].frame_rate > (MAX_PAL_FPS_LIST - 1)) {				psp->enc_ch[ii].frame_rate = MAX_PAL_FPS_LIST - 1;				set_nvram_para( offsetof(SETUP_PARAM, enc_ch[ii].frame_rate), sizeof(psp->enc_ch[ii].frame_rate), &psp->enc_ch[ii].frame_rate );			}		}			#endif		/* CBR Q value : 0 ~ 4 ( 0.5M ~ 6.0M ) */		psp->enc_ch[ii].cbr_q = get_nvram_para( offsetof(SETUP_PARAM, enc_ch[ii].cbr_q), sizeof(psp->enc_ch[ii].cbr_q) );			/* MOTION FLAG : '0' OFF, '1' ON, default is '0' */		psp->enc_ch[ii].motion.flag = get_nvram_para( offsetof(SETUP_PARAM, enc_ch[ii].motion.flag), sizeof(psp->enc_ch[ii].motion.flag) );		/* MOTION SENSITIVITY : 0 ~ 4 */		psp->enc_ch[ii].motion.sensitivity = get_nvram_para( offsetof(SETUP_PARAM, enc_ch[ii].motion.sensitivity), sizeof(psp->enc_ch[ii].motion.sensitivity) );				/* MOTION AREA */		for (kk = 0; kk < AT2041_MB_TABLE; kk ++) {			psp->enc_ch[ii].motion.area[kk] = get_nvram_para( offsetof(SETUP_PARAM, enc_ch[ii].motion.area[kk]), sizeof(psp->enc_ch[ii].motion.area[kk]) );		}			/* SENSOR IN FLAG : '0' OFF, '1' ON, default is '0' */		psp->enc_ch[ii].sensor.flag_in = get_nvram_para( offsetof(SETUP_PARAM, enc_ch[ii].sensor.flag_in), sizeof(psp->enc_ch[ii].sensor.flag_in) );		psp->enc_ch[ii].sensor.flag_in_noc = get_nvram_para( offsetof(SETUP_PARAM, enc_ch[ii].sensor.flag_in_noc), sizeof(psp->enc_ch[ii].sensor.flag_in_noc) );		/* SENSOR OUT FLAG : '0' OFF, '1' ON, default is '0' */		psp->enc_ch[ii].sensor.flag_out = get_nvram_para( offsetof(SETUP_PARAM, enc_ch[ii].sensor.flag_out), sizeof(psp->enc_ch[ii].sensor.flag_out) );				psp->enc_ch[ii].sensor.flag_out_noc = get_nvram_para( offsetof(SETUP_PARAM, enc_ch[ii].sensor.flag_out_noc), sizeof(psp->enc_ch[ii].sensor.flag_out_noc) );		

⌨️ 快捷键说明

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