| 200 | } |
| 201 | |
| 202 | void CMMMController::SendUpdate(uint8_t mode, uint8_t speed, RGBColor colour, uint8_t brightness) |
| 203 | { |
| 204 | if (mode == CM_MM_MODE_CUSTOM || mode == CM_MM_MODE_MULTILAYER) |
| 205 | { |
| 206 | SendUsingZonesPacket(mode); |
| 207 | } |
| 208 | else |
| 209 | { |
| 210 | SendInitPacket(); |
| 211 | SendApplyPacket(mode); |
| 212 | } |
| 213 | |
| 214 | uint8_t nfi_1 = 0x20; |
| 215 | |
| 216 | if (mode == CM_MM_MODE_STATIC || mode == CM_MM_MODE_SPECTRUM_CYCLE) |
| 217 | { |
| 218 | nfi_1 = 0x00; |
| 219 | } |
| 220 | |
| 221 | if (mode != CM_MM_MODE_OFF) |
| 222 | { |
| 223 | unsigned char buffer[CM_MM_PACKET_SIZE] = { 0x00, 0x51, command_code, 0x00, 0x00 }; |
| 224 | |
| 225 | buffer[CM_MM_MODE_BYTE] = mode; |
| 226 | buffer[CM_MM_SPEED_BYTE] = speed; |
| 227 | buffer[CM_MM_NFI_1] = nfi_1; |
| 228 | buffer[CM_MM_NFI_2] = 0xFF; |
| 229 | buffer[CM_MM_NFI_3] = 0xFF; |
| 230 | buffer[CM_MM_BRIGHTNESS_BYTE] = brightness; |
| 231 | buffer[CM_MM_RED_BYTE] = RGBGetRValue(colour); |
| 232 | buffer[CM_MM_GREEN_BYTE] = RGBGetGValue(colour); |
| 233 | buffer[CM_MM_BLUE_BYTE] = RGBGetBValue(colour); |
| 234 | buffer[CM_MM_SKY_RED_BYTE] = 0x00; |
| 235 | buffer[CM_MM_SKY_GREEN_BYTE] = 0x00; |
| 236 | buffer[CM_MM_SKY_BLUE_BYTE] = 0x00; |
| 237 | |
| 238 | for (int i = 17; i < CM_MM_PACKET_SIZE; i++) |
| 239 | { |
| 240 | buffer[i] = 0xFF; |
| 241 | } |
| 242 | |
| 243 | hid_write(dev, buffer, CM_MM_PACKET_SIZE); |
| 244 | hid_read_timeout(dev, buffer, CM_MM_PACKET_SIZE, CM_MM_INTERRUPT_TIMEOUT); |
| 245 | |
| 246 | } |
| 247 | |
| 248 | if (mode == CM_MM_MODE_CUSTOM || mode == CM_MM_MODE_MULTILAYER) |
| 249 | { |
| 250 | SendApplyPacket(mode); //Post Apply for Zoned Modes |
| 251 | } |
| 252 | } |
| 253 | |
| 254 | void CMMMController::SendUpdate(uint8_t mode, uint8_t speed, RGBColor mode_one, RGBColor mode_two, uint8_t brightness) |
| 255 | { |
no test coverage detected