📄 settingfunctions.cpp
字号:
else if (wcscmp(propertyName, PROPERTY_SPDM_PUSH_NOTIFICATION) == 0) {
tmp = node->readPropertyValue(PROPERTY_PUSH_NOTIFICATION);
}
else if (wcscmp(propertyName, PROPERTY_SPDM_NOTIFICATION_PORT) == 0) {
tmp = node->readPropertyValue(PROPERTY_NOTIFICATION_PORT);
}
else if (wcscmp(propertyName, PROPERTY_SPDM_POLLING_NOTIFICATION) == 0) {
tmp = node->readPropertyValue(PROPERTY_POLLING_NOTIFICATION);
}
else if (wcscmp(propertyName, PROPERTY_SPDM_SERVER_NOTIFIED) == 0) {
tmp = node->readPropertyValue(PROPERTY_SERVER_NOTIFIED);
}
else if (wcscmp(propertyName, PROPERTY_SPDM_SMS_WAP_PUSH) == 0) {
tmp = node->readPropertyValue(PROPERTY_SMS_WAP_PUSH);
}
else if (wcscmp(propertyName, PROPERTY_SPDM_PID) == 0) {
tmp = node->readPropertyValue(PROPERTY_PID);
}
else
tmp = "";
toRet = toWideChar(tmp);
wcscpy(propertyValue, toRet);
if (isFromVB != NULL && isFromVB == TRUE)
propertyValue[wcslen(propertyValue)] = L' ';
goto finally;
}
wsprintf(buf, TEXT(""));
wcscpy(propertyValue, buf);
propertyValue[wcslen(propertyValue)] = L' ';
finally:
if (toRet)
delete [] toRet;
toRet = NULL;
if(tmp)
delete [] tmp;
tmp = NULL;
if (node) {delete node; node = NULL; }
return 0;
}
// ***************************************************************************
// Function Name: GetTSPLineDeviceID
//
// Purpose: To get a TSP Line Device ID
//
// Arguments:
// hLineApp = the HLINEAPP returned by lineInitializeEx
// dwNumberDevices = also returned by lineInitializeEx
// dwAPIVersionLow/High = min version of TAPI that we need
// psTSPLineName = "Cellular Line"
//
// Return Values: Current Device ID
//
// Description:
// This function returns the device ID of a named TAPI TSP. The Device ID is
// used in the call to lineOpen
static DWORD GetTSPLineDeviceID(const HLINEAPP hLineApp,
const DWORD dwNumberDevices,
const DWORD dwAPIVersionLow,
const DWORD dwAPIVersionHigh,
const TCHAR* const psTSPLineName)
{
DWORD dwReturn = 0xffffffff;
for(DWORD dwCurrentDevID = 0 ; dwCurrentDevID < dwNumberDevices ; dwCurrentDevID++)
{
DWORD dwAPIVersion;
LINEEXTENSIONID LineExtensionID;
if(0 == lineNegotiateAPIVersion(hLineApp, dwCurrentDevID,
dwAPIVersionLow, dwAPIVersionHigh,
&dwAPIVersion, &LineExtensionID))
{
LINEDEVCAPS LineDevCaps;
LineDevCaps.dwTotalSize = sizeof(LineDevCaps);
if(0 == lineGetDevCaps(hLineApp, dwCurrentDevID,
dwAPIVersion, 0, &LineDevCaps))
{
BYTE* pLineDevCapsBytes = new BYTE[LineDevCaps.dwNeededSize];
if(0 != pLineDevCapsBytes)
{
LINEDEVCAPS* pLineDevCaps = (LINEDEVCAPS*)pLineDevCapsBytes;
pLineDevCaps->dwTotalSize = LineDevCaps.dwNeededSize;
if(0 == lineGetDevCaps(hLineApp, dwCurrentDevID,
dwAPIVersion, 0, pLineDevCaps))
{
if(0 == _tcscmp((TCHAR*)((BYTE*)pLineDevCaps+pLineDevCaps->dwLineNameOffset),
psTSPLineName))
{
dwReturn = dwCurrentDevID;
}
}
delete[] pLineDevCapsBytes;
}
}
}
}
return dwReturn;
}
/**
* Get the phone's IMEI, with the prefix fwm- to be used as deviceID.
* TODO: make a unique getDeviceId function here with conditional compilation.
*/
wstring getIMEI()
{
DWORD dwNumDevs;
DWORD dwAPIVersion = TAPI_API_HIGH_VERSION;
LINEINITIALIZEEXPARAMS liep;
HLINEAPP hLineApp = 0;
HLINE hLine = 0;
DWORD dwExtVersion;
LPBYTE pLineGeneralInfoBytes = NULL;
DWORD dwTAPILineDeviceID;
const DWORD dwMediaMode = LINEMEDIAMODE_DATAMODEM | LINEMEDIAMODE_INTERACTIVEVOICE;
LINEGENERALINFO lviGeneralInfo;
LPLINEGENERALINFO plviGeneralInfo;
LPTSTR tsSerialNumber;
wstring ret(TEXT("fwm-smartphone-plugin"));
// set the line init params
liep.dwTotalSize = sizeof(liep);
liep.dwOptions = LINEINITIALIZEEXOPTION_USEEVENT;
if (lineInitializeEx(&hLineApp, 0, 0, PROVIDER_W, &dwNumDevs, &dwAPIVersion, &liep))
{
goto cleanup;
}
// get the device ID
dwTAPILineDeviceID = GetTSPLineDeviceID(hLineApp, dwNumDevs, TAPI_API_LOW_VERSION, TAPI_API_HIGH_VERSION, CELLTSP_LINENAME_STRING);
// error getting the line device ID?
if (0xffffffff == dwTAPILineDeviceID)
{
goto cleanup;
}
// now try and open the line
if(lineOpen(hLineApp, dwTAPILineDeviceID,
&hLine, dwAPIVersion, 0, 0,
LINECALLPRIVILEGE_OWNER, dwMediaMode, 0))
{
goto cleanup;
}
// set up ExTAPI
if (lineNegotiateExtVersion(hLineApp, dwTAPILineDeviceID, dwAPIVersion, EXT_API_LOW_VERSION, EXT_API_HIGH_VERSION, &dwExtVersion))
{
goto cleanup;
}
// try to get the general info
lviGeneralInfo.dwTotalSize = sizeof(lviGeneralInfo);
// step 1: find out how much space we need
if (lineGetGeneralInfo(hLine, &lviGeneralInfo))
{
goto cleanup;
}
// step 2: malloc space for all the info we need
pLineGeneralInfoBytes = new BYTE[lviGeneralInfo.dwNeededSize];
plviGeneralInfo = (LPLINEGENERALINFO)pLineGeneralInfoBytes;
// step 3: call lGGI again with the appropriately sized buffer
if(NULL != pLineGeneralInfoBytes)
{
plviGeneralInfo->dwTotalSize = lviGeneralInfo.dwNeededSize;
if (lineGetGeneralInfo(hLine, plviGeneralInfo))
{
goto cleanup;
}
} else
{
goto cleanup;
}
// step 4: cast all the arguments to strings
if(0 < plviGeneralInfo->dwSerialNumberSize)
{
tsSerialNumber = (WCHAR*)(((BYTE*)plviGeneralInfo)+plviGeneralInfo->dwSerialNumberOffset);
for (unsigned int i = 0; i < wcslen(tsSerialNumber); i++) {
//
// for the serial number we force to use only ascii char number and letter
//
if(tsSerialNumber[i] >= 32 && tsSerialNumber[i] <= 47)
tsSerialNumber[i] = (int)tsSerialNumber[i] + 33;
else if (tsSerialNumber[i] >= 58 && tsSerialNumber[i] <= 64)
tsSerialNumber[i] = (int)tsSerialNumber[i] + 7;
else if (tsSerialNumber[i] >= 91 && tsSerialNumber[i] <= 96)
tsSerialNumber[i] = (int)tsSerialNumber[i] - 6;
else if (tsSerialNumber[i] >= 123 && tsSerialNumber[i] <= 126)
tsSerialNumber[i] = (int)tsSerialNumber[i] - 10;
}
ret = TEXT("fwm-");
ret += tsSerialNumber;
if(ret.length() > MAX_DEVID) {
ret.erase(MAX_DEVID);
}
}
cleanup:
if (pLineGeneralInfoBytes)
{ delete [] pLineGeneralInfoBytes; pLineGeneralInfoBytes = NULL; }
if (hLine) lineClose(hLine);
if (hLineApp) lineShutdown(hLineApp);
return ret;
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -