Changeset 25971 in vbox for trunk/src/VBox/Devices/Serial
- Timestamp:
- Jan 22, 2010 12:54:19 PM (15 years ago)
- svn:sync-xref-src-repo-rev:
- 56826
- Location:
- trunk/src/VBox/Devices/Serial
- Files:
-
- 3 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/src/VBox/Devices/Serial/DevSerial.cpp
r25966 r25971 146 146 R3PTRTYPE(PPDMIBASE) pDrvBase; 147 147 /** Pointer to the attached character driver. */ 148 R3PTRTYPE(PPDMICHAR ) pDrvChar;148 R3PTRTYPE(PPDMICHARCONNECTOR) pDrvChar; 149 149 150 150 uint16_t divider; … … 480 480 481 481 /* Set new states. */ 482 if (newStatusLines & PDM _ICHAR_STATUS_LINES_DCD)482 if (newStatusLines & PDMICHARPORT_STATUS_LINES_DCD) 483 483 newMsr |= UART_MSR_DCD; 484 if (newStatusLines & PDM _ICHAR_STATUS_LINES_RI)484 if (newStatusLines & PDMICHARPORT_STATUS_LINES_RI) 485 485 newMsr |= UART_MSR_RI; 486 if (newStatusLines & PDM _ICHAR_STATUS_LINES_DSR)486 if (newStatusLines & PDMICHARPORT_STATUS_LINES_DSR) 487 487 newMsr |= UART_MSR_DSR; 488 if (newStatusLines & PDM _ICHAR_STATUS_LINES_CTS)488 if (newStatusLines & PDMICHARPORT_STATUS_LINES_CTS) 489 489 newMsr |= UART_MSR_CTS; 490 490 … … 740 740 if (RTUuidCompare2Strs(pszIID, PDMIBASE_IID) == 0) 741 741 return &pThis->IBase; 742 if (RTUuidCompare2Strs(pszIID, PDMI NTERFACE_CHAR_PORT) == 0)742 if (RTUuidCompare2Strs(pszIID, PDMICHARPORT_IID) == 0) 743 743 return &pThis->ICharPort; 744 744 return NULL; … … 953 953 if (RT_SUCCESS(rc)) 954 954 { 955 pThis->pDrvChar = (PDMICHAR *)pThis->pDrvBase->pfnQueryInterface(pThis->pDrvBase, PDMINTERFACE_CHAR);955 pThis->pDrvChar = PDMIBASE_QUERY_INTERFACE(pThis->pDrvBase, PDMICHARCONNECTOR); 956 956 if (!pThis->pDrvChar) 957 957 { -
trunk/src/VBox/Devices/Serial/DrvChar.cpp
r25966 r25971 43 43 #define CHAR_MAX_SEND_QUEUE_MASK 0x7f 44 44 45 /** Converts a pointer to DRVCHAR::IChar to a PDRVCHAR. */46 #define PDMICHAR_2_DRVCHAR(pInterface) ( (PDRVCHAR)((uintptr_t)pInterface - RT_OFFSETOF(DRVCHAR, IChar)))45 /** Converts a pointer to DRVCHAR::ICharConnector to a PDRVCHAR. */ 46 #define PDMICHAR_2_DRVCHAR(pInterface) RT_FROM_MEMBER(pInterface, DRVCHAR, ICharConnector) 47 47 48 48 … … 53 53 * Char driver instance data. 54 54 * 55 * @implements PDMICHAR 55 * @implements PDMICHARCONNECTOR 56 56 */ 57 57 typedef struct DRVCHAR … … 64 64 PPDMISTREAM pDrvStream; 65 65 /** Our char interface. */ 66 PDMICHAR IChar;66 PDMICHARCONNECTOR ICharConnector; 67 67 /** Flag to notify the receive thread it should terminate. */ 68 68 volatile bool fShutdown; … … 101 101 if (RTUuidCompare2Strs(pszIID, PDMIBASE_IID) == 0) 102 102 return &pDrvIns->IBase; 103 if (RTUuidCompare2Strs(pszIID, PDMI NTERFACE_CHAR) == 0)104 return &pThis->IChar ;103 if (RTUuidCompare2Strs(pszIID, PDMICHARCONNECTOR_IID) == 0) 104 return &pThis->ICharConnector; 105 105 return NULL; 106 106 } 107 107 108 108 109 /* -=-=-=-=- IChar -=-=-=-=- */110 111 /** @copydoc PDMICHAR ::pfnWrite */112 static DECLCALLBACK(int) drvCharWrite(PPDMICHAR pInterface, const void *pvBuf, size_t cbWrite)109 /* -=-=-=-=- ICharConnector -=-=-=-=- */ 110 111 /** @copydoc PDMICHARCONNECTOR::pfnWrite */ 112 static DECLCALLBACK(int) drvCharWrite(PPDMICHARCONNECTOR pInterface, const void *pvBuf, size_t cbWrite) 113 113 { 114 114 PDRVCHAR pThis = PDMICHAR_2_DRVCHAR(pInterface); … … 131 131 } 132 132 133 /** @copydoc PDMICHAR ::pfnSetParameters */134 static DECLCALLBACK(int) drvCharSetParameters(PPDMICHAR pInterface, unsigned Bps, char chParity, unsigned cDataBits, unsigned cStopBits)133 /** @copydoc PDMICHARCONNECTOR::pfnSetParameters */ 134 static DECLCALLBACK(int) drvCharSetParameters(PPDMICHARCONNECTOR pInterface, unsigned Bps, char chParity, unsigned cDataBits, unsigned cStopBits) 135 135 { 136 136 /*PDRVCHAR pThis = PDMICHAR_2_DRVCHAR(pInterface); - unused*/ … … 278 278 * @param DataTerminalReady Set to true if this control line should be made active. 279 279 */ 280 static DECLCALLBACK(int) drvCharSetModemLines(PPDMICHAR pInterface, bool RequestToSend, bool DataTerminalReady)280 static DECLCALLBACK(int) drvCharSetModemLines(PPDMICHARCONNECTOR pInterface, bool RequestToSend, bool DataTerminalReady) 281 281 { 282 282 /* Nothing to do here. */ … … 292 292 * @thread Any thread. 293 293 */ 294 static DECLCALLBACK(int) drvCharSetBreak(PPDMICHAR pInterface, bool fBreak)294 static DECLCALLBACK(int) drvCharSetBreak(PPDMICHARCONNECTOR pInterface, bool fBreak) 295 295 { 296 296 /* Nothing to do here. */ … … 317 317 /* IBase. */ 318 318 pDrvIns->IBase.pfnQueryInterface = drvCharQueryInterface; 319 /* IChar . */320 pThis->IChar .pfnWrite= drvCharWrite;321 pThis->IChar .pfnSetParameters= drvCharSetParameters;322 pThis->IChar .pfnSetModemLines= drvCharSetModemLines;323 pThis->IChar .pfnSetBreak= drvCharSetBreak;319 /* ICharConnector. */ 320 pThis->ICharConnector.pfnWrite = drvCharWrite; 321 pThis->ICharConnector.pfnSetParameters = drvCharSetParameters; 322 pThis->ICharConnector.pfnSetModemLines = drvCharSetModemLines; 323 pThis->ICharConnector.pfnSetBreak = drvCharSetBreak; 324 324 325 325 /* 326 326 * Get the ICharPort interface of the above driver/device. 327 327 */ 328 pThis->pDrvCharPort = (PPDMICHARPORT)pDrvIns->pUpBase->pfnQueryInterface(pDrvIns->pUpBase, PDMINTERFACE_CHAR_PORT);328 pThis->pDrvCharPort = PDMIBASE_QUERY_INTERFACE(pDrvIns->pUpBase, PDMICHARPORT); 329 329 if (!pThis->pDrvCharPort) 330 330 return PDMDrvHlpVMSetError(pDrvIns, VERR_PDM_MISSING_INTERFACE_ABOVE, RT_SRC_POS, N_("Char#%d has no char port interface above"), pDrvIns->iInstance); -
trunk/src/VBox/Devices/Serial/DrvHostSerial.cpp
r25966 r25971 95 95 * Char driver instance data. 96 96 * 97 * @implements PDMICHAR 97 * @implements PDMICHARCONNECTOR 98 98 */ 99 99 typedef struct DRVHOSTSERIAL … … 104 104 PPDMICHARPORT pDrvCharPort; 105 105 /** Our char interface. */ 106 PDMICHAR IChar;106 PDMICHARCONNECTOR ICharConnector; 107 107 /** Receive thread. */ 108 108 PPDMTHREAD pRecvThread; … … 165 165 166 166 167 /** Converts a pointer to DRVCHAR::IChar to a PDRVHOSTSERIAL. */168 #define PDMICHAR_2_DRVHOSTSERIAL(pInterface) ( (PDRVHOSTSERIAL)((uintptr_t)pInterface - RT_OFFSETOF(DRVHOSTSERIAL, IChar)))167 /** Converts a pointer to DRVCHAR::ICharConnector to a PDRVHOSTSERIAL. */ 168 #define PDMICHAR_2_DRVHOSTSERIAL(pInterface) RT_FROM_MEMBER(pInterface, DRVHOSTSERIAL, ICharConnector) 169 169 170 170 … … 181 181 if (RTUuidCompare2Strs(pszIID, PDMIBASE_IID) == 0) 182 182 return &pDrvIns->IBase; 183 if (RTUuidCompare2Strs(pszIID, PDMI NTERFACE_CHAR) == 0)184 return &pThis->IChar ;183 if (RTUuidCompare2Strs(pszIID, PDMICHARCONNECTOR_IID) == 0) 184 return &pThis->ICharConnector; 185 185 return NULL; 186 186 } 187 187 188 188 189 /* -=-=-=-=- IChar -=-=-=-=- */190 191 /** @copydoc PDMICHAR ::pfnWrite */192 static DECLCALLBACK(int) drvHostSerialWrite(PPDMICHAR pInterface, const void *pvBuf, size_t cbWrite)189 /* -=-=-=-=- ICharConnector -=-=-=-=- */ 190 191 /** @copydoc PDMICHARCONNECTOR::pfnWrite */ 192 static DECLCALLBACK(int) drvHostSerialWrite(PPDMICHARCONNECTOR pInterface, const void *pvBuf, size_t cbWrite) 193 193 { 194 194 PDRVHOSTSERIAL pThis = PDMICHAR_2_DRVHOSTSERIAL(pInterface); … … 237 237 } 238 238 239 static DECLCALLBACK(int) drvHostSerialSetParameters(PPDMICHAR pInterface, unsigned Bps, char chParity, unsigned cDataBits, unsigned cStopBits)239 static DECLCALLBACK(int) drvHostSerialSetParameters(PPDMICHARCONNECTOR pInterface, unsigned Bps, char chParity, unsigned cDataBits, unsigned cStopBits) 240 240 { 241 241 PDRVHOSTSERIAL pThis = PDMICHAR_2_DRVHOSTSERIAL(pInterface); … … 859 859 { 860 860 if (dwNewStatusLinesState & MS_RLSD_ON) 861 uNewStatusLinesState |= PDM _ICHAR_STATUS_LINES_DCD;861 uNewStatusLinesState |= PDMICHARPORT_STATUS_LINES_DCD; 862 862 if (dwNewStatusLinesState & MS_RING_ON) 863 uNewStatusLinesState |= PDM _ICHAR_STATUS_LINES_RI;863 uNewStatusLinesState |= PDMICHARPORT_STATUS_LINES_RI; 864 864 if (dwNewStatusLinesState & MS_DSR_ON) 865 uNewStatusLinesState |= PDM _ICHAR_STATUS_LINES_DSR;865 uNewStatusLinesState |= PDMICHARPORT_STATUS_LINES_DSR; 866 866 if (dwNewStatusLinesState & MS_CTS_ON) 867 uNewStatusLinesState |= PDM _ICHAR_STATUS_LINES_CTS;867 uNewStatusLinesState |= PDMICHARPORT_STATUS_LINES_CTS; 868 868 rc = pThis->pDrvCharPort->pfnNotifyStatusLinesChanged(pThis->pDrvCharPort, uNewStatusLinesState); 869 869 if (RT_FAILURE(rc)) … … 1004 1004 1005 1005 if (statusLines & TIOCM_CAR) 1006 newStatusLine |= PDM _ICHAR_STATUS_LINES_DCD;1006 newStatusLine |= PDMICHARPORT_STATUS_LINES_DCD; 1007 1007 if (statusLines & TIOCM_RNG) 1008 newStatusLine |= PDM _ICHAR_STATUS_LINES_RI;1008 newStatusLine |= PDMICHARPORT_STATUS_LINES_RI; 1009 1009 if (statusLines & TIOCM_LE) 1010 newStatusLine |= PDM _ICHAR_STATUS_LINES_DSR;1010 newStatusLine |= PDMICHARPORT_STATUS_LINES_DSR; 1011 1011 if (statusLines & TIOCM_CTS) 1012 newStatusLine |= PDM _ICHAR_STATUS_LINES_CTS;1012 newStatusLine |= PDMICHARPORT_STATUS_LINES_CTS; 1013 1013 rc = pThis->pDrvCharPort->pfnNotifyStatusLinesChanged(pThis->pDrvCharPort, newStatusLine); 1014 1014 } … … 1136 1136 * @param DataTerminalReady Set to true if this control line should be made active. 1137 1137 */ 1138 static DECLCALLBACK(int) drvHostSerialSetModemLines(PPDMICHAR pInterface, bool RequestToSend, bool DataTerminalReady)1138 static DECLCALLBACK(int) drvHostSerialSetModemLines(PPDMICHARCONNECTOR pInterface, bool RequestToSend, bool DataTerminalReady) 1139 1139 { 1140 1140 PDRVHOSTSERIAL pThis = PDMICHAR_2_DRVHOSTSERIAL(pInterface); … … 1182 1182 * @thread Any thread. 1183 1183 */ 1184 static DECLCALLBACK(int) drvHostSerialSetBreak(PPDMICHAR pInterface, bool fBreak)1184 static DECLCALLBACK(int) drvHostSerialSetBreak(PPDMICHARCONNECTOR pInterface, bool fBreak) 1185 1185 { 1186 1186 PDRVHOSTSERIAL pThis = PDMICHAR_2_DRVHOSTSERIAL(pInterface); … … 1226 1226 #endif 1227 1227 /* IBase. */ 1228 pDrvIns->IBase.pfnQueryInterface = drvHostSerialQueryInterface;1229 /* IChar . */1230 pThis->IChar .pfnWrite= drvHostSerialWrite;1231 pThis->IChar .pfnSetParameters= drvHostSerialSetParameters;1232 pThis->IChar .pfnSetModemLines= drvHostSerialSetModemLines;1233 pThis->IChar .pfnSetBreak= drvHostSerialSetBreak;1228 pDrvIns->IBase.pfnQueryInterface = drvHostSerialQueryInterface; 1229 /* ICharConnector. */ 1230 pThis->ICharConnector.pfnWrite = drvHostSerialWrite; 1231 pThis->ICharConnector.pfnSetParameters = drvHostSerialSetParameters; 1232 pThis->ICharConnector.pfnSetModemLines = drvHostSerialSetModemLines; 1233 pThis->ICharConnector.pfnSetBreak = drvHostSerialSetBreak; 1234 1234 1235 1235 /** @todo Initialize all members with NIL values!! The destructor is ALWAYS called. */ … … 1351 1351 * Get the ICharPort interface of the above driver/device. 1352 1352 */ 1353 pThis->pDrvCharPort = (PPDMICHARPORT)pDrvIns->pUpBase->pfnQueryInterface(pDrvIns->pUpBase, PDMINTERFACE_CHAR_PORT);1353 pThis->pDrvCharPort = PDMIBASE_QUERY_INTERFACE(pDrvIns->pUpBase, PDMICHARPORT); 1354 1354 if (!pThis->pDrvCharPort) 1355 1355 return PDMDrvHlpVMSetError(pDrvIns, VERR_PDM_MISSING_INTERFACE_ABOVE, RT_SRC_POS, N_("HostSerial#%d has no char port interface above"), pDrvIns->iInstance);
Note:
See TracChangeset
for help on using the changeset viewer.