config.c
来自「wince下的源代码集合打包」· C语言 代码 · 共 494 行 · 第 1/2 页
C
494 行
// ---------------------------------------------------------------------------//// Copyright (c) 1995-2000 Microsoft Corporation. All rights reserved.//// ---------------------------------------------------------------------------#include <windows.h>#include <memory.h>#include <tapi.h>#include "mcx.h"#include "tspi.h"#include "tspip.h"#include "config.h"#include "netui.h"//// Read the COMMPROPs to get the settings the device allows//voidGetSettableFields( PTLINEDEV pLineDev, DWORD * pdwSettableBaud, WORD * pwSettableData, WORD * pwSettableStopParity ){ HANDLE hComDev; COMMPROP commP; *pdwSettableBaud = BAUD_110 | BAUD_300 | BAUD_600 | BAUD_1200 | BAUD_2400 | BAUD_4800 | BAUD_9600 | BAUD_14400 | BAUD_19200 | BAUD_38400 | BAUD_57600 | BAUD_115200; *pwSettableData = DATABITS_5 | DATABITS_6 | DATABITS_7 | DATABITS_8; *pwSettableStopParity = STOPBITS_10 | STOPBITS_15 | STOPBITS_20 | PARITY_NONE | PARITY_ODD | PARITY_EVEN | PARITY_SPACE | PARITY_MARK; if (pLineDev->hDevice_r0 != (HANDLE)INVALID_DEVICE) { if (!GetCommProperties(pLineDev->hDevice_r0, &commP)) { DEBUGMSG(ZONE_ERROR, (TEXT("UNIMODEM:GetSettableFields - GetCommProperties failed %d\n"), GetLastError())); return; } } else { if ((hComDev = CreateFile( pLineDev->szDeviceName, GENERIC_READ, 0, NULL, OPEN_EXISTING, 0, 0 )) != INVALID_HANDLE_VALUE) { if (!GetCommProperties(hComDev, &commP)) { DEBUGMSG(ZONE_ERROR, (TEXT("UNIMODEM:GetSettableFields - GetCommProperties failed %d\n"), GetLastError())); CloseHandle(hComDev); return; } CloseHandle(hComDev); } else { DEBUGMSG(ZONE_ERROR, (TEXT("UNIMODEM:GetSettableFields - CreateFile(%s) failed %d\n"), pLineDev->szDeviceName, GetLastError())); return; } } *pdwSettableBaud = commP.dwSettableBaud; *pwSettableData = commP.wSettableData; *pwSettableStopParity = commP.wSettableStopParity;} // GetSettableFields // -----------------------------------------------------------------------------// -----------------------------------------------------------------------------BOOLTSPI_EditMiniConfig( HWND hWndOwner, PTLINEDEV pLineDev, PDEVMINICFG lpSettingsIn, PDEVMINICFG lpSettingsOut ){ LINECONFIGDATA LineConfigData; BOOL fRetVal; DEBUGMSG (ZONE_MISC, (TEXT("+TSPI_EditMiniConfig(0x%X, 0x%X, 0x%X)\r\n"), hWndOwner, lpSettingsIn, lpSettingsOut)); // Just copy the in to the out as a default memcpy ((char *)lpSettingsOut, (char *)lpSettingsIn, sizeof(DEVMINICFG)); memset ((char *)&LineConfigData, 0, sizeof(LINECONFIGDATA)); // Move the data over. LineConfigData.dwVersion = NETUI_LCD_STRUCTVER; LineConfigData.dwBaudRate = lpSettingsIn->dwBaudRate; GetSettableFields( pLineDev, &(LineConfigData.dwSettableBaud), &(LineConfigData.wSettableData), &(LineConfigData.wSettableStopParity) ); LineConfigData.bByteSize = lpSettingsIn->ByteSize; LineConfigData.bParity = lpSettingsIn->Parity; LineConfigData.bStopBits = lpSettingsIn->StopBits; LineConfigData.wWaitBong = lpSettingsIn->wWaitBong; LineConfigData.dwCallSetupFailTimer = lpSettingsIn->dwCallSetupFailTimer; if (lpSettingsIn->dwModemOptions & MDM_BLIND_DIAL) { LineConfigData.dwModemOptions |= NETUI_LCD_MDMOPT_BLIND_DIAL; } if (lpSettingsIn->dwModemOptions & MDM_FLOWCONTROL_SOFT) { LineConfigData.dwModemOptions |= NETUI_LCD_MDMOPT_SOFT_FLOW; } if (lpSettingsIn->dwModemOptions & MDM_FLOWCONTROL_HARD) { LineConfigData.dwModemOptions |= NETUI_LCD_MDMOPT_HARD_FLOW; } if (lpSettingsIn->dwModemOptions & MDM_SPEED_ADJUST) { // DCC automatic baud rate detection LineConfigData.dwModemOptions |= NETUI_LCD_MDMOPT_AUTO_BAUD; } if (lpSettingsIn->fwOptions & TERMINAL_PRE) { LineConfigData.dwTermOptions |= NETUI_LCD_TRMOPT_PRE_DIAL; } if (lpSettingsIn->fwOptions & TERMINAL_POST) { LineConfigData.dwTermOptions |= NETUI_LCD_TRMOPT_POST_DIAL; } if (lpSettingsIn->fwOptions & MANUAL_DIAL) { LineConfigData.dwTermOptions |= NETUI_LCD_TRMOPT_MANUAL_DIAL; } // Set the maximum length LineConfigData.dwModMaxLen = DIAL_MODIFIER_LEN; wcscpy (LineConfigData.szDialModifier, lpSettingsIn->szDialModifier); if (fRetVal = CallLineConfigEdit(hWndOwner, &LineConfigData)) { // Move the data back. lpSettingsOut->wWaitBong = LineConfigData.wWaitBong; lpSettingsOut->dwCallSetupFailTimer = LineConfigData.dwCallSetupFailTimer; lpSettingsOut->dwModemOptions &= ~(MDM_FLOWCONTROL_SOFT|MDM_FLOWCONTROL_HARD|MDM_SPEED_ADJUST|MDM_BLIND_DIAL); if (LineConfigData.dwModemOptions & NETUI_LCD_MDMOPT_SOFT_FLOW) { lpSettingsOut->dwModemOptions |= MDM_FLOWCONTROL_SOFT; } if (LineConfigData.dwModemOptions & NETUI_LCD_MDMOPT_HARD_FLOW) { lpSettingsOut->dwModemOptions |= MDM_FLOWCONTROL_HARD; } if (LineConfigData.dwModemOptions & NETUI_LCD_MDMOPT_AUTO_BAUD) { lpSettingsOut->dwModemOptions |= MDM_SPEED_ADJUST; } if (LineConfigData.dwModemOptions & NETUI_LCD_MDMOPT_BLIND_DIAL) { lpSettingsOut->dwModemOptions |= MDM_BLIND_DIAL; } lpSettingsOut->wWaitBong = LineConfigData.wWaitBong; lpSettingsOut->dwBaudRate = LineConfigData.dwBaudRate; lpSettingsOut->fwOptions &= ~(MANUAL_DIAL|TERMINAL_PRE|TERMINAL_POST); if (LineConfigData.dwTermOptions & NETUI_LCD_TRMOPT_MANUAL_DIAL) { lpSettingsOut->fwOptions |= MANUAL_DIAL; } if (LineConfigData.dwTermOptions & NETUI_LCD_TRMOPT_PRE_DIAL) { lpSettingsOut->fwOptions |= TERMINAL_PRE; } if (LineConfigData.dwTermOptions & NETUI_LCD_TRMOPT_POST_DIAL) { lpSettingsOut->fwOptions |= TERMINAL_POST; } lpSettingsOut->ByteSize = LineConfigData.bByteSize; lpSettingsOut->StopBits = LineConfigData.bStopBits; lpSettingsOut->Parity = LineConfigData.bParity; wcscpy (lpSettingsOut->szDialModifier, LineConfigData.szDialModifier); } DEBUGMSG (ZONE_MISC, (TEXT("-TSPI_EditMiniConfig: %d\r\n"), fRetVal)); return fRetVal;} //// The following functions are used to verify setting properties of a DEVMINICONFIG via// calls to lineDevSpecific.//BOOLIsValidBaudRate( DWORD dwBaudRate, DWORD dwSettableBaud ){ // // Baud rates and settable bits from winbase.h // switch (dwBaudRate) { case CBR_110: if (dwSettableBaud & BAUD_110) return TRUE; break; case CBR_300: if (dwSettableBaud & BAUD_300) return TRUE; break; case CBR_600: if (dwSettableBaud & BAUD_600) return TRUE; break; case CBR_1200: if (dwSettableBaud & BAUD_1200) return TRUE; break; case CBR_2400: if (dwSettableBaud & BAUD_2400) return TRUE; break; case CBR_4800: if (dwSettableBaud & BAUD_4800) return TRUE; break; case CBR_9600: if (dwSettableBaud & BAUD_9600) return TRUE; break; case CBR_14400: if (dwSettableBaud & BAUD_14400)return TRUE; break; case CBR_19200: if (dwSettableBaud & BAUD_19200)return TRUE; break; case CBR_38400: if (dwSettableBaud & BAUD_38400)return TRUE; break; case CBR_56000: if (dwSettableBaud & BAUD_56K) return TRUE; break; case CBR_57600: if (dwSettableBaud & BAUD_57600)return TRUE; break; case CBR_115200:if (dwSettableBaud & BAUD_115200) return TRUE; break; case CBR_128000:if (dwSettableBaud & BAUD_128K) return TRUE; break; case CBR_256000: default: if (dwSettableBaud & BAUD_USER) return TRUE; break; } return FALSE;} // IsValidBaudRateBOOLIsValidByteSize( DWORD dwByteSize, DWORD dwSettableData ){ // // Settable bits from winbase.h // switch (dwByteSize) { case 5: if (dwSettableData & DATABITS_5) return TRUE; break; case 6: if (dwSettableData & DATABITS_6) return TRUE; break; case 7: if (dwSettableData & DATABITS_7) return TRUE; break; case 8: if (dwSettableData & DATABITS_8) return TRUE; break; case 16:if (dwSettableData & DATABITS_16) return TRUE; break; } return FALSE;} // IsValidByteSizeBOOLIsValidParity( DWORD dwParity, DWORD dwSettableParity )
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?