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

📄 rilmain.cpp

📁 手机RILGSM实现的源代码
💻 CPP
📖 第 1 页 / 共 5 页
字号:
                RILSERIALPORTSTATS* pResult = (RILSERIALPORTSTATS*)pBufOut;
                if (pBufOut && dwLenOut >= sizeof(RILSERIALPORTSTATS) &&
                    SUCCEEDED(RILDrv_GetSerialPortStatistics(dwOpenData, pResult)))
                {

                    dwOutUsed = sizeof(RILSERIALPORTSTATS);
                    fRet = TRUE;
                }
                break;
            }

            // RIL_GetDriverVersion()
        case IOCTL_RIL_GETDRIVERVERSION:
            {
                DWORD *pResult = (DWORD *)pBufOut;
                if (pBufOut && dwLenOut >= sizeof(DWORD))
                {
                    // For now, versioning is going to be done manually on an as needed basis
                    *pResult = 0x00020002;
                    dwOutUsed = sizeof(DWORD);
                    fRet = TRUE;
                }
                break;
            }

        case IOCTL_RIL_GETDRIVERVERSIONEX:
            {
            DEFRILVERSIONEX( RilDriverVersionEx );
            const LPRILVERSIONEX pRilDriverVersionExBuf = (LPRILVERSIONEX)pBufOut;
            if ( !pRilDriverVersionExBuf || (dwLenOut < sizeof(RilDriverVersionEx)) )
                {
                DEBUGMSG( ZONE_ERROR, (_T("RILDrv : E : RIL_IOControl : IOCTL_RIL_GETDRIVERVERSIONEX : NULL pointer to output buffer or output buffer with insuffcient size [%lu bytes]\r\n"), dwLenOut) );
                break;
                }
            fRet = CeSafeCopyMemory( pRilDriverVersionExBuf, &RilDriverVersionEx, sizeof(RilDriverVersionEx) );
            if ( fRet )
                {
                dwOutUsed = sizeof(RilDriverVersionEx);
                }
            break;
            }

#ifdef RIL_LAST_ERROR
        case IOCTL_RIL_GETLASTERROR:
            {
                DWORD *pResult = (DWORD *)pBufOut;
                if (pBufOut && dwLenOut >= sizeof(DWORD))
                {
                    // Give them back the error
                    *pResult = g_dwLastError;
                    dwOutUsed = sizeof(DWORD);
                    fRet = TRUE;
                }
                break;
            }
            break;
#endif
        case IOCTL_PSL_NOTIFY:
            {
                pHandle->CancelNotifications();
                fRet = TRUE;
                break;
            }

        case IOCTL_RIL_GETSERIALPORTHANDLEFROMCONTEXTID:
            {
                if ( pBufIn && (dwLenIn == sizeof(DWORD)) )
                {
                    RETAILMSG(1,(TEXT("[TI][IOControl]:IOCTL_RIL_GETSERIALPORTHANDLEFROMCONTEXTID")));
                    if ( SUCCEEDED(RILDrv_GetSerialPortHandleFromContextID(*((DWORD*)pBufIn), (TCHAR*) pBufOut, dwLenOut, &dwOutUsed)))
                    {
                        fRet = TRUE;
                    }
                }
                break;
            }

        case IOCTL_RIL_GETVTSERIALPORTHANDLE:
            {
                //Dual-card:merge from crowsbow, it should be open when the function is ready
                //if ( SUCCEEDED(RILDrv_GetVTSerialPortHandle((TCHAR*) pBufOut, dwLenOut, &dwOutUsed)))
                {
                    fRet = TRUE;
                }
                break;
            }

         // add by yingmingbo-20080222                
                // RIL_GetContactNameInfoEx()
        case IOCTL_RILEXT_GETCONTACTNAMEINFO:
            {
                RETAILMSG(1,(TEXT("[TI][IOControl]:IOCTL_RILExt_GETCONTACTNAMEINFO BufLen=%08x"),dwLenIn));
                if ( pBufIn && pBufOut && (dwLenOut == sizeof(CONTACT_NAME_INFO)) )
                {
                    RETAILMSG(1,(TEXT("[TI][IOControl]:IOCTL_RILExt_GETCONTACTNAMEINFO")));
                    if ( SUCCEEDED(RILDrv_GetContactNameInfo(dwOpenData, (WCHAR*)pBufIn, (CONTACT_NAME_INFO*) pBufOut)))
                    {
                        dwOutUsed = sizeof(CONTACT_NAME_INFO);
                        fRet = TRUE;
                        RETAILMSG(1,(TEXT("[TI][IOControl]:IOCTL_RILExt_GETCONTACTNAMEINFO return TRUE")));
                    }
                }
                break;
            }
        // end add by yingmingbo

            // Other RIL_ APIs
        default:
            {
                HRESULT* phr = (HRESULT*)pBufOut;
                if (!pBufOut || dwLenOut < sizeof(HRESULT))
                {
                    goto Error;
                }

                switch (dwCode)
                {
#ifdef OEM1_DRIVER_PM
                // RIL saving power management io control
                case IOCTL_RIL_POWERSUSPEND:
                    CALLDRVAPI(RILDrv_EnablePowerSavings);
                    break;

                // RIL disable saving power management io control
                case IOCTL_RIL_POWERRESUME:
                    CALLDRVAPI(RILDrv_DisablePowerSavings);
                    break;
#endif  // OEM1_DRIVER_PM
                // RIL_GetSubscriberNumbers()
                case IOCTL_RIL_GETSUBSCRIBERNUMBERS:
                    CALLDRVAPI(RILDrv_GetSubscriberNumbers);
                    break;

                    // RIL_GetOperatorList()
                case IOCTL_RIL_GETOPERATORLIST:
                    CALLDRVAPI(RILDrv_GetOperatorList);
                    break;

                    // RIL_GetPreferredOperatorList()
                case IOCTL_RIL_GETPREFERREDOPERATORLIST:
                    CALLDRVAPI_PARAMS(DWORD, RILDrv_GetPreferredOperatorList(dwOpenData, *pParams));
                    break;

                    // RIL_AddPreferredOperator()
                case IOCTL_RIL_ADDPREFERREDOPERATOR:
                    CALLDRVAPI_PARAMS(ADDPREFERREDOPERATOR_PARAMS, RILDrv_AddPreferredOperator(dwOpenData, \
                                                                                                            pParams->dwIndex, &pParams->ronOperatorNames));
                    break;

                    // RIL_RemovePreferredOperator()
                case IOCTL_RIL_REMOVEPREFERREDOPERATOR:
                    CALLDRVAPI_PARAMS(DWORD, RILDrv_RemovePreferredOperator(dwOpenData, *pParams));
                    break;

                    // RIL_GetCurrentOperator()
                case IOCTL_RIL_GETCURRENTOPERATOR:
                    CALLDRVAPI_PARAMS(DWORD, RILDrv_GetCurrentOperator(dwOpenData, *pParams));
                    break;

                    // RIL_GetAllOperatorsList()
                case IOCTL_RIL_GETALLOPERATORSLIST:
                    CALLDRVAPI(RILDrv_GetAllOperatorsList);
                    break;

                    // RIL_RegisterOnNetwork()
                case IOCTL_RIL_REGISTERONNETWORK:
                    CALLDRVAPI_PARAMS(REGISTERONNETWORK_PARAMS, RILDrv_RegisterOnNetwork(dwOpenData, pParams->dwMode, \
                                                                                                      &pParams->ronOperatorNames));
                    break;

                    // RIL_UnregisterFromNetwork()
                case IOCTL_RIL_UNREGISTERFROMNETWORK:
                    CALLDRVAPI(RILDrv_UnregisterFromNetwork);
                    break;

                    // RIL_GetRegistrationStatus()
                case IOCTL_RIL_GETREGISTRATIONSTATUS:
                    CALLDRVAPI(RILDrv_GetRegistrationStatus);
                    break;

                    // RIL_GetCallerIdSettings()
                case IOCTL_RIL_GETCALLERIDSETTINGS:
                    CALLDRVAPI(RILDrv_GetCallerIdSettings);
                    break;

                    // RIL_SetCallerIdStatus()
                case IOCTL_RIL_SETCALLERIDSTATUS:
                    CALLDRVAPI_PARAMS(DWORD, RILDrv_SetCallerIdStatus(dwOpenData, *pParams));
                    break;

                    // RIL_GetHideIdSettings()
                case IOCTL_RIL_GETHIDEIDSETTINGS:
                    CALLDRVAPI(RILDrv_GetHideIdSettings);
                    break;

                    // RIL_SetHideIdStatus()
                case IOCTL_RIL_SETHIDEIDSTATUS:
                    CALLDRVAPI_PARAMS(DWORD, RILDrv_SetHideIdStatus(dwOpenData, *pParams));
                    break;

                    // RIL_GetDialedIdSettings()
                case IOCTL_RIL_GETDIALEDIDSETTINGS:
                    CALLDRVAPI(RILDrv_GetDialedIdSettings);
                    break;

                    // RIL_SetDialedIdStatus()
                case IOCTL_RIL_SETDIALEDIDSTATUS:
                    CALLDRVAPI_PARAMS(DWORD, RILDrv_SetDialedIdStatus(dwOpenData, *pParams));
                    break;

                    // RIL_GetHideConnectedIdSettings()
                case IOCTL_RIL_GETHIDECONNECTEDIDSETTINGS:
                    CALLDRVAPI(RILDrv_GetHideConnectedIdSettings);
                    break;

                    // RIL_SetHideConnectedIdStatus()
                case IOCTL_RIL_SETHIDECONNECTEDIDSTATUS:
                    CALLDRVAPI_PARAMS(DWORD, RILDrv_SetHideConnectedIdStatus(dwOpenData, *pParams));
                    break;

                    // RIL_GetClosedGroupSettings()
                case IOCTL_RIL_GETCLOSEDGROUPSETTINGS:
                    CALLDRVAPI(RILDrv_GetClosedGroupSettings);
                    break;

                    // RIL_SetClosedGroupSettings()
                case IOCTL_RIL_SETCLOSEDGROUPSETTINGS:
                    CALLDRVAPI_PARAMS(RILCLOSEDGROUPSETTINGS, RILDrv_SetClosedGroupSettings(dwOpenData, pParams));
                    break;

                    // RIL_GetCallForwardingSettings()
                case IOCTL_RIL_GETCALLFORWARDINGSETTINGS:
                    CALLDRVAPI_PARAMS(GETCALLFORWARDING_PARAMS, RILDrv_GetCallForwardingSettings(dwOpenData, pParams->dwReason, pParams->dwInfoClasses));
                    break;

                    // RIL_AddCallForwarding()
                case IOCTL_RIL_ADDCALLFORWARDING:
                    CALLDRVAPI_PARAMS(ADDCALLFORWARDING_PARAMS, RILDrv_AddCallForwarding(dwOpenData, pParams->dwReason, \
                                                                                                      &pParams->rcfsSettings));
                    break;

                    // RIL_RemoveCallForwarding()
                case IOCTL_RIL_REMOVECALLFORWARDING:
                    CALLDRVAPI_PARAMS(REMOVECALLFORWARDING_PARAMS, RILDrv_RemoveCallForwarding(dwOpenData, \
                                                                                                            pParams->dwReason, pParams->dwInfoClasses));
                    break;

                    // RIL_SetCallForwardingStatus()
                case IOCTL_RIL_SETCALLFORWARDINGSTATUS:
                    CALLDRVAPI_PARAMS(SETCALLFORWARDINGSTATUS_PARAMS, RILDrv_SetCallForwardingStatus(dwOpenData, \
                                                                                                     pParams->dwReason, \
                                                                                                     pParams->dwInfoClasses, \
                                                                                                     pParams->dwStatus));
                    break;

                    // RIL_GetCallWaitingSettings()
                case IOCTL_RIL_GETCALLWAITINGSETTINGS:
                    CALLDRVAPI_PARAMS(GETCALLWAITINGSTATUS_PARAMS, RILDrv_GetCallWaitingSettings(dwOpenData, pParams->dwInfoClasses));
                    break;

                    // RIL_SetCallWaitingStatus()
                case IOCTL_RIL_SETCALLWAITINGSTATUS:
                    CALLDRVAPI_PARAMS(SETCALLWAITINGSTATUS_PARAMS, RILDrv_SetCallWaitingStatus(dwOpenData, \
                                                                                                            pParams->dwInfoClasses, pParams->dwStatus));
                    break;

                    // RIL_SendSupServiceData()
                case IOCTL_RIL_SENDSUPSERVICEDATA:
                    CALLDRVAPI_ARRAY(BYTE, RILDrv_SendSupServiceData(dwOpenData, pParams, dwLenIn));
                    break;

                    // RIL_CancelSupServiceDataSession()
                case IOCTL_RIL_CANCELSUPSERVICEDATASESSION:
                    CALLDRVAPI(RILDrv_CancelSupServiceDataSession);
                    break;

                    // RIL_GetCurrentAddressId()
                case IOCTL_RIL_GETCURRENTADDRESSID:
                    CALLDRVAPI(RILDrv_GetCurrentAddressId);
                    break;

                    // RIL_SetCurrentAddressId()
                case IOCTL_RIL_SETCURRENTADDRESSID:
                    CALLDRVAPI_PARAMS(DWORD, RILDrv_SetCurrentAddressId(dwOpenData, *pParams));
                    break;

                    // RIL_Dial()
                case IOCTL_RIL_DIAL:
                    CALLDRVAPI_PARAMS(DIAL_PARAMS, RILDrv_Dial(dwOpenData, pParams->szAddress, pParams->dwType, \
                                                                            pParams->dwOptions));
                    break;

                    // RIL_Asnwer()
                case IOCTL_RIL_ANSWER:
                    CALLDRVAPI(RILDrv_Answer);
                    break;

                    // RIL_Hangup()
                case IOCTL_RIL_HANGUP:
                    CALLDRVAPI(RILDrv_Hangup);
                    break;

                    // RIL_SendDTMF()
                case IOCTL_RIL_SENDDTMF:
                    CALLDRVAPI_ARRAY(SENDDTMF_PARAMS, RILDrv_SendDTMF(dwOpenData, pParams->szDTMF, pParams->dwDuration));
                    break;

                    // RIL_SetDTMFMonitoring()
                case IOCTL_RIL_SETDTMFMONITORING:
                    CALLDRVAPI_PARAMS(BOOL, RILDrv_SetDTMFMonitoring(dwOpenData, *pParams));
                    break;

                    // RIL_GetCallList()
                case IOCTL_RIL_GETCALLLIST:
                    CALLDRVAPI(RILDrv_GetCallList);
                    break;
                case IOCTL_RIL_SPECIALCLCC:
                    CALLDRVAPI(RILDrv_GetSpecialCallList);    
                    break;
                    // RIL_ManageCalls()
                case IOCTL_RIL_MANAGECALLS:
                    CALLDRVAPI_PARAMS(MANAGECALLS_PARAMS, RILDrv_ManageCalls(dwOpenData, pParams->dwCommand, pParams->dwID));
                    break;

                    // RIL_TransferCall()
                case IOCTL_RIL_TRANSFERCALL:
                    CALLDRVAPI_PARAMS(TRANSFERCALL_PARAMS, RILDrv_TransferCall(dwOpenData, &pParams->raAddress, \
                                                                                            (pParams->fSubAddress ? &pParams->rsaSubAddress : NULL)));
                    break;

                    // RIL_GetLineStatus()
                case IOCTL_RIL_GETLINESTATUS:
                    CALLDRVAPI(RILDrv_GetLineStatus);
                    break;

                    // RIL_GetAudioGain()
                case IOCTL_RIL_GETAUDIOGAIN:
                    CALLDRVAPI(RILDrv_GetAudioGain);
                    break;

                    // RIL_SetAudioGain()
                case IOCTL_RIL_SETAUDIOGAIN:

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -