static PRESULT mlimit_itembtnref_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2) { PRESULT ret = PROC_PASS; VACTION unact; UINT8 back_saved; struct nim_device *nim_dev; nim_dev= antset_cur_tuner==0? g_nim_dev : g_nim_dev2; switch(event) { case EVN_UNKNOWN_ACTION: unact = (VACTION)(param1>>16); if(unact == VACT_GOTOREF) { api_diseqc_goto_reference(nim_dev,0); win_compopup_init(WIN_POPUP_TYPE_OK); win_compopup_set_msg(NULL, NULL, RS_MSG_MOVE_DISH_TO_REFERENCE_POINT); win_compopup_set_btnstr(0, RS_DISEQC12_MOVEMENT_STOP); win_compopup_open_ext(&back_saved); api_diseqc_halt_motor(nim_dev,0); } break; } return ret; }
static PRESULT win_motorset_message_proc(UINT32 msg_type, UINT32 msg_code) { struct nim_device *nim_dev; UINT8 level,quality,lock; SYSTEM_DATA* sys_data; static UINT32 interval; sys_data = sys_data_get(); nim_dev = antset_cur_tuner==0? g_nim_dev : g_nim_dev2; switch(msg_type) { case CTRL_MSG_SUBTYPE_STATUS_TIMEOUT: if(diskmotor_move_state) { DBG_PRINTF("Move time out\n"); UINT32 count; for (count = 0; count < 4; count++) { api_diseqc_halt_motor(nim_dev,0); osal_task_sleep(50); } diskmotor_move_state = 0; win_motorset_draw_info(diskmotor_move_state); win_motorset_movebtn_setstr(0); win_motorset_movebtn_draw(1); DBG_PRINTF("Move time out. Stopped\n"); } break; case CTRL_MSG_SUBTYPE_STATUS_SIGNAL: win_signal_refresh(); //win_signal_update(); #ifdef ANTENNA_INSTALL_BEEP if(sys_data->install_beep) { level = (UINT8)(msg_code>>16); quality = (UINT8)(msg_code>>8); lock = (UINT8)(msg_code>>0); #if(defined(DVBT_BEE_TONE) && ANTENNA_INSTALL_BEEP == 1) if(quality<20) level = 0; else if(quality<40) level = 1; else if(quality<55) level = 3; else if(quality <70) level = 5; else level = 7; api_audio_gen_tonevoice(level, tone_voice_init); #elif (defined(AUDIO_SPECIAL_EFFECT) && ANTENNA_INSTALL_BEEP == 2) if(lock) level = 100; else level = 1; if(!tone_voice_init || level!=interval) { if(!tone_voice_init) api_audio_beep_start(beep_bin_array,beep_bin_array_size); interval = level; api_audio_beep_set_interval(interval); } #endif tone_voice_init = 1; } #endif break; }
static PRESULT mlimit_itembtnset_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2) { PRESULT ret = PROC_PASS; VACTION unact; struct nim_device *nim_dev; SYSTEM_DATA * sys_data = sys_data_get(); UINT8 back_saved; nim_dev= antset_cur_tuner==0? g_nim_dev : g_nim_dev2; switch(event) { case EVN_UNKNOWN_ACTION: unact = (VACTION)(param1>>16); if(motor_move_state != 0) goto STOP_MOVE; if(unact == VACT_MOVE_WEST) { if(LIMIT_OPT==0) break; api_diseqc_drive_motor_west(nim_dev,0); motor_move_state = 1; SET_MOVE_DISPLAY: win_mlimit_draw_info(motor_move_state); win_mlimit_limitbtn_setstr(1); win_mlimit_limitbtn_draw(1); } else if(unact == VACT_MOVE_EAST) { if(LIMIT_OPT==0) break; api_diseqc_drive_motor_east(nim_dev,0); motor_move_state = 2; goto SET_MOVE_DISPLAY; } else if(unact == VACT_SET_LIMIT) { sys_data->motor_lmt = LIMIT_OPT; switch(LIMIT_OPT) { case 0: api_diseqc_disable_limits(nim_dev,0); break; case 1: api_diseqc_set_west_limit(nim_dev,0); break; case 2: api_diseqc_set_east_limit(nim_dev,0); break; } win_compopup_init(WIN_POPUP_TYPE_SMSG); win_compopup_set_msg(NULL, NULL, limit_btn_strids[LIMIT_OPT]); win_compopup_open_ext(&back_saved); osal_task_sleep(500); win_compopup_smsg_restoreback(); } break; case EVN_UNKNOWNKEY_GOT: if(motor_move_state != 0) { STOP_MOVE: api_diseqc_halt_motor(nim_dev,0); motor_move_state = 0; win_mlimit_draw_info(motor_move_state); win_mlimit_limitbtn_setstr(0); win_mlimit_limitbtn_draw(1); } break; } return ret; }
static PRESULT motorset_itembtn_callback(POBJECT_HEAD pObj, VEVENT event, UINT32 param1, UINT32 param2) { PRESULT ret = PROC_PASS; VACTION unact; UINT8 bID; UINT8 back_saved; win_popup_choice_t choice; UINT32 position,sat_pos; struct nim_device *nim_dev; S_NODE s_node; nim_dev = antset_cur_tuner==0? g_nim_dev : g_nim_dev2; bID = OSD_GetObjID(pObj); switch(event) { case EVN_UNKNOWN_ACTION: unact = (VACTION)(param1>>16); if(unact == VACT_MOVE_WEST || unact == VACT_MOVE_EAST) { if(bID != MOVESAVE_ID) break; if(diskmotor_move_state == 0 ) { if(unact == VACT_MOVE_WEST) { #ifdef FIRST_MOVE_BY_STEP api_diseqc_drive_motor_west_by_steps(nim_dev,1,0); diskmotor_move_step = 0; #else api_diseqc_drive_motor_west(nim_dev,0); #endif diskmotor_move_state = 1; } else //VACT_MOVE_EAST { #ifdef FIRST_MOVE_BY_STEP api_diseqc_drive_motor_east_by_steps(nim_dev,1,0); diskmotor_move_step = 0; #else api_diseqc_drive_motor_east(nim_dev,0); #endif diskmotor_move_state = 2; } api_stop_timer(&diskmove_timer_id); osal_task_sleep(100); DBG_PRINTF("Start move %d\n",diskmotor_move_state); diskmove_timer_id = api_start_timer(MOVE_TIERR_NAME, MOVE_TIERR_TIME,win_disk_move_handler); SET_MOVE_DISPLAY: win_motorset_draw_info(diskmotor_move_state); win_motorset_movebtn_setstr(1); win_motorset_movebtn_draw(1); } else { if( (diskmotor_move_state == 1 && unact == VACT_MOVE_WEST) || (diskmotor_move_state ==2 && unact == VACT_MOVE_EAST)) { /* Continue move West or East*/ DBG_PRINTF("Continue move %d\n",diskmotor_move_state); #ifdef FIRST_MOVE_BY_STEP api_stop_timer(&diskmove_timer_id); if(diskmotor_move_step == 0) { osal_task_sleep(100); if(diskmotor_move_state== 1) api_diseqc_drive_motor_west(nim_dev,0); else api_diseqc_drive_motor_east(nim_dev,0); diskmotor_move_step = 1; DBG_PRINTF("First time continue move\n"); } //else // DBG_PRINTF("Continue move %d\n",diskmotor_move_state); #endif osal_task_sleep(100); diskmove_timer_id = api_start_timer(MOVE_TIERR_NAME, MOVE_TIERR_TIME,win_disk_move_handler); } else goto STOP_MOVE; } } else if(unact == VACT_ENTER) { if(bID == MOVESAVE_ID) { if(diskmotor_move_state != 0) goto STOP_MOVE; else { /* Save current postion */ OSD_GetEditFieldIntValue(&motorset_edf3,&position); get_tuner_sat(antset_cur_tuner,SAT_IDX,&s_node); if(position<=MAX_POSNUM) { sat_pos = antset_cur_tuner==0? s_node.position : s_node.tuner2_antena.position; if(sat_pos == position && position== 0) { win_compopup_init(WIN_POPUP_TYPE_OK); win_compopup_set_msg("Position not specified (1~63)", NULL, 0); win_compopup_open_ext(&back_saved); break; } win_compopup_init(WIN_POPUP_TYPE_OKNO); if(position == 0) win_compopup_set_msg("Are you sure to clear this satellite's position?", NULL, 0); else win_compopup_set_msg("Are you sure to change this satellite's position?", NULL, 0); choice = win_compopup_open_ext(&back_saved); if(choice == WIN_POP_CHOICE_YES) { if(sat_pos != position) { recreate_sat_view(VIEW_ALL,0); if(antset_cur_tuner == 0) s_node.position = position; else s_node.tuner2_antena.position = position; modify_sat(s_node.sat_id, &s_node); update_data(); } if(position != 0) api_diseqc_store_satellite_position(nim_dev, (UINT8)position,0); } } else { } } } else if(bID == GOTONN_ID) { position = (UINT32)win_motorset_gotonn_sub_list(); if(position <= MAX_POSNUM) { if(position == 0) api_diseqc_goto_reference(nim_dev,0); else api_diseqc_goto_satellite_position(nim_dev,position,0); win_compopup_init(WIN_POPUP_TYPE_OK); win_compopup_set_msg("Wait to move the position!", NULL, 0); win_compopup_set_btnstr(0, RS_DISEQC12_MOVEMENT_STOP); win_compopup_open_ext(&back_saved); api_diseqc_halt_motor(nim_dev,0); } } else if(bID == RECACULATE_ID) { get_tuner_sat(antset_cur_tuner,SAT_IDX,&s_node); if(s_node.position==0) { win_compopup_init(WIN_POPUP_TYPE_SMSG); win_compopup_set_msg("Position is NULL", NULL,0); win_compopup_open_ext(&back_saved); osal_task_sleep(500); win_compopup_smsg_restoreback(); } win_compopup_init(WIN_POPUP_TYPE_OKNO); win_compopup_set_msg("Are you sure re-calulate all satellite positions?", NULL, 0); choice = win_compopup_open_ext(&back_saved); if(choice == WIN_POP_CHOICE_YES) api_diseqc_calculate_satellite_position(nim_dev,s_node.position,0,0, 0); } } break; case EVN_UNKNOWNKEY_GOT: //if(bID == MOVESAVE_ID) if(diskmotor_move_state) { STOP_MOVE: DBG_PRINTF("Stoped\n"); api_stop_timer(&diskmove_timer_id); osal_task_sleep(50); api_diseqc_halt_motor(nim_dev,0); diskmotor_move_state = 0; win_motorset_draw_info(diskmotor_move_state); win_motorset_movebtn_setstr(0); win_motorset_movebtn_draw(1); } break; } return ret; }