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

📄 pthread_search.c

📁 1、基于韩国at2041芯片开发的Linux环境的DVR代码。 2、以原来代码进行了修改。 3、主要修改网络通讯出现异常问题处理 4、硬盘覆盖录像不起作用
💻 C
📖 第 1 页 / 共 3 页
字号:
				sprintf(temp, "%02d", pso->tm_select.tm_mon + 1);				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;								search_update_osd(pso);							} else if (pso->cur_loc == VALUE_SLT_DAY) {				pso->tm_select.tm_mday --;								if (pso->tm_select.tm_mday < 1) {					pso->tm_select.tm_mday = 31;				}								sprintf(temp, "%02d", pso->tm_select.tm_mday);				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;								search_update_osd(pso);							} else if (pso->cur_loc == VALUE_SLT_HOUR) {				pso->tm_select.tm_hour --;					if (pso->tm_select.tm_hour < 0) {					pso->tm_select.tm_hour = 23;				}								sprintf(temp, "%02d", pso->tm_select.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;								search_update_osd(pso);							}				break;					case SEL :						if (pso->cur_loc - VALUE_SLT_YEAR > 2) {				/* get search list */				if ( get_search_list(sp_search_object) == FAILURE ) {					m_ERROR("pthread_search.c:error In function 'get_search_list'\n");					return FAILURE;						}				pso->prev_id = SEARCH_MAIN;					pso->cur_id = SEARCH_FILELIST; 				pso->create_menu = 1;									} else {				search_select_menu(pso, 1);				}																break;		case SEARCH :						search_clear_menu(pso->cur_id);			signal.start_id = PTHREAD_SEARCH;			signal.m_value = 1;						if (pthread_send_signal(&signal, PTHREAD_LIVE) == FALSE) {				m_ERROR("main.c:error: In function 'pthread_send_signal'\n");			}						gp_state_thread->state_main.state = IDLE;										return ENDING;							default :			break;	}	return SUCCESS;}RETURN search_filelist(SEARCH_OBJECT *pso){	UNS16	ii;		UNS16	count;	MENU_FONT_t 	*mft;		PTHREAD_BUF		signal;		struct statfs   file_attr;    DB_RECORD       db_t;	switch (pso->sig_value) {		case UP :						if (pso->cur_loc >= 2) {				search_select_menu(pso, -1);						}			break;		case DOWN :			if (pso->search_list.list_num >= 1) {				if (pso->cur_loc < (pso->search_list.list_num-1)*4 + VALUE_LIST1) {					search_select_menu(pso, 1);							}			}			break;		case SUB_PLUS :			count = pso->search_list.total_num -pso->search_list.start_num;						if (count > FILELIST_NUM) {				pso->search_list.start_num += FILELIST_NUM;				if ( set_osd_for_search_list(sp_search_object) == FAILURE ) {					m_ERROR("pthread_search.c:error In function 'set_osd_for_search_list'\n");				}					pso->cur_id = SEARCH_FILELIST; 							pso->create_menu = 1;						}			break;		case SUB_MINUS : 			count = pso->search_list.start_num;						if (count >= FILELIST_NUM) {				pso->search_list.start_num -= FILELIST_NUM;						if ( set_osd_for_search_list(sp_search_object) == FAILURE ) {					m_ERROR("pthread_search.c:error In function 'set_osd_for_search_list'\n");				}							pso->cur_id = SEARCH_FILELIST; 							pso->create_menu = 1;			}			break;			case SEL :			if (pso->cur_loc == VALUE_REC_MODE) {				pso->search_list.mode ++;				if (pso->search_list.mode > 3) {	// '0' All, '1' Conti, '2' Motion, '3' Sensor					pso->search_list.mode = 0;				}				mft = search_menu_font[SEARCH_FILELIST];		 							if (pso->search_list.mode == ALL) {			// '0' All					strcpy(mft[pso->cur_loc].str, "ALL   ");							} else if (pso->search_list.mode == CONTI) {	// '1' Conti					strcpy(mft[pso->cur_loc].str, "Conti ");											} else if (pso->search_list.mode == MOTION) {	// '2' Motion					strcpy(mft[pso->cur_loc].str, "Motion");											} else if (pso->search_list.mode == SENSOR) {	// '3' Sensor					strcpy(mft[pso->cur_loc].str, "Sensor");							}				/* get search list */				if ( get_search_list(sp_search_object) == FAILURE ) {					m_ERROR("pthread_search.c:error In function 'get_search_list'\n");					return FAILURE;						}				pso->cur_id = SEARCH_FILELIST; 				pso->create_menu = 1;							}			break;		case PLAYBACK : 			pso->cur_id = SEARCH_PLAYBACK; 			pso->prev_id = SEARCH_FILELIST;							search_clear_menu(pso->cur_id);		    /* The disk when the space will be the full and the file is eliminated with automatic movement, 		       corresponding file existence yes or no */			if(statfs(pso->search_list.db_nrec[pso->search_list.start_num + (pso->cur_loc - VALUE_LIST1)/4].fname, &file_attr)) {				/* stream file not exist, osd text display */				search_clear_menu(SEARCH_FILELIST);					tw2834_write_string(X_PATH, 10, 7, YELLOW, BLINK, "--- REUPDATE FILE LIST ---");				sleep(2);				/* get search list for reupdated */				if ( get_search_list(sp_search_object) == FAILURE ) {					m_ERROR("pthread_search.c:error In function 'get_search_list'\n");					return FAILURE;						}				pso->cur_id = SEARCH_FILELIST; 				pso->create_menu = 1;									return SUCCESS;			}			/* get file pointer for stream file */			memcpy(&db_t, &  pso->search_list.db_nrec[pso->search_list.start_num + (pso->cur_loc - VALUE_LIST1)/4], sizeof(DB_RECORD));		    	gp_state_thread->state_dec.signal.m_value =				db_record_matching(&db_t, pso->search_list.db_nrec[pso->search_list.start_num + (pso->cur_loc - VALUE_LIST1)/4].next_db_fp - sizeof(DB_RECORD));			gp_state_thread->state_dec.mode_rec = pso->search_list.mode;									gp_state_thread->state_dec.play_change = 1;			gp_state_thread->state_dec.mode_play = D_PLAY;						signal.start_id = PTHREAD_SEARCH;			if (pthread_send_signal(&signal, PTHREAD_MANAGER) == FALSE) {				m_ERROR("pthread_search.c:error: In function 'pthread_send_signal'\n");			} 														break;		case SEARCH :						pso->cur_id = SEARCH_MAIN; 			pso->prev_id = SEARCH_MAIN;						pso->create_menu = 1;			pso->search_list.start_num = 0;						mft = search_menu_font[SEARCH_FILELIST];		 						strcpy(mft[VALUE_REC_MODE].str, "ALL   ");						pso->search_list.mode = ALL;		// '0' All			break;					default :			break;	}	return SUCCESS;}RETURN search_playback(SEARCH_OBJECT *pso){	UNS16	ii;	MENU_FONT_t 	*mft;		PTHREAD_BUF		signal;		pso->psd = &gp_state_thread->state_dec;	switch (pso->sig_value) {		case PLAYBACK :				if (pso->psd->mode_play != D_PLAY) {				decode_mode(trick_mode(TME_REAL, TM_PLAY, TD_FORWARD, 0));				pso->psd->play_change = 1;				pso->psd->mode_play = D_PLAY;			}						break;								case FF :			if (pso->psd->mode_play != D_FF) {				pso->psd->play_step = 1;				decode_mode(trick_mode(TME_REAL, TM_FAST, TD_FORWARD, pso->psd->play_step));								pso->psd->play_change = 1;							} else {				pso->psd->play_step ++;				if (pso->psd->play_step > MAX_PLAY_STEP) {					pso->psd->play_step = 1;									}				decode_mode(trick_mode(TME_REAL, TM_FAST, TD_FORWARD, pso->psd->play_step));								pso->psd->play_change = 1;						}			pso->psd->mode_play = D_FF;			break;		case SLOW :			if (pso->psd->mode_play != D_SLOW) {							pso->psd->play_step = 1;				decode_mode(trick_mode(TME_REAL, TM_SLOW, TD_FORWARD, pso->psd->play_step));								pso->psd->play_change = 1;								} else {						pso->psd->play_step ++;								if (pso->psd->play_step > MAX_PLAY_STEP) {					pso->psd->play_step = 1;									}				decode_mode(trick_mode(TME_REAL, TM_SLOW, TD_FORWARD, pso->psd->play_step));									pso->psd->play_change = 1;								}						pso->psd->mode_play = D_SLOW;						break;		case REW :			if (pso->psd->mode_play != D_REW) {						pso->psd->play_step = 1;				decode_mode(trick_mode(TME_REAL, TM_FAST, TD_BACKWARD, pso->psd->play_step));								pso->psd->play_change = 1;									} else {				pso->psd->play_step ++;				if (pso->psd->play_step > MAX_PLAY_STEP) {					pso->psd->play_step = 1;									}				decode_mode(trick_mode(TME_REAL, TM_FAST, TD_BACKWARD, pso->psd->play_step));									pso->psd->play_change = 1;							}							pso->psd->mode_play = D_REW;			break;								case STEP_F :			decode_mode(trick_mode(TME_REAL, TM_STEP, TD_FORWARD, 1));									pso->psd->play_change = 1;			pso->psd->mode_play = D_STEP_F;			break;								case STEP_B :			decode_mode(trick_mode(TME_REAL, TM_STEP, TD_BACKWARD, 1));						pso->psd->play_change = 1;			pso->psd->mode_play = D_STEP_B;			break;								case PAUSE :									if (pso->psd->mode_play != D_PAUSE) {				decode_mode(trick_mode(TME_REAL, TM_PAUSE, TD_FORWARD, 0));								pso->psd->play_change = 1;				pso->psd->mode_play = D_PAUSE;			}						break;				case SEARCH : 						pso->prev_id = SEARCH_PLAYBACK;						pso->cur_id = SEARCH_FILELIST; 			/* get search list */			if ( get_search_list(sp_search_object) == FAILURE ) {				m_ERROR("pthread_search.c:error In function 'get_search_list'\n");				return FAILURE;					}			mft = search_menu_font[pso->cur_id];							pso->osd_loc = pso->cur_loc;			mft[pso->osd_loc].color = YELLOW;			mft[pso->osd_loc].attribute = BLINK;						pso->upgrade_menu = 1;	// pentamicro 2006.01.11			/* decoding thread pending prevention */			switch(pso->psd->mode_play) {				case D_PAUSE:				case D_STEP_B:				case D_STEP_F:					decode_mode(trick_mode(TME_REAL, TM_PLAY, TD_FORWARD, 0));					pso->psd->play_change = 1;					pso->psd->mode_play = D_PLAY;					usleep(300000);					break;			}			pso->psd->mode_play = D_STOP;				break;				default :			break;	}	switch (pso->sig_value) {		case PLAYBACK :			case FF :			case SLOW :			case REW :			case STEP_F :			case STEP_B :			case PAUSE :				signal.start_id = PTHREAD_DEC;			signal.m_value = 4; 			if (pthread_send_signal(&signal, PTHREAD_LIVE) == FALSE) {				m_ERROR("pthread_dec.c:error: In function 'pthread_send_signal'\n");			}					break;		default:			break;	}	return SUCCESS;}RETURN get_search_list(SEARCH_OBJECT *pso)

⌨️ 快捷键说明

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