@@ -463,6 +463,178 @@ static inline bool tud_hid_gamepad_report(uint8_t report_id, int8_t x, int8_t y
463
463
HID_OUTPUT ( HID_DATA | HID_VARIABLE | HID_ABSOLUTE ),\
464
464
HID_COLLECTION_END \
465
465
466
+ // HID Lighting and Illumination Report Descriptor Template
467
+ // - 1st parameter is report id (required)
468
+ // Creates 6 report ids for lighting HID usages in the following order:
469
+ // report_id+0: HID_USAGE_LIGHTING_LAMP_ARRAY_ATTRIBUTES_REPORT
470
+ // report_id+1: HID_USAGE_LIGHTING_LAMP_ATTRIBUTES_REQUEST_REPORT
471
+ // report_id+2: HID_USAGE_LIGHTING_LAMP_ATTRIBUTES_RESPONSE_REPORT
472
+ // report_id+3: HID_USAGE_LIGHTING_LAMP_MULTI_UPDATE_REPORT
473
+ // report_id+4: HID_USAGE_LIGHTING_LAMP_RANGE_UPDATE_REPORT
474
+ // report_id+5: HID_USAGE_LIGHTING_LAMP_ARRAY_CONTROL_REPORT
475
+ #define TUD_HID_REPORT_DESC_LIGHTING (report_id ) \
476
+ HID_USAGE_PAGE ( HID_USAGE_PAGE_LIGHTING_AND_ILLUMINATION ),\
477
+ HID_USAGE ( HID_USAGE_LIGHTING_LAMP_ARRAY ),\
478
+ HID_COLLECTION ( HID_COLLECTION_APPLICATION ),\
479
+ /* Lamp Array Attributes Report */ \
480
+ HID_REPORT_ID (report_id ) \
481
+ HID_USAGE ( HID_USAGE_LIGHTING_LAMP_ARRAY_ATTRIBUTES_REPORT ),\
482
+ HID_COLLECTION ( HID_COLLECTION_LOGICAL ),\
483
+ HID_USAGE ( HID_USAGE_LIGHTING_LAMP_COUNT ),\
484
+ HID_LOGICAL_MIN ( 0 ),\
485
+ HID_LOGICAL_MAX_N ( 65535 , 3 ),\
486
+ HID_REPORT_SIZE ( 16 ),\
487
+ HID_REPORT_COUNT ( 1 ),\
488
+ HID_FEATURE ( HID_CONSTANT | HID_VARIABLE | HID_ABSOLUTE ),\
489
+ HID_USAGE ( HID_USAGE_LIGHTING_BOUNDING_BOX_WIDTH_IN_MICROMETERS ),\
490
+ HID_USAGE ( HID_USAGE_LIGHTING_BOUNDING_BOX_HEIGHT_IN_MICROMETERS ),\
491
+ HID_USAGE ( HID_USAGE_LIGHTING_BOUNDING_BOX_DEPTH_IN_MICROMETERS ),\
492
+ HID_USAGE ( HID_USAGE_LIGHTING_LAMP_ARRAY_KIND ),\
493
+ HID_USAGE ( HID_USAGE_LIGHTING_MIN_UPDATE_INTERVAL_IN_MICROSECONDS ),\
494
+ HID_LOGICAL_MIN ( 0 ),\
495
+ HID_LOGICAL_MAX_N ( 2147483647 , 3 ),\
496
+ HID_REPORT_SIZE ( 32 ),\
497
+ HID_REPORT_COUNT ( 5 ),\
498
+ HID_FEATURE ( HID_CONSTANT | HID_VARIABLE | HID_ABSOLUTE ),\
499
+ HID_COLLECTION_END ,\
500
+ /* Lamp Attributes Request Report */ \
501
+ HID_REPORT_ID ( report_id + 1 ) \
502
+ HID_USAGE ( HID_USAGE_LIGHTING_LAMP_ATTRIBUTES_REQUEST_REPORT ),\
503
+ HID_COLLECTION ( HID_COLLECTION_LOGICAL ),\
504
+ HID_USAGE ( HID_USAGE_LIGHTING_LAMP_ID ),\
505
+ HID_LOGICAL_MIN ( 0 ),\
506
+ HID_LOGICAL_MAX_N ( 65535 , 3 ),\
507
+ HID_REPORT_SIZE ( 16 ),\
508
+ HID_REPORT_COUNT ( 1 ),\
509
+ HID_FEATURE ( HID_DATA | HID_VARIABLE | HID_ABSOLUTE ),\
510
+ HID_COLLECTION_END ,\
511
+ /* Lamp Attributes Response Report */ \
512
+ HID_REPORT_ID ( report_id + 2 ) \
513
+ HID_USAGE ( HID_USAGE_LIGHTING_LAMP_ATTRIBUTES_RESPONSE_REPORT ),\
514
+ HID_COLLECTION ( HID_COLLECTION_LOGICAL ),\
515
+ HID_USAGE ( HID_USAGE_LIGHTING_LAMP_ID ),\
516
+ HID_LOGICAL_MIN ( 0 ),\
517
+ HID_LOGICAL_MAX_N ( 65535 , 3 ),\
518
+ HID_REPORT_SIZE ( 16 ),\
519
+ HID_REPORT_COUNT ( 1 ),\
520
+ HID_FEATURE ( HID_DATA | HID_VARIABLE | HID_ABSOLUTE ),\
521
+ HID_USAGE ( HID_USAGE_LIGHTING_POSITION_X_IN_MICROMETERS ),\
522
+ HID_USAGE ( HID_USAGE_LIGHTING_POSITION_Y_IN_MICROMETERS ),\
523
+ HID_USAGE ( HID_USAGE_LIGHTING_POSITION_Z_IN_MICROMETERS ),\
524
+ HID_USAGE ( HID_USAGE_LIGHTING_UPDATE_LATENCY_IN_MICROSECONDS ),\
525
+ HID_USAGE ( HID_USAGE_LIGHTING_LAMP_PURPOSES ),\
526
+ HID_LOGICAL_MIN ( 0 ),\
527
+ HID_LOGICAL_MAX_N ( 2147483647 , 3 ),\
528
+ HID_REPORT_SIZE ( 32 ),\
529
+ HID_REPORT_COUNT ( 5 ),\
530
+ HID_FEATURE ( HID_DATA | HID_VARIABLE | HID_ABSOLUTE ),\
531
+ HID_USAGE ( HID_USAGE_LIGHTING_RED_LEVEL_COUNT ),\
532
+ HID_USAGE ( HID_USAGE_LIGHTING_GREEN_LEVEL_COUNT ),\
533
+ HID_USAGE ( HID_USAGE_LIGHTING_BLUE_LEVEL_COUNT ),\
534
+ HID_USAGE ( HID_USAGE_LIGHTING_INTENSITY_LEVEL_COUNT ),\
535
+ HID_USAGE ( HID_USAGE_LIGHTING_IS_PROGRAMMABLE ),\
536
+ HID_USAGE ( HID_USAGE_LIGHTING_INPUT_BINDING ),\
537
+ HID_LOGICAL_MIN ( 0 ),\
538
+ HID_LOGICAL_MAX_N ( 255 , 2 ),\
539
+ HID_REPORT_SIZE ( 8 ),\
540
+ HID_REPORT_COUNT ( 6 ),\
541
+ HID_FEATURE ( HID_DATA | HID_VARIABLE | HID_ABSOLUTE ),\
542
+ HID_COLLECTION_END ,\
543
+ /* Lamp Multi-Update Report */ \
544
+ HID_REPORT_ID ( report_id + 3 ) \
545
+ HID_USAGE ( HID_USAGE_LIGHTING_LAMP_MULTI_UPDATE_REPORT ),\
546
+ HID_COLLECTION ( HID_COLLECTION_LOGICAL ),\
547
+ HID_USAGE ( HID_USAGE_LIGHTING_LAMP_COUNT ),\
548
+ HID_USAGE ( HID_USAGE_LIGHTING_LAMP_UPDATE_FLAGS ),\
549
+ HID_LOGICAL_MIN ( 0 ),\
550
+ HID_LOGICAL_MAX ( 8 ),\
551
+ HID_REPORT_SIZE ( 8 ),\
552
+ HID_REPORT_COUNT ( 2 ),\
553
+ HID_FEATURE ( HID_DATA | HID_VARIABLE | HID_ABSOLUTE ),\
554
+ HID_USAGE ( HID_USAGE_LIGHTING_LAMP_ID ),\
555
+ HID_LOGICAL_MIN ( 0 ),\
556
+ HID_LOGICAL_MAX_N ( 65535 , 3 ),\
557
+ HID_REPORT_SIZE ( 16 ),\
558
+ HID_REPORT_COUNT ( 8 ),\
559
+ HID_FEATURE ( HID_DATA | HID_VARIABLE | HID_ABSOLUTE ),\
560
+ HID_USAGE ( HID_USAGE_LIGHTING_RED_UPDATE_CHANNEL ),\
561
+ HID_USAGE ( HID_USAGE_LIGHTING_GREEN_UPDATE_CHANNEL ),\
562
+ HID_USAGE ( HID_USAGE_LIGHTING_BLUE_UPDATE_CHANNEL ),\
563
+ HID_USAGE ( HID_USAGE_LIGHTING_INTENSITY_UPDATE_CHANNEL ),\
564
+ HID_USAGE ( HID_USAGE_LIGHTING_RED_UPDATE_CHANNEL ),\
565
+ HID_USAGE ( HID_USAGE_LIGHTING_GREEN_UPDATE_CHANNEL ),\
566
+ HID_USAGE ( HID_USAGE_LIGHTING_BLUE_UPDATE_CHANNEL ),\
567
+ HID_USAGE ( HID_USAGE_LIGHTING_INTENSITY_UPDATE_CHANNEL ),\
568
+ HID_USAGE ( HID_USAGE_LIGHTING_RED_UPDATE_CHANNEL ),\
569
+ HID_USAGE ( HID_USAGE_LIGHTING_GREEN_UPDATE_CHANNEL ),\
570
+ HID_USAGE ( HID_USAGE_LIGHTING_BLUE_UPDATE_CHANNEL ),\
571
+ HID_USAGE ( HID_USAGE_LIGHTING_INTENSITY_UPDATE_CHANNEL ),\
572
+ HID_USAGE ( HID_USAGE_LIGHTING_RED_UPDATE_CHANNEL ),\
573
+ HID_USAGE ( HID_USAGE_LIGHTING_GREEN_UPDATE_CHANNEL ),\
574
+ HID_USAGE ( HID_USAGE_LIGHTING_BLUE_UPDATE_CHANNEL ),\
575
+ HID_USAGE ( HID_USAGE_LIGHTING_INTENSITY_UPDATE_CHANNEL ),\
576
+ HID_USAGE ( HID_USAGE_LIGHTING_RED_UPDATE_CHANNEL ),\
577
+ HID_USAGE ( HID_USAGE_LIGHTING_GREEN_UPDATE_CHANNEL ),\
578
+ HID_USAGE ( HID_USAGE_LIGHTING_BLUE_UPDATE_CHANNEL ),\
579
+ HID_USAGE ( HID_USAGE_LIGHTING_INTENSITY_UPDATE_CHANNEL ),\
580
+ HID_USAGE ( HID_USAGE_LIGHTING_RED_UPDATE_CHANNEL ),\
581
+ HID_USAGE ( HID_USAGE_LIGHTING_GREEN_UPDATE_CHANNEL ),\
582
+ HID_USAGE ( HID_USAGE_LIGHTING_BLUE_UPDATE_CHANNEL ),\
583
+ HID_USAGE ( HID_USAGE_LIGHTING_INTENSITY_UPDATE_CHANNEL ),\
584
+ HID_USAGE ( HID_USAGE_LIGHTING_RED_UPDATE_CHANNEL ),\
585
+ HID_USAGE ( HID_USAGE_LIGHTING_GREEN_UPDATE_CHANNEL ),\
586
+ HID_USAGE ( HID_USAGE_LIGHTING_BLUE_UPDATE_CHANNEL ),\
587
+ HID_USAGE ( HID_USAGE_LIGHTING_INTENSITY_UPDATE_CHANNEL ),\
588
+ HID_USAGE ( HID_USAGE_LIGHTING_RED_UPDATE_CHANNEL ),\
589
+ HID_USAGE ( HID_USAGE_LIGHTING_GREEN_UPDATE_CHANNEL ),\
590
+ HID_USAGE ( HID_USAGE_LIGHTING_BLUE_UPDATE_CHANNEL ),\
591
+ HID_USAGE ( HID_USAGE_LIGHTING_INTENSITY_UPDATE_CHANNEL ),\
592
+ HID_LOGICAL_MIN ( 0 ),\
593
+ HID_LOGICAL_MAX_N ( 255 , 2 ),\
594
+ HID_REPORT_SIZE ( 8 ),\
595
+ HID_REPORT_COUNT ( 32 ),\
596
+ HID_FEATURE ( HID_DATA | HID_VARIABLE | HID_ABSOLUTE ),\
597
+ HID_COLLECTION_END ,\
598
+ /* Lamp Range Update Report */ \
599
+ HID_REPORT_ID ( report_id + 4 ) \
600
+ HID_USAGE ( HID_USAGE_LIGHTING_LAMP_RANGE_UPDATE_REPORT ),\
601
+ HID_COLLECTION ( HID_COLLECTION_LOGICAL ),\
602
+ HID_USAGE ( HID_USAGE_LIGHTING_LAMP_UPDATE_FLAGS ),\
603
+ HID_LOGICAL_MIN ( 0 ),\
604
+ HID_LOGICAL_MAX ( 8 ),\
605
+ HID_REPORT_SIZE ( 8 ),\
606
+ HID_REPORT_COUNT ( 1 ),\
607
+ HID_FEATURE ( HID_DATA | HID_VARIABLE | HID_ABSOLUTE ),\
608
+ HID_USAGE ( HID_USAGE_LIGHTING_LAMP_ID_START ),\
609
+ HID_USAGE ( HID_USAGE_LIGHTING_LAMP_ID_END ),\
610
+ HID_LOGICAL_MIN ( 0 ),\
611
+ HID_LOGICAL_MAX_N ( 65535 , 3 ),\
612
+ HID_REPORT_SIZE ( 16 ),\
613
+ HID_REPORT_COUNT ( 2 ),\
614
+ HID_FEATURE ( HID_DATA | HID_VARIABLE | HID_ABSOLUTE ),\
615
+ HID_USAGE ( HID_USAGE_LIGHTING_RED_UPDATE_CHANNEL ),\
616
+ HID_USAGE ( HID_USAGE_LIGHTING_GREEN_UPDATE_CHANNEL ),\
617
+ HID_USAGE ( HID_USAGE_LIGHTING_BLUE_UPDATE_CHANNEL ),\
618
+ HID_USAGE ( HID_USAGE_LIGHTING_INTENSITY_UPDATE_CHANNEL ),\
619
+ HID_LOGICAL_MIN ( 0 ),\
620
+ HID_LOGICAL_MAX_N ( 255 , 2 ),\
621
+ HID_REPORT_SIZE ( 8 ),\
622
+ HID_REPORT_COUNT ( 4 ),\
623
+ HID_FEATURE ( HID_DATA | HID_VARIABLE | HID_ABSOLUTE ),\
624
+ HID_COLLECTION_END ,\
625
+ /* Lamp Array Control Report */ \
626
+ HID_REPORT_ID ( report_id + 5 ) \
627
+ HID_USAGE ( HID_USAGE_LIGHTING_LAMP_ARRAY_CONTROL_REPORT ),\
628
+ HID_COLLECTION ( HID_COLLECTION_LOGICAL ),\
629
+ HID_USAGE ( HID_USAGE_LIGHTING_AUTONOMOUS_MODE ),\
630
+ HID_LOGICAL_MIN ( 0 ),\
631
+ HID_LOGICAL_MAX ( 1 ),\
632
+ HID_REPORT_SIZE ( 8 ),\
633
+ HID_REPORT_COUNT ( 1 ),\
634
+ HID_FEATURE ( HID_DATA | HID_VARIABLE | HID_ABSOLUTE ),\
635
+ HID_COLLECTION_END ,\
636
+ HID_COLLECTION_END \
637
+
466
638
//--------------------------------------------------------------------+
467
639
// Internal Class Driver API
468
640
//--------------------------------------------------------------------+
0 commit comments