Startech VS424HD4K60
https://www.startech.com/en-us/audio-video-products/vs424hd4k60
With the Generic TCP, I have set it up to where I set a Custom Variable (selected_input) by clicking Inputs 1-4. When that button is the selected input, it highlights it red.
I can then select, which output(s) or All Outputs to send it to by sending the command A$(custom:4x4_selected_input) where A is out A (can be interchanged with B, C or D. All outputs is achieved by "l$(custom:4x4_selected_input)"
ST command gets the current matrix settings that I then store to a custom variable (4x4_current_routes) which is a TCP reply like this "----->4x4 4K UHD+ Matrix 3.2 V <-----Out: ABCDIn: 1111" I then use expressions to break it down
output_a_status = substr($(custom:4x4_current_routes),-6,-5) output_b_status = substr($(custom:4x4_current_routes),-5,-4) output_c_status = substr($(custom:4x4_current_routes),-4,-3) output_d_status = substr($(custom:4x4_current_routes),-3,-2)
I then highlight the outputs that are going to the selected input.
If you were up for trying, you could probably write the module fairly easily, you've done the hard work already. E.g. this one looks pretty similar syntax wise and would just need minimal tweaks to support the different protocol: https://github.com/bitfocus/companion-module-ezcoo-matrix
Guide for that if you want to go down that route: https://github.com/bitfocus/companion-module-base/wiki/Module-development-101
If not, it would help if you shared a link with the docs where you worked out the control protocol if anyone else wants to implement it...