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

📄 pthread_setup.c

📁 1、基于韩国at2041芯片开发的Linux环境的DVR代码。 2、以原来代码进行了修改。 3、主要修改网络通讯出现异常问题处理 4、硬盘覆盖录像不起作用
💻 C
📖 第 1 页 / 共 5 页
字号:
				if (pso->param->enc_ch[pso->cur_ch].schedule.from_time[(pso->cur_loc - 31)/4].tm_min == 0) {					pso->param->enc_ch[pso->cur_ch].schedule.from_time[(pso->cur_loc - 31)/4].tm_min = 59;									} 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 == 0) {					pso->param->enc_ch[pso->cur_ch].schedule.to_time[(pso->cur_loc - 31)/4].tm_hour = 24;									} 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 == 0) {					pso->param->enc_ch[pso->cur_ch].schedule.to_time[(pso->cur_loc - 31)/4].tm_min = 59;									} 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 SUB_MINUS :			/* return to start position */						location_cur = &setup_menu_active[pso->cur_id];			location_cur->start = 31;			pso->cur_id = SETUP_ENCODER_PARAM;			pso->next_id = SETUP_SCHEDULE_SETUP;				pso->create_menu = 1;						break;		default :			break;	}	return SUCCESS;}RETURN setup_system_time(SETUP_OBJECT *pso){	S32 	ii, jj;	MENU_FONT_t 	*mft;		MENU_ACTIVE_ITEM_t	*location_cur; 		static S32 num_start, num_end;	BOOL 	valid_data = TRUE;	S32       day;	/* numeric table list for key input */	UNS16 key_table_list[] = { NUMBER0,NUMBER1,NUMBER2,NUMBER3,NUMBER4,NUMBER5,NUMBER6,NUMBER7,NUMBER8,NUMBER9};	/* month list for date */	UNS16 month_list[] = { 31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31 };	struct timeval tv = { 0L, 0L };		mft = setup_menu_font[SETUP_SP_TIME];			switch (pso->sig_value) {		case LEFT :			if (pso->cur_loc >= 3) {				setup_select_menu(pso, -1);						}			num_start = 0;			break;		case RIGHT :			if (pso->cur_loc <= 10) {				setup_select_menu(pso, 1);						}			num_start = 0;			break;			case NUMBER0:		case NUMBER1:		case NUMBER2:		case NUMBER3:		case NUMBER4:		case NUMBER5:		case NUMBER6:		case NUMBER7:		case NUMBER8:		case NUMBER9:			for(ii=0; ii < 10; ii++) 				if(key_table_list[ii] == pso->sig_value) 					break;			num_end = strlen(mft[pso->cur_loc].str);			for(jj=0; jj < num_end;jj++) 				if(!isdigit(mft[pso->cur_loc].str[jj]))					return SUCCESS;			mft[pso->cur_loc].str[num_start++] = '0' + ii;			if(num_start >= num_end) {				/* verify  data and time */				jj = atoi(mft[pso->cur_loc].str);				switch(pso->cur_loc) {					case 1: /* year */						if ( jj < 2000 ) {							strcpy(mft[pso->cur_loc].str, "2000");							jj = 2000;							valid_data = FALSE;						}						pso->cur_time.tm_year = jj - 1900;						break;					case 3: /* month */						if( jj < 1 || jj > 12) {							strcpy(mft[pso->cur_loc].str, "01");							jj = 1;							valid_data = FALSE;						}						pso->cur_time.tm_mon = jj - 1;						break;					case 5: /* day */						/* when the february ( leap month process)*/						day = month_list[pso->cur_time.tm_mon];						if(pso->cur_time.tm_mon == 1) 							day = (pso->cur_time.tm_year + 1900) % 4 ?  28: 29;												if( jj < 1 || jj > day) {							strcpy(mft[pso->cur_loc].str, "01");							jj = 1;							valid_data = FALSE;						}						pso->cur_time.tm_mday = jj;						break;					case 6: /* hour */						if( jj < 0 || jj > 23) {							strcpy(mft[pso->cur_loc].str, "00");							jj = 0;							valid_data = FALSE;						}						pso->cur_time.tm_hour = jj;						break;					case 8: /* min */						if( jj < 0 || jj > 59) {							strcpy(mft[pso->cur_loc].str, "00");							jj = 0;							valid_data = FALSE;						}						pso->cur_time.tm_min = jj;						break;					case 10: /* sec */						if( jj < 0 || jj > 59) {							strcpy(mft[pso->cur_loc].str, "00");							jj = 0;							valid_data = FALSE;						}						pso->cur_time.tm_sec = jj;						break;				}				num_start = 0;				if(valid_data) {					pso->osd_loc = pso->cur_loc;					mft[pso->osd_loc].color = WHITE;					mft[pso->osd_loc].attribute = NORMAL;									setup_update_osd(pso);						if (pso->cur_loc <= 10) {						setup_select_menu(pso, 1);								}					return SUCCESS;				}			}			pso->osd_loc = pso->cur_loc;			mft[pso->osd_loc].color = YELLOW;			mft[pso->osd_loc].attribute = BLINK;							setup_update_osd(pso);				break;		case SEL :							if (pso->cur_loc == 11) {				/* When to the encoding, it will not be able to change time. */				if(gp_state_thread->state_enc.state == BUSY) {					m_MSG("pthread_setup.c: When to the encoding, it will not be able to change time'\n");					break;				}				set_cur_time(&pso->cur_time);				tv.tv_sec = mktime(&pso->cur_time);				settimeofday(&tv, NULL);			}								break;		case SUB_MINUS : 			/* return to start position */						location_cur = &setup_menu_active[pso->cur_id];			location_cur->start = 1;			pso->cur_id = SETUP_SYSTEM_PARAM;					pso->create_menu = 1;			break;		default :			break;	}	return SUCCESS;}RETURN setup_system_network(SETUP_OBJECT *pso){	UNS16	ii, jj;	S8		temp_net[80];	S8		ip[20];	S8		netmask[20];		S8		gw[20];	MENU_FONT_t 	*mft;		MENU_ACTIVE_ITEM_t	*location_cur; 		/* numeric table list for key input */	UNS16 key_table_list[] = { NUMBER0,NUMBER1,NUMBER2,NUMBER3,NUMBER4,NUMBER5,NUMBER6,NUMBER7,NUMBER8,NUMBER9};	static S32 num_start, num_end;		mft = setup_menu_font[SETUP_SP_NETWORK];		switch (pso->sig_value) {		case UP :			if (pso->cur_loc >= 10 && pso->cur_loc <= 16) {				setup_select_menu(pso, -8);					} else if (pso->cur_loc >= 18 && pso->cur_loc <= 24) {				setup_select_menu(pso, -8);								}			num_start = 0;			break;		case DOWN :			if (pso->cur_loc >= 2 && pso->cur_loc <= 8) {				setup_select_menu(pso, 8);						} else if (pso->cur_loc >= 10 && pso->cur_loc <= 16) {				setup_select_menu(pso, 8);						}			num_start = 0;			break;		case LEFT :			if (pso->cur_loc >= 4 && pso->cur_loc <= 8) {				setup_select_menu(pso, -2);							} else if (pso->cur_loc >= 12 && pso->cur_loc <= 16) {				setup_select_menu(pso, -2);								} else if (pso->cur_loc >= 20 && pso->cur_loc <= 24) {				setup_select_menu(pso, -2);				} else if (pso->cur_loc == 25) {				setup_select_menu(pso, -1);								}			num_start = 0;			break;		case RIGHT :			if (pso->cur_loc >= 2 && pso->cur_loc <= 6) {				setup_select_menu(pso, 2);							} else if (pso->cur_loc >= 10 && pso->cur_loc <= 14) {				setup_select_menu(pso, 2);								} else if (pso->cur_loc >= 18 && pso->cur_loc <= 22) {				setup_select_menu(pso, 2);								} else if (pso->cur_loc == 24) {				setup_select_menu(pso, 1);								}			num_start = 0;			break;			case NUMBER0:		case NUMBER1:		case NUMBER2:		case NUMBER3:		case NUMBER4:		case NUMBER5:		case NUMBER6:		case NUMBER7:		case NUMBER8:		case NUMBER9:			for(ii=0; ii < 10; ii++) 				if(key_table_list[ii] == pso->sig_value) 					break;			num_end = strlen(mft[pso->cur_loc].str);			for(jj=0; jj < num_end;jj++) 				if(!isdigit(mft[pso->cur_loc].str[jj]))					return SUCCESS;			mft[pso->cur_loc].str[num_start++] = '0' + ii;			if(num_start >= num_end) {				num_start = 0;				pso->osd_loc = pso->cur_loc;				mft[pso->osd_loc].color = WHITE;				mft[pso->osd_loc].attribute = NORMAL;								setup_update_osd(pso);					if (pso->cur_loc <= 24) {					setup_select_menu(pso, 1);							}				return SUCCESS;			}			pso->osd_loc = pso->cur_loc;			mft[pso->osd_loc].color = YELLOW;			mft[pso->osd_loc].attribute = BLINK;							setup_update_osd(pso);				break;		case SEL :							if (pso->cur_loc == 25) {				strcpy(temp_net, "ifconfig ");				strcat(temp_net, "eth0 ");				sprintf(ip, "%03d.%03d.%03d.%03d", atoi(mft[2].str), atoi(mft[4].str), atoi(mft[6].str), atoi(mft[8].str));				strcat(temp_net, ip);				strcat(temp_net, " netmask ");				sprintf(netmask, "%03d.%03d.%03d.%03d", atoi(mft[10].str), atoi(mft[12].str), atoi(mft[14].str), atoi(mft[16].str));				strcat(temp_net, netmask);				if (system(temp_net) != 0) {					m_ERROR("pthread_setup.c:error: In function 'system'\n");				}					strcpy(temp_net, "route ");								strcat(temp_net, "add default gw ");				sprintf(gw, "%03d.%03d.%03d.%03d", atoi(mft[18].str), atoi(mft[20].str), atoi(mft[22].str), atoi(mft[24].str));				strcat(temp_net, gw);				strcat(temp_net, " eth0");				if (system(temp_net) != 0) {					m_ERROR("pthread_setup.c:error: In function 'system'\n");				}				pso->param->sys.network.ipaddr = (atoi(mft[2].str) << 24) | (atoi(mft[4].str)<< 16) | (atoi(mft[6].str) << 8) |atoi(mft[8].str);				pso->param->sys.network.netmask = (atoi(mft[10].str) << 24) | (atoi(mft[12].str)<< 16) | (atoi(mft[14].str) << 8) |atoi(mft[16].str);				pso->param->sys.network.gateway = (atoi(mft[18].str) << 24) | (atoi(mft[20].str)<< 16) | (atoi(mft[22].str) << 8) |atoi(mft[24].str);			}					break;		case SUB_MINUS : 			/* return to start position */						location_cur = &setup_menu_active[pso->cur_id];			location_cur->start = 2;			pso->cur_id = SETUP_SYSTEM_PARAM;					pso->create_menu = 1;			break;		default :			break;	}	return SUCCESS;}RETURN setup_system_camera(SETUP_OBJECT *pso){	S8		temp[8];		MENU_FONT_t 	*mft;		MENU_ACTIVE_ITEM_t	*location_cur; 		mft = setup_menu_font[SETUP_SP_CAMERA];		switch (pso->sig_value) {		case UP :			if (pso->cur_loc >= 8 && pso->cur_loc <= 11) {				setup_select_menu(pso, -5);					} else if (pso->cur_loc >= 13 && pso->cur_loc <= 16) {				setup_select_menu(pso, -5);								}			break;		case DOWN :			if (pso->cur_loc >= 3 && pso->cur_loc <= 6) {				setup_select_menu(pso, 5);						} else if (pso->cur_loc >= 8 && pso->cur_loc <= 11) {				setup_select_menu(pso, 5);						}			break;		case LEFT :			if (pso->cur_loc >= 4 && pso->cur_loc <= 6) {				setup_select_menu(pso, -1);							} else if (pso->cur_loc >= 9 && pso->cur_loc <= 11) {				setup_select_menu(pso, -1);								} else if (pso->cur_loc >= 14 && pso->cur_loc <= 16) {				setup_select_menu(pso, -1);								}			break;		case RIGHT :			if (pso->cur_loc >= 3 && pso->cur_loc <= 5) {				setup_select_menu(pso, 1);							} else if (pso->cur_loc >= 8 && pso->cur_loc <= 10) {				setup_select_menu(pso, 1);								} else if (pso->cur_loc >= 13 && pso->cur_loc <= 15) {				setup_select_menu(pso, 1);												}			break;			case NUM_PLUS :			if (pso->cur_loc >= 3 && pso->cur_loc <= 6) {				if (pso->param->sys.camera[pso->cur_loc - 3].brightness <= 126) {					pso->param->sys.camera[pso->cur_loc - 3].brightness ++;				} else if (pso->param->sys.camera[pso->cur_loc - 3].brightness >= 127) {					pso->param->sys.camera[pso->cur_loc - 3].brightness = -128;				}				sprintf(temp, "%4d", pso->param->sys.camera[pso->cur_loc - 3].brightness);				strcpy(mft[pso->cur_loc].str, temp);				tw2834_write_reg(TW2834_PAGE0, 0x12 + 0x40 * (pso->cur_loc - 3), (UNS8)(pso->param->sys.camera[pso->cur_loc - 3].brightness+128)); 			} else if (pso->cur_loc >= 8 && pso->cur_loc <= 11) {				if (pso->param->sys.camera[pso->cur_loc - 8].contrast <= 126) {					pso->param->sys.camera[pso->cur_loc - 8].contrast ++;

⌨️ 快捷键说明

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