mirror of
https://github.com/wpilibsuite/allwpilib
synced 2026-06-27 02:01:42 +00:00
[hal,wpilib] Add Touchpad support (#8401)
This commit is contained in:
4
.github/workflows/bazel.yml
vendored
4
.github/workflows/bazel.yml
vendored
@@ -138,6 +138,6 @@ jobs:
|
||||
|
||||
- uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ${{ matrix.platform }}-robotpy-pregeneration-fixes
|
||||
path: robotpy-pregeneration-fixes.patch
|
||||
name: robotpy-pregeneration-fixes
|
||||
path: robotpy-pregeneration.patch
|
||||
if: ${{ failure() }}
|
||||
|
||||
3
hal/robotpy_pybind_build_info.bzl
generated
3
hal/robotpy_pybind_build_info.bzl
generated
@@ -331,6 +331,9 @@ def wpihal_extension(srcs = [], header_to_dat_deps = [], extra_hdrs = [], includ
|
||||
("HAL_JoystickButtons", "__HAL_JoystickButtons.hpp"),
|
||||
("HAL_JoystickDescriptor", "__HAL_JoystickDescriptor.hpp"),
|
||||
("HAL_MatchInfo", "__HAL_MatchInfo.hpp"),
|
||||
("HAL_JoystickTouchpadFinger", "__HAL_JoystickTouchpadFinger.hpp"),
|
||||
("HAL_JoystickTouchpad", "__HAL_JoystickTouchpad.hpp"),
|
||||
("HAL_JoystickTouchpads", "__HAL_JoystickTouchpads.hpp"),
|
||||
],
|
||||
),
|
||||
struct(
|
||||
|
||||
@@ -14,438 +14,507 @@
|
||||
static const uint8_t file_descriptor[] {
|
||||
0x0a,0x0d,0x4d,0x72,0x63,0x43,0x6f,0x6d,0x6d,0x2e,
|
||||
0x70,0x72,0x6f,0x74,0x6f,0x12,0x09,0x6d,0x72,0x63,
|
||||
0x2e,0x70,0x72,0x6f,0x74,0x6f,0x22,0xc6,0x01,0x0a,
|
||||
0x14,0x50,0x72,0x6f,0x74,0x6f,0x62,0x75,0x66,0x4a,
|
||||
0x2e,0x70,0x72,0x6f,0x74,0x6f,0x22,0x44,0x0a,0x12,
|
||||
0x50,0x72,0x6f,0x74,0x6f,0x62,0x75,0x66,0x46,0x69,
|
||||
0x6e,0x67,0x65,0x72,0x44,0x61,0x74,0x61,0x12,0x0c,
|
||||
0x0a,0x01,0x58,0x18,0x01,0x20,0x01,0x28,0x0d,0x52,
|
||||
0x01,0x58,0x12,0x0c,0x0a,0x01,0x59,0x18,0x02,0x20,
|
||||
0x01,0x28,0x0d,0x52,0x01,0x59,0x12,0x12,0x0a,0x04,
|
||||
0x44,0x6f,0x77,0x6e,0x18,0x03,0x20,0x01,0x28,0x08,
|
||||
0x52,0x04,0x44,0x6f,0x77,0x6e,0x22,0x4f,0x0a,0x14,
|
||||
0x50,0x72,0x6f,0x74,0x6f,0x62,0x75,0x66,0x54,0x6f,
|
||||
0x75,0x63,0x68,0x70,0x61,0x64,0x44,0x61,0x74,0x61,
|
||||
0x12,0x37,0x0a,0x07,0x46,0x69,0x6e,0x67,0x65,0x72,
|
||||
0x73,0x18,0x01,0x20,0x03,0x28,0x0b,0x32,0x1d,0x2e,
|
||||
0x6d,0x72,0x63,0x2e,0x70,0x72,0x6f,0x74,0x6f,0x2e,
|
||||
0x50,0x72,0x6f,0x74,0x6f,0x62,0x75,0x66,0x46,0x69,
|
||||
0x6e,0x67,0x65,0x72,0x44,0x61,0x74,0x61,0x52,0x07,
|
||||
0x46,0x69,0x6e,0x67,0x65,0x72,0x73,0x22,0x85,0x02,
|
||||
0x0a,0x14,0x50,0x72,0x6f,0x74,0x6f,0x62,0x75,0x66,
|
||||
0x4a,0x6f,0x79,0x73,0x74,0x69,0x63,0x6b,0x44,0x61,
|
||||
0x74,0x61,0x12,0x2a,0x0a,0x10,0x41,0x76,0x61,0x69,
|
||||
0x6c,0x61,0x62,0x6c,0x65,0x42,0x75,0x74,0x74,0x6f,
|
||||
0x6e,0x73,0x18,0x01,0x20,0x01,0x28,0x04,0x52,0x10,
|
||||
0x41,0x76,0x61,0x69,0x6c,0x61,0x62,0x6c,0x65,0x42,
|
||||
0x75,0x74,0x74,0x6f,0x6e,0x73,0x12,0x18,0x0a,0x07,
|
||||
0x42,0x75,0x74,0x74,0x6f,0x6e,0x73,0x18,0x02,0x20,
|
||||
0x01,0x28,0x04,0x52,0x07,0x42,0x75,0x74,0x74,0x6f,
|
||||
0x6e,0x73,0x12,0x24,0x0a,0x0d,0x41,0x76,0x61,0x69,
|
||||
0x6c,0x61,0x62,0x6c,0x65,0x41,0x78,0x65,0x73,0x18,
|
||||
0x03,0x20,0x01,0x28,0x0d,0x52,0x0d,0x41,0x76,0x61,
|
||||
0x69,0x6c,0x61,0x62,0x6c,0x65,0x41,0x78,0x65,0x73,
|
||||
0x12,0x12,0x0a,0x04,0x41,0x78,0x65,0x73,0x18,0x04,
|
||||
0x20,0x03,0x28,0x11,0x52,0x04,0x41,0x78,0x65,0x73,
|
||||
0x12,0x1a,0x0a,0x08,0x50,0x4f,0x56,0x43,0x6f,0x75,
|
||||
0x6e,0x74,0x18,0x05,0x20,0x01,0x28,0x0d,0x52,0x08,
|
||||
0x50,0x4f,0x56,0x43,0x6f,0x75,0x6e,0x74,0x12,0x12,
|
||||
0x0a,0x04,0x50,0x4f,0x56,0x73,0x18,0x06,0x20,0x01,
|
||||
0x28,0x0d,0x52,0x04,0x50,0x4f,0x56,0x73,0x12,0x3d,
|
||||
0x0a,0x09,0x54,0x6f,0x75,0x63,0x68,0x70,0x61,0x64,
|
||||
0x73,0x18,0x07,0x20,0x03,0x28,0x0b,0x32,0x1f,0x2e,
|
||||
0x6d,0x72,0x63,0x2e,0x70,0x72,0x6f,0x74,0x6f,0x2e,
|
||||
0x50,0x72,0x6f,0x74,0x6f,0x62,0x75,0x66,0x54,0x6f,
|
||||
0x75,0x63,0x68,0x70,0x61,0x64,0x44,0x61,0x74,0x61,
|
||||
0x52,0x09,0x54,0x6f,0x75,0x63,0x68,0x70,0x61,0x64,
|
||||
0x73,0x22,0xba,0x01,0x0a,0x13,0x50,0x72,0x6f,0x74,
|
||||
0x6f,0x62,0x75,0x66,0x43,0x6f,0x6e,0x74,0x72,0x6f,
|
||||
0x6c,0x44,0x61,0x74,0x61,0x12,0x20,0x0a,0x0b,0x43,
|
||||
0x6f,0x6e,0x74,0x72,0x6f,0x6c,0x57,0x6f,0x72,0x64,
|
||||
0x18,0x01,0x20,0x01,0x28,0x0d,0x52,0x0b,0x43,0x6f,
|
||||
0x6e,0x74,0x72,0x6f,0x6c,0x57,0x6f,0x72,0x64,0x12,
|
||||
0x1c,0x0a,0x09,0x4d,0x61,0x74,0x63,0x68,0x54,0x69,
|
||||
0x6d,0x65,0x18,0x02,0x20,0x01,0x28,0x05,0x52,0x09,
|
||||
0x4d,0x61,0x74,0x63,0x68,0x54,0x69,0x6d,0x65,0x12,
|
||||
0x3d,0x0a,0x09,0x4a,0x6f,0x79,0x73,0x74,0x69,0x63,
|
||||
0x6b,0x73,0x18,0x03,0x20,0x03,0x28,0x0b,0x32,0x1f,
|
||||
0x2e,0x6d,0x72,0x63,0x2e,0x70,0x72,0x6f,0x74,0x6f,
|
||||
0x2e,0x50,0x72,0x6f,0x74,0x6f,0x62,0x75,0x66,0x4a,
|
||||
0x6f,0x79,0x73,0x74,0x69,0x63,0x6b,0x44,0x61,0x74,
|
||||
0x61,0x12,0x2a,0x0a,0x10,0x41,0x76,0x61,0x69,0x6c,
|
||||
0x61,0x62,0x6c,0x65,0x42,0x75,0x74,0x74,0x6f,0x6e,
|
||||
0x73,0x18,0x01,0x20,0x01,0x28,0x04,0x52,0x10,0x41,
|
||||
0x76,0x61,0x69,0x6c,0x61,0x62,0x6c,0x65,0x42,0x75,
|
||||
0x74,0x74,0x6f,0x6e,0x73,0x12,0x18,0x0a,0x07,0x42,
|
||||
0x75,0x74,0x74,0x6f,0x6e,0x73,0x18,0x02,0x20,0x01,
|
||||
0x28,0x04,0x52,0x07,0x42,0x75,0x74,0x74,0x6f,0x6e,
|
||||
0x73,0x12,0x24,0x0a,0x0d,0x41,0x76,0x61,0x69,0x6c,
|
||||
0x61,0x62,0x6c,0x65,0x41,0x78,0x65,0x73,0x18,0x03,
|
||||
0x20,0x01,0x28,0x0d,0x52,0x0d,0x41,0x76,0x61,0x69,
|
||||
0x6c,0x61,0x62,0x6c,0x65,0x41,0x78,0x65,0x73,0x12,
|
||||
0x12,0x0a,0x04,0x41,0x78,0x65,0x73,0x18,0x04,0x20,
|
||||
0x03,0x28,0x11,0x52,0x04,0x41,0x78,0x65,0x73,0x12,
|
||||
0x1a,0x0a,0x08,0x50,0x4f,0x56,0x43,0x6f,0x75,0x6e,
|
||||
0x74,0x18,0x05,0x20,0x01,0x28,0x0d,0x52,0x08,0x50,
|
||||
0x4f,0x56,0x43,0x6f,0x75,0x6e,0x74,0x12,0x12,0x0a,
|
||||
0x04,0x50,0x4f,0x56,0x73,0x18,0x06,0x20,0x01,0x28,
|
||||
0x0d,0x52,0x04,0x50,0x4f,0x56,0x73,0x22,0xba,0x01,
|
||||
0x0a,0x13,0x50,0x72,0x6f,0x74,0x6f,0x62,0x75,0x66,
|
||||
0x43,0x6f,0x6e,0x74,0x72,0x6f,0x6c,0x44,0x61,0x74,
|
||||
0x61,0x12,0x20,0x0a,0x0b,0x43,0x6f,0x6e,0x74,0x72,
|
||||
0x6f,0x6c,0x57,0x6f,0x72,0x64,0x18,0x01,0x20,0x01,
|
||||
0x28,0x0d,0x52,0x0b,0x43,0x6f,0x6e,0x74,0x72,0x6f,
|
||||
0x6c,0x57,0x6f,0x72,0x64,0x12,0x1c,0x0a,0x09,0x4d,
|
||||
0x61,0x74,0x63,0x68,0x54,0x69,0x6d,0x65,0x18,0x02,
|
||||
0x20,0x01,0x28,0x05,0x52,0x09,0x4d,0x61,0x74,0x63,
|
||||
0x68,0x54,0x69,0x6d,0x65,0x12,0x3d,0x0a,0x09,0x4a,
|
||||
0x6f,0x79,0x73,0x74,0x69,0x63,0x6b,0x73,0x18,0x03,
|
||||
0x20,0x03,0x28,0x0b,0x32,0x1f,0x2e,0x6d,0x72,0x63,
|
||||
0x2e,0x70,0x72,0x6f,0x74,0x6f,0x2e,0x50,0x72,0x6f,
|
||||
0x74,0x6f,0x62,0x75,0x66,0x4a,0x6f,0x79,0x73,0x74,
|
||||
0x69,0x63,0x6b,0x44,0x61,0x74,0x61,0x52,0x09,0x4a,
|
||||
0x6f,0x79,0x73,0x74,0x69,0x63,0x6b,0x73,0x12,0x24,
|
||||
0x0a,0x0d,0x43,0x75,0x72,0x72,0x65,0x6e,0x74,0x4f,
|
||||
0x70,0x4d,0x6f,0x64,0x65,0x18,0x04,0x20,0x01,0x28,
|
||||
0x06,0x52,0x0d,0x43,0x75,0x72,0x72,0x65,0x6e,0x74,
|
||||
0x4f,0x70,0x4d,0x6f,0x64,0x65,0x22,0xac,0x01,0x0a,
|
||||
0x1a,0x50,0x72,0x6f,0x74,0x6f,0x62,0x75,0x66,0x4a,
|
||||
0x6f,0x79,0x73,0x74,0x69,0x63,0x6b,0x44,0x65,0x73,
|
||||
0x63,0x72,0x69,0x70,0x74,0x6f,0x72,0x12,0x22,0x0a,
|
||||
0x0c,0x4a,0x6f,0x79,0x73,0x74,0x69,0x63,0x6b,0x4e,
|
||||
0x61,0x6d,0x65,0x18,0x01,0x20,0x01,0x28,0x09,0x52,
|
||||
0x0c,0x4a,0x6f,0x79,0x73,0x74,0x69,0x63,0x6b,0x4e,
|
||||
0x61,0x6d,0x65,0x12,0x1c,0x0a,0x09,0x49,0x73,0x47,
|
||||
0x61,0x6d,0x65,0x70,0x61,0x64,0x18,0x02,0x20,0x01,
|
||||
0x28,0x08,0x52,0x09,0x49,0x73,0x47,0x61,0x6d,0x65,
|
||||
0x70,0x61,0x64,0x12,0x20,0x0a,0x0b,0x47,0x61,0x6d,
|
||||
0x65,0x70,0x61,0x64,0x54,0x79,0x70,0x65,0x18,0x03,
|
||||
0x20,0x01,0x28,0x0d,0x52,0x0b,0x47,0x61,0x6d,0x65,
|
||||
0x70,0x61,0x64,0x54,0x79,0x70,0x65,0x12,0x2a,0x0a,
|
||||
0x10,0x53,0x75,0x70,0x70,0x6f,0x72,0x74,0x65,0x64,
|
||||
0x4f,0x75,0x74,0x70,0x75,0x74,0x73,0x18,0x04,0x20,
|
||||
0x01,0x28,0x0d,0x52,0x10,0x53,0x75,0x70,0x70,0x6f,
|
||||
0x72,0x74,0x65,0x64,0x4f,0x75,0x74,0x70,0x75,0x74,
|
||||
0x73,0x22,0x66,0x0a,0x1b,0x50,0x72,0x6f,0x74,0x6f,
|
||||
0x61,0x52,0x09,0x4a,0x6f,0x79,0x73,0x74,0x69,0x63,
|
||||
0x6b,0x73,0x12,0x24,0x0a,0x0d,0x43,0x75,0x72,0x72,
|
||||
0x65,0x6e,0x74,0x4f,0x70,0x4d,0x6f,0x64,0x65,0x18,
|
||||
0x04,0x20,0x01,0x28,0x06,0x52,0x0d,0x43,0x75,0x72,
|
||||
0x72,0x65,0x6e,0x74,0x4f,0x70,0x4d,0x6f,0x64,0x65,
|
||||
0x22,0xac,0x01,0x0a,0x1a,0x50,0x72,0x6f,0x74,0x6f,
|
||||
0x62,0x75,0x66,0x4a,0x6f,0x79,0x73,0x74,0x69,0x63,
|
||||
0x6b,0x44,0x65,0x73,0x63,0x72,0x69,0x70,0x74,0x6f,
|
||||
0x72,0x73,0x12,0x47,0x0a,0x0b,0x44,0x65,0x73,0x63,
|
||||
0x72,0x69,0x70,0x74,0x6f,0x72,0x73,0x18,0x01,0x20,
|
||||
0x03,0x28,0x0b,0x32,0x25,0x2e,0x6d,0x72,0x63,0x2e,
|
||||
0x70,0x72,0x6f,0x74,0x6f,0x2e,0x50,0x72,0x6f,0x74,
|
||||
0x6f,0x62,0x75,0x66,0x4a,0x6f,0x79,0x73,0x74,0x69,
|
||||
0x63,0x6b,0x44,0x65,0x73,0x63,0x72,0x69,0x70,0x74,
|
||||
0x6f,0x72,0x52,0x0b,0x44,0x65,0x73,0x63,0x72,0x69,
|
||||
0x70,0x74,0x6f,0x72,0x73,0x22,0x6a,0x0a,0x16,0x50,
|
||||
0x72,0x12,0x22,0x0a,0x0c,0x4a,0x6f,0x79,0x73,0x74,
|
||||
0x69,0x63,0x6b,0x4e,0x61,0x6d,0x65,0x18,0x01,0x20,
|
||||
0x01,0x28,0x09,0x52,0x0c,0x4a,0x6f,0x79,0x73,0x74,
|
||||
0x69,0x63,0x6b,0x4e,0x61,0x6d,0x65,0x12,0x1c,0x0a,
|
||||
0x09,0x49,0x73,0x47,0x61,0x6d,0x65,0x70,0x61,0x64,
|
||||
0x18,0x02,0x20,0x01,0x28,0x08,0x52,0x09,0x49,0x73,
|
||||
0x47,0x61,0x6d,0x65,0x70,0x61,0x64,0x12,0x20,0x0a,
|
||||
0x0b,0x47,0x61,0x6d,0x65,0x70,0x61,0x64,0x54,0x79,
|
||||
0x70,0x65,0x18,0x03,0x20,0x01,0x28,0x0d,0x52,0x0b,
|
||||
0x47,0x61,0x6d,0x65,0x70,0x61,0x64,0x54,0x79,0x70,
|
||||
0x65,0x12,0x2a,0x0a,0x10,0x53,0x75,0x70,0x70,0x6f,
|
||||
0x72,0x74,0x65,0x64,0x4f,0x75,0x74,0x70,0x75,0x74,
|
||||
0x73,0x18,0x04,0x20,0x01,0x28,0x0d,0x52,0x10,0x53,
|
||||
0x75,0x70,0x70,0x6f,0x72,0x74,0x65,0x64,0x4f,0x75,
|
||||
0x74,0x70,0x75,0x74,0x73,0x22,0x66,0x0a,0x1b,0x50,
|
||||
0x72,0x6f,0x74,0x6f,0x62,0x75,0x66,0x4a,0x6f,0x79,
|
||||
0x73,0x74,0x69,0x63,0x6b,0x4f,0x75,0x74,0x70,0x75,
|
||||
0x74,0x12,0x12,0x0a,0x04,0x4c,0x45,0x44,0x73,0x18,
|
||||
0x01,0x20,0x01,0x28,0x0d,0x52,0x04,0x4c,0x45,0x44,
|
||||
0x73,0x12,0x16,0x0a,0x06,0x52,0x75,0x6d,0x62,0x6c,
|
||||
0x65,0x18,0x02,0x20,0x01,0x28,0x0d,0x52,0x06,0x52,
|
||||
0x75,0x6d,0x62,0x6c,0x65,0x12,0x24,0x0a,0x0d,0x54,
|
||||
0x72,0x69,0x67,0x67,0x65,0x72,0x52,0x75,0x6d,0x62,
|
||||
0x6c,0x65,0x18,0x03,0x20,0x01,0x28,0x0d,0x52,0x0d,
|
||||
0x54,0x72,0x69,0x67,0x67,0x65,0x72,0x52,0x75,0x6d,
|
||||
0x62,0x6c,0x65,0x22,0x56,0x0a,0x17,0x50,0x72,0x6f,
|
||||
0x74,0x6f,0x62,0x75,0x66,0x4a,0x6f,0x79,0x73,0x74,
|
||||
0x69,0x63,0x6b,0x4f,0x75,0x74,0x70,0x75,0x74,0x73,
|
||||
0x12,0x3b,0x0a,0x07,0x4f,0x75,0x74,0x70,0x75,0x74,
|
||||
0x73,0x18,0x01,0x20,0x03,0x28,0x0b,0x32,0x21,0x2e,
|
||||
0x73,0x74,0x69,0x63,0x6b,0x44,0x65,0x73,0x63,0x72,
|
||||
0x69,0x70,0x74,0x6f,0x72,0x73,0x12,0x47,0x0a,0x0b,
|
||||
0x44,0x65,0x73,0x63,0x72,0x69,0x70,0x74,0x6f,0x72,
|
||||
0x73,0x18,0x01,0x20,0x03,0x28,0x0b,0x32,0x25,0x2e,
|
||||
0x6d,0x72,0x63,0x2e,0x70,0x72,0x6f,0x74,0x6f,0x2e,
|
||||
0x50,0x72,0x6f,0x74,0x6f,0x62,0x75,0x66,0x4a,0x6f,
|
||||
0x79,0x73,0x74,0x69,0x63,0x6b,0x4f,0x75,0x74,0x70,
|
||||
0x75,0x74,0x52,0x07,0x4f,0x75,0x74,0x70,0x75,0x74,
|
||||
0x73,0x22,0x95,0x01,0x0a,0x11,0x50,0x72,0x6f,0x74,
|
||||
0x6f,0x62,0x75,0x66,0x4d,0x61,0x74,0x63,0x68,0x49,
|
||||
0x6e,0x66,0x6f,0x12,0x1c,0x0a,0x09,0x45,0x76,0x65,
|
||||
0x6e,0x74,0x4e,0x61,0x6d,0x65,0x18,0x01,0x20,0x01,
|
||||
0x28,0x09,0x52,0x09,0x45,0x76,0x65,0x6e,0x74,0x4e,
|
||||
0x61,0x6d,0x65,0x12,0x20,0x0a,0x0b,0x4d,0x61,0x74,
|
||||
0x63,0x68,0x4e,0x75,0x6d,0x62,0x65,0x72,0x18,0x02,
|
||||
0x20,0x01,0x28,0x05,0x52,0x0b,0x4d,0x61,0x74,0x63,
|
||||
0x68,0x4e,0x75,0x6d,0x62,0x65,0x72,0x12,0x22,0x0a,
|
||||
0x0c,0x52,0x65,0x70,0x6c,0x61,0x79,0x4e,0x75,0x6d,
|
||||
0x62,0x65,0x72,0x18,0x03,0x20,0x01,0x28,0x05,0x52,
|
||||
0x0c,0x52,0x65,0x70,0x6c,0x61,0x79,0x4e,0x75,0x6d,
|
||||
0x62,0x65,0x72,0x12,0x1c,0x0a,0x09,0x4d,0x61,0x74,
|
||||
0x63,0x68,0x54,0x79,0x70,0x65,0x18,0x04,0x20,0x01,
|
||||
0x28,0x05,0x52,0x09,0x4d,0x61,0x74,0x63,0x68,0x54,
|
||||
0x79,0x70,0x65,0x22,0x9f,0x01,0x0a,0x11,0x50,0x72,
|
||||
0x6f,0x74,0x6f,0x62,0x75,0x66,0x45,0x72,0x72,0x6f,
|
||||
0x72,0x49,0x6e,0x66,0x6f,0x12,0x18,0x0a,0x07,0x49,
|
||||
0x73,0x45,0x72,0x72,0x6f,0x72,0x18,0x01,0x20,0x01,
|
||||
0x28,0x08,0x52,0x07,0x49,0x73,0x45,0x72,0x72,0x6f,
|
||||
0x72,0x12,0x1c,0x0a,0x09,0x45,0x72,0x72,0x6f,0x72,
|
||||
0x43,0x6f,0x64,0x65,0x18,0x02,0x20,0x01,0x28,0x11,
|
||||
0x52,0x09,0x45,0x72,0x72,0x6f,0x72,0x43,0x6f,0x64,
|
||||
0x65,0x12,0x18,0x0a,0x07,0x44,0x65,0x74,0x61,0x69,
|
||||
0x6c,0x73,0x18,0x03,0x20,0x01,0x28,0x09,0x52,0x07,
|
||||
0x44,0x65,0x74,0x61,0x69,0x6c,0x73,0x12,0x1a,0x0a,
|
||||
0x08,0x4c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x18,
|
||||
0x04,0x20,0x01,0x28,0x09,0x52,0x08,0x4c,0x6f,0x63,
|
||||
0x61,0x74,0x69,0x6f,0x6e,0x12,0x1c,0x0a,0x09,0x43,
|
||||
0x61,0x6c,0x6c,0x53,0x74,0x61,0x63,0x6b,0x18,0x05,
|
||||
0x20,0x01,0x28,0x09,0x52,0x09,0x43,0x61,0x6c,0x6c,
|
||||
0x53,0x74,0x61,0x63,0x6b,0x22,0x38,0x0a,0x0e,0x50,
|
||||
0x72,0x6f,0x74,0x6f,0x62,0x75,0x66,0x4f,0x70,0x4d,
|
||||
0x6f,0x64,0x65,0x12,0x12,0x0a,0x04,0x48,0x61,0x73,
|
||||
0x68,0x18,0x01,0x20,0x01,0x28,0x06,0x52,0x04,0x48,
|
||||
0x61,0x73,0x68,0x12,0x12,0x0a,0x04,0x4e,0x61,0x6d,
|
||||
0x65,0x18,0x02,0x20,0x01,0x28,0x09,0x52,0x04,0x4e,
|
||||
0x61,0x6d,0x65,0x22,0x4b,0x0a,0x18,0x50,0x72,0x6f,
|
||||
0x74,0x6f,0x62,0x75,0x66,0x41,0x76,0x61,0x69,0x6c,
|
||||
0x61,0x62,0x6c,0x65,0x4f,0x70,0x4d,0x6f,0x64,0x65,
|
||||
0x73,0x12,0x2f,0x0a,0x05,0x4d,0x6f,0x64,0x65,0x73,
|
||||
0x18,0x01,0x20,0x03,0x28,0x0b,0x32,0x19,0x2e,0x6d,
|
||||
0x72,0x63,0x2e,0x70,0x72,0x6f,0x74,0x6f,0x2e,0x50,
|
||||
0x72,0x6f,0x74,0x6f,0x62,0x75,0x66,0x4f,0x70,0x4d,
|
||||
0x6f,0x64,0x65,0x52,0x05,0x4d,0x6f,0x64,0x65,0x73,
|
||||
0x22,0xc4,0x01,0x0a,0x1a,0x50,0x72,0x6f,0x74,0x6f,
|
||||
0x62,0x75,0x66,0x45,0x72,0x72,0x6f,0x72,0x49,0x6e,
|
||||
0x66,0x6f,0x54,0x69,0x6d,0x65,0x73,0x74,0x61,0x6d,
|
||||
0x70,0x12,0x3a,0x0a,0x09,0x45,0x72,0x72,0x6f,0x72,
|
||||
0x49,0x6e,0x66,0x6f,0x18,0x01,0x20,0x01,0x28,0x0b,
|
||||
0x32,0x1c,0x2e,0x6d,0x72,0x63,0x2e,0x70,0x72,0x6f,
|
||||
0x79,0x73,0x74,0x69,0x63,0x6b,0x44,0x65,0x73,0x63,
|
||||
0x72,0x69,0x70,0x74,0x6f,0x72,0x52,0x0b,0x44,0x65,
|
||||
0x73,0x63,0x72,0x69,0x70,0x74,0x6f,0x72,0x73,0x22,
|
||||
0x6a,0x0a,0x16,0x50,0x72,0x6f,0x74,0x6f,0x62,0x75,
|
||||
0x66,0x4a,0x6f,0x79,0x73,0x74,0x69,0x63,0x6b,0x4f,
|
||||
0x75,0x74,0x70,0x75,0x74,0x12,0x12,0x0a,0x04,0x4c,
|
||||
0x45,0x44,0x73,0x18,0x01,0x20,0x01,0x28,0x0d,0x52,
|
||||
0x04,0x4c,0x45,0x44,0x73,0x12,0x16,0x0a,0x06,0x52,
|
||||
0x75,0x6d,0x62,0x6c,0x65,0x18,0x02,0x20,0x01,0x28,
|
||||
0x0d,0x52,0x06,0x52,0x75,0x6d,0x62,0x6c,0x65,0x12,
|
||||
0x24,0x0a,0x0d,0x54,0x72,0x69,0x67,0x67,0x65,0x72,
|
||||
0x52,0x75,0x6d,0x62,0x6c,0x65,0x18,0x03,0x20,0x01,
|
||||
0x28,0x0d,0x52,0x0d,0x54,0x72,0x69,0x67,0x67,0x65,
|
||||
0x72,0x52,0x75,0x6d,0x62,0x6c,0x65,0x22,0x56,0x0a,
|
||||
0x17,0x50,0x72,0x6f,0x74,0x6f,0x62,0x75,0x66,0x4a,
|
||||
0x6f,0x79,0x73,0x74,0x69,0x63,0x6b,0x4f,0x75,0x74,
|
||||
0x70,0x75,0x74,0x73,0x12,0x3b,0x0a,0x07,0x4f,0x75,
|
||||
0x74,0x70,0x75,0x74,0x73,0x18,0x01,0x20,0x03,0x28,
|
||||
0x0b,0x32,0x21,0x2e,0x6d,0x72,0x63,0x2e,0x70,0x72,
|
||||
0x6f,0x74,0x6f,0x2e,0x50,0x72,0x6f,0x74,0x6f,0x62,
|
||||
0x75,0x66,0x4a,0x6f,0x79,0x73,0x74,0x69,0x63,0x6b,
|
||||
0x4f,0x75,0x74,0x70,0x75,0x74,0x52,0x07,0x4f,0x75,
|
||||
0x74,0x70,0x75,0x74,0x73,0x22,0x95,0x01,0x0a,0x11,
|
||||
0x50,0x72,0x6f,0x74,0x6f,0x62,0x75,0x66,0x4d,0x61,
|
||||
0x74,0x63,0x68,0x49,0x6e,0x66,0x6f,0x12,0x1c,0x0a,
|
||||
0x09,0x45,0x76,0x65,0x6e,0x74,0x4e,0x61,0x6d,0x65,
|
||||
0x18,0x01,0x20,0x01,0x28,0x09,0x52,0x09,0x45,0x76,
|
||||
0x65,0x6e,0x74,0x4e,0x61,0x6d,0x65,0x12,0x20,0x0a,
|
||||
0x0b,0x4d,0x61,0x74,0x63,0x68,0x4e,0x75,0x6d,0x62,
|
||||
0x65,0x72,0x18,0x02,0x20,0x01,0x28,0x05,0x52,0x0b,
|
||||
0x4d,0x61,0x74,0x63,0x68,0x4e,0x75,0x6d,0x62,0x65,
|
||||
0x72,0x12,0x22,0x0a,0x0c,0x52,0x65,0x70,0x6c,0x61,
|
||||
0x79,0x4e,0x75,0x6d,0x62,0x65,0x72,0x18,0x03,0x20,
|
||||
0x01,0x28,0x05,0x52,0x0c,0x52,0x65,0x70,0x6c,0x61,
|
||||
0x79,0x4e,0x75,0x6d,0x62,0x65,0x72,0x12,0x1c,0x0a,
|
||||
0x09,0x4d,0x61,0x74,0x63,0x68,0x54,0x79,0x70,0x65,
|
||||
0x18,0x04,0x20,0x01,0x28,0x05,0x52,0x09,0x4d,0x61,
|
||||
0x74,0x63,0x68,0x54,0x79,0x70,0x65,0x22,0x9f,0x01,
|
||||
0x0a,0x11,0x50,0x72,0x6f,0x74,0x6f,0x62,0x75,0x66,
|
||||
0x45,0x72,0x72,0x6f,0x72,0x49,0x6e,0x66,0x6f,0x12,
|
||||
0x18,0x0a,0x07,0x49,0x73,0x45,0x72,0x72,0x6f,0x72,
|
||||
0x18,0x01,0x20,0x01,0x28,0x08,0x52,0x07,0x49,0x73,
|
||||
0x45,0x72,0x72,0x6f,0x72,0x12,0x1c,0x0a,0x09,0x45,
|
||||
0x72,0x72,0x6f,0x72,0x43,0x6f,0x64,0x65,0x18,0x02,
|
||||
0x20,0x01,0x28,0x11,0x52,0x09,0x45,0x72,0x72,0x6f,
|
||||
0x72,0x43,0x6f,0x64,0x65,0x12,0x18,0x0a,0x07,0x44,
|
||||
0x65,0x74,0x61,0x69,0x6c,0x73,0x18,0x03,0x20,0x01,
|
||||
0x28,0x09,0x52,0x07,0x44,0x65,0x74,0x61,0x69,0x6c,
|
||||
0x73,0x12,0x1a,0x0a,0x08,0x4c,0x6f,0x63,0x61,0x74,
|
||||
0x69,0x6f,0x6e,0x18,0x04,0x20,0x01,0x28,0x09,0x52,
|
||||
0x08,0x4c,0x6f,0x63,0x61,0x74,0x69,0x6f,0x6e,0x12,
|
||||
0x1c,0x0a,0x09,0x43,0x61,0x6c,0x6c,0x53,0x74,0x61,
|
||||
0x63,0x6b,0x18,0x05,0x20,0x01,0x28,0x09,0x52,0x09,
|
||||
0x43,0x61,0x6c,0x6c,0x53,0x74,0x61,0x63,0x6b,0x22,
|
||||
0x38,0x0a,0x0e,0x50,0x72,0x6f,0x74,0x6f,0x62,0x75,
|
||||
0x66,0x4f,0x70,0x4d,0x6f,0x64,0x65,0x12,0x12,0x0a,
|
||||
0x04,0x48,0x61,0x73,0x68,0x18,0x01,0x20,0x01,0x28,
|
||||
0x06,0x52,0x04,0x48,0x61,0x73,0x68,0x12,0x12,0x0a,
|
||||
0x04,0x4e,0x61,0x6d,0x65,0x18,0x02,0x20,0x01,0x28,
|
||||
0x09,0x52,0x04,0x4e,0x61,0x6d,0x65,0x22,0x4b,0x0a,
|
||||
0x18,0x50,0x72,0x6f,0x74,0x6f,0x62,0x75,0x66,0x41,
|
||||
0x76,0x61,0x69,0x6c,0x61,0x62,0x6c,0x65,0x4f,0x70,
|
||||
0x4d,0x6f,0x64,0x65,0x73,0x12,0x2f,0x0a,0x05,0x4d,
|
||||
0x6f,0x64,0x65,0x73,0x18,0x01,0x20,0x03,0x28,0x0b,
|
||||
0x32,0x19,0x2e,0x6d,0x72,0x63,0x2e,0x70,0x72,0x6f,
|
||||
0x74,0x6f,0x2e,0x50,0x72,0x6f,0x74,0x6f,0x62,0x75,
|
||||
0x66,0x45,0x72,0x72,0x6f,0x72,0x49,0x6e,0x66,0x6f,
|
||||
0x52,0x09,0x45,0x72,0x72,0x6f,0x72,0x49,0x6e,0x66,
|
||||
0x6f,0x12,0x1c,0x0a,0x09,0x54,0x69,0x6d,0x65,0x73,
|
||||
0x74,0x61,0x6d,0x70,0x18,0x02,0x20,0x01,0x28,0x04,
|
||||
0x52,0x09,0x54,0x69,0x6d,0x65,0x73,0x74,0x61,0x6d,
|
||||
0x70,0x12,0x26,0x0a,0x0e,0x53,0x65,0x71,0x75,0x65,
|
||||
0x6e,0x63,0x65,0x4e,0x75,0x6d,0x62,0x65,0x72,0x18,
|
||||
0x03,0x20,0x01,0x28,0x05,0x52,0x0e,0x53,0x65,0x71,
|
||||
0x75,0x65,0x6e,0x63,0x65,0x4e,0x75,0x6d,0x62,0x65,
|
||||
0x72,0x12,0x24,0x0a,0x0d,0x4e,0x75,0x6d,0x4f,0x63,
|
||||
0x63,0x75,0x72,0x61,0x6e,0x63,0x65,0x73,0x18,0x04,
|
||||
0x20,0x01,0x28,0x05,0x52,0x0d,0x4e,0x75,0x6d,0x4f,
|
||||
0x63,0x63,0x75,0x72,0x61,0x6e,0x63,0x65,0x73,0x22,
|
||||
0x86,0x01,0x0a,0x1c,0x50,0x72,0x6f,0x74,0x6f,0x62,
|
||||
0x75,0x66,0x43,0x6f,0x6e,0x73,0x6f,0x6c,0x65,0x4c,
|
||||
0x69,0x6e,0x65,0x54,0x69,0x6d,0x65,0x73,0x74,0x61,
|
||||
0x6d,0x70,0x12,0x20,0x0a,0x0b,0x43,0x6f,0x6e,0x73,
|
||||
0x6f,0x6c,0x65,0x4c,0x69,0x6e,0x65,0x18,0x01,0x20,
|
||||
0x01,0x28,0x09,0x52,0x0b,0x43,0x6f,0x6e,0x73,0x6f,
|
||||
0x6c,0x65,0x4c,0x69,0x6e,0x65,0x12,0x1c,0x0a,0x09,
|
||||
0x54,0x69,0x6d,0x65,0x73,0x74,0x61,0x6d,0x70,0x18,
|
||||
0x02,0x20,0x01,0x28,0x04,0x52,0x09,0x54,0x69,0x6d,
|
||||
0x65,0x73,0x74,0x61,0x6d,0x70,0x12,0x26,0x0a,0x0e,
|
||||
0x53,0x65,0x71,0x75,0x65,0x6e,0x63,0x65,0x4e,0x75,
|
||||
0x6d,0x62,0x65,0x72,0x18,0x03,0x20,0x01,0x28,0x05,
|
||||
0x52,0x0e,0x53,0x65,0x71,0x75,0x65,0x6e,0x63,0x65,
|
||||
0x4e,0x75,0x6d,0x62,0x65,0x72,0x42,0x0f,0x0a,0x0d,
|
||||
0x63,0x6f,0x6d,0x2e,0x6d,0x72,0x63,0x2e,0x70,0x72,
|
||||
0x6f,0x74,0x6f,0x4a,0xb4,0x14,0x0a,0x06,0x12,0x04,
|
||||
0x00,0x00,0x50,0x01,0x0a,0x08,0x0a,0x01,0x0c,0x12,
|
||||
0x03,0x00,0x00,0x12,0x0a,0x08,0x0a,0x01,0x02,0x12,
|
||||
0x03,0x02,0x00,0x12,0x0a,0x08,0x0a,0x01,0x08,0x12,
|
||||
0x03,0x04,0x00,0x26,0x0a,0x09,0x0a,0x02,0x08,0x01,
|
||||
0x12,0x03,0x04,0x00,0x26,0x0a,0x0a,0x0a,0x02,0x04,
|
||||
0x00,0x12,0x04,0x06,0x00,0x0f,0x01,0x0a,0x0a,0x0a,
|
||||
0x03,0x04,0x00,0x01,0x12,0x03,0x06,0x08,0x1c,0x0a,
|
||||
0x0b,0x0a,0x04,0x04,0x00,0x02,0x00,0x12,0x03,0x07,
|
||||
0x04,0x20,0x0a,0x0c,0x0a,0x05,0x04,0x00,0x02,0x00,
|
||||
0x05,0x12,0x03,0x07,0x04,0x0a,0x0a,0x0c,0x0a,0x05,
|
||||
0x04,0x00,0x02,0x00,0x01,0x12,0x03,0x07,0x0b,0x1b,
|
||||
0x0a,0x0c,0x0a,0x05,0x04,0x00,0x02,0x00,0x03,0x12,
|
||||
0x03,0x07,0x1e,0x1f,0x0a,0x0b,0x0a,0x04,0x04,0x00,
|
||||
0x02,0x01,0x12,0x03,0x08,0x04,0x17,0x0a,0x0c,0x0a,
|
||||
0x05,0x04,0x00,0x02,0x01,0x05,0x12,0x03,0x08,0x04,
|
||||
0x0a,0x0a,0x0c,0x0a,0x05,0x04,0x00,0x02,0x01,0x01,
|
||||
0x12,0x03,0x08,0x0b,0x12,0x0a,0x0c,0x0a,0x05,0x04,
|
||||
0x00,0x02,0x01,0x03,0x12,0x03,0x08,0x15,0x16,0x0a,
|
||||
0x0b,0x0a,0x04,0x04,0x00,0x02,0x02,0x12,0x03,0x09,
|
||||
0x04,0x1d,0x0a,0x0c,0x0a,0x05,0x04,0x00,0x02,0x02,
|
||||
0x05,0x12,0x03,0x09,0x04,0x0a,0x0a,0x0c,0x0a,0x05,
|
||||
0x04,0x00,0x02,0x02,0x01,0x12,0x03,0x09,0x0b,0x18,
|
||||
0x0a,0x0c,0x0a,0x05,0x04,0x00,0x02,0x02,0x03,0x12,
|
||||
0x03,0x09,0x1b,0x1c,0x0a,0x0b,0x0a,0x04,0x04,0x00,
|
||||
0x02,0x03,0x12,0x03,0x0a,0x04,0x1d,0x0a,0x0c,0x0a,
|
||||
0x05,0x04,0x00,0x02,0x03,0x04,0x12,0x03,0x0a,0x04,
|
||||
0x0c,0x0a,0x0c,0x0a,0x05,0x04,0x00,0x02,0x03,0x05,
|
||||
0x12,0x03,0x0a,0x0d,0x13,0x0a,0x0c,0x0a,0x05,0x04,
|
||||
0x00,0x02,0x03,0x01,0x12,0x03,0x0a,0x14,0x18,0x0a,
|
||||
0x0c,0x0a,0x05,0x04,0x00,0x02,0x03,0x03,0x12,0x03,
|
||||
0x0a,0x1b,0x1c,0x0a,0x3e,0x0a,0x04,0x04,0x00,0x02,
|
||||
0x04,0x12,0x03,0x0d,0x04,0x18,0x1a,0x31,0x20,0x45,
|
||||
0x61,0x63,0x68,0x20,0x50,0x4f,0x56,0x20,0x74,0x61,
|
||||
0x6b,0x65,0x73,0x20,0x75,0x70,0x20,0x34,0x20,0x62,
|
||||
0x69,0x74,0x73,0x0a,0x20,0x57,0x65,0x20,0x63,0x61,
|
||||
0x6e,0x20,0x66,0x69,0x74,0x20,0x38,0x20,0x69,0x6e,
|
||||
0x20,0x68,0x65,0x72,0x65,0x2e,0x0a,0x0a,0x0c,0x0a,
|
||||
0x05,0x04,0x00,0x02,0x04,0x05,0x12,0x03,0x0d,0x04,
|
||||
0x0a,0x0a,0x0c,0x0a,0x05,0x04,0x00,0x02,0x04,0x01,
|
||||
0x12,0x03,0x0d,0x0b,0x13,0x0a,0x0c,0x0a,0x05,0x04,
|
||||
0x00,0x02,0x04,0x03,0x12,0x03,0x0d,0x16,0x17,0x0a,
|
||||
0x0b,0x0a,0x04,0x04,0x00,0x02,0x05,0x12,0x03,0x0e,
|
||||
0x04,0x14,0x0a,0x0c,0x0a,0x05,0x04,0x00,0x02,0x05,
|
||||
0x05,0x12,0x03,0x0e,0x04,0x0a,0x0a,0x0c,0x0a,0x05,
|
||||
0x04,0x00,0x02,0x05,0x01,0x12,0x03,0x0e,0x0b,0x0f,
|
||||
0x0a,0x0c,0x0a,0x05,0x04,0x00,0x02,0x05,0x03,0x12,
|
||||
0x03,0x0e,0x12,0x13,0x0a,0x0a,0x0a,0x02,0x04,0x01,
|
||||
0x12,0x04,0x11,0x00,0x16,0x01,0x0a,0x0a,0x0a,0x03,
|
||||
0x04,0x01,0x01,0x12,0x03,0x11,0x08,0x1b,0x0a,0x0b,
|
||||
0x0a,0x04,0x04,0x01,0x02,0x00,0x12,0x03,0x12,0x04,
|
||||
0x1b,0x0a,0x0c,0x0a,0x05,0x04,0x01,0x02,0x00,0x05,
|
||||
0x12,0x03,0x12,0x04,0x0a,0x0a,0x0c,0x0a,0x05,0x04,
|
||||
0x01,0x02,0x00,0x01,0x12,0x03,0x12,0x0b,0x16,0x0a,
|
||||
0x0c,0x0a,0x05,0x04,0x01,0x02,0x00,0x03,0x12,0x03,
|
||||
0x12,0x19,0x1a,0x0a,0x0b,0x0a,0x04,0x04,0x01,0x02,
|
||||
0x01,0x12,0x03,0x13,0x04,0x18,0x0a,0x0c,0x0a,0x05,
|
||||
0x04,0x01,0x02,0x01,0x05,0x12,0x03,0x13,0x04,0x09,
|
||||
0x0a,0x0c,0x0a,0x05,0x04,0x01,0x02,0x01,0x01,0x12,
|
||||
0x03,0x13,0x0a,0x13,0x0a,0x0c,0x0a,0x05,0x04,0x01,
|
||||
0x02,0x01,0x03,0x12,0x03,0x13,0x16,0x17,0x0a,0x0b,
|
||||
0x0a,0x04,0x04,0x01,0x02,0x02,0x12,0x03,0x14,0x04,
|
||||
0x30,0x0a,0x0c,0x0a,0x05,0x04,0x01,0x02,0x02,0x04,
|
||||
0x12,0x03,0x14,0x04,0x0c,0x0a,0x0c,0x0a,0x05,0x04,
|
||||
0x01,0x02,0x02,0x06,0x12,0x03,0x14,0x0d,0x21,0x0a,
|
||||
0x0c,0x0a,0x05,0x04,0x01,0x02,0x02,0x01,0x12,0x03,
|
||||
0x14,0x22,0x2b,0x0a,0x0c,0x0a,0x05,0x04,0x01,0x02,
|
||||
0x02,0x03,0x12,0x03,0x14,0x2e,0x2f,0x0a,0x0b,0x0a,
|
||||
0x04,0x04,0x01,0x02,0x03,0x12,0x03,0x15,0x04,0x1e,
|
||||
0x0a,0x0c,0x0a,0x05,0x04,0x01,0x02,0x03,0x05,0x12,
|
||||
0x03,0x15,0x04,0x0b,0x0a,0x0c,0x0a,0x05,0x04,0x01,
|
||||
0x02,0x03,0x01,0x12,0x03,0x15,0x0c,0x19,0x0a,0x0c,
|
||||
0x0a,0x05,0x04,0x01,0x02,0x03,0x03,0x12,0x03,0x15,
|
||||
0x1c,0x1d,0x0a,0x0a,0x0a,0x02,0x04,0x02,0x12,0x04,
|
||||
0x18,0x00,0x1d,0x01,0x0a,0x0a,0x0a,0x03,0x04,0x02,
|
||||
0x01,0x12,0x03,0x18,0x08,0x22,0x0a,0x0b,0x0a,0x04,
|
||||
0x04,0x02,0x02,0x00,0x12,0x03,0x19,0x04,0x1c,0x0a,
|
||||
0x0c,0x0a,0x05,0x04,0x02,0x02,0x00,0x05,0x12,0x03,
|
||||
0x19,0x04,0x0a,0x0a,0x0c,0x0a,0x05,0x04,0x02,0x02,
|
||||
0x00,0x01,0x12,0x03,0x19,0x0b,0x17,0x0a,0x0c,0x0a,
|
||||
0x05,0x04,0x02,0x02,0x00,0x03,0x12,0x03,0x19,0x1a,
|
||||
0x1b,0x0a,0x0b,0x0a,0x04,0x04,0x02,0x02,0x01,0x12,
|
||||
0x03,0x1a,0x04,0x17,0x0a,0x0c,0x0a,0x05,0x04,0x02,
|
||||
0x02,0x01,0x05,0x12,0x03,0x1a,0x04,0x08,0x0a,0x0c,
|
||||
0x0a,0x05,0x04,0x02,0x02,0x01,0x01,0x12,0x03,0x1a,
|
||||
0x09,0x12,0x0a,0x0c,0x0a,0x05,0x04,0x02,0x02,0x01,
|
||||
0x03,0x12,0x03,0x1a,0x15,0x16,0x0a,0x0b,0x0a,0x04,
|
||||
0x04,0x02,0x02,0x02,0x12,0x03,0x1b,0x04,0x1b,0x0a,
|
||||
0x0c,0x0a,0x05,0x04,0x02,0x02,0x02,0x05,0x12,0x03,
|
||||
0x1b,0x04,0x0a,0x0a,0x0c,0x0a,0x05,0x04,0x02,0x02,
|
||||
0x02,0x01,0x12,0x03,0x1b,0x0b,0x16,0x0a,0x0c,0x0a,
|
||||
0x05,0x04,0x02,0x02,0x02,0x03,0x12,0x03,0x1b,0x19,
|
||||
0x1a,0x0a,0x0b,0x0a,0x04,0x04,0x02,0x02,0x03,0x12,
|
||||
0x03,0x1c,0x04,0x20,0x0a,0x0c,0x0a,0x05,0x04,0x02,
|
||||
0x02,0x03,0x05,0x12,0x03,0x1c,0x04,0x0a,0x0a,0x0c,
|
||||
0x0a,0x05,0x04,0x02,0x02,0x03,0x01,0x12,0x03,0x1c,
|
||||
0x0b,0x1b,0x0a,0x0c,0x0a,0x05,0x04,0x02,0x02,0x03,
|
||||
0x03,0x12,0x03,0x1c,0x1e,0x1f,0x0a,0x0a,0x0a,0x02,
|
||||
0x04,0x03,0x12,0x04,0x1f,0x00,0x21,0x01,0x0a,0x0a,
|
||||
0x0a,0x03,0x04,0x03,0x01,0x12,0x03,0x1f,0x08,0x23,
|
||||
0x0a,0x0b,0x0a,0x04,0x04,0x03,0x02,0x00,0x12,0x03,
|
||||
0x20,0x04,0x38,0x0a,0x0c,0x0a,0x05,0x04,0x03,0x02,
|
||||
0x00,0x04,0x12,0x03,0x20,0x04,0x0c,0x0a,0x0c,0x0a,
|
||||
0x05,0x04,0x03,0x02,0x00,0x06,0x12,0x03,0x20,0x0d,
|
||||
0x27,0x0a,0x0c,0x0a,0x05,0x04,0x03,0x02,0x00,0x01,
|
||||
0x12,0x03,0x20,0x28,0x33,0x0a,0x0c,0x0a,0x05,0x04,
|
||||
0x03,0x02,0x00,0x03,0x12,0x03,0x20,0x36,0x37,0x0a,
|
||||
0x0a,0x0a,0x02,0x04,0x04,0x12,0x04,0x23,0x00,0x27,
|
||||
0x01,0x0a,0x0a,0x0a,0x03,0x04,0x04,0x01,0x12,0x03,
|
||||
0x23,0x08,0x1e,0x0a,0x0b,0x0a,0x04,0x04,0x04,0x02,
|
||||
0x00,0x12,0x03,0x24,0x04,0x14,0x0a,0x0c,0x0a,0x05,
|
||||
0x04,0x04,0x02,0x00,0x05,0x12,0x03,0x24,0x04,0x0a,
|
||||
0x0a,0x0c,0x0a,0x05,0x04,0x04,0x02,0x00,0x01,0x12,
|
||||
0x03,0x24,0x0b,0x0f,0x0a,0x0c,0x0a,0x05,0x04,0x04,
|
||||
0x02,0x00,0x03,0x12,0x03,0x24,0x12,0x13,0x0a,0x2b,
|
||||
0x0a,0x04,0x04,0x04,0x02,0x01,0x12,0x03,0x25,0x04,
|
||||
0x16,0x22,0x1e,0x20,0x31,0x36,0x20,0x62,0x69,0x74,
|
||||
0x73,0x2c,0x20,0x6c,0x65,0x66,0x74,0x20,0x6d,0x73,
|
||||
0x62,0x2c,0x20,0x72,0x69,0x67,0x68,0x74,0x20,0x6c,
|
||||
0x73,0x62,0x0a,0x0a,0x0c,0x0a,0x05,0x04,0x04,0x02,
|
||||
0x01,0x05,0x12,0x03,0x25,0x04,0x0a,0x0a,0x0c,0x0a,
|
||||
0x05,0x04,0x04,0x02,0x01,0x01,0x12,0x03,0x25,0x0b,
|
||||
0x11,0x0a,0x0c,0x0a,0x05,0x04,0x04,0x02,0x01,0x03,
|
||||
0x12,0x03,0x25,0x14,0x15,0x0a,0x2b,0x0a,0x04,0x04,
|
||||
0x04,0x02,0x02,0x12,0x03,0x26,0x04,0x1d,0x22,0x1e,
|
||||
0x20,0x31,0x36,0x20,0x62,0x69,0x74,0x73,0x2c,0x20,
|
||||
0x6c,0x65,0x66,0x74,0x20,0x6d,0x73,0x62,0x2c,0x20,
|
||||
0x72,0x69,0x67,0x68,0x74,0x20,0x6c,0x73,0x62,0x0a,
|
||||
0x0a,0x0c,0x0a,0x05,0x04,0x04,0x02,0x02,0x05,0x12,
|
||||
0x03,0x26,0x04,0x0a,0x0a,0x0c,0x0a,0x05,0x04,0x04,
|
||||
0x02,0x02,0x01,0x12,0x03,0x26,0x0b,0x18,0x0a,0x0c,
|
||||
0x0a,0x05,0x04,0x04,0x02,0x02,0x03,0x12,0x03,0x26,
|
||||
0x1b,0x1c,0x0a,0x0a,0x0a,0x02,0x04,0x05,0x12,0x04,
|
||||
0x29,0x00,0x2b,0x01,0x0a,0x0a,0x0a,0x03,0x04,0x05,
|
||||
0x01,0x12,0x03,0x29,0x08,0x1f,0x0a,0x0b,0x0a,0x04,
|
||||
0x04,0x05,0x02,0x00,0x12,0x03,0x2a,0x04,0x30,0x0a,
|
||||
0x0c,0x0a,0x05,0x04,0x05,0x02,0x00,0x04,0x12,0x03,
|
||||
0x2a,0x04,0x0c,0x0a,0x0c,0x0a,0x05,0x04,0x05,0x02,
|
||||
0x00,0x06,0x12,0x03,0x2a,0x0d,0x23,0x0a,0x0c,0x0a,
|
||||
0x05,0x04,0x05,0x02,0x00,0x01,0x12,0x03,0x2a,0x24,
|
||||
0x2b,0x0a,0x0c,0x0a,0x05,0x04,0x05,0x02,0x00,0x03,
|
||||
0x12,0x03,0x2a,0x2e,0x2f,0x0a,0x0a,0x0a,0x02,0x04,
|
||||
0x06,0x12,0x04,0x2d,0x00,0x32,0x01,0x0a,0x0a,0x0a,
|
||||
0x03,0x04,0x06,0x01,0x12,0x03,0x2d,0x08,0x19,0x0a,
|
||||
0x0b,0x0a,0x04,0x04,0x06,0x02,0x00,0x12,0x03,0x2e,
|
||||
0x04,0x19,0x0a,0x0c,0x0a,0x05,0x04,0x06,0x02,0x00,
|
||||
0x05,0x12,0x03,0x2e,0x04,0x0a,0x0a,0x0c,0x0a,0x05,
|
||||
0x04,0x06,0x02,0x00,0x01,0x12,0x03,0x2e,0x0b,0x14,
|
||||
0x0a,0x0c,0x0a,0x05,0x04,0x06,0x02,0x00,0x03,0x12,
|
||||
0x03,0x2e,0x17,0x18,0x0a,0x0b,0x0a,0x04,0x04,0x06,
|
||||
0x02,0x01,0x12,0x03,0x2f,0x04,0x1a,0x0a,0x0c,0x0a,
|
||||
0x05,0x04,0x06,0x02,0x01,0x05,0x12,0x03,0x2f,0x04,
|
||||
0x09,0x0a,0x0c,0x0a,0x05,0x04,0x06,0x02,0x01,0x01,
|
||||
0x12,0x03,0x2f,0x0a,0x15,0x0a,0x0c,0x0a,0x05,0x04,
|
||||
0x06,0x02,0x01,0x03,0x12,0x03,0x2f,0x18,0x19,0x0a,
|
||||
0x0b,0x0a,0x04,0x04,0x06,0x02,0x02,0x12,0x03,0x30,
|
||||
0x04,0x1b,0x0a,0x0c,0x0a,0x05,0x04,0x06,0x02,0x02,
|
||||
0x05,0x12,0x03,0x30,0x04,0x09,0x0a,0x0c,0x0a,0x05,
|
||||
0x04,0x06,0x02,0x02,0x01,0x12,0x03,0x30,0x0a,0x16,
|
||||
0x0a,0x0c,0x0a,0x05,0x04,0x06,0x02,0x02,0x03,0x12,
|
||||
0x03,0x30,0x19,0x1a,0x0a,0x0b,0x0a,0x04,0x04,0x06,
|
||||
0x02,0x03,0x12,0x03,0x31,0x04,0x18,0x0a,0x0c,0x0a,
|
||||
0x05,0x04,0x06,0x02,0x03,0x05,0x12,0x03,0x31,0x04,
|
||||
0x09,0x0a,0x0c,0x0a,0x05,0x04,0x06,0x02,0x03,0x01,
|
||||
0x12,0x03,0x31,0x0a,0x13,0x0a,0x0c,0x0a,0x05,0x04,
|
||||
0x06,0x02,0x03,0x03,0x12,0x03,0x31,0x16,0x17,0x0a,
|
||||
0x0a,0x0a,0x02,0x04,0x07,0x12,0x04,0x34,0x00,0x3a,
|
||||
0x01,0x0a,0x0a,0x0a,0x03,0x04,0x07,0x01,0x12,0x03,
|
||||
0x34,0x08,0x19,0x0a,0x0b,0x0a,0x04,0x04,0x07,0x02,
|
||||
0x00,0x12,0x03,0x35,0x04,0x15,0x0a,0x0c,0x0a,0x05,
|
||||
0x04,0x07,0x02,0x00,0x05,0x12,0x03,0x35,0x04,0x08,
|
||||
0x0a,0x0c,0x0a,0x05,0x04,0x07,0x02,0x00,0x01,0x12,
|
||||
0x03,0x35,0x09,0x10,0x0a,0x0c,0x0a,0x05,0x04,0x07,
|
||||
0x02,0x00,0x03,0x12,0x03,0x35,0x13,0x14,0x0a,0x0b,
|
||||
0x0a,0x04,0x04,0x07,0x02,0x01,0x12,0x03,0x36,0x04,
|
||||
0x19,0x0a,0x0c,0x0a,0x05,0x04,0x07,0x02,0x01,0x05,
|
||||
0x12,0x03,0x36,0x04,0x0a,0x0a,0x0c,0x0a,0x05,0x04,
|
||||
0x07,0x02,0x01,0x01,0x12,0x03,0x36,0x0b,0x14,0x0a,
|
||||
0x0c,0x0a,0x05,0x04,0x07,0x02,0x01,0x03,0x12,0x03,
|
||||
0x36,0x17,0x18,0x0a,0x0b,0x0a,0x04,0x04,0x07,0x02,
|
||||
0x02,0x12,0x03,0x37,0x04,0x17,0x0a,0x0c,0x0a,0x05,
|
||||
0x04,0x07,0x02,0x02,0x05,0x12,0x03,0x37,0x04,0x0a,
|
||||
0x0a,0x0c,0x0a,0x05,0x04,0x07,0x02,0x02,0x01,0x12,
|
||||
0x03,0x37,0x0b,0x12,0x0a,0x0c,0x0a,0x05,0x04,0x07,
|
||||
0x02,0x02,0x03,0x12,0x03,0x37,0x15,0x16,0x0a,0x0b,
|
||||
0x0a,0x04,0x04,0x07,0x02,0x03,0x12,0x03,0x38,0x04,
|
||||
0x18,0x0a,0x0c,0x0a,0x05,0x04,0x07,0x02,0x03,0x05,
|
||||
0x12,0x03,0x38,0x04,0x0a,0x0a,0x0c,0x0a,0x05,0x04,
|
||||
0x07,0x02,0x03,0x01,0x12,0x03,0x38,0x0b,0x13,0x0a,
|
||||
0x0c,0x0a,0x05,0x04,0x07,0x02,0x03,0x03,0x12,0x03,
|
||||
0x38,0x16,0x17,0x0a,0x0b,0x0a,0x04,0x04,0x07,0x02,
|
||||
0x04,0x12,0x03,0x39,0x04,0x19,0x0a,0x0c,0x0a,0x05,
|
||||
0x04,0x07,0x02,0x04,0x05,0x12,0x03,0x39,0x04,0x0a,
|
||||
0x0a,0x0c,0x0a,0x05,0x04,0x07,0x02,0x04,0x01,0x12,
|
||||
0x03,0x39,0x0b,0x14,0x0a,0x0c,0x0a,0x05,0x04,0x07,
|
||||
0x02,0x04,0x03,0x12,0x03,0x39,0x17,0x18,0x0a,0x0a,
|
||||
0x0a,0x02,0x04,0x08,0x12,0x04,0x3c,0x00,0x3f,0x01,
|
||||
0x0a,0x0a,0x0a,0x03,0x04,0x08,0x01,0x12,0x03,0x3c,
|
||||
0x08,0x16,0x0a,0x0b,0x0a,0x04,0x04,0x08,0x02,0x00,
|
||||
0x12,0x03,0x3d,0x04,0x15,0x0a,0x0c,0x0a,0x05,0x04,
|
||||
0x08,0x02,0x00,0x05,0x12,0x03,0x3d,0x04,0x0b,0x0a,
|
||||
0x0c,0x0a,0x05,0x04,0x08,0x02,0x00,0x01,0x12,0x03,
|
||||
0x3d,0x0c,0x10,0x0a,0x0c,0x0a,0x05,0x04,0x08,0x02,
|
||||
0x00,0x03,0x12,0x03,0x3d,0x13,0x14,0x0a,0x0b,0x0a,
|
||||
0x04,0x04,0x08,0x02,0x01,0x12,0x03,0x3e,0x04,0x14,
|
||||
0x0a,0x0c,0x0a,0x05,0x04,0x08,0x02,0x01,0x05,0x12,
|
||||
0x03,0x3e,0x04,0x0a,0x0a,0x0c,0x0a,0x05,0x04,0x08,
|
||||
0x02,0x01,0x01,0x12,0x03,0x3e,0x0b,0x0f,0x0a,0x0c,
|
||||
0x0a,0x05,0x04,0x08,0x02,0x01,0x03,0x12,0x03,0x3e,
|
||||
0x12,0x13,0x0a,0x0a,0x0a,0x02,0x04,0x09,0x12,0x04,
|
||||
0x41,0x00,0x43,0x01,0x0a,0x0a,0x0a,0x03,0x04,0x09,
|
||||
0x01,0x12,0x03,0x41,0x08,0x20,0x0a,0x0b,0x0a,0x04,
|
||||
0x04,0x09,0x02,0x00,0x12,0x03,0x42,0x04,0x26,0x0a,
|
||||
0x0c,0x0a,0x05,0x04,0x09,0x02,0x00,0x04,0x12,0x03,
|
||||
0x42,0x04,0x0c,0x0a,0x0c,0x0a,0x05,0x04,0x09,0x02,
|
||||
0x00,0x06,0x12,0x03,0x42,0x0d,0x1b,0x0a,0x0c,0x0a,
|
||||
0x05,0x04,0x09,0x02,0x00,0x01,0x12,0x03,0x42,0x1c,
|
||||
0x21,0x0a,0x0c,0x0a,0x05,0x04,0x09,0x02,0x00,0x03,
|
||||
0x12,0x03,0x42,0x24,0x25,0x0a,0x0a,0x0a,0x02,0x04,
|
||||
0x0a,0x12,0x04,0x45,0x00,0x4a,0x01,0x0a,0x0a,0x0a,
|
||||
0x03,0x04,0x0a,0x01,0x12,0x03,0x45,0x08,0x22,0x0a,
|
||||
0x0b,0x0a,0x04,0x04,0x0a,0x02,0x00,0x12,0x03,0x46,
|
||||
0x04,0x24,0x0a,0x0c,0x0a,0x05,0x04,0x0a,0x02,0x00,
|
||||
0x06,0x12,0x03,0x46,0x04,0x15,0x0a,0x0c,0x0a,0x05,
|
||||
0x04,0x0a,0x02,0x00,0x01,0x12,0x03,0x46,0x16,0x1f,
|
||||
0x0a,0x0c,0x0a,0x05,0x04,0x0a,0x02,0x00,0x03,0x12,
|
||||
0x03,0x46,0x22,0x23,0x0a,0x0b,0x0a,0x04,0x04,0x0a,
|
||||
0x02,0x01,0x12,0x03,0x47,0x04,0x19,0x0a,0x0c,0x0a,
|
||||
0x05,0x04,0x0a,0x02,0x01,0x05,0x12,0x03,0x47,0x04,
|
||||
0x0a,0x0a,0x0c,0x0a,0x05,0x04,0x0a,0x02,0x01,0x01,
|
||||
0x12,0x03,0x47,0x0b,0x14,0x0a,0x0c,0x0a,0x05,0x04,
|
||||
0x0a,0x02,0x01,0x03,0x12,0x03,0x47,0x17,0x18,0x0a,
|
||||
0x0b,0x0a,0x04,0x04,0x0a,0x02,0x02,0x12,0x03,0x48,
|
||||
0x04,0x1d,0x0a,0x0c,0x0a,0x05,0x04,0x0a,0x02,0x02,
|
||||
0x05,0x12,0x03,0x48,0x04,0x09,0x0a,0x0c,0x0a,0x05,
|
||||
0x04,0x0a,0x02,0x02,0x01,0x12,0x03,0x48,0x0a,0x18,
|
||||
0x0a,0x0c,0x0a,0x05,0x04,0x0a,0x02,0x02,0x03,0x12,
|
||||
0x03,0x48,0x1b,0x1c,0x0a,0x0b,0x0a,0x04,0x04,0x0a,
|
||||
0x02,0x03,0x12,0x03,0x49,0x04,0x1c,0x0a,0x0c,0x0a,
|
||||
0x05,0x04,0x0a,0x02,0x03,0x05,0x12,0x03,0x49,0x04,
|
||||
0x09,0x0a,0x0c,0x0a,0x05,0x04,0x0a,0x02,0x03,0x01,
|
||||
0x12,0x03,0x49,0x0a,0x17,0x0a,0x0c,0x0a,0x05,0x04,
|
||||
0x0a,0x02,0x03,0x03,0x12,0x03,0x49,0x1a,0x1b,0x0a,
|
||||
0x0a,0x0a,0x02,0x04,0x0b,0x12,0x04,0x4c,0x00,0x50,
|
||||
0x01,0x0a,0x0a,0x0a,0x03,0x04,0x0b,0x01,0x12,0x03,
|
||||
0x4c,0x08,0x24,0x0a,0x0b,0x0a,0x04,0x04,0x0b,0x02,
|
||||
0x00,0x12,0x03,0x4d,0x04,0x1b,0x0a,0x0c,0x0a,0x05,
|
||||
0x04,0x0b,0x02,0x00,0x05,0x12,0x03,0x4d,0x04,0x0a,
|
||||
0x0a,0x0c,0x0a,0x05,0x04,0x0b,0x02,0x00,0x01,0x12,
|
||||
0x03,0x4d,0x0b,0x16,0x0a,0x0c,0x0a,0x05,0x04,0x0b,
|
||||
0x02,0x00,0x03,0x12,0x03,0x4d,0x19,0x1a,0x0a,0x0b,
|
||||
0x0a,0x04,0x04,0x0b,0x02,0x01,0x12,0x03,0x4e,0x04,
|
||||
0x19,0x0a,0x0c,0x0a,0x05,0x04,0x0b,0x02,0x01,0x05,
|
||||
0x12,0x03,0x4e,0x04,0x0a,0x0a,0x0c,0x0a,0x05,0x04,
|
||||
0x0b,0x02,0x01,0x01,0x12,0x03,0x4e,0x0b,0x14,0x0a,
|
||||
0x0c,0x0a,0x05,0x04,0x0b,0x02,0x01,0x03,0x12,0x03,
|
||||
0x4e,0x17,0x18,0x0a,0x0b,0x0a,0x04,0x04,0x0b,0x02,
|
||||
0x02,0x12,0x03,0x4f,0x04,0x1d,0x0a,0x0c,0x0a,0x05,
|
||||
0x04,0x0b,0x02,0x02,0x05,0x12,0x03,0x4f,0x04,0x09,
|
||||
0x0a,0x0c,0x0a,0x05,0x04,0x0b,0x02,0x02,0x01,0x12,
|
||||
0x03,0x4f,0x0a,0x18,0x0a,0x0c,0x0a,0x05,0x04,0x0b,
|
||||
0x02,0x02,0x03,0x12,0x03,0x4f,0x1b,0x1c,0x62,0x06,
|
||||
0x70,0x72,0x6f,0x74,0x6f,0x33,
|
||||
0x66,0x4f,0x70,0x4d,0x6f,0x64,0x65,0x52,0x05,0x4d,
|
||||
0x6f,0x64,0x65,0x73,0x22,0xc4,0x01,0x0a,0x1a,0x50,
|
||||
0x72,0x6f,0x74,0x6f,0x62,0x75,0x66,0x45,0x72,0x72,
|
||||
0x6f,0x72,0x49,0x6e,0x66,0x6f,0x54,0x69,0x6d,0x65,
|
||||
0x73,0x74,0x61,0x6d,0x70,0x12,0x3a,0x0a,0x09,0x45,
|
||||
0x72,0x72,0x6f,0x72,0x49,0x6e,0x66,0x6f,0x18,0x01,
|
||||
0x20,0x01,0x28,0x0b,0x32,0x1c,0x2e,0x6d,0x72,0x63,
|
||||
0x2e,0x70,0x72,0x6f,0x74,0x6f,0x2e,0x50,0x72,0x6f,
|
||||
0x74,0x6f,0x62,0x75,0x66,0x45,0x72,0x72,0x6f,0x72,
|
||||
0x49,0x6e,0x66,0x6f,0x52,0x09,0x45,0x72,0x72,0x6f,
|
||||
0x72,0x49,0x6e,0x66,0x6f,0x12,0x1c,0x0a,0x09,0x54,
|
||||
0x69,0x6d,0x65,0x73,0x74,0x61,0x6d,0x70,0x18,0x02,
|
||||
0x20,0x01,0x28,0x04,0x52,0x09,0x54,0x69,0x6d,0x65,
|
||||
0x73,0x74,0x61,0x6d,0x70,0x12,0x26,0x0a,0x0e,0x53,
|
||||
0x65,0x71,0x75,0x65,0x6e,0x63,0x65,0x4e,0x75,0x6d,
|
||||
0x62,0x65,0x72,0x18,0x03,0x20,0x01,0x28,0x05,0x52,
|
||||
0x0e,0x53,0x65,0x71,0x75,0x65,0x6e,0x63,0x65,0x4e,
|
||||
0x75,0x6d,0x62,0x65,0x72,0x12,0x24,0x0a,0x0d,0x4e,
|
||||
0x75,0x6d,0x4f,0x63,0x63,0x75,0x72,0x61,0x6e,0x63,
|
||||
0x65,0x73,0x18,0x04,0x20,0x01,0x28,0x05,0x52,0x0d,
|
||||
0x4e,0x75,0x6d,0x4f,0x63,0x63,0x75,0x72,0x61,0x6e,
|
||||
0x63,0x65,0x73,0x22,0x86,0x01,0x0a,0x1c,0x50,0x72,
|
||||
0x6f,0x74,0x6f,0x62,0x75,0x66,0x43,0x6f,0x6e,0x73,
|
||||
0x6f,0x6c,0x65,0x4c,0x69,0x6e,0x65,0x54,0x69,0x6d,
|
||||
0x65,0x73,0x74,0x61,0x6d,0x70,0x12,0x20,0x0a,0x0b,
|
||||
0x43,0x6f,0x6e,0x73,0x6f,0x6c,0x65,0x4c,0x69,0x6e,
|
||||
0x65,0x18,0x01,0x20,0x01,0x28,0x09,0x52,0x0b,0x43,
|
||||
0x6f,0x6e,0x73,0x6f,0x6c,0x65,0x4c,0x69,0x6e,0x65,
|
||||
0x12,0x1c,0x0a,0x09,0x54,0x69,0x6d,0x65,0x73,0x74,
|
||||
0x61,0x6d,0x70,0x18,0x02,0x20,0x01,0x28,0x04,0x52,
|
||||
0x09,0x54,0x69,0x6d,0x65,0x73,0x74,0x61,0x6d,0x70,
|
||||
0x12,0x26,0x0a,0x0e,0x53,0x65,0x71,0x75,0x65,0x6e,
|
||||
0x63,0x65,0x4e,0x75,0x6d,0x62,0x65,0x72,0x18,0x03,
|
||||
0x20,0x01,0x28,0x05,0x52,0x0e,0x53,0x65,0x71,0x75,
|
||||
0x65,0x6e,0x63,0x65,0x4e,0x75,0x6d,0x62,0x65,0x72,
|
||||
0x42,0x0f,0x0a,0x0d,0x63,0x6f,0x6d,0x2e,0x6d,0x72,
|
||||
0x63,0x2e,0x70,0x72,0x6f,0x74,0x6f,0x4a,0x93,0x17,
|
||||
0x0a,0x06,0x12,0x04,0x00,0x00,0x5b,0x01,0x0a,0x08,
|
||||
0x0a,0x01,0x0c,0x12,0x03,0x00,0x00,0x12,0x0a,0x08,
|
||||
0x0a,0x01,0x02,0x12,0x03,0x02,0x00,0x12,0x0a,0x08,
|
||||
0x0a,0x01,0x08,0x12,0x03,0x04,0x00,0x26,0x0a,0x09,
|
||||
0x0a,0x02,0x08,0x01,0x12,0x03,0x04,0x00,0x26,0x0a,
|
||||
0x0a,0x0a,0x02,0x04,0x00,0x12,0x04,0x06,0x00,0x0a,
|
||||
0x01,0x0a,0x0a,0x0a,0x03,0x04,0x00,0x01,0x12,0x03,
|
||||
0x06,0x08,0x1a,0x0a,0x0b,0x0a,0x04,0x04,0x00,0x02,
|
||||
0x00,0x12,0x03,0x07,0x04,0x11,0x0a,0x0c,0x0a,0x05,
|
||||
0x04,0x00,0x02,0x00,0x05,0x12,0x03,0x07,0x04,0x0a,
|
||||
0x0a,0x0c,0x0a,0x05,0x04,0x00,0x02,0x00,0x01,0x12,
|
||||
0x03,0x07,0x0b,0x0c,0x0a,0x0c,0x0a,0x05,0x04,0x00,
|
||||
0x02,0x00,0x03,0x12,0x03,0x07,0x0f,0x10,0x0a,0x0b,
|
||||
0x0a,0x04,0x04,0x00,0x02,0x01,0x12,0x03,0x08,0x04,
|
||||
0x11,0x0a,0x0c,0x0a,0x05,0x04,0x00,0x02,0x01,0x05,
|
||||
0x12,0x03,0x08,0x04,0x0a,0x0a,0x0c,0x0a,0x05,0x04,
|
||||
0x00,0x02,0x01,0x01,0x12,0x03,0x08,0x0b,0x0c,0x0a,
|
||||
0x0c,0x0a,0x05,0x04,0x00,0x02,0x01,0x03,0x12,0x03,
|
||||
0x08,0x0f,0x10,0x0a,0x0b,0x0a,0x04,0x04,0x00,0x02,
|
||||
0x02,0x12,0x03,0x09,0x04,0x12,0x0a,0x0c,0x0a,0x05,
|
||||
0x04,0x00,0x02,0x02,0x05,0x12,0x03,0x09,0x04,0x08,
|
||||
0x0a,0x0c,0x0a,0x05,0x04,0x00,0x02,0x02,0x01,0x12,
|
||||
0x03,0x09,0x09,0x0d,0x0a,0x0c,0x0a,0x05,0x04,0x00,
|
||||
0x02,0x02,0x03,0x12,0x03,0x09,0x10,0x11,0x0a,0x0a,
|
||||
0x0a,0x02,0x04,0x01,0x12,0x04,0x0c,0x00,0x0e,0x01,
|
||||
0x0a,0x0a,0x0a,0x03,0x04,0x01,0x01,0x12,0x03,0x0c,
|
||||
0x08,0x1c,0x0a,0x0b,0x0a,0x04,0x04,0x01,0x02,0x00,
|
||||
0x12,0x03,0x0d,0x04,0x2c,0x0a,0x0c,0x0a,0x05,0x04,
|
||||
0x01,0x02,0x00,0x04,0x12,0x03,0x0d,0x04,0x0c,0x0a,
|
||||
0x0c,0x0a,0x05,0x04,0x01,0x02,0x00,0x06,0x12,0x03,
|
||||
0x0d,0x0d,0x1f,0x0a,0x0c,0x0a,0x05,0x04,0x01,0x02,
|
||||
0x00,0x01,0x12,0x03,0x0d,0x20,0x27,0x0a,0x0c,0x0a,
|
||||
0x05,0x04,0x01,0x02,0x00,0x03,0x12,0x03,0x0d,0x2a,
|
||||
0x2b,0x0a,0x0a,0x0a,0x02,0x04,0x02,0x12,0x04,0x10,
|
||||
0x00,0x1a,0x01,0x0a,0x0a,0x0a,0x03,0x04,0x02,0x01,
|
||||
0x12,0x03,0x10,0x08,0x1c,0x0a,0x0b,0x0a,0x04,0x04,
|
||||
0x02,0x02,0x00,0x12,0x03,0x11,0x04,0x20,0x0a,0x0c,
|
||||
0x0a,0x05,0x04,0x02,0x02,0x00,0x05,0x12,0x03,0x11,
|
||||
0x04,0x0a,0x0a,0x0c,0x0a,0x05,0x04,0x02,0x02,0x00,
|
||||
0x01,0x12,0x03,0x11,0x0b,0x1b,0x0a,0x0c,0x0a,0x05,
|
||||
0x04,0x02,0x02,0x00,0x03,0x12,0x03,0x11,0x1e,0x1f,
|
||||
0x0a,0x0b,0x0a,0x04,0x04,0x02,0x02,0x01,0x12,0x03,
|
||||
0x12,0x04,0x17,0x0a,0x0c,0x0a,0x05,0x04,0x02,0x02,
|
||||
0x01,0x05,0x12,0x03,0x12,0x04,0x0a,0x0a,0x0c,0x0a,
|
||||
0x05,0x04,0x02,0x02,0x01,0x01,0x12,0x03,0x12,0x0b,
|
||||
0x12,0x0a,0x0c,0x0a,0x05,0x04,0x02,0x02,0x01,0x03,
|
||||
0x12,0x03,0x12,0x15,0x16,0x0a,0x0b,0x0a,0x04,0x04,
|
||||
0x02,0x02,0x02,0x12,0x03,0x13,0x04,0x1d,0x0a,0x0c,
|
||||
0x0a,0x05,0x04,0x02,0x02,0x02,0x05,0x12,0x03,0x13,
|
||||
0x04,0x0a,0x0a,0x0c,0x0a,0x05,0x04,0x02,0x02,0x02,
|
||||
0x01,0x12,0x03,0x13,0x0b,0x18,0x0a,0x0c,0x0a,0x05,
|
||||
0x04,0x02,0x02,0x02,0x03,0x12,0x03,0x13,0x1b,0x1c,
|
||||
0x0a,0x0b,0x0a,0x04,0x04,0x02,0x02,0x03,0x12,0x03,
|
||||
0x14,0x04,0x1d,0x0a,0x0c,0x0a,0x05,0x04,0x02,0x02,
|
||||
0x03,0x04,0x12,0x03,0x14,0x04,0x0c,0x0a,0x0c,0x0a,
|
||||
0x05,0x04,0x02,0x02,0x03,0x05,0x12,0x03,0x14,0x0d,
|
||||
0x13,0x0a,0x0c,0x0a,0x05,0x04,0x02,0x02,0x03,0x01,
|
||||
0x12,0x03,0x14,0x14,0x18,0x0a,0x0c,0x0a,0x05,0x04,
|
||||
0x02,0x02,0x03,0x03,0x12,0x03,0x14,0x1b,0x1c,0x0a,
|
||||
0x3e,0x0a,0x04,0x04,0x02,0x02,0x04,0x12,0x03,0x17,
|
||||
0x04,0x18,0x1a,0x31,0x20,0x45,0x61,0x63,0x68,0x20,
|
||||
0x50,0x4f,0x56,0x20,0x74,0x61,0x6b,0x65,0x73,0x20,
|
||||
0x75,0x70,0x20,0x34,0x20,0x62,0x69,0x74,0x73,0x0a,
|
||||
0x20,0x57,0x65,0x20,0x63,0x61,0x6e,0x20,0x66,0x69,
|
||||
0x74,0x20,0x38,0x20,0x69,0x6e,0x20,0x68,0x65,0x72,
|
||||
0x65,0x2e,0x0a,0x0a,0x0c,0x0a,0x05,0x04,0x02,0x02,
|
||||
0x04,0x05,0x12,0x03,0x17,0x04,0x0a,0x0a,0x0c,0x0a,
|
||||
0x05,0x04,0x02,0x02,0x04,0x01,0x12,0x03,0x17,0x0b,
|
||||
0x13,0x0a,0x0c,0x0a,0x05,0x04,0x02,0x02,0x04,0x03,
|
||||
0x12,0x03,0x17,0x16,0x17,0x0a,0x0b,0x0a,0x04,0x04,
|
||||
0x02,0x02,0x05,0x12,0x03,0x18,0x04,0x14,0x0a,0x0c,
|
||||
0x0a,0x05,0x04,0x02,0x02,0x05,0x05,0x12,0x03,0x18,
|
||||
0x04,0x0a,0x0a,0x0c,0x0a,0x05,0x04,0x02,0x02,0x05,
|
||||
0x01,0x12,0x03,0x18,0x0b,0x0f,0x0a,0x0c,0x0a,0x05,
|
||||
0x04,0x02,0x02,0x05,0x03,0x12,0x03,0x18,0x12,0x13,
|
||||
0x0a,0x0b,0x0a,0x04,0x04,0x02,0x02,0x06,0x12,0x03,
|
||||
0x19,0x04,0x30,0x0a,0x0c,0x0a,0x05,0x04,0x02,0x02,
|
||||
0x06,0x04,0x12,0x03,0x19,0x04,0x0c,0x0a,0x0c,0x0a,
|
||||
0x05,0x04,0x02,0x02,0x06,0x06,0x12,0x03,0x19,0x0d,
|
||||
0x21,0x0a,0x0c,0x0a,0x05,0x04,0x02,0x02,0x06,0x01,
|
||||
0x12,0x03,0x19,0x22,0x2b,0x0a,0x0c,0x0a,0x05,0x04,
|
||||
0x02,0x02,0x06,0x03,0x12,0x03,0x19,0x2e,0x2f,0x0a,
|
||||
0x0a,0x0a,0x02,0x04,0x03,0x12,0x04,0x1c,0x00,0x21,
|
||||
0x01,0x0a,0x0a,0x0a,0x03,0x04,0x03,0x01,0x12,0x03,
|
||||
0x1c,0x08,0x1b,0x0a,0x0b,0x0a,0x04,0x04,0x03,0x02,
|
||||
0x00,0x12,0x03,0x1d,0x04,0x1b,0x0a,0x0c,0x0a,0x05,
|
||||
0x04,0x03,0x02,0x00,0x05,0x12,0x03,0x1d,0x04,0x0a,
|
||||
0x0a,0x0c,0x0a,0x05,0x04,0x03,0x02,0x00,0x01,0x12,
|
||||
0x03,0x1d,0x0b,0x16,0x0a,0x0c,0x0a,0x05,0x04,0x03,
|
||||
0x02,0x00,0x03,0x12,0x03,0x1d,0x19,0x1a,0x0a,0x0b,
|
||||
0x0a,0x04,0x04,0x03,0x02,0x01,0x12,0x03,0x1e,0x04,
|
||||
0x18,0x0a,0x0c,0x0a,0x05,0x04,0x03,0x02,0x01,0x05,
|
||||
0x12,0x03,0x1e,0x04,0x09,0x0a,0x0c,0x0a,0x05,0x04,
|
||||
0x03,0x02,0x01,0x01,0x12,0x03,0x1e,0x0a,0x13,0x0a,
|
||||
0x0c,0x0a,0x05,0x04,0x03,0x02,0x01,0x03,0x12,0x03,
|
||||
0x1e,0x16,0x17,0x0a,0x0b,0x0a,0x04,0x04,0x03,0x02,
|
||||
0x02,0x12,0x03,0x1f,0x04,0x30,0x0a,0x0c,0x0a,0x05,
|
||||
0x04,0x03,0x02,0x02,0x04,0x12,0x03,0x1f,0x04,0x0c,
|
||||
0x0a,0x0c,0x0a,0x05,0x04,0x03,0x02,0x02,0x06,0x12,
|
||||
0x03,0x1f,0x0d,0x21,0x0a,0x0c,0x0a,0x05,0x04,0x03,
|
||||
0x02,0x02,0x01,0x12,0x03,0x1f,0x22,0x2b,0x0a,0x0c,
|
||||
0x0a,0x05,0x04,0x03,0x02,0x02,0x03,0x12,0x03,0x1f,
|
||||
0x2e,0x2f,0x0a,0x0b,0x0a,0x04,0x04,0x03,0x02,0x03,
|
||||
0x12,0x03,0x20,0x04,0x1e,0x0a,0x0c,0x0a,0x05,0x04,
|
||||
0x03,0x02,0x03,0x05,0x12,0x03,0x20,0x04,0x0b,0x0a,
|
||||
0x0c,0x0a,0x05,0x04,0x03,0x02,0x03,0x01,0x12,0x03,
|
||||
0x20,0x0c,0x19,0x0a,0x0c,0x0a,0x05,0x04,0x03,0x02,
|
||||
0x03,0x03,0x12,0x03,0x20,0x1c,0x1d,0x0a,0x0a,0x0a,
|
||||
0x02,0x04,0x04,0x12,0x04,0x23,0x00,0x28,0x01,0x0a,
|
||||
0x0a,0x0a,0x03,0x04,0x04,0x01,0x12,0x03,0x23,0x08,
|
||||
0x22,0x0a,0x0b,0x0a,0x04,0x04,0x04,0x02,0x00,0x12,
|
||||
0x03,0x24,0x04,0x1c,0x0a,0x0c,0x0a,0x05,0x04,0x04,
|
||||
0x02,0x00,0x05,0x12,0x03,0x24,0x04,0x0a,0x0a,0x0c,
|
||||
0x0a,0x05,0x04,0x04,0x02,0x00,0x01,0x12,0x03,0x24,
|
||||
0x0b,0x17,0x0a,0x0c,0x0a,0x05,0x04,0x04,0x02,0x00,
|
||||
0x03,0x12,0x03,0x24,0x1a,0x1b,0x0a,0x0b,0x0a,0x04,
|
||||
0x04,0x04,0x02,0x01,0x12,0x03,0x25,0x04,0x17,0x0a,
|
||||
0x0c,0x0a,0x05,0x04,0x04,0x02,0x01,0x05,0x12,0x03,
|
||||
0x25,0x04,0x08,0x0a,0x0c,0x0a,0x05,0x04,0x04,0x02,
|
||||
0x01,0x01,0x12,0x03,0x25,0x09,0x12,0x0a,0x0c,0x0a,
|
||||
0x05,0x04,0x04,0x02,0x01,0x03,0x12,0x03,0x25,0x15,
|
||||
0x16,0x0a,0x0b,0x0a,0x04,0x04,0x04,0x02,0x02,0x12,
|
||||
0x03,0x26,0x04,0x1b,0x0a,0x0c,0x0a,0x05,0x04,0x04,
|
||||
0x02,0x02,0x05,0x12,0x03,0x26,0x04,0x0a,0x0a,0x0c,
|
||||
0x0a,0x05,0x04,0x04,0x02,0x02,0x01,0x12,0x03,0x26,
|
||||
0x0b,0x16,0x0a,0x0c,0x0a,0x05,0x04,0x04,0x02,0x02,
|
||||
0x03,0x12,0x03,0x26,0x19,0x1a,0x0a,0x0b,0x0a,0x04,
|
||||
0x04,0x04,0x02,0x03,0x12,0x03,0x27,0x04,0x20,0x0a,
|
||||
0x0c,0x0a,0x05,0x04,0x04,0x02,0x03,0x05,0x12,0x03,
|
||||
0x27,0x04,0x0a,0x0a,0x0c,0x0a,0x05,0x04,0x04,0x02,
|
||||
0x03,0x01,0x12,0x03,0x27,0x0b,0x1b,0x0a,0x0c,0x0a,
|
||||
0x05,0x04,0x04,0x02,0x03,0x03,0x12,0x03,0x27,0x1e,
|
||||
0x1f,0x0a,0x0a,0x0a,0x02,0x04,0x05,0x12,0x04,0x2a,
|
||||
0x00,0x2c,0x01,0x0a,0x0a,0x0a,0x03,0x04,0x05,0x01,
|
||||
0x12,0x03,0x2a,0x08,0x23,0x0a,0x0b,0x0a,0x04,0x04,
|
||||
0x05,0x02,0x00,0x12,0x03,0x2b,0x04,0x38,0x0a,0x0c,
|
||||
0x0a,0x05,0x04,0x05,0x02,0x00,0x04,0x12,0x03,0x2b,
|
||||
0x04,0x0c,0x0a,0x0c,0x0a,0x05,0x04,0x05,0x02,0x00,
|
||||
0x06,0x12,0x03,0x2b,0x0d,0x27,0x0a,0x0c,0x0a,0x05,
|
||||
0x04,0x05,0x02,0x00,0x01,0x12,0x03,0x2b,0x28,0x33,
|
||||
0x0a,0x0c,0x0a,0x05,0x04,0x05,0x02,0x00,0x03,0x12,
|
||||
0x03,0x2b,0x36,0x37,0x0a,0x0a,0x0a,0x02,0x04,0x06,
|
||||
0x12,0x04,0x2e,0x00,0x32,0x01,0x0a,0x0a,0x0a,0x03,
|
||||
0x04,0x06,0x01,0x12,0x03,0x2e,0x08,0x1e,0x0a,0x0b,
|
||||
0x0a,0x04,0x04,0x06,0x02,0x00,0x12,0x03,0x2f,0x04,
|
||||
0x14,0x0a,0x0c,0x0a,0x05,0x04,0x06,0x02,0x00,0x05,
|
||||
0x12,0x03,0x2f,0x04,0x0a,0x0a,0x0c,0x0a,0x05,0x04,
|
||||
0x06,0x02,0x00,0x01,0x12,0x03,0x2f,0x0b,0x0f,0x0a,
|
||||
0x0c,0x0a,0x05,0x04,0x06,0x02,0x00,0x03,0x12,0x03,
|
||||
0x2f,0x12,0x13,0x0a,0x2b,0x0a,0x04,0x04,0x06,0x02,
|
||||
0x01,0x12,0x03,0x30,0x04,0x16,0x22,0x1e,0x20,0x31,
|
||||
0x36,0x20,0x62,0x69,0x74,0x73,0x2c,0x20,0x6c,0x65,
|
||||
0x66,0x74,0x20,0x6d,0x73,0x62,0x2c,0x20,0x72,0x69,
|
||||
0x67,0x68,0x74,0x20,0x6c,0x73,0x62,0x0a,0x0a,0x0c,
|
||||
0x0a,0x05,0x04,0x06,0x02,0x01,0x05,0x12,0x03,0x30,
|
||||
0x04,0x0a,0x0a,0x0c,0x0a,0x05,0x04,0x06,0x02,0x01,
|
||||
0x01,0x12,0x03,0x30,0x0b,0x11,0x0a,0x0c,0x0a,0x05,
|
||||
0x04,0x06,0x02,0x01,0x03,0x12,0x03,0x30,0x14,0x15,
|
||||
0x0a,0x2b,0x0a,0x04,0x04,0x06,0x02,0x02,0x12,0x03,
|
||||
0x31,0x04,0x1d,0x22,0x1e,0x20,0x31,0x36,0x20,0x62,
|
||||
0x69,0x74,0x73,0x2c,0x20,0x6c,0x65,0x66,0x74,0x20,
|
||||
0x6d,0x73,0x62,0x2c,0x20,0x72,0x69,0x67,0x68,0x74,
|
||||
0x20,0x6c,0x73,0x62,0x0a,0x0a,0x0c,0x0a,0x05,0x04,
|
||||
0x06,0x02,0x02,0x05,0x12,0x03,0x31,0x04,0x0a,0x0a,
|
||||
0x0c,0x0a,0x05,0x04,0x06,0x02,0x02,0x01,0x12,0x03,
|
||||
0x31,0x0b,0x18,0x0a,0x0c,0x0a,0x05,0x04,0x06,0x02,
|
||||
0x02,0x03,0x12,0x03,0x31,0x1b,0x1c,0x0a,0x0a,0x0a,
|
||||
0x02,0x04,0x07,0x12,0x04,0x34,0x00,0x36,0x01,0x0a,
|
||||
0x0a,0x0a,0x03,0x04,0x07,0x01,0x12,0x03,0x34,0x08,
|
||||
0x1f,0x0a,0x0b,0x0a,0x04,0x04,0x07,0x02,0x00,0x12,
|
||||
0x03,0x35,0x04,0x30,0x0a,0x0c,0x0a,0x05,0x04,0x07,
|
||||
0x02,0x00,0x04,0x12,0x03,0x35,0x04,0x0c,0x0a,0x0c,
|
||||
0x0a,0x05,0x04,0x07,0x02,0x00,0x06,0x12,0x03,0x35,
|
||||
0x0d,0x23,0x0a,0x0c,0x0a,0x05,0x04,0x07,0x02,0x00,
|
||||
0x01,0x12,0x03,0x35,0x24,0x2b,0x0a,0x0c,0x0a,0x05,
|
||||
0x04,0x07,0x02,0x00,0x03,0x12,0x03,0x35,0x2e,0x2f,
|
||||
0x0a,0x0a,0x0a,0x02,0x04,0x08,0x12,0x04,0x38,0x00,
|
||||
0x3d,0x01,0x0a,0x0a,0x0a,0x03,0x04,0x08,0x01,0x12,
|
||||
0x03,0x38,0x08,0x19,0x0a,0x0b,0x0a,0x04,0x04,0x08,
|
||||
0x02,0x00,0x12,0x03,0x39,0x04,0x19,0x0a,0x0c,0x0a,
|
||||
0x05,0x04,0x08,0x02,0x00,0x05,0x12,0x03,0x39,0x04,
|
||||
0x0a,0x0a,0x0c,0x0a,0x05,0x04,0x08,0x02,0x00,0x01,
|
||||
0x12,0x03,0x39,0x0b,0x14,0x0a,0x0c,0x0a,0x05,0x04,
|
||||
0x08,0x02,0x00,0x03,0x12,0x03,0x39,0x17,0x18,0x0a,
|
||||
0x0b,0x0a,0x04,0x04,0x08,0x02,0x01,0x12,0x03,0x3a,
|
||||
0x04,0x1a,0x0a,0x0c,0x0a,0x05,0x04,0x08,0x02,0x01,
|
||||
0x05,0x12,0x03,0x3a,0x04,0x09,0x0a,0x0c,0x0a,0x05,
|
||||
0x04,0x08,0x02,0x01,0x01,0x12,0x03,0x3a,0x0a,0x15,
|
||||
0x0a,0x0c,0x0a,0x05,0x04,0x08,0x02,0x01,0x03,0x12,
|
||||
0x03,0x3a,0x18,0x19,0x0a,0x0b,0x0a,0x04,0x04,0x08,
|
||||
0x02,0x02,0x12,0x03,0x3b,0x04,0x1b,0x0a,0x0c,0x0a,
|
||||
0x05,0x04,0x08,0x02,0x02,0x05,0x12,0x03,0x3b,0x04,
|
||||
0x09,0x0a,0x0c,0x0a,0x05,0x04,0x08,0x02,0x02,0x01,
|
||||
0x12,0x03,0x3b,0x0a,0x16,0x0a,0x0c,0x0a,0x05,0x04,
|
||||
0x08,0x02,0x02,0x03,0x12,0x03,0x3b,0x19,0x1a,0x0a,
|
||||
0x0b,0x0a,0x04,0x04,0x08,0x02,0x03,0x12,0x03,0x3c,
|
||||
0x04,0x18,0x0a,0x0c,0x0a,0x05,0x04,0x08,0x02,0x03,
|
||||
0x05,0x12,0x03,0x3c,0x04,0x09,0x0a,0x0c,0x0a,0x05,
|
||||
0x04,0x08,0x02,0x03,0x01,0x12,0x03,0x3c,0x0a,0x13,
|
||||
0x0a,0x0c,0x0a,0x05,0x04,0x08,0x02,0x03,0x03,0x12,
|
||||
0x03,0x3c,0x16,0x17,0x0a,0x0a,0x0a,0x02,0x04,0x09,
|
||||
0x12,0x04,0x3f,0x00,0x45,0x01,0x0a,0x0a,0x0a,0x03,
|
||||
0x04,0x09,0x01,0x12,0x03,0x3f,0x08,0x19,0x0a,0x0b,
|
||||
0x0a,0x04,0x04,0x09,0x02,0x00,0x12,0x03,0x40,0x04,
|
||||
0x15,0x0a,0x0c,0x0a,0x05,0x04,0x09,0x02,0x00,0x05,
|
||||
0x12,0x03,0x40,0x04,0x08,0x0a,0x0c,0x0a,0x05,0x04,
|
||||
0x09,0x02,0x00,0x01,0x12,0x03,0x40,0x09,0x10,0x0a,
|
||||
0x0c,0x0a,0x05,0x04,0x09,0x02,0x00,0x03,0x12,0x03,
|
||||
0x40,0x13,0x14,0x0a,0x0b,0x0a,0x04,0x04,0x09,0x02,
|
||||
0x01,0x12,0x03,0x41,0x04,0x19,0x0a,0x0c,0x0a,0x05,
|
||||
0x04,0x09,0x02,0x01,0x05,0x12,0x03,0x41,0x04,0x0a,
|
||||
0x0a,0x0c,0x0a,0x05,0x04,0x09,0x02,0x01,0x01,0x12,
|
||||
0x03,0x41,0x0b,0x14,0x0a,0x0c,0x0a,0x05,0x04,0x09,
|
||||
0x02,0x01,0x03,0x12,0x03,0x41,0x17,0x18,0x0a,0x0b,
|
||||
0x0a,0x04,0x04,0x09,0x02,0x02,0x12,0x03,0x42,0x04,
|
||||
0x17,0x0a,0x0c,0x0a,0x05,0x04,0x09,0x02,0x02,0x05,
|
||||
0x12,0x03,0x42,0x04,0x0a,0x0a,0x0c,0x0a,0x05,0x04,
|
||||
0x09,0x02,0x02,0x01,0x12,0x03,0x42,0x0b,0x12,0x0a,
|
||||
0x0c,0x0a,0x05,0x04,0x09,0x02,0x02,0x03,0x12,0x03,
|
||||
0x42,0x15,0x16,0x0a,0x0b,0x0a,0x04,0x04,0x09,0x02,
|
||||
0x03,0x12,0x03,0x43,0x04,0x18,0x0a,0x0c,0x0a,0x05,
|
||||
0x04,0x09,0x02,0x03,0x05,0x12,0x03,0x43,0x04,0x0a,
|
||||
0x0a,0x0c,0x0a,0x05,0x04,0x09,0x02,0x03,0x01,0x12,
|
||||
0x03,0x43,0x0b,0x13,0x0a,0x0c,0x0a,0x05,0x04,0x09,
|
||||
0x02,0x03,0x03,0x12,0x03,0x43,0x16,0x17,0x0a,0x0b,
|
||||
0x0a,0x04,0x04,0x09,0x02,0x04,0x12,0x03,0x44,0x04,
|
||||
0x19,0x0a,0x0c,0x0a,0x05,0x04,0x09,0x02,0x04,0x05,
|
||||
0x12,0x03,0x44,0x04,0x0a,0x0a,0x0c,0x0a,0x05,0x04,
|
||||
0x09,0x02,0x04,0x01,0x12,0x03,0x44,0x0b,0x14,0x0a,
|
||||
0x0c,0x0a,0x05,0x04,0x09,0x02,0x04,0x03,0x12,0x03,
|
||||
0x44,0x17,0x18,0x0a,0x0a,0x0a,0x02,0x04,0x0a,0x12,
|
||||
0x04,0x47,0x00,0x4a,0x01,0x0a,0x0a,0x0a,0x03,0x04,
|
||||
0x0a,0x01,0x12,0x03,0x47,0x08,0x16,0x0a,0x0b,0x0a,
|
||||
0x04,0x04,0x0a,0x02,0x00,0x12,0x03,0x48,0x04,0x15,
|
||||
0x0a,0x0c,0x0a,0x05,0x04,0x0a,0x02,0x00,0x05,0x12,
|
||||
0x03,0x48,0x04,0x0b,0x0a,0x0c,0x0a,0x05,0x04,0x0a,
|
||||
0x02,0x00,0x01,0x12,0x03,0x48,0x0c,0x10,0x0a,0x0c,
|
||||
0x0a,0x05,0x04,0x0a,0x02,0x00,0x03,0x12,0x03,0x48,
|
||||
0x13,0x14,0x0a,0x0b,0x0a,0x04,0x04,0x0a,0x02,0x01,
|
||||
0x12,0x03,0x49,0x04,0x14,0x0a,0x0c,0x0a,0x05,0x04,
|
||||
0x0a,0x02,0x01,0x05,0x12,0x03,0x49,0x04,0x0a,0x0a,
|
||||
0x0c,0x0a,0x05,0x04,0x0a,0x02,0x01,0x01,0x12,0x03,
|
||||
0x49,0x0b,0x0f,0x0a,0x0c,0x0a,0x05,0x04,0x0a,0x02,
|
||||
0x01,0x03,0x12,0x03,0x49,0x12,0x13,0x0a,0x0a,0x0a,
|
||||
0x02,0x04,0x0b,0x12,0x04,0x4c,0x00,0x4e,0x01,0x0a,
|
||||
0x0a,0x0a,0x03,0x04,0x0b,0x01,0x12,0x03,0x4c,0x08,
|
||||
0x20,0x0a,0x0b,0x0a,0x04,0x04,0x0b,0x02,0x00,0x12,
|
||||
0x03,0x4d,0x04,0x26,0x0a,0x0c,0x0a,0x05,0x04,0x0b,
|
||||
0x02,0x00,0x04,0x12,0x03,0x4d,0x04,0x0c,0x0a,0x0c,
|
||||
0x0a,0x05,0x04,0x0b,0x02,0x00,0x06,0x12,0x03,0x4d,
|
||||
0x0d,0x1b,0x0a,0x0c,0x0a,0x05,0x04,0x0b,0x02,0x00,
|
||||
0x01,0x12,0x03,0x4d,0x1c,0x21,0x0a,0x0c,0x0a,0x05,
|
||||
0x04,0x0b,0x02,0x00,0x03,0x12,0x03,0x4d,0x24,0x25,
|
||||
0x0a,0x0a,0x0a,0x02,0x04,0x0c,0x12,0x04,0x50,0x00,
|
||||
0x55,0x01,0x0a,0x0a,0x0a,0x03,0x04,0x0c,0x01,0x12,
|
||||
0x03,0x50,0x08,0x22,0x0a,0x0b,0x0a,0x04,0x04,0x0c,
|
||||
0x02,0x00,0x12,0x03,0x51,0x04,0x24,0x0a,0x0c,0x0a,
|
||||
0x05,0x04,0x0c,0x02,0x00,0x06,0x12,0x03,0x51,0x04,
|
||||
0x15,0x0a,0x0c,0x0a,0x05,0x04,0x0c,0x02,0x00,0x01,
|
||||
0x12,0x03,0x51,0x16,0x1f,0x0a,0x0c,0x0a,0x05,0x04,
|
||||
0x0c,0x02,0x00,0x03,0x12,0x03,0x51,0x22,0x23,0x0a,
|
||||
0x0b,0x0a,0x04,0x04,0x0c,0x02,0x01,0x12,0x03,0x52,
|
||||
0x04,0x19,0x0a,0x0c,0x0a,0x05,0x04,0x0c,0x02,0x01,
|
||||
0x05,0x12,0x03,0x52,0x04,0x0a,0x0a,0x0c,0x0a,0x05,
|
||||
0x04,0x0c,0x02,0x01,0x01,0x12,0x03,0x52,0x0b,0x14,
|
||||
0x0a,0x0c,0x0a,0x05,0x04,0x0c,0x02,0x01,0x03,0x12,
|
||||
0x03,0x52,0x17,0x18,0x0a,0x0b,0x0a,0x04,0x04,0x0c,
|
||||
0x02,0x02,0x12,0x03,0x53,0x04,0x1d,0x0a,0x0c,0x0a,
|
||||
0x05,0x04,0x0c,0x02,0x02,0x05,0x12,0x03,0x53,0x04,
|
||||
0x09,0x0a,0x0c,0x0a,0x05,0x04,0x0c,0x02,0x02,0x01,
|
||||
0x12,0x03,0x53,0x0a,0x18,0x0a,0x0c,0x0a,0x05,0x04,
|
||||
0x0c,0x02,0x02,0x03,0x12,0x03,0x53,0x1b,0x1c,0x0a,
|
||||
0x0b,0x0a,0x04,0x04,0x0c,0x02,0x03,0x12,0x03,0x54,
|
||||
0x04,0x1c,0x0a,0x0c,0x0a,0x05,0x04,0x0c,0x02,0x03,
|
||||
0x05,0x12,0x03,0x54,0x04,0x09,0x0a,0x0c,0x0a,0x05,
|
||||
0x04,0x0c,0x02,0x03,0x01,0x12,0x03,0x54,0x0a,0x17,
|
||||
0x0a,0x0c,0x0a,0x05,0x04,0x0c,0x02,0x03,0x03,0x12,
|
||||
0x03,0x54,0x1a,0x1b,0x0a,0x0a,0x0a,0x02,0x04,0x0d,
|
||||
0x12,0x04,0x57,0x00,0x5b,0x01,0x0a,0x0a,0x0a,0x03,
|
||||
0x04,0x0d,0x01,0x12,0x03,0x57,0x08,0x24,0x0a,0x0b,
|
||||
0x0a,0x04,0x04,0x0d,0x02,0x00,0x12,0x03,0x58,0x04,
|
||||
0x1b,0x0a,0x0c,0x0a,0x05,0x04,0x0d,0x02,0x00,0x05,
|
||||
0x12,0x03,0x58,0x04,0x0a,0x0a,0x0c,0x0a,0x05,0x04,
|
||||
0x0d,0x02,0x00,0x01,0x12,0x03,0x58,0x0b,0x16,0x0a,
|
||||
0x0c,0x0a,0x05,0x04,0x0d,0x02,0x00,0x03,0x12,0x03,
|
||||
0x58,0x19,0x1a,0x0a,0x0b,0x0a,0x04,0x04,0x0d,0x02,
|
||||
0x01,0x12,0x03,0x59,0x04,0x19,0x0a,0x0c,0x0a,0x05,
|
||||
0x04,0x0d,0x02,0x01,0x05,0x12,0x03,0x59,0x04,0x0a,
|
||||
0x0a,0x0c,0x0a,0x05,0x04,0x0d,0x02,0x01,0x01,0x12,
|
||||
0x03,0x59,0x0b,0x14,0x0a,0x0c,0x0a,0x05,0x04,0x0d,
|
||||
0x02,0x01,0x03,0x12,0x03,0x59,0x17,0x18,0x0a,0x0b,
|
||||
0x0a,0x04,0x04,0x0d,0x02,0x02,0x12,0x03,0x5a,0x04,
|
||||
0x1d,0x0a,0x0c,0x0a,0x05,0x04,0x0d,0x02,0x02,0x05,
|
||||
0x12,0x03,0x5a,0x04,0x09,0x0a,0x0c,0x0a,0x05,0x04,
|
||||
0x0d,0x02,0x02,0x01,0x12,0x03,0x5a,0x0a,0x18,0x0a,
|
||||
0x0c,0x0a,0x05,0x04,0x0d,0x02,0x02,0x03,0x12,0x03,
|
||||
0x5a,0x1b,0x1c,0x62,0x06,0x70,0x72,0x6f,0x74,0x6f,
|
||||
0x33,
|
||||
};
|
||||
static const char file_name[] = "MrcComm.proto";
|
||||
static const char mrc_proto_ProtobufFingerData_name[] = "mrc.proto.ProtobufFingerData";
|
||||
std::string_view mrc_proto_ProtobufFingerData::msg_name(void) noexcept { return mrc_proto_ProtobufFingerData_name; }
|
||||
pb_filedesc_t mrc_proto_ProtobufFingerData::file_descriptor(void) noexcept { return {::file_name, ::file_descriptor}; }
|
||||
PB_BIND(mrc_proto_ProtobufFingerData, mrc_proto_ProtobufFingerData, AUTO)
|
||||
|
||||
|
||||
static const char mrc_proto_ProtobufTouchpadData_name[] = "mrc.proto.ProtobufTouchpadData";
|
||||
std::string_view mrc_proto_ProtobufTouchpadData::msg_name(void) noexcept { return mrc_proto_ProtobufTouchpadData_name; }
|
||||
pb_filedesc_t mrc_proto_ProtobufTouchpadData::file_descriptor(void) noexcept { return {::file_name, ::file_descriptor}; }
|
||||
PB_BIND(mrc_proto_ProtobufTouchpadData, mrc_proto_ProtobufTouchpadData, AUTO)
|
||||
|
||||
|
||||
static const char mrc_proto_ProtobufJoystickData_name[] = "mrc.proto.ProtobufJoystickData";
|
||||
std::string_view mrc_proto_ProtobufJoystickData::msg_name(void) noexcept { return mrc_proto_ProtobufJoystickData_name; }
|
||||
pb_filedesc_t mrc_proto_ProtobufJoystickData::file_descriptor(void) noexcept { return {::file_name, ::file_descriptor}; }
|
||||
|
||||
@@ -15,6 +15,24 @@
|
||||
#endif
|
||||
|
||||
/* Struct definitions */
|
||||
typedef struct _mrc_proto_ProtobufFingerData {
|
||||
static const pb_msgdesc_t* msg_descriptor(void) noexcept;
|
||||
static std::string_view msg_name(void) noexcept;
|
||||
static pb_filedesc_t file_descriptor(void) noexcept;
|
||||
|
||||
uint32_t X;
|
||||
uint32_t Y;
|
||||
bool Down;
|
||||
} mrc_proto_ProtobufFingerData;
|
||||
|
||||
typedef struct _mrc_proto_ProtobufTouchpadData {
|
||||
static const pb_msgdesc_t* msg_descriptor(void) noexcept;
|
||||
static std::string_view msg_name(void) noexcept;
|
||||
static pb_filedesc_t file_descriptor(void) noexcept;
|
||||
|
||||
pb_callback_t Fingers;
|
||||
} mrc_proto_ProtobufTouchpadData;
|
||||
|
||||
typedef struct _mrc_proto_ProtobufJoystickData {
|
||||
static const pb_msgdesc_t* msg_descriptor(void) noexcept;
|
||||
static std::string_view msg_name(void) noexcept;
|
||||
@@ -28,6 +46,7 @@ typedef struct _mrc_proto_ProtobufJoystickData {
|
||||
We can fit 8 in here. */
|
||||
uint32_t POVCount;
|
||||
uint32_t POVs;
|
||||
pb_callback_t Touchpads;
|
||||
} mrc_proto_ProtobufJoystickData;
|
||||
|
||||
typedef struct _mrc_proto_ProtobufControlData {
|
||||
@@ -141,7 +160,9 @@ typedef struct _mrc_proto_ProtobufConsoleLineTimestamp {
|
||||
|
||||
|
||||
/* Initializer values for message structs */
|
||||
#define mrc_proto_ProtobufJoystickData_init_default {0, 0, 0, {{NULL}, NULL}, 0, 0}
|
||||
#define mrc_proto_ProtobufFingerData_init_default {0, 0, 0}
|
||||
#define mrc_proto_ProtobufTouchpadData_init_default {{{NULL}, NULL}}
|
||||
#define mrc_proto_ProtobufJoystickData_init_default {0, 0, 0, {{NULL}, NULL}, 0, 0, {{NULL}, NULL}}
|
||||
#define mrc_proto_ProtobufControlData_init_default {0, 0, {{NULL}, NULL}, 0}
|
||||
#define mrc_proto_ProtobufJoystickDescriptor_init_default {{{NULL}, NULL}, 0, 0, 0}
|
||||
#define mrc_proto_ProtobufJoystickDescriptors_init_default {{{NULL}, NULL}}
|
||||
@@ -153,7 +174,9 @@ typedef struct _mrc_proto_ProtobufConsoleLineTimestamp {
|
||||
#define mrc_proto_ProtobufAvailableOpModes_init_default {{{NULL}, NULL}}
|
||||
#define mrc_proto_ProtobufErrorInfoTimestamp_init_default {{{NULL}, NULL}, 0, 0, 0}
|
||||
#define mrc_proto_ProtobufConsoleLineTimestamp_init_default {{{NULL}, NULL}, 0, 0}
|
||||
#define mrc_proto_ProtobufJoystickData_init_zero {0, 0, 0, {{NULL}, NULL}, 0, 0}
|
||||
#define mrc_proto_ProtobufFingerData_init_zero {0, 0, 0}
|
||||
#define mrc_proto_ProtobufTouchpadData_init_zero {{{NULL}, NULL}}
|
||||
#define mrc_proto_ProtobufJoystickData_init_zero {0, 0, 0, {{NULL}, NULL}, 0, 0, {{NULL}, NULL}}
|
||||
#define mrc_proto_ProtobufControlData_init_zero {0, 0, {{NULL}, NULL}, 0}
|
||||
#define mrc_proto_ProtobufJoystickDescriptor_init_zero {{{NULL}, NULL}, 0, 0, 0}
|
||||
#define mrc_proto_ProtobufJoystickDescriptors_init_zero {{{NULL}, NULL}}
|
||||
@@ -167,12 +190,17 @@ typedef struct _mrc_proto_ProtobufConsoleLineTimestamp {
|
||||
#define mrc_proto_ProtobufConsoleLineTimestamp_init_zero {{{NULL}, NULL}, 0, 0}
|
||||
|
||||
/* Field tags (for use in manual encoding/decoding) */
|
||||
#define mrc_proto_ProtobufFingerData_X_tag 1
|
||||
#define mrc_proto_ProtobufFingerData_Y_tag 2
|
||||
#define mrc_proto_ProtobufFingerData_Down_tag 3
|
||||
#define mrc_proto_ProtobufTouchpadData_Fingers_tag 1
|
||||
#define mrc_proto_ProtobufJoystickData_AvailableButtons_tag 1
|
||||
#define mrc_proto_ProtobufJoystickData_Buttons_tag 2
|
||||
#define mrc_proto_ProtobufJoystickData_AvailableAxes_tag 3
|
||||
#define mrc_proto_ProtobufJoystickData_Axes_tag 4
|
||||
#define mrc_proto_ProtobufJoystickData_POVCount_tag 5
|
||||
#define mrc_proto_ProtobufJoystickData_POVs_tag 6
|
||||
#define mrc_proto_ProtobufJoystickData_Touchpads_tag 7
|
||||
#define mrc_proto_ProtobufControlData_ControlWord_tag 1
|
||||
#define mrc_proto_ProtobufControlData_MatchTime_tag 2
|
||||
#define mrc_proto_ProtobufControlData_Joysticks_tag 3
|
||||
@@ -207,15 +235,30 @@ typedef struct _mrc_proto_ProtobufConsoleLineTimestamp {
|
||||
#define mrc_proto_ProtobufConsoleLineTimestamp_SequenceNumber_tag 3
|
||||
|
||||
/* Struct field encoding specification for nanopb */
|
||||
#define mrc_proto_ProtobufFingerData_FIELDLIST(X_, a) \
|
||||
X_(a, STATIC, SINGULAR, UINT32, X, 1) \
|
||||
X_(a, STATIC, SINGULAR, UINT32, Y, 2) \
|
||||
X_(a, STATIC, SINGULAR, BOOL, Down, 3)
|
||||
#define mrc_proto_ProtobufFingerData_CALLBACK NULL
|
||||
#define mrc_proto_ProtobufFingerData_DEFAULT NULL
|
||||
|
||||
#define mrc_proto_ProtobufTouchpadData_FIELDLIST(X, a) \
|
||||
X(a, CALLBACK, REPEATED, MESSAGE, Fingers, 1)
|
||||
#define mrc_proto_ProtobufTouchpadData_CALLBACK pb_default_field_callback
|
||||
#define mrc_proto_ProtobufTouchpadData_DEFAULT NULL
|
||||
#define mrc_proto_ProtobufTouchpadData_Fingers_MSGTYPE mrc_proto_ProtobufFingerData
|
||||
|
||||
#define mrc_proto_ProtobufJoystickData_FIELDLIST(X, a) \
|
||||
X(a, STATIC, SINGULAR, UINT64, AvailableButtons, 1) \
|
||||
X(a, STATIC, SINGULAR, UINT64, Buttons, 2) \
|
||||
X(a, STATIC, SINGULAR, UINT32, AvailableAxes, 3) \
|
||||
X(a, CALLBACK, REPEATED, SINT32, Axes, 4) \
|
||||
X(a, STATIC, SINGULAR, UINT32, POVCount, 5) \
|
||||
X(a, STATIC, SINGULAR, UINT32, POVs, 6)
|
||||
X(a, STATIC, SINGULAR, UINT32, POVs, 6) \
|
||||
X(a, CALLBACK, REPEATED, MESSAGE, Touchpads, 7)
|
||||
#define mrc_proto_ProtobufJoystickData_CALLBACK pb_default_field_callback
|
||||
#define mrc_proto_ProtobufJoystickData_DEFAULT NULL
|
||||
#define mrc_proto_ProtobufJoystickData_Touchpads_MSGTYPE mrc_proto_ProtobufTouchpadData
|
||||
|
||||
#define mrc_proto_ProtobufControlData_FIELDLIST(X, a) \
|
||||
X(a, STATIC, SINGULAR, UINT32, ControlWord, 1) \
|
||||
@@ -299,6 +342,7 @@ X(a, STATIC, SINGULAR, INT32, SequenceNumber, 3)
|
||||
#define mrc_proto_ProtobufConsoleLineTimestamp_DEFAULT NULL
|
||||
|
||||
/* Maximum encoded size of messages (where known) */
|
||||
/* mrc_proto_ProtobufTouchpadData_size depends on runtime parameters */
|
||||
/* mrc_proto_ProtobufJoystickData_size depends on runtime parameters */
|
||||
/* mrc_proto_ProtobufControlData_size depends on runtime parameters */
|
||||
/* mrc_proto_ProtobufJoystickDescriptor_size depends on runtime parameters */
|
||||
@@ -311,6 +355,7 @@ X(a, STATIC, SINGULAR, INT32, SequenceNumber, 3)
|
||||
/* mrc_proto_ProtobufErrorInfoTimestamp_size depends on runtime parameters */
|
||||
/* mrc_proto_ProtobufConsoleLineTimestamp_size depends on runtime parameters */
|
||||
#define MRC_PROTO_MRCCOMM_NPB_H_MAX_SIZE mrc_proto_ProtobufJoystickOutput_size
|
||||
#define mrc_proto_ProtobufFingerData_size 14
|
||||
#define mrc_proto_ProtobufJoystickOutput_size 18
|
||||
|
||||
|
||||
|
||||
@@ -148,6 +148,12 @@ public class DriverStationJNI extends JNIWrapper {
|
||||
/** The maximum number of joysticks. */
|
||||
public static final int kMaxJoysticks = 6;
|
||||
|
||||
/** The maximum number of touchpads. */
|
||||
public static final int kMaxJoystickTouchpads = 2;
|
||||
|
||||
/** The maximum number of fingers per touchpad. */
|
||||
public static final int kMaxJoystickTouchpadFingers = 2;
|
||||
|
||||
/**
|
||||
* Get all joystick data.
|
||||
*
|
||||
@@ -155,8 +161,11 @@ public class DriverStationJNI extends JNIWrapper {
|
||||
* @param axesArray all joystick axes
|
||||
* @param rawAxesArray all joystick axes as int
|
||||
* @param povsArray all povs
|
||||
* @param touchpadFingersArray all touchpad fingers
|
||||
* @param buttonsAndMetadata array of long joystick axes count, long joystick povs count, long
|
||||
* joystick buttons count, long joystick buttons values
|
||||
* joystick buttons count, long joystick buttons values, long joystick touchpad count, long
|
||||
* pad 0 finger0 down 0x1, finger1 down 0x2, fingerCount 0xC, long pad 1 finger0 down 0x1,
|
||||
* finger1 down 0x2, fingerCount 0xC
|
||||
* @see "HAL_GetAllJoystickData"
|
||||
*/
|
||||
public static native void getAllJoystickData(
|
||||
@@ -164,6 +173,7 @@ public class DriverStationJNI extends JNIWrapper {
|
||||
float[] axesArray,
|
||||
short[] rawAxesArray,
|
||||
byte[] povsArray,
|
||||
float[] touchpadFingersArray,
|
||||
long[] buttonsAndMetadata);
|
||||
|
||||
/**
|
||||
|
||||
@@ -119,6 +119,11 @@ public class DriverStationDataJNI extends JNIWrapper {
|
||||
|
||||
public static native void setJoystickButtonsAvailable(int stick, long available);
|
||||
|
||||
public static native void setTouchpadCounts(int stick, int touchpadCount, int[] fingerCounts);
|
||||
|
||||
public static native void setTouchpadFinger(
|
||||
int stick, int touchpadIndex, int fingerIndex, boolean down, float x, float y);
|
||||
|
||||
public static native void setJoystickIsGamepad(int stick, boolean isGamepad);
|
||||
|
||||
public static native void setJoystickGamepadType(int stick, int type);
|
||||
|
||||
@@ -36,6 +36,11 @@ static_assert(org_wpilib_hardware_hal_DriverStationJNI_kMaxJoystickPOVs ==
|
||||
HAL_kMaxJoystickPOVs);
|
||||
static_assert(org_wpilib_hardware_hal_DriverStationJNI_kMaxJoysticks ==
|
||||
HAL_kMaxJoysticks);
|
||||
static_assert(org_wpilib_hardware_hal_DriverStationJNI_kMaxJoystickTouchpads ==
|
||||
HAL_kMaxJoystickTouchpads);
|
||||
static_assert(
|
||||
org_wpilib_hardware_hal_DriverStationJNI_kMaxJoystickTouchpadFingers ==
|
||||
HAL_kMaxJoystickTouchpadFingers);
|
||||
|
||||
using namespace wpi::hal;
|
||||
using namespace wpi::util::java;
|
||||
@@ -137,36 +142,55 @@ Java_org_wpilib_hardware_hal_DriverStationJNI_nativeGetAllianceStation
|
||||
/*
|
||||
* Class: org_wpilib_hardware_hal_DriverStationJNI
|
||||
* Method: getAllJoystickData
|
||||
* Signature: (I[F[S[B[J)V
|
||||
* Signature: (I[F[S[B[F[J)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL
|
||||
Java_org_wpilib_hardware_hal_DriverStationJNI_getAllJoystickData
|
||||
(JNIEnv* env, jclass cls, jint stick, jfloatArray axesArray,
|
||||
jshortArray rawAxesArray, jbyteArray povsArray,
|
||||
jlongArray buttonsAndMetadataArray)
|
||||
jfloatArray touchpadFingersData, jlongArray buttonsAndMetadataArray)
|
||||
{
|
||||
HAL_JoystickAxes axes;
|
||||
HAL_JoystickPOVs povs;
|
||||
HAL_JoystickButtons buttons;
|
||||
HAL_JoystickTouchpads touchpads;
|
||||
|
||||
HAL_GetAllJoystickData(stick, &axes, &povs, &buttons);
|
||||
HAL_GetAllJoystickData(stick, &axes, &povs, &buttons, &touchpads);
|
||||
|
||||
CriticalJSpan<jfloat> jAxes(env, axesArray);
|
||||
CriticalJSpan<jshort> jRawAxes(env, rawAxesArray);
|
||||
CriticalJSpan<jbyte> jPovs(env, povsArray);
|
||||
CriticalJSpan<jfloat> jTouchpadFingers(env, touchpadFingersData);
|
||||
CriticalJSpan<jlong> jButtons(env, buttonsAndMetadataArray);
|
||||
|
||||
static_assert(sizeof(jAxes[0]) == sizeof(axes.axes[0]));
|
||||
static_assert(sizeof(jRawAxes[0]) == sizeof(axes.raw[0]));
|
||||
static_assert(sizeof(jPovs[0]) == sizeof(povs.povs[0]));
|
||||
static_assert(sizeof(jTouchpadFingers[0]) ==
|
||||
sizeof(touchpads.touchpads[0].fingers[0].x));
|
||||
|
||||
std::memcpy(&jAxes[0], axes.axes, sizeof(axes.axes));
|
||||
std::memcpy(&jRawAxes[0], axes.raw, sizeof(axes.raw));
|
||||
std::memcpy(&jPovs[0], povs.povs, sizeof(povs.povs));
|
||||
jTouchpadFingers[0] = touchpads.touchpads[0].fingers[0].x;
|
||||
jTouchpadFingers[1] = touchpads.touchpads[0].fingers[0].y;
|
||||
jTouchpadFingers[2] = touchpads.touchpads[0].fingers[1].x;
|
||||
jTouchpadFingers[3] = touchpads.touchpads[0].fingers[1].y;
|
||||
jTouchpadFingers[4] = touchpads.touchpads[1].fingers[0].x;
|
||||
jTouchpadFingers[5] = touchpads.touchpads[1].fingers[0].y;
|
||||
jTouchpadFingers[6] = touchpads.touchpads[1].fingers[1].x;
|
||||
jTouchpadFingers[7] = touchpads.touchpads[1].fingers[1].y;
|
||||
jButtons[0] = axes.available;
|
||||
jButtons[1] = povs.available;
|
||||
jButtons[2] = buttons.available;
|
||||
jButtons[3] = buttons.buttons;
|
||||
jButtons[4] = touchpads.count;
|
||||
jButtons[5] = (touchpads.touchpads[0].fingers[0].down ? 1 : 0) |
|
||||
(touchpads.touchpads[0].fingers[1].down ? 2 : 0) |
|
||||
(touchpads.touchpads[0].count << 2);
|
||||
jButtons[6] = (touchpads.touchpads[1].fingers[0].down ? 1 : 0) |
|
||||
(touchpads.touchpads[1].fingers[1].down ? 2 : 0) |
|
||||
(touchpads.touchpads[1].count << 2);
|
||||
}
|
||||
|
||||
/*
|
||||
|
||||
@@ -710,6 +710,38 @@ Java_org_wpilib_hardware_hal_simulation_DriverStationDataJNI_setJoystickButtonsA
|
||||
HALSIM_SetJoystickButtonsAvailable(stick, available);
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_wpilib_hardware_hal_simulation_DriverStationDataJNI
|
||||
* Method: setTouchpadCounts
|
||||
* Signature: (II[I)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL
|
||||
Java_org_wpilib_hardware_hal_simulation_DriverStationDataJNI_setTouchpadCounts
|
||||
(JNIEnv* env, jclass, jint stick, jint touchpadCount, jintArray fingerCounts)
|
||||
{
|
||||
JSpan<const jint> jArrayRef(env, fingerCounts);
|
||||
uint8_t fingerCountsLocal[2];
|
||||
size_t toCopy = (std::min)(jArrayRef.size(), static_cast<size_t>(2));
|
||||
for (size_t i = 0; i < toCopy; ++i) {
|
||||
fingerCountsLocal[i] = static_cast<uint8_t>(jArrayRef[i]);
|
||||
}
|
||||
HALSIM_SetJoystickTouchpadCounts(stick, touchpadCount, fingerCountsLocal);
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_wpilib_hardware_hal_simulation_DriverStationDataJNI
|
||||
* Method: setTouchpadFinger
|
||||
* Signature: (IIIZFF)V
|
||||
*/
|
||||
JNIEXPORT void JNICALL
|
||||
Java_org_wpilib_hardware_hal_simulation_DriverStationDataJNI_setTouchpadFinger
|
||||
(JNIEnv*, jclass, jint stick, jint touchpadIndex, jint fingerIndex,
|
||||
jboolean down, jfloat x, jfloat y)
|
||||
{
|
||||
HALSIM_SetJoystickTouchpadFinger(stick, touchpadIndex, fingerIndex, down, x,
|
||||
y);
|
||||
}
|
||||
|
||||
/*
|
||||
* Class: org_wpilib_hardware_hal_simulation_DriverStationDataJNI
|
||||
* Method: setJoystickIsGamepad
|
||||
|
||||
@@ -111,6 +111,7 @@ bool wpi::util::Protobuf<mrc::ControlData>::Pack(
|
||||
std::optional<mrc::Joystick> wpi::util::Protobuf<mrc::Joystick>::Unpack(
|
||||
InputStream& Stream) {
|
||||
wpi::util::UnpackCallback<int16_t, MRC_MAX_NUM_AXES> AxesCb;
|
||||
wpi::util::UnpackCallback<mrc::Touchpad, MRC_MAX_NUM_TOUCHPADS> TouchpadCb;
|
||||
|
||||
mrc_proto_ProtobufJoystickData Msg{
|
||||
.AvailableButtons = 0,
|
||||
@@ -119,6 +120,7 @@ std::optional<mrc::Joystick> wpi::util::Protobuf<mrc::Joystick>::Unpack(
|
||||
.Axes = AxesCb.Callback(),
|
||||
.POVCount = 0,
|
||||
.POVs = 0,
|
||||
.Touchpads = TouchpadCb.Callback(),
|
||||
};
|
||||
|
||||
if (!Stream.Decode(Msg)) {
|
||||
@@ -126,6 +128,7 @@ std::optional<mrc::Joystick> wpi::util::Protobuf<mrc::Joystick>::Unpack(
|
||||
}
|
||||
|
||||
auto Axes = AxesCb.Items();
|
||||
auto Touchpads = TouchpadCb.Items();
|
||||
|
||||
mrc::Joystick Joystick;
|
||||
Joystick.Axes.SetAvailable(Msg.AvailableAxes);
|
||||
@@ -147,12 +150,18 @@ std::optional<mrc::Joystick> wpi::util::Protobuf<mrc::Joystick>::Unpack(
|
||||
Joystick.Povs.Povs()[i] = Val;
|
||||
}
|
||||
|
||||
Joystick.Touchpads.SetTouchpadCount(static_cast<uint8_t>(Touchpads.size()));
|
||||
for (size_t i = 0; i < Joystick.Touchpads.GetTouchpadCount(); i++) {
|
||||
Joystick.Touchpads.Touchpads()[i] = std::move(Touchpads[i]);
|
||||
}
|
||||
|
||||
return Joystick;
|
||||
}
|
||||
|
||||
bool wpi::util::Protobuf<mrc::Joystick>::Pack(OutputStream& Stream,
|
||||
const mrc::Joystick& Value) {
|
||||
wpi::util::PackCallback AxesCb{Value.Axes.Axes()};
|
||||
wpi::util::PackCallback TouchpadCb{Value.Touchpads.Touchpads()};
|
||||
|
||||
uint32_t PovsStore = 0;
|
||||
for (int i = static_cast<int>(Value.Povs.GetCount()) - 1; i >= 0; i--) {
|
||||
@@ -167,6 +176,72 @@ bool wpi::util::Protobuf<mrc::Joystick>::Pack(OutputStream& Stream,
|
||||
.Axes = AxesCb.Callback(),
|
||||
.POVCount = static_cast<uint32_t>(Value.Povs.GetCount()),
|
||||
.POVs = PovsStore,
|
||||
.Touchpads = TouchpadCb.Callback(),
|
||||
};
|
||||
|
||||
return Stream.Encode(Msg);
|
||||
}
|
||||
|
||||
std::optional<mrc::TouchpadFinger>
|
||||
wpi::util::Protobuf<mrc::TouchpadFinger>::Unpack(InputStream& Stream) {
|
||||
mrc_proto_ProtobufFingerData Msg{
|
||||
.X = 0,
|
||||
.Y = 0,
|
||||
.Down = false,
|
||||
};
|
||||
|
||||
if (!Stream.Decode(Msg)) {
|
||||
return {};
|
||||
}
|
||||
|
||||
return mrc::TouchpadFinger{
|
||||
.Down = Msg.Down,
|
||||
.X = static_cast<uint16_t>(Msg.X),
|
||||
.Y = static_cast<uint16_t>(Msg.Y),
|
||||
};
|
||||
}
|
||||
|
||||
bool wpi::util::Protobuf<mrc::TouchpadFinger>::Pack(
|
||||
OutputStream& Stream, const mrc::TouchpadFinger& Value) {
|
||||
mrc_proto_ProtobufFingerData Msg{
|
||||
.X = Value.X,
|
||||
.Y = Value.Y,
|
||||
.Down = Value.Down,
|
||||
};
|
||||
|
||||
return Stream.Encode(Msg);
|
||||
}
|
||||
|
||||
std::optional<mrc::Touchpad> wpi::util::Protobuf<mrc::Touchpad>::Unpack(
|
||||
InputStream& Stream) {
|
||||
wpi::util::UnpackCallback<mrc::TouchpadFinger, MRC_MAX_NUM_TOUCHPAD_FINGERS>
|
||||
FingersCb;
|
||||
|
||||
mrc_proto_ProtobufTouchpadData Msg{
|
||||
.Fingers = FingersCb.Callback(),
|
||||
};
|
||||
|
||||
if (!Stream.Decode(Msg)) {
|
||||
return {};
|
||||
}
|
||||
|
||||
auto Fingers = FingersCb.Items();
|
||||
|
||||
mrc::Touchpad Touchpad;
|
||||
Touchpad.SetFingerCount(Fingers.size());
|
||||
for (size_t i = 0; i < Touchpad.GetFingerCount(); i++) {
|
||||
Touchpad.Fingers()[i] = Fingers[i];
|
||||
}
|
||||
|
||||
return Touchpad;
|
||||
}
|
||||
|
||||
bool wpi::util::Protobuf<mrc::Touchpad>::Pack(OutputStream& Stream,
|
||||
const mrc::Touchpad& Value) {
|
||||
wpi::util::PackCallback FingersCb{Value.Fingers()};
|
||||
|
||||
mrc_proto_ProtobufTouchpadData Msg{
|
||||
.Fingers = FingersCb.Callback(),
|
||||
};
|
||||
|
||||
return Stream.Encode(Msg);
|
||||
|
||||
@@ -100,9 +100,28 @@ int32_t HAL_GetJoystickPOVs(int32_t joystickNum, HAL_JoystickPOVs* povs);
|
||||
int32_t HAL_GetJoystickButtons(int32_t joystickNum,
|
||||
HAL_JoystickButtons* buttons);
|
||||
|
||||
/**
|
||||
* Gets the touchpads of a specific joystick.
|
||||
* @param joystickNum the joystick number
|
||||
* @param touchpads the touchpad values (output)
|
||||
* @return the error code, or 0 for success
|
||||
*/
|
||||
int32_t HAL_GetJoystickTouchpads(int32_t joystickNum,
|
||||
HAL_JoystickTouchpads* touchpads);
|
||||
|
||||
/**
|
||||
* Gets all the data of a specific joystick.
|
||||
*
|
||||
* @param joystickNum the joystick number
|
||||
* @param axes the axes values (output)
|
||||
* @param povs the POV values (output)
|
||||
* @param buttons the button values (output)
|
||||
* @param touchpads the touchpad values (output)
|
||||
*/
|
||||
void HAL_GetAllJoystickData(int32_t joystickNum, HAL_JoystickAxes* axes,
|
||||
HAL_JoystickPOVs* povs,
|
||||
HAL_JoystickButtons* buttons);
|
||||
HAL_JoystickButtons* buttons,
|
||||
HAL_JoystickTouchpads* touchpads);
|
||||
|
||||
/**
|
||||
* Retrieves the Joystick Descriptor for particular slot.
|
||||
|
||||
@@ -50,6 +50,20 @@ HAL_ENUM(HAL_MatchType) {
|
||||
HAL_kMatchType_elimination,
|
||||
};
|
||||
|
||||
/**
|
||||
* The maximum number of touchpads that will be stored in a single
|
||||
* HAL_JoystickTouchpads struct. This is used for allocating buffers, not
|
||||
* bounds checking, since there are usually less touchpads in practice.
|
||||
*/
|
||||
#define HAL_kMaxJoystickTouchpads 2
|
||||
|
||||
/**
|
||||
* The maximum number of fingers that will be stored in a single
|
||||
* HAL_JoystickTouchpad struct. This is used for allocating buffers, not
|
||||
* bounds checking, since there are usually less fingers in practice.
|
||||
*/
|
||||
#define HAL_kMaxJoystickTouchpadFingers 2
|
||||
|
||||
/**
|
||||
* The maximum number of axes that will be stored in a single HAL_JoystickAxes
|
||||
* struct. This is used for allocating buffers, not bounds checking, since there
|
||||
@@ -107,6 +121,25 @@ struct HAL_JoystickButtons {
|
||||
};
|
||||
typedef struct HAL_JoystickButtons HAL_JoystickButtons;
|
||||
|
||||
struct HAL_JoystickTouchpadFinger {
|
||||
uint8_t down;
|
||||
float x;
|
||||
float y;
|
||||
};
|
||||
typedef struct HAL_JoystickTouchpadFinger HAL_JoystickTouchpadFinger;
|
||||
|
||||
struct HAL_JoystickTouchpad {
|
||||
uint8_t count;
|
||||
HAL_JoystickTouchpadFinger fingers[HAL_kMaxJoystickTouchpadFingers];
|
||||
};
|
||||
typedef struct HAL_JoystickTouchpad HAL_JoystickTouchpad;
|
||||
|
||||
struct HAL_JoystickTouchpads {
|
||||
uint8_t count;
|
||||
HAL_JoystickTouchpad touchpads[HAL_kMaxJoystickTouchpads];
|
||||
};
|
||||
typedef struct HAL_JoystickTouchpads HAL_JoystickTouchpads;
|
||||
|
||||
struct HAL_JoystickDescriptor {
|
||||
uint8_t isGamepad;
|
||||
uint8_t gamepadType;
|
||||
|
||||
@@ -27,3 +27,21 @@ struct wpi::util::Protobuf<mrc::Joystick> {
|
||||
static std::optional<mrc::Joystick> Unpack(InputStream& Stream);
|
||||
static bool Pack(OutputStream& Stream, const mrc::Joystick& Value);
|
||||
};
|
||||
|
||||
template <>
|
||||
struct wpi::util::Protobuf<mrc::TouchpadFinger> {
|
||||
using MessageStruct = mrc_proto_ProtobufFingerData;
|
||||
using InputStream = wpi::util::ProtoInputStream<mrc::TouchpadFinger>;
|
||||
using OutputStream = wpi::util::ProtoOutputStream<mrc::TouchpadFinger>;
|
||||
static std::optional<mrc::TouchpadFinger> Unpack(InputStream& Stream);
|
||||
static bool Pack(OutputStream& Stream, const mrc::TouchpadFinger& Value);
|
||||
};
|
||||
|
||||
template <>
|
||||
struct wpi::util::Protobuf<mrc::Touchpad> {
|
||||
using MessageStruct = mrc_proto_ProtobufTouchpadData;
|
||||
using InputStream = wpi::util::ProtoInputStream<mrc::Touchpad>;
|
||||
using OutputStream = wpi::util::ProtoOutputStream<mrc::Touchpad>;
|
||||
static std::optional<mrc::Touchpad> Unpack(InputStream& Stream);
|
||||
static bool Pack(OutputStream& Stream, const mrc::Touchpad& Value);
|
||||
};
|
||||
|
||||
@@ -20,6 +20,9 @@ typedef void (*HAL_JoystickPOVsCallback)(const char* name, void* param,
|
||||
typedef void (*HAL_JoystickButtonsCallback)(const char* name, void* param,
|
||||
int32_t joystickNum,
|
||||
const HAL_JoystickButtons* buttons);
|
||||
typedef void (*HAL_JoystickTouchpadsCallback)(
|
||||
const char* name, void* param, int32_t joystickNum,
|
||||
const HAL_JoystickTouchpads* touchpads);
|
||||
typedef void (*HAL_JoystickDescriptorCallback)(
|
||||
const char* name, void* param, int32_t joystickNum,
|
||||
const HAL_JoystickDescriptor* descriptor);
|
||||
@@ -113,6 +116,15 @@ void HALSIM_GetJoystickButtons(int32_t joystickNum,
|
||||
void HALSIM_SetJoystickButtons(int32_t joystickNum,
|
||||
const HAL_JoystickButtons* buttons);
|
||||
|
||||
int32_t HALSIM_RegisterJoystickTouchpadsCallback(
|
||||
int32_t joystickNum, HAL_JoystickTouchpadsCallback callback, void* param,
|
||||
HAL_Bool initialNotify);
|
||||
void HALSIM_CancelJoystickTouchpadsCallback(int32_t uid);
|
||||
void HALSIM_GetJoystickTouchpads(int32_t joystickNum,
|
||||
HAL_JoystickTouchpads* touchpads);
|
||||
void HALSIM_SetJoystickTouchpads(int32_t joystickNum,
|
||||
const HAL_JoystickTouchpads* touchpads);
|
||||
|
||||
int32_t HALSIM_RegisterJoystickDescriptorCallback(
|
||||
int32_t joystickNum, HAL_JoystickDescriptorCallback callback, void* param,
|
||||
HAL_Bool initialNotify);
|
||||
@@ -157,6 +169,11 @@ void HALSIM_SetJoystickButtonsAvailable(int32_t stick, uint64_t available);
|
||||
void HALSIM_GetJoystickAvailables(int32_t stick, uint16_t* axesAvailable,
|
||||
uint64_t* buttonsAvailable,
|
||||
uint8_t* povsAvailable);
|
||||
void HALSIM_SetJoystickTouchpadCounts(int32_t stick, uint8_t touchpadCount,
|
||||
const uint8_t* fingerCount);
|
||||
void HALSIM_SetJoystickTouchpadFinger(int32_t stick, int32_t touchpad,
|
||||
int32_t finger, HAL_Bool down, double x,
|
||||
double y);
|
||||
|
||||
void HALSIM_SetJoystickIsGamepad(int32_t stick, HAL_Bool isGamepad);
|
||||
void HALSIM_SetJoystickGamepadType(int32_t stick, int32_t type);
|
||||
|
||||
@@ -42,6 +42,7 @@ struct JoystickDataCache {
|
||||
HAL_JoystickAxes axes[kJoystickPorts];
|
||||
HAL_JoystickPOVs povs[kJoystickPorts];
|
||||
HAL_JoystickButtons buttons[kJoystickPorts];
|
||||
HAL_JoystickTouchpads touchpads[kJoystickPorts];
|
||||
HAL_AllianceStationID allianceStation;
|
||||
double matchTime;
|
||||
HAL_ControlWord controlWord;
|
||||
@@ -64,6 +65,7 @@ void JoystickDataCache::Update() {
|
||||
SimDriverStationData->GetJoystickAxes(i, &axes[i]);
|
||||
SimDriverStationData->GetJoystickPOVs(i, &povs[i]);
|
||||
SimDriverStationData->GetJoystickButtons(i, &buttons[i]);
|
||||
SimDriverStationData->GetJoystickTouchpads(i, &touchpads[i]);
|
||||
}
|
||||
allianceStation = SimDriverStationData->allianceStationId;
|
||||
matchTime = SimDriverStationData->matchTime;
|
||||
@@ -266,9 +268,21 @@ int32_t HAL_GetJoystickButtons(int32_t joystickNum,
|
||||
return 0;
|
||||
}
|
||||
|
||||
int32_t HAL_GetJoystickTouchpads(int32_t joystickNum,
|
||||
HAL_JoystickTouchpads* touchpads) {
|
||||
if (gShutdown) {
|
||||
return INCOMPATIBLE_STATE;
|
||||
}
|
||||
CHECK_JOYSTICK_NUMBER(joystickNum);
|
||||
std::scoped_lock lock{driverStation->cacheMutex};
|
||||
*touchpads = currentRead->touchpads[joystickNum];
|
||||
return 0;
|
||||
}
|
||||
|
||||
void HAL_GetAllJoystickData(int32_t joystickNum, HAL_JoystickAxes* axes,
|
||||
HAL_JoystickPOVs* povs,
|
||||
HAL_JoystickButtons* buttons) {
|
||||
HAL_JoystickButtons* buttons,
|
||||
HAL_JoystickTouchpads* touchpads) {
|
||||
if (gShutdown) {
|
||||
return;
|
||||
}
|
||||
@@ -276,6 +290,7 @@ void HAL_GetAllJoystickData(int32_t joystickNum, HAL_JoystickAxes* axes,
|
||||
*axes = currentRead->axes[joystickNum];
|
||||
*povs = currentRead->povs[joystickNum];
|
||||
*buttons = currentRead->buttons[joystickNum];
|
||||
*touchpads = currentRead->touchpads[joystickNum];
|
||||
}
|
||||
|
||||
int32_t HAL_GetJoystickDescriptor(int32_t joystickNum,
|
||||
|
||||
@@ -44,6 +44,7 @@ void DriverStationData::ResetData() {
|
||||
m_joystickData[i].povs = HAL_JoystickPOVs{};
|
||||
m_joystickData[i].buttons = HAL_JoystickButtons{};
|
||||
m_joystickData[i].descriptor = HAL_JoystickDescriptor{};
|
||||
m_joystickData[i].touchpads = HAL_JoystickTouchpads{};
|
||||
m_joystickData[i].outputs.leds = 0;
|
||||
m_joystickData[i].outputs.leftRumble = 0;
|
||||
m_joystickData[i].outputs.rightRumble = 0;
|
||||
@@ -105,6 +106,7 @@ void DriverStationData::ResetData() {
|
||||
DEFINE_CPPAPI(Axes, axes, )
|
||||
DEFINE_CPPAPI(POVs, povs, )
|
||||
DEFINE_CPPAPI(Buttons, buttons, )
|
||||
DEFINE_CPPAPI(Touchpads, touchpads, )
|
||||
|
||||
DEFINE_CPPAPI_CALLBACKS(Descriptor, descriptor, )
|
||||
|
||||
@@ -372,6 +374,42 @@ void DriverStationData::GetJoystickAvailables(int32_t stick,
|
||||
*povsAvailable = m_joystickData[stick].povs.available;
|
||||
}
|
||||
|
||||
void DriverStationData::SetJoystickTouchpadCounts(int32_t stick,
|
||||
uint8_t touchpadCount,
|
||||
const uint8_t* fingerCount) {
|
||||
if (stick < 0 || stick >= kNumJoysticks) {
|
||||
return;
|
||||
}
|
||||
std::scoped_lock lock(m_joystickDataMutex);
|
||||
m_joystickData[stick].touchpads.count = touchpadCount;
|
||||
for (uint8_t i = 0; i < touchpadCount; i++) {
|
||||
m_joystickData[stick].touchpads.touchpads[i].count = fingerCount[i];
|
||||
}
|
||||
m_joystickTouchpadsCallbacks(stick, &m_joystickData[stick].touchpads);
|
||||
}
|
||||
|
||||
void DriverStationData::SetJoystickTouchpadFinger(int32_t stick,
|
||||
int32_t touchpad,
|
||||
int32_t finger, HAL_Bool down,
|
||||
double x, double y) {
|
||||
if (stick < 0 || stick >= kNumJoysticks) {
|
||||
return;
|
||||
}
|
||||
if (touchpad < 0 || touchpad >= HAL_kMaxJoystickTouchpads) {
|
||||
return;
|
||||
}
|
||||
if (finger < 0 || finger >= HAL_kMaxJoystickTouchpadFingers) {
|
||||
return;
|
||||
}
|
||||
std::scoped_lock lock(m_joystickDataMutex);
|
||||
HAL_JoystickTouchpad& tp =
|
||||
m_joystickData[stick].touchpads.touchpads[touchpad];
|
||||
tp.fingers[finger].down = down;
|
||||
tp.fingers[finger].x = x;
|
||||
tp.fingers[finger].y = y;
|
||||
m_joystickTouchpadsCallbacks(stick, &m_joystickData[stick].touchpads);
|
||||
}
|
||||
|
||||
void DriverStationData::SetJoystickIsGamepad(int32_t stick,
|
||||
HAL_Bool isGamepad) {
|
||||
if (stick < 0 || stick >= kNumJoysticks) {
|
||||
@@ -490,6 +528,7 @@ DEFINE_CAPI(double, MatchTime, matchTime)
|
||||
DEFINE_CAPI(Axes, axes)
|
||||
DEFINE_CAPI(POVs, povs)
|
||||
DEFINE_CAPI(Buttons, buttons)
|
||||
DEFINE_CAPI(Touchpads, touchpads)
|
||||
DEFINE_CAPI(Descriptor, descriptor)
|
||||
|
||||
int32_t HALSIM_RegisterJoystickLedsCallback(int32_t joystickNum,
|
||||
@@ -607,6 +646,19 @@ void HALSIM_GetJoystickAvailables(int32_t stick, uint16_t* axesAvailable,
|
||||
buttonsAvailable, povsAvailable);
|
||||
}
|
||||
|
||||
void HALSIM_SetJoystickTouchpadCounts(int32_t stick, uint8_t touchpadCount,
|
||||
const uint8_t* fingerCount) {
|
||||
SimDriverStationData->SetJoystickTouchpadCounts(stick, touchpadCount,
|
||||
fingerCount);
|
||||
}
|
||||
|
||||
void HALSIM_SetJoystickTouchpadFinger(int32_t stick, int32_t touchpad,
|
||||
int32_t finger, HAL_Bool down, double x,
|
||||
double y) {
|
||||
SimDriverStationData->SetJoystickTouchpadFinger(stick, touchpad, finger, down,
|
||||
x, y);
|
||||
}
|
||||
|
||||
void HALSIM_SetJoystickIsGamepad(int32_t stick, HAL_Bool isGamepad) {
|
||||
SimDriverStationData->SetJoystickIsGamepad(stick, isGamepad);
|
||||
}
|
||||
|
||||
@@ -28,6 +28,7 @@ class DriverStationData {
|
||||
HAL_SIMCALLBACKREGISTRY_DEFINE_NAME(JoystickDescriptor)
|
||||
HAL_SIMCALLBACKREGISTRY_DEFINE_NAME(JoystickLeds)
|
||||
HAL_SIMCALLBACKREGISTRY_DEFINE_NAME(JoystickRumbles)
|
||||
HAL_SIMCALLBACKREGISTRY_DEFINE_NAME(JoystickTouchpads)
|
||||
HAL_SIMCALLBACKREGISTRY_DEFINE_NAME(MatchInfo)
|
||||
HAL_SIMCALLBACKREGISTRY_DEFINE_NAME(NewData)
|
||||
|
||||
@@ -62,6 +63,15 @@ class DriverStationData {
|
||||
void SetJoystickButtons(int32_t joystickNum,
|
||||
const HAL_JoystickButtons* buttons);
|
||||
|
||||
int32_t RegisterJoystickTouchpadsCallback(
|
||||
int32_t joystickNum, HAL_JoystickTouchpadsCallback callback, void* param,
|
||||
HAL_Bool initialNotify);
|
||||
void CancelJoystickTouchpadsCallback(int32_t uid);
|
||||
void GetJoystickTouchpads(int32_t joystickNum,
|
||||
HAL_JoystickTouchpads* touchpads);
|
||||
void SetJoystickTouchpads(int32_t joystickNum,
|
||||
const HAL_JoystickTouchpads* touchpads);
|
||||
|
||||
int32_t RegisterJoystickDescriptorCallback(
|
||||
int32_t joystickNum, HAL_JoystickDescriptorCallback callback, void* param,
|
||||
HAL_Bool initialNotify);
|
||||
@@ -113,6 +123,11 @@ class DriverStationData {
|
||||
void GetJoystickAvailables(int32_t stick, uint16_t* axesAvailable,
|
||||
uint64_t* buttonsAvailable,
|
||||
uint8_t* povsAvailable);
|
||||
void SetJoystickTouchpadCounts(int32_t stick, uint8_t touchpadCount,
|
||||
const uint8_t* fingerCount);
|
||||
void SetJoystickTouchpadFinger(int32_t stick, int32_t touchpad,
|
||||
int32_t finger, HAL_Bool down, double x,
|
||||
double y);
|
||||
|
||||
void SetJoystickIsGamepad(int32_t stick, HAL_Bool isGamepad);
|
||||
void SetJoystickGamepadType(int32_t stick, int32_t type);
|
||||
@@ -144,6 +159,8 @@ class DriverStationData {
|
||||
m_joystickPOVsCallbacks;
|
||||
SimCallbackRegistry<HAL_JoystickButtonsCallback, GetJoystickButtonsName>
|
||||
m_joystickButtonsCallbacks;
|
||||
SimCallbackRegistry<HAL_JoystickTouchpadsCallback, GetJoystickTouchpadsName>
|
||||
m_joystickTouchpadsCallbacks;
|
||||
SimCallbackRegistry<HAL_JoystickLedsCallback, GetJoystickLedsName>
|
||||
m_joystickLedsCallbacks;
|
||||
SimCallbackRegistry<HAL_JoystickRumblesCallback, GetJoystickRumblesName>
|
||||
@@ -166,6 +183,7 @@ class DriverStationData {
|
||||
HAL_JoystickAxes axes;
|
||||
HAL_JoystickPOVs povs;
|
||||
HAL_JoystickButtons buttons;
|
||||
HAL_JoystickTouchpads touchpads;
|
||||
JoystickOutputStore outputs;
|
||||
HAL_JoystickDescriptor descriptor;
|
||||
};
|
||||
|
||||
@@ -45,6 +45,8 @@ static_assert(sizeof(int32_t) >= sizeof(int),
|
||||
static_assert(MRC_MAX_NUM_AXES == HAL_kMaxJoystickAxes);
|
||||
static_assert(MRC_MAX_NUM_POVS == HAL_kMaxJoystickPOVs);
|
||||
static_assert(MRC_MAX_NUM_JOYSTICKS == HAL_kMaxJoysticks);
|
||||
static_assert(MRC_MAX_NUM_TOUCHPADS == HAL_kMaxJoystickTouchpads);
|
||||
static_assert(MRC_MAX_NUM_TOUCHPAD_FINGERS == HAL_kMaxJoystickTouchpadFingers);
|
||||
|
||||
namespace {
|
||||
struct JoystickDataCache {
|
||||
@@ -54,6 +56,7 @@ struct JoystickDataCache {
|
||||
HAL_JoystickAxes axes[HAL_kMaxJoysticks];
|
||||
HAL_JoystickPOVs povs[HAL_kMaxJoysticks];
|
||||
HAL_JoystickButtons buttons[HAL_kMaxJoysticks];
|
||||
HAL_JoystickTouchpads touchpads[HAL_kMaxJoysticks];
|
||||
HAL_AllianceStationID allianceStation;
|
||||
float matchTime;
|
||||
HAL_ControlWord controlWord;
|
||||
@@ -275,6 +278,19 @@ void JoystickDataCache::Update(const mrc::ControlData& data) {
|
||||
|
||||
buttons[count].available = newStick.Buttons.GetAvailable();
|
||||
buttons[count].buttons = newStick.Buttons.Buttons;
|
||||
|
||||
touchpads[count].count = newStick.Touchpads.GetTouchpadCount();
|
||||
const auto& newTouchpads = newStick.Touchpads.Touchpads();
|
||||
for (size_t i = 0; i < newTouchpads.size(); i++) {
|
||||
const auto& touchpadFingers = newTouchpads[i].Fingers();
|
||||
touchpads[count].touchpads[i].count = touchpadFingers.size();
|
||||
for (size_t j = 0; j < touchpadFingers.size(); j++) {
|
||||
auto& finger = touchpadFingers[j];
|
||||
touchpads[count].touchpads[i].fingers[j].down = finger.Down ? 1 : 0;
|
||||
touchpads[count].touchpads[i].fingers[j].x = finger.X;
|
||||
touchpads[count].touchpads[i].fingers[j].y = finger.Y;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
@@ -484,13 +500,23 @@ int32_t HAL_GetJoystickButtons(int32_t joystickNum,
|
||||
return 0;
|
||||
}
|
||||
|
||||
int32_t HAL_GetJoystickTouchpads(int32_t joystickNum,
|
||||
HAL_JoystickTouchpads* touchpads) {
|
||||
CHECK_JOYSTICK_NUMBER(joystickNum);
|
||||
std::scoped_lock lock{cacheMutex};
|
||||
*touchpads = currentRead->touchpads[joystickNum];
|
||||
return 0;
|
||||
}
|
||||
|
||||
void HAL_GetAllJoystickData(int32_t joystickNum, HAL_JoystickAxes* axes,
|
||||
HAL_JoystickPOVs* povs,
|
||||
HAL_JoystickButtons* buttons) {
|
||||
HAL_JoystickButtons* buttons,
|
||||
HAL_JoystickTouchpads* touchpads) {
|
||||
std::scoped_lock lock{cacheMutex};
|
||||
*axes = currentRead->axes[joystickNum];
|
||||
*povs = currentRead->povs[joystickNum];
|
||||
*buttons = currentRead->buttons[joystickNum];
|
||||
*touchpads = currentRead->touchpads[joystickNum];
|
||||
}
|
||||
|
||||
int32_t HAL_GetJoystickDescriptor(int32_t joystickNum,
|
||||
|
||||
@@ -41,6 +41,7 @@ DEFINE_CAPI(double, MatchTime, 0)
|
||||
DEFINE_CAPI(Axes, axes)
|
||||
DEFINE_CAPI(POVs, povs)
|
||||
DEFINE_CAPI(Buttons, buttons)
|
||||
DEFINE_CAPI(Touchpads, touchpads)
|
||||
DEFINE_CAPI(Descriptor, descriptor)
|
||||
|
||||
int32_t HALSIM_RegisterJoystickLedsCallback(int32_t joystickNum,
|
||||
@@ -115,6 +116,13 @@ void HALSIM_GetJoystickAvailables(int32_t stick, uint16_t* axesAvailable,
|
||||
*povsAvailable = 0;
|
||||
}
|
||||
|
||||
void HALSIM_SetJoystickTouchpadCounts(int32_t stick, uint8_t touchpadCount,
|
||||
const uint8_t* fingerCount) {}
|
||||
|
||||
void HALSIM_SetJoystickTouchpadFinger(int32_t stick, int32_t touchpad,
|
||||
int32_t finger, HAL_Bool down, double x,
|
||||
double y) {}
|
||||
|
||||
void HALSIM_SetJoystickIsGamepad(int32_t stick, HAL_Bool isGamepad) {}
|
||||
|
||||
void HALSIM_SetJoystickGamepadType(int32_t stick, int32_t type) {}
|
||||
|
||||
@@ -13,4 +13,18 @@ struct format_descriptor<HAL_JoystickPOV> {
|
||||
static std::string format() { return std::string(1, c); }
|
||||
};
|
||||
|
||||
}
|
||||
template <>
|
||||
struct format_descriptor<HAL_JoystickTouchpad> {
|
||||
static constexpr const char c = 'B';
|
||||
static constexpr const char value[2] = {c, '\0'};
|
||||
static std::string format() { return std::string(1, c); }
|
||||
};
|
||||
|
||||
template <>
|
||||
struct format_descriptor<HAL_JoystickTouchpadFinger> {
|
||||
static constexpr const char c = 'B';
|
||||
static constexpr const char value[2] = {c, '\0'};
|
||||
static std::string format() { return std::string(1, c); }
|
||||
};
|
||||
|
||||
}
|
||||
|
||||
@@ -41,3 +41,4 @@ functions:
|
||||
HAL_ObserveUserProgramTeleop:
|
||||
HAL_ObserveUserProgramTest:
|
||||
HAL_GetJoystickIsGamepad:
|
||||
HAL_GetJoystickTouchpads:
|
||||
|
||||
@@ -49,3 +49,16 @@ classes:
|
||||
replayNumber:
|
||||
gameSpecificMessage:
|
||||
gameSpecificMessageSize:
|
||||
HAL_JoystickTouchpadFinger:
|
||||
attributes:
|
||||
down:
|
||||
x:
|
||||
y:
|
||||
HAL_JoystickTouchpad:
|
||||
attributes:
|
||||
count:
|
||||
fingers:
|
||||
HAL_JoystickTouchpads:
|
||||
attributes:
|
||||
count:
|
||||
touchpads:
|
||||
|
||||
@@ -116,3 +116,10 @@ functions:
|
||||
HALSIM_SetJoystickPOVsAvailable:
|
||||
HALSIM_SetJoystickButtonsAvailable:
|
||||
HALSIM_GetJoystickAvailables:
|
||||
HALSIM_RegisterJoystickTouchpadsCallback:
|
||||
ignore: true
|
||||
HALSIM_CancelJoystickTouchpadsCallback:
|
||||
HALSIM_GetJoystickTouchpads:
|
||||
HALSIM_SetJoystickTouchpads:
|
||||
HALSIM_SetJoystickTouchpadCounts:
|
||||
HALSIM_SetJoystickTouchpadFinger:
|
||||
|
||||
@@ -186,10 +186,60 @@ struct JoystickButtons {
|
||||
uint8_t Count{0};
|
||||
};
|
||||
|
||||
struct TouchpadFinger {
|
||||
bool Down{false};
|
||||
uint16_t X{0};
|
||||
uint16_t Y{0};
|
||||
};
|
||||
|
||||
struct Touchpad {
|
||||
std::span<TouchpadFinger> Fingers() {
|
||||
return std::span{FingersStore.data(), GetFingerCount()};
|
||||
}
|
||||
|
||||
std::span<const TouchpadFinger> Fingers() const {
|
||||
return std::span{FingersStore.data(), GetFingerCount()};
|
||||
}
|
||||
|
||||
size_t GetFingerCount() const { return FingerCount; }
|
||||
|
||||
void SetFingerCount(uint8_t NewCount) {
|
||||
FingerCount =
|
||||
(std::min)(NewCount,
|
||||
static_cast<uint8_t>(MRC_MAX_NUM_TOUCHPAD_FINGERS));
|
||||
}
|
||||
|
||||
private:
|
||||
std::array<TouchpadFinger, MRC_MAX_NUM_TOUCHPAD_FINGERS> FingersStore{};
|
||||
uint8_t FingerCount{0};
|
||||
};
|
||||
|
||||
struct JoystickTouchpads {
|
||||
std::span<Touchpad> Touchpads() {
|
||||
return std::span{TouchpadsStore.data(), GetTouchpadCount()};
|
||||
}
|
||||
|
||||
std::span<const Touchpad> Touchpads() const {
|
||||
return std::span{TouchpadsStore.data(), GetTouchpadCount()};
|
||||
}
|
||||
|
||||
size_t GetTouchpadCount() const { return TouchpadCount; }
|
||||
|
||||
void SetTouchpadCount(uint8_t NewCount) {
|
||||
TouchpadCount =
|
||||
(std::min)(NewCount, static_cast<uint8_t>(MRC_MAX_NUM_TOUCHPADS));
|
||||
}
|
||||
|
||||
private:
|
||||
std::array<Touchpad, MRC_MAX_NUM_TOUCHPADS> TouchpadsStore{};
|
||||
uint8_t TouchpadCount{0};
|
||||
};
|
||||
|
||||
struct Joystick {
|
||||
JoystickAxes Axes;
|
||||
JoystickPovs Povs;
|
||||
JoystickButtons Buttons;
|
||||
JoystickTouchpads Touchpads;
|
||||
};
|
||||
|
||||
struct ControlData {
|
||||
|
||||
@@ -66,3 +66,5 @@
|
||||
#define MRC_MAX_JOYSTICK_NAME_LEN 256
|
||||
#define MRC_MAX_VERSION_SIZE 256
|
||||
#define MRC_MAX_ERROR_INFO_STR_LEN 10000
|
||||
#define MRC_MAX_NUM_TOUCHPAD_FINGERS 2
|
||||
#define MRC_MAX_NUM_TOUCHPADS 2
|
||||
|
||||
@@ -4,6 +4,16 @@ package mrc.proto;
|
||||
|
||||
option java_package = "com.mrc.proto";
|
||||
|
||||
message ProtobufFingerData {
|
||||
uint32 X = 1;
|
||||
uint32 Y = 2;
|
||||
bool Down = 3;
|
||||
}
|
||||
|
||||
message ProtobufTouchpadData {
|
||||
repeated ProtobufFingerData Fingers = 1;
|
||||
}
|
||||
|
||||
message ProtobufJoystickData {
|
||||
uint64 AvailableButtons = 1;
|
||||
uint64 Buttons = 2;
|
||||
@@ -13,6 +23,7 @@ message ProtobufJoystickData {
|
||||
// We can fit 8 in here.
|
||||
uint32 POVCount = 5;
|
||||
uint32 POVs = 6;
|
||||
repeated ProtobufTouchpadData Touchpads = 7;
|
||||
}
|
||||
|
||||
message ProtobufControlData {
|
||||
|
||||
1
wpilibc/robotpy_pybind_build_info.bzl
generated
1
wpilibc/robotpy_pybind_build_info.bzl
generated
@@ -208,6 +208,7 @@ def wpilib_extension(srcs = [], header_to_dat_deps = [], extra_hdrs = [], includ
|
||||
tmpl_class_names = [],
|
||||
trampolines = [
|
||||
("wpi::DriverStation", "wpi__DriverStation.hpp"),
|
||||
("wpi::DriverStation::TouchpadFinger", "wpi__DriverStation__TouchpadFinger.hpp"),
|
||||
],
|
||||
),
|
||||
struct(
|
||||
|
||||
@@ -350,6 +350,71 @@ double DriverStation::GetStickAxis(int stick, int axis) {
|
||||
return axes.axes[axis];
|
||||
}
|
||||
|
||||
DriverStation::TouchpadFinger DriverStation::GetStickTouchpadFinger(
|
||||
int stick, int touchpad, int finger) {
|
||||
if (stick < 0 || stick >= kJoystickPorts) {
|
||||
WPILIB_ReportError(warn::BadJoystickIndex, "stick {} out of range", stick);
|
||||
return TouchpadFinger{false, 0.0f, 0.0f};
|
||||
}
|
||||
if (touchpad < 0 || touchpad >= HAL_kMaxJoystickTouchpads) {
|
||||
WPILIB_ReportError(warn::BadJoystickAxis, "touchpad {} out of range",
|
||||
touchpad);
|
||||
return TouchpadFinger{false, 0.0f, 0.0f};
|
||||
}
|
||||
if (finger < 0 || finger >= HAL_kMaxJoystickTouchpadFingers) {
|
||||
WPILIB_ReportError(warn::BadJoystickAxis, "finger {} out of range", finger);
|
||||
return TouchpadFinger{false, 0.0f, 0.0f};
|
||||
}
|
||||
|
||||
HAL_JoystickTouchpads touchpads;
|
||||
HAL_GetJoystickTouchpads(stick, &touchpads);
|
||||
|
||||
auto touchpadCount = touchpads.count;
|
||||
if (touchpad < touchpadCount) {
|
||||
if (finger < touchpads.touchpads[touchpad].count) {
|
||||
return TouchpadFinger{
|
||||
touchpads.touchpads[touchpad].fingers[finger].down != 0,
|
||||
touchpads.touchpads[touchpad].fingers[finger].x,
|
||||
touchpads.touchpads[touchpad].fingers[finger].y};
|
||||
}
|
||||
}
|
||||
|
||||
ReportJoystickUnpluggedWarning(
|
||||
"Joystick Touchpad Finger {} missing, check if all controllers are "
|
||||
"plugged in",
|
||||
touchpad);
|
||||
return TouchpadFinger{false, 0.0f, 0.0f};
|
||||
}
|
||||
|
||||
bool DriverStation::GetStickTouchpadFingerAvailable(int stick, int touchpad,
|
||||
int finger) {
|
||||
if (stick < 0 || stick >= kJoystickPorts) {
|
||||
WPILIB_ReportError(warn::BadJoystickIndex, "stick {} out of range", stick);
|
||||
return false;
|
||||
}
|
||||
if (touchpad < 0 || touchpad >= HAL_kMaxJoystickTouchpads) {
|
||||
WPILIB_ReportError(warn::BadJoystickAxis, "touchpad {} out of range",
|
||||
touchpad);
|
||||
return false;
|
||||
}
|
||||
if (finger < 0 || finger >= HAL_kMaxJoystickTouchpadFingers) {
|
||||
WPILIB_ReportError(warn::BadJoystickAxis, "finger {} out of range", finger);
|
||||
return false;
|
||||
}
|
||||
|
||||
HAL_JoystickTouchpads touchpads;
|
||||
HAL_GetJoystickTouchpads(stick, &touchpads);
|
||||
|
||||
auto touchpadCount = touchpads.count;
|
||||
if (touchpad < touchpadCount) {
|
||||
if (finger < touchpads.touchpads[touchpad].count) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
std::optional<double> DriverStation::GetStickAxisIfAvailable(int stick,
|
||||
int axis) {
|
||||
if (stick < 0 || stick >= kJoystickPorts) {
|
||||
|
||||
@@ -176,3 +176,13 @@ void GenericHID::SetRumble(RumbleType type, double value) {
|
||||
HAL_SetJoystickRumble(m_port, m_leftRumble, m_rightRumble,
|
||||
m_leftTriggerRumble, m_rightTriggerRumble);
|
||||
}
|
||||
|
||||
bool GenericHID::GetTouchpadFingerAvailable(int touchpad, int finger) const {
|
||||
return DriverStation::GetStickTouchpadFingerAvailable(m_port, touchpad,
|
||||
finger);
|
||||
}
|
||||
|
||||
DriverStation::TouchpadFinger GenericHID::GetTouchpadFinger(int touchpad,
|
||||
int finger) const {
|
||||
return DriverStation::GetStickTouchpadFinger(m_port, touchpad, finger);
|
||||
}
|
||||
|
||||
@@ -72,6 +72,12 @@ class DriverStation final {
|
||||
kUpLeft = HAL_JoystickPOV_kLeftUp,
|
||||
};
|
||||
|
||||
struct TouchpadFinger final {
|
||||
bool down = false;
|
||||
float x = 0.0f;
|
||||
float y = 0.0f;
|
||||
};
|
||||
|
||||
/**
|
||||
* Gets the angle of a POVDirection.
|
||||
*
|
||||
@@ -159,6 +165,28 @@ class DriverStation final {
|
||||
*/
|
||||
static double GetStickAxis(int stick, int axis);
|
||||
|
||||
/**
|
||||
* Get the finger data of a touchpad on a joystick, if available.
|
||||
*
|
||||
* @param stick The joystick to read.
|
||||
* @param touchpad The touchpad index to read from the joystick.
|
||||
* @param finger The finger index to read from the touchpad.
|
||||
* @return The finger data of the touchpad on the joystick.
|
||||
*/
|
||||
static TouchpadFinger GetStickTouchpadFinger(int stick, int touchpad,
|
||||
int finger);
|
||||
|
||||
/**
|
||||
* Whether a finger on a touchpad is available.
|
||||
*
|
||||
* @param stick The joystick to read.
|
||||
* @param touchpad The touchpad index to read from the joystick.
|
||||
* @param finger The finger index to read from the touchpad.
|
||||
* @return True if the finger data is available.
|
||||
*/
|
||||
static bool GetStickTouchpadFingerAvailable(int stick, int touchpad,
|
||||
int finger);
|
||||
|
||||
/**
|
||||
* Get the value of the axis on a joystick, if available.
|
||||
*
|
||||
|
||||
@@ -370,6 +370,23 @@ class GenericHID {
|
||||
*/
|
||||
void SetRumble(RumbleType type, double value);
|
||||
|
||||
/**
|
||||
* Check if a touchpad finger is available.
|
||||
* @param touchpad The touchpad to check.
|
||||
* @param finger The finger to check.
|
||||
* @return true if the touchpad finger is available.
|
||||
*/
|
||||
bool GetTouchpadFingerAvailable(int touchpad, int finger) const;
|
||||
|
||||
/**
|
||||
* Get the touchpad finger data.
|
||||
* @param touchpad The touchpad to read.
|
||||
* @param finger The finger to read.
|
||||
* @return The touchpad finger data.
|
||||
*/
|
||||
DriverStation::TouchpadFinger GetTouchpadFinger(int touchpad,
|
||||
int finger) const;
|
||||
|
||||
private:
|
||||
int m_port;
|
||||
uint16_t m_leftRumble = 0;
|
||||
|
||||
@@ -57,6 +57,8 @@ classes:
|
||||
GetStickPOVsAvailable:
|
||||
GetStickButtonsMaximumIndex:
|
||||
GetStickButtonsAvailable:
|
||||
GetStickTouchpadFinger:
|
||||
GetStickTouchpadFingerAvailable:
|
||||
inline_code: |
|
||||
.def("getControlState",
|
||||
[](DriverStation *self) -> std::tuple<bool, bool, bool> {
|
||||
@@ -70,3 +72,8 @@ classes:
|
||||
".. versionadded:: 2019.2.1\n"
|
||||
"\n"
|
||||
".. note:: This function only exists in RobotPy\n"))
|
||||
wpi::DriverStation::TouchpadFinger:
|
||||
attributes:
|
||||
down:
|
||||
x:
|
||||
y:
|
||||
|
||||
@@ -47,6 +47,8 @@ classes:
|
||||
GetPOVsAvailable:
|
||||
GetButtonsMaximumIndex:
|
||||
GetButtonsAvailable:
|
||||
GetTouchpadFingerAvailable:
|
||||
GetTouchpadFinger:
|
||||
|
||||
inline_code: |
|
||||
cls_GenericHID
|
||||
|
||||
@@ -34,7 +34,8 @@ public final class DriverStation {
|
||||
/** Number of Joystick ports. */
|
||||
public static final int kJoystickPorts = 6;
|
||||
|
||||
private static final long[] m_metadataCache = new long[4];
|
||||
private static final long[] m_metadataCache = new long[7];
|
||||
private static final float[] m_touchpadFingersCache = new float[8];
|
||||
|
||||
private static int availableToCount(long available) {
|
||||
// Top bit has to be set
|
||||
@@ -52,6 +53,36 @@ public final class DriverStation {
|
||||
return count;
|
||||
}
|
||||
|
||||
private static final class HALJoystickTouchpadFinger {
|
||||
public float m_x;
|
||||
public float m_y;
|
||||
public boolean m_down;
|
||||
}
|
||||
|
||||
private static class HALJoystickTouchpad {
|
||||
public final HALJoystickTouchpadFinger[] m_fingers =
|
||||
new HALJoystickTouchpadFinger[DriverStationJNI.kMaxJoystickTouchpadFingers];
|
||||
public int m_count;
|
||||
|
||||
HALJoystickTouchpad() {
|
||||
for (int i = 0; i < m_fingers.length; i++) {
|
||||
m_fingers[i] = new HALJoystickTouchpadFinger();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static class HALJoystickTouchpads {
|
||||
public final HALJoystickTouchpad[] m_touchpads =
|
||||
new HALJoystickTouchpad[DriverStationJNI.kMaxJoystickTouchpads];
|
||||
public int m_count;
|
||||
|
||||
HALJoystickTouchpads() {
|
||||
for (int i = 0; i < m_touchpads.length; i++) {
|
||||
m_touchpads[i] = new HALJoystickTouchpad();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
private static final class HALJoystickButtons {
|
||||
public long m_buttons;
|
||||
public long m_available;
|
||||
@@ -109,6 +140,32 @@ public final class DriverStation {
|
||||
Elimination
|
||||
}
|
||||
|
||||
/** Represents a finger on a touchpad. */
|
||||
@SuppressWarnings("MemberName")
|
||||
public static class TouchpadFinger {
|
||||
/** Whether the finger is touching the touchpad. */
|
||||
public final boolean down;
|
||||
|
||||
/** The x position of the finger. 0 is at top left. */
|
||||
public final float x;
|
||||
|
||||
/** The y position of the finger. 0 is at top left. */
|
||||
public final float y;
|
||||
|
||||
/**
|
||||
* Creates a TouchpadFinger object.
|
||||
*
|
||||
* @param down Whether the finger is touching the touchpad.
|
||||
* @param x The x position of the finger.
|
||||
* @param y The y position of the finger.
|
||||
*/
|
||||
public TouchpadFinger(boolean down, float x, float y) {
|
||||
this.x = x;
|
||||
this.y = y;
|
||||
this.down = down;
|
||||
}
|
||||
}
|
||||
|
||||
/** A controller POV direction. */
|
||||
public enum POVDirection {
|
||||
/** POV center. */
|
||||
@@ -480,6 +537,8 @@ public final class DriverStation {
|
||||
private static HALJoystickAxesRaw[] m_joystickAxesRaw = new HALJoystickAxesRaw[kJoystickPorts];
|
||||
private static HALJoystickPOVs[] m_joystickPOVs = new HALJoystickPOVs[kJoystickPorts];
|
||||
private static HALJoystickButtons[] m_joystickButtons = new HALJoystickButtons[kJoystickPorts];
|
||||
private static HALJoystickTouchpads[] m_joystickTouchpads =
|
||||
new HALJoystickTouchpads[kJoystickPorts];
|
||||
private static MatchInfoData m_matchInfo = new MatchInfoData();
|
||||
private static ControlWord m_controlWord = new ControlWord();
|
||||
private static EventVector m_refreshEvents = new EventVector();
|
||||
@@ -491,6 +550,8 @@ public final class DriverStation {
|
||||
private static HALJoystickPOVs[] m_joystickPOVsCache = new HALJoystickPOVs[kJoystickPorts];
|
||||
private static HALJoystickButtons[] m_joystickButtonsCache =
|
||||
new HALJoystickButtons[kJoystickPorts];
|
||||
private static HALJoystickTouchpads[] m_joystickTouchpadsCache =
|
||||
new HALJoystickTouchpads[kJoystickPorts];
|
||||
private static MatchInfoData m_matchInfoCache = new MatchInfoData();
|
||||
private static ControlWord m_controlWordCache = new ControlWord();
|
||||
|
||||
@@ -521,11 +582,13 @@ public final class DriverStation {
|
||||
m_joystickAxes[i] = new HALJoystickAxes(DriverStationJNI.kMaxJoystickAxes);
|
||||
m_joystickAxesRaw[i] = new HALJoystickAxesRaw(DriverStationJNI.kMaxJoystickAxes);
|
||||
m_joystickPOVs[i] = new HALJoystickPOVs(DriverStationJNI.kMaxJoystickPOVs);
|
||||
m_joystickTouchpads[i] = new HALJoystickTouchpads();
|
||||
|
||||
m_joystickButtonsCache[i] = new HALJoystickButtons();
|
||||
m_joystickAxesCache[i] = new HALJoystickAxes(DriverStationJNI.kMaxJoystickAxes);
|
||||
m_joystickAxesRawCache[i] = new HALJoystickAxesRaw(DriverStationJNI.kMaxJoystickAxes);
|
||||
m_joystickPOVsCache[i] = new HALJoystickPOVs(DriverStationJNI.kMaxJoystickPOVs);
|
||||
m_joystickTouchpadsCache[i] = new HALJoystickTouchpads();
|
||||
}
|
||||
|
||||
m_matchDataSender = new MatchDataSender();
|
||||
@@ -791,6 +854,87 @@ public final class DriverStation {
|
||||
return 0.0;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the state of a touchpad finger on the joystick.
|
||||
*
|
||||
* @param stick The joystick to read.
|
||||
* @param touchpad The touchpad to read.
|
||||
* @param finger The finger to read.
|
||||
* @return the state of the touchpad finger.
|
||||
*/
|
||||
public static TouchpadFinger getStickTouchpadFinger(int stick, int touchpad, int finger) {
|
||||
if (stick < 0 || stick >= kJoystickPorts) {
|
||||
throw new IllegalArgumentException("Joystick index is out of range, should be 0-5");
|
||||
}
|
||||
if (touchpad < 0 || touchpad >= DriverStationJNI.kMaxJoystickTouchpads) {
|
||||
throw new IllegalArgumentException("Joystick touchpad is out of range");
|
||||
}
|
||||
if (finger < 0 || finger >= DriverStationJNI.kMaxJoystickTouchpadFingers) {
|
||||
throw new IllegalArgumentException("Joystick touchpad finger is out of range");
|
||||
}
|
||||
|
||||
int touchpadCount;
|
||||
m_cacheDataMutex.lock();
|
||||
try {
|
||||
touchpadCount = m_joystickTouchpads[stick].m_count;
|
||||
if (touchpad < touchpadCount) {
|
||||
HALJoystickTouchpad tp = m_joystickTouchpads[stick].m_touchpads[touchpad];
|
||||
if (finger < tp.m_count) {
|
||||
return new TouchpadFinger(
|
||||
tp.m_fingers[finger].m_down, tp.m_fingers[finger].m_x, tp.m_fingers[finger].m_y);
|
||||
}
|
||||
}
|
||||
} finally {
|
||||
m_cacheDataMutex.unlock();
|
||||
}
|
||||
|
||||
reportJoystickUnpluggedWarning(
|
||||
"Joystick touchpad finger "
|
||||
+ finger
|
||||
+ " on touchpad "
|
||||
+ touchpad
|
||||
+ " on port "
|
||||
+ stick
|
||||
+ " not available, check if controller is plugged in");
|
||||
return new TouchpadFinger(false, 0.0f, 0.0f);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get whether a touchpad finger on the joystick is available.
|
||||
*
|
||||
* @param stick The joystick to read.
|
||||
* @param touchpad The touchpad to read.
|
||||
* @param finger The finger to read.
|
||||
* @return whether the touchpad finger is available.
|
||||
*/
|
||||
public static boolean getStickTouchpadFingerAvailable(int stick, int touchpad, int finger) {
|
||||
if (stick < 0 || stick >= kJoystickPorts) {
|
||||
throw new IllegalArgumentException("Joystick index is out of range, should be 0-5");
|
||||
}
|
||||
if (touchpad < 0 || touchpad >= DriverStationJNI.kMaxJoystickTouchpads) {
|
||||
throw new IllegalArgumentException("Joystick touchpad is out of range");
|
||||
}
|
||||
if (finger < 0 || finger >= DriverStationJNI.kMaxJoystickTouchpadFingers) {
|
||||
throw new IllegalArgumentException("Joystick touchpad finger is out of range");
|
||||
}
|
||||
|
||||
int touchpadCount;
|
||||
m_cacheDataMutex.lock();
|
||||
try {
|
||||
touchpadCount = m_joystickTouchpads[stick].m_count;
|
||||
if (touchpad < touchpadCount) {
|
||||
HALJoystickTouchpad tp = m_joystickTouchpads[stick].m_touchpads[touchpad];
|
||||
if (finger < tp.m_count) {
|
||||
return true;
|
||||
}
|
||||
}
|
||||
} finally {
|
||||
m_cacheDataMutex.unlock();
|
||||
}
|
||||
|
||||
return false;
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the value of the axis on a joystick if available. This depends on the mapping of the
|
||||
* joystick connected to the specified port.
|
||||
@@ -1399,12 +1543,26 @@ public final class DriverStation {
|
||||
m_joystickAxesCache[stick].m_axes,
|
||||
m_joystickAxesRawCache[stick].m_axes,
|
||||
m_joystickPOVsCache[stick].m_povs,
|
||||
m_touchpadFingersCache,
|
||||
m_metadataCache);
|
||||
m_joystickAxesCache[stick].m_available = (int) m_metadataCache[0];
|
||||
m_joystickAxesRawCache[stick].m_available = (int) m_metadataCache[0];
|
||||
m_joystickPOVsCache[stick].m_available = (int) m_metadataCache[1];
|
||||
m_joystickButtonsCache[stick].m_available = m_metadataCache[2];
|
||||
m_joystickButtonsCache[stick].m_buttons = m_metadataCache[3];
|
||||
m_joystickTouchpadsCache[stick].m_count = (int) m_metadataCache[4];
|
||||
for (int i = 0; i < m_joystickTouchpadsCache[stick].m_count; i++) {
|
||||
long metadata = m_metadataCache[5 + i];
|
||||
m_joystickTouchpadsCache[stick].m_touchpads[i].m_fingers[0].m_down = (metadata & 0x1) != 0;
|
||||
m_joystickTouchpadsCache[stick].m_touchpads[i].m_fingers[1].m_down = (metadata & 0x2) != 0;
|
||||
m_joystickTouchpadsCache[stick].m_touchpads[i].m_count = (int) (metadata >> 2 & 0x3);
|
||||
for (int j = 0; j < m_joystickTouchpadsCache[stick].m_touchpads[i].m_count; j++) {
|
||||
m_joystickTouchpadsCache[stick].m_touchpads[i].m_fingers[j].m_x =
|
||||
m_touchpadFingersCache[i * 4 + j * 2 + 0];
|
||||
m_joystickTouchpadsCache[stick].m_touchpads[i].m_fingers[j].m_y =
|
||||
m_touchpadFingersCache[i * 4 + j * 2 + 1];
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
DriverStationJNI.getMatchInfo(m_matchInfoCache);
|
||||
@@ -1442,6 +1600,10 @@ public final class DriverStation {
|
||||
m_joystickPOVs = m_joystickPOVsCache;
|
||||
m_joystickPOVsCache = currentPOVs;
|
||||
|
||||
HALJoystickTouchpads[] currentTouchpads = m_joystickTouchpads;
|
||||
m_joystickTouchpads = m_joystickTouchpadsCache;
|
||||
m_joystickTouchpadsCache = currentTouchpads;
|
||||
|
||||
MatchInfoData currentInfo = m_matchInfo;
|
||||
m_matchInfo = m_matchInfoCache;
|
||||
m_matchInfoCache = currentInfo;
|
||||
|
||||
@@ -7,6 +7,7 @@ package org.wpilib.driverstation;
|
||||
import java.util.HashMap;
|
||||
import java.util.Map;
|
||||
import org.wpilib.driverstation.DriverStation.POVDirection;
|
||||
import org.wpilib.driverstation.DriverStation.TouchpadFinger;
|
||||
import org.wpilib.event.BooleanEvent;
|
||||
import org.wpilib.event.EventLoop;
|
||||
import org.wpilib.hardware.hal.DriverStationJNI;
|
||||
@@ -501,4 +502,26 @@ public class GenericHID {
|
||||
this.m_leftTriggerRumble,
|
||||
this.m_rightTriggerRumble);
|
||||
}
|
||||
|
||||
/**
|
||||
* Check if a touchpad finger is available.
|
||||
*
|
||||
* @param touchpad The touchpad to check.
|
||||
* @param finger The finger to check.
|
||||
* @return true if the touchpad finger is available.
|
||||
*/
|
||||
public boolean getTouchpadFingerAvailable(int touchpad, int finger) {
|
||||
return DriverStation.getStickTouchpadFingerAvailable(m_port, touchpad, finger);
|
||||
}
|
||||
|
||||
/**
|
||||
* Get the touchpad finger data.
|
||||
*
|
||||
* @param touchpad The touchpad to read.
|
||||
* @param finger The finger to read.
|
||||
* @return The touchpad finger data.
|
||||
*/
|
||||
public TouchpadFinger getTouchpadFinger(int touchpad, int finger) {
|
||||
return DriverStation.getStickTouchpadFinger(m_port, touchpad, finger);
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user