diff options
Diffstat (limited to 'hid/pico/src/ph_proto.h')
-rw-r--r-- | hid/pico/src/ph_proto.h | 92 |
1 files changed, 92 insertions, 0 deletions
diff --git a/hid/pico/src/ph_proto.h b/hid/pico/src/ph_proto.h new file mode 100644 index 00000000..11989170 --- /dev/null +++ b/hid/pico/src/ph_proto.h @@ -0,0 +1,92 @@ +/***************************************************************************** +# # +# KVMD - The main PiKVM daemon. # +# # +# Copyright (C) 2018-2023 Maxim Devaev <[email protected]> # +# # +# This program is free software: you can redistribute it and/or modify # +# it under the terms of the GNU General Public License as published by # +# the Free Software Foundation, either version 3 of the License, or # +# (at your option) any later version. # +# # +# This program is distributed in the hope that it will be useful, # +# but WITHOUT ANY WARRANTY without even the implied warranty of # +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # +# GNU General Public License for more details. # +# # +# You should have received a copy of the GNU General Public License # +# along with this program. If not, see <https://www.gnu.org/licenses/>. # +# # +*****************************************************************************/ + + +#pragma once + +#include "ph_types.h" + + +#define PH_PROTO_MAGIC ((u8)0x33) +#define PH_PROTO_MAGIC_RESP ((u8)0x34) + +//#define PH_PROTO_RESP_OK ((u8)0x20) // Legacy +#define PH_PROTO_RESP_NONE ((u8)0x24) +#define PH_PROTO_RESP_CRC_ERROR ((u8)0x40) +#define PH_PROTO_RESP_INVALID_ERROR ((u8)0x45) +#define PH_PROTO_RESP_TIMEOUT_ERROR ((u8)0x48) + +// Complex response flags +#define PH_PROTO_PONG_OK ((u8)0b10000000) +#define PH_PROTO_PONG_CAPS ((u8)0b00000001) +#define PH_PROTO_PONG_SCROLL ((u8)0b00000010) +#define PH_PROTO_PONG_NUM ((u8)0b00000100) +#define PH_PROTO_PONG_KBD_OFFLINE ((u8)0b00001000) +#define PH_PROTO_PONG_MOUSE_OFFLINE ((u8)0b00010000) +#define PH_PROTO_PONG_RESET_REQUIRED ((u8)0b01000000) + +// Complex request/response flags +#define PH_PROTO_OUT1_DYNAMIC ((u8)0b10000000) +#define PH_PROTO_OUT1_KBD_MASK ((u8)0b00000111) +#define PH_PROTO_OUT1_KBD_USB ((u8)0b00000001) +#define PH_PROTO_OUT1_KBD_PS2 ((u8)0b00000011) +// + +#define PH_PROTO_OUT1_MOUSE_MASK ((u8)0b00111000) +#define PH_PROTO_OUT1_MOUSE_USB_ABS ((u8)0b00001000) +#define PH_PROTO_OUT1_MOUSE_USB_REL ((u8)0b00010000) +#define PH_PROTO_OUT1_MOUSE_PS2 ((u8)0b00011000) +#define PH_PROTO_OUT1_MOUSE_USB_W98 ((u8)0b00100000) + +// Complex response +#define PH_PROTO_OUT2_CONNECTABLE ((u8)0b10000000) +#define PH_PROTO_OUT2_CONNECTED ((u8)0b01000000) +#define PH_PROTO_OUT2_HAS_USB ((u8)0b00000001) +#define PH_PROTO_OUT2_HAS_PS2 ((u8)0b00000010) +#define PH_PROTO_OUT2_HAS_USB_W98 ((u8)0b00000100) + +#define PH_PROTO_CMD_PING ((u8)0x01) +#define PH_PROTO_CMD_REPEAT ((u8)0x02) +#define PH_PROTO_CMD_SET_KBD ((u8)0x03) +#define PH_PROTO_CMD_SET_MOUSE ((u8)0x04) +#define PH_PROTO_CMD_SET_CONNECTED ((u8)0x05) +#define PH_PROTO_CMD_CLEAR_HID ((u8)0x10) +// + +#define PH_PROTO_CMD_KBD_KEY ((u8)0x11) +// + +#define PH_PROTO_CMD_MOUSE_ABS ((u8)0x12) +#define PH_PROTO_CMD_MOUSE_BUTTON ((u8)0x13) +#define PH_PROTO_CMD_MOUSE_WHEEL ((u8)0x14) +#define PH_PROTO_CMD_MOUSE_REL ((u8)0x15) +// + +#define PH_PROTO_CMD_MOUSE_LEFT_SELECT ((u8)0b10000000) +#define PH_PROTO_CMD_MOUSE_LEFT_STATE ((u8)0b00001000) +// + +#define PH_PROTO_CMD_MOUSE_RIGHT_SELECT ((u8)0b01000000) +#define PH_PROTO_CMD_MOUSE_RIGHT_STATE ((u8)0b00000100) +// + +#define PH_PROTO_CMD_MOUSE_MIDDLE_SELECT ((u8)0b00100000) +#define PH_PROTO_CMD_MOUSE_MIDDLE_STATE ((u8)0b00000010) +// + +#define PH_PROTO_CMD_MOUSE_BACKWARD_SELECT ((u8)0b10000000) // Previous/Up +#define PH_PROTO_CMD_MOUSE_BACKWARD_STATE ((u8)0b00001000) // Previous/Up +// + +#define PH_PROTO_CMD_MOUSE_FORWARD_SELECT ((u8)0b01000000) // Next/Down +#define PH_PROTO_CMD_MOUSE_FORWARD_STATE ((u8)0b00000100) // Next/Down |