GetConnectionInfo is designed to be a real-time call, particularly when it is used for tagging. When a driver receives this call, it should read the sense lines, obtaining the raw sense code and the extended sense code.
IMPORTANT
The driver is required to do this every time it gets this call. It cannot just report the codes it sensed during initialization.
When the kTaggingInfoNonStandard bit of csConnectFlags is cleared to 0, then csConnectTaggedType and csConnectTagged data are used to report the raw sense code and the extended sense code, respectively.
The following enumeration shows the constants used for csConnectTaggedType when kTaggingInfoNonStandard is 0:
typedef unsigned char RawSenseCode;
enum {
kRSCZero = 0,
kRSCOne = 1,
kRSCTwo = 2,
kRSCThree = 3,
kRSCFour = 4,
kRSCFive = 5,
kRSCSix = 6,
kRSCSeven = 7
};
The RawSenseCode data type contains constants for the possible raw sense code values when "standard" sense code hardware is implemented. For such sense code hardware, the raw sense is obtained as follows:
IMPORTANT
When the kTaggingInfoNonStandard bit of csConnectFlags is false, then the RawSenseCode constants are valid csConnectTaggedType values in VDDisplayConnectInfo.
The following enumeration shows the constants used for csConnectTaggedData when kTaggingInfoNonStandard is 0:
typedef unsigned char ExtendedSenseCode;
enum {
kESCZero21Inch = 0x00, /* 21" RGB */
kESCOnePortraitMono = 0x14, /* portrait monochrome */
kESCTwo12Inch = 0x21, /* 12" RGB */
kESCThree21InchRadius = 0x31, /* 21" RGB (Radius) */
kESCThree21InchMonoRadius = 0x34, /* 21" monochrome (Radius) */
kESCThree21InchMono = 0x35, /* 21" monochrome */
kESCFourNTSC = 0x0A, /* NTSC */
kESCFivePortrait = 0x1E, /* Portrait RGB */
kESCSixMSB1 = 0x03, /* Multiscan band-1 (12" */
/* thru 16") */
kESCSixMSB2 = 0x0B, /* Multiscan band-2 (13" */
/* thru 19") */
kESCSixMSB3 = 0x23, /* Multiscan band-3 (13" */
/* thru 21") */
kESCSixStandard = 0x2B, /* 13" or 14" RGB or 12" */
/* monochrome*/
kESCSevenPAL = 0x00, /* PAL */
kESCSevenNTSC = 0x14, /* NTSC */
kESCSevenVGA = 0x17, /* VGA */
kESCSeven16Inch = 0x2D, /* 16" RGB (GoldFish) */
kESCSevenPALAlternate = 0x30, /* PAL (alternate) */
kESCSeven19Inch = 0x3A, /* Third-party 19" */
kESCSevenNoDisplay = 0x3F /* No display connected */
};
The ExtendedSenseCode data type contains enumerated constants for the values that are possible when the extended sense algorithm is applied to hardware that implements the "standard" sense code algorithm.
For such sense code hardware, the algorithm is as follows, where sense line A corresponds to 2, B to 1, and C to 0:
In this way, a 6-bit number of the form BC/AC/AB is generated.
IMPORTANT
When the kTaggingInfoNonStandard bit of csConnectFlags is false, then these constants are valid csConnectTaggedData values in VDDisplayConnectInfo.
Table 13-2 shows examples of csConnectTaggedType and csConnectTaggedData values for certain monitors.
Table 13-2 Sample csConnectTaggedType and csConnectTaggedData values
21" Apple RGB | 0 | 0x00 |
20" Apple Multiscan | 6 | 0x23 |
14" Apple RGB | 6 | 0x2B |