There is no protocol itself in the sources, they just use LedCtrl.dll which contains functions like SetBrightness.
Looking at the dll and code, it seems EVERYTHING is in there... 5mb? It's really annyoing if you lack the needed asm skills, confuses the sht out of me.

The source is just a cosmetic thing to.. I don't know, maybe slap your company name on it. THANKS LINSN.

Your data looks good though!
d8 58 80 ff 00 18 00 22 00 02 00 00 00 00 00 00 00
99 99 99 ff 00 00 00 00 05
That's a brightness data containing package. The purple bytes seem to contain the actual brightness data, see the new dump. The 55 or 00 - 'param' - seems to indicate wether a second screen is attached. What I'm most interested in is how the brightness input dec 0-100 gets translated into that sequence... Will look into it too.
d8 58 80 ff 00 18 00 22 00 02 00 00 00 00 00 00 00 99 99 99 ff 00 00 00 00 05
...
d8 58 80 ff 00 1a 00 22 00 02 00 00 00 00 00 00 00 99 99 99 ff 00 00 00 00 07
...
d8 58 80 ff 00 1c 00 22 00 02 00 00 00 00 00 00 00 99 99 99 ff 00 00 00 00 09
That would be 60%.
d8 58 80 ff 00 1e 00 22 00 02 00 00 00 00 00 00 00 ff ff ff ff 00 00 00 00 3d
...
d8 58 80 ff 00 18 00 22 00 02 00 00 00 00 00 00 00 ff ff ff ff 00 00 00 00 37
...
d8 58 80 ff 00 1a 00 22 00 02 00 00 00 00 00 00 00 ff ff ff ff 00 00 00 00 39
That's 100%.
ff ff ff ff -> 100
99 99 99 ff -> 60
Looking at the software it's clear that the brightness value must get written 3 times, because you can also set RBG separatly to change the color temperature.
Also, the frame type bytes of the initial packet correspond to the bytes of the packet that contains the actual brightness data.
Type 51 -> Type 1a
53 -> 1c
55 -> 1e
57 -> 18
Looking at the dump it's clear that every time such a packet gets sent, the type is incresed by 1 until it hits 57, then repeats, corresponding to your disasm. It's also evident that the type doesn't follow some specific pattern related to the brightness values. It doesn't really matter what type the packet contains, as long as it's in the 8 bit range from 50h-57h and increased by 1 after the first brightness value has been transmitted/was adressed. After It's been transmitted, you can start from anywhere in that range without issues.
Going to bed now, will update as soon as I figured out some more things regarding 2nd screen and seperate values for the 3 colors.
CHeers