Ejemplo n.º 1
0
static BYTE read_joystick(joystick_descriptor_t *joy)
{
    /* read buttons */
    BYTE joy_bits = read_button(joy, HID_FIRE, 16) |
                    read_button(joy, HID_ALT_FIRE, 16) |
                    read_button(joy, HID_LEFT, 4) |
                    read_button(joy, HID_RIGHT, 8) |
                    read_button(joy, HID_UP, 1) |
                    read_button(joy, HID_DOWN, 2) |
                    read_auto_button(joy, HID_AUTO_FIRE, 16) |
                    read_auto_button(joy, HID_AUTO_ALT_FIRE, 16);

    /* axis */
    joy_bits |= read_axis(joy, HID_X_AXIS, 4, 8) |
                read_axis(joy, HID_Y_AXIS, 1, 2);

    /* hat switch */
    joy_bits |= read_hat_switch(joy);

    return joy_bits;
}
Ejemplo n.º 2
0
/// \method z()
/// Get the z-axis value.
STATIC mp_obj_t pyb_accel_z(mp_obj_t self_in) {
    return read_axis(MMA_REG_Z);
}
Ejemplo n.º 3
0
void MAG3110::read() {
	this->x = read_axis('x');
	this->y = read_axis('y');
	this->z = read_axis('z');
}
Ejemplo n.º 4
0
void *spacenav_thread(void *data){
	LOG("Input device: attemting to open %s\n", mConfig->device.c_str());

	int fd = open(mConfig->device.c_str(), O_RDONLY);

	if(fd <= 0){
		LOG("No input device found\n");
		pthread_exit(NULL);
	}

	int states[MAX_AXIS];

	for(int i=0;i<MAX_AXIS;i++){
		states[i] = 0;
	}
	

	while(true){

		int axis = 0;
		int val = read_axis(fd, &axis);

		//LOG("%d: %d\n", axis, val);

		if(axis < 0 || axis >= MAX_AXIS){
			continue;
		}
		
		if(val > 1024){
			continue; //TODO: better solution!
		}
		
		int thresh = mConfig->thresh[axis];

		//Positive
		if(val >= thresh && states[axis] == 0){
			states[axis] = 1;
			on_axis_down(axis, 0);
		}

		if(val < thresh && states[axis] == 1){
			states[axis] = 0;
			on_axis_up(axis, 0);
		}


		//Negative
		if(val <= -thresh && states[axis] == 0){
			states[axis] = -1;
			on_axis_down(axis, 1);
		}

		if(val > -thresh && states[axis] == -1){
			states[axis] = 0;
			on_axis_up(axis, 1);
		}
		
		SDL_Delay(1);

	}

 }