c++monitorvesa

How to get the VCP feature when the VCP code contains several sub-codes?


I tried to get VCP features from my monitor, I can get the values from my monitor with some test tools or C++ code. But if the VCP code contains sub-code, I get failed. I get the capability string of my monitor:

Capabilities String: 
(prot(monitor)type(lcd)model(HP Z24m G3)cmds(01 02 03 07 0C E3 F3)vcp(02 04 05 08 0B 0C 10 12 16 18 1A 2E(00 01 02 03) 52 60(0F 11 13) 62 6C 6E 70 86(01 02 05) 87(01 02 03 04 05 06 07) 8D(01 02) AC AE B2 B6 C0 C6 C8 C9 CA(01 02) CC(01 02 03 04 05 06 09 0A 0D 0E 14) D6(01 02 03 04 05) DC(00( 00 01 02 05 13 14 15 1D 2B)02(00 01 02 03 04) ) DF E0(02(00 01 03)) E1(04(00 01 03 04 06 08 09 0A) 0A(00 01) 0C(20) 0F(00 01) 10(00 01) 27(02 03 04 05 07 09 0A FF) 28(00 01) 2C(00 01) 2D(00 01) 30(00 01) 31(00 01) 32(00 01) 35(00 01 02) 36(00 01) 39(02 03) 3B 3C 3E 3F(02 03 04 05) 40(00 01 02 03) 42(00 01) 43(00 01) 45(00 01) 49(00 01) 4A(00 01) 4C( 00 01 ) 4E(00 01 02 03 04 05 FF) 56 57(00 01) 6E(01) 6F(00) 72(00 01) 73(00 01)) E6(00 01) E7(00 01) E8(18(00 01) 1B( 00 01 02) 1C(00 01) 1E( 00 01 02)) E9(0D(00 01)) EA(00 01) EB(00( 01 02 03 04)) EE(01 02 03) EF(01 02 03 04 05) F0 F5(00 01 02 03 05 06 0A 0B 0C 0D 0E 0F 11 12 13 14 15 18 19 1B 1C 1D 1E) F8(00 01 02(00 01 02) 0A) FA(00 01 02) FB FC FD FE(00 01 02 03 04))mswhql(1)asset_eep(40)mccs_ver(2.2))

I wanna get the VCP code "E1" ,which contains sub-code "35(00 01 02)".

And here is the VCP menu of my monitor.

table of supported VCP features. 0xE1 is USB-C configuration

"E1" is used by several functions and I just want to get the "displayport mode".

I had tried some test tools and C++ function "GetVCPFeatureAndVCPFeatureReply" but all return zero. I'll be appreciated if there is someone help me. Thanks!


Solution

  • I finally finish it. use SetVCPFeature to set the value 0xB5 to select the function then use GetVCPFeature to get 0xE1

    VCP page