Panduan Implementasi Haptic Pen

Dokumen ini merinci implementasi protokol untuk perangkat Haptic Pen yang terhubung ke host Windows 11 yang kompatibel. Ini tidak termasuk panduan tentang batasan mekanis, batasan listrik, atau pemilihan komponen untuk menghasilkan respons haptik dalam transduser pena. Panduan implementasi ini bersifat agnostik terhadap protokol pena yang digunakan antara transduser pena dan digitizer pena, namun implementasi dapat memilih untuk menggunakan protokol pena dengan kapabilitas uplink yang memungkinkan digitizer pena memberikan parameter tambahan kepada transduser pena untuk memodulasi respons haptik.

Kelas Perangkat

Haptic Pen adalah ekstensi dari kelas Pen Device di Windows. Panduan implementasi ini menambah Panduan Implementasi Pena dan berfokus pada penerapan haptik dalam transduser pena, sehingga pena haptik harus memenuhi persyaratan dalam Panduan Implementasi Pena selain yang terkandung di sini.

Konektivitas Bus Perangkat

Pena Haptic harus menggunakan driver kotak masuk yang Microsoft disediakan untuk terhubung ke host Windows menggunakan HID melalui Bluetooth.

Implementasi Protokol Pena Haptic

Pemahaman yang baik tentang protokol HID diperlukan untuk dapat memahami informasi yang disajikan di sini. Lihat sumber daya berikut untuk informasi tentang protokol HID:

Windows mencakup driver kelas HID dan driver miniport yang mendukung HiD Bluetooth yang sesuai, oleh karena itu tidak perlu driver port mini pihak ketiga. Firmware perangkat pena haptic hanya perlu melaporkan penggunaan yang dijelaskan dalam topik ini. Windows akan menggunakan firmware dan driver HID-nya sendiri untuk mengaktifkan perangkat dan memberikan akses aplikasi Windows ke perangkat.

Contoh deskriptor disediakan di bagian Contoh Deskriptor Laporan di bawah ini.

Koleksi HID Tingkat Atas yang Diperlukan

Koleksi HID tingkat atas yang diperlukan untuk pena haptic

Perangkat Haptic Pen harus menggunakan protokol HID pada sistem Windows 11 sedemikian rupa sehingga perangkat menyediakan koleksi tingkat tertinggi yang muncul sebagai digitizer/stylus (Page 0x0D, Usage 0x20).

Laporan Input Pena Digitizer

Koleksi digitizer pena harus melaporkan pengidentifikasi stylus yang terdiri dari nomor seri transduser dan ID Vendor transduser dalam laporan input yang dilaporkan ke OS. Pengidentifikasi stylus yang sama harus dilaporkan melalui kumpulan data stylus. Ini memungkinkan OS untuk menghubungkan input pena yang dihasilkan oleh digitizer ke stylus. Detail tentang panduan implementasi pena dapat ditemukan di sini: Implementasi Protokol Pena.

Nomor Seri Transduser

Nomor Seri Transduser adalah pengidentifikasi persisten unik untuk transduser yang digunakan dalam aksesori pena yang berkomunikasi dengan digitizer pena. Ini diperlukan untuk menjadi 32-bit dan didefinisikan oleh vendor atau entitas yang diidentifikasi oleh ID vendor transduser. Dalam keadaan di mana Nomor Seri Transduser tersebut tidak diketahui oleh digitizer, baik karena aksesori pena tidak mendukung pengiriman nilai ini, atau karena transmisi tidak diterima sepenuhnya, digitizer harus melaporkan 0 kepada host. Posisi null tidak didukung oleh host.

Nomor Seri Transduser – Bagian 2

Nomor Seri Transduser – Bagian 2 memungkinkan 32-bit tambahan ditentukan sebagai bagian dari pengidentifikasi persisten unik untuk transduser yang digunakan dalam aksesori pena. Dalam keadaan di mana Nomor Seri Transduser - Bagian 2 tidak diketahui oleh digitizer, baik karena aksesori pena tidak mendukung pengiriman nilai ini atau karena transmisi belum diterima secara penuh, digitizer akan melaporkan 0 kepada host. Posisi null tidak didukung oleh host.

Halaman ID Catatan
0xD 0x5B Wajib untuk fitur yang bergantung pada identifikasi pena unik (lihat di bawah)
0xD 0x6E Ekstensi opsional dari nomor seri dengan tambahan 32 bit

ID Vendor dari Transduser

Vendor ID Transduser adalah bidang untuk mengidentifikasi produsen transduser yang digunakan dalam aksesori pena yang berinteraksi dengan digitizer pena. Diperlukan agar terdapat ID vendor 2-byte USB-IF yang ditetapkan oleh produsen atau IHV/OEM yang memberikan otorisasi penggunaan ID vendor USB-IF mereka untuk tujuan ini.

Halaman ID Catatan
0xD 0x91 Wajib untuk fitur yang bergantung pada identifikasi pena unik (lihat di bawah)

Fitur Bergantung pada Identifikasi Unik Pena

Melaporkan PenID wajib mengaktifkan skenario seperti haptik pena (diperlukan untuk fitur haptik dalam panduan ini).

Ini juga wajib untuk skenario yang menggunakan beberapa pena untuk penintaan. Contohnya:

  • Aplikasi papan tulis di Windows mendukung beberapa penggunaan pena di mana setiap pena dapat dipetakan ke alat penintaan tertentu
  • Secara umum, aplikasi yang ingin menetapkan atribut atau perilaku ke pena fisik yang berbeda, meskipun digitizer hanya dapat mendukung satu pena di layar pada satu waktu
  • Aplikasi yang ingin melacak beberapa pena simultan pada digitizer yang didukung

Laporan Fitur Haptic

Jika perangkat pena mendukung umpan balik haptik, perangkat tersebut dapat memungkinkan sistem dan aplikasi memanfaatkannya dengan menyertakan koleksi umpan balik haptik (Halaman 0x0E, Penggunaan 0x01) dalam TLC stylus. Untuk informasi selengkapnya tentang bagaimana spesifikasi HID mendukung umpan balik haptik, silakan lihat ratifikasi halaman Haptics ke spesifikasi HID.

Host menggunakan penggunaan berikut dalam laporan GET_FEATURE (melalui kumpulan umpan balik haptik) untuk mengkueri kemampuan haptik perangkat pena, khususnya bentuk gelombang dan durasi yang didukung. Jika perangkat memilih untuk mengekspos koleksi umpan balik haptik, laporan fitur ini wajib sehingga host dapat menemukan kemampuan mana yang dapat digunakannya saat memulai umpan balik haptik melalui laporan output yang sesuai.

Anggota Description Halaman ID Wajib/Opsional
Daftar Bentuk Gelombang Daftar bentuk gelombang haptik yang diurutkan yang didukung oleh perangkat 0x0E 0x10 Mandatory
Daftar Durasi Daftar durasi yang diurutkan untuk bentuk gelombang dalam Daftar Bentuk Gelombang 0x0E 0x11 Mandatory

Daftar Bentuk Gelombang

Penggunaan Waveform List mewakili kumpulan penggunaan HID dari bentuk gelombang yang didukung, diurutkan menggunakan ordinal. Bentuk gelombang haptik yang telah ditentukan sebelumnya didefinisikan dalam spesifikasi HID. Untuk perangkat haptik pena, bentuk gelombang ini dapat diklasifikasikan sebagai dua segmen yang sesuai dengan skenario yang berbeda:

  • Berkelanjutan - Umpan balik berbasis tinta untuk mensimulasikan berbagai tekstur saat pengguna secara aktif inking dengan alat yang berbeda seperti pena, pensil dll.
  • Diskrit - Umpan balik berbasis interaksi diskrit dan tidak berkelanjutan saat pengguna melakukan beberapa tugas berbasis input seperti mengarahkan kursor ke tombol, mengklik tombol tidak aktif, dan pengenalan bentuk tinta yang berhasil.

Daftar lengkap bentuk gelombang yang didukung untuk perangkat haptik pena di bawah ini:

Gelombang Description Halaman ID Wajib/Opsional
Tidak No-op (tanpa operasi). Seharusnya tidak berdampak pada status bermain bentuk gelombang yang sedang berlangsung 0x0E 0x1001 Mandatory
Stop Menghentikan pemutaran bentuk gelombang yang sedang berlangsung 0x0E 0x1002 Mandatory
Click Membuat umpan balik "klik" singkat. Fallback default saat bentuk gelombang umpan balik interaksi yang dipilih oleh aplikasi tidak didukung oleh pena haptic 0x0E 0x1003 Mandatory
InkContinuous Mensimulasikan nuansa penintaan dengan pena titik bola fisik. Penggantian default ketika gelombang tinta tidak didukung oleh pena haptik 0x0E 0x100B Mandatory
Keberhasilan Pola naik yang mengonfirmasi tindakan selesai 0x0E 0x1009 Lihat di bawah ini
Kesalahan Pola turun yang menunjukkan tindakan gagal 0x0E 0x100A Lihat di bawah ini
Arahkan Sinyal haptik saat pengguna mengarahkan kursor ke elemen UI interaktif dengan pena haptic 0x0E 0x1008 Fakultatif
Tekan Sinyal yang mewakili penekanan tombol 0x0E 0x1006 Lihat di bawah ini
Pelepasan Sinyal yang mewakili pelepasan tombol 0x0E 0x1007 Lihat di bawah ini
Menubruk Denyut lembut untuk menunjukkan pencapaian batas 0x0E 0x1012 Fakultatif
Align Denyut tajam saat objek menempel pada panduan penyelarasan 0x0E 0x1013 Fakultatif
Step Pulsa tegas untuk perubahan diskrit, seperti bergerak melalui langkah atau nilai 0x0E 0x1014 Fakultatif
Tumbuh Denyut dinamis yang menyampaikan gerakan, transisi, atau aktivitas sistem cerdas 0x0E 0x1015 Fakultatif
PensilBerlanjut Sinyal haptik berkelanjutan saat pengguna memilih pensil sebagai alat penintaan 0x0E 0x100C Fakultatif
MarkerContinuous Sinyal haptik berkelanjutan saat pengguna memilih penanda sebagai alat penintaan 0x0E 0x100D Fakultatif
ChiselMarkerContinuous Sinyal haptik berkelanjutan saat pengguna memilih penanda/penyorot pahat sebagai alat penintaan 0x0E 0x100E Fakultatif
SikatBerlanjut Sinyal haptik berkelanjutan saat pengguna memilih sikat sebagai alat penintaan 0x0E 0x100F Fakultatif
PenghapusKontinu Sinyal haptik berkelanjutan saat pengguna memilih penghapus sebagai alat penintaan 0x0E 0x1010 Fakultatif
SparkleContinuous Sinyal haptik berkelanjutan untuk alat tinta khusus, seperti kuas multi-warna 0x0E 0x1011 Fakultatif

Nota

Meskipun tidak diperlukan, didorong untuk juga menerapkan bentuk gelombang enumerasi lainnya untuk memberikan pengalaman pengguna yang lebih lengkap.

Tidak Ada dan Berhenti diperlukan untuk semua perangkat haptik yang mematuhi HID. Ordinal 1 dan 2 secara implisit diatur ke Tidak Ada dan Berhenti. Mereka tidak perlu dideklarasikan dalam Daftar Bentuk Gelombang atau Daftar Durasi. Daftar Bentuk Gelombang dan Daftar Durasi mendeklarasikan bentuk gelombang yang didukung melalui rentang penggunaan ordinalnya (Penggunaan/Minimum Logis dan Maksimum) dan nilai yang dikembalikan untuk setiap ordinal, menggunakan Tidak Ada untuk ordinal yang tidak didukung.

Bentuk gelombang Tekan dan Lepas bersifat opsional, tetapi jika salah satunya didukung, maka yang lainnya juga harus didukung. Hal yang sama berlaku untuk Keberhasilan dan Kesalahan.

Daftar Durasi

Penggunaan Daftar Durasi mewakili kumpulan durasi untuk bentuk gelombang yang didukung dalam daftar Bentuk Gelombang, diurutkan menggunakan ordinal. Unit untuk durasi bentuk gelombang adalah milidetik, dan durasi harus berupa nilai non-nol positif untuk bentuk gelombang yang tidak berkelanjutan. Jika bentuk gelombang terus menerus (akan diputar sampai dihentikan oleh host atau Waktu Henti Bentuk Gelombang terlampaui), maka durasinya didefinisikan sebagai nol.

Tidak Ada dan Berhenti diasumsikan memiliki durasi nol. Mereka tidak perlu dicantumkan dalam Daftar Durasi.

Laporan Output Haptic

Host memanfaatkan fungsi berikut dalam laporan keluaran untuk mengirimkan sinyal umpan balik haptik ke perangkat Haptic Pen. Beberapa penggunaan wajib untuk kompatibilitas dengan implementasi host Windows.

Anggota Description Halaman ID Wajib/Opsional
Pemicu Manual Bentuk gelombang untuk diaktifkan sebagai perintah eksplisit dari host 0x0E 0x21 Mandatory
Intensitas Output - Intensitas bentuk gelombang dari Pemicu Manual sebagai persentase 0x0E 0x23 Fakultatif
Jumlah Pengulangan Output - Jumlah waktu untuk memutar bentuk gelombang Pemicu Manual setelah pemutaran awal 0x0E 0x24 Fakultatif
Periode Pemicu Ulang Output - Durasi waktu untuk menunggu sebelum memicu ulang Pemicu Manual saat mengulangi 0x0E 0x25 Fakultatif
Waktu Cutoff Bentuk Gelombang Waktu maksimum gelombang Pemicu Manual dapat beroperasi sebelum dihentikan 0x0E 0x28 Fakultatif

Pemicu Manual

Penggunaan Pemicu Manual tidak secara langsung membawa ID penggunaan bentuk gelombang. Sebaliknya, nilainya adalah sebuah ordinal menuju tabel bentuk gelombang diperluas perangkat. Ordinal 1 disediakan untuk bentuk gelombang None (no-op) wajib, ordinal 2 disediakan untuk bentuk gelombang Stop, dan ordinal 3 dan lebih tinggi dihubungkan ke entri dalam Daftar Bentuk Gelombang/Daftar Durasi perangkat (lihat mekanisme Daftar Bentuk Gelombang/Daftar Durasi), yang mana ordinal 3 sesuai dengan entri pertama dalam daftar, ordinal 4 sesuai dengan entri kedua, dan seterusnya. Host dapat mengirim ordinal implisit 1 dan 2, dan untuk ordinal 3 dan yang lebih tinggi hanya akan mengirim nilai yang sesuai dengan entri yang telah diiklankan perangkat sebagai didukung.

Ketika laporan output yang berisi Pemicu Manual yang ordinalnya diuraikan menjadi bentuk gelombang diskrit dikirim ke perangkat, perangkat harus segera mulai memutar bentuk gelombang yang disebutkan dengan properti tambahan yang disertakan dalam laporan output (Intensitas, Jumlah Ulang, Periode Pengaktifan Ulang). Jika ordinal Pemicu Manual menyelesaikan menjadi bentuk gelombang berkelanjutan, pemutaran sinyal harus dimulai atas kebijaksanaan perangkat (misalnya, ketika perangkat menentukan bahwa stylus bersentuhan dengan layar).

Nota

Persyaratan ini adalah penyimpangan dari spesifikasi HID - biasanya, semua bentuk gelombang yang dikirim melalui Pemicu Manual harus segera dijalankan. Namun, implementasi host pena haptik Windows tidak menerapkan dukungan Pemicu Otomatis, jadi sebaliknya perangkat harus membedakan antara bentuk gelombang diskrit dan berkelanjutan.

Ketika laporan output berisi Pemicu Manual yang ordinasinya ditentukan ke bentuk gelombang Berhenti (ordinal 2), pemutaran bentuk gelombang yang sedang berlangsung harus segera dihentikan. Ketika laporan output berisi Pemicu Manual yang ordinalnya diselesaikan ke bentuk gelombang Tidak Ada (no-op) yang bersifat wajib (ordinal 1), perangkat tidak boleh memulai bentuk gelombang baru dan tidak boleh mengubah status bentuk gelombang yang sedang diputar; laporan harus diperlakukan sebagai tanpa operasi dalam kaitannya dengan output haptik.

Intensitas

Penggunaan Intensitas mewakili persentase intensitas maksimum untuk diterapkan pada bentuk gelombang. Nilai ini harus bervariasi antara 0 dan 100 persen. 100 persen menunjukkan bentuk gelombang akan dipicu oleh perangkat pada kekuatan maksimumnya, dan 0 persen menunjukkan transduser haptik tidak diaktifkan.

Jumlah Pengulangan

Penggunaan Jumlah Berulang menunjukkan banyaknya pengulangan bentuk gelombang. Jumlah Ulangi nol menunjukkan bentuk gelombang Pemicu Manual hanya boleh diputar satu kali (tidak ada pengulangan). Jika Waktu Cutoff Bentuk Gelombang telah terlampaui, diharapkan pengulangan yang tidak lengkap akan diabaikan.

Periode Pemicu Ulang

Penggunaan Periode Penyetelan Ulang mewakili jumlah waktu yang diperlukan perangkat untuk menunggu sebelum mengulangi bentuk gelombang Pemicu Manual pada laporan output, sesuai nilai yang ditentukan oleh Jumlah Pengulangan. Unit untuk nilai ini adalah milidetik. Jika Periode Pemicu Ulang lebih kecil dari durasi bentuk gelombang yang dimainkan, bentuk gelombang harus dihentikan dan dimulai ulang pada periode waktu yang ditunjukkan oleh Periode Pemicu Ulang.

Waktu Cutoff Bentuk Gelombang

Penggunaan Waktu Potong Gelombang mewakili waktu maksimal yang diizinkan perangkat untuk mengulang bentuk gelombang Pemicu Manual sebelum mengakhiri pemutaran. Ini adalah nilai konstan untuk perangkat dan mencakup bentuk gelombang berkelanjutan tanpa durasi yang ditetapkan, dan bentuk gelombang dengan durasi diskrit yang diatur untuk diulang berkali-kali. Unit untuk nilai ini adalah milidetik.

Memulai dan Menghentikan Haptics

Diagram alur di bawah ini menjelaskan kapan sinyal haptik pena harus dikonfigurasi, dibersihkan, dimulai, dan dihentikan.

Berbagai status haptik yang dijelaskan di bawah ini adalah:

  • Bermain: Pena secara aktif memainkan bentuk gelombang haptik
  • Dijeda: Pena dikonfigurasi dengan bentuk gelombang, tetapi tidak secara aktif memutarnya
  • Dihentikan: Pena tidak dikonfigurasi dengan bentuk gelombang dan tidak secara aktif memutar apa pun

Untuk status pena sehubungan dengan digitizer, lihat Windows Pen States.

Nota

Ketika pena keluar dari jangkauan, disarankan, namun tidak diperlukan, untuk menghapus pengaturan haptik. Ini disampaikan dalam diagram di bawah ini oleh dua jalur alternatif yang keluar dari status "Pena: Dalam jarak; Haptics: Jeda" ketika pena berada di luar jangkauan.

Nota

Host kapan saja dapat meminta bentuk gelombang non-berkelanjutan untuk dimainkan. Dalam keadaan itu, pena harus memainkannya dan kemudian kembali ke keadaan sebelumnya.

Nota

Host hanya akan mengonfigurasi bentuk gelombang berkelanjutan. Bentuk gelombang diskrit/non-berkelanjutan hanya akan dipicu secara manual.

Diagram keadaan pena haptik

Koleksi Keyboard (Opsional)

Fitur opsional untuk mengaktifkan pelaporan klik tombol akhir ke host melalui laporan keyboard HID.

Untuk mengimplementasikan tombol Bluetooth tail-end, perangkat akan melaporkan 3 kombinasi keyboard berbeda yang sesuai dengan 3 tindakan tombol yang berbeda melalui perangkat keyboard HID Bluetooth LE yang terekspos ke host. Tindakan dan kombinasi keyboard yang sesuai diuraikan di bawah ini:

Tindakan Tombol Bluetooth Kombinasi Kunci untuk Laporan
Klik tunggal WIN+F20
Klik dua kali WIN+F19
Tekan dan tahan WIN+F18

Pena Stowage

Dimulai dengan Windows 10, versi 1903, Windows mendukung pemberitahuan untuk perangkat yang menyertakan penyimpanan pena yang kompatibel. Mekanisme ini bergantung pada perangkat keras yang mendeteksi pena dilepas atau dipasang kembali dan menghasilkan laporan keyboard HID yang sesuai untuk sepasang kombinasi pintasan. Untuk memberi sinyal penyandingan (pena ditempatkan kembali di penampungan), laporkan WIN+CTRL+F20 dan untuk memberi sinyal pelepasan (pena dikeluarkan dari penampungan), laporkan WIN+CTRL+F19. Ini dapat diimplementasikan dengan firmware atau driver.

Peristiwa undock/dock ini menampilkan/menyembunyikan menu ruang kerja Shell Ink. Dimulai dengan Windows 10, Office versi 2004 juga bereaksi terhadap peristiwa ini dengan menggunakan API platform yang memungkinkan pengembang memperluas aplikasi mereka untuk kesadaran tentang peristiwa stowage. Tidak ada dukungan untuk memeriksa apakah pena sedang berada di dok; aplikasi hanya diberi tahu tentang acara penghapusan dan pengembalian jika berada di latar depan.

Contoh Deskriptor Laporan HID

Deskriptor berikut mendukung semua penggunaan wajib dan opsional. Ini menyatakan dukungan untuk tujuh belas entri daftar bentuk gelombang (tidak termasuk bentuk gelombang implisit 1 (Tidak Ada) dan 2 (Berhenti), untuk total sembilan belas bentuk gelombang), dengan bentuk gelombang diskrit terpanjang memiliki durasi 50ms. Bentuk gelombang berkelanjutan memiliki durasi nol.

Semua rentang logika perlu diperbarui sesuai dukungan perangkat. Untuk mendukung sejumlah bentuk gelombang yang berbeda:

  • Rentang logis penggunaan Pemicu Manual harus diperbarui
  • Rentang penggunaan dan jumlah laporan untuk Daftar Bentuk Gelombang dan Daftar Durasi harus diperbarui

Untuk mendukung panjang bentuk gelombang maksimum yang berbeda, rentang logis berikut harus diperbarui:

  • Periode Pemicu Ulang (Output)
  • Waktu Cutoff Bentuk Gelombang (Output)
  • Daftar Durasi (Fitur)
05,0D,                      // Usage Page (Digitizers)
09,20,                      // Usage (Stylus)
A1,01,                      // Collection (Application)
85,40,                      //   Report ID (64)
95,01,                      //   Report Count (1)
75,20,                      //   Report Size (32)
17,00,00,00,80,             //   Logical Minimum (-2147483648)
27,FF,FF,FF,7F,             //   Logical Maximum (2147483647)
09,5B,                      //   Transducer Serial Number
81,02,                      //   Input (Data,Var,Abs)
75,10,                      //   Report Size (16)
15,01,                      //   Logical Minimum (1)
27,FF,FF,00,00,             //   Logical Maximum (65535)
09,91,                      //   Transducer Vendor ID
81,02,                      //   Input (Data,Var,Abs)
05,0E,                      //   Usage Page (Haptics)
09,01,                      //   Usage (Simple Haptic Controller)
A1,02,                      //   Collection (Logical)
85,41,                      //     Report ID (65)
09,10,                      //     Usage (Waveform List)
A1,02,                      //     Collection (Logical)
05,0A,                      //       Usage Page (Ordinal)
19,03,                      //       Usage Minimum (0x03)
29,13,                      //       Usage Maximum (0x13)
16,01,10,                   //       Logical Minimum (4097)
26,FF,2F,                   //       Logical Maximum (12287)
95,11,                      //       Report Count (17)
75,10,                      //       Report Size (16)
B1,02,                      //       Feature (Data,Var,Abs)
C0,                         //     End Collection ()
05,0E,                      //     Usage Page (Haptics)
09,11,                      //     Usage (Duration List)
A1,02,                      //     Collection (Logical)
05,0A,                      //       Usage Page (Ordinal)
19,03,                      //       Usage Minimum (0x03)
29,13,                      //       Usage Maximum (0x13)
35,00,                      //       Physical Minimum (0)
45,32,                      //       Physical Maximum (50)
66,01,10,                   //       Unit (SiLinear, Seconds:1)
55,0D,                      //       Unit Exponent (-3)
15,00,                      //       Logical Minimum (0)
25,32,                      //       Logical Maximum (50)
95,11,                      //       Report Count (17)
75,08,                      //       Report Size (8)
B1,02,                      //       Feature (Data,Var,Abs)
C0,                         //     End Collection ()
85,42,                      //     Report ID (66)
95,01,                      //     Report Count (1)
75,08,                      //     Report Size (8)
35,00,                      //     Physical Minimum (0)
45,00,                      //     Physical Maximum (0)
65,00,                      //     Unit (None)
55,00,                      //     Unit Exponent (0)
15,01,                      //     Logical Minimum (1)
25,13,                      //     Logical Maximum (19)
09,21,                      //     Usage (Manual Trigger)
91,02,                      //     Output (Data,Var,Abs)
15,00,                      //     Logical Minimum (0)
26,64,00,                   //     Logical Maximum (100)
09,23,                      //     Usage (Intensity)
91,02,                      //     Output (Data,Var,Abs)
25,05,                      //     Logical Maximum (5)
09,24,                      //     Usage (Repeat Count)
91,02,                      //     Output (Data,Var,Abs)
75,10,                      //     Report Size (16)
46,E8,03,                   //     Physical Maximum (1000)
66,01,10,                   //     Unit (SiLinear, Seconds:1)
55,0D,                      //     Unit Exponent (-3)
15,00,                      //     Logical Minimum (0)
26,E8,03,                   //     Logical Maximum (1000)
09,25,                      //     Usage (Retrigger Period)
91,02,                      //     Output (Data,Var,Abs)
36,E8,03,                   //     Physical Minimum (1000)
46,88,13,                   //     Physical Maximum (5000)
16,E8,03,                   //     Logical Minimum (1000)
26,88,13,                   //     Logical Maximum (5000)
09,28,                      //     Usage (Waveform Cutoff Time)
91,02,                      //     Output (Data,Var,Abs)
C0,                         //   End Collection ()
C0                          // End Collection ()