mirror of
https://github.com/mist-devel/mist-firmware.git
synced 2026-04-30 05:45:56 +00:00
state.c: cleanup
This commit is contained in:
108
state.c
108
state.c
@@ -39,11 +39,7 @@ static mist_joystick_t mist_joystick_temp;
|
||||
.state=0 , \
|
||||
.state_extra=0, \
|
||||
.usb_state=0, \
|
||||
.usb_state_extra=0, \
|
||||
.turbo=0, \
|
||||
.turbo_counter=0, \
|
||||
.turbo_mask=0x30, \
|
||||
.turbo_state=0xFF \
|
||||
.usb_state_extra=0 \
|
||||
}
|
||||
|
||||
/* latest joystick state */
|
||||
@@ -69,63 +65,6 @@ void StateReset() {
|
||||
}
|
||||
}
|
||||
|
||||
// sets a joystick to input status
|
||||
void StateJoyCopy ( uint8_t num_joy, mist_joystick_t* joy ) {
|
||||
mist_joystick_t mine;
|
||||
if(num_joy>5) return;
|
||||
if(!joy) return;
|
||||
mine = mist_joysticks[num_joy];
|
||||
mine.vid = joy->vid;
|
||||
mine.pid = joy->pid;
|
||||
mine.num_buttons=joy->num_buttons;
|
||||
mine.state=joy->state;
|
||||
mine.state_extra=joy->state_extra;
|
||||
mine.usb_state=joy->usb_state;
|
||||
mine.usb_state_extra=joy->usb_state_extra;
|
||||
mine.turbo=joy->turbo;
|
||||
mine.turbo_counter=joy->turbo_counter;
|
||||
mine.turbo_mask=joy->turbo_mask;
|
||||
mine.turbo_state=joy->turbo_state;
|
||||
}
|
||||
|
||||
void StateJoyRead ( uint8_t num_joy, mist_joystick_t* joy ) {
|
||||
mist_joystick_t mine;
|
||||
if(num_joy>5) return;
|
||||
if(!joy) return;
|
||||
mine = mist_joysticks[num_joy];
|
||||
joy->vid = mine.vid;
|
||||
joy->pid = mine.pid;
|
||||
joy->num_buttons = mine.num_buttons;
|
||||
joy->state = mine.state;
|
||||
joy->state_extra=mine.state_extra;
|
||||
joy->usb_state=mine.usb_state;
|
||||
joy->usb_state_extra=mine.usb_state_extra;
|
||||
joy->turbo=mine.turbo;
|
||||
joy->turbo_counter=mine.turbo_counter;
|
||||
joy->turbo_mask=mine.turbo_mask;
|
||||
joy->turbo_state=mine.turbo_state;
|
||||
}
|
||||
|
||||
// returns a copy of a status structure
|
||||
mist_joystick_t StateJoyGetStructure (uint8_t num_joy) {
|
||||
StateJoyRead( num_joy, &mist_joystick_temp);
|
||||
return mist_joystick_temp;
|
||||
}
|
||||
|
||||
// applies the turbo to a given joystick
|
||||
mist_joystick_t StateJoyUpdateTurboStructure (uint8_t num_joy) {
|
||||
StateJoyRead( num_joy, &mist_joystick_temp);
|
||||
StateTurboUpdate( &mist_joystick_temp);
|
||||
//mist_joystick_t mine = mist_joystick_temp;
|
||||
StateJoyCopy( num_joy, &mist_joystick_temp);
|
||||
}
|
||||
|
||||
uint8_t StateJoyStructureState ( uint8_t num_joy) {
|
||||
mist_joystick_t mine;
|
||||
mine = StateJoyGetStructure( num_joy);
|
||||
return mine.state;
|
||||
}
|
||||
|
||||
/* latest joystick state */
|
||||
static uint8_t osd_joy[6];
|
||||
static uint8_t osd_joy_extra[6];
|
||||
@@ -191,51 +130,6 @@ uint8_t StateUsbGetNumButtons(uint8_t joy_num) {
|
||||
return (joy_num < 6) ? num_buttons[joy_num] : 0;
|
||||
}
|
||||
|
||||
// return joystick state take into account turbo settings
|
||||
void StateJoyState( uint8_t joy_num, mist_joystick_t* joy ) {
|
||||
mist_joystick_t mine;
|
||||
if (joy_num>5) return;
|
||||
if(!joy) return;
|
||||
joy->vid = StateUsbVidGet(joy_num);
|
||||
joy->pid = StateUsbPidGet(joy_num);
|
||||
//joy.num_buttons=1; // DB9 has 1 button
|
||||
joy->state=StateUsbPidGet(joy_num);
|
||||
joy->state_extra=StateJoyGetExtra(joy_num);
|
||||
joy->usb_state=StateUsbJoyGet(joy_num);
|
||||
joy->usb_state_extra=(joy_num);
|
||||
//apply turbo status
|
||||
joy->state=StateUsbPidGet(joy_num);
|
||||
if(joy->turbo > 0) {
|
||||
joy->state &= joy->turbo_state;
|
||||
}
|
||||
// chache into current static scope
|
||||
StateJoyCopy(joy_num, joy);
|
||||
}
|
||||
|
||||
/* handle button's turbo timers */
|
||||
void StateTurboUpdate(mist_joystick_t* joy) {
|
||||
if(!joy) return;
|
||||
if(joy->turbo==0) return; // nothing to do
|
||||
joy->turbo_counter += 1;
|
||||
if(joy->turbo_counter > joy->turbo) {
|
||||
joy->turbo_counter = 0;
|
||||
joy->turbo_state ^= joy->turbo_mask;
|
||||
}
|
||||
}
|
||||
/* reset all turbo timers and state */
|
||||
void StateTurboReset(mist_joystick_t* joy) {
|
||||
if(!joy) return;
|
||||
joy->turbo_counter=0;
|
||||
joy->turbo_state=0xFF;
|
||||
}
|
||||
/* set a specific turbo mask and timeout */
|
||||
void StateTurboSet ( mist_joystick_t* joy, uint16_t turbo, uint16_t mask ) {
|
||||
if(!joy) return;
|
||||
StateTurboReset(joy);
|
||||
joy->turbo = turbo;
|
||||
joy->turbo_mask = mask;
|
||||
}
|
||||
|
||||
// Keep track of connected sticks
|
||||
uint8_t joysticks=0;
|
||||
uint8_t StateNumJoysticks() {
|
||||
|
||||
25
state.h
25
state.h
@@ -14,10 +14,6 @@ typedef struct {
|
||||
uint8_t state_extra; // current state of 8 more buttons
|
||||
uint8_t usb_state; // raw USB state of direction and buttons
|
||||
uint8_t usb_state_extra; // raw USB state of 8 more buttons
|
||||
uint16_t turbo; // 0 if disabled, otherwise max number to flip state
|
||||
uint16_t turbo_counter; // increased when using turbo, flips state when passing turbo
|
||||
uint8_t turbo_mask; // buttons subject to turbo
|
||||
uint8_t turbo_state; // current mask to apply
|
||||
|
||||
} mist_joystick_t;
|
||||
|
||||
@@ -47,31 +43,10 @@ uint8_t StateJoyGet(uint8_t joy_num);
|
||||
uint8_t StateJoyGetExtra(uint8_t joy_num);
|
||||
uint8_t StateJoyGetRight(uint8_t joy_num);
|
||||
|
||||
// turbo button functions
|
||||
void StateTurboUpdate(mist_joystick_t* joy);
|
||||
void StateTurboReset(mist_joystick_t* joy);
|
||||
void StateTurboSet ( mist_joystick_t* joy, uint16_t turbo, uint16_t mask );
|
||||
mist_joystick_t StateJoyUpdateTurboStructure (uint8_t num_joy);
|
||||
void StateJoyRead ( uint8_t num_joy, mist_joystick_t* joy );
|
||||
void StateJoyCopy ( uint8_t num_joy, mist_joystick_t* joy );
|
||||
uint8_t StateJoyStructureState ( uint8_t num_joy);
|
||||
|
||||
|
||||
// Keep track of connected sticks
|
||||
uint8_t StateNumJoysticks();
|
||||
void StateNumJoysticksSet(uint8_t num);
|
||||
|
||||
// to get data
|
||||
void StateJoyState( uint8_t joy_num, mist_joystick_t* joy ); // directions and 4 buttons, reflecting turbo settings
|
||||
|
||||
/*
|
||||
// turbo function
|
||||
void StateTurboUpdate(uint8_t joy_num);
|
||||
void StateTurboReset(uint8_t joy_num);
|
||||
void StateTurboSet ( uint16_t turbo, uint16_t mask, uint8_t joy_num );
|
||||
|
||||
*/
|
||||
|
||||
// keyboard status
|
||||
void StateKeyboardSet( uint8_t modifier, uint8_t* pressed, uint16_t* pressed_ps2); //get usb and ps2 codes
|
||||
uint8_t StateKeyboardModifiers();
|
||||
|
||||
Reference in New Issue
Block a user