⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 settingfunctions.cpp

📁 funambol windows mobile plugin source code, the source code is taken from the funambol site
💻 CPP
📖 第 1 页 / 共 2 页
字号:
        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 + -