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

📄 pthread_setup.c

📁 1、基于韩国at2041芯片开发的Linux环境的DVR代码。 2、以原来代码进行了修改。 3、主要修改网络通讯出现异常问题处理 4、硬盘覆盖录像不起作用
💻 C
📖 第 1 页 / 共 5 页
字号:
				strcpy(mft[VALUE_WT_FLAG].str, temp);								sprintf(temp, "%2d", pso->param->enc_attr.wm.strength&0x07);				strcpy(mft[ii+VALUE_WT_STR].str, temp);								sprintf(temp, "%2d", pso->param->enc_attr.wm.key&0x0f);				strcpy(mft[ii+VALUE_WT_KEY].str, temp);								location_cur = &setup_menu_active[pso->cur_id];				location_cur->start = pso->cur_loc;					pso->prev_id = pso->cur_id;								pso->cur_id = SETUP_WATERMARK_SETUP; 				pso->create_menu = 1;			} else if (pso->cur_loc == VALUE_MD_SET) {				mft = setup_menu_font[SETUP_MOTION_SETUP];									for (ii = 0; ii < MAX_CH_NUM; ii++) {					sprintf(temp, "%s", (pso->param->enc_ch[ii].motion.flag&0x01)? " On": "Off");					strcpy(mft[ii+VALUE_MDF_CH1].str, temp);									sprintf(temp, "%2d", pso->param->enc_ch[ii].motion.sensitivity & 0x0f);					strcpy(mft[ii+VALUE_MDS_CH1].str, temp);								}								location_cur = &setup_menu_active[pso->cur_id];				location_cur->start = pso->cur_loc;					pso->prev_id = pso->cur_id;								pso->cur_id = SETUP_MOTION_SETUP; 				pso->create_menu = 1;			} else if (pso->cur_loc == VALUE_SIOS_SET) {				mft = setup_menu_font[SETUP_SENSOR_SETUP];									for (ii = 0; ii < MAX_CH_NUM; ii++) {					sprintf(temp, "%s", (pso->param->enc_ch[ii].sensor.flag_in&0x01)? " On": "Off");					strcpy(mft[ii+4].str, temp);									sprintf(temp, "%s", (pso->param->enc_ch[ii].sensor.flag_in_noc&0x01)? "N.C": "N.O");					strcpy(mft[ii+9].str, temp);									sprintf(temp, "%s", (pso->param->enc_ch[ii].sensor.flag_out&0x01)? " On": "Off");					strcpy(mft[ii+15].str, temp);									sprintf(temp, "%s", (pso->param->enc_ch[ii].sensor.flag_out_noc&0x01)? "N.C": "N.O");					strcpy(mft[ii+20].str, temp);									sprintf(temp, "%02d", pso->param->enc_ch[ii].sensor.flag_out_duration&0x3f);					strcpy(mft[ii+25].str, temp);								}								location_cur = &setup_menu_active[pso->cur_id];				location_cur->start = pso->cur_loc;					pso->prev_id = pso->cur_id;								pso->cur_id = SETUP_SENSOR_SETUP; 				pso->create_menu = 1;			} else if (pso->cur_loc >= VALUE_SF_CH1 && pso->cur_loc <= VALUE_SF_CH4) {				pso->cur_ch = pso->cur_loc - VALUE_SF_CH1;										if (pso->param->enc_ch[pso->cur_ch].schedule.flag == 0) {					pso->param->enc_ch[pso->cur_ch].schedule.flag = 1;					strcpy(mft[pso->cur_loc].str, " On");				} else {					pso->param->enc_ch[pso->cur_ch].schedule.flag = 0;					strcpy(mft[pso->cur_loc].str, "Off");				}				pso->osd_loc = pso->cur_loc;				mft[pso->osd_loc].color = YELLOW;				mft[pso->osd_loc].attribute = BLINK;								setup_update_osd(pso);									} else if (pso->cur_loc >= VALUE_SS_CH1 && pso->cur_loc <= VALUE_SS_CH4) {				pso->cur_ch = pso->cur_loc - VALUE_SS_CH1;								// channel initial				mft = setup_menu_font[SETUP_SCHEDULE_SETUP];					// pentamicro 2006.01.11				sprintf(temp, "%1d", 1 + pso->cur_ch);				strcpy(mft[1].str, temp);													for (ii = 31; ii < 58; ii += 4) {					sprintf(temp, "%02d", pso->param->enc_ch[pso->cur_ch].schedule.from_time[(ii - 31)/4].tm_hour);					strcpy(mft[ii].str, temp);									sprintf(temp, "%02d", pso->param->enc_ch[pso->cur_ch].schedule.from_time[(ii - 31)/4].tm_min);					strcpy(mft[ii + 1].str, temp);								sprintf(temp, "%02d", pso->param->enc_ch[pso->cur_ch].schedule.to_time[(ii - 31)/4].tm_hour);					strcpy(mft[ii + 2].str, temp);								sprintf(temp, "%02d", pso->param->enc_ch[pso->cur_ch].schedule.to_time[(ii - 31)/4].tm_min);					strcpy(mft[ii + 3].str, temp);				}								location_cur = &setup_menu_active[pso->cur_id];				location_cur->start = pso->cur_loc;					pso->prev_id = pso->cur_id;								pso->cur_id = SETUP_SCHEDULE_SETUP; 				pso->create_menu = 1;													}			break;		case SUB_MINUS :				/* save encoder parameter to nvram */			save_enc_param(pso->param);						/* return to start position */						location_cur = &setup_menu_active[pso->cur_id];			location_cur->start = 3;						pso->cur_id = SETUP_MAIN;				pso->next_id = SETUP_ENCODER_PARAM;							pso->create_menu = 1;								break;		default :			break;	}	return SUCCESS;}RETURN setup_system_param(SETUP_OBJECT *pso){	UNS16	ii, jj;	UNS16	value_u16;	S8		temp[8];	UNS8	r_data[MAX_CH_NUM];	time_t			get_time;			PTHREAD_BUF		signal;		MENU_FONT_t 	*mft;		MENU_ACTIVE_ITEM_t	*location_cur; 		pso->param = gp_setup_param;	switch (pso->sig_value) {		case UP :			if (pso->cur_loc >= 2) {				setup_select_menu(pso, -1);						}			break;		case DOWN :			if (pso->cur_loc <= 6) {				setup_select_menu(pso, 1);						}			break;		case SEL :							if (pso->cur_loc == 1) {				pso->next_id = SETUP_SP_TIME;				/* get current time */				time(&get_time);				memcpy(&pso->cur_time, localtime(&get_time), sizeof(struct tm));				mft = setup_menu_font[pso->next_id];										sprintf(temp, "%04d", pso->cur_time.tm_year + 1900);				strcpy(mft[1].str, temp);										sprintf(temp, "%02d", pso->cur_time.tm_mon + 1);				strcpy(mft[3].str, temp);										sprintf(temp, "%02d", pso->cur_time.tm_mday);				strcpy(mft[5].str, temp);										sprintf(temp, "%02d", pso->cur_time.tm_hour);				strcpy(mft[6].str, temp);										sprintf(temp, "%02d", pso->cur_time.tm_min);				strcpy(mft[8].str, temp);										sprintf(temp, "%02d", pso->cur_time.tm_sec);										strcpy(mft[10].str, temp);													} else if (pso->cur_loc == 2) {				pso->next_id = SETUP_SP_NETWORK;						} else if (pso->cur_loc == 3) {				pso->next_id = SETUP_SP_CAMERA;				mft = setup_menu_font[pso->next_id];						/* get camera info */						for (ii = 0; ii < MAX_CH_NUM; ii++) {					sprintf(temp, "%4d", pso->param->sys.camera[ii].brightness);					strcpy(mft[ii + 3].str, temp);											sprintf(temp, "%4d", pso->param->sys.camera[ii].contrast);					strcpy(mft[ii + 8].str, temp);											sprintf(temp, "%4d", pso->param->sys.camera[ii].color);					strcpy(mft[ii + 13].str, temp);										}					} else if (pso->cur_loc == 4) {				pso->next_id = SETUP_SP_PASSWORD;			} else if (pso->cur_loc == 5) {				pso->next_id = SETUP_SP_HDD_MANAGEMENT;				/* password configuration : default 0000 */				mft = setup_menu_font[pso->next_id];					sprintf(temp, "%02d MIN", g_rec_time_list[pso->param->sys.disk.slice_time%9]);				strcpy(mft[3].str, temp);				strcpy(mft[5].str, pso->param->sys.disk.over_wt_flag==TRUE ? "YES": "NO ");			    	sprintf(mft[8].str, "HDD%c", 'A' + pso->disk_format.select_disk);			}else if (pso->cur_loc == 6) {						pso->next_id = SETUP_SP_PTZ;				mft = setup_menu_font[pso->next_id];					sprintf(temp, "CH%2d", pso->param->sys.ptz.cam_ch+1);				strcpy(mft[2].str, temp);				sprintf(temp, "%s", ptz_vendor_list[pso->param->sys.ptz.cam_vendor]);				strcpy(mft[4].str, temp);										sprintf(temp, "%02d", pso->param->sys.ptz.cam_speed+1);				strcpy(mft[6].str, temp);			}				else if (pso->cur_loc == 7) {				pso->next_id = SETUP_SP_HDD_STATUS;				g_refresh_cmd = TRUE;							} 			location_cur = &setup_menu_active[pso->cur_id];			location_cur->start = pso->cur_loc;						pso->cur_id = pso->next_id; 			pso->prev_id = pso->cur_id;			pso->create_menu = 1;						break;		case SUB_MINUS :			/* save system parameter to nvram */			save_sys_param(pso->param);						/* return to start position */						location_cur = &setup_menu_active[pso->cur_id];			location_cur->start = 1;			pso->cur_id = SETUP_MAIN;				pso->next_id = SETUP_SYSTEM_PARAM;			pso->create_menu = 1;			break;		default :			break;	}	return SUCCESS;}RETURN setup_motion_area(SETUP_OBJECT *pso){	S16	      up_down;	PTHREAD_BUF		signal;			switch (pso->sig_value) {		case UP :			up_down = pso->cur_loc - MB_X_NUM;			pso->cur_loc = up_down >= 0  ? up_down: pso->cur_loc;			setup_select_motion(pso);						break;		case DOWN :					up_down = pso->cur_loc + MB_X_NUM;			pso->cur_loc = (up_down <= (MB_X_NUM * MB_Y_NUM - 1))  ? up_down: pso->cur_loc;			setup_select_motion(pso);				break;		case LEFT :			up_down = pso->cur_loc - 1;			pso->cur_loc = up_down >= 0  ? up_down: pso->cur_loc;			setup_select_motion(pso);				break;		case RIGHT :			up_down = pso->cur_loc + 1;			pso->cur_loc = (up_down <= (MB_X_NUM * MB_Y_NUM - 1))  ? up_down: pso->cur_loc;			setup_select_motion(pso);				break;		case SEL :			setup_update_motion(pso);			break;		case SUB_MINUS :				pso->cur_id = SETUP_MOTION_SETUP;				pso->create_menu = 1;				/* change to previous monitoring mode */			signal.start_id = PTHREAD_SETUP;			signal.m_value = SIGNAL_2;					if (pthread_send_signal(&signal, PTHREAD_LIVE) == FALSE) {				m_ERROR("pthread_setup.c:error: In function 'pthread_send_signal'\n");			}					tw2834_motion_block_init(pso->cur_ch, pso->param->gp.video_form, FALSE);			break;		default :			break;	}	return SUCCESS;}RETURN setup_schedule_setup(SETUP_OBJECT *pso){	UNS16	ii;	UNS16	start, end;		S8		temp[8];		MENU_FONT_t		*mft;	MENU_ACTIVE_ITEM_t	*location_cur;			mft = setup_menu_font[pso->cur_id];			switch (pso->sig_value) {		case UP :			if (pso->cur_loc >= 35 && pso->cur_loc <= 38) {				setup_select_menu(pso, -4);						} else if (pso->cur_loc >= 39 && pso->cur_loc <= 42) {				setup_select_menu(pso, -4);						} else if (pso->cur_loc >= 43 && pso->cur_loc <= 46) {				setup_select_menu(pso, -4);						} else if (pso->cur_loc >= 47 && pso->cur_loc <= 50) {				setup_select_menu(pso, -4);						} else if (pso->cur_loc >= 51 && pso->cur_loc <= 54) {				setup_select_menu(pso, -4);						} else if (pso->cur_loc >= 55 && pso->cur_loc <= 58) {				setup_select_menu(pso, -4);						}				break;		case DOWN :			if (pso->cur_loc >= 31 && pso->cur_loc <= 34) {				setup_select_menu(pso, 4);						} else if (pso->cur_loc >= 35 && pso->cur_loc <= 38) {				setup_select_menu(pso, 4);						} else if (pso->cur_loc >= 39 && pso->cur_loc <= 42) {				setup_select_menu(pso, 4);						} else if (pso->cur_loc >= 43 && pso->cur_loc <= 46) {				setup_select_menu(pso, 4);						} else if (pso->cur_loc >= 47 && pso->cur_loc <= 50) {				setup_select_menu(pso, 4);						} else if (pso->cur_loc >= 51 && pso->cur_loc <= 54) {				setup_select_menu(pso, 4);						}				break;		case LEFT :			if (pso->cur_loc >= 32 && pso->cur_loc <= 34) {				setup_select_menu(pso, -1);						} else if (pso->cur_loc >= 36 && pso->cur_loc <= 38) {				setup_select_menu(pso, -1);						} else if (pso->cur_loc >= 40 && pso->cur_loc <= 42) {				setup_select_menu(pso, -1);						} else if (pso->cur_loc >= 44 && pso->cur_loc <= 46) {				setup_select_menu(pso, -1);						} else if (pso->cur_loc >= 48 && pso->cur_loc <= 50) {				setup_select_menu(pso, -1);						} else if (pso->cur_loc >= 52 && pso->cur_loc <= 54) {				setup_select_menu(pso, -1);						} else if (pso->cur_loc >= 56 && pso->cur_loc <= 58) {				setup_select_menu(pso, -1);						}						break;		case RIGHT :			if (pso->cur_loc >= 31 && pso->cur_loc <= 33) {				setup_select_menu(pso, 1);						} else if (pso->cur_loc >= 35 && pso->cur_loc <= 37) {				setup_select_menu(pso, 1);						} else if (pso->cur_loc >= 39 && pso->cur_loc <= 41) {				setup_select_menu(pso, 1);						} else if (pso->cur_loc >= 43 && pso->cur_loc <= 45) {				setup_select_menu(pso, 1);						} else if (pso->cur_loc >= 47 && pso->cur_loc <= 49) {				setup_select_menu(pso, 1);						} else if (pso->cur_loc >= 51 && pso->cur_loc <= 53) {				setup_select_menu(pso, 1);						} else if (pso->cur_loc >= 55 && pso->cur_loc <= 57) {				setup_select_menu(pso, 1);						}						break;		case NUM_PLUS :			if (pso->cur_loc >= 31 && ((pso->cur_loc - 31)%4 == 0)) {				if (pso->param->enc_ch[pso->cur_ch].schedule.from_time[(pso->cur_loc - 31)/4].tm_hour == 24) {					pso->param->enc_ch[pso->cur_ch].schedule.from_time[(pso->cur_loc - 31)/4].tm_hour = 0;									} else {					pso->param->enc_ch[pso->cur_ch].schedule.from_time[(pso->cur_loc - 31)/4].tm_hour++;				}					sprintf(temp, "%02d", pso->param->enc_ch[pso->cur_ch].schedule.from_time[(pso->cur_loc - 31)/4].tm_hour);				strcpy(mft[pso->cur_loc].str, temp);							pso->osd_loc = pso->cur_loc;									mft[pso->osd_loc].color = YELLOW;				mft[pso->osd_loc].attribute = BLINK;								setup_update_osd(pso);							} else if (pso->cur_loc >= 31 && ((pso->cur_loc - 31)%4 == 1)) {				if (pso->param->enc_ch[pso->cur_ch].schedule.from_time[(pso->cur_loc - 31)/4].tm_min == 59) {					pso->param->enc_ch[pso->cur_ch].schedule.from_time[(pso->cur_loc - 31)/4].tm_min = 0;									} else {					pso->param->enc_ch[pso->cur_ch].schedule.from_time[(pso->cur_loc - 31)/4].tm_min++;				}					sprintf(temp, "%02d", pso->param->enc_ch[pso->cur_ch].schedule.from_time[(pso->cur_loc - 31)/4].tm_min);				strcpy(mft[pso->cur_loc].str, temp);							pso->osd_loc = pso->cur_loc;									mft[pso->osd_loc].color = YELLOW;				mft[pso->osd_loc].attribute = BLINK;								setup_update_osd(pso);							} else if (pso->cur_loc >= 31 && ((pso->cur_loc - 31)%4 == 2)) {				if (pso->param->enc_ch[pso->cur_ch].schedule.to_time[(pso->cur_loc - 31)/4].tm_hour == 24) {					pso->param->enc_ch[pso->cur_ch].schedule.to_time[(pso->cur_loc - 31)/4].tm_hour = 0;									} else {					pso->param->enc_ch[pso->cur_ch].schedule.to_time[(pso->cur_loc - 31)/4].tm_hour++;				}					sprintf(temp, "%02d", pso->param->enc_ch[pso->cur_ch].schedule.to_time[(pso->cur_loc - 31)/4].tm_hour);				strcpy(mft[pso->cur_loc].str, temp);							pso->osd_loc = pso->cur_loc;									mft[pso->osd_loc].color = YELLOW;				mft[pso->osd_loc].attribute = BLINK;								setup_update_osd(pso);				} else if (pso->cur_loc >= 31 && ((pso->cur_loc - 31)%4 == 3)) {				if (pso->param->enc_ch[pso->cur_ch].schedule.to_time[(pso->cur_loc - 31)/4].tm_min == 59) {					pso->param->enc_ch[pso->cur_ch].schedule.to_time[(pso->cur_loc - 31)/4].tm_min = 0;									} else {					pso->param->enc_ch[pso->cur_ch].schedule.to_time[(pso->cur_loc - 31)/4].tm_min++;				}					sprintf(temp, "%02d", pso->param->enc_ch[pso->cur_ch].schedule.to_time[(pso->cur_loc - 31)/4].tm_min);				strcpy(mft[pso->cur_loc].str, temp);							pso->osd_loc = pso->cur_loc;									mft[pso->osd_loc].color = YELLOW;				mft[pso->osd_loc].attribute = BLINK;								setup_update_osd(pso);								}								break;		case NUM_MINUS :			if (pso->cur_loc >= 31 && ((pso->cur_loc - 31)%4 == 0)) {				if (pso->param->enc_ch[pso->cur_ch].schedule.from_time[(pso->cur_loc - 31)/4].tm_hour == 0) {					pso->param->enc_ch[pso->cur_ch].schedule.from_time[(pso->cur_loc - 31)/4].tm_hour = 24;									} else {					pso->param->enc_ch[pso->cur_ch].schedule.from_time[(pso->cur_loc - 31)/4].tm_hour--;				}					sprintf(temp, "%02d", pso->param->enc_ch[pso->cur_ch].schedule.from_time[(pso->cur_loc - 31)/4].tm_hour);				strcpy(mft[pso->cur_loc].str, temp);							pso->osd_loc = pso->cur_loc;									mft[pso->osd_loc].color = YELLOW;				mft[pso->osd_loc].attribute = BLINK;								setup_update_osd(pso);							} else if (pso->cur_loc >= 31 && ((pso->cur_loc - 31)%4 == 1)) {

⌨️ 快捷键说明

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