📄 pthread_search.c
字号:
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 + -