| /*=========================================================================== |
| FILE: |
| gobi_sdk_wrapper.cc, |
| derived from |
| QCWWANCMAPI2k.h |
| which has the following copyright notice: |
| |
| DESCRIPTION: |
| QUALCOMM Wireless WAN Connection Manager API for Gobi 2000 |
| |
| Copyright (C) 2009 QUALCOMM Incorporated. All rights reserved. |
| QUALCOMM Proprietary/GTDR |
| |
| All data and information contained in or disclosed by this document is |
| confidential and proprietary information of QUALCOMM Incorporated and all |
| rights therein are expressly reserved. By accepting this material the |
| recipient agrees that this material and the information contained therein |
| is held in confidence and in trust and will not be used, copied, reproduced |
| in whole or in part, nor its contents revealed in any manner to others |
| without the express written permission of QUALCOMM Incorporated. |
| ==========================================================================*/ |
| |
| #include "gobi-cromo-plugin/gobi_sdk_wrapper.h" |
| |
| #include <base/logging.h> |
| |
| #include "gobi/GobiConnectionMgmtAPI.h" |
| #include "gobi/GobiImageMgmtAPI.h" |
| |
| namespace gobi { |
| |
| const char *kServiceMapping[] = { |
| // Entries starting with "+" define a new service. The rest are |
| // function names that belong to that service. These names are |
| // taken from the tables at the beginning of service in the CMAPI |
| // document. |
| |
| // Base is special--it must be the first group and it is |
| // special-cased so that we cannot use any other function if we are |
| // using a function in Base. See also Sdk::GetServiceBound(). |
| "+Base", |
| "QCWWANConnect", |
| "QCWWANDisconnect", |
| |
| "+DeviceConnectivity", |
| "GetDeviceType", |
| "QCWWANEnumerateDevices", |
| "QCWWANGetConnectedDeviceID", |
| "QCWWANCancel", // Not exported, see CancelStartDataSession |
| |
| "+WirelessData", |
| "GetSessionState", |
| "StartDataSession", |
| "CancelDataSession", // Not exported, see CancelStartDataSession |
| "StopDataSession", |
| "GetIPAddress", |
| "GetConnectionRate", |
| "GetPacketStatus", |
| "SetMobileIP", |
| "GetMobileIP", |
| "SetActiveMobileIPProfile", |
| "GetActiveMobileIPProfile", |
| "SetMobileIPProfile", |
| "GetMobileIPProfile", |
| "SetMobileIPParameters", |
| "GetMobileIPParameters", |
| "GetLastMobileIPError", |
| "GetAutoconnect", |
| "SetAutoconnect", |
| "SetDefaultProfile", |
| "GetDefaultProfile", |
| "GetDormancyState", |
| "GetDataBearerTechnology", |
| "GetByteTotals", |
| "GetSessionDuration", |
| |
| "+NetworkAccess", |
| "GetSignalStrengths", |
| "GetRFInfo", |
| "PerformNetworkScan", |
| "PerformNetworkRATScan", |
| "InitiateNetworkRegistration", |
| "InitiateDomainAttach", |
| "GetServingNetwork", |
| "GetServingNetworkCapabilities", |
| "GetHomeNetwork", |
| "GetNetworkPreference", |
| "SetNetworkPreference", |
| "SetCDMANetworkParameters", |
| "GetCDMANetworkParameters", |
| "GetACCOLC", |
| "SetACCOLC", |
| "GetANAAAAuthenticationStatus", |
| "GetPLMNName", |
| |
| "+DeviceManagement", |
| "GetDeviceCapabilities", |
| "GetManufacturer", |
| "GetModelID", |
| "GetFirmwareRevision", |
| "GetFirmwareRevisions", |
| "GetVoiceNumber", |
| "GetIMSI", |
| "GetSerialNumbers", |
| "GetHardwareRevision", |
| "GetPRLVersion", |
| "GetERIFile", |
| "ActivateAutomatic", |
| "ActivateManual", |
| "GetActivationState", |
| "SetPower", |
| "GetPower", |
| "GetOfflineReason", |
| "GetNetworkTime", |
| "UIMSetPINProtection", |
| "UIMVerifyPIN", |
| "UIMUnblockPIN", |
| "UIMChangePIN", |
| "UIMGetPINStatus", |
| "UIMGetICCID", |
| "UIMGetControlKeyStatus", |
| "UIMGetControlKeyBlockingStatus", |
| "UIMSetControlKeyProtection", |
| "UIMUnblockControlKey", |
| "ResetToFactoryDefaults", |
| "ValidateSPC", |
| |
| "+SMS", |
| "DeleteSMS", |
| "GetSMSList", |
| "GetSMS", |
| "ModifySMSStatus", |
| "SaveSMS", |
| "SendSMS", |
| "GetSMSCAddress", |
| "SetSMSCAddress", |
| "GetSMSRoutes", |
| "SetSMSRoutes", |
| |
| "+Firmware", |
| "UpgradeFirmware", |
| "GetImageStore", |
| "GetImageInfo", |
| "GetFirmwareInfo", |
| |
| "+PositionDetermination", |
| "GetPDSState", |
| "SetPDSState", |
| "PDSInjectTimeReference", |
| "GetPDSDefaults", |
| "SetPDSDefaults", |
| "GetXTRAAutomaticDownload", |
| "SetXTRAAutomaticDownload", |
| "GetXTRANetwork", |
| "SetXTRANetwork", |
| "GetXTRAValidity", |
| "ForceXTRADownload", |
| "GetAGPSConfig", |
| "SetAGPSConfig", |
| "GetServiceAutomaticTracking", |
| "SetServiceAutomaticTracking", |
| "GetPortAutomaticTracking", |
| "SetPortAutomaticTracking", |
| "ResetPDSData", |
| |
| "+CardApplication", |
| "CATSendTerminalResponse", |
| "CATSendEnvelopeCommand", |
| |
| "+RemoteManagement", |
| "GetSMSWake", |
| "SetSMSWake", |
| |
| "+OMADM", |
| "OMADMStartSession", |
| "OMADMCancelSession", |
| "OMADMGetSessionInfo", |
| "OMADMGetPendingNIA", |
| "OMADMSendSelection", |
| "OMADMGetFeatureSettings", |
| "OMADMSetProvisioningFeature", |
| "OMADMSetPRLUpdateFeature", |
| |
| "+Callback", |
| "SetSessionStateCallback", |
| "SetDataBearerCallback", |
| "SetDormancyStatusCallback", |
| "SetMobileIPStatusCallback", |
| "SetActivationStatusCallback", |
| "SetPowerCallback", |
| "SetRoamingIndicatorCallback", |
| "SetSignalStrengthCallback", |
| "SetRFInfoCallback", |
| "SetLURejectCallback", |
| "SetNMEACallback", |
| "SetPDSStateCallback", |
| "SetNewSMSCallback", |
| "SetDataCapabilitiesCallback", |
| "SetByteTotalsCallback", |
| "SetCATEventCallback", |
| "SetOMADMAlertCallback", |
| "SetOMADMStateCallback", |
| |
| nullptr |
| }; |
| |
| |
| Sdk::CallWrapper::CallWrapper(Sdk *sdk, const char *name) |
| : sdk_(sdk), |
| function_name_(name) { |
| sdk_locked_ = sdk_->EnterSdk(function_name_) == kCrosGobiSubsystemInUse; |
| } |
| |
| ULONG Sdk::CallWrapper::CheckReturn(ULONG rc) { |
| if (sdk_->fault_inject_sdk_error_ != 0) { |
| LOG(ERROR) << "Injecting error " << sdk_->fault_inject_sdk_error_; |
| rc = sdk_->fault_inject_sdk_error_; |
| } |
| |
| if (rc == kErrorSendingQmiRequest || |
| rc == kErrorReceivingQmiRequest || |
| rc == kErrorNeedsReset) { |
| // SetOMADM...Callback returns error kErrorSendingQmiRequest when |
| // run on an image without OMADM-capable firmware. This error code |
| // normally means "You have lost synch with the modem and must reset |
| // it", but in this case we don't want to reset it. |
| // http://code.google.com/p/chromium-os/issues/detail?id=9372 |
| // tracks removing this workaround |
| if (strstr(function_name_, "OMADM") == nullptr) { |
| sdk_->sdk_error_sink_(sdk_->current_modem_path_, |
| function_name_, |
| rc); |
| } |
| } |
| return rc; |
| } |
| |
| Sdk::CallWrapper::~CallWrapper() { |
| if (!sdk_locked_) { |
| sdk_->LeaveSdk(function_name_); |
| } |
| } |
| |
| void Sdk::Init() { |
| InitGetServiceFromName(kServiceMapping); |
| service_to_function_.insert( |
| service_to_function_.end(), |
| service_index_upper_bound_, |
| nullptr); |
| pthread_mutex_init(&service_to_function_mutex_, nullptr); |
| fault_inject_sdk_error_ = 0; |
| } |
| |
| void Sdk::InjectFaultSdkError(int error) { |
| fault_inject_sdk_error_ = error; |
| } |
| |
| void Sdk::InitGetServiceFromName(const char *services[]) { |
| int service_index = -1; |
| for (int i = 0; services[i]; ++i) { |
| const char *name = services[i]; |
| CHECK(*name) << "Empty servicename: " << i; |
| if (name[0] == '+') { |
| service_index++; |
| index_to_service_name_[service_index] = name + 1; |
| } else { |
| CHECK_GE(service_index, 0); |
| name_to_service_[std::string(name)] = service_index; |
| } |
| } |
| service_index_upper_bound_ = service_index + 1; |
| } |
| |
| int Sdk::GetServiceFromName(const char *name) { |
| std::map<std::string, int>::iterator i = |
| name_to_service_.find(std::string(name)); |
| CHECK(i != name_to_service_.end()) << "Invalid function name: " << name; |
| return i->second; |
| } |
| |
| int Sdk::GetServiceBound(int service) { |
| if (service == 0) { |
| // Base service: we should prevent all other services from being |
| // used |
| return service_index_upper_bound_; |
| } else { |
| return service + 1; |
| } |
| } |
| |
| ULONG Sdk::EnterSdk(const char *function_name) { |
| ULONG to_return = 0; |
| int rc = pthread_mutex_lock(&service_to_function_mutex_); |
| CHECK_EQ(rc, 0) << "lock failed: rc = " << rc; |
| int service = GetServiceFromName(function_name); |
| for (int i = service; i < GetServiceBound(service); ++i) { |
| if (service_to_function_[i]) { |
| LOG(WARNING) << "Reentrant SDK access detected: Called " |
| << function_name << " while already in call to " |
| << service_to_function_[i]; |
| to_return = kCrosGobiSubsystemInUse; |
| } |
| } |
| if (to_return == 0) { |
| for (int i = service; i < GetServiceBound(service); ++i) { |
| service_to_function_[i] = function_name; |
| } |
| } |
| rc = pthread_mutex_unlock(&service_to_function_mutex_); |
| CHECK_EQ(rc, 0) << "rc = " << rc; |
| return to_return; |
| } |
| |
| void Sdk::LeaveSdk(const char *function_name) { |
| int rc = pthread_mutex_lock(&service_to_function_mutex_); |
| CHECK_EQ(rc, 0) << "lock failed: rc = " << rc; |
| |
| int service = GetServiceFromName(function_name); |
| for (int i = service; i < GetServiceBound(service); ++i) { |
| const char *recorded_function = service_to_function_[i]; |
| if (!recorded_function || strcmp(recorded_function, function_name) != 0) { |
| if (!recorded_function) { |
| recorded_function = "None"; |
| } |
| LOG(WARNING) << "Found exited/wrong service when exiting sdk function: " |
| << function_name << ", " << recorded_function; |
| } |
| service_to_function_[i] = nullptr; |
| } |
| rc = pthread_mutex_unlock(&service_to_function_mutex_); |
| CHECK_EQ(rc, 0) << "rc = " << rc; |
| } |
| |
| ULONG Sdk::CancelStartDataSession() { |
| static const char *to_cancel = "StartDataSession"; |
| |
| ULONG gobi_rc = ::QCWWANCancel(); |
| if (gobi_rc != 0) { |
| LOG(ERROR) << "QCWWANCancel failed " << gobi_rc; |
| return gobi_rc; |
| } |
| |
| // Sanity checks |
| int rc = pthread_mutex_lock(&service_to_function_mutex_); |
| CHECK_EQ(rc, 0) << "lock failed: rc = " << rc; |
| |
| int wireless_data_service_index = name_to_service_[to_cancel]; |
| const char *current_wireless_data_fn = |
| service_to_function_[wireless_data_service_index]; |
| |
| if (current_wireless_data_fn && |
| strcmp(current_wireless_data_fn, to_cancel) != 0) { |
| LOG(ERROR) << "Asked to cancel StartDataSession, but " |
| << current_wireless_data_fn << "was running"; |
| } |
| |
| for (int i = 0; i < service_index_upper_bound_ ; ++i) { |
| if (i != wireless_data_service_index && |
| service_to_function_[i] != nullptr) { |
| LOG(ERROR) << "Did not expect " |
| << service_to_function_[i] << " to be running"; |
| } |
| } |
| rc = pthread_mutex_unlock(&service_to_function_mutex_); |
| CHECK_EQ(rc, 0) << "rc = " << rc; |
| |
| // Sanity checks complete |
| return ::CancelDataSession(); |
| } |
| |
| // If the CallWrapper couldn't get a lock on the subsystem we need to |
| // use, return an error. |
| #define RETURN_IF_CALL_WRAPPER_LOCKED(CW) \ |
| do { \ |
| if ((CW).sdk_locked_) { \ |
| return kCrosGobiSubsystemInUse; \ |
| } \ |
| } while (0); |
| |
| GobiType Sdk::GetDeviceType() { |
| return ::GetDeviceType(); |
| } |
| |
| ULONG Sdk::QCWWANEnumerateDevices( |
| BYTE * pDevicesSize, |
| BYTE * pDevices) { |
| CallWrapper cw(this, "QCWWANEnumerateDevices"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::QCWWANEnumerateDevices(pDevicesSize, |
| pDevices)); |
| } |
| |
| ULONG Sdk::QCWWANConnect( |
| CHAR * pDeviceNode, |
| CHAR * pDeviceKey) { |
| CallWrapper cw(this, "QCWWANConnect"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::QCWWANConnect(pDeviceNode, |
| pDeviceKey)); |
| } |
| |
| ULONG Sdk::QCWWANDisconnect() { |
| CallWrapper cw(this, "QCWWANDisconnect"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::QCWWANDisconnect()); |
| } |
| |
| ULONG Sdk::QCWWANGetConnectedDeviceID( |
| ULONG deviceNodeSize, |
| CHAR * pDeviceNode, |
| ULONG deviceKeySize, |
| CHAR * pDeviceKey) { |
| CallWrapper cw(this, "QCWWANGetConnectedDeviceID"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::QCWWANGetConnectedDeviceID( |
| deviceNodeSize, |
| pDeviceNode, |
| deviceKeySize, |
| pDeviceKey)); |
| } |
| |
| ULONG Sdk::GetSessionState(ULONG * pState) { |
| CallWrapper cw(this, "GetSessionState"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::GetSessionState(pState)); |
| } |
| |
| ULONG Sdk::GetSessionDuration(ULONGLONG * pDuration) { |
| CallWrapper cw(this, "GetSessionDuration"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::GetSessionDuration(pDuration)); |
| } |
| |
| ULONG Sdk::GetDormancyState(ULONG * pState) { |
| CallWrapper cw(this, "GetDormancyState"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::GetDormancyState(pState)); |
| } |
| |
| ULONG Sdk::GetAutoconnect(ULONG * pSetting) { |
| CallWrapper cw(this, "GetAutoconnect"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::GetAutoconnect(pSetting)); |
| } |
| |
| ULONG Sdk::SetAutoconnect(ULONG setting) { |
| CallWrapper cw(this, "SetAutoconnect"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::SetAutoconnect(setting)); |
| } |
| |
| ULONG Sdk::SetDefaultProfile( |
| ULONG profileType, |
| ULONG * pPDPType, |
| ULONG * pIPAddress, |
| ULONG * pPrimaryDNS, |
| ULONG * pSecondaryDNS, |
| ULONG * pAuthentication, |
| CHAR * pName, |
| CHAR * pAPNName, |
| CHAR * pUsername, |
| CHAR * pPassword) { |
| CallWrapper cw(this, "SetDefaultProfile"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::SetDefaultProfile( |
| profileType, |
| pPDPType, |
| pIPAddress, |
| pPrimaryDNS, |
| pSecondaryDNS, |
| pAuthentication, |
| pName, |
| pAPNName, |
| pUsername, |
| pPassword)); |
| } |
| |
| ULONG Sdk::GetDefaultProfile( |
| ULONG profileType, |
| ULONG * pPDPType, |
| ULONG * pIPAddress, |
| ULONG * pPrimaryDNS, |
| ULONG * pSecondaryDNS, |
| ULONG * pAuthentication, |
| BYTE nameSize, |
| CHAR * pName, |
| BYTE apnSize, |
| CHAR * pAPNName, |
| BYTE userSize, |
| CHAR * pUsername) { |
| CallWrapper cw(this, "GetDefaultProfile"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::GetDefaultProfile( |
| profileType, |
| pPDPType, |
| pIPAddress, |
| pPrimaryDNS, |
| pSecondaryDNS, |
| pAuthentication, |
| nameSize, |
| pName, |
| apnSize, |
| pAPNName, |
| userSize, |
| pUsername)); |
| } |
| |
| ULONG Sdk::StartDataSession( |
| ULONG * pTechnology, |
| const CHAR * pAPNName, |
| ULONG * pAuthentication, |
| const CHAR * pUsername, |
| const CHAR * pPassword, |
| ULONG * pSessionId, |
| ULONG * pFailureReason |
| ) { |
| CharStarCopier mutableAPNName(pAPNName); |
| CharStarCopier mutableUsername(pUsername); |
| CharStarCopier mutablePassword(pPassword); |
| CallWrapper cw(this, "StartDataSession"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| |
| // Do not call CheckReturn here; if this is a cancelled connect, |
| // we'll get an error 13 and we don't want to restart. Other calls |
| // to the SDK will still discover the error if we're in a |
| // persistently-failing state. |
| return ::StartDataSession( |
| pTechnology, |
| nullptr, |
| nullptr, |
| nullptr, |
| nullptr, |
| mutableAPNName.get(), |
| nullptr, |
| pAuthentication, |
| mutableUsername.get(), |
| mutablePassword.get(), |
| pSessionId, |
| pFailureReason); |
| } |
| |
| ULONG Sdk::StopDataSession(ULONG sessionId) { |
| CallWrapper cw(this, "StopDataSession"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::StopDataSession(sessionId)); |
| } |
| |
| ULONG Sdk::GetIPAddress(ULONG * pIPAddress) { |
| CallWrapper cw(this, "GetIPAddress"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::GetIPAddress(pIPAddress)); |
| } |
| |
| ULONG Sdk::GetConnectionRate( |
| ULONG * pCurrentChannelTXRate, |
| ULONG * pCurrentChannelRXRate, |
| ULONG * pMaxChannelTXRate, |
| ULONG * pMaxChannelRXRate) { |
| CallWrapper cw(this, "GetConnectionRate"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::GetConnectionRate( |
| pCurrentChannelTXRate, |
| pCurrentChannelRXRate, |
| pMaxChannelTXRate, |
| pMaxChannelRXRate)); |
| } |
| |
| ULONG Sdk::GetPacketStatus( |
| ULONG * pTXPacketSuccesses, |
| ULONG * pRXPacketSuccesses, |
| ULONG * pTXPacketErrors, |
| ULONG * pRXPacketErrors, |
| ULONG * pTXPacketOverflows, |
| ULONG * pRXPacketOverflows) { |
| CallWrapper cw(this, "GetPacketStatus"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::GetPacketStatus( |
| pTXPacketSuccesses, |
| pRXPacketSuccesses, |
| pTXPacketErrors, |
| pRXPacketErrors, |
| pTXPacketOverflows, |
| pRXPacketOverflows)); |
| } |
| |
| ULONG Sdk::GetByteTotals( |
| ULONGLONG * pTXTotalBytes, |
| ULONGLONG * pRXTotalBytes) { |
| CallWrapper cw(this, "GetByteTotals"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::GetByteTotals( |
| pTXTotalBytes, |
| pRXTotalBytes)); |
| } |
| |
| ULONG Sdk::SetMobileIP(ULONG mode) { |
| CallWrapper cw(this, "SetMobileIP"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::SetMobileIP(mode)); |
| } |
| |
| ULONG Sdk::GetMobileIP(ULONG * pMode) { |
| CallWrapper cw(this, "GetMobileIP"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::GetMobileIP(pMode)); |
| } |
| |
| ULONG Sdk::SetActiveMobileIPProfile( |
| CHAR * pSPC, |
| BYTE index) { |
| CallWrapper cw(this, "SetActiveMobileIPProfile"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::SetActiveMobileIPProfile( |
| pSPC, |
| index)); |
| } |
| |
| ULONG Sdk::GetActiveMobileIPProfile(BYTE * pIndex) { |
| CallWrapper cw(this, "GetActiveMobileIPProfile"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::GetActiveMobileIPProfile(pIndex)); |
| } |
| |
| ULONG Sdk::SetMobileIPProfile( |
| CHAR * pSPC, |
| BYTE index, |
| BYTE * pEnabled, |
| ULONG * pAddress, |
| ULONG * pPrimaryHA, |
| ULONG * pSecondaryHA, |
| BYTE * pRevTunneling, |
| CHAR * pNAI, |
| ULONG * pHASPI, |
| ULONG * pAAASPI, |
| CHAR * pMNHA, |
| CHAR * pMNAAA) { |
| CallWrapper cw(this, "SetMobileIPProfile"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::SetMobileIPProfile( |
| pSPC, |
| index, |
| pEnabled, |
| pAddress, |
| pPrimaryHA, |
| pSecondaryHA, |
| pRevTunneling, |
| pNAI, |
| pHASPI, |
| pAAASPI, |
| pMNHA, |
| pMNAAA)); |
| } |
| |
| ULONG Sdk::GetMobileIPProfile( |
| BYTE index, |
| BYTE * pEnabled, |
| ULONG * pAddress, |
| ULONG * pPrimaryHA, |
| ULONG * pSecondaryHA, |
| BYTE * pRevTunneling, |
| BYTE naiSize, |
| CHAR * pNAI, |
| ULONG * pHASPI, |
| ULONG * pAAASPI, |
| ULONG * pHAState, |
| ULONG * pAAAState) { |
| CallWrapper cw(this, "GetMobileIPProfile"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::GetMobileIPProfile( |
| index, |
| pEnabled, |
| pAddress, |
| pPrimaryHA, |
| pSecondaryHA, |
| pRevTunneling, |
| naiSize, |
| pNAI, |
| pHASPI, |
| pAAASPI, |
| pHAState, |
| pAAAState)); |
| } |
| |
| ULONG Sdk::SetMobileIPParameters( |
| CHAR * pSPC, |
| ULONG * pMode, |
| BYTE * pRetryLimit, |
| BYTE * pRetryInterval, |
| BYTE * pReRegPeriod, |
| BYTE * pReRegTraffic, |
| BYTE * pHAAuthenticator, |
| BYTE * pHA2002bis) { |
| CallWrapper cw(this, "SetMobileIPParameters"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::SetMobileIPParameters( |
| pSPC, |
| pMode, |
| pRetryLimit, |
| pRetryInterval, |
| pReRegPeriod, |
| pReRegTraffic, |
| pHAAuthenticator, |
| pHA2002bis)); |
| } |
| |
| ULONG Sdk::GetMobileIPParameters( |
| ULONG * pMode, |
| BYTE * pRetryLimit, |
| BYTE * pRetryInterval, |
| BYTE * pReRegPeriod, |
| BYTE * pReRegTraffic, |
| BYTE * pHAAuthenticator, |
| BYTE * pHA2002bis) { |
| CallWrapper cw(this, "GetMobileIPParameters"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::GetMobileIPParameters( |
| pMode, |
| pRetryLimit, |
| pRetryInterval, |
| pReRegPeriod, |
| pReRegTraffic, |
| pHAAuthenticator, |
| pHA2002bis)); |
| } |
| |
| ULONG Sdk::GetLastMobileIPError(ULONG * pError) { |
| CallWrapper cw(this, "GetLastMobileIPError"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::GetLastMobileIPError(pError)); |
| } |
| |
| ULONG Sdk::GetANAAAAuthenticationStatus(ULONG * pStatus) { |
| CallWrapper cw(this, "GetANAAAAuthenticationStatus"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::GetANAAAAuthenticationStatus(pStatus)); |
| } |
| |
| ULONG Sdk::GetSignalStrengths( |
| ULONG * pArraySizes, |
| INT8 * pSignalStrengths, |
| ULONG * pRadioInterfaces) { |
| CallWrapper cw(this, "GetSignalStrengths"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::GetSignalStrengths( |
| pArraySizes, |
| pSignalStrengths, |
| pRadioInterfaces)); |
| } |
| |
| ULONG Sdk::GetRFInfo( |
| BYTE * pInstanceSize, |
| BYTE * pInstances) { |
| CallWrapper cw(this, "GetRFInfo"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::GetRFInfo( |
| pInstanceSize, |
| pInstances)); |
| } |
| |
| ULONG Sdk::PerformNetworkScan( |
| BYTE * pInstanceSize, |
| BYTE * pInstances) { |
| CallWrapper cw(this, "PerformNetworkScan"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::PerformNetworkScan( |
| pInstanceSize, |
| pInstances)); |
| } |
| |
| ULONG Sdk::PerformNetworkRATScan( |
| BYTE * pInstanceSize, |
| BYTE * pInstances, |
| BYTE * pRATSize, |
| BYTE * pRATInstances) { |
| CallWrapper cw(this, "PerformNetworkRATScan"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::PerformNetworkRATScan( |
| pInstanceSize, |
| pInstances, |
| pRATSize, |
| pRATInstances)); |
| } |
| |
| ULONG Sdk::InitiateNetworkRegistration( |
| ULONG regType, |
| WORD mcc, |
| WORD mnc, |
| ULONG rat) { |
| CallWrapper cw(this, "InitiateNetworkRegistration"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::InitiateNetworkRegistration( |
| regType, |
| mcc, |
| mnc, |
| rat)); |
| } |
| |
| ULONG Sdk::InitiateDomainAttach(ULONG action) { |
| CallWrapper cw(this, "InitiateDomainAttach"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::InitiateDomainAttach(action)); |
| } |
| |
| ULONG Sdk::GetServingNetwork( |
| ULONG * pRegistrationState, |
| ULONG * pRAN, |
| BYTE * pRadioIfacesSize, |
| BYTE * pRadioIfaces, |
| ULONG * pRoaming, |
| WORD * pMCC, |
| WORD * pMNC, |
| BYTE nameSize, |
| CHAR * pName) { |
| ULONG l1, l2; |
| CallWrapper cw(this, "GetServingNetwork"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::GetServingNetwork( |
| pRegistrationState, |
| &l1, // CS domain |
| &l2, // PS domain |
| pRAN, |
| pRadioIfacesSize, |
| pRadioIfaces, |
| pRoaming, |
| pMCC, |
| pMNC, |
| nameSize, |
| pName)); |
| } |
| |
| ULONG Sdk::GetServingNetworkCapabilities( |
| BYTE * pDataCapsSize, |
| BYTE * pDataCaps) { |
| CallWrapper cw(this, "GetServingNetworkCapabilities"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::GetServingNetworkCapabilities( |
| pDataCapsSize, |
| pDataCaps)); |
| } |
| |
| ULONG Sdk::GetDataBearerTechnology(ULONG * pDataBearer) { |
| CallWrapper cw(this, "GetDataBearerTechnology"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::GetDataBearerTechnology(pDataBearer)); |
| } |
| |
| ULONG Sdk::GetHomeNetwork( |
| WORD * pMCC, |
| WORD * pMNC, |
| BYTE nameSize, |
| CHAR * pName, |
| WORD * pSID, |
| WORD * pNID) { |
| CallWrapper cw(this, "GetHomeNetwork"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::GetHomeNetwork( |
| pMCC, |
| pMNC, |
| nameSize, |
| pName, |
| pSID, |
| pNID)); |
| } |
| |
| ULONG Sdk::SetNetworkPreference( |
| ULONG technologyPref, |
| ULONG duration) { |
| CallWrapper cw(this, "SetNetworkPreference"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::SetNetworkPreference( |
| technologyPref, |
| duration)); |
| } |
| |
| ULONG Sdk::GetNetworkPreference( |
| ULONG * pTechnologyPref, |
| ULONG * pDuration, |
| ULONG * pPersistentTechnologyPref) { |
| CallWrapper cw(this, "GetNetworkPreference"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::GetNetworkPreference( |
| pTechnologyPref, |
| pDuration, |
| pPersistentTechnologyPref)); |
| } |
| |
| ULONG Sdk::SetCDMANetworkParameters( |
| CHAR * pSPC, |
| BYTE * pForceRev0, |
| BYTE * pCustomSCP, |
| ULONG * pProtocol, |
| ULONG * pBroadcast, |
| ULONG * pApplication, |
| ULONG * pRoaming) { |
| CallWrapper cw(this, "SetCDMANetworkParameters"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::SetCDMANetworkParameters( |
| pSPC, |
| pForceRev0, |
| pCustomSCP, |
| pProtocol, |
| pBroadcast, |
| pApplication, |
| pRoaming)); |
| } |
| |
| ULONG Sdk::GetCDMANetworkParameters( |
| BYTE * pSCI, |
| BYTE * pSCM, |
| BYTE * pRegHomeSID, |
| BYTE * pRegForeignSID, |
| BYTE * pRegForeignNID, |
| BYTE * pForceRev0, |
| BYTE * pCustomSCP, |
| ULONG * pProtocol, |
| ULONG * pBroadcast, |
| ULONG * pApplication, |
| ULONG * pRoaming) { |
| CallWrapper cw(this, "GetCDMANetworkParameters"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::GetCDMANetworkParameters( |
| pSCI, |
| pSCM, |
| pRegHomeSID, |
| pRegForeignSID, |
| pRegForeignNID, |
| pForceRev0, |
| pCustomSCP, |
| pProtocol, |
| pBroadcast, |
| pApplication, |
| pRoaming)); |
| } |
| |
| ULONG Sdk::GetACCOLC(BYTE * pACCOLC) { |
| CallWrapper cw(this, "GetACCOLC"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::GetACCOLC(pACCOLC)); |
| } |
| |
| ULONG Sdk::SetACCOLC( |
| CHAR * pSPC, |
| BYTE accolc) { |
| CallWrapper cw(this, "SetACCOLC"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::SetACCOLC( |
| pSPC, |
| accolc)); |
| } |
| |
| ULONG Sdk::GetPLMNName( |
| USHORT mcc, |
| USHORT mnc, |
| ULONG * pNamesSize, |
| BYTE * pNames) { |
| CallWrapper cw(this, "GetPLMNName"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::GetPLMNName( |
| mcc, |
| mnc, |
| pNamesSize, |
| pNames)); |
| } |
| |
| ULONG Sdk::GetDeviceCapabilities( |
| ULONG * pMaxTXChannelRate, |
| ULONG * pMaxRXChannelRate, |
| ULONG * pDataServiceCapability, |
| ULONG * pSimCapability, |
| ULONG * pRadioIfacesSize, |
| BYTE * pRadioIfaces) { |
| CallWrapper cw(this, "GetDeviceCapabilities"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::GetDeviceCapabilities( |
| pMaxTXChannelRate, |
| pMaxRXChannelRate, |
| pDataServiceCapability, |
| pSimCapability, |
| pRadioIfacesSize, |
| pRadioIfaces)); |
| } |
| |
| ULONG Sdk::GetManufacturer( |
| BYTE stringSize, |
| CHAR * pString) { |
| CallWrapper cw(this, "GetManufacturer"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::GetManufacturer( |
| stringSize, |
| pString)); |
| } |
| |
| ULONG Sdk::GetModelID( |
| BYTE stringSize, |
| CHAR * pString) { |
| CallWrapper cw(this, "GetModelID"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::GetModelID( |
| stringSize, |
| pString)); |
| } |
| |
| ULONG Sdk::GetFirmwareRevision( |
| BYTE stringSize, |
| CHAR * pString) { |
| CallWrapper cw(this, "GetFirmwareRevision"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::GetFirmwareRevision( |
| stringSize, |
| pString)); |
| } |
| |
| ULONG Sdk::GetFirmwareRevisions( |
| BYTE amssSize, |
| CHAR * pAMSSString, |
| BYTE bootSize, |
| CHAR * pBootString, |
| BYTE priSize, |
| CHAR * pPRIString) { |
| CallWrapper cw(this, "GetFirmwareRevisions"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::GetFirmwareRevisions( |
| amssSize, |
| pAMSSString, |
| bootSize, |
| pBootString, |
| priSize, |
| pPRIString)); |
| } |
| |
| ULONG Sdk::GetFirmwareInfo( |
| ULONG * pFirmwareID, |
| ULONG * pTechnology, |
| ULONG * pCarrier, |
| ULONG * pRegion, |
| ULONG * pGPSCapability) { |
| CallWrapper cw(this, "GetFirmwareInfo"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::GetFirmwareInfo( |
| pFirmwareID, |
| pTechnology, |
| pCarrier, |
| pRegion, |
| pGPSCapability)); |
| } |
| |
| ULONG Sdk::GetVoiceNumber( |
| BYTE voiceNumberSize, |
| CHAR * pVoiceNumber, |
| BYTE minSize, |
| CHAR * pMIN) { |
| CallWrapper cw(this, "GetVoiceNumber"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::GetVoiceNumber( |
| voiceNumberSize, |
| pVoiceNumber, |
| minSize, |
| pMIN)); |
| } |
| |
| ULONG Sdk::GetIMSI( |
| BYTE stringSize, |
| CHAR * pString) { |
| CallWrapper cw(this, "GetIMSI"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::GetIMSI( |
| stringSize, |
| pString)); |
| } |
| |
| ULONG Sdk::GetSerialNumbers( |
| BYTE esnSize, |
| CHAR * pESNString, |
| BYTE imeiSize, |
| CHAR * pIMEIString, |
| BYTE meidSize, |
| CHAR * pMEIDString) { |
| CallWrapper cw(this, "GetSerialNumbers"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::GetSerialNumbers( |
| esnSize, |
| pESNString, |
| imeiSize, |
| pIMEIString, |
| meidSize, |
| pMEIDString)); |
| } |
| |
| ULONG Sdk::SetLock( |
| ULONG state, |
| CHAR * pCurrentPIN) { |
| CallWrapper cw(this, "SetLock"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::SetLock( |
| state, |
| pCurrentPIN)); |
| } |
| |
| ULONG Sdk::QueryLock(ULONG * pState) { |
| CallWrapper cw(this, "QueryLock"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::QueryLock(pState)); |
| } |
| |
| ULONG Sdk::ChangeLockPIN( |
| CHAR * pCurrentPIN, |
| CHAR * pDesiredPIN) { |
| CallWrapper cw(this, "ChangeLockPIN"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::ChangeLockPIN( |
| pCurrentPIN, |
| pDesiredPIN)); |
| } |
| |
| ULONG Sdk::GetHardwareRevision( |
| BYTE stringSize, |
| CHAR * pString) { |
| CallWrapper cw(this, "GetHardwareRevision"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::GetHardwareRevision( |
| stringSize, |
| pString)); |
| } |
| |
| ULONG Sdk::GetPRLVersion(WORD * pPRLVersion) { |
| CallWrapper cw(this, "GetPRLVersion"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::GetPRLVersion(pPRLVersion)); |
| } |
| |
| ULONG Sdk::GetERIFile( |
| ULONG * pFileSize, |
| BYTE * pFile) { |
| CallWrapper cw(this, "GetERIFile"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::GetERIFile( |
| pFileSize, |
| pFile)); |
| } |
| |
| ULONG Sdk::ActivateAutomatic(const CHAR * pActivationCode) { |
| CharStarCopier mutableActivationCode(pActivationCode); |
| CallWrapper cw(this, "ActivateAutomatic"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::ActivateAutomatic(mutableActivationCode.get())); |
| } |
| |
| ULONG Sdk::ActivateManual( |
| const CHAR * pSPC, |
| WORD sid, |
| const CHAR * pMDN, |
| const CHAR * pMIN, |
| ULONG prlSize, |
| BYTE * pPRL, |
| const CHAR * pMNHA, |
| const CHAR * pMNAAA) { |
| CharStarCopier mutableSPC(pSPC); |
| CharStarCopier mutableMDN(pMDN); |
| CharStarCopier mutableMIN(pMIN); |
| CharStarCopier mutableMNHA(pMNHA); |
| CharStarCopier mutableMNAAA(pMNAAA); |
| |
| CallWrapper cw(this, "ActivateManual"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::ActivateManual( |
| mutableSPC.get(), |
| sid, |
| mutableMDN.get(), |
| mutableMIN.get(), |
| prlSize, |
| pPRL, |
| mutableMNHA.get(), |
| mutableMNAAA.get())); |
| } |
| |
| ULONG Sdk::ResetToFactoryDefaults(CHAR * pSPC) { |
| CallWrapper cw(this, "ResetToFactoryDefaults"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::ResetToFactoryDefaults(pSPC)); |
| } |
| |
| ULONG Sdk::GetActivationState(ULONG * pActivationState) { |
| CallWrapper cw(this, "GetActivationState"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::GetActivationState(pActivationState)); |
| } |
| |
| ULONG Sdk::SetPower(ULONG powerMode) { |
| CallWrapper cw(this, "SetPower"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::SetPower(powerMode)); |
| } |
| |
| ULONG Sdk::GetPower(ULONG * pPowerMode) { |
| CallWrapper cw(this, "GetPower"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::GetPower(pPowerMode)); |
| } |
| |
| ULONG Sdk::GetOfflineReason( |
| ULONG * pReasonMask, |
| ULONG * pbPlatform) { |
| CallWrapper cw(this, "GetOfflineReason"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::GetOfflineReason( |
| pReasonMask, |
| pbPlatform)); |
| } |
| |
| ULONG Sdk::GetNetworkTime( |
| ULONGLONG * pTimeCount, |
| ULONG * pTimeSource) { |
| CallWrapper cw(this, "GetNetworkTime"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::GetNetworkTime( |
| pTimeCount, |
| pTimeSource)); |
| } |
| |
| ULONG Sdk::ValidateSPC(CHAR * pSPC) { |
| CallWrapper cw(this, "ValidateSPC"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::ValidateSPC(pSPC)); |
| } |
| |
| ULONG Sdk::DeleteSMS( |
| ULONG storageType, |
| ULONG * pMessageIndex, |
| ULONG * pMessageTag) { |
| CallWrapper cw(this, "DeleteSMS"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::DeleteSMS( |
| storageType, |
| pMessageIndex, |
| pMessageTag)); |
| } |
| |
| ULONG Sdk::GetSMSList( |
| ULONG storageType, |
| ULONG * pRequestedTag, |
| ULONG * pMessageListSize, |
| BYTE * pMessageList) { |
| CallWrapper cw(this, "GetSMSList"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::GetSMSList( |
| storageType, |
| pRequestedTag, |
| pMessageListSize, |
| pMessageList)); |
| } |
| |
| ULONG Sdk::GetSMS( |
| ULONG storageType, |
| ULONG messageIndex, |
| ULONG * pMessageTag, |
| ULONG * pMessageFormat, |
| ULONG * pMessageSize, |
| BYTE * pMessage) { |
| CallWrapper cw(this, "GetSMS"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::GetSMS( |
| storageType, |
| messageIndex, |
| pMessageTag, |
| pMessageFormat, |
| pMessageSize, |
| pMessage)); |
| } |
| |
| ULONG Sdk::ModifySMSStatus( |
| ULONG storageType, |
| ULONG messageIndex, |
| ULONG messageTag) { |
| CallWrapper cw(this, "ModifySMSStatus"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::ModifySMSStatus( |
| storageType, |
| messageIndex, |
| messageTag)); |
| } |
| |
| ULONG Sdk::SaveSMS( |
| ULONG storageType, |
| ULONG messageFormat, |
| ULONG messageSize, |
| BYTE * pMessage, |
| ULONG * pMessageIndex) { |
| CallWrapper cw(this, "SaveSMS"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::SaveSMS( |
| storageType, |
| messageFormat, |
| messageSize, |
| pMessage, |
| pMessageIndex)); |
| } |
| |
| ULONG Sdk::SendSMS( |
| ULONG messageFormat, |
| ULONG messageSize, |
| BYTE * pMessage, |
| ULONG * pMessageFailureCode) { |
| CallWrapper cw(this, "SendSMS"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::SendSMS( |
| messageFormat, |
| messageSize, |
| pMessage, |
| pMessageFailureCode)); |
| } |
| |
| ULONG Sdk::GetSMSCAddress( |
| BYTE addressSize, |
| CHAR * pSMSCAddress, |
| BYTE typeSize, |
| CHAR * pSMSCType) { |
| CallWrapper cw(this, "GetSMSCAddress"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::GetSMSCAddress( |
| addressSize, |
| pSMSCAddress, |
| typeSize, |
| pSMSCType)); |
| } |
| |
| ULONG Sdk::SetSMSCAddress( |
| CHAR * pSMSCAddress, |
| CHAR * pSMSCType) { |
| CallWrapper cw(this, "SetSMSCAddress"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::SetSMSCAddress( |
| pSMSCAddress, |
| pSMSCType)); |
| } |
| |
| ULONG Sdk::UIMSetPINProtection( |
| ULONG id, |
| ULONG bEnable, |
| CHAR * pValue, |
| ULONG * pVerifyRetriesLeft, |
| ULONG * pUnblockRetriesLeft) { |
| CallWrapper cw(this, "UIMSetPINProtection"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::UIMSetPINProtection( |
| id, |
| bEnable, |
| pValue, |
| pVerifyRetriesLeft, |
| pUnblockRetriesLeft)); |
| } |
| |
| ULONG Sdk::UIMVerifyPIN( |
| ULONG id, |
| CHAR * pValue, |
| ULONG * pVerifyRetriesLeft, |
| ULONG * pUnblockRetriesLeft) { |
| CallWrapper cw(this, "UIMVerifyPIN"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::UIMVerifyPIN( |
| id, |
| pValue, |
| pVerifyRetriesLeft, |
| pUnblockRetriesLeft)); |
| } |
| |
| ULONG Sdk::UIMUnblockPIN( |
| ULONG id, |
| CHAR * pPUKValue, |
| CHAR * pNewValue, |
| ULONG * pVerifyRetriesLeft, |
| ULONG * pUnblockRetriesLeft) { |
| CallWrapper cw(this, "UIMUnblockPIN"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::UIMUnblockPIN( |
| id, |
| pPUKValue, |
| pNewValue, |
| pVerifyRetriesLeft, |
| pUnblockRetriesLeft)); |
| } |
| |
| ULONG Sdk::UIMChangePIN( |
| ULONG id, |
| CHAR * pOldValue, |
| CHAR * pNewValue, |
| ULONG * pVerifyRetriesLeft, |
| ULONG * pUnblockRetriesLeft) { |
| CallWrapper cw(this, "UIMChangePIN"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::UIMChangePIN( |
| id, |
| pOldValue, |
| pNewValue, |
| pVerifyRetriesLeft, |
| pUnblockRetriesLeft)); |
| } |
| |
| ULONG Sdk::UIMGetPINStatus( |
| ULONG id, |
| ULONG * pStatus, |
| ULONG * pVerifyRetriesLeft, |
| ULONG * pUnblockRetriesLeft) { |
| CallWrapper cw(this, "UIMGetPINStatus"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::UIMGetPINStatus( |
| id, |
| pStatus, |
| pVerifyRetriesLeft, |
| pUnblockRetriesLeft)); |
| } |
| |
| ULONG Sdk::UIMGetICCID( |
| BYTE stringSize, |
| CHAR * pString) { |
| CallWrapper cw(this, "UIMGetICCID"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::UIMGetICCID( |
| stringSize, |
| pString)); |
| } |
| ULONG Sdk::UIMGetControlKeyStatus( |
| ULONG id, |
| ULONG * pStatus, |
| ULONG * pVerifyRetriesLeft, |
| ULONG * pUnblockRetriesLeft) { |
| CallWrapper cw(this, "UIMGetControlKeyStatus"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::UIMGetControlKeyStatus( |
| id, |
| pStatus, |
| pVerifyRetriesLeft, |
| pUnblockRetriesLeft)); |
| } |
| |
| ULONG Sdk::UIMSetControlKeyProtection( |
| ULONG id, |
| ULONG status, |
| CHAR * pValue, |
| ULONG * pVerifyRetriesLeft) { |
| CallWrapper cw(this, "UIMSetControlKeyProtection"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::UIMSetControlKeyProtection( |
| id, |
| status, |
| pValue, |
| pVerifyRetriesLeft)); |
| } |
| |
| ULONG Sdk::UIMUnblockControlKey( |
| ULONG id, |
| CHAR * pValue, |
| ULONG * pUnblockRetriesLeft) { |
| CallWrapper cw(this, "UIMUnblockControlKey"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::UIMUnblockControlKey( |
| id, |
| pValue, |
| pUnblockRetriesLeft)); |
| } |
| |
| ULONG Sdk::GetPDSState( |
| ULONG * pEnabled, |
| ULONG * pTracking) { |
| CallWrapper cw(this, "GetPDSState"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::GetPDSState( |
| pEnabled, |
| pTracking)); |
| } |
| |
| ULONG Sdk::SetPDSState(ULONG enable) { |
| CallWrapper cw(this, "SetPDSState"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::SetPDSState(enable)); |
| } |
| |
| ULONG Sdk::PDSInjectTimeReference( |
| ULONGLONG systemTime, |
| USHORT systemDiscontinuities) { |
| CallWrapper cw(this, "PDSInjectTimeReference"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::PDSInjectTimeReference( |
| systemTime, |
| systemDiscontinuities)); |
| } |
| |
| ULONG Sdk::GetPDSDefaults( |
| ULONG * pOperation, |
| BYTE * pTimeout, |
| ULONG * pInterval, |
| ULONG * pAccuracy) { |
| CallWrapper cw(this, "GetPDSDefaults"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::GetPDSDefaults( |
| pOperation, |
| pTimeout, |
| pInterval, |
| pAccuracy)); |
| } |
| |
| ULONG Sdk::SetPDSDefaults( |
| ULONG operation, |
| BYTE timeout, |
| ULONG interval, |
| ULONG accuracy) { |
| CallWrapper cw(this, "SetPDSDefaults"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::SetPDSDefaults( |
| operation, |
| timeout, |
| interval, |
| accuracy)); |
| } |
| |
| ULONG Sdk::GetXTRAAutomaticDownload( |
| ULONG * pbEnabled, |
| USHORT * pInterval) { |
| CallWrapper cw(this, "GetXTRAAutomaticDownload"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::GetXTRAAutomaticDownload( |
| pbEnabled, |
| pInterval)); |
| } |
| |
| ULONG Sdk::SetXTRAAutomaticDownload( |
| ULONG bEnabled, |
| USHORT interval) { |
| CallWrapper cw(this, "SetXTRAAutomaticDownload"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::SetXTRAAutomaticDownload( |
| bEnabled, |
| interval)); |
| } |
| |
| ULONG Sdk::GetXTRANetwork(ULONG * pPreference) { |
| CallWrapper cw(this, "GetXTRANetwork"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::GetXTRANetwork(pPreference)); |
| } |
| |
| ULONG Sdk::SetXTRANetwork(ULONG preference) { |
| CallWrapper cw(this, "SetXTRANetwork"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::SetXTRANetwork(preference)); |
| } |
| |
| ULONG Sdk::GetXTRAValidity( |
| USHORT * pGPSWeek, |
| USHORT * pGPSWeekOffset, |
| USHORT * pDuration) { |
| CallWrapper cw(this, "GetXTRAValidity"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::GetXTRAValidity( |
| pGPSWeek, |
| pGPSWeekOffset, |
| pDuration)); |
| } |
| |
| ULONG Sdk::ForceXTRADownload() { |
| CallWrapper cw(this, "ForceXTRADownload"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::ForceXTRADownload()); |
| } |
| |
| ULONG Sdk::GetAGPSConfig( |
| ULONG * pServerAddress, |
| ULONG * pServerPort) { |
| CallWrapper cw(this, "GetAGPSConfig"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::GetAGPSConfig( |
| pServerAddress, |
| pServerPort)); |
| } |
| |
| ULONG Sdk::SetAGPSConfig( |
| ULONG serverAddress, |
| ULONG serverPort) { |
| CallWrapper cw(this, "SetAGPSConfig"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::SetAGPSConfig( |
| serverAddress, |
| serverPort)); |
| } |
| |
| ULONG Sdk::GetServiceAutomaticTracking(ULONG * pbAuto) { |
| CallWrapper cw(this, "GetServiceAutomaticTracking"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::GetServiceAutomaticTracking(pbAuto)); |
| } |
| |
| ULONG Sdk::SetServiceAutomaticTracking(ULONG bAuto) { |
| CallWrapper cw(this, "SetServiceAutomaticTracking"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::SetServiceAutomaticTracking(bAuto)); |
| } |
| |
| ULONG Sdk::GetPortAutomaticTracking(ULONG * pbAuto) { |
| CallWrapper cw(this, "GetPortAutomaticTracking"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::GetPortAutomaticTracking(pbAuto)); |
| } |
| |
| ULONG Sdk::SetPortAutomaticTracking(ULONG bAuto) { |
| CallWrapper cw(this, "SetPortAutomaticTracking"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::SetPortAutomaticTracking(bAuto)); |
| } |
| |
| ULONG Sdk::ResetPDSData( |
| ULONG * pGPSDataMask, |
| ULONG * pCellDataMask) { |
| CallWrapper cw(this, "ResetPDSData"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::ResetPDSData( |
| pGPSDataMask, |
| pCellDataMask)); |
| } |
| |
| ULONG Sdk::CATSendTerminalResponse( |
| ULONG refID, |
| ULONG dataLen, |
| BYTE * pData) { |
| CallWrapper cw(this, "CATSendTerminalResponse"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::CATSendTerminalResponse( |
| refID, |
| dataLen, |
| pData)); |
| } |
| |
| ULONG Sdk::CATSendEnvelopeCommand( |
| ULONG cmdID, |
| ULONG dataLen, |
| BYTE * pData) { |
| CallWrapper cw(this, "CATSendEnvelopeCommand"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::CATSendEnvelopeCommand( |
| cmdID, |
| dataLen, |
| pData)); |
| } |
| |
| ULONG Sdk::GetSMSWake( |
| ULONG * pbEnabled, |
| ULONG * pWakeMask) { |
| CallWrapper cw(this, "GetSMSWake"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::GetSMSWake( |
| pbEnabled, |
| pWakeMask)); |
| } |
| |
| ULONG Sdk::SetSMSWake( |
| ULONG bEnable, |
| ULONG wakeMask) { |
| CallWrapper cw(this, "SetSMSWake"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::SetSMSWake( |
| bEnable, |
| wakeMask)); |
| } |
| |
| ULONG Sdk::OMADMStartSession(ULONG sessionType) { |
| CallWrapper cw(this, "OMADMStartSession"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::OMADMStartSession(sessionType)); |
| } |
| |
| ULONG Sdk::OMADMCancelSession() { |
| CallWrapper cw(this, "OMADMCancelSession"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::OMADMCancelSession()); |
| } |
| |
| ULONG Sdk::OMADMGetSessionInfo( |
| ULONG * pSessionState, |
| ULONG * pSessionType, |
| ULONG * pFailureReason, |
| BYTE * pRetryCount, |
| WORD * pSessionPause, |
| WORD * pTimeRemaining) { |
| CallWrapper cw(this, "OMADMGetSessionInfo"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::OMADMGetSessionInfo( |
| pSessionState, |
| pSessionType, |
| pFailureReason, |
| pRetryCount, |
| pSessionPause, |
| pTimeRemaining)); |
| } |
| |
| ULONG Sdk::OMADMGetPendingNIA( |
| ULONG * pSessionType, |
| USHORT * pSessionID) { |
| CallWrapper cw(this, "OMADMGetPendingNIA"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::OMADMGetPendingNIA( |
| pSessionType, |
| pSessionID)); |
| } |
| |
| ULONG Sdk::OMADMSendSelection( |
| ULONG selection, |
| USHORT sessionID) { |
| CallWrapper cw(this, "OMADMSendSelection"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::OMADMSendSelection( |
| selection, |
| sessionID)); |
| } |
| |
| ULONG Sdk::OMADMGetFeatureSettings( |
| ULONG * pbProvisioning, |
| ULONG * pbPRLUpdate) { |
| CallWrapper cw(this, "OMADMGetFeatureSettings"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::OMADMGetFeatureSettings( |
| pbProvisioning, |
| pbPRLUpdate)); |
| } |
| |
| ULONG Sdk::OMADMSetProvisioningFeature( |
| ULONG bProvisioning) { |
| CallWrapper cw(this, "OMADMSetProvisioningFeature"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::OMADMSetProvisioningFeature( |
| bProvisioning)); |
| } |
| |
| ULONG Sdk::OMADMSetPRLUpdateFeature( |
| ULONG bPRLUpdate) { |
| CallWrapper cw(this, "OMADMSetPRLUpdateFeature"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::OMADMSetPRLUpdateFeature( |
| bPRLUpdate)); |
| } |
| |
| ULONG Sdk::UpgradeFirmware(CHAR * pDestinationPath) { |
| CallWrapper cw(this, "UpgradeFirmware"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::UpgradeFirmware(pDestinationPath)); |
| } |
| |
| ULONG Sdk::GetImageInfo( |
| CHAR * pPath, |
| ULONG * pFirmwareID, |
| ULONG * pTechnology, |
| ULONG * pCarrier, |
| ULONG * pRegion, |
| ULONG * pGPSCapability) { |
| CallWrapper cw(this, "GetImageInfo"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::GetImageInfo( |
| pPath, |
| pFirmwareID, |
| pTechnology, |
| pCarrier, |
| pRegion, |
| pGPSCapability)); |
| } |
| |
| ULONG Sdk::GetImageStore( |
| WORD pathSize, |
| CHAR * pImageStorePath) { |
| CallWrapper cw(this, "GetImageStore"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::GetImageStore( |
| pathSize, |
| pImageStorePath)); |
| } |
| |
| ULONG Sdk::SetSessionStateCallback(tFNSessionState pCallback) { |
| CallWrapper cw(this, "SetSessionStateCallback"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::SetSessionStateCallback(pCallback)); |
| } |
| |
| ULONG Sdk::SetByteTotalsCallback( |
| tFNByteTotals pCallback, |
| BYTE interval) { |
| CallWrapper cw(this, "SetByteTotalsCallback"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::SetByteTotalsCallback( |
| pCallback, |
| interval)); |
| } |
| |
| ULONG Sdk::SetDataCapabilitiesCallback( |
| tFNDataCapabilities pCallback) { |
| CallWrapper cw(this, "SetDataCapabilitiesCallback"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::SetDataCapabilitiesCallback( |
| pCallback)); |
| } |
| |
| ULONG Sdk::SetDataBearerCallback(tFNDataBearer pCallback) { |
| CallWrapper cw(this, "SetDataBearerCallback"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::SetDataBearerCallback(pCallback)); |
| } |
| |
| ULONG Sdk::SetDormancyStatusCallback( |
| tFNDormancyStatus pCallback) { |
| CallWrapper cw(this, "SetDormancyStatusCallback"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::SetDormancyStatusCallback( |
| pCallback)); |
| } |
| |
| ULONG Sdk::SetMobileIPStatusCallback( |
| tFNMobileIPStatus pCallback) { |
| CallWrapper cw(this, "SetMobileIPStatusCallback"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::SetMobileIPStatusCallback( |
| pCallback)); |
| } |
| |
| ULONG Sdk::SetActivationStatusCallback( |
| tFNActivationStatus pCallback) { |
| CallWrapper cw(this, "SetActivationStatusCallback"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::SetActivationStatusCallback( |
| pCallback)); |
| } |
| |
| ULONG Sdk::SetPowerCallback(tFNPower pCallback) { |
| CallWrapper cw(this, "SetPowerCallback"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::SetPowerCallback(pCallback)); |
| } |
| ULONG Sdk::SetRoamingIndicatorCallback( |
| tFNRoamingIndicator pCallback) { |
| CallWrapper cw(this, "SetRoamingIndicatorCallback"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::SetRoamingIndicatorCallback( |
| pCallback)); |
| } |
| |
| ULONG Sdk::SetSignalStrengthCallback( |
| tFNSignalStrength pCallback, |
| BYTE thresholdsSize, |
| INT8 * pThresholds) { |
| CallWrapper cw(this, "SetSignalStrengthCallback"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::SetSignalStrengthCallback( |
| pCallback, |
| thresholdsSize, |
| pThresholds)); |
| } |
| |
| ULONG Sdk::SetRFInfoCallback(tFNRFInfo pCallback) { |
| CallWrapper cw(this, "SetRFInfoCallback"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::SetRFInfoCallback(pCallback)); |
| } |
| |
| ULONG Sdk::SetLURejectCallback(tFNLUReject pCallback) { |
| CallWrapper cw(this, "SetLURejectCallback"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::SetLURejectCallback(pCallback)); |
| } |
| |
| ULONG Sdk::SetNewSMSCallback(tFNNewSMS pCallback) { |
| CallWrapper cw(this, "SetNewSMSCallback"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::SetNewSMSCallback(pCallback)); |
| } |
| |
| ULONG Sdk::SetNMEACallback(tFNNewNMEA pCallback) { |
| CallWrapper cw(this, "SetNMEACallback"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::SetNMEACallback(pCallback)); |
| } |
| |
| ULONG Sdk::SetPDSStateCallback(tFNPDSState pCallback) { |
| CallWrapper cw(this, "SetPDSStateCallback"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::SetPDSStateCallback(pCallback)); |
| } |
| |
| ULONG Sdk::SetCATEventCallback( |
| tFNCATEvent pCallback, |
| ULONG eventMask, |
| ULONG * pErrorMask) { |
| CallWrapper cw(this, "SetCATEventCallback"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::SetCATEventCallback( |
| pCallback, |
| eventMask, |
| pErrorMask)); |
| } |
| |
| ULONG Sdk::SetOMADMAlertCallback(tFNOMADMAlert pCallback) { |
| CallWrapper cw(this, "SetOMADMAlertCallback"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::SetOMADMAlertCallback(pCallback)); |
| } |
| |
| ULONG Sdk::SetOMADMStateCallback(tFNOMADMState pCallback) { |
| CallWrapper cw(this, "SetOMADMStateCallback"); |
| RETURN_IF_CALL_WRAPPER_LOCKED(cw); |
| return cw.CheckReturn(::SetOMADMStateCallback(pCallback)); |
| } |
| |
| } // namespace gobi |