コード例 #1
0
States fsm_going_up(system_state_t* system_state, States fsm_previous_state){

	if (elev_get_stop_signal()){
		return stop;
	}
	
	system_state->next_floor = system_state->current_floor + system_state->motor_direction;
	
    elev_set_door_open_lamp(0);
    elev_set_motor_direction(DIRN_UP);
    
    check_cmd_buttons(system_state);
    check_call_buttons(system_state);

	check_floor(system_state);
    if (elev_get_floor_sensor_signal() >= 0) { 	
		
		elev_set_floor_indicator(system_state->current_floor);
		
		
		if (should_stop(system_state, system_state->current_floor)){
			elev_set_direction(system_state, 0);
            orders_clearAt(system_state, system_state->current_floor);
	    	reset_button_indicators(system_state);     	
			return door_open;
		}
    }  
    return going_up;
}
コード例 #2
0
ファイル: fpprec-1.c プロジェクト: 0day-ci/gcc
static void
sse2_test (void)
{
  check_round ();
  check_rint ();
  check_floor ();
  check_ceil ();
  check_trunc ();
}
コード例 #3
0
States fsm_door_open(system_state_t* system_state, States fsm_previous_state){

	elev_set_direction(system_state, 0);
	elev_set_door_open_lamp(1);
	
	if (!fsm_pause_3_sec(system_state)) 
		return stop;
	
	elev_set_door_open_lamp(0);
	check_floor(system_state);
	
    if (fsm_previous_state == idle){
		elev_set_button_lamp (BUTTON_COMMAND, system_state->current_floor,0);
		orders_clearAt(system_state, system_state->current_floor);
			
    	if (system_state->current_floor < 3)
    		elev_set_button_lamp (BUTTON_CALL_UP, system_state->current_floor,0);
		if (system_state->current_floor > 0)
			elev_set_button_lamp (BUTTON_CALL_DOWN, system_state->current_floor,0);
			
        return idle;
    }
        
        
    else if (fsm_previous_state == going_down) {
        for (int i = system_state->current_floor; i >= 0; --i){
	    	if (system_state->elev_active_floors[i] ||
	    	    system_state->elev_called_floors_up[i] ||
	    	    system_state->elev_called_floors_down[i]){
	    		system_state->motor_direction = -1;
	        	return going_down;
	    	}
        }
		return idle;
    }


    else if (fsm_previous_state == going_up){
        for (int i = system_state->current_floor; i < N_FLOORS; ++i){
	    	if (system_state->elev_active_floors[i] ||
	    	    system_state->elev_called_floors_up[i] ||
	    	    system_state->elev_called_floors_down[i]){
	    		system_state->motor_direction = 1;	
	        	return going_up;
	    	}
        }
    }

    return idle;
}