| 709 | } |
| 710 | |
| 711 | uint8_t logitech_device::setMode(uint8_t mode, uint16_t speed, uint8_t zone, uint8_t red, uint8_t green, uint8_t blue, uint8_t brightness) |
| 712 | { |
| 713 | /*-----------------------------------------------------------------*\ |
| 714 | | Check the usage map for usage2 (0x11 Long FAP Message) then | |
| 715 | | set the device mode via LOGITECH_CMD_RGB_EFFECTS_SET_CONTROL | |
| 716 | \*-----------------------------------------------------------------*/ |
| 717 | hid_device* dev_use2 = getDevice(2); |
| 718 | uint16_t feature_page = getFeaturePage(RGB_feature_index); |
| 719 | int result = 0; |
| 720 | LOGITECH_DEVICE_MODE fx = leds[zone].fx[mode].mode; |
| 721 | |
| 722 | if(dev_use2) |
| 723 | { |
| 724 | /*-----------------------------------------------------------------*\ |
| 725 | | Create a buffer for reads | |
| 726 | \*-----------------------------------------------------------------*/ |
| 727 | blankFAPmessage response; |
| 728 | response.init(); |
| 729 | |
| 730 | /*-----------------------------------------------------------------*\ |
| 731 | | Set the mode via the RGB_feature_index | |
| 732 | \*-----------------------------------------------------------------*/ |
| 733 | longFAPrequest set_mode; |
| 734 | set_mode.init(device_index, RGB_feature_index, ((feature_page == LOGITECH_HIDPP_PAGE_RGB_EFFECTS1) ? LOGITECH_CMD_RGB_EFFECTS_SET_CONTROL : LOGITECH_CMD_RGB_EFFECTS_GET_INFO)); |
| 735 | set_mode.data[0] = zone; |
| 736 | set_mode.data[1] = mode; |
| 737 | |
| 738 | set_mode.data[2] = red; |
| 739 | set_mode.data[3] = green; |
| 740 | set_mode.data[4] = blue; |
| 741 | |
| 742 | speed *= 100; |
| 743 | switch(fx) |
| 744 | { |
| 745 | case LOGITECH_DEVICE_LED_ON: |
| 746 | set_mode.data[5] = 0x02; //zone; |
| 747 | //set_mode.data[12] = 0x01; //Save to flash testing |
| 748 | break; |
| 749 | |
| 750 | case LOGITECH_DEVICE_LED_SPECTRUM: |
| 751 | set_mode.data[7] = speed >> 8; |
| 752 | set_mode.data[8] = speed & 0xFF; |
| 753 | set_mode.data[9] = brightness; |
| 754 | break; |
| 755 | |
| 756 | case LOGITECH_DEVICE_LED_BREATHING: |
| 757 | set_mode.data[5] = speed >> 8; |
| 758 | set_mode.data[6] = speed & 0xFF; |
| 759 | //set_mode.data[7] = curve_type; //Value 0-6: Default, Sine, Square, Triangle, Sawtooth, Reverse_Sawtooth, Exponent |
| 760 | set_mode.data[8] = brightness; |
| 761 | break; |
| 762 | |
| 763 | /*-----------------------------------------------------*\ |
| 764 | | Place holders for later implementation | |
| 765 | \*-----------------------------------------------------*/ |
| 766 | case LOGITECH_DEVICE_LED_OFF: |
| 767 | case LOGITECH_DEVICE_LED_WAVE: |
| 768 | case LOGITECH_DEVICE_LED_STAR: |
no test coverage detected