summaryrefslogtreecommitdiff
path: root/hid/pico/src/ph_proto.h
diff options
context:
space:
mode:
Diffstat (limited to 'hid/pico/src/ph_proto.h')
-rw-r--r--hid/pico/src/ph_proto.h92
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