MCPcopy Create free account
hub / github.com/CalcProgrammer1/OpenRGB / setMode

Method setMode

Controllers/LogitechController/LogitechProtocolCommon.cpp:711–796  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

709}
710
711uint8_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:

Callers 1

SendMouseModeMethod · 0.45

Calls 4

hid_writeFunction · 0.85
hid_read_timeoutFunction · 0.85
initMethod · 0.80
sizeMethod · 0.45

Tested by

no test coverage detected