mirror of
https://github.com/dekuNukem/USB4VC.git
synced 2025-10-31 11:26:46 -07:00
working on adding KVM compatibility mode
This commit is contained in:
@@ -170,6 +170,7 @@ void handle_protocol_switch(uint8_t spi_byte)
|
||||
break;
|
||||
|
||||
case PROTOCOL_PS2_MOUSE:
|
||||
case PROTOCOL_PS2_MOUSE_KVM:
|
||||
ps2mouse_init(PS2MOUSE_CLK_GPIO_Port, PS2MOUSE_CLK_Pin, PS2MOUSE_DATA_GPIO_Port, PS2MOUSE_DATA_Pin);
|
||||
break;
|
||||
|
||||
@@ -298,20 +299,8 @@ void HAL_SPI_TxRxCpltCallback(SPI_HandleTypeDef *hspi)
|
||||
HAL_GPIO_WritePin(ACT_LED_GPIO_Port, ACT_LED_Pin, GPIO_PIN_RESET);
|
||||
}
|
||||
|
||||
uint8_t is_ps2_mouse_connected_prev;
|
||||
|
||||
void ps2mouse_update(void)
|
||||
{
|
||||
uint8_t is_ps2_mouse_connected = IS_PS2MOUSE_PRESENT();
|
||||
uint8_t send_bat = 0;
|
||||
if(is_ps2_mouse_connected == 1 && is_ps2_mouse_connected_prev == 0)
|
||||
{
|
||||
send_bat = 1;
|
||||
HAL_Delay(50);
|
||||
ps2mouse_restore_defaults();
|
||||
}
|
||||
is_ps2_mouse_connected_prev = is_ps2_mouse_connected;
|
||||
|
||||
ps2mouse_bus_status = ps2mouse_get_bus_status();
|
||||
if(ps2mouse_bus_status == PS2_BUS_INHIBIT)
|
||||
{
|
||||
@@ -324,11 +313,6 @@ void ps2mouse_update(void)
|
||||
ps2mouse_host_req_reply(ps2mouse_host_cmd, &latest_mouse_event);
|
||||
return;
|
||||
}
|
||||
else if(send_bat)
|
||||
{
|
||||
ps2mouse_write(0xaa, 100);
|
||||
ps2mouse_write(0, 100);
|
||||
}
|
||||
|
||||
mouse_event* this_mouse_event = mouse_buf_peek(&my_mouse_buf);
|
||||
if(this_mouse_event == NULL)
|
||||
@@ -341,7 +325,10 @@ void ps2mouse_update(void)
|
||||
return;
|
||||
}
|
||||
|
||||
if(ps2mouse_send_update(&my_ps2_outbuf) != PS2_OK)
|
||||
uint8_t inhibit_timeout_ms = 200;
|
||||
if(is_protocol_enabled(PROTOCOL_PS2_MOUSE_KVM))
|
||||
inhibit_timeout_ms = 3;
|
||||
if(ps2mouse_send_update(&my_ps2_outbuf, inhibit_timeout_ms) != PS2_OK)
|
||||
{
|
||||
HAL_GPIO_WritePin(ERR_LED_GPIO_Port, ERR_LED_Pin, GPIO_PIN_SET);
|
||||
uint32_t enter_time = HAL_GetTick();
|
||||
@@ -474,6 +461,7 @@ void protocol_status_lookup_init(void)
|
||||
protocol_status_lookup[PROTOCOL_AT_PS2_KB] = PROTOCOL_STATUS_ENABLED;
|
||||
protocol_status_lookup[PROTOCOL_XT_KB] = PROTOCOL_STATUS_DISABLED;
|
||||
protocol_status_lookup[PROTOCOL_PS2_MOUSE] = PROTOCOL_STATUS_ENABLED;
|
||||
protocol_status_lookup[PROTOCOL_PS2_MOUSE_KVM] = PROTOCOL_STATUS_DISABLED;
|
||||
protocol_status_lookup[PROTOCOL_MICROSOFT_SERIAL_MOUSE] = PROTOCOL_STATUS_DISABLED;
|
||||
protocol_status_lookup[PROTOCOL_GENERIC_GAMEPORT_GAMEPAD] = PROTOCOL_STATUS_ENABLED;
|
||||
}
|
||||
@@ -615,7 +603,7 @@ int main(void)
|
||||
/* USER CODE BEGIN 3 */
|
||||
|
||||
// If both enabled, PS2 mouse takes priority
|
||||
if(is_protocol_enabled(PROTOCOL_PS2_MOUSE) && IS_PS2MOUSE_PRESENT())
|
||||
if((is_protocol_enabled(PROTOCOL_PS2_MOUSE) || is_protocol_enabled(PROTOCOL_PS2_MOUSE_KVM)) && IS_PS2MOUSE_PRESENT())
|
||||
ps2mouse_update();
|
||||
else if(is_protocol_enabled(PROTOCOL_MICROSOFT_SERIAL_MOUSE))
|
||||
microsoft_serial_mouse_update();
|
||||
|
||||
Reference in New Issue
Block a user