From 7aafead299a6212dbede906c96a59cc8ddbcdb2d Mon Sep 17 00:00:00 2001 From: Dan Williams Date: Tue, 5 Aug 2014 11:12:04 -0500 Subject: gobi-api: add CodeAurora GobiAPI_2013-07-31-1347 sources Makes for easier grepping. --- gobi-api/GobiAPI_2013-07-31-1347/Core/Comm.cpp | 646 + gobi-api/GobiAPI_2013-07-31-1347/Core/Comm.h | 138 + gobi-api/GobiAPI_2013-07-31-1347/Core/Connection.h | 148 + gobi-api/GobiAPI_2013-07-31-1347/Core/Event.cpp | 436 + gobi-api/GobiAPI_2013-07-31-1347/Core/Event.h | 116 + .../Core/ProtocolBuffer.cpp | 221 + .../GobiAPI_2013-07-31-1347/Core/ProtocolBuffer.h | 161 + .../GobiAPI_2013-07-31-1347/Core/ProtocolEnum.h | 398 + .../GobiAPI_2013-07-31-1347/Core/ProtocolLog.cpp | 189 + .../GobiAPI_2013-07-31-1347/Core/ProtocolLog.h | 90 + .../Core/ProtocolNotification.cpp | 170 + .../Core/ProtocolNotification.h | 236 + .../Core/ProtocolRequest.cpp | 253 + .../GobiAPI_2013-07-31-1347/Core/ProtocolRequest.h | 192 + .../Core/ProtocolServer.cpp | 1749 + .../GobiAPI_2013-07-31-1347/Core/ProtocolServer.h | 362 + .../GobiAPI_2013-07-31-1347/Core/QMIBuffers.cpp | 365 + gobi-api/GobiAPI_2013-07-31-1347/Core/QMIBuffers.h | 390 + gobi-api/GobiAPI_2013-07-31-1347/Core/QMIEnum.h | 2350 ++ .../Core/QMIProtocolServer.cpp | 434 + .../Core/QMIProtocolServer.h | 115 + .../GobiAPI_2013-07-31-1347/Core/SharedBuffer.cpp | 374 + .../GobiAPI_2013-07-31-1347/Core/SharedBuffer.h | 165 + gobi-api/GobiAPI_2013-07-31-1347/Core/Socket.cpp | 836 + gobi-api/GobiAPI_2013-07-31-1347/Core/Socket.h | 163 + gobi-api/GobiAPI_2013-07-31-1347/Core/StdAfx.h | 199 + gobi-api/GobiAPI_2013-07-31-1347/Core/SyncQueue.h | 418 + .../Gobi3000Translation/Gobi3000Translation.cpp | 100 + .../Gobi3000Translation/Gobi3000Translation.h | 1027 + .../Gobi3000Translation/Gobi3000TranslationCAT.cpp | 176 + .../Gobi3000Translation/Gobi3000TranslationDMS.cpp | 1482 + .../Gobi3000Translation/Gobi3000TranslationNAS.cpp | 2021 ++ .../Gobi3000Translation/Gobi3000TranslationOMA.cpp | 480 + .../Gobi3000Translation/Gobi3000TranslationPDS.cpp | 1206 + .../Gobi3000Translation/Gobi3000TranslationRMS.cpp | 187 + .../Gobi3000Translation/Gobi3000TranslationUIM.cpp | 1169 + .../Gobi3000TranslationVoice.cpp | 173 + .../Gobi3000Translation/Gobi3000TranslationWDS.cpp | 3485 ++ .../Gobi3000Translation/Gobi3000TranslationWMS.cpp | 1120 + .../GobiConnectionMgmt/GobiConnectionMgmt.cpp | 605 + .../GobiConnectionMgmt/GobiConnectionMgmt.h | 269 + .../GobiConnectionMgmt/GobiConnectionMgmtAPI.h | 18734 +++++++++++ .../GobiConnectionMgmtAPIEnums.h | 7083 ++++ .../GobiConnectionMgmtAPIStructs.h | 33556 +++++++++++++++++++ .../GobiConnectionMgmtExports.cpp | 25838 ++++++++++++++ .../GobiSampleCM/GobiCMCallback.cpp | 308 + .../GobiSampleCM/GobiCMCallback.h | 82 + .../GobiSampleCM/GobiCMDLL.cpp | 1238 + .../GobiSampleCM/GobiCMDLL.h | 265 + .../GobiSampleCM/QTSampleCM.cpp | 315 + .../GobiSampleCM/QTSampleCM.h | 458 + .../GobiSampleCM/SampleCM.cpp | 1734 + .../GobiSampleCM/SampleCM.h | 397 + .../android/assets/qml/GobiSampleCM/Connect.png | Bin 0 -> 5581 bytes .../android/assets/qml/GobiSampleCM/Info.png | Bin 0 -> 5300 bytes .../android/assets/qml/GobiSampleCM/main.qml | 822 + .../GobiSampleCM/android/res/drawable/icon.png | Bin 0 -> 7361 bytes .../GobiSampleCM/android/res/drawable/logo.png | Bin 0 -> 427576 bytes .../GobiAPI_2013-07-31-1347/GobiSampleCM/main.cpp | 44 + .../GobiSampleCM/qml/GobiSampleCM/Connect.png | Bin 0 -> 5581 bytes .../GobiSampleCM/qml/GobiSampleCM/Info.png | Bin 0 -> 5300 bytes .../GobiSampleCM/qml/GobiSampleCM/main.qml | 822 + gobi-api/GobiAPI_2013-07-31-1347/Readme.txt | 177 + .../GobiAPI_2013-07-31-1347/Shared/GobiError.h | 136 + .../GobiAPI_2013-07-31-1347/Shared/GobiQMICore.cpp | 533 + .../GobiAPI_2013-07-31-1347/Shared/GobiQMICore.h | 191 + 66 files changed, 117547 insertions(+) create mode 100644 gobi-api/GobiAPI_2013-07-31-1347/Core/Comm.cpp create mode 100644 gobi-api/GobiAPI_2013-07-31-1347/Core/Comm.h create mode 100644 gobi-api/GobiAPI_2013-07-31-1347/Core/Connection.h create mode 100644 gobi-api/GobiAPI_2013-07-31-1347/Core/Event.cpp create mode 100644 gobi-api/GobiAPI_2013-07-31-1347/Core/Event.h create mode 100644 gobi-api/GobiAPI_2013-07-31-1347/Core/ProtocolBuffer.cpp create mode 100644 gobi-api/GobiAPI_2013-07-31-1347/Core/ProtocolBuffer.h create mode 100644 gobi-api/GobiAPI_2013-07-31-1347/Core/ProtocolEnum.h create mode 100644 gobi-api/GobiAPI_2013-07-31-1347/Core/ProtocolLog.cpp create mode 100644 gobi-api/GobiAPI_2013-07-31-1347/Core/ProtocolLog.h create mode 100644 gobi-api/GobiAPI_2013-07-31-1347/Core/ProtocolNotification.cpp create mode 100644 gobi-api/GobiAPI_2013-07-31-1347/Core/ProtocolNotification.h create mode 100644 gobi-api/GobiAPI_2013-07-31-1347/Core/ProtocolRequest.cpp create mode 100644 gobi-api/GobiAPI_2013-07-31-1347/Core/ProtocolRequest.h create mode 100644 gobi-api/GobiAPI_2013-07-31-1347/Core/ProtocolServer.cpp create mode 100644 gobi-api/GobiAPI_2013-07-31-1347/Core/ProtocolServer.h create mode 100644 gobi-api/GobiAPI_2013-07-31-1347/Core/QMIBuffers.cpp create mode 100644 gobi-api/GobiAPI_2013-07-31-1347/Core/QMIBuffers.h create mode 100644 gobi-api/GobiAPI_2013-07-31-1347/Core/QMIEnum.h create mode 100644 gobi-api/GobiAPI_2013-07-31-1347/Core/QMIProtocolServer.cpp create mode 100644 gobi-api/GobiAPI_2013-07-31-1347/Core/QMIProtocolServer.h create mode 100644 gobi-api/GobiAPI_2013-07-31-1347/Core/SharedBuffer.cpp create mode 100644 gobi-api/GobiAPI_2013-07-31-1347/Core/SharedBuffer.h create mode 100644 gobi-api/GobiAPI_2013-07-31-1347/Core/Socket.cpp create mode 100644 gobi-api/GobiAPI_2013-07-31-1347/Core/Socket.h create mode 100644 gobi-api/GobiAPI_2013-07-31-1347/Core/StdAfx.h create mode 100644 gobi-api/GobiAPI_2013-07-31-1347/Core/SyncQueue.h create mode 100644 gobi-api/GobiAPI_2013-07-31-1347/Gobi3000Translation/Gobi3000Translation.cpp create mode 100644 gobi-api/GobiAPI_2013-07-31-1347/Gobi3000Translation/Gobi3000Translation.h create mode 100644 gobi-api/GobiAPI_2013-07-31-1347/Gobi3000Translation/Gobi3000TranslationCAT.cpp create mode 100644 gobi-api/GobiAPI_2013-07-31-1347/Gobi3000Translation/Gobi3000TranslationDMS.cpp create mode 100644 gobi-api/GobiAPI_2013-07-31-1347/Gobi3000Translation/Gobi3000TranslationNAS.cpp create mode 100644 gobi-api/GobiAPI_2013-07-31-1347/Gobi3000Translation/Gobi3000TranslationOMA.cpp create mode 100644 gobi-api/GobiAPI_2013-07-31-1347/Gobi3000Translation/Gobi3000TranslationPDS.cpp create mode 100644 gobi-api/GobiAPI_2013-07-31-1347/Gobi3000Translation/Gobi3000TranslationRMS.cpp create mode 100644 gobi-api/GobiAPI_2013-07-31-1347/Gobi3000Translation/Gobi3000TranslationUIM.cpp create mode 100644 gobi-api/GobiAPI_2013-07-31-1347/Gobi3000Translation/Gobi3000TranslationVoice.cpp create mode 100644 gobi-api/GobiAPI_2013-07-31-1347/Gobi3000Translation/Gobi3000TranslationWDS.cpp create mode 100644 gobi-api/GobiAPI_2013-07-31-1347/Gobi3000Translation/Gobi3000TranslationWMS.cpp create mode 100644 gobi-api/GobiAPI_2013-07-31-1347/GobiConnectionMgmt/GobiConnectionMgmt.cpp create mode 100644 gobi-api/GobiAPI_2013-07-31-1347/GobiConnectionMgmt/GobiConnectionMgmt.h create mode 100644 gobi-api/GobiAPI_2013-07-31-1347/GobiConnectionMgmt/GobiConnectionMgmtAPI.h create mode 100644 gobi-api/GobiAPI_2013-07-31-1347/GobiConnectionMgmt/GobiConnectionMgmtAPIEnums.h create mode 100644 gobi-api/GobiAPI_2013-07-31-1347/GobiConnectionMgmt/GobiConnectionMgmtAPIStructs.h create mode 100644 gobi-api/GobiAPI_2013-07-31-1347/GobiConnectionMgmt/GobiConnectionMgmtExports.cpp create mode 100644 gobi-api/GobiAPI_2013-07-31-1347/GobiSampleCM/GobiCMCallback.cpp create mode 100644 gobi-api/GobiAPI_2013-07-31-1347/GobiSampleCM/GobiCMCallback.h create mode 100644 gobi-api/GobiAPI_2013-07-31-1347/GobiSampleCM/GobiCMDLL.cpp create mode 100644 gobi-api/GobiAPI_2013-07-31-1347/GobiSampleCM/GobiCMDLL.h create mode 100644 gobi-api/GobiAPI_2013-07-31-1347/GobiSampleCM/QTSampleCM.cpp create mode 100644 gobi-api/GobiAPI_2013-07-31-1347/GobiSampleCM/QTSampleCM.h create mode 100644 gobi-api/GobiAPI_2013-07-31-1347/GobiSampleCM/SampleCM.cpp create mode 100644 gobi-api/GobiAPI_2013-07-31-1347/GobiSampleCM/SampleCM.h create mode 100644 gobi-api/GobiAPI_2013-07-31-1347/GobiSampleCM/android/assets/qml/GobiSampleCM/Connect.png create mode 100644 gobi-api/GobiAPI_2013-07-31-1347/GobiSampleCM/android/assets/qml/GobiSampleCM/Info.png create mode 100644 gobi-api/GobiAPI_2013-07-31-1347/GobiSampleCM/android/assets/qml/GobiSampleCM/main.qml create mode 100644 gobi-api/GobiAPI_2013-07-31-1347/GobiSampleCM/android/res/drawable/icon.png create mode 100644 gobi-api/GobiAPI_2013-07-31-1347/GobiSampleCM/android/res/drawable/logo.png create mode 100644 gobi-api/GobiAPI_2013-07-31-1347/GobiSampleCM/main.cpp create mode 100644 gobi-api/GobiAPI_2013-07-31-1347/GobiSampleCM/qml/GobiSampleCM/Connect.png create mode 100644 gobi-api/GobiAPI_2013-07-31-1347/GobiSampleCM/qml/GobiSampleCM/Info.png create mode 100644 gobi-api/GobiAPI_2013-07-31-1347/GobiSampleCM/qml/GobiSampleCM/main.qml create mode 100644 gobi-api/GobiAPI_2013-07-31-1347/Readme.txt create mode 100644 gobi-api/GobiAPI_2013-07-31-1347/Shared/GobiError.h create mode 100644 gobi-api/GobiAPI_2013-07-31-1347/Shared/GobiQMICore.cpp create mode 100644 gobi-api/GobiAPI_2013-07-31-1347/Shared/GobiQMICore.h (limited to 'gobi-api') diff --git a/gobi-api/GobiAPI_2013-07-31-1347/Core/Comm.cpp b/gobi-api/GobiAPI_2013-07-31-1347/Core/Comm.cpp new file mode 100644 index 0000000..d877934 --- /dev/null +++ b/gobi-api/GobiAPI_2013-07-31-1347/Core/Comm.cpp @@ -0,0 +1,646 @@ +/*=========================================================================== +FILE: + Comm.cpp + +DESCRIPTION: + Implementation of cComm class + +PUBLIC CLASSES AND METHODS: + cComm + This class wraps low level port communications + +Copyright (c) 2013, The Linux Foundation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +===========================================================================*/ + +//--------------------------------------------------------------------------- +// Include Files +//--------------------------------------------------------------------------- +#include "StdAfx.h" +#include "Comm.h" +#include "ProtocolServer.h" + +//--------------------------------------------------------------------------- +// Definitions +//--------------------------------------------------------------------------- +// Thread commands +#define START_READ_CMD 0 +#define STOP_READ_CMD 1 +#define EXIT_CMD 2 + +/*=========================================================================*/ +// Free Methods +/*=========================================================================*/ + +/*=========================================================================== +METHOD: + RxThread (Free Method) + +DESCRIPTION: + Thread for simulating asynchronous reads + +PARAMETERS: + pData [ I ] Asynchronous read object + +RETURN VALUE: + void * - thread exit value (always 0) +===========================================================================*/ +void * RxThread( void * pData ) +{ + cComm * pComm = (cComm*)pData; + if (pComm == NULL || pComm->IsValid() == false) + { + return 0; + } + + fd_set inputSet, outputSet; + FD_ZERO( &inputSet ); + FD_SET( pComm->mCommandPipe[READING], &inputSet ); + int largestFD = pComm->mCommandPipe[READING]; + + int status = 0; + while (true) + { + // No FD_COPY() available + memcpy( &outputSet, &inputSet, sizeof( fd_set ) ); + + status = select( largestFD + 1, &outputSet, NULL, NULL, NULL ); + if (status <= 0) + { + TRACE( "error %d in select, errno %d\n", status, errno ); + break; + } + + if (FD_ISSET( pComm->mCommandPipe[READING], &outputSet ) == true) + { + // Read from the pipe + BYTE cmd; + status = read( pComm->mCommandPipe[READING], &cmd, 1 ); + if (status != 1) + { + TRACE( "cmd error %d\n", status ); + break; + } + + if (cmd == START_READ_CMD) + { + FD_SET( pComm->mPort, &inputSet ); + largestFD = std::max( pComm->mPort, + pComm->mCommandPipe[READING] ); + } + else if (cmd == STOP_READ_CMD) + { + FD_CLR( pComm->mPort, &inputSet ); + largestFD = pComm->mCommandPipe[READING]; + } + else + { + // EXIT_CMD or anything else + pComm->mpRxCallback = 0; + break; + } + } + else if (FD_ISSET( pComm->mPort, &outputSet ) == true) + { + // Stop watching for read data + FD_CLR( pComm->mPort, &inputSet ); + largestFD = pComm->mCommandPipe[READING]; + + // Perform a read + status = read( pComm->mPort, + pComm->mpBuffer, + pComm->mBuffSz ); + + cIOCallback * pCallback = pComm->mpRxCallback; + pComm->mpRxCallback = 0; + + if (pCallback == (cIOCallback *)1) + { + // We wanted to read, but not to be notified + } + else if (status >= 0) + { + pCallback->IOComplete( 0, status ); + } + else + { + pCallback->IOComplete( status, 0 ); + } + } + } + + return 0; +}; + +/*=========================================================================*/ +// cComm Methods +/*=========================================================================*/ + +/*=========================================================================== +METHOD: + cComm (Public Method) + +DESCRIPTION: + Constructor + +RETURN VALUE: + None +===========================================================================*/ +cComm::cComm() + : mPortName( "" ), + mPort( INVALID_HANDLE_VALUE ), + mbCancelWrite( false ), + mpBuffer( 0 ), + mBuffSz( 0 ), + mRxThreadID( 0 ) +{ + mCommandPipe[READING] = INVALID_HANDLE_VALUE; + mCommandPipe[WRITING] = INVALID_HANDLE_VALUE; +} + +/*=========================================================================== +METHOD: + ~cComm (Public Method) + +DESCRIPTION: + Destructor + +RETURN VALUE: + None +===========================================================================*/ +cComm::~cComm() +{ + // Disconnect from current port + Disconnect(); + + mCommandPipe[READING] = INVALID_HANDLE_VALUE; + mCommandPipe[WRITING] = INVALID_HANDLE_VALUE; +} + +/*=========================================================================== +METHOD: + IsValid (Public Method) + +DESCRIPTION: + Is this object valid? + +RETURN VALUE: + Bool +===========================================================================*/ +bool cComm::IsValid() +{ + // Nothing to do, dependant on extended class functionality + return true; +} + +/*=========================================================================== +METHOD: + Connect (Public Method) + +DESCRIPTION: + Connect to the specified port + +PARAMETERS: + pPort [ I ] - Name of port to open (IE: /dev/qcqmi0) + +RETURN VALUE: + bool +===========================================================================*/ +bool cComm::Connect( LPCSTR pPort ) +{ + if (IsValid() == false || pPort == 0 || pPort[0] == 0) + { + return false; + } + + if (mPort != INVALID_HANDLE_VALUE) + { + Disconnect(); + } + + // Initialize command pipe for read thread + int nRet = pipe( mCommandPipe ); + if (nRet != 0) + { + TRACE( "cComm:Connect() pipe creation failed %d\n", nRet ); + return false; + } + + // Start the read thread + nRet = pthread_create( &mRxThreadID, + 0, + RxThread, + this ); + if (nRet != 0) + { + TRACE( "cComm::Connect() pthread_create = %d\n", nRet ); + + Disconnect(); + return false; + } + + // Opening the com port + mPort = open( pPort, O_RDWR ); + if (mPort == INVALID_HANDLE_VALUE) + { + Disconnect(); + return false; + } + + // Save port name + mPortName = pPort; + + // Success! + return true; +} + +/*=========================================================================== +METHOD: + SendCtl (Public Method) + +DESCRIPTION: + Run an IOCTL on the open file handle + +PARAMETERS: + ioctlReq [ I ] - ioctl request value + pData [I/O] - input or output specific to ioctl request value + +RETURN VALUE: + int - ioctl return value (0 for success) +===========================================================================*/ +int cComm::SendCtl( + UINT ioctlReq, + void * pData ) +{ + if (mPort == INVALID_HANDLE_VALUE) + { + TRACE( "Invalid file handle\n" ); + return -EBADFD; + } + + return ioctl( mPort, ioctlReq, pData ); +} + +/*=========================================================================== +METHOD: + Disconnect (Public Method) + +DESCRIPTION: + Disconnect from the current port + +RETURN VALUE: + bool +===========================================================================*/ +bool cComm::Disconnect() +{ + // Assume success + bool bRC = true; + + if (mCommandPipe[WRITING] != INVALID_HANDLE_VALUE) + { + if (mRxThreadID != 0) + { + // Notify the thread to exit + BYTE byte = EXIT_CMD; + write( mCommandPipe[WRITING], &byte, 1 ); + + // And wait for it + TRACE( "cComm::Disconnnect() joining thread %lu\n", mRxThreadID ); + int nRC = pthread_join( mRxThreadID, 0 ); + if (nRC != 0) + { + TRACE( "failed to join thread %d\n", nRC ); + bRC = false; + } + + mRxThreadID = 0; + } + + close( mCommandPipe[WRITING] ); + close( mCommandPipe[READING] ); + mCommandPipe[READING] = INVALID_HANDLE_VALUE; + mCommandPipe[WRITING] = INVALID_HANDLE_VALUE; + } + + if (mPort != INVALID_HANDLE_VALUE) + { + close( mPort ); + mPort = INVALID_HANDLE_VALUE; + } + + // Double check + mpRxCallback = 0; + + mPortName.clear(); + return bRC; +} + +/*=========================================================================== +METHOD: + ConfigureSettings (Public Method) + +DESCRIPTION: + Configure the port with the passed in parameters + +PARAMETERS: + pSettings [ I ] - Desired port settings + +RETURN VALUE: + bool +===========================================================================*/ +bool cComm::ConfigureSettings( termios * pSettings ) +{ + if (mPort == INVALID_HANDLE_VALUE || pSettings == 0) + { + return false; + } + + tcflush( mPort, TCIOFLUSH ); + int nRC = tcsetattr( mPort, TCSANOW, pSettings ); + if (nRC == -1) + { + return false; + } + + // Success! + return true; +} + +/*=========================================================================== +METHOD: + GetSettings (Public Method) + +DESCRIPTION: + Return the current port settings + +PARAMETERS: + pSettings [ I ] - Current port settings + +RETURN VALUE: + bool +===========================================================================*/ +bool cComm::GetSettings( termios * pSettings ) +{ + if (mPort == INVALID_HANDLE_VALUE || pSettings == 0) + { + return false; + } + + // Get the COM port settings + int nRC = tcgetattr( mPort, pSettings ); + if (nRC == -1) + { + return false; + } + + // Success! + return true; +} + +/*=========================================================================== +METHOD: + CancelIO (Public Method) + +DESCRIPTION: + Cancel any in-progress I/O + +PARAMETERS: + +RETURN VALUE: + bool +===========================================================================*/ +bool cComm::CancelIO() +{ + if (mPort == INVALID_HANDLE_VALUE) + { + return false; + } + + bool bRxCancel = CancelRx(); + bool bTxCancel = CancelTx(); + + return (bRxCancel && bTxCancel); +} + +/*=========================================================================== +METHOD: + CancelRx (Public Method) + +DESCRIPTION: + Cancel any in-progress receive operation + +RETURN VALUE: + bool +===========================================================================*/ +bool cComm::CancelRx() +{ + if (mPort == INVALID_HANDLE_VALUE + || mCommandPipe[WRITING] == INVALID_HANDLE_VALUE + || mpRxCallback == 0 + || mRxThreadID == 0) + { + TRACE( "cannot cancel, thread not active\n" ); + mpRxCallback = 0; + return false; + } + + // Notify the thread to stop reading + BYTE byte = STOP_READ_CMD; + int nRC = write( mCommandPipe[WRITING], &byte, 1 ); + if (nRC != 1) + { + TRACE( "error %d canceling read\n", nRC ); + return false; + } + + // Remove the old callback + mpRxCallback = 0; + + return true; +} + +/*=========================================================================== +METHOD: + CancelTx (Public Method) + +DESCRIPTION: + Cancel any in-progress transmit operation + +RETURN VALUE: + bool +===========================================================================*/ +bool cComm::CancelTx() +{ + if (mPort == INVALID_HANDLE_VALUE) + { + return false; + } + + mbCancelWrite = true; + + return true; +} + +/*=========================================================================== +METHOD: + RxData (Public Method) + +DESCRIPTION: + Receive data + +PARAMETERS: + pBuf [ I ] - Buffer to contain received data + bufSz [ I ] - Amount of data to be received + pCallback [ I ] - Callback object to be exercised when the + operation completes + +RETURN VALUE: + bool +===========================================================================*/ +bool cComm::RxData( + BYTE * pBuf, + ULONG bufSz, + cIOCallback * pCallback ) +{ + if (IsValid() == false || mpRxCallback != 0) + { + return false; + } + + if (pCallback == 0) + { + // Not interested in being notified, but we still need a value + // for this so that only one outstanding I/O operation is active + // at any given point in time + mpRxCallback = (cIOCallback * )1; + } + else + { + mpRxCallback = pCallback; + } + + mpBuffer = pBuf; + mBuffSz = bufSz; + + // Notify the thread to stop reading + BYTE byte = START_READ_CMD; + int nRC = write( mCommandPipe[WRITING], &byte, 1 ); + if (nRC != 1) + { + TRACE( "error %d starting read\n", nRC ); + return false; + } + + return true; +} + +/*=========================================================================== +METHOD: + TxData (Public Method) + +DESCRIPTION: + Transmit data + +PARAMETERS: + pBuf [ I ] - Data to be transmitted + bufSz [ I ] - Amount of data to be transmitted + +RETURN VALUE: + bool +===========================================================================*/ +bool cComm::TxData( + const BYTE * pBuf, + ULONG bufSz ) +{ + if (IsValid() == false) + { + return false; + } + +#ifdef DEBUG + ULONGLONG nStart = GetTickCount(); +#endif + + // Allow ourselves to be interupted + mbCancelWrite = false; + + // This seems a bit pointless, but we're still going verify + // the device is ready for writing, and give it up to + // (1000 + num bytes) MS to be ready (in 100 MS chunks) + + struct timeval TimeOut; + fd_set set; + + int nReady = 0; + unsigned int nCount = 0; + + while ( nReady == 0 ) + { + if (mbCancelWrite == true) + { + TRACE( "cComm::TxData() write canceled before device was ready\n" ); + return false; + } + + if (nCount >= (1000 + bufSz) / 100) + { + // Timeout is expired + break; + } + + FD_ZERO( &set ); + FD_SET( mPort, &set ); + TimeOut.tv_sec = 0; + TimeOut.tv_usec = 100000; + nReady = select( mPort + 1, NULL, &set, NULL, &TimeOut ); + + nCount++; + } + + if (nReady <= 0) + { + TRACE( "cComm::TxData() Unable to get device ready for" + " Write, error %d: %s\n", + nReady, + strerror( nReady) ); + return false; + } + + size_t nRet = write( mPort, pBuf, bufSz ); + if (nRet == std::string::npos || nRet != bufSz) + { + TRACE( "cComm::TxData() write returned %d instead of %lu\n", + nRet, + bufSz ); + return false; + } + +#ifdef DEBUG + TRACE( "Write of %lu bytes took %llu milliseconds\n", bufSz, GetTickCount() - nStart ); +#endif + + return true; +} diff --git a/gobi-api/GobiAPI_2013-07-31-1347/Core/Comm.h b/gobi-api/GobiAPI_2013-07-31-1347/Core/Comm.h new file mode 100644 index 0000000..7e33c75 --- /dev/null +++ b/gobi-api/GobiAPI_2013-07-31-1347/Core/Comm.h @@ -0,0 +1,138 @@ +/*=========================================================================== +FILE: + Comm.h + +DESCRIPTION: + Declaration of cComm class + +PUBLIC CLASSES AND METHODS: + cComm + This class wraps low level port communications + +Copyright (c) 2013, The Linux Foundation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +===========================================================================*/ + +//--------------------------------------------------------------------------- +// Include Files +//--------------------------------------------------------------------------- +#include "Event.h" +#include "Connection.h" + +//--------------------------------------------------------------------------- +// Pragmas +//--------------------------------------------------------------------------- +#pragma once + +/*=========================================================================*/ +// Class cComm +/*=========================================================================*/ +class cComm : public cConnection +{ + public: + // Constructor + cComm(); + + // Destructor + ~cComm(); + + // Is this object valid? + bool IsValid(); + + // Connect to the specified port + bool Connect( LPCSTR pPort ); + + // Run an IOCTL on the open file handle + int SendCtl( + UINT ioctlReq, + void * pData ); + + // Disconnect from the current port + bool Disconnect(); + + // Configure the port with the passed in parameters + bool ConfigureSettings( termios * pSettings ); + + // Return the current port settings + bool GetSettings( termios * pSettings ); + + // Cancel any in-progress I/O + bool CancelIO(); + + // Cancel any in-progress receive operation + bool CancelRx(); + + // Cancel any in-progress transmit operation + bool CancelTx(); + + // Receive data + bool RxData( + BYTE * pBuf, + ULONG bufSz, + cIOCallback * pCallback ); + + // Transmit data + bool TxData( + const BYTE * pBuf, + ULONG bufSz ); + + // (Inline) Return current port name + std::string GetPortName() const + { + return mPortName; + }; + + // Are we currently connected to a port? + bool IsConnected() + { + return (mPort != INVALID_HANDLE_VALUE); + }; + + protected: + /* Name of current port */ + std::string mPortName; + + /* Handle to COM port */ + int mPort; + + // Cancel the write request? + bool mbCancelWrite; + + /* Buffer */ + BYTE * mpBuffer; + + /* Buffer size */ + ULONG mBuffSz; + + /* Pipe for comunication with thread */ + int mCommandPipe[2]; + + /* Thread ID of Rx Thread. */ + pthread_t mRxThreadID; + + // Rx thread is allowed complete access + friend void * RxThread( void * pData ); +}; diff --git a/gobi-api/GobiAPI_2013-07-31-1347/Core/Connection.h b/gobi-api/GobiAPI_2013-07-31-1347/Core/Connection.h new file mode 100644 index 0000000..007c010 --- /dev/null +++ b/gobi-api/GobiAPI_2013-07-31-1347/Core/Connection.h @@ -0,0 +1,148 @@ +/*=========================================================================== +FILE: + Connection.h + +DESCRIPTION: + Declaration of cConnection class + +PUBLIC CLASSES AND METHODS: + cComm + This class defines a prototype for low level communications + +Copyright (c) 2013, The Linux Foundation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +===========================================================================*/ + +//--------------------------------------------------------------------------- +// Include Files +//--------------------------------------------------------------------------- +#include "Event.h" + +//--------------------------------------------------------------------------- +// Pragmas +//--------------------------------------------------------------------------- +#pragma once + +/*=========================================================================*/ +// Class cIOCallback +/*=========================================================================*/ +class cIOCallback +{ + public: + // (Inline) Constructor + cIOCallback() { }; + + // (Inline) Destructor + virtual ~cIOCallback() { }; + + // The I/O has been completed, process the results + virtual void IOComplete( + DWORD status, + DWORD bytesTransferred ) = 0; +}; + +/*=========================================================================*/ +// Class cConnection +/*=========================================================================*/ +class cConnection +{ + public: + // Constructor + cConnection() + : mpRxCallback( 0 ) + { }; + + // Is this object valid? + virtual bool IsValid() + { + return false; + }; + + // Connect to the specified interface + virtual bool Connect( LPCSTR /* pPort */ ) + { + return false; + }; + + // Send a control message + virtual int SendCtl( + UINT /* type */, + void * /* pData */ ) + { + return -1; + }; + + // Disconnect from the current port + virtual bool Disconnect() + { + return false; + }; + + // Cancel any in-progress I/O + virtual bool CancelIO() + { + return false; + }; + + // Cancel any in-progress receive operation + virtual bool CancelRx() + { + return false; + }; + + // Cancel any in-progress transmit operation + virtual bool CancelTx() + { + return false; + }; + + // Receive data + virtual bool RxData( + BYTE * /* pBuf */, + ULONG /* bufSz */, + cIOCallback * /* pCallback */ ) + { + return false; + }; + + // Transmit data + virtual bool TxData( + const BYTE * /* pBuf */, + ULONG /* bufSz */ ) + { + return false; + }; + + // Are we currently connected to a port? + virtual bool IsConnected() + { + return false; + }; + + protected: + /* Read callbacks */ + cIOCallback * mpRxCallback; +}; diff --git a/gobi-api/GobiAPI_2013-07-31-1347/Core/Event.cpp b/gobi-api/GobiAPI_2013-07-31-1347/Core/Event.cpp new file mode 100644 index 0000000..d16613c --- /dev/null +++ b/gobi-api/GobiAPI_2013-07-31-1347/Core/Event.cpp @@ -0,0 +1,436 @@ +/*=========================================================================== +FILE: + Event.cpp + +DESCRIPTION: + Implementation of cEvent class + +PUBLIC CLASSES AND METHODS: + WaitOnMultipleEvents + cEvent + Functionality to mimic Windows events using UNIX pipes (enhanced + somewhat to allow one to specify a DWORD value to pass through + when signalling the event) + + WARNING: + This class is not designed to be thread safe + +Copyright (c) 2013, The Linux Foundation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +===========================================================================*/ + +//--------------------------------------------------------------------------- +// Include Files +//--------------------------------------------------------------------------- +#include "StdAfx.h" +#include "Event.h" + +/*=========================================================================== +METHOD: + WaitOnMultipleEvents (Free Method) + +DESCRIPTION: + Wait for any of the events to be set and return the value + + Note: If multiple events are set, only the event specified by + eventIndex will be read from. Run this function again + to get the next event. + +PARAMETERS: + events [ I ] - Vector of events which may be signaled + timeoutMS [ I ] - Relative timeout length (in milliseconds) + val [ O ] - Associated value upon success + eventIndex [ O ] - Index of event which was signaled + +RETURN VALUE: + Return code + positive for number of events set + -ETIME on timeout + negative errno value on failure +===========================================================================*/ +int WaitOnMultipleEvents( + std::vector events, + DWORD timeoutMS, + DWORD & val, + DWORD & eventIndex ) +{ + // Check internal pipes' status + for (ULONG index = 0; index < events.size(); index++) + { + int error = events[index]->mError; + if (error != 0) + { + TRACE( "cEvent %lu has error %d\n", index, error ); + return -error; + } + } + + // Initialize the FD set + fd_set fds; + FD_ZERO( &fds ); + + // Add each item to the FD set, keeping track of the largest, + // which is used for select() + int largestFD = 0; + for (ULONG index = 0; index < events.size(); index++) + { + int pipe = events[index]->mPipes[READING]; + FD_SET( pipe, &fds ); + + largestFD = std::max( pipe, largestFD ); + } + + struct timeval timeOut; + + // Add avoiding an overflow on (long)usec + timeOut.tv_sec = timeoutMS / 1000l; + timeOut.tv_usec = ( timeoutMS % 1000l ) * 1000l; + + // Wait for activity on the pipes for the specified amount of time + int rc = select( largestFD + 1, &fds, 0, 0, &timeOut ); + if (rc == -1) + { + TRACE( "WaitOnMultipleEvents error %d\n", errno ); + return -errno; + } + else if (rc == 0) + { + // No activity on the pipes + return -ETIME; + } + + int numSignaled = rc; + + // Only read from first pipe which was signaled + int signaled = -1; + for (ULONG index = 0; index < events.size(); index++) + { + int pipe = events[index]->mPipes[READING]; + if (FD_ISSET( pipe, &fds ) != 0) + { + signaled = index; + break; + } + } + + if (signaled == -1) + { + // Odd, no one was signaled + return -ENODATA; + } + + DWORD tempVal = 0; + rc = events[signaled]->Read( tempVal ); + if (rc == 0) + { + // Success + val = tempVal; + eventIndex = signaled; + return numSignaled; + } + else + { + // failure + return rc; + } +} + +/*=========================================================================*/ +// cEvent Methods +/*=========================================================================*/ + +/*=========================================================================== +METHOD: + cEvent (Public Method) + +DESCRIPTION: + Constructor + +RETURN VALUE: + None +===========================================================================*/ +cEvent::cEvent() + : mError( 0 ) +{ + int rc = pipe( mPipes ); + if (rc != 0) + { + mError = errno; + TRACE( "cEvent - Error %d creating pipe, %s\n", + mError, + strerror( mError ) ); + } +} + +/*=========================================================================== +METHOD: + ~cEvent (Public Method) + +DESCRIPTION: + Destructor + +RETURN VALUE: + None +===========================================================================*/ +cEvent::~cEvent() +{ + // Check internal pipe status + if (mError == 0) + { + Close(); + mError = EBADF; + } +} + +/*=========================================================================== +METHOD: + Close (Internal Method) + +DESCRIPTION: + Close pipe + +RETURN VALUE: + Return code + 0 on success + errno value on failure +===========================================================================*/ +int cEvent::Close() +{ + int retCode = 0; + + int rc = close( mPipes[READING] ); + mPipes[READING] = -1; + + if (rc != 0) + { + retCode = errno; + TRACE( "cEvent - Error %d deleting pipe[READING], %s\n", + retCode, + strerror( retCode ) ); + } + + rc = close( mPipes[WRITING] ); + mPipes[WRITING] = -1; + + if (rc != 0) + { + retCode = errno; + TRACE( "cEvent - Error %d deleting pipe[WRITING], %s\n", + retCode, + strerror( retCode ) ); + } + + return retCode; +} + +/*=========================================================================== +METHOD: + Set (Public Method) + +DESCRIPTION: + Set/signal the event with the specified value + +PARAMETERS: + val [ I ] - Value to pass through with signal + +RETURN VALUE: + Return code + 0 on success + errno value on failure +===========================================================================*/ +int cEvent::Set( DWORD val ) +{ + // Check internal pipe status + if (mError != 0) + { + return mError; + } + + PBYTE pWrite = (PBYTE)&val; + + int writeSize = sizeof( DWORD ); + while (writeSize > 0) + { + int bytesWritten = write( mPipes[WRITING], pWrite, writeSize ); + if (bytesWritten == -1) + { + // Store error from write + int writeErr = errno; + + // First error? + if (mError == 0) + { + // Yes, save the error + mError = writeErr; + } + + // We cannot recover from this error + Close(); + return writeErr; + } + + pWrite += bytesWritten; + writeSize -= bytesWritten; + } + + // Success + return 0; +} + +/*=========================================================================== +METHOD: + Wait (Free Method) + +DESCRIPTION: + Wait for the event to be signalled and return the read in value + +PARAMETERS: + timeoutMS [ I ] - Relative timeout length (in milliseconds) + val [ O ] - Associated value upon success + +RETURN VALUE: + Return code + 0 on success + ETIME on timeout + errno value on failure +===========================================================================*/ +int cEvent::Wait( + DWORD timeoutMS, + DWORD & val ) +{ + // Check internal pipe status + if (mError != 0) + { + return mError; + } + + fd_set fds; + FD_ZERO( &fds ); + FD_SET( mPipes[READING], &fds ); + + struct timeval timeOut; + + // Add avoiding an overflow on (long)usec + timeOut.tv_sec = timeoutMS / 1000l; + timeOut.tv_usec = ( timeoutMS % 1000l ) * 1000l; + + // Wait for activity on the pipe for the specified amount of time + int rc = select( mPipes[READING] + 1, &fds, 0, 0, &timeOut ); + if (rc == -1) + { + // Store error from select + int selectErr = errno; + + // First error? + if (mError == 0) + { + // Yes, save the error + mError = selectErr; + } + + // We cannot recover from this error + Close(); + return selectErr; + } + else if (rc == 0) + { + // No activity on the pipe + return ETIME; + } + + return Read( val ); +} + +/*=========================================================================== +METHOD: + Clear (Free Method) + +DESCRIPTION: + Read and discard all values currently in the pipe +===========================================================================*/ +void cEvent::Clear() +{ + DWORD unusedVal; + int rc = 0; + while (rc == 0) + { + rc = Wait( (DWORD)0, unusedVal ); + } +} + + +/*=========================================================================== +METHOD: + Read (Internal Method) + +DESCRIPTION: + Read a DWORD from the pipe + +RETURN VALUE: + Return code + 0 on success + errno value on failure +===========================================================================*/ +int cEvent::Read( DWORD & val ) +{ + DWORD tempVal; + PBYTE pRead = (PBYTE)&tempVal; + + int readSize = sizeof( DWORD ); + while (readSize > 0) + { + int bytesRead = read( mPipes[READING], pRead, readSize ); + if (bytesRead <= 0) + { + // Store error from read + int readErr = errno; + if (readErr == 0) + { + // Hard error! This should NEVER happen for a pipe + ASSERT( 0 ); + readErr = EBADF; + } + + // First error? + if (mError == 0) + { + // Yes, store the error + mError = readErr; + } + + // We cannot recover from this error + Close(); + return readErr; + } + + pRead += bytesRead; + readSize -= bytesRead; + } + + val = tempVal; + + return 0; +} diff --git a/gobi-api/GobiAPI_2013-07-31-1347/Core/Event.h b/gobi-api/GobiAPI_2013-07-31-1347/Core/Event.h new file mode 100644 index 0000000..2b4a9e4 --- /dev/null +++ b/gobi-api/GobiAPI_2013-07-31-1347/Core/Event.h @@ -0,0 +1,116 @@ +/*=========================================================================== +FILE: + Event.h + +DESCRIPTION: + Declaration of cEvent class + +PUBLIC CLASSES AND METHODS: + WaitOnMultipleEvents + cEvent + Functionality to mimic Windows events using UNIX pipes (enhanced + somewhat to allow one to specify a DWORD value to pass through + when signalling the event) + + WARNING: + This class is not designed to be thread safe + +Copyright (c) 2013, The Linux Foundation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +===========================================================================*/ + +//--------------------------------------------------------------------------- +// Pragmas +//--------------------------------------------------------------------------- +#pragma once + +//--------------------------------------------------------------------------- +// Include Files +//--------------------------------------------------------------------------- +#include "StdAfx.h" +#include + +//--------------------------------------------------------------------------- +// Prototype +//--------------------------------------------------------------------------- + +class cEvent; + +/*=========================================================================*/ +// Free methods +/*=========================================================================*/ + +// Wait for any of the events to be set and return the value +int WaitOnMultipleEvents( + std::vector events, + DWORD timeoutMS, + DWORD & val, + DWORD & eventIndex ); + +/*=========================================================================*/ +// Class cEvent +/*=========================================================================*/ +class cEvent +{ + public: + // Constructor + cEvent(); + + // Destructor + ~cEvent(); + + // Set/signal the event with the specified value + int Set( DWORD val ); + + // Wait for the event to be signalled and return the read in value + int Wait( + DWORD timeoutMS, + DWORD & val ); + + // Read and discard all values currently in the pipe + void Clear(); + + protected: + // Close pipe (used in errors or normal exit) + int Close(); + + // Read from the pipe + int Read( DWORD & val ); + + /* Internal error status */ + int mError; + + /* Internal pipes */ + int mPipes[2]; + + // WaitOnMultipleEvents gets full access + friend int WaitOnMultipleEvents( + std::vector events, + DWORD timeoutMS, + DWORD & val, + DWORD & eventIndex ); +}; + diff --git a/gobi-api/GobiAPI_2013-07-31-1347/Core/ProtocolBuffer.cpp b/gobi-api/GobiAPI_2013-07-31-1347/Core/ProtocolBuffer.cpp new file mode 100644 index 0000000..b192cfa --- /dev/null +++ b/gobi-api/GobiAPI_2013-07-31-1347/Core/ProtocolBuffer.cpp @@ -0,0 +1,221 @@ +/*=========================================================================== +FILE: + ProtocolBuffer.cpp + +DESCRIPTION: + Generic protocol structures and affliated methods + +PUBLIC CLASSES AND METHODS: + sProtocolBuffer + Simple struct to represent a protocol buffer using a reference counted + (shared) buffer, this allows us to use in in several places without + copying it once in each place. A few base services are provided + but the main purpose is to provide a class to inherit off of for + specific protocols + +Copyright (c) 2013, The Linux Foundation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +===========================================================================*/ + +//--------------------------------------------------------------------------- +// Include Files +//--------------------------------------------------------------------------- +#include "StdAfx.h" +#include "ProtocolBuffer.h" + +//--------------------------------------------------------------------------- +// Definitions +//--------------------------------------------------------------------------- + +/*=========================================================================*/ +// sProtocolBuffer Methods +/*=========================================================================*/ + +/*=========================================================================== +METHOD: + sProtocolBuffer (Public Method) + +DESCRIPTION: + Constructor (default) + +RETURN VALUE: + None +===========================================================================*/ +sProtocolBuffer::sProtocolBuffer() + : mpData( 0 ), + mbValid( false ) +{ + // Object is currently invalid + mTimestamp = EMPTY_TIME; +} + +/*=========================================================================== +METHOD: + sProtocolBuffer (Public Method) + +DESCRIPTION: + Constructor (parameterized) + +PARAMETERS: + pBuffer [ I ] - Shareable buffer that contains the DIAG data + +RETURN VALUE: + None +===========================================================================*/ +sProtocolBuffer::sProtocolBuffer( sSharedBuffer * pBuffer ) + : mpData( 0 ), + mbValid( false ) +{ + mTimestamp = EMPTY_TIME; + + time_t rawtime; + time( &rawtime ); + tm * timestamp = localtime( &rawtime ); + if (timestamp != 0) + { + mTimestamp = *timestamp; + } + + if (mpData != 0 && mpData->IsValid() == true) + { + mpData->Release(); + mpData = 0; + } + + mpData = pBuffer; + if (mpData != 0 && mpData->IsValid() == true) + { + mpData->AddRef(); + } + else + { + mpData = 0; + } + + // NOTE: Derived classes need to call their own validation method + // in their constructors since the override might try to access + // data that is not yet in place + sProtocolBuffer::Validate(); +} + +/*=========================================================================== +METHOD: + sProtocolBuffer (Public Method) + +DESCRIPTION: + Copy constructor + +PARAMETERS: + copyThis [ I ] - sProtocolBuffer to base the new one on + +RETURN VALUE: + None +===========================================================================*/ +sProtocolBuffer::sProtocolBuffer( const sProtocolBuffer & copyThis ) + : mpData( copyThis.mpData ), + mTimestamp( copyThis.mTimestamp ), + mbValid( copyThis.mbValid ) +{ + // Bump reference count for shared buffer + if (mpData != 0 && mpData->IsValid() == true) + { + mpData->AddRef(); + } + else + { + mpData = 0; + mbValid = false; + } +} + +/*=========================================================================== +METHOD: + operator = (Public Method) + +DESCRIPTION: + Assignment operator + +PARAMETERS: + copyThis [ I ] - sProtocolBuffer to base the new one on + +RETURN VALUE: + sProtocolBuffer & +===========================================================================*/ +sProtocolBuffer & sProtocolBuffer::operator = ( const sProtocolBuffer & copyThis ) +{ + // Do we already have data? + if (mpData != 0) + { + // Is it different than what we are duplicating? + if (mpData != copyThis.mpData) + { + // Yes, release our current buffer + mpData->Release(); + } + } + + mpData = copyThis.mpData; + mTimestamp = copyThis.mTimestamp; + mbValid = copyThis.mbValid; + + // Bump reference count for shared buffer + if (mpData != 0 && mpData->IsValid() == true) + { + mpData->AddRef(); + } + else + { + mpData = 0; + mbValid = false; + } + + return *this; +} + +/*=========================================================================== +METHOD: + ~sProtocolBuffer (Public Method) + +DESCRIPTION: + Destructor + +RETURN VALUE: + None +===========================================================================*/ +sProtocolBuffer::~sProtocolBuffer() +{ + if (mpData != 0 && mpData->IsValid() == true) + { + mpData->Release(); + mpData = 0; + } + else if (mpData != 0) + { + ASSERT( 0 ); + } + + mbValid = false; +} diff --git a/gobi-api/GobiAPI_2013-07-31-1347/Core/ProtocolBuffer.h b/gobi-api/GobiAPI_2013-07-31-1347/Core/ProtocolBuffer.h new file mode 100644 index 0000000..4075d9e --- /dev/null +++ b/gobi-api/GobiAPI_2013-07-31-1347/Core/ProtocolBuffer.h @@ -0,0 +1,161 @@ +/*=========================================================================== +FILE: + ProtocolBuffer.h + +DESCRIPTION: + Generic protocol structures and affliated methods + +PUBLIC CLASSES AND METHODS: + sProtocolBuffer + Simple struct to represent a protocol buffer using a reference counted + (shared) buffer, this allows us to use in in several places without + copying it once in each place. A few base services are provided + but the main purpose is to provide a class to inherit off of for + specific protocols + +Copyright (c) 2013, The Linux Foundation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +===========================================================================*/ + +//--------------------------------------------------------------------------- +// Pragmas +//--------------------------------------------------------------------------- +#pragma once + +//--------------------------------------------------------------------------- +// Include Files +//--------------------------------------------------------------------------- +#include "SharedBuffer.h" +#include "ProtocolEnum.h" + +static const tm EMPTY_TIME = { 0, 0, 0, 0, 0, 0, 0, 0, 0 }; + +/*=========================================================================*/ +// Struct sProtocolBuffer +/*=========================================================================*/ +struct sProtocolBuffer +{ + public: + // Constructor (default) + sProtocolBuffer(); + + // Constructor (parameterized) + sProtocolBuffer( sSharedBuffer * pBuffer ); + + // Copy constructor + sProtocolBuffer( const sProtocolBuffer & copyThis ); + + // Assignment operator + sProtocolBuffer & operator = ( const sProtocolBuffer & copyThis ); + + // Destructor + virtual ~sProtocolBuffer(); + + // (Inline) Get buffer + const BYTE * GetBuffer() const + { + BYTE * pRet = 0; + if (IsValid() == true) + { + pRet = (BYTE *)mpData->GetBuffer(); + } + + return (const BYTE *)pRet; + }; + + // (Inline) Get buffer size + ULONG GetSize() const + { + ULONG size = 0; + if (IsValid() == true) + { + size = mpData->GetSize(); + } + + return size; + }; + + // (Inline) Return the protocol type + eProtocolType GetType() const + { + eProtocolType pt = ePROTOCOL_ENUM_BEGIN; + if (IsValid() == true) + { + pt = (eProtocolType)mpData->GetType(); + } + + return pt; + }; + + // (Inline) Return the shared buffer + sSharedBuffer * GetSharedBuffer() const + { + sSharedBuffer * pRet = 0; + if (IsValid() == true) + { + pRet = mpData; + } + + return pRet; + }; + + // (Inline) Return the timestamp + tm GetTimestamp() const + { + tm ft = EMPTY_TIME; + + if (IsValid() == true) + { + ft = mTimestamp; + } + + return ft; + }; + + // (Inline) Is this buffer valid? + virtual bool IsValid() const + { + return mbValid; + }; + + protected: + // (Inline) Validate buffer + virtual bool Validate() + { + // Do we have a shared buffer and is it valid? + mbValid = (mpData != 0 && mpData->IsValid()); + return mbValid; + }; + + /* Our data buffer */ + sSharedBuffer * mpData; + + /* Time buffer was created */ + tm mTimestamp; + + /* Has this buffer been validated? (NOTE: *NOT* set in base) */ + bool mbValid; +}; diff --git a/gobi-api/GobiAPI_2013-07-31-1347/Core/ProtocolEnum.h b/gobi-api/GobiAPI_2013-07-31-1347/Core/ProtocolEnum.h new file mode 100644 index 0000000..9dfc9bf --- /dev/null +++ b/gobi-api/GobiAPI_2013-07-31-1347/Core/ProtocolEnum.h @@ -0,0 +1,398 @@ +/*=========================================================================== +FILE: + ProtocolEnum.h + +DESCRIPTION: + Generic protocol enumerations and related methods + +PUBLIC ENUMERATIONS AND METHODS: + eProtocolType + + IsValid() + IsQMIProtocol() + IsQMIProtocolRX() + IsQMIProtocolTX() + IsDSEProtocol() + IsDSEProtocolCmd() + IsDSEProtocolRsp() + IsDSEProtocolEvt() + +Copyright (c) 2013, The Linux Foundation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +===========================================================================*/ + +//--------------------------------------------------------------------------- +// Pragmas +//--------------------------------------------------------------------------- +#pragma once + +//--------------------------------------------------------------------------- +// Definitions +//--------------------------------------------------------------------------- + +/*=========================================================================*/ +// eProtocolType Enumeration +// +// NOTE: QMI protocol types need to be in the same order as eQMIService +// with RX added first then TX +/*=========================================================================*/ +enum eProtocolType +{ + ePROTOCOL_ENUM_BEGIN = -1, + + ePROTOCOL_COMMAND, // 000 Protocol server command + ePROTOCOL_AT, // 001 AT command protocol + ePROTOCOL_NMEA, // 002 NMEA (GPS) protocol + ePROTOCOL_DIAG_RX, // 003 DIAG protocol (incoming) + ePROTOCOL_DIAG_TX, // 004 DIAG protocol (outgoing) + ePROTOCOL_DOWNLOAD_RX, // 005 Download protocol (incoming) + ePROTOCOL_DOWNLOAD_TX, // 006 Download protocol (outgoing) + ePROTOCOL_SDOWNLOAD_RX, // 007 Streaming download protocol (incoming) + ePROTOCOL_SDOWNLOAD_TX, // 008 Streaming download protocol (outgoing) + ePROTOCOL_QDL_RX, // 009 QDL streaming protocol (incoming) + ePROTOCOL_QDL_TX, // 010 QDL streaming protocol (outgoing) + + ePROTOCOL_DSE_QDU_CMD = 30, // 030 Device update protocol (command, TX) + ePROTOCOL_DSE_QDU_RSP, // 031 Device update protocol (response, RX) + ePROTOCOL_DSE_QDU_EVT, // 032 Device update protocol (event, RX) + ePROTOCOL_DSE_QMBE_CMD, // 033 MBB extensions protocol (command, TX) + ePROTOCOL_DSE_QMBE_RSP, // 034 MBB extensions protocol (response, RX) + ePROTOCOL_DSE_QMBE_EVT, // 035 MBB extensions protocol (event, RX) + ePROTOCOL_DSE_QMUX_CMD, // 036 Tunneled QMUX protocol (command, TX) + ePROTOCOL_DSE_QMUX_RSP, // 037 Tunneled QMUX protocol (response, RX) + ePROTOCOL_DSE_QMUX_EVT, // 038 Tunneled QMUX protocol (event, RX) + + ePROTOCOL_QMI_CTL_RX = 60, // 060 QMI CTL protocol (incoming) + ePROTOCOL_QMI_CTL_TX, // 061 QMI CTL protocol (outgoing) + ePROTOCOL_QMI_WDS_RX, // 062 QMI WDS protocol (incoming) + ePROTOCOL_QMI_WDS_TX, // 063 QMI WDS protocol (outgoing) + ePROTOCOL_QMI_DMS_RX, // 064 QMI DMS protocol (incoming) + ePROTOCOL_QMI_DMS_TX, // 065 QMI DMS protocol (outgoing) + ePROTOCOL_QMI_NAS_RX, // 066 QMI NAS protocol (incoming) + ePROTOCOL_QMI_NAS_TX, // 067 QMI NAS protocol (outgoing) + ePROTOCOL_QMI_QOS_RX, // 068 QMI QOS protocol (incoming) + ePROTOCOL_QMI_QOS_TX, // 069 QMI QOS protocol (outgoing) + ePROTOCOL_QMI_WMS_RX, // 070 QMI WMS protocol (incoming) + ePROTOCOL_QMI_WMS_TX, // 071 QMI WMS protocol (outgoing) + ePROTOCOL_QMI_PDS_RX, // 072 QMI PDS protocol (incoming) + ePROTOCOL_QMI_PDS_TX, // 073 QMI PDS protocol (outgoing) + ePROTOCOL_QMI_AUTH_RX, // 074 QMI AUTH protocol (incoming) + ePROTOCOL_QMI_AUTH_TX, // 075 QMI AUTH protocol (outgoing) + ePROTOCOL_QMI_AT_RX, // 076 QMI AUTH protocol (incoming) + ePROTOCOL_QMI_AT_TX, // 077 QMI AUTH protocol (outgoing) + ePROTOCOL_QMI_VOICE_RX, // 078 QMI Voice protocol (incoming) + ePROTOCOL_QMI_VOICE_TX, // 079 QMI Voice protocol (outgoing) + ePROTOCOL_QMI_CAT2_RX, // 080 QMI CAT (new) protocol (incoming) + ePROTOCOL_QMI_CAT2_TX, // 081 QMI CAT (new) protocol (outgoing) + ePROTOCOL_QMI_UIM_RX, // 082 QMI UIM protocol (incoming) + ePROTOCOL_QMI_UIM_TX, // 083 QMI UIM protocol (outgoing) + ePROTOCOL_QMI_PBM_RX, // 084 QMI PBM protocol (incoming) + ePROTOCOL_QMI_PBM_TX, // 085 QMI PBM protocol (outgoing) + ePROTOCOL_QMI_QCHAT_RX, // 086 QMI QCHAT protocol (incoming) + ePROTOCOL_QMI_QCHAT_TX, // 087 QMI QCHAT protocol (outgoing) + ePROTOCOL_QMI_RMTFS_RX, // 088 QMI RMTFS protocol (incoming) + ePROTOCOL_QMI_RMTFS_TX, // 089 QMI RMTFS protocol (outgoing) + ePROTOCOL_QMI_TEST_RX, // 090 QMI Test protocol (incoming) + ePROTOCOL_QMI_TEST_TX, // 091 QMI Test protocol (outgoing) + ePROTOCOL_QMI_LOC_RX, // 092 QMI LOC protocol (incoming) + ePROTOCOL_QMI_LOC_TX, // 093 QMI LOC protocol (outgoing) + ePROTOCOL_QMI_SAR_RX, // 094 QMI PBM protocol (incoming) + ePROTOCOL_QMI_SAR_TX, // 095 QMI PBM protocol (outgoing) + ePROTOCOL_QMI_IMSS_RX, // 096 QMI IMSS protocol (incoming) + ePROTOCOL_QMI_IMSS_TX, // 097 QMI IMSS protocol (outgoing) + ePROTOCOL_QMI_ADC_RX, // 098 QMI ADC protocol (incoming) + ePROTOCOL_QMI_ADC_TX, // 099 QMI ADC protocol (outgoing) + ePROTOCOL_QMI_CSD_RX, // 100 QMI CSD protocol (incoming) + ePROTOCOL_QMI_CSD_TX, // 101 QMI CSD protocol (outgoing) + ePROTOCOL_QMI_MFS_RX, // 102 QMI MFS protocol (incoming) + ePROTOCOL_QMI_MFS_TX, // 103 QMI MFS protocol (outgoing) + ePROTOCOL_QMI_TIME_RX, // 104 QMI TIME protocol (incoming) + ePROTOCOL_QMI_TIME_TX, // 105 QMI TIME protocol (outgoing) + ePROTOCOL_QMI_TS_RX, // 106 QMI TS protocol (incoming) + ePROTOCOL_QMI_TS_TX, // 107 QMI TS protocol (outgoing) + ePROTOCOL_QMI_TMD_RX, // 108 QMI TMD protocol (incoming) + ePROTOCOL_QMI_TMD_TX, // 109 QMI TMD protocol (outgoing) + ePROTOCOL_QMI_SAP_RX, // 110 QMI SAP protocol (incoming) + ePROTOCOL_QMI_SAP_TX, // 111 QMI SAP protocol (outgoing) + ePROTOCOL_QMI_WDA_RX, // 112 QMI WDA protocol (incoming) + ePROTOCOL_QMI_WDA_TX, // 113 QMI WDA protocol (outgoing) + ePROTOCOL_QMI_TSYNC_RX, // 114 QMI TSYNC protocol (incoming) + ePROTOCOL_QMI_TSYNC_TX, // 115 QMI TSYNC protocol (outgoing) + ePROTOCOL_QMI_RFSA_RX, // 116 QMI RFSA protocol (incoming) + ePROTOCOL_QMI_RFSA_TX, // 117 QMI RFSA protocol (outgoing) + ePROTOCOL_QMI_CSVT_RX, // 118 QMI CSVT protocol (incoming) + ePROTOCOL_QMI_CSVT_TX, // 119 QMI CSVT protocol (outgoing) + ePROTOCOL_QMI_QCMAP_RX, // 120 QMI QCMAP protocol (incoming) + ePROTOCOL_QMI_QCMAP_TX, // 121 QMI QCMAP protocol (outgoing) + ePROTOCOL_QMI_IMSP_RX, // 122 QMI IMSP protocol (incoming) + ePROTOCOL_QMI_IMSP_TX, // 123 QMI IMSP protocol (outgoing) + ePROTOCOL_QMI_IMSVT_RX, // 124 QMI IMSVT protocol (incoming) + ePROTOCOL_QMI_IMSVT_TX, // 125 QMI IMSVT protocol (outgoing) + ePROTOCOL_QMI_IMSA_RX, // 126 QMI IMSA protocol (incoming) + ePROTOCOL_QMI_IMSA_TX, // 127 QMI IMSA protocol (outgoing) + ePROTOCOL_QMI_COEX_RX, // 128 QMI COEX protocol (incoming) + ePROTOCOL_QMI_COEX_TX, // 129 QMI COEX protocol (outgoing) + ePROTOCOL_QMI_35_RX, // 130 QMI service ID 35 protocol (incoming) + ePROTOCOL_QMI_35_TX, // 131 QMI service ID 35 protocol (outgoing) + ePROTOCOL_QMI_PDC_RX, // 132 QMI PDC protocol (incoming) + ePROTOCOL_QMI_PDC_TX, // 133 QMI PDC protocol (outgoing) + ePROTOCOL_QMI_37_RX, // 134 QMI service ID 37 protocol (incoming) + ePROTOCOL_QMI_37_TX, // 135 QMI service ID 37 protocol (outgoing) + ePROTOCOL_QMI_STX_RX, // 136 QMI STX protocol (incoming) + ePROTOCOL_QMI_STX_TX, // 137 QMI STX protocol (outgoing) + ePROTOCOL_QMI_BIT_RX, // 138 QMI BIT protocol (incoming) + ePROTOCOL_QMI_BIT_TX, // 139 QMI BIT protocol (outgoing) + ePROTOCOL_QMI_IMSRTP_RX, // 140 QMI IMSRTP protocol (incoming) + ePROTOCOL_QMI_IMSRTP_TX, // 141 QMI IMSRTP protocol (outgoing) + ePROTOCOL_QMI_RFRPE_RX, // 142 QMI RFRPE protocol (incoming) + ePROTOCOL_QMI_RFRPE_TX, // 143 QMI RFRPE protocol (outgoing) + ePROTOCOL_QMI_DSD_RX, // 144 QMI DSD protocol (incoming) + ePROTOCOL_QMI_DSD_TX, // 145 QMI DSD protocol (outgoing) + ePROTOCOL_QMI_SSCTL_RX, // 146 QMI SSCTL protocol (incoming) + ePROTOCOL_QMI_SSCTL_TX, // 147 QMI SSCTL protocol (outgoing) + + ePROTOCOL_QMI_CAT_RX = 508, // 508 QMI CAT protocol (incoming) + ePROTOCOL_QMI_CAT_TX, // 509 QMI CAT protocol (outgoing) + ePROTOCOL_QMI_RMS_RX, // 510 QMI RMS protocol (incoming) + ePROTOCOL_QMI_RMS_TX, // 511 QMI RMS protocol (outgoing) + ePROTOCOL_QMI_OMA_RX, // 512 QMI OMA protocol (incoming) + ePROTOCOL_QMI_OMA_TX, // 513 QMI OMA protocol (outgoing) + + ePROTOCOL_ENUM_END +}; + +/*=========================================================================== +METHOD: + IsValid (Inline Method) + +DESCRIPTION: + eProtocolType validity check + +PARAMETERS: + pt [ I ] - Enum value being verified + +RETURN VALUE: + bool +===========================================================================*/ +inline bool IsValid( eProtocolType pt ) +{ + bool retVal = false; + if ( (pt > ePROTOCOL_ENUM_BEGIN && pt <= ePROTOCOL_QDL_TX) + || (pt >= ePROTOCOL_DSE_QDU_CMD && pt <= ePROTOCOL_DSE_QMUX_EVT) + || (pt >= ePROTOCOL_QMI_CTL_RX && pt <= ePROTOCOL_QMI_RFRPE_TX) + || (pt >= ePROTOCOL_QMI_CAT_RX && pt < ePROTOCOL_ENUM_END) ) + { + retVal = true; + } + + return retVal; +}; + +/*=========================================================================== +METHOD: + IsQMIProtocol (Inline Method) + +DESCRIPTION: + Does the passed in value represent a QMI protocol? + +PARAMETERS: + pt [ I ] - Enum value being checked + +RETURN VALUE: + bool +===========================================================================*/ +inline bool IsQMIProtocol( eProtocolType pt ) +{ + bool retVal = false; + if ( (pt >= ePROTOCOL_QMI_CTL_RX && pt <= ePROTOCOL_QMI_RFRPE_TX) + || (pt >= ePROTOCOL_QMI_CAT_RX && pt < ePROTOCOL_ENUM_END) ) + { + retVal = true; + } + + return retVal; +}; + +/*=========================================================================== +METHOD: + IsQMIProtocolRX (Inline Method) + +DESCRIPTION: + Does the passed in value represent a QMI protocol and if so in the + incoming direction? + +PARAMETERS: + pt [ I ] - Enum value being checked + +RETURN VALUE: + bool +===========================================================================*/ +inline bool IsQMIProtocolRX( eProtocolType pt ) +{ + bool retVal = false; + + // QMI protocol values that are even are RX + if ( (IsQMIProtocol( pt ) == true) + && ((DWORD)pt % 2 == 0) ) + { + retVal = true; + } + + return retVal; +}; + +/*=========================================================================== +METHOD: + IsQMIProtocolTX (Inline Method) + +DESCRIPTION: + Does the passed in value represent a QMI protocol and if so in the + outgoing direction? + +PARAMETERS: + pt [ I ] - Enum value being checked + +RETURN VALUE: + bool +===========================================================================*/ +inline bool IsQMIProtocolTX( eProtocolType pt ) +{ + bool retVal = false; + + // QMI protocol values that are odd are TX + if ( (IsQMIProtocol( pt ) == true) + && ((DWORD)pt % 2 == 1) ) + { + retVal = true; + } + + return retVal; +}; + +/*=========================================================================== +METHOD: + IsDSEProtocol (Inline Method) + +DESCRIPTION: + Does the passed in value represent a DSE protocol? + +PARAMETERS: + pt [ I ] - Enum value being checked + +RETURN VALUE: + bool +===========================================================================*/ +inline bool IsDSEProtocol( eProtocolType pt ) +{ + bool retVal = false; + if (pt >= ePROTOCOL_DSE_QDU_CMD && pt <= ePROTOCOL_DSE_QMUX_EVT) + { + retVal = true; + } + + return retVal; +}; + +/*=========================================================================== +METHOD: + IsDSEProtocolCmd (Inline Method) + +DESCRIPTION: + Does the passed in value represent a DSE protocol and if so is it a + command? + +PARAMETERS: + pt [ I ] - Enum value being checked + +RETURN VALUE: + bool +===========================================================================*/ +inline bool IsDSEProtocolCmd( eProtocolType pt ) +{ + bool retVal = false; + + if ( (IsDSEProtocol( pt ) == true) + && ((DWORD)pt % 3 == 0) ) + { + retVal = true; + } + + return retVal; +}; + +/*=========================================================================== +METHOD: + IsDSEProtocolRsp (Inline Method) + +DESCRIPTION: + Does the passed in value represent a DSE protocol and if so is it a + response? + +PARAMETERS: + pt [ I ] - Enum value being checked + +RETURN VALUE: + bool +===========================================================================*/ +inline bool IsDSEProtocolRsp( eProtocolType pt ) +{ + bool retVal = false; + + if ( (IsDSEProtocol( pt ) == true) + && ((DWORD)pt % 3 == 1) ) + { + retVal = true; + } + + return retVal; +}; + +/*=========================================================================== +METHOD: + IsDSEProtocolEvt (Inline Method) + +DESCRIPTION: + Does the passed in value represent a DSE protocol and if so is it an + event? + +PARAMETERS: + pt [ I ] - Enum value being checked + +RETURN VALUE: + bool +===========================================================================*/ +inline bool IsDSEProtocolEvt( eProtocolType pt ) +{ + bool retVal = false; + + if ( (IsDSEProtocol( pt ) == true) + && ((DWORD)pt % 3 == 2) ) + { + retVal = true; + } + + return retVal; +}; diff --git a/gobi-api/GobiAPI_2013-07-31-1347/Core/ProtocolLog.cpp b/gobi-api/GobiAPI_2013-07-31-1347/Core/ProtocolLog.cpp new file mode 100644 index 0000000..43556df --- /dev/null +++ b/gobi-api/GobiAPI_2013-07-31-1347/Core/ProtocolLog.cpp @@ -0,0 +1,189 @@ +/*=========================================================================== +FILE: + ProtocolLog.h + +DESCRIPTION: + Simple protocol 'log' class definition + +PUBLIC CLASSES AND METHODS: + cProtocolLog + This class stores protocol buffers in to a flat array (actually a + double-ended queue) so that they can be accessed by other objects + during the flow of normal processing. Note that the storage is + in-memory and therefore finite + +Copyright (c) 2013, The Linux Foundation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +===========================================================================*/ + +//--------------------------------------------------------------------------- +// Include Files +//--------------------------------------------------------------------------- +#include "StdAfx.h" +#include "ProtocolLog.h" + +//--------------------------------------------------------------------------- +// Definitions +//--------------------------------------------------------------------------- + +// The maximum number of in-memory buffers we allow +const ULONG MAX_PROTOCOL_BUFFERS = 1024 * 16; + +/*=========================================================================*/ +// cProtocolLog Methods +/*=========================================================================*/ + +/*=========================================================================== +METHOD: + cProtocolLog (Public Method) + +DESCRIPTION: + Constructor + +PARAMETERS: + maxBuffers [ I ] - Maximum number of buffers to store in the log + +RETURN VALUE: + None +===========================================================================*/ +cProtocolLog::cProtocolLog( ULONG maxBuffers ) + : mLog( maxBuffers > MAX_PROTOCOL_BUFFERS ? MAX_PROTOCOL_BUFFERS : maxBuffers, + true ) +{ + // Nothing to do +} + +/*=========================================================================== +METHOD: + ~cProtocolLog (Public Method) + +DESCRIPTION: + Destructor + +RETURN VALUE: + None +===========================================================================*/ +cProtocolLog::~cProtocolLog() +{ + // Empty out the log + Clear(); +} + +/*=========================================================================== +METHOD: + AddBuffer (Public Method) + +DESCRIPTION: + Add an protocol buffer to the end of the log + +PARAMETERS: + buff [ I ] - Protocol buffer to add + +RETURN VALUE: + ULONG - Index of newly added buffer (INVALID_LOG_INDEX upon failure) +===========================================================================*/ +ULONG cProtocolLog::AddBuffer( sProtocolBuffer & buf ) +{ + ULONG idx = INVALID_LOG_INDEX; + if (buf.IsValid() == false) + { + return idx; + } + + bool bRC = mLog.AddElement( buf, idx ); + if (bRC == false) + { + idx = INVALID_LOG_INDEX; + } + + return idx; +} + +/*=========================================================================== +METHOD: + GetBuffer (Public Method) + +DESCRIPTION: + Return the protocol buffer at the given index from the log + +PARAMETERS: + idx [ I ] - Index of protocol buffer to obtain + +RETURN VALUE: + sProtocolBuffer - Protocol buffer +===========================================================================*/ +sProtocolBuffer cProtocolLog::GetBuffer( ULONG idx ) const +{ + sProtocolBuffer buf; + mLog.GetElement( idx, buf ); + return buf; +} + +/*=========================================================================== +METHOD: + GetSignalEvent (Public Method) + +DESCRIPTION: + Return the underlying signal event, which will be set when + the log is updated. + +RETURN VALUE: + cEvent - Signal event +===========================================================================*/ +cEvent & cProtocolLog::GetSignalEvent() const +{ + return mLog.GetSignalEvent(); +} + +/*=========================================================================== +METHOD: + GetCount (Public Method) + +DESCRIPTION: + Return the total number of buffers added to the log + +RETURN VALUE: + ULONG +===========================================================================*/ +ULONG cProtocolLog::GetCount() const +{ + return mLog.GetTotalCount(); +} + +/*=========================================================================== +METHOD: + Clear (Public Method) + +DESCRIPTION: + Clear the log + +RETURN VALUE: + None +===========================================================================*/ +void cProtocolLog::Clear() +{ + mLog.EmptyQueue(); +} diff --git a/gobi-api/GobiAPI_2013-07-31-1347/Core/ProtocolLog.h b/gobi-api/GobiAPI_2013-07-31-1347/Core/ProtocolLog.h new file mode 100644 index 0000000..024defc --- /dev/null +++ b/gobi-api/GobiAPI_2013-07-31-1347/Core/ProtocolLog.h @@ -0,0 +1,90 @@ +/*=========================================================================== +FILE: + ProtocolLog.h + +DESCRIPTION: + Simple protocol 'log' class declaration + +PUBLIC CLASSES AND METHODS: + cProtocolLog + This class stores protocol buffers in to a flat array (actually a + double-ended queue) so that they can be accessed by other objects + during the flow of normal processing. Note that the storage is + in-memory and therefore finite + +Copyright (c) 2013, The Linux Foundation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +===========================================================================*/ + +//--------------------------------------------------------------------------- +// Pragmas +//--------------------------------------------------------------------------- +#pragma once + +//--------------------------------------------------------------------------- +// Include Files +//--------------------------------------------------------------------------- +#include "ProtocolBuffer.h" +#include "SyncQueue.h" + +#include + +//--------------------------------------------------------------------------- +// Definitions +//--------------------------------------------------------------------------- +const ULONG INVALID_LOG_INDEX = ULONG_MAX; + +/*=========================================================================*/ +// Class cProtocolLog +/*=========================================================================*/ +class cProtocolLog +{ + public: + // Constructor + cProtocolLog( ULONG maxBuffers ); + + // Destructor + virtual ~cProtocolLog(); + + // Add an protocol buffer to the end of the log + virtual ULONG AddBuffer( sProtocolBuffer & buf ); + + // Return the protocol buffer at the given index from the log + virtual sProtocolBuffer GetBuffer( ULONG idx ) const; + + // Return the underlying signal event + virtual cEvent & GetSignalEvent() const; + + // Return the total number of buffers added to the log + virtual ULONG GetCount() const; + + // Clear the log + virtual void Clear(); + + protected: + /* The underlying 'log' */ + cSyncQueue mLog; +}; diff --git a/gobi-api/GobiAPI_2013-07-31-1347/Core/ProtocolNotification.cpp b/gobi-api/GobiAPI_2013-07-31-1347/Core/ProtocolNotification.cpp new file mode 100644 index 0000000..eec26e6 --- /dev/null +++ b/gobi-api/GobiAPI_2013-07-31-1347/Core/ProtocolNotification.cpp @@ -0,0 +1,170 @@ +/*=========================================================================== +FILE: + ProtocolNotification.cpp + +DESCRIPTION: + Implementation of cProtocolNotification base class and derivations + +PUBLIC CLASSES AND METHODS: + sProtocolNotificationEvent + Generic protocol event notification structure + + cProtocolNotification + This abstract base class provides notification of protocol server + events sent from the protocol server to protocol server clients + + cProtocolQueueNotification + This class provides notification via a cSyncQueue object + populated with sProtocolNotificationEvent objects + +Copyright (c) 2013, The Linux Foundation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +===========================================================================*/ + +//--------------------------------------------------------------------------- +// Include Files +//--------------------------------------------------------------------------- +#include "StdAfx.h" +#include "ProtocolNotification.h" + +//--------------------------------------------------------------------------- +// Definitions +//--------------------------------------------------------------------------- + +/*=========================================================================*/ +// cProtocolQueueNotification Methods +/*=========================================================================*/ + +/*=========================================================================== +METHOD: + cProtocolQueueNotification (Public Method) + +DESCRIPTION: + Constructor + +PARAMETERS: + pSQ [ I ] - Sync queue to utilize + +RETURN VALUE: + None +===========================================================================*/ +cProtocolQueueNotification::cProtocolQueueNotification( + cSyncQueue * pSQ ) + : mpSQ( pSQ ) +{ + // Nothing to do +} + +/*=========================================================================== +METHOD: + cProtocolQueueNotification (Public Method) + +DESCRIPTION: + Copy constructor + +PARAMETERS: + notifier [ I ] - Notifier to base the new one on + +RETURN VALUE: + None +===========================================================================*/ +cProtocolQueueNotification::cProtocolQueueNotification( + const cProtocolQueueNotification & notifier ) + : mpSQ( notifier.mpSQ ) +{ + // Nothing to do +} + +/*=========================================================================== +METHOD: + ~cProtocolQueueNotification (Public Method) + +DESCRIPTION: + Destructor + +RETURN VALUE: + None +===========================================================================*/ +cProtocolQueueNotification::~cProtocolQueueNotification() +{ + mpSQ = 0; +} + +/*=========================================================================== +METHOD: + Clone (Public Method) + +DESCRIPTION: + Return an allocated copy of this object downcasted to our base class + +RETURN VALUE: + cProtocolNotification * : Cloned object (0 on error) +===========================================================================*/ +cProtocolNotification * cProtocolQueueNotification::Clone() const +{ + cProtocolQueueNotification * pCopy = 0; + + try + { + pCopy = new cProtocolQueueNotification( *this ); + } + catch (...) + { + // Simply return 0 + } + + return ((cProtocolNotification *)pCopy); +} + +/*=========================================================================== +METHOD: + Notify (Public Method) + +DESCRIPTION: + Notify view of a protocol event by adding notification structure to + the underlying sync queue (which will provide the notification + by signalling an event) + +PARAMETERS: + eventType [ I ] - Protocol event type + param1 [ I ] - Event type specific argument (see header description) + param2 [ I ] - Event type specific argument (see header description) + +RETURN VALUE: + None +===========================================================================*/ +void cProtocolQueueNotification::Notify( + eProtocolEventType eventType, + DWORD param1, + DWORD param2 ) const +{ + sProtocolNotificationEvent evt( eventType, param1, param2 ); + if (evt.IsValid() == true && mpSQ != 0 && mpSQ->IsValid() == true) + { + sProtocolNotificationEvent elem( eventType, param1, param2 ); + mpSQ->AddElement( elem ); + } +} diff --git a/gobi-api/GobiAPI_2013-07-31-1347/Core/ProtocolNotification.h b/gobi-api/GobiAPI_2013-07-31-1347/Core/ProtocolNotification.h new file mode 100644 index 0000000..c76dd59 --- /dev/null +++ b/gobi-api/GobiAPI_2013-07-31-1347/Core/ProtocolNotification.h @@ -0,0 +1,236 @@ +/*=========================================================================== +FILE: + ProtocolNotification.h + +DESCRIPTION: + Declaration of cProtocolNotification base class and derivations + +PUBLIC CLASSES AND METHODS: + sProtocolNotificationEvent + Generic protocol event notification structure + + cProtocolNotification + This abstract base class provides notification of protocol server + events sent from the protocol server to protocol server clients + + cProtocolQueueNotification + This class provides notification via a cSyncQueue object + populated with sProtocolNotificationEvent objects + +Copyright (c) 2013, The Linux Foundation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +===========================================================================*/ + +//--------------------------------------------------------------------------- +// Pragmas +//--------------------------------------------------------------------------- +#pragma once + +//--------------------------------------------------------------------------- +// Include Files +//--------------------------------------------------------------------------- +#include "SyncQueue.h" + +//--------------------------------------------------------------------------- +// Definitions +//--------------------------------------------------------------------------- +enum eProtocolEventType +{ + ePROTOCOL_EVT_BEGIN = -1, + + ePROTOCOL_EVT_REQ_ERR, // There was an error sending the request + ePROTOCOL_EVT_REQ_SENT, // The request has been sent + + ePROTOCOL_EVT_RSP_ERR, // There was an error receiving the response + ePROTOCOL_EVT_RSP_RECV, // The response has been received + + ePROTOCOL_EVT_AUX_TU_SENT, // Auxiliary data transmission unit sent + + ePROTOCOL_EVT_END +}; + +// NOTE: The arguments for each event are currently as follows: +// +// ePROTOCOL_EVT_REQ_ERR +// param1: Request ID +// param2: Error code +// +// ePROTOCOL_EVT_REQ_SENT +// param1: Request ID +// param2: Index of request buffer in associated protocol log + +// ePROTOCOL_EVT_RSP_ERR +// param1: Request ID +// param2: Error code +// +// ePROTOCOL_EVT_RSP_RECV +// param1: Request ID +// param2: Index of response buffer in associated protocol log +// +// ePROTOCOL_EVT_AUX_TU_SENT +// param1: Request ID +// param2: Size of transmission unit + +// NOTE: To handle protoocl events using the Windows notifier add the following +// prototype to your Window class header file: +// +// afx_msg LRESULT OnProtocolEvent( +// WPARAM wParam, +// LPARAM lParam ); +// +// Then add an entry to the message map in your Window class source file: +// +// BEGIN_MESSAGE_MAP( CView, CChildView ) +// ON_MESSAGE( PROTOCOL_WM_BASE + (ULONG)ePROTOCOL_EVT_XXX, OnProtocolEvent ) +// END_MESSAGE_MAP() +// +// Finally write the handler itself: +// +// LRESULT CView::OnProtocolEvent( +// WPARAM wParam, +// LPARAM lParam ) +// { +// Do something +// return 0; +// } + +/*=========================================================================== +METHOD: + IsValid (Inline Method) + +DESCRIPTION: + eProtocolEventType validity check + +PARAMETERS: + evtType [ I ] - Enum value being verified + +RETURN VALUE: + bool +===========================================================================*/ +inline bool IsValid( eProtocolEventType evtType ) +{ + bool bRC = false; + if (evtType > ePROTOCOL_EVT_BEGIN && evtType < ePROTOCOL_EVT_END) + { + bRC = true; + } + + return bRC; +}; + +/*=========================================================================*/ +// Struct sProtocolNotificationEvent +/*=========================================================================*/ +struct sProtocolNotificationEvent +{ + public: + // (Inline) Default constructor (results in invalid object) + sProtocolNotificationEvent() + : mEventType( ePROTOCOL_EVT_BEGIN ), + mParam1( 0 ), + mParam2( 0 ) + { + // Nothing to do + }; + + // (Inline) Parameter constructor + sProtocolNotificationEvent( + eProtocolEventType eventType, + DWORD param1, + DWORD param2 ) + : mEventType( eventType ), + mParam1( param1 ), + mParam2( param2 ) + { + // Nothing to do + }; + + // (Inline) Is this object valid? + bool IsValid() + { + return ::IsValid( mEventType ); + } + + /* Event type */ + eProtocolEventType mEventType; + + /* First parameter (see above) */ + DWORD mParam1; + + /* Second parameter (see above) */ + DWORD mParam2; +}; + +/*=========================================================================*/ +// Class cProtocolNotification +// +// This abstract base class provides notification of protocol server +// events sent from the protocol server to protocol server clients +/*=========================================================================*/ +class cProtocolNotification +{ + public: + // Return an allocated copy of this object + virtual cProtocolNotification * Clone() const = 0; + + // Notify view of a protocol event + virtual void Notify( + eProtocolEventType eventType, + DWORD param1, + DWORD param2 ) const = 0; +}; + +/*=========================================================================*/ +// Class cProtocolQueueNotification +// +// This class provides notification via a cSyncQueue object +// populated with sProtocolNotificationEvent objects +/*=========================================================================*/ +class cProtocolQueueNotification : public cProtocolNotification +{ + public: + // Constructor + cProtocolQueueNotification( cSyncQueue * pSQ ); + + // Copy constructor + cProtocolQueueNotification( const cProtocolQueueNotification & notifier ); + + // Destructor + virtual ~cProtocolQueueNotification(); + + // Return a copy of this object + virtual cProtocolNotification * Clone() const; + + // Notify view of a MIS event + virtual void Notify( + eProtocolEventType eventType, + DWORD param1, + DWORD param2 ) const; + + protected: + /* Event notification queue */ + mutable cSyncQueue * mpSQ; +}; diff --git a/gobi-api/GobiAPI_2013-07-31-1347/Core/ProtocolRequest.cpp b/gobi-api/GobiAPI_2013-07-31-1347/Core/ProtocolRequest.cpp new file mode 100644 index 0000000..c001415 --- /dev/null +++ b/gobi-api/GobiAPI_2013-07-31-1347/Core/ProtocolRequest.cpp @@ -0,0 +1,253 @@ +/*=========================================================================== +FILE: + ProtocolRequest.cpp + +DESCRIPTION: + Generic protocol request/command related structures and + affliated methods, these structures are used by clients of + the protocol server to specify outgoing requests + +PUBLIC CLASSES AND METHODS: + sProtocolRequest + +Copyright (c) 2013, The Linux Foundation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +===========================================================================*/ + +//--------------------------------------------------------------------------- +// Include Files +//--------------------------------------------------------------------------- +#include "StdAfx.h" + +#include "ProtocolRequest.h" +#include "ProtocolNotification.h" +#include "ProtocolServer.h" + +//--------------------------------------------------------------------------- +// Definitions +//--------------------------------------------------------------------------- + +// Default protocol request timeout +const ULONG DEFAULT_REQ_TIMEOUT = 1000; + +// Minimum and maximum allowable timeout values (in milliseconds) +const ULONG MIN_REQ_TIMEOUT = 100; +const ULONG MAX_REQ_TIMEOUT = 300000; + +// Minimum number of attempts a request can be scheduled for +const ULONG MIN_REQ_ATTEMPTS = 1; + +// Value to indicate that a request is to be sent out indefinately +const ULONG INFINITE_REQS = 0xFFFFFFFF; + +// Minimum/default amount of time between repeated requests (in milliseconds) +const ULONG MIN_REQ_FREQUENCY = 10; +const ULONG DEFAULT_REQ_FREQUENCY = 100; + +/*=========================================================================*/ +// sProtocolRequest Methods +/*=========================================================================*/ + +/*=========================================================================== +METHOD: + sProtocolRequest + +DESCRIPTION: + Parameterized constructor + +PARAMETERS: + pBuffer [ I ] - Shareable buffer representing the request (must be + valid) + + schedule [ I ] - When (from now, in milliseconds) to send the first + request, this isn't a hard value as the request is + only guaranteed to go out after this time elapses + + timeout [ I ] - Milliseconds to wait for a response to an individual + request before declaring a timeout. Regardless of + what is passed in the timeout value used will be + between MIN/MAX_REQ_TIMEOUT + + requests [ I ] - Number of request attempts to make, this isn't a + retry count rather this value is used to specify + repeating requests. Regardless of what is passed in + the requests value used will be at least + MIN_REQ_ATTEMPTS + + frequency [ I ] - If the 'requests' value is greater than the + MIN_REQ_ATTEMPTS than this represents the amount of + time to wait between requests (from the completion of + the last request attempt, in milliseconds), again this + isn't a hard value. Regardless of what is passed in + the frequency value used will be at least + MIN_REQ_FREQUENCY + + pNotifier [ I ] - Status notification mechanism (may be 0) + + +RETURN VALUE: + None +===========================================================================*/ +sProtocolRequest::sProtocolRequest( + sSharedBuffer * pBuffer, + ULONG schedule, + ULONG timeout, + ULONG requests, + ULONG frequency, + cProtocolNotification * pNotifier ) + : sProtocolBuffer( pBuffer ), + mSchedule( schedule ), + mTimeout( DEFAULT_REQ_TIMEOUT ), + mRequests( MIN_REQ_ATTEMPTS ), + mFrequency( DEFAULT_REQ_FREQUENCY ), + mpNotifier( 0 ), + mpAuxData( 0 ), + mAuxDataSize( 0 ), + mbTXOnly( false ) +{ + // Constrain requested timeout to allowable range + if (timeout < MIN_REQ_TIMEOUT) + { + timeout = MIN_REQ_TIMEOUT; + } + + if (timeout > MAX_REQ_TIMEOUT) + { + timeout = MAX_REQ_TIMEOUT; + } + + mTimeout = timeout; + + // Constrain request attempts + if (requests >= MIN_REQ_ATTEMPTS) + { + mRequests = requests; + } + + // Constrain frequency + if (frequency >= MIN_REQ_FREQUENCY) + { + mFrequency = frequency; + } + + // Clone notifier? + if (pNotifier != 0) + { + mpNotifier = pNotifier->Clone(); + } +} + +/*=========================================================================== +METHOD: + sProtocolRequest + +DESCRIPTION: + Parameterized constructor (notification with defaults) + +PARAMETERS: + pBuffer [ I ] - Shareable buffer representing the request (must be + valid) + + pNotifier [ I ] - Status notification mechanism (may be 0) + + +RETURN VALUE: + None +===========================================================================*/ +sProtocolRequest::sProtocolRequest( + sSharedBuffer * pBuffer, + cProtocolNotification * pNotifier ) + : sProtocolBuffer( pBuffer ), + mSchedule( 0 ), + mTimeout( DEFAULT_REQ_TIMEOUT ), + mRequests( MIN_REQ_ATTEMPTS ), + mFrequency( DEFAULT_REQ_FREQUENCY ), + mpNotifier( pNotifier ), + mpAuxData( 0 ), + mAuxDataSize( 0 ), + mbTXOnly( false ) +{ + // Clone notifier? + if (pNotifier != 0) + { + mpNotifier = pNotifier->Clone(); + } + + Validate(); +} + +/*=========================================================================== +METHOD: + sProtocolRequest + +DESCRIPTION: + Copy constructor + +PARAMETERS: + req [ I ] - Request to copy + +RETURN VALUE: + None +===========================================================================*/ +sProtocolRequest::sProtocolRequest( const sProtocolRequest & req ) + : sProtocolBuffer( req ), + mSchedule( req.mSchedule ), + mTimeout( req.mTimeout ), + mRequests( req.mRequests ), + mFrequency( req.mFrequency ), + mpNotifier( 0 ), + mpAuxData( req.mpAuxData ), + mAuxDataSize( req.mAuxDataSize ), + mbTXOnly( req.mbTXOnly ) +{ + // Clone notifier? + if (req.mpNotifier != 0) + { + mpNotifier = req.mpNotifier->Clone(); + } + + Validate(); +} + +/*=========================================================================== +METHOD: + ~sProtocolRequest + +DESCRIPTION: + Destructor + +RETURN VALUE: + None +===========================================================================*/ +sProtocolRequest::~sProtocolRequest() +{ + // Delete cloned notifier? + if (mpNotifier != 0) + { + delete mpNotifier; + mpNotifier = 0; + } +} diff --git a/gobi-api/GobiAPI_2013-07-31-1347/Core/ProtocolRequest.h b/gobi-api/GobiAPI_2013-07-31-1347/Core/ProtocolRequest.h new file mode 100644 index 0000000..c0da8e9 --- /dev/null +++ b/gobi-api/GobiAPI_2013-07-31-1347/Core/ProtocolRequest.h @@ -0,0 +1,192 @@ +/*=========================================================================== +FILE: + ProtocolRequest.h + +DESCRIPTION: + Generic protocol request/command related structures and + affliated methods, these structures are used by clients of + the protocol server to specify outgoing protocol requests + +PUBLIC CLASSES AND METHODS: + sProtocolRequest + +Copyright (c) 2013, The Linux Foundation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +===========================================================================*/ + +//--------------------------------------------------------------------------- +// Pragmas +//--------------------------------------------------------------------------- +#pragma once + +//--------------------------------------------------------------------------- +// Include Files +//--------------------------------------------------------------------------- +#include "ProtocolBuffer.h" + +//--------------------------------------------------------------------------- +// Forward Declarations +//--------------------------------------------------------------------------- +class cProtocolNotification; + +//--------------------------------------------------------------------------- +// Definitions +//--------------------------------------------------------------------------- + +// Default protocol request timeout +extern const ULONG DEFAULT_REQ_TIMEOUT; + +// Minimum and maximum allowable timeout values (in milliseconds) +extern const ULONG MIN_REQ_TIMEOUT; +extern const ULONG MAX_REQ_TIMEOUT; + +// Minimum number of attempts a request can be scheduled for +extern const ULONG MIN_REQ_ATTEMPTS; + +// Value to indicate that a request is to be sent out indefinately +extern const ULONG INFINITE_REQS; + +// Minimum/default amount of time between repeated requests (in milliseconds) +extern const ULONG MIN_REQ_FREQUENCY; +extern const ULONG DEFAULT_REQ_FREQUENCY; + +/*=========================================================================*/ +// Struct sProtocolRequest +// +// Structure to represent a generic request packet, including all the +// information needed to schedule the request, send the request, and +// (optionally) reschedule the request for another TX/RX attempt +// +// The default parameters schedule an immediate request (indicated by +// passing in '0' for the schedule parameter) to be sent once with +// the default timeout value +/*=========================================================================*/ +struct sProtocolRequest : public sProtocolBuffer +{ + public: + // Parameterized constructor + sProtocolRequest( + sSharedBuffer * pBuffer, + ULONG schedule = 0, + ULONG timeout = DEFAULT_REQ_TIMEOUT, + ULONG requests = MIN_REQ_ATTEMPTS, + ULONG frequency = DEFAULT_REQ_FREQUENCY, + cProtocolNotification * pNotifier = 0 ); + + // Parameterized constructor (notification with defaults) + sProtocolRequest( + sSharedBuffer * pBuffer, + cProtocolNotification * pNotifier ); + + // Copy constructor + sProtocolRequest( const sProtocolRequest & req ); + + // Destructor + virtual ~sProtocolRequest(); + + // (Inline) Get schedule value (value is in milliseconds) + ULONG GetSchedule() const + { + return mSchedule; + }; + + // (Inline) Get timeout value + ULONG GetTimeout() const + { + return mTimeout; + }; + + // (Inline) Get requests value + ULONG GetRequests() const + { + return mRequests; + }; + + // (Inline) Get frequency value (value is in milliseconds) + ULONG GetFrequency() const + { + return mFrequency; + }; + + const cProtocolNotification * GetNotifier() const + { + return mpNotifier; + }; + + // (Inline) Set auxiliary data + void SetAuxiliaryData( + const BYTE * pData, + ULONG dataSz ) + { + mpAuxData = pData; + mAuxDataSize = dataSz; + }; + + // (Inline) Get auxiliary data + const BYTE * GetAuxiliaryData( ULONG & dataSz ) const + { + dataSz = mAuxDataSize; + return mpAuxData; + }; + + // (Inline) Set TX only flag + void SetTXOnly() + { + mbTXOnly = true; + }; + + // (Inline) Get TX only flag + bool IsTXOnly() const + { + return mbTXOnly; + }; + + protected: + /* Schedule (approximately when to send the initial request) */ + ULONG mSchedule; + + /* Timeout value for receiving a response */ + ULONG mTimeout; + + /* Number of requests to schedule (must be at least one) */ + ULONG mRequests; + + /* Frequency (approximately how long to wait before next request) */ + ULONG mFrequency; + + /* Notification object */ + cProtocolNotification * mpNotifier; + + /* Auxiliary data */ + const BYTE * mpAuxData; + + /* Auxilary data size */ + ULONG mAuxDataSize; + + /* TX only (i.e. do not wait for a response) ? */ + bool mbTXOnly; +}; + diff --git a/gobi-api/GobiAPI_2013-07-31-1347/Core/ProtocolServer.cpp b/gobi-api/GobiAPI_2013-07-31-1347/Core/ProtocolServer.cpp new file mode 100644 index 0000000..ae5e414 --- /dev/null +++ b/gobi-api/GobiAPI_2013-07-31-1347/Core/ProtocolServer.cpp @@ -0,0 +1,1749 @@ +/*=========================================================================== +FILE: + ProtocolServer.cpp + +DESCRIPTION: + Generic protocol packet server + +PUBLIC CLASSES AND METHODS: + cProtocolServer + Abstract base class for protocol servers + +Copyright (c) 2013, The Linux Foundation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +===========================================================================*/ + +//--------------------------------------------------------------------------- +// Include Files +//--------------------------------------------------------------------------- +#include "StdAfx.h" + +#include "ProtocolServer.h" +#include "ProtocolNotification.h" + +#include + +//--------------------------------------------------------------------------- +// Definitions +//--------------------------------------------------------------------------- + +// Invalid request ID +const ULONG INVALID_REQUEST_ID = 0; + +// Default activity timeout value +const ULONG DEFAULT_WAIT = 100; + +// MTU (Maximum Transmission Unit) for auxiliary data (QC USB imposed) +const ULONG MAX_AUX_MTU_SIZE = 1024 * 256; + +// USB's MaxPacketSize +const ULONG MAX_PACKET_SIZE = 512; + +// Maximum amount of time to wait on external access synchronization object +#ifdef DEBUG + // For the sake of debugging do not be so quick to assume failure + const ULONG DEADLOCK_TIME = 180000; +#else + const ULONG DEADLOCK_TIME = 10000; +#endif + +// Maximum amount of time to wait for the protocol server to process a command +const ULONG COMMAND_TIME = DEADLOCK_TIME; + +/*=========================================================================*/ +// Free Methods +/*=========================================================================*/ + +/*=========================================================================== +METHOD: + ScheduleThread (Free Method) + +DESCRIPTION: + Watch schedule for event to process or timeout + +PARAMETERS: + pArg [ I ] - The protocol server object + +RETURN VALUE: + void * - thread exit value (always NULL) +===========================================================================*/ +void * ScheduleThread( PVOID pArg ) +{ + // Do we have a server? + cProtocolServer * pServer = (cProtocolServer *)pArg; + if (pServer == 0) + { + TRACE( "ScheduleThread started with empty pArg." + " Unable to locate cProtocolServer\n" ); + + ASSERT( 0 ); + return NULL; + } + + TRACE( "Schedule thread [%lu] started\n", + pthread_self() ); + + // Default wait event + timespec toTime = TimeIn( DEFAULT_WAIT ); + + // Return value checking + int nRet; + + while (pServer->mbExiting == false) + { + DWORD nTemp; + nRet = pServer->mThreadScheduleEvent.Wait( TimeFromNow( toTime ), nTemp ); + if (nRet != 0 && nRet != ETIME) + { + // Error condition + TRACE( "ScheduleThread [%lu] ScheduleThread wait error %d, %s\n", + pthread_self(), + nRet, + strerror( nRet ) ); + break; + } + + // Time to exit? + if (pServer->mbExiting == true) + { + break; + } + + // Get Schedule Mutex (non-blocking) + nRet = pthread_mutex_trylock( &pServer->mScheduleMutex ); + if (nRet == EBUSY) + { + // Not an error, we're just too slow + // Someone else got to the ScheduleMutex before us + // We'll wait for the signal again + toTime = TimeIn( DEFAULT_WAIT ); + TRACE( "ScheduleThread [%lu] unable to lock ScheduleMutex\n", + pthread_self() ); + continue; + } + else if (nRet != 0) + { + // Error condition + TRACE( "ScheduleThread [%lu] mScheduleMutex error %d, %s\n", + pthread_self(), + nRet, + strerror( nRet ) ); + break; + } + + // Verify time. In the rare event it does move backward + // it would simply place all our schedule items as due now + pServer->CheckSystemTime(); + + // Default next wait period + toTime = TimeIn( DEFAULT_WAIT ); + + timespec curTime = TimeIn( 0 ); + + if (pServer->mpActiveRequest != 0) + { + if (pServer->mpActiveRequest->mbWaitingForResponse == true) + { + // Waiting on a response, this takes priority over the next + // scheduled event + + // Has timeout expired? + if (pServer->mActiveRequestTimeout <= curTime) + { + // Response timeout + + // Note: This may clear mpActiveRequest + pServer->RxTimeout(); + } + else + { + // Active response timer is not yet due to expire + // Default timeout again, or this response's timeout? + if (pServer->mActiveRequestTimeout <= toTime) + { + toTime = pServer->mActiveRequestTimeout; + } + } + } + else + { + // This should never happen + + TRACE( "ScheduleThread() Sequencing error: " + "Active request %lu is not waiting for response ???\n", + pServer->mpActiveRequest->mID ); + + break; + } + } + + if (pServer->mpActiveRequest == 0 + && pServer->mRequestSchedule.size() > 0) + { + // No response timer active, ready to start the next + // scheduled item if due + + timespec scheduledItem = pServer->GetNextRequestTime(); + + // Is item due to be scheduled? + if (scheduledItem <= curTime) + { + // Process scheduled item + pServer->ProcessRequest(); + } + else + { + // Scheduled item is not yet due to be processed + // Default timeout again, or this item's start time? + if (scheduledItem <= toTime) + { + toTime = scheduledItem; + } + } + } + + /*TRACE( "Updated timer at %llu waiting %lu\n", + GetTickCount(), + TimeFromNow( toTime ) ); */ + + // Unlock schedule mutex + nRet = pthread_mutex_unlock( &pServer->mScheduleMutex ); + if (nRet != 0) + { + TRACE( "ScheduleThread Unable to unlock schedule mutex." + " Error %d: %s\n", + nRet, + strerror( nRet ) ); + return false; + } + } + + TRACE( "Schedule thread [%lu] exited\n", + pthread_self() ); + + return NULL; +} + +/*=========================================================================== +METHOD: + TimeIn (Free Method) + +DESCRIPTION: + Fill timespec with the time it will be in specified milliseconds + Relative time to Absolute time + +PARAMETERS: + millis [ I ] - Milliseconds from current time + +RETURN VALUE: + timespec - resulting time (from epoc) + NOTE: tv_sec of 0 is an error +===========================================================================*/ +timespec TimeIn( ULONG millis ) +{ + timespec outTime; + + int nRC = clock_gettime( CLOCK_REALTIME, &outTime ); + if (nRC == 0) + { + // Add avoiding an overflow on (long)nsec + outTime.tv_sec += millis / 1000l; + outTime.tv_nsec += ( millis % 1000l ) * 1000000l; + + // Check if we need to carry + if (outTime.tv_nsec >= 1000000000l) + { + outTime.tv_sec += outTime.tv_nsec / 1000000000l; + outTime.tv_nsec = outTime.tv_nsec % 1000000000l; + } + } + else + { + outTime.tv_sec = 0; + outTime.tv_nsec = 0; + } + + return outTime; +} + +/*=========================================================================== +METHOD: + TimeFromNow (Free Method) + +DESCRIPTION: + Find the milliseconds from current time this timespec will occur + Absolute time to Relative time + +PARAMETERS: + time [ I ] - Absolute time + +RETURN VALUE: + Milliseconds in which absolute time will occur + 0 if time has passed or error has occured +===========================================================================*/ +ULONG TimeFromNow( timespec time ) +{ + // Assume failure + ULONG nOutTime = 0; + + timespec now; + int nRC = clock_gettime( CLOCK_REALTIME, &now ); + if (nRC == -1) + { + TRACE( "Error %d with gettime, %s\n", errno, strerror( errno ) ); + return nOutTime; + } + + if (time <= now) + { + return nOutTime; + } + + nOutTime = (time.tv_sec - now.tv_sec) * 1000l; + nOutTime += (time.tv_nsec - now.tv_nsec) / 1000000l; + + return nOutTime; +} + +/*=========================================================================== +METHOD: + GetTickCount (Free Method) + +DESCRIPTION: + Provide a number for sequencing reference, similar to the windows + ::GetTickCount(). + + NOTE: This number is based on the time since epoc, not + uptime. + +PARAMETERS: + +RETURN VALUE: + ULONGLONG - Number of milliseconds system has been up +===========================================================================*/ +ULONGLONG GetTickCount() +{ + timespec curtime = TimeIn( 0 ); + + ULONGLONG outtime = curtime.tv_sec * 1000LL; + outtime += curtime.tv_nsec / 1000000LL; + + return outtime; +} + +/*=========================================================================*/ +// cProtocolServerRxCallback Methods +/*=========================================================================*/ + +/*=========================================================================== +METHOD: + IOComplete (Free Method) + +DESCRIPTION: + The I/O has been completed, process the results + +PARAMETERS: + status [ I ] - Status of operation + bytesReceived [ I ] - Bytes received during operation + +RETURN VALUE: + None +===========================================================================*/ +void cProtocolServerRxCallback::IOComplete( + DWORD status, + DWORD bytesReceived ) +{ + if (mpServer != 0) + { + mpServer->RxComplete( status, bytesReceived ); + } +} + +/*=========================================================================*/ +// cProtocolServer::sProtocolReqRsp Methods +/*=========================================================================*/ + +/*=========================================================================== +METHOD: + cProtocolServer::sProtocolReqRsp (Public Method) + +DESCRIPTION: + Constructor + +PARAMETERS: + requestInfo [ I ] - Underlying request object + requestID [ I ] - Request ID + auxDataMTU [ I ] - MTU (Maximum Transmission Unit) for auxiliary data + +RETURN VALUE: + None +===========================================================================*/ +cProtocolServer::sProtocolReqRsp::sProtocolReqRsp( + const sProtocolRequest & requestInfo, + ULONG requestID, + ULONG auxDataMTU ) + : mRequest( requestInfo ), + mID( requestID ), + mAttempts( 0 ), + mEncodedSize( requestInfo.GetSize() ), + mRequiredAuxTxs( 0 ), + mCurrentAuxTx( 0 ), + mbWaitingForResponse( false ) +{ + ULONG auxDataSz = 0; + const BYTE * pAuxData = requestInfo.GetAuxiliaryData( auxDataSz ); + + // Compute the number of required auxiliary data transmissions? + if (auxDataMTU > 0 && pAuxData != 0 && auxDataSz > 0) + { + mRequiredAuxTxs = 1; + if (auxDataSz > auxDataMTU) + { + mRequiredAuxTxs = auxDataSz / auxDataMTU; + if ((auxDataSz % auxDataMTU) != 0) + { + mRequiredAuxTxs++; + } + } + } +} + +/*=========================================================================== +METHOD: + cProtocolServer::sProtocolReqRsp (Public Method) + +DESCRIPTION: + Copy constructor + +PARAMETERS: + reqRsp [ I ] - Object being copied + +RETURN VALUE: + None +===========================================================================*/ +cProtocolServer::sProtocolReqRsp::sProtocolReqRsp( + const sProtocolReqRsp & reqRsp ) + : mRequest( reqRsp.mRequest ), + mID( reqRsp.mID ), + mAttempts( reqRsp.mAttempts ), + mEncodedSize( reqRsp.mEncodedSize ), + mRequiredAuxTxs( reqRsp.mRequiredAuxTxs ), + mCurrentAuxTx( reqRsp.mCurrentAuxTx ), + mbWaitingForResponse( reqRsp.mbWaitingForResponse ) +{ + // Nothing to do +}; + +/*=========================================================================*/ +// cProtocolServer Methods +/*=========================================================================*/ + +/*=========================================================================== +METHOD: + cProtocolServer (Public Method) + +DESCRIPTION: + Constructor + +PARAMETERS: + rxType [ I ] - Protocol type to assign to incoming data + txType [ I ] - Protocol type to verify for outgoing data + bufferSzRx [ I ] - Size of data buffer for incoming data + logSz [ I ] - Size of log (number of buffers) + +SEQUENCING: + None (constructs sequencing objects) + +RETURN VALUE: + None +===========================================================================*/ +cProtocolServer::cProtocolServer( + eProtocolType rxType, + eProtocolType txType, + ULONG bufferSzRx, + ULONG logSz ) + : mpConnection( 0 ), + mConnectionType( eConnectionType_Begin ), + mRxCallback(), + mScheduleThreadID( 0 ), + mThreadScheduleEvent(), + mbExiting( false ), + mpServerControl( 0 ), + mLastRequestID( 1 ), + mpActiveRequest( 0 ), + mpRxBuffer( 0 ), + mRxBufferSize( bufferSzRx ), + mRxType( rxType ), + mTxType( txType ), + mLog( logSz ) +{ + mLastTime = TimeIn( 0 ); + + // Allocate receive buffer? + if (mRxBufferSize > 0) + { + mpRxBuffer = new BYTE[mRxBufferSize]; + } + + // Before continuing verify receive buffer was allocated + if (mpRxBuffer != 0) + { + // Schedule mutex + int nRet = pthread_mutex_init( &mScheduleMutex, NULL ); + if (nRet != 0) + { + TRACE( "Unable to init schedule mutex. Error %d: %s\n", + nRet, + strerror( nRet ) ); + return; + } + } +} + +/*=========================================================================== +METHOD: + ~cProtocolServer (Public Method) + +DESCRIPTION: + Destructor + +SEQUENCING: + None (destroys sequencing objects) + +RETURN VALUE: + None +===========================================================================*/ +cProtocolServer::~cProtocolServer() +{ + // This should have already been called, but ... + Exit(); + + // Schedule mutex + int nRet = pthread_mutex_destroy( &mScheduleMutex ); + if (nRet != 0) + { + TRACE( "Unable to destroy schedule mutex. Error %d: %s\n", + nRet, + strerror( nRet ) ); + } + + // Free receive buffer + if (mpRxBuffer != 0) + { + delete [] mpRxBuffer; + mpRxBuffer = 0; + } +} + +/*=========================================================================== +METHOD: + HandleRemoveRequest (Public Method) + +DESCRIPTION: + Remove a previously added protocol request + + Note: if a request is being processed, it cannot be inturrupted + +PARAMETERS: + reqID [ I ] - Server assigned request ID + +SEQUENCING: + Calling process must have lock on mScheduleMutex + +RETURN VALUE: + bool +===========================================================================*/ +bool cProtocolServer::HandleRemoveRequest( ULONG reqID ) +{ + // Assume failure + bool bRC = false; + + // Find and erase request from request map + std::map ::iterator pReqIter; + pReqIter = mRequestMap.find( reqID ); + + if (pReqIter != mRequestMap.end()) + { + sProtocolReqRsp * pReqRsp = pReqIter->second; + if (pReqRsp != 0) + { + delete pReqRsp; + } + + mRequestMap.erase( pReqIter ); + + // Success! + bRC = true; + + // Find and erase request from schedule + bool bFound = false; + int entryIndex = -1; + + std::set ::iterator pScheduleIter; + pScheduleIter = mRequestSchedule.begin(); + + while (pScheduleIter != mRequestSchedule.end()) + { + entryIndex++; + + tSchedule entry = *pScheduleIter; + if (entry.second == reqID) + { + bFound = true; + mRequestSchedule.erase( pScheduleIter ); + break; + } + else + { + pScheduleIter++; + } + } + + // Note: schedule will be updated when mutex is unlocked/signaled + } + else if (mpActiveRequest != 0 && mpActiveRequest->mID == reqID) + { + const sProtocolRequest & req = mpActiveRequest->mRequest; + const cProtocolNotification * pNotifier = req.GetNotifier(); + + // Cancel the response timer (when active) + if (mpActiveRequest->mbWaitingForResponse == true) + { + // Schedule will be updated when mutex is unlocked + + // Failure to receive response, notify client + if (pNotifier != 0) + { + pNotifier->Notify( ePROTOCOL_EVT_RSP_ERR, + (DWORD)reqID, + ECANCELED ); + } + } + else + { + // This is the active request, cancel the underlying transmit + // Note: Because ProcessRequest and RemoveRequest are both muxed + // with ScheduleMutex, it is impossible to for the write + // to actually be in progress when this code is reached. + if (mpConnection != 0) + { + mpConnection->CancelTx(); + } + + // Failure to send request, notify client + if (pNotifier != 0) + { + pNotifier->Notify( ePROTOCOL_EVT_REQ_ERR, + (DWORD)reqID, + ECANCELED ); + } + } + + // Now delete the request + delete mpActiveRequest; + mpActiveRequest = 0; + + // Success! + bRC = true; + } + else + { + TRACE( "cProtocolServer::RemoveRequest( %lu )," + " invalid request ID\n", + reqID ); + } + + return bRC; +} + +/*=========================================================================== +METHOD: + ScheduleRequest (Internal Method) + +DESCRIPTION: + Schedule a request for transmission + +PARAMETERS: + reqID [ I ] - ID of the request being scheduled this ID must exist + in the internal request/schedule maps + + schedule [ I ] - Value in milliseconds that indicates the approximate + time from now that the request is to be sent out, the + actual time that the request is sent will be greater + than or equal to this value dependant on requests + scheduled before the request in question and + standard server processing time + +SEQUENCING: + Calling process must have lock on mScheduleMutex + +RETURN VALUE: + bool +===========================================================================*/ +bool cProtocolServer::ScheduleRequest( + ULONG reqID, + ULONG schedule ) +{ + // Assume failure + bool bRC = false; + + // Schedule adjust is in milliseconds + timespec schTimer = TimeIn( schedule ); + + // Create the schedule entry + tSchedule newEntry( schTimer, reqID ); + + // Fit this request into the schedule (ordered by scheduled time) + mRequestSchedule.insert( newEntry ); + + // Note: timer will be updated when mScheduleMutex is unlocked + + return bRC; +} + +/*=========================================================================== +METHOD: + RescheduleActiveRequest (Internal Method) + +DESCRIPTION: + Reschedule (or cleanup) the active request + +SEQUENCING: + Calling process must have lock on mScheduleMutex + +RETURN VALUE: + None +===========================================================================*/ +void cProtocolServer::RescheduleActiveRequest() +{ + // Are there more attempts to be made? + if (mpActiveRequest->mAttempts < mpActiveRequest->mRequest.GetRequests()) + { + // Yes, first reset the request + mpActiveRequest->Reset(); + + // Now add it back to the request map + mRequestMap[mpActiveRequest->mID] = mpActiveRequest; + + TRACE( "RescheduleActiveRequest(): req %lu rescheduled\n", mpActiveRequest->mID ); + + // Lastly reschedule the request + ScheduleRequest( mpActiveRequest->mID, + mpActiveRequest->mRequest.GetFrequency() ); + + } + else + { + TRACE( "RescheduleActiveRequest(): req %lu removed\n", mpActiveRequest->mID ); + + // No, we are through with this request + delete mpActiveRequest; + } + + // There is no longer an active request + mpActiveRequest = 0; + +} + +/*=========================================================================== +METHOD: + ProcessRequest (Internal Method) + +DESCRIPTION: + Process a single outgoing protocol request, this consists of removing + the request ID from the head of the schedule, looking up the internal + request object in the request map, sending out the request, and setting + up the response timer (if a response is required) + +SEQUENCING: + Calling process must have lock on mScheduleMutex + +RETURN VALUE: +===========================================================================*/ +void cProtocolServer::ProcessRequest() +{ + // Is there already an active request? + if (mpActiveRequest != 0 || mpConnection == 0) + { + return; + } + + // Grab request ID from the schedule + std::set ::iterator pScheduleIter; + pScheduleIter = mRequestSchedule.begin(); + + // Did we find the request? + if (pScheduleIter == mRequestSchedule.end()) + { + // No + return; + } + + // Yes, grab the request ID + ULONG reqID = pScheduleIter->second; + + // Remove from schedule + mRequestSchedule.erase( pScheduleIter ); + + // Look up the internal request object + std::map ::iterator pReqIter; + pReqIter = mRequestMap.find( reqID ); + + // Request not found around? + if (pReqIter == mRequestMap.end() || pReqIter->second == 0) + { + // No + return; + } + + // Set this request as the active request + mpActiveRequest = pReqIter->second; + + TRACE( "ProcessRequest(): req %lu started\n", mpActiveRequest->mID ); + + // Remove request from pending request map + mRequestMap.erase( pReqIter ); + + // Extract the underlying request + const sProtocolRequest & req = mpActiveRequest->mRequest; + + // Increment attempt count? + if (req.GetRequests() != INFINITE_REQS) + { + // This request isn't an indefinite one, so keep track of each attempt + mpActiveRequest->mAttempts++; + } + + bool bTxSuccess = false; + + // Encode data for transmission? + bool bEncoded = false; + sSharedBuffer * pEncoded = 0; + pEncoded = EncodeTxData( req.GetSharedBuffer(), bEncoded ); + if (bEncoded == false) + { + // Note: no longer asynchronus + // Send the request data + bTxSuccess = mpConnection->TxData( req.GetBuffer(), + req.GetSize() ); + } + else if (bEncoded == true) + { + if (pEncoded != 0 && pEncoded->IsValid() == true) + { + // Note: no longer asynchronus + // Send the request data + mpActiveRequest->mEncodedSize = pEncoded->GetSize(); + bTxSuccess = mpConnection->TxData( pEncoded->GetBuffer(), + pEncoded->GetSize() ); + } + } + + if (bTxSuccess == true) + { + TRACE( "ProcessRequest(): req %lu finished\n", mpActiveRequest->mID ); + TxComplete(); + } + else + { + TxError(); + TRACE( "ProcessRequest(): req finished with a TxError\n" ); + } + + return; +} + +/*=========================================================================== +METHOD: + CheckSystemTime (Internal Method) + +DESCRIPTION: + Check that system time hasn't moved backwards. Since we use the system + time for scheduling requests we need to periodically check that the + user (or system itself) hasn't reset system time backwards, if it has + then we reschedule everything to the current system time. This disrupts + the schedule but avoids stranding requests + + Updates mLastTime + +SEQUENCING: + Calling process must have lock on mScheduleMutex + +RETURN VALUE: + bool: System time moved backwards? +===========================================================================*/ +bool cProtocolServer::CheckSystemTime() +{ + // Assume that time is still marching forward + bool bAdjust = false; + + timespec curTime = TimeIn( 0 ); + + if (curTime < mLastTime) + { + // Looks like the system clock has been adjusted to an earlier + // value, go through the current schedule and adjust each timer + // to reflect the adjustment. This isn't an exact approach but + // it prevents requests from being stranded which is our goal + + // Note: set iterators are constant. This means we need to + // create a set with the new data, we can't modify this one + + std::set < tSchedule, std::less > tempSchedule; + + std::set ::iterator pScheduleIter; + pScheduleIter = mRequestSchedule.begin(); + + while (pScheduleIter != mRequestSchedule.end()) + { + tSchedule entry = *pScheduleIter; + entry.first.tv_sec = curTime.tv_sec; + entry.first.tv_nsec = curTime.tv_nsec; + tempSchedule.insert( entry ); + + pScheduleIter++; + } + + mRequestSchedule = tempSchedule; + + // Update mActiveRequestTimeout + if ( (mpActiveRequest != 0) + && (mpActiveRequest->mbWaitingForResponse == true) ) + { + // Restart active request's timeout + ULONG mTimeout = mpActiveRequest->mRequest.GetTimeout(); + mActiveRequestTimeout = TimeIn( mTimeout ); + } + + TRACE( "Time has moved backwards, schedule updated\n" ); + + // Indicate the change + bAdjust = true; + } + + mLastTime.tv_sec = curTime.tv_sec; + mLastTime.tv_nsec = curTime.tv_nsec; + + return bAdjust; +} + +/*=========================================================================== +METHOD: + RxComplete (Internal Method) + +DESCRIPTION: + Handle completion of receive data operation + +PARAMETERS: + status [ I ] - Status of operation + bytesReceived [ I ] - Number of bytes received + +SEQUENCING: + This method is sequenced according to the schedule mutex + i.e. any other thread that needs to modify the schedule + will block until this method completes + +RETURN VALUE: + None +===========================================================================*/ +void cProtocolServer::RxComplete( + DWORD status, + DWORD bytesReceived ) +{ + if (status != NO_ERROR) + { + TRACE( "cProtocolServer::RxComplete() = %lu\n", status ); + } + + if (mpConnection == 0) + { + TRACE( "cProtocolServer::RxComplete() - Not initialized\n" ); + return; + } + + // Error with the read + if (status != NO_ERROR || bytesReceived == 0) + { + // Setup the next read + mpConnection->RxData( mpRxBuffer, + (ULONG)mRxBufferSize, + (cIOCallback *)&mRxCallback ); + + return; + } + + // Get Schedule Mutex + if (GetScheduleMutex() == false) + { + TRACE( "RxComplete(), unable to get schedule Mutex\n" ); + return; + } + + TRACE( "RxComplete() - Entry at %llu\n", GetTickCount() ); + + // Decode data + bool bAbortTx = false; + ULONG rspIdx = INVALID_LOG_INDEX; + bool bRsp = DecodeRxData( bytesReceived, rspIdx, bAbortTx ); + + // Is there an active request that needs to be aborted + if (mpActiveRequest != 0 && bAbortTx == true) + { + // Yes, terminate the transmission and handle the error + mpConnection->CancelTx(); + TxError(); + } + // Is there an active request and a valid response? + else if (mpActiveRequest != 0 && bRsp == true) + { + const sProtocolRequest & req = mpActiveRequest->mRequest; + const cProtocolNotification * pNotifier = req.GetNotifier(); + + // Notify client that response was received + if (pNotifier != 0) + { + pNotifier->Notify( ePROTOCOL_EVT_RSP_RECV, + (DWORD)mpActiveRequest->mID, + (DWORD)rspIdx ); + } + + // Reschedule request as needed + RescheduleActiveRequest(); + } + + // Setup the next read + mpConnection->RxData( mpRxBuffer, + (ULONG)mRxBufferSize, + (cIOCallback *)&mRxCallback ); + + TRACE( "RxComplete() - Exit at %llu\n", GetTickCount() ); + + // Unlock schedule mutex + if (ReleaseScheduleMutex() == false) + { + // This should never happen + return; + } + + return; +} + +/*=========================================================================== +METHOD: + RxTimeout (Internal Method) + +DESCRIPTION: + Handle the response timer expiring + +SEQUENCING: + Calling process must have lock on mScheduleMutex + +RETURN VALUE: + None +===========================================================================*/ +void cProtocolServer::RxTimeout() +{ + // No active request? + if (mpActiveRequest == 0) + { + TRACE( "RxTimeout() with no active request\n" ); + ASSERT( 0 ); + } + + TRACE( "RxTimeout() for req %lu\n", mpActiveRequest->mID ); + + const sProtocolRequest & req = mpActiveRequest->mRequest; + const cProtocolNotification * pNotifier = req.GetNotifier(); + + // Failure to receive response, notify client + if (pNotifier != 0) + { + pNotifier->Notify( ePROTOCOL_EVT_RSP_ERR, + (DWORD)mpActiveRequest->mID, + (DWORD)0 ); + } + + // Reschedule request as needed + RescheduleActiveRequest(); +} + +/*=========================================================================== +METHOD: + TxComplete (Internal Method) + +DESCRIPTION: + Handle completion of transmit data operation + +PARAMETERS: + +SEQUENCING: + Calling process must have lock on mScheduleMutex + +RETURN VALUE: + None +===========================================================================*/ +void cProtocolServer::TxComplete() +{ + // No active request? + if (mpActiveRequest == 0 || mpConnection == 0) + { + TRACE( "TxComplete() called with no active request\n" ); + ASSERT( 0 ); + } + + TRACE( "TxComplete() req %lu started\n", mpActiveRequest->mID ); + + ULONG reqID = mpActiveRequest->mID; + const sProtocolRequest & req = mpActiveRequest->mRequest; + const cProtocolNotification * pNotifier = req.GetNotifier(); + + // Notify client of auxiliary data being sent? + if (mpActiveRequest->mRequiredAuxTxs && mpActiveRequest->mCurrentAuxTx) + { + pNotifier->Notify( ePROTOCOL_EVT_AUX_TU_SENT, + (DWORD)reqID, + (DWORD)mpActiveRequest->mEncodedSize ); + } + + // Check for more auxiliary data to transmit + if (mpActiveRequest->mCurrentAuxTx < mpActiveRequest->mRequiredAuxTxs) + { + ULONG auxDataSz = 0; + const BYTE * pAuxData = req.GetAuxiliaryData( auxDataSz ); + if (auxDataSz > 0 && pAuxData != 0) + { + bool bRC = false; + + // Adjust for current MTU + pAuxData += (mpActiveRequest->mCurrentAuxTx * MAX_AUX_MTU_SIZE); + mpActiveRequest->mCurrentAuxTx++; + + // Last MTU? + if (mpActiveRequest->mCurrentAuxTx == mpActiveRequest->mRequiredAuxTxs) + { + // More than one MTU? + if (mpActiveRequest->mRequiredAuxTxs > 1) + { + auxDataSz = (auxDataSz % MAX_AUX_MTU_SIZE); + if (auxDataSz == 0) + { + auxDataSz = MAX_AUX_MTU_SIZE; + } + } + + if (auxDataSz % MAX_PACKET_SIZE == 0) + { + // If last write of unframed write request is divisible + // by 512, break off last byte and send seperatly. + TRACE( "TxComplete() Special case, break off last byte\n" ); + + bRC = mpConnection->TxData( pAuxData, + auxDataSz - 1 ); + + if (bRC == true) + { + bRC = mpConnection->TxData( pAuxData + auxDataSz -1, + 1 ); + } + } + else + { + bRC = mpConnection->TxData( pAuxData, + auxDataSz ); + } + } + else if (mpActiveRequest->mRequiredAuxTxs > 1) + { + auxDataSz = MAX_AUX_MTU_SIZE; + + bRC = mpConnection->TxData( pAuxData, + auxDataSz ); + } + + if (bRC == true) + { + mpActiveRequest->mEncodedSize = auxDataSz; + TxComplete(); + } + else + { + TxError(); + } + + return; + } + } + + // Another successful transmission, add the buffer to the log + ULONG reqIdx = INVALID_LOG_INDEX; + + sProtocolBuffer pb( req.GetSharedBuffer() ); + reqIdx = mLog.AddBuffer( pb ); + + // Notify client? + if (pNotifier != 0) + { + pNotifier->Notify( ePROTOCOL_EVT_REQ_SENT, (DWORD)reqID, (DWORD)reqIdx ); + } + + // Wait for a response? + if (mpActiveRequest->mRequest.IsTXOnly() == false) + { + // We now await the response + mpActiveRequest->mbWaitingForResponse = true; + mActiveRequestTimeout = TimeIn( mpActiveRequest->mRequest.GetTimeout() ); + } + else + { + // Reschedule request as needed + RescheduleActiveRequest(); + } +} + +/*=========================================================================== +METHOD: + TxError (Internal Method) + +DESCRIPTION: + Handle transmit data operation error be either rescheduling the + request or cleaning it up + +SEQUENCING: + Calling process must have lock on mScheduleMutex + +RETURN VALUE: + None +===========================================================================*/ +void cProtocolServer::TxError() +{ + // No active request? + if (mpActiveRequest == 0) + { + return; + } + + ULONG reqID = mpActiveRequest->mID; + const sProtocolRequest & req = mpActiveRequest->mRequest; + const cProtocolNotification * pNotifier = req.GetNotifier(); + + // Failure to send request, notify client + if (pNotifier != 0) + { + pNotifier->Notify( ePROTOCOL_EVT_REQ_ERR, (DWORD)reqID, (DWORD)0 ); + } + + // Reschedule request as needed + RescheduleActiveRequest(); +} + +/*=========================================================================== +METHOD: + Initialize (Public Method) + +DESCRIPTION: + Initialize the protocol server by starting up the schedule thread + +SEQUENCING: + This method is sequenced according to the schedule mutex, i.e. any + other thread that needs to modify the schedule will block until + this method completes + +RETURN VALUE: + bool +===========================================================================*/ +bool cProtocolServer::Initialize() +{ + // Assume failure + bool bRC = false; + + mbExiting = false; + + // Get mScheduleMutex + if (GetScheduleMutex() == true) + { + if (mScheduleThreadID == 0) + { + // Yes, start thread + int nRet = pthread_create( &mScheduleThreadID, + NULL, + ScheduleThread, + this ); + if (nRet == 0) + { + // Success! + bRC = true; + } + } + } + else + { + TRACE( "cProtocolServer::Initialize(), unable to aquire ScheduleMutex\n" ); + return false; + } + + // Unlock schedule mutex + if (ReleaseScheduleMutex() == false) + { + // This should never happen + return false; + } + + return bRC; +} + +/*=========================================================================== +METHOD: + Exit (Public Method) + +DESCRIPTION: + Exit the protocol server by exiting the schedule thread (if necessary) + +SEQUENCING: + This method is sequenced according to the schedule mutex, i.e. any + other thread that needs to modify the schedule will block until + this method completes + +RETURN VALUE: + bool +===========================================================================*/ +bool cProtocolServer::Exit() +{ + // Assume failure + bool bRC = false; + + if (mScheduleThreadID != 0) + { + if (GetScheduleMutex() == false) + { + // This should never happen + return false; + } + + // Check that mScheduleTheadID is still not 0 + if (mScheduleThreadID == 0) + { + printf( "mScheduleThreadID was zero!!!\n" ); + ReleaseScheduleMutex( false ); + return false; + } + + // Set exit event + mbExiting = true; + + // Signal a schedule update + if (mThreadScheduleEvent.Set( 1 ) != 0) + { + // This should never happen + return false; + } + + TRACE( "Joining ScheduleThread %lu\n", mScheduleThreadID ); + + // Allow process to continue until it finishes + int nRet = pthread_join( mScheduleThreadID, NULL ); + if (nRet == ESRCH) + { + TRACE( "ScheduleThread has exited already\n" ); + } + else if (nRet != 0) + { + TRACE( "Unable to join ScheduleThread. Error %d: %s\n", + nRet, + strerror( nRet ) ); + return false; + } + + TRACE( "cProtocolServer::Exit(), completed thread %lu\n", + (ULONG)mScheduleThreadID ); + + bRC = true; + + // Release "handle" + mScheduleThreadID = 0; + + // Release mutex lock, don't signal ScheduleThread + if (ReleaseScheduleMutex( false ) == false) + { + // This should never happen + return false; + } + } + else + { + // No ScheduleThread + bRC = true; + } + + // Free any allocated requests + std::map ::iterator pReqIter; + pReqIter = mRequestMap.begin(); + + while (pReqIter != mRequestMap.end()) + { + sProtocolReqRsp * pReqRsp = pReqIter->second; + if (pReqRsp != 0) + { + delete pReqRsp; + } + + pReqIter++; + } + + mRequestMap.clear(); + + // Free log + mLog.Clear(); + + return bRC; +} + +/*=========================================================================== +METHOD: + Connect (Public Method) + +DESCRIPTION: + Connect to the given communications port + +PARAMETERS: + pPort [ I ] - String pointer representing the device node to + connect to (IE: /dev/qcqmi0) + +SEQUENCING: + None + +RETURN VALUE: + bool +===========================================================================*/ +bool cProtocolServer::Connect( LPCSTR pPort ) +{ + // Assume failure + bool bRC = false; + if (pPort == 0 || pPort[0] == 0 || mpConnection == 0) + { + return bRC; + } + + // Connect to device + + // Set callback + mRxCallback.SetServer( this ); + + // Override to initialize port with protocol specific options + bRC = mpConnection->Connect( pPort ); + if (bRC == true) + { + bRC = InitializeComm(); + if (bRC == true) + { + // Setup the initial read + mpConnection->RxData( mpRxBuffer, + (ULONG)mRxBufferSize, + (cIOCallback *)&mRxCallback ); + } + } + + return bRC; +} + +/*=========================================================================== +METHOD: + Disconnect (Public Method) + +DESCRIPTION: + Disconnect from the current communications port + +SEQUENCING: + None + +RETURN VALUE: + bool +===========================================================================*/ +bool cProtocolServer::Disconnect() +{ + // Disconnect + + if (mpConnection != 0) + { + // Cancel any outstanding I/O + mpConnection->CancelIO(); + } + + // Empty callback + mRxCallback.SetServer( 0 ); + + // Cleanup COM port + CleanupComm(); + + if (mpConnection != 0) + { + // Now disconnect + bool bDis = mpConnection->Disconnect(); + delete mpConnection; + return bDis; + } + else + { + return true; + } +} + +/*=========================================================================== +METHOD: + IsConnected (Public Method) + +DESCRIPTION: + Are we currently connected to a port? + +SEQUENCING: + None + +RETURN VALUE: + bool +===========================================================================*/ +bool cProtocolServer::IsConnected() +{ + return (mpConnection != 0 && mpConnection->IsConnected()); +} + +/*=========================================================================== +METHOD: + AddRequest (Public Method) + +DESCRIPTION: + Add an outgoing protocol request to the protocol server request queue + +PARAMETERS: + req [ I ] - Request being added + +SEQUENCING: + This method is sequenced according to the schedule mutex, i.e. any + other thread that needs to modify the schedule will block until + this method completes + +RETURN VALUE: + ULONG - ID of scheduled request (INVALID_REQUEST_ID upon error) +===========================================================================*/ +ULONG cProtocolServer::AddRequest( const sProtocolRequest & req ) +{ + // Assume failure + ULONG reqID = INVALID_REQUEST_ID; + + // Server not configured for sending requests? + if (IsValid( mTxType ) == false) + { + return reqID; + } + + // Request type not valid for server? + if (req.GetType() != mTxType) + { + return reqID; + } + + // Invalide request? + if (ValidateRequest( req ) == false) + { + return reqID; + } + + // Get mScheduleMutex + if (GetScheduleMutex() == true) + { + TRACE( "AddRequest() - Entry at %llu\n", GetTickCount() ); + + // Grab next available request ID + if (++mLastRequestID == 0) + { + mLastRequestID++; + } + + reqID = mLastRequestID; + while (mRequestMap.find( reqID ) != mRequestMap.end()) + { + reqID++; + } + + // Wrap in our internal structure + sProtocolReqRsp * pReqRsp = 0; + pReqRsp = new sProtocolReqRsp( req, reqID, MAX_AUX_MTU_SIZE ); + + if (pReqRsp != 0) + { + // Add to request map + mRequestMap[reqID] = pReqRsp; + + // ... and schedule + ScheduleRequest( reqID, req.GetSchedule() ); + } + + TRACE( "AddRequest() - Exit at %llu\n", GetTickCount() ); + + // Unlock schedule mutex + if (ReleaseScheduleMutex() == false) + { + // This should never happen + return INVALID_REQUEST_ID; + } + } + else + { + TRACE( "cProtocolServer::AddRequest(), unable to get schedule Mutex\n" ); + } + + return reqID; +} + +/*=========================================================================== +METHOD: + RemoveRequest (Public Method) + +DESCRIPTION: + Remove a previously added protocol request + +SEQUENCING: + This method is sequenced according to the schedule mutex, i.e. any + other thread that needs to modify the schedule will block until + this method completes + + Note: If a request is being written, it cannot be inturrupted as + both ProcessRequest and RemoveRequest depend on the ScheduleMutex + and the write is synchronus. If the request has been written but + the read has not been triggered it can be removed. + +PARAMETERS: + reqID [ I ] - ID of request being removed + +RETURN VALUE: + bool +===========================================================================*/ +bool cProtocolServer::RemoveRequest( ULONG reqID ) +{ + // Assume failure + bool bRC = false; + + // Get Schedule Mutex + if (GetScheduleMutex() == true) + { + TRACE( "RemoveRequest() - Entry at %llu\n", GetTickCount() ); + + bRC = HandleRemoveRequest( reqID ); + + TRACE( "RemoveRequest() - Exit at %llu\n", GetTickCount() ); + + // Unlock schedule mutex + if (ReleaseScheduleMutex() == false) + { + // This should never happen + return false; + } + } + else + { + TRACE( "cProtocolServer::RemoveRequest(), unable to get mScheduleMutex\n" ); + } + + return bRC; +} + +/*=========================================================================== +METHOD: + GetScheduleMutex (Internal Method) + +DESCRIPTION: + Get the schedule mutex. Additionally a check is applied to verify the + DEADLOCK_TIME was not exceeded + +SEQUENCING: + This function will block until the mScheduleMutex is aquired + +PARAMETERS: + +RETURN VALUE: + bool +===========================================================================*/ +bool cProtocolServer::GetScheduleMutex() +{ + ULONGLONG nStart = GetTickCount(); + + //TRACE( "Locking Schedule mutex\n" ); + int nRet = pthread_mutex_lock( &mScheduleMutex ); + if (nRet != 0) + { + TRACE( "Unable to lock schedule mutex. Error %d: %s\n", + nRet, + strerror( nRet ) ); + return false; + } + + ULONGLONG nEnd = GetTickCount(); + if (nEnd - nStart > DEADLOCK_TIME) + { + TRACE( "Deadlock time exceeded: took %llu ms\n", nEnd - nStart ); + ReleaseScheduleMutex( true ); + return false; + } + + //TRACE( "Locked ScheduleMutex\n" ); + return true; +} + +/*=========================================================================== +METHOD: + ReleaseScheduleMutex (Internal Method) + +DESCRIPTION: + Release lock on the schedule mutex + +SEQUENCING: + Calling process must have lock + +PARAMETERS: + bSignalThread [ I ] - Signal Schedule thread as well? + +RETURN VALUE: + bool +===========================================================================*/ +bool cProtocolServer::ReleaseScheduleMutex( bool bSignalThread ) +{ + if (bSignalThread == true) + { + if (mThreadScheduleEvent.Set( 1 ) != 0) + { + return false; + } + } + + int nRet = pthread_mutex_unlock( &mScheduleMutex ); + if (nRet != 0) + { + TRACE( "Unable to unlock schedule mutex. Error %d: %s\n", + nRet, + strerror( nRet ) ); + return false; + } + + return true; +} diff --git a/gobi-api/GobiAPI_2013-07-31-1347/Core/ProtocolServer.h b/gobi-api/GobiAPI_2013-07-31-1347/Core/ProtocolServer.h new file mode 100644 index 0000000..5412af2 --- /dev/null +++ b/gobi-api/GobiAPI_2013-07-31-1347/Core/ProtocolServer.h @@ -0,0 +1,362 @@ +/*=========================================================================== +FILE: + ProtocolServer.h + +DESCRIPTION: + Generic protocol packet server + +PUBLIC CLASSES AND METHODS: + cProtocolServer + Abstract base class for protocol servers + +Copyright (c) 2013, The Linux Foundation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +===========================================================================*/ + +//--------------------------------------------------------------------------- +// Pragmas +//--------------------------------------------------------------------------- +#pragma once + +//--------------------------------------------------------------------------- +// Include Files +//--------------------------------------------------------------------------- +#include "Connection.h" +#include "ProtocolRequest.h" +#include "ProtocolLog.h" +#include "Event.h" + +#include +#include + +//--------------------------------------------------------------------------- +// Forward Declarations +//--------------------------------------------------------------------------- +class cProtocolServer; +struct sServerControl; + +//--------------------------------------------------------------------------- +// Definitions +//--------------------------------------------------------------------------- + +// Invalid request ID +extern const ULONG INVALID_REQUEST_ID; + +// Fill timespec with the time it will be in specified milliseconds +// Relative time to Absolute time +timespec TimeIn( ULONG millis ); + +// Find the milliseconds from current time this timespec will occur +// Absolute time to Relative time +ULONG TimeFromNow( timespec time ); + +// Provide a number for sequencing reference, similar to the windows function +ULONGLONG GetTickCount(); + +// timespec < comparison method +inline bool operator< (const timespec & first, const timespec & second) +{ + return ( (first.tv_sec < second.tv_sec) + ||( (first.tv_sec == second.tv_sec) + &&(first.tv_nsec < second.tv_nsec) ) ); +} + +// timespec <= comparison method +inline bool operator<= (const timespec & first, const timespec & second) +{ + return ( (first.tv_sec < second.tv_sec) + ||( (first.tv_sec == second.tv_sec) + &&(first.tv_nsec <= second.tv_nsec) ) ); +} + +/*=========================================================================*/ +// Class cProtocolServerRxCallback +/*=========================================================================*/ +class cProtocolServerRxCallback +{ + public: + // (Inline) Constructor + cProtocolServerRxCallback() + : mpServer( 0 ) + { }; + + // (Inline) Destructor + virtual ~cProtocolServerRxCallback() { }; + + // (Inline) Set server object to pass results to + void SetServer( cProtocolServer * pServer ) + { + mpServer = pServer; + }; + + // The I/O has been completed, process the results + virtual void IOComplete( + DWORD status, + DWORD bytesReceived ); + + protected: + /* Protocol server to interact with */ + cProtocolServer * mpServer; +}; + +/*=========================================================================*/ +// Class cProtocolServer +/*=========================================================================*/ +class cProtocolServer +{ + public: + // Constructor + cProtocolServer( + eProtocolType rxType, + eProtocolType txType, + ULONG bufferSzRx, + ULONG logSz ); + + // Destructor + virtual ~cProtocolServer(); + + // Initialize the protocol server + bool Initialize(); + + // Exit the protocol server + bool Exit(); + + // Connect to the given communications port + bool Connect( LPCSTR pPort ); + + // Disconnect from target + bool Disconnect(); + + // Are we currently connected to a port? + bool IsConnected(); + + // Add an outgoing protocol request to the protocol server request queue + ULONG AddRequest( const sProtocolRequest & req ); + + // Remove a previously added protocol request + bool RemoveRequest( ULONG reqID ); + + // (Inline) Return the protocol log + const cProtocolLog & GetLog() + { + return mLog; + }; + + protected: + // Internal protocol server request/response structure, used to track + // info related to sending out a request + struct sProtocolReqRsp + { + public: + // Constructor + sProtocolReqRsp( + const sProtocolRequest & requestInfo, + ULONG requestID, + ULONG auxDataMTU ); + + // Copy constructor + sProtocolReqRsp( const sProtocolReqRsp & reqRsp ); + + // (Inline) Reset for next transmission attempt + void Reset() + { + mEncodedSize = mRequest.GetSize(); + + mCurrentAuxTx = 0; + mbWaitingForResponse = 0; + }; + + /* Underlying protocol request */ + sProtocolRequest mRequest; + + /* Request ID */ + ULONG mID; + + /* Number of times this request has been attempted */ + ULONG mAttempts; + + /* Size of encoded data being transmitted */ + ULONG mEncodedSize; + + /* Number of required auxiliary data transmissions */ + ULONG mRequiredAuxTxs; + + /* Current auxiliary data transmission */ + ULONG mCurrentAuxTx; + + /* Are we currently waiting for a response? */ + bool mbWaitingForResponse; + }; + + // Handle the remove request + bool HandleRemoveRequest( ULONG reqID ); + + // Schedule a request for transmission + bool ScheduleRequest( + ULONG reqID, + ULONG schedule ); + + // (Inline) Get next request's time from mRequestSchedule + timespec GetNextRequestTime() + { + timespec outTime; + + std::set ::iterator pScheduleIter; + pScheduleIter = mRequestSchedule.begin(); + tSchedule entry = *pScheduleIter; + + outTime = entry.first; + return outTime; + } + + // (Inline) Validate a request that is about to be scheduled + virtual bool ValidateRequest( const sProtocolRequest & req ) + { + return req.IsValid(); + }; + + // Reschedule (or cleanup) the active request + void RescheduleActiveRequest(); + + // Process a single outgoing protocol request + void ProcessRequest(); + + // Check that system time hasn't moved backwards + bool CheckSystemTime(); + + // Perform protocol specific communications port initialization + virtual bool InitializeComm() = 0; + + // Perform protocol specific communications port cleanup + virtual bool CleanupComm() = 0; + + // Encode data for transmission + virtual sSharedBuffer * EncodeTxData( + sSharedBuffer * pBuffer, + bool & bEncoded ) = 0; + + // Decode incoming data into packets returning the last response + virtual bool DecodeRxData( + ULONG bytesReceived, + ULONG & rspIdx, + bool & bAbortTx ) = 0; + + // Handle completion of receive data operation + void RxComplete( + DWORD status, + DWORD bytesReceived ); + + // Handle the response timer expiring + void RxTimeout(); + + // Handle completion of transmit data operation + virtual void TxComplete(); + + // Handle a transmission error + void TxError(); + + /* Underlying communications object */ + cConnection * mpConnection; + + /* Underlying connection type */ + enum eConnectionType + { + eConnectionType_Begin = 0, + + eConnectionType_RmNet = 1, + eConnectionType_SMD = 2, + + eConnectionType_End + + } mConnectionType; + + /* Rx callback */ + cProtocolServerRxCallback mRxCallback; + + /* ID of Schedule thread */ + pthread_t mScheduleThreadID; + + // ScheduleThread signal event + cEvent mThreadScheduleEvent; + + // Schedule mutex + // Ensures exclusive access to mRequestSchedule + pthread_mutex_t mScheduleMutex; + + // Is the thread in the process of exiting? + // (no new commands will be accepted) + bool mbExiting; + + /* Client/server thread control object */ + sSharedBuffer * mpServerControl; + + /* Protocol request schedule (scheduled time/request ID) */ + typedef std::pair tSchedule; + std::set < tSchedule, std::less > mRequestSchedule; + + /* Last system time value (used to check for time changes) */ + timespec mLastTime; + + /* Protocol request map (request ID mapped to internal req/rsp struct) */ + std::map mRequestMap; + + /* Last assigned request ID */ + ULONG mLastRequestID; + + /* Current request being processed */ + sProtocolReqRsp * mpActiveRequest; + + /* Absolute timeout for mpActiveRequest + based on when write was completed */ + timespec mActiveRequestTimeout; + + /* Data buffer for incoming data */ + BYTE * mpRxBuffer; + + /* Size of above buffer (i.e. how much data to read in at once) */ + ULONG mRxBufferSize; + + /* Protocol type for incoming/outgoing data*/ + eProtocolType mRxType; + eProtocolType mTxType; + + /* Protocol log */ + cProtocolLog mLog; + + // Get a lock on ScheduleMutex + bool GetScheduleMutex(); + + // Release lock on ScheduleMutex + // Signal ScheduleThread if desired + bool ReleaseScheduleMutex( bool bSignalThread = true ); + + // Schedule Thread gets full access + friend void * ScheduleThread( PVOID pArg ); + + // Callback objects get full access + friend class cProtocolServerRxCallback; +}; + diff --git a/gobi-api/GobiAPI_2013-07-31-1347/Core/QMIBuffers.cpp b/gobi-api/GobiAPI_2013-07-31-1347/Core/QMIBuffers.cpp new file mode 100644 index 0000000..0e9a7df --- /dev/null +++ b/gobi-api/GobiAPI_2013-07-31-1347/Core/QMIBuffers.cpp @@ -0,0 +1,365 @@ +/*=========================================================================== +FILE: + QMIBuffers.cpp + +DESCRIPTION: + QMI service protocol related structures and affliated methods + +PUBLIC CLASSES AND METHODS: + sQMIControlRawTransactionHeader + sQMIServiceRawTransactionHeader + sQMIRawMessageHeader + sQMIRawContentHeader + + sQMIServiceBuffer + +Copyright (c) 2013, The Linux Foundation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +===========================================================================*/ + +//--------------------------------------------------------------------------- +// Include Files +//--------------------------------------------------------------------------- +#include "StdAfx.h" +#include "QMIBuffers.h" + +//--------------------------------------------------------------------------- +// Definitions +//--------------------------------------------------------------------------- + +/*=========================================================================*/ +// sQMIServiceBuffer Methods +/*=========================================================================*/ + +/*=========================================================================== +METHOD: + sQMIServiceBuffer (Public Method) + +DESCRIPTION: + Constructor + +PARAMETERS: + pBuffer [ I ] - Shareable buffer that contains the DIAG data + +RETURN VALUE: + None +===========================================================================*/ +sQMIServiceBuffer::sQMIServiceBuffer( sSharedBuffer * pBuffer ) + : sProtocolBuffer( pBuffer ) +{ + sQMIServiceBuffer::Validate(); +} + +/*=========================================================================== +METHOD: + ~sQMIServiceBuffer (Public Method) + +DESCRIPTION: + Destructor + +RETURN VALUE: + None +===========================================================================*/ +sQMIServiceBuffer::~sQMIServiceBuffer() +{ + // Nothing to do +} + +/*=========================================================================== +METHOD: + GetResult (Public Method) + +DESCRIPTION: + Return contents of mandatory result content + +PARAMETERS: + returnCode [ I ] - The return code (should be eQMIResultCode) + errorCode [ I ] - The error code (should be eQMIErrorCode) + +RETURN VALUE: + bool +===========================================================================*/ +bool sQMIServiceBuffer::GetResult( + ULONG & returnCode, + ULONG & errorCode ) +{ + if (IsResponse() == false) + { + return false; + } + + std::map ::const_iterator pIter; + pIter = mContents.find( QMI_TLV_ID_RESULT ); + if (pIter == mContents.end()) + { + return false; + } + + const sQMIRawContentHeader * pContent = pIter->second; + if (pContent == 0) + { + ASSERT( 0 ); + return false; + } + + if (pContent->mLength != 4) + { + return false; + } + + const WORD * pData = (const WORD *)(++pContent); + + returnCode = (ULONG)*pData++; + errorCode = (ULONG)*pData; + + return true; +} + +/*=========================================================================== +METHOD: + BuildBuffer (Static Public Method) + +DESCRIPTION: + Build a QMI request + +PARAMETERS: + serviceType [ I ] - QMI service type + msgID [ I ] - The QMI message request ID + bResponse [ I ] - Build a response? + bIndication [ I ] - Build an indication? + pPayload [ I ] - Payload + payloadLen [ I ] - Size of above payload + +RETURN VALUE: + sSharedBuffer * : The request in an allocated buffer (0 on error) +===========================================================================*/ +sSharedBuffer * sQMIServiceBuffer::BuildBuffer( + eQMIService serviceType, + WORD msgID, + bool bResponse, + bool bIndication, + const BYTE * pPayload, + ULONG payloadLen ) +{ + const ULONG szTransHdr = (ULONG)sizeof(sQMIServiceRawTransactionHeader); + const ULONG szMsgHdr = (ULONG)sizeof(sQMIRawMessageHeader); + const ULONG totalHdrSz = szTransHdr + szMsgHdr; + + // Truncate payload? + if (payloadLen > (QMI_MAX_BUFFER_SIZE - totalHdrSz)) + { + payloadLen = QMI_MAX_BUFFER_SIZE - totalHdrSz; + } + + // Make sure length agrees with pointer + if (pPayload == 0) + { + payloadLen = 0; + } + + // Allocate buffer + PBYTE pBuffer = new BYTE[payloadLen + totalHdrSz]; + if (pBuffer == 0) + { + return 0; + } + + // Format header + sQMIServiceRawTransactionHeader * pHdr = 0; + pHdr = (sQMIServiceRawTransactionHeader *)&pBuffer[0]; + pHdr->mCompound = 0; + pHdr->mResponse = 0; + pHdr->mIndication = 0; + pHdr->mReserved = 0; + pHdr->mTransactionID = 1; + + bool bTX = true; + if (bResponse == true) + { + pHdr->mResponse = 1; + bTX = false; + } + else if (bIndication == true) + { + pHdr->mIndication = 1; + bTX = false; + } + + pHdr++; + + // Format message header + sQMIRawMessageHeader * pMsg = 0; + pMsg = (sQMIRawMessageHeader *)pHdr; + pMsg->mMessageID = msgID; + pMsg->mLength = (WORD)payloadLen; + + // Copy in payload? + if (payloadLen > 0 && pPayload != 0) + { + memcpy( (LPVOID)&pBuffer[totalHdrSz], + (LPCVOID)&pPayload[0], + (SIZE_T)payloadLen ); + } + + // Compute total size + ULONG sz = payloadLen + totalHdrSz; + + // Build and return the shared buffer + eProtocolType pt = MapQMIServiceToProtocol( serviceType, bTX ); + sSharedBuffer * pBuf = new sSharedBuffer( sz, pBuffer, pt ); + return pBuf; +} + +/*=========================================================================== +METHOD: + Validate (Internal Method) + +DESCRIPTION: + Is this open unframed request/response packet valid? + +RETURN VALUE: + bool +===========================================================================*/ +bool sQMIServiceBuffer::Validate() +{ + // Assume failure + bool bRC = false; + + // Sanity check protocol type + eProtocolType pt = GetType(); + if (IsQMIProtocol( pt ) == false) + { + mbValid = bRC; + return bRC; + } + + const ULONG szTransHdr = (ULONG)sizeof(sQMIServiceRawTransactionHeader); + const ULONG szMsgHdr = (ULONG)sizeof(sQMIRawMessageHeader); + const ULONG szContentHdr = (ULONG)sizeof(sQMIRawContentHeader); + + // Must be enough space for both headers + ULONG sz = GetSize(); + if (sz < szTransHdr + szMsgHdr) + { + mbValid = bRC; + return bRC; + } + + const BYTE * pBuffer = GetBuffer(); + + // Obtain transaction header + const sQMIServiceRawTransactionHeader * pTransHdr = 0; + pTransHdr = (const sQMIServiceRawTransactionHeader *)pBuffer; + pBuffer += szTransHdr; + + // This is required to be 0 + if (pTransHdr->mCompound != 0) + { + mbValid = bRC; + return bRC; + } + + // These are mutually exclusive + if (pTransHdr->mIndication == 1 && pTransHdr->mResponse == 1) + { + mbValid = bRC; + return bRC; + } + + // Requests/responses required valid transaction IDs + if ( (pTransHdr->mIndication == 0) + && (pTransHdr->mTransactionID == (WORD)INVALID_QMI_TRANSACTION_ID) ) + { + mbValid = bRC; + return bRC; + } + + if ( (pTransHdr->mResponse == 1 || pTransHdr->mIndication == 1) + && (IsQMIProtocolRX( pt ) == false) ) + { + mbValid = bRC; + return bRC; + } + + if ( (pTransHdr->mResponse == 0 && pTransHdr->mIndication == 0) + && (IsQMIProtocolTX( pt ) == false) ) + { + mbValid = bRC; + return bRC; + } + + // Obtain message header + const sQMIRawMessageHeader * pMsgHdr = 0; + pMsgHdr = (const sQMIRawMessageHeader *)pBuffer; + pBuffer += szMsgHdr; + + // Validate reported length + if (sz != ((ULONG)pMsgHdr->mLength + szTransHdr + szMsgHdr)) + { + mbValid = bRC; + return bRC; + } + + // Extract content TLV structures + ULONG contentProcessed = 0; + ULONG contentSz = (ULONG)pMsgHdr->mLength; + while (contentProcessed < contentSz) + { + const sQMIRawContentHeader * pContent = 0; + pContent = (const sQMIRawContentHeader *)pBuffer; + + ULONG tlvLen = szContentHdr + pContent->mLength; + + contentProcessed += tlvLen; + if (contentProcessed <= contentSz) + { + mContents[(ULONG)pContent->mTypeID] = pContent; + } + else + { + mContents.clear(); + + mbValid = bRC; + return bRC; + } + + pBuffer += tlvLen; + } + + // Validate TLV reported lengths + if (contentProcessed != contentSz) + { + mbValid = bRC; + return bRC; + } + + // Success! + bRC = true; + + mbValid = bRC; + return mbValid; +} + diff --git a/gobi-api/GobiAPI_2013-07-31-1347/Core/QMIBuffers.h b/gobi-api/GobiAPI_2013-07-31-1347/Core/QMIBuffers.h new file mode 100644 index 0000000..5c9504e --- /dev/null +++ b/gobi-api/GobiAPI_2013-07-31-1347/Core/QMIBuffers.h @@ -0,0 +1,390 @@ +/*=========================================================================== +FILE: + QMIBuffers.h + +DESCRIPTION: + QMI service protocol related structures and affliated methods + +PUBLIC CLASSES AND METHODS: + sQMUXHeader + sQMIControlRawTransactionHeader + sQMIServiceRawTransactionHeader + sQMIRawMessageHeader + sQMIRawContentHeader + + sQMIServiceBuffer + +Copyright (c) 2013, The Linux Foundation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +===========================================================================*/ + +//--------------------------------------------------------------------------- +// Pragmas +//--------------------------------------------------------------------------- +#pragma once + +//--------------------------------------------------------------------------- +// Include Files +//--------------------------------------------------------------------------- +#include "ProtocolBuffer.h" +#include "QMIEnum.h" + +#include +#include + +//--------------------------------------------------------------------------- +// Definitions +//--------------------------------------------------------------------------- + +// QMI maximum buffer size (cannot be larger than MAX_SHARED_BUFFER_SIZE) +const ULONG QMI_MAX_BUFFER_SIZE = MAX_SHARED_BUFFER_SIZE; + +// Content ID for mandatory result TLV +const ULONG QMI_TLV_ID_RESULT = 2; + +/*=========================================================================== +METHOD: + MapQMIServiceToProtocol (Inline Method) + +DESCRIPTION: + Map QMI service type (eQMIService) and direction to a protocol type + (eProtocolType) + +PARAMETERS: + serviceType [ I ] - Enum value being mapped + bTransmission [ I ] - Is this a transmission (TX vs. RX)? + +RETURN VALUE: + eProtocolType +===========================================================================*/ +inline eProtocolType MapQMIServiceToProtocol( + eQMIService serviceType, + bool bTransmission = true ) +{ + eProtocolType pt = ePROTOCOL_ENUM_BEGIN; + if (IsValid( serviceType ) == false) + { + return pt; + } + + DWORD tmp = ((DWORD)serviceType * 2) + (DWORD)ePROTOCOL_QMI_CTL_RX; + if (bTransmission == true) + { + tmp++; + } + + if (IsQMIProtocol( (eProtocolType)tmp ) == true) + { + pt = (eProtocolType)tmp; + } + + return pt; +}; + +/*=========================================================================== +METHOD: + MapProtocolToQMIService (Inline Method) + +DESCRIPTION: + Map protocol type (eProtocolType) to QMI service type (eQMIService) + +PARAMETERS: + protocolType [ I ] - Enum value being mapped + +RETURN VALUE: + bool +===========================================================================*/ +inline eQMIService MapProtocolToQMIService( eProtocolType protocolType ) +{ + eQMIService st = eQMI_SVC_ENUM_BEGIN; + if (IsQMIProtocol( protocolType ) == false) + { + return st; + } + + DWORD tmp = ((DWORD)protocolType - (DWORD)ePROTOCOL_QMI_CTL_RX) / 2; + if (IsValid( (eQMIService)tmp ) == true) + { + st = (eQMIService)tmp; + } + + return st; +}; + +//--------------------------------------------------------------------------- +// Pragmas (pack structs) +//--------------------------------------------------------------------------- +#pragma pack( push, 1 ) + +/*=========================================================================*/ +// Struct sQMUXHeader +// Struct to represent a QMUX transaction header (raw) +/*=========================================================================*/ +struct sQMUXHeader +{ + public: + WORD mLength; + BYTE mFlags; + BYTE mServiceType; + BYTE mClientID; +}; + +/*=========================================================================*/ +// Struct sQMIControlRawTransactionHeader +// Struct to represent a QMI control transaction header (raw) +/*=========================================================================*/ +struct sQMIControlRawTransactionHeader +{ + public: + BYTE mResponse : 1; // Is this a response transaction? + BYTE mIndication : 1; // Is this an indication transaction? + BYTE mReserved : 6; + + BYTE mTransactionID; // Transaction ID +}; + +/*=========================================================================*/ +// Struct sQMIServiceRawTransactionHeader +// Struct to represent a QMI service transaction header (raw) +/*=========================================================================*/ +struct sQMIServiceRawTransactionHeader +{ + public: + BYTE mCompound : 1; // Is this a compound transaction? + BYTE mResponse : 1; // Is this a response transaction? + BYTE mIndication : 1; // Is this an indication transaction? + BYTE mReserved : 5; + + WORD mTransactionID; // Transaction ID +}; + +/*=========================================================================*/ +// Struct sQMIRawMessageHeader +// Struct to represent a QMI (control/service) message header (raw) +/*=========================================================================*/ +struct sQMIRawMessageHeader +{ + public: + WORD mMessageID; // Message ID + WORD mLength; // Length of message (not including this header) +}; + +/*=========================================================================*/ +// Struct sQMIRawContentHeader +// Struct to represent a QMI (control/service) content +// (i.e Type/Length/Value, TLV) header (raw) +/*=========================================================================*/ +struct sQMIRawContentHeader +{ + public: + BYTE mTypeID; // Content type ID + WORD mLength; // Content length (not including this header) +}; + +//--------------------------------------------------------------------------- +// Pragmas +//--------------------------------------------------------------------------- +#pragma pack( pop ) + + +/*=========================================================================*/ +// Struct sQMIServiceBuffer +// Struct to represent a QMI service channel request/response/indication +// (shared buffer) +/*=========================================================================*/ +struct sQMIServiceBuffer : public sProtocolBuffer +{ + public: + // Constructor + sQMIServiceBuffer( sSharedBuffer * pBuffer ); + + // Destructor + virtual ~sQMIServiceBuffer(); + + // (Inline) Is this a request? + bool IsRequest() const + { + bool bRequest = false; + + const sQMIServiceRawTransactionHeader * pHdr = GetHeader(); + if (pHdr != 0) + { + bRequest = (pHdr->mResponse == 0 && pHdr->mIndication == 0); + } + + return bRequest; + }; + + // (Inline) Is this a response? + bool IsResponse() const + { + bool bResponse = false; + + const sQMIServiceRawTransactionHeader * pHdr = GetHeader(); + if (pHdr != 0) + { + bResponse = (pHdr->mResponse == 1); + } + + return bResponse; + }; + + // (Inline) Is this an indication? + bool IsIndication() const + { + bool bInd = false; + + const sQMIServiceRawTransactionHeader * pHdr = GetHeader(); + if (pHdr != 0) + { + bInd = (pHdr->mIndication == 1); + } + + return bInd; + }; + + // (Inline) Return raw header + const sQMIServiceRawTransactionHeader * GetHeader() const + { + const sQMIServiceRawTransactionHeader * pHdr = 0; + if (IsValid() == true) + { + pHdr = (const sQMIServiceRawTransactionHeader *)GetBuffer(); + } + + return pHdr; + }; + + // (Inline) Return the message ID + ULONG GetMessageID() const + { + ULONG id = (ULONG)0xffffffff; + + const sQMIServiceRawTransactionHeader * pHdr = GetHeader(); + if (pHdr != 0) + { + pHdr++; + const sQMIRawMessageHeader * pMsgHdr = 0; + pMsgHdr = (sQMIRawMessageHeader *)pHdr; + + id = pMsgHdr->mMessageID; + } + + return id; + }; + + // (Inline) Return the transaction ID + WORD GetTransactionID() const + { + WORD id = (WORD)INVALID_QMI_TRANSACTION_ID; + + const sQMIServiceRawTransactionHeader * pHdr = GetHeader(); + if (pHdr != 0) + { + id = pHdr->mTransactionID; + } + + return id; + }; + + // (Inline) Return raw content array + const sQMIRawContentHeader * GetRawContents( ULONG & contentLen ) const + { + // Assume failure + ULONG len = 0; + const sQMIRawContentHeader * pRaw = 0; + + const sQMIServiceRawTransactionHeader * pHdr = GetHeader(); + if (pHdr != 0) + { + pHdr++; + const sQMIRawMessageHeader * pMsgHdr = 0; + pMsgHdr = (sQMIRawMessageHeader *)pHdr; + + len = pMsgHdr->mLength; + pMsgHdr++; + if (len > 0) + { + pRaw = (const sQMIRawContentHeader *)pMsgHdr; + } + } + + contentLen = len; + return pRaw; + }; + + // (Inline) Return content structures + std::map GetContents() const + { + return mContents; + }; + + // Return contents of mandatory result content + bool GetResult( + ULONG & returnCode, + ULONG & errorCode ); + + // Build a QMI request/response/indication + static sSharedBuffer * BuildBuffer( + eQMIService serviceType, + WORD msgID, + bool bResponse = false, + bool bIndication = false, + const BYTE * pData = 0, + ULONG dataLen = 0 ); + + protected: + // QMI protocol server has to be able to set the transaction ID + friend class cQMIProtocolServer; + + // Set the transaction ID + void SetTransactionID( WORD tid ) const + { + if (tid == (WORD)INVALID_QMI_TRANSACTION_ID || IsValid() == false) + { + return; + } + + sQMIServiceRawTransactionHeader * pHdr = 0; + pHdr = (sQMIServiceRawTransactionHeader *)GetHeader(); + if (pHdr != 0) + { + pHdr->mTransactionID = tid; + } + }; + + // Is this QMI request/response/indication packet valid? + virtual bool Validate(); + + /* Content TLV structures (indexed by type ID) */ + std::map mContents; + + private: + // Prevent 'upcopying' + sQMIServiceBuffer( const sProtocolBuffer & ); + sQMIServiceBuffer & operator = ( const sProtocolBuffer & ); +}; + diff --git a/gobi-api/GobiAPI_2013-07-31-1347/Core/QMIEnum.h b/gobi-api/GobiAPI_2013-07-31-1347/Core/QMIEnum.h new file mode 100644 index 0000000..615c382 --- /dev/null +++ b/gobi-api/GobiAPI_2013-07-31-1347/Core/QMIEnum.h @@ -0,0 +1,2350 @@ +/*=========================================================================== +FILE: + QMIEnum.h + +DESCRIPTION: + QMI protocol enumerations and related methods + +PUBLIC ENUMERATIONS AND METHODS: + eQMIService + eQMIMessageCTL + eQMIMessageWDS + eQMIMessageDMS + eQMIMessageNAS + eQMIMessageWMS + eQMIMessagePDS + eQMIMessageAUTH + eQMIMessageAT + eQMIMessageVoice + eQMIMessageUIM + eQMIMessagePBM + eQMIMessageSAR + eQMIMessageRMTFS + eQMIMessageWDA + eQMIMessageQCMAP + eQMIMessageCOEX + eQMIMessagePDC + eQMIMessageSTX + eQMIMessageRFRPE + eQMIMessageCAT + eQMIMessageRMS + eQMIMessageOMA + eQMIResultCode + eQMIErrorCode + eQMICallEndReason + eIPAddressType + eSMSMessageMode + +Copyright (c) 2013, The Linux Foundation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +===========================================================================*/ + +//--------------------------------------------------------------------------- +// Pragmas +//--------------------------------------------------------------------------- +#pragma once + +//--------------------------------------------------------------------------- +// Include Files +//--------------------------------------------------------------------------- + +//--------------------------------------------------------------------------- +// Definitions +//--------------------------------------------------------------------------- + +// Invalid QMI transaction ID +const ULONG INVALID_QMI_TRANSACTION_ID = 0; + +// QMI DMS PRL size constants +const ULONG QMI_DMS_MAX_PRL_SIZE = 16384; +const ULONG QMI_DMS_MAX_PRL_BLOCK = 256; + +/*=========================================================================*/ +// eQMIService Enumeration +// QMI Service Type Enumeration +/*=========================================================================*/ +enum eQMIService +{ + eQMI_SVC_ENUM_BEGIN = -1, + + eQMI_SVC_CONTROL, // 000 Control service + eQMI_SVC_WDS, // 001 Wireless data service + eQMI_SVC_DMS, // 002 Device management service + eQMI_SVC_NAS, // 003 Network access service + eQMI_SVC_QOS, // 004 Quality of service, err, service + eQMI_SVC_WMS, // 005 Wireless messaging service + eQMI_SVC_PDS, // 006 Position determination service + eQMI_SVC_AUTH, // 007 Authentication service + eQMI_SVC_AT, // 008 AT command processor service + eQMI_SVC_VOICE, // 009 Voice service + eQMI_SVC_CAT2, // 010 Card application toolkit service (new) + eQMI_SVC_UIM, // 011 UIM service + eQMI_SVC_PBM, // 012 Phonebook service + eQMI_SVC_QCHAT, // 013 QCHAT Service + eQMI_SVC_RMTFS, // 014 Remote file system service + eQMI_SVC_TEST, // 015 Test service + eQMI_SVC_LOC, // 016 Location service + eQMI_SVC_SAR, // 017 Specific absorption rate service + eQMI_SVC_IMSS, // 018 IMS settings service + eQMI_SVC_ADC, // 019 Analog to digital converter driver service + eQMI_SVC_CSD, // 020 Core sound driver service + eQMI_SVC_MFS, // 021 Modem embedded file system service + eQMI_SVC_TIME, // 022 Time service + eQMI_SVC_TS, // 023 Thermal sensors service + eQMI_SVC_TMD, // 024 Thermal mitigation device service + eQMI_SVC_SAP, // 025 Service access proxy service + eQMI_SVC_WDA, // 026 Wireless data administrative service + eQMI_SVC_TSYNC, // 027 TSYNC control service + eQMI_SVC_RFSA, // 028 Remote file system access service + eQMI_SVC_CSVT, // 029 Circuit switched videotelephony service + eQMI_SVC_QCMAP, // 030 Qualcomm mobile access point service + eQMI_SVC_IMSP, // 031 IMS presence service + eQMI_SVC_IMSVT, // 032 IMS videotelephony service + eQMI_SVC_IMSA, // 033 IMS application service + eQMI_SVC_COEX, // 034 Coexistence service + eQMI_SVC_RESERVED_35, // 035 Reserved + eQMI_SVC_PDC, // 036 Persistent device configuration service + eQMI_SVC_RESERVED_37, // 037 Reserved + eQMI_SVC_STX, // 038 Simultaneous transmit service + eQMI_SVC_BIT, // 039 Bearer independent transport service + eQMI_SVC_IMSRTP, // 040 IMS RTP service + eQMI_SVC_RFRPE, // 041 RF radiated performance enhancement service + eQMI_SVC_DSD, // 042 Data system determination service + eQMI_SVC_SSCTL, // 043 Subsystem control service + + eQMI_SVC_CAT = 224, // 224 Card application toolkit service + eQMI_SVC_RMS, // 225 Remote management service + eQMI_SVC_OMA, // 226 Open mobile alliance dev mgmt service + + eQMI_SVC_ENUM_END +}; + +/*=========================================================================== +METHOD: + IsValid (Inline Method) + +DESCRIPTION: + eQMIService validity check + +PARAMETERS: + svc [ I ] - Enum value being verified + +RETURN VALUE: + bool +===========================================================================*/ +inline bool IsValid( eQMIService svc ) +{ + bool retVal = false; + if ( (svc > eQMI_SVC_ENUM_BEGIN && svc <= eQMI_SVC_SSCTL) + || (svc >= eQMI_SVC_CAT && svc < eQMI_SVC_ENUM_END) ) + { + retVal = true; + } + + return retVal; +}; + +/*=========================================================================*/ +// eQMIMessageCTL Enumeration +// QMI Control Service Type Message ID Enumeration +/*=========================================================================*/ +enum eQMIMessageCTL +{ + eQMI_CTL_ENUM_BEGIN = -1, + + eQMI_CTL_SET_INSTANCE_ID = 32, // 32 Set the unique link instance ID + eQMI_CTL_GET_VERSION_INFO, // 33 Get supported service version info + eQMI_CTL_GET_CLIENT_ID, // 34 Get a unique client ID + eQMI_CTL_RELEASE_CLIENT_ID, // 35 Release the unique client ID + eQMI_CTL_REVOKE_CLIENT_ID_IND, // 36 Indication of client ID revocation + eQMI_CTL_INVALID_CLIENT_ID, // 37 Indication of invalid client ID + eQMI_CTL_SET_DATA_FORMAT, // 38 Set host driver data format + eQMI_CTL_SYNC, // 39 Synchronize client/server + eQMI_CTL_SYNC_IND = 39, // 39 Synchronize indication + eQMI_CTL_SET_EVENT, // 40 Set event report conditions + eQMI_CTL_EVENT_IND = 40, // 40 Event report indication + eQMI_CTL_SET_POWER_SAVE_CFG, // 41 Set power save config + eQMI_CTL_SET_POWER_SAVE_MODE, // 42 Set power save mode + eQMI_CTL_GET_POWER_SAVE_MODE, // 43 Get power save mode + + eQMI_CTL_ENUM_END +}; + +/*=========================================================================== +METHOD: + IsValid (Inline Method) + +DESCRIPTION: + eQMIMessageCTL validity check + +PARAMETERS: + msgID [ I ] - Enum value being verified + +RETURN VALUE: + bool +===========================================================================*/ +inline bool IsValid( eQMIMessageCTL msgID ) +{ + bool retVal = false; + if (msgID >= eQMI_CTL_SET_INSTANCE_ID && msgID < eQMI_CTL_ENUM_END) + { + retVal = true; + } + + return retVal; +}; + +/*=========================================================================*/ +// eQMIMessageWDS Enumeration +// QMI WDS Service Type Message ID Enumeration +/*=========================================================================*/ +enum eQMIMessageWDS +{ + eQMI_WDS_ENUM_BEGIN = -1, + + eQMI_WDS_RESET, // 000 Reset WDS service state variables + eQMI_WDS_SET_EVENT, // 001 Set connection state report conditions + eQMI_WDS_EVENT_IND = 1, // 001 Connection state report indication + eQMI_WDS_ABORT, // 002 Abort previously issued WDS command + eQMI_WDS_SET_INDICATION, // 003 Set indication conditions + + eQMI_WDS_GET_MESSAGES = 30, // 030 Get supported messages + eQMI_WDS_GET_FIELDS, // 031 Get supported fields + eQMI_WDS_START_NET, // 032 Start WDS network interface + eQMI_WDS_STOP_NET, // 033 Stop WDS network interface + eQMI_WDS_GET_PKT_STATUS, // 034 Get packet data connection status + eQMI_WDS_PKT_STATUS_IND = 34, // 034 Packet data connection status indication + eQMI_WDS_GET_RATES, // 035 Get current bit rates of the connection + eQMI_WDS_GET_STATISTICS, // 036 Get the packet data transfer statistics + eQMI_WDS_G0_DORMANT, // 037 Go dormant + eQMI_WDS_G0_ACTIVE, // 038 Go active + eQMI_WDS_CREATE_PROFILE, // 039 Create profile with specified settings + eQMI_WDS_MODIFY_PROFILE, // 040 Modify profile with specified settings + eQMI_WDS_DELETE_PROFILE, // 041 Delete the specified profile + eQMI_WDS_GET_PROFILE_LIST, // 042 Get all profiles + eQMI_WDS_GET_PROFILE, // 043 Get the specified profile + eQMI_WDS_GET_DEFAULTS, // 044 Get the default data session settings + eQMI_WDS_GET_SETTINGS, // 045 Get the runtime data session settings + eQMI_WDS_SET_MIP, // 046 Get the mobile IP setting + eQMI_WDS_GET_MIP, // 047 Set the mobile IP setting + eQMI_WDS_GET_DORMANCY, // 048 Get the dormancy status + + eQMI_WDS_GET_AUTOCONNECT = 52, // 052 Get the NDIS autoconnect setting + eQMI_WDS_GET_DURATION, // 053 Get the duration of data session + eQMI_WDS_GET_MODEM_STATUS, // 054 Get the modem status + eQMI_WDS_MODEM_IND = 54, // 054 Modem status indication + eQMI_WDS_GET_DATA_BEARER, // 055 Get the data bearer type + eQMI_WDS_GET_MODEM_INFO, // 056 Get the modem info + eQMI_WDS_MODEM_INFO_IND = 56, // 056 Modem info indication + + eQMI_WDS_GET_ACTIVE_MIP = 60, // 060 Get the active mobile IP profile + eQMI_WDS_SET_ACTIVE_MIP, // 061 Set the active mobile IP profile + eQMI_WDS_GET_MIP_PROFILE, // 062 Get mobile IP profile settings + eQMI_WDS_SET_MIP_PROFILE, // 063 Set mobile IP profile settings + eQMI_WDS_GET_MIP_PARAMS, // 064 Get mobile IP parameters + eQMI_WDS_SET_MIP_PARAMS, // 065 Set mobile IP parameters + eQMI_WDS_GET_LAST_MIP_STATUS, // 066 Get last mobile IP status + eQMI_WDS_GET_AAA_AUTH_STATUS, // 067 Get AN-AAA authentication status + eQMI_WDS_GET_CUR_DATA_BEARER, // 068 Get current data bearer + eQMI_WDS_GET_CALL_LIST, // 069 Get the call history list + eQMI_WDS_GET_CALL_ENTRY, // 070 Get an entry from the call history list + eQMI_WDS_CLEAR_CALL_LIST, // 071 Clear the call history list + eQMI_WDS_GET_CALL_LIST_MAX, // 072 Get maximum size of call history list + eQMI_WDS_GET_DEFAULT_PROF_NUM, // 073 Get default profile number + eQMI_WDS_SET_DEFAULT_PROF_NUM, // 074 Set default profile number + eQMI_WDS_RESET_PROFILE, // 075 Reset profile + eQMI_WDS_RESET_PROF_PARAM, // 076 Reset profile param to invalid + eQMI_WDS_SET_IP_FAMILY, // 077 Set the client IP family preference + eQMI_WDS_SET_FMC_TUNNEL, // 078 Set FMC tunnel parameters + eQMI_WDS_CLEAR_FMC_TUNNEL, // 079 Clear FMC tunnel parameters + eQMI_WDS_GET_FMC_TUNNEL, // 080 Get FMC tunnel parameters + eQMI_WDS_SET_AUTOCONNECT, // 081 Set the NDIS autoconnect setting + eQMI_WDS_GET_DNS, // 082 Get the DNS setting + eQMI_WDS_SET_DNS, // 083 Set the DNS setting + eQMI_WDS_GET_PRE_DORMANCY, // 084 Get the CDMA pre-dormancy settings + eQMI_WDS_SET_CAM_TIMER, // 085 Set the CAM timer + eQMI_WDS_GET_CAM_TIMER, // 086 Get the CAM timer + eQMI_WDS_SET_SCRM, // 087 Set SCRM status + eQMI_WDS_GET_SCRM, // 088 Get SCRM status + eQMI_WDS_SET_RDUD, // 089 Set RDUD status + eQMI_WDS_GET_RDUD, // 090 Get RDUD status + eQMI_WDS_GET_SIPMIP_CALL_TYPE, // 091 Set SIP/MIP call type + eQMI_WDS_SET_PM_PERIOD, // 092 Set EV-DO page monitor period + eQMI_WDS_PM_PERIOD_IND = 92, // 092 EV-DO page monitor period indication + eQMI_WDS_SET_FORCE_LONG_SLEEP, // 093 Set EV-DO force long sleep feature + eQMI_WDS_GET_PM_PERIOD, // 094 Get EV-DO page monitor period + eQMI_WDS_GET_CALL_THROTTLE, // 095 Get call throttle info + eQMI_WDS_GET_NSAPI, // 096 Get NSAPI + eQMI_WDS_SET_DUN_CTRL_PREF, // 097 Set DUN control preference + eQMI_WDS_GET_DUN_CTRL_INFO, // 098 Set DUN control info + eQMI_WDS_SET_DUN_CTRL_EVENT, // 099 Set DUN control event preference + eQMI_WDS_DUN_CTRL_IND = 99, // 099 DUN control event report indication + eQMI_WDS_PENDING_DUN_CTRL, // 100 Control pending DUN call + eQMI_WDS_TMGI_ACTIVATE, // 101 Activate eMBMS TMGI + eQMI_WDS_TMGI_ACT_IND = 101, // 101 eMBMS TMGI activate indication + eQMI_WDS_TMGI_DEACTIVATE, // 102 Activate eMBMS TMGI + eQMI_WDS_TMGI_DEACT_IND = 102, // 102 eMBMS TMGI activate indication + eQMI_WDS_TMGI_LIST_QUERY, // 103 Query for eMBMS TMGI list + eQMI_WDS_TMGI_LIST_IND, // 104 eMBMS TMGI list query indication + eQMI_WDS_GET_PREF_DATA_SYS, // 105 Get preferred data system + eQMI_WDS_GET_LAST_DATA_STATUS, // 106 Get last data call status + eQMI_WDS_GET_CURR_DATA_SYS, // 107 Get current data systems status + eQMI_WDS_GET_PDN_THROTTLE, // 108 Get PDN throttle info + + eQMI_WDS_GET_LTE_ATTACH = 133, // 133 Get LTE attach parameters + eQMI_WDS_RESET_PKT_STATS, // 134 Reset packet statistics + eQMI_WDS_GET_FLOW_CTRL_STATUS, // 135 Get flow control status + eQMI_WDS_TMGI_SWITCH, // 136 Activate/deactivate eMBMS TMGI + eQMI_WDS_TMGI_SWITCH_IND = 136,// 136 eMBMS TMGI activate/deactivate ind + eQMI_WDS_BIND_DATA_PORT, // 137 Bind data port + eQMI_WDS_SET_PDN_FILTER, // 138 Set additional PDN filter + eQMI_WDS_REMOVE_PDN_FILTER, // 139 Remove PDN filter + eQMI_WDS_EX_IP_CFG_IND, // 140 Extend IP config indication + eQMI_WDS_CFG_REV_IP_CONN_EVT, // 141 Configure reverse IP connection event + eQMI_WDS_REV_IP_TRANSPORT_IND, // 142 Reverse IP transport connection ind + eQMI_WDS_GET_IPSEC_SA_CFG, // 143 Get IPSec static SA config + eQMI_WDS_REV_IP_TPORT_CFG_DONE,// 144 Reverse IP transport config complete + eQMI_WDS_GET_EX_DATA_BEARER, // 145 Get extended data bearer + eQMI_WDS_GET_LTE_MAX_ATTACH, // 146 Get LTE maximum attach PDN number + eQMI_WDS_SET_LTE_ATTACH_PDNS, // 147 Set LTE attach PDN list + eQMI_WDS_GET_LTE_ATTACH_PDNS, // 148 Set LTE attach PDN list + eQMI_WDS_LTE_ATTACH_PDNS_IND, // 149 LTE attach PDN list indication + eQMI_WDS_SET_LTE_DATA_RETRY, // 150 Set LTE data retry + eQMI_WDS_GET_LTE_DATA_RETRY, // 151 Get LTE data retry + eQMI_WDS_SET_LTE_ATTACH_TYPE, // 152 Set LTE attach type + eQMI_WDS_GET_LTE_ATTACH_TYPE, // 153 Get LTE attach type + eQMI_WDS_REV_IP_FILTER_IND, // 154 Reverse IP transport filter ind + eQMI_WDS_HANDOFF_INFO_IND, // 155 Handoff info indication + + eQMI_WDS_ENUM_END +}; + +/*=========================================================================== +METHOD: + IsValid (Inline Method) + +DESCRIPTION: + eQMIMessageWDS validity check + +PARAMETERS: + msgID [ I ] - Enum value being verified + +RETURN VALUE: + bool +===========================================================================*/ +inline bool IsValid( eQMIMessageWDS msgID ) +{ + bool retVal = false; + if ( (msgID > eQMI_WDS_ENUM_BEGIN && msgID <= eQMI_WDS_SET_INDICATION) + || (msgID >= eQMI_WDS_GET_MESSAGES && msgID <= eQMI_WDS_GET_DORMANCY) + || (msgID >= eQMI_WDS_GET_AUTOCONNECT && msgID <= eQMI_WDS_MODEM_INFO_IND) + || (msgID >= eQMI_WDS_GET_ACTIVE_MIP && msgID <= eQMI_WDS_GET_PDN_THROTTLE) + || (msgID >= eQMI_WDS_GET_LTE_ATTACH && msgID < eQMI_WDS_ENUM_END) ) + { + retVal = true; + } + + return retVal; +}; + +/*=========================================================================*/ +// eQMIMessageDMS Enumeration +// QMI DMS Service Type Message ID Enumeration +/*=========================================================================*/ +enum eQMIMessageDMS +{ + eQMI_DMS_ENUM_BEGIN = -1, + + eQMI_DMS_RESET, // 00 Reset DMS service state variables + eQMI_DMS_SET_EVENT, // 01 Set connection state report conditions + eQMI_DMS_EVENT_IND = 1, // 01 Connection state report indication + + eQMI_DMS_GET_MESSAGES = 30, // 30 Get supported messages + eQMI_DMS_GET_FIELDS, // 31 Get supported fields + eQMI_DMS_GET_CAPS, // 32 Get the device capabilities + eQMI_DMS_GET_MANUFACTURER, // 33 Get the device manfacturer + eQMI_DMS_GET_MODEL_ID, // 34 Get the device model ID + eQMI_DMS_GET_REV_ID, // 35 Get the device revision ID + eQMI_DMS_GET_NUMBER, // 36 Get the assigned voice number + eQMI_DMS_GET_IDS, // 37 Get the ESN/IMEI/MEID + eQMI_DMS_GET_POWER_STATE, // 38 Get the get power state + eQMI_DMS_UIM_SET_PIN_PROT, // 39 UIM - Set PIN protection + eQMI_DMS_UIM_PIN_VERIFY, // 40 UIM - Verify PIN + eQMI_DMS_UIM_PIN_UNBLOCK, // 41 UIM - Unblock PIN + eQMI_DMS_UIM_PIN_CHANGE, // 42 UIM - Change PIN + eQMI_DMS_UIM_GET_PIN_STATUS, // 43 UIM - Get PIN status + eQMI_DMS_GET_MSM_ID = 44, // 44 Get MSM ID + eQMI_DMS_GET_OPERATING_MODE, // 45 Get the operating mode + eQMI_DMS_SET_OPERATING_MODE, // 46 Set the operating mode + eQMI_DMS_GET_TIME, // 47 Get timestamp from the device + eQMI_DMS_GET_PRL_VERSION, // 48 Get the PRL version + eQMI_DMS_GET_ACTIVATED_STATE, // 49 Get the activation state + eQMI_DMS_ACTIVATE_AUTOMATIC, // 50 Perform an automatic activation + eQMI_DMS_ACTIVATE_MANUAL, // 51 Perform a manual activation + eQMI_DMS_GET_USER_LOCK_STATE, // 52 Get the lock state + eQMI_DMS_SET_USER_LOCK_STATE, // 53 Set the lock state + eQMI_DMS_SET_USER_LOCK_CODE, // 54 Set the lock PIN + eQMI_DMS_READ_USER_DATA, // 55 Read user data + eQMI_DMS_WRITE_USER_DATA, // 56 Write user data + eQMI_DMS_READ_ERI_FILE, // 57 Read the enhanced roaming indicator file + eQMI_DMS_FACTORY_DEFAULTS, // 58 Reset to factory defaults + eQMI_DMS_VALIDATE_SPC, // 59 Validate service programming code + eQMI_DMS_UIM_GET_ICCID, // 60 Get UIM ICCID + eQMI_DMS_GET_FIRWARE_ID, // 61 Get firmware ID + eQMI_DMS_SET_FIRMWARE_ID, // 62 Set firmware ID + eQMI_DMS_GET_HOST_LOCK_ID, // 63 Get host lock ID + eQMI_DMS_UIM_GET_CK_STATUS, // 64 UIM - Get control key status + eQMI_DMS_UIM_SET_CK_PROT, // 65 UIM - Set control key protection + eQMI_DMS_UIM_UNBLOCK_CK, // 66 UIM - Unblock facility control key + eQMI_DMS_GET_IMSI, // 67 Get the IMSI + eQMI_DMS_UIM_GET_STATE, // 68 UIM - Get the UIM state + eQMI_DMS_GET_BAND_CAPS, // 69 Get the device band capabilities + eQMI_DMS_GET_FACTORY_ID, // 70 Get the device factory ID + eQMI_DMS_GET_FIRMWARE_PREF, // 71 Get firmware preference + eQMI_DMS_SET_FIRMWARE_PREF, // 72 Set firmware preference + eQMI_DMS_LIST_FIRMWARE, // 73 List all stored firmware + eQMI_DMS_DELETE_FIRMWARE, // 74 Delete specified stored firmware + eQMI_DMS_SET_TIME, // 75 Set device time + eQMI_DMS_GET_FIRMWARE_INFO, // 76 Get stored firmware info + eQMI_DMS_GET_ALT_NET_CFG, // 77 Get alternate network config + eQMI_DMS_SET_ALT_NET_CFG, // 78 Set alternate network config + eQMI_DMS_GET_IMG_DLOAD_MODE, // 79 Get next image download mode + eQMI_DMS_SET_IMG_DLOAD_MODE, // 80 Set next image download mode + eQMI_DMS_GET_SW_VERSION, // 81 Get software version + eQMI_DMS_SET_SPC, // 82 Set SPC + eQMI_DMS_GET_CURRENT_PRL_INFO,// 83 Get current PRL info + eQMI_DMS_BIND_SUBSCRIPTION, // 84 Bind subscription + eQMI_DMS_GET_SUBSCRIPTION, // 85 Get bound subscription + + eQMI_DMS_ENUM_END +}; + +/*=========================================================================== +METHOD: + IsValid (Inline Method) + +DESCRIPTION: + eQMIMessageDMS validity check + +PARAMETERS: + msgID [ I ] - Enum value being verified + +RETURN VALUE: + bool +===========================================================================*/ +inline bool IsValid( eQMIMessageDMS msgID ) +{ + bool retVal = false; + if ( (msgID > eQMI_DMS_ENUM_BEGIN && msgID <= eQMI_DMS_EVENT_IND) + || (msgID >= eQMI_DMS_GET_MESSAGES && msgID < eQMI_DMS_ENUM_END) ) + { + retVal = true; + } + + return retVal; +}; + +/*=========================================================================*/ +// eQMIMessageNAS Enumeration +// QMI NAS Service Type Message ID Enumeration +/*=========================================================================*/ +enum eQMIMessageNAS +{ + eQMI_NAS_ENUM_BEGIN = -1, + + eQMI_NAS_RESET, // 000 Reset NAS service state variables + eQMI_NAS_ABORT, // 001 Abort previously issued NAS command + eQMI_NAS_SET_EVENT, // 002 Set NAS state report conditions + eQMI_NAS_EVENT_IND = 2, // 002 Connection state report indication + eQMI_NAS_SET_REG_EVENT, // 003 Set NAS registration report conditions + + eQMI_NAS_GET_MESSAGES = 30, // 030 Get supported messages + eQMI_NAS_GET_FIELDS, // 031 Get supported fields + eQMI_NAS_GET_RSSI, // 032 Get the signal strength + eQMI_NAS_SCAN_NETS, // 033 Scan for visible network + eQMI_NAS_REGISTER_NET, // 034 Initiate a network registration + eQMI_NAS_ATTACH_DETACH, // 035 Initiate an attach or detach action + eQMI_NAS_GET_SS_INFO, // 036 Get info about current serving system + eQMI_NAS_SS_INFO_IND = 36, // 036 Current serving system info indication + eQMI_NAS_GET_HOME_INFO, // 037 Get info about home network + eQMI_NAS_GET_NET_PREF_LIST, // 038 Get the list of preferred networks + eQMI_NAS_SET_NET_PREF_LIST, // 039 Set the list of preferred networks + eQMI_NAS_GET_NET_BAN_LIST, // 040 Get the list of forbidden networks + eQMI_NAS_SET_NET_BAN_LIST, // 041 Set the list of forbidden networks + eQMI_NAS_SET_TECH_PREF, // 042 Set the technology preference + eQMI_NAS_GET_TECH_PREF, // 043 Get the technology preference + eQMI_NAS_GET_ACCOLC, // 044 Get the Access Overload Class + eQMI_NAS_SET_ACCOLC, // 045 Set the Access Overload Class + eQMI_NAS_GET_SYSPREF, // 046 Get the CDMA system preference + eQMI_NAS_GET_NET_PARAMS, // 047 Get various network parameters + eQMI_NAS_SET_NET_PARAMS, // 048 Set various network parameters + eQMI_NAS_GET_RF_INFO, // 049 Get the SS radio/band channel info + eQMI_NAS_GET_AAA_AUTH_STATUS, // 050 Get AN-AAA authentication status + eQMI_NAS_SET_SYS_SELECT_PREF, // 051 Set system selection preference + eQMI_NAS_GET_SYS_SELECT_PREF, // 052 Get system selection preference + eQMI_NAS_SYS_SELECT_IND = 52, // 052 System selection pref indication + + eQMI_NAS_SET_DDTM_PREF = 55, // 055 Set DDTM preference + eQMI_NAS_GET_DDTM_PREF, // 056 Get DDTM preference + eQMI_NAS_DDTM_IND = 56, // 056 DDTM preference indication + eQMI_NAS_GET_OPERATER_NAME, // 057 Get operator name data + eQMI_NAS_OPERATER_NAME_IND, // 058 Operator name data indication + eQMI_NAS_GET_PLMN_MODE, // 059 Get PLMN mode bit from CSP + eQMI_NAS_PLMN_MODE_IND, // 060 CSP PLMN mode bit indication + eQMI_NAS_UPDATE_AKEY, // 061 Update the A-KEY + eQMI_NAS_GET_3GPP2_SUBS_INFO, // 062 Get 3GPP2 subscription info + eQMI_NAS_SET_3GPP2_SUBS_INFO, // 063 Set 3GPP2 subscription info + eQMI_NAS_MOB_CAI_REV, // 064 Get mobile CAI revision information + eQMI_NAS_GET_RTRE_CONFIG, // 065 Get RTRE configuration information + eQMI_NAS_SET_RTRE_CONFIG, // 066 Set RTRE configuration information + eQMI_NAS_GET_CELL_LOC_INFO, // 067 Get cell location information + eQMI_NAS_GET_PLMN_NAME, // 068 Get operator name for specified network + eQMI_NAS_BIND_SUBS, // 069 Bind client to a specific subscription + eQMI_NAS_MANAGED_ROAMING_IND, // 070 Managed roaming indication + eQMI_NAS_DSB_PREF_IND, // 071 Dual standby preference indication + eQMI_NAS_SUBS_INFO_IND, // 072 Subscription info indication + eQMI_NAS_GET_MODE_PREF, // 073 Get mode preference + + eQMI_NAS_SET_DSB_PREF = 75, // 075 Set dual standby preference + eQMI_NAS_NETWORK_TIME_IND, // 076 Network time indication + eQMI_NAS_GET_SYSTEM_INFO, // 077 Get system info + eQMI_NAS_SYSTEM_INFO_IND, // 078 System info indication + eQMI_NAS_GET_SIGNAL_INFO, // 079 Get signal info + eQMI_NAS_CFG_SIGNAL_INFO, // 080 Configure signal info report + eQMI_NAS_SIGNAL_INFO_IND, // 081 Signal info indication + eQMI_NAS_GET_ERROR_RATE, // 082 Get error rate info + eQMI_NAS_ERROR_RATE_IND, // 083 Error rate indication + eQMI_NAS_EVDO_SESSION_IND, // 084 CDMA 1xEV-DO session close indication + eQMI_NAS_EVDO_UATI_IND, // 085 CDMA 1xEV-DO UATI update indication + eQMI_NAS_GET_EVDO_SUBTYPE, // 086 Get CDMA 1xEV-DO protocol subtype + eQMI_NAS_GET_EVDO_COLOR_CODE, // 087 Get CDMA 1xEV-DO color code + eQMI_NAS_GET_ACQ_SYS_MODE, // 088 Get current acquisition system mode + eQMI_NAS_SET_RX_DIVERSITY, // 089 Set the RX diversity + eQMI_NAS_GET_RX_TX_INFO, // 090 Get detailed RX/TX information + eQMI_NAS_UPDATE_AKEY_EXT, // 091 Update the A-KEY (extended) + eQMI_NAS_GET_DSB_PREF, // 092 Get dual standby preference + eQMI_NAS_DETACH_LTE, // 093 Detach the current LTE system + eQMI_NAS_BLOCK_LTE_PLMN, // 094 Block LTE PLMN + eQMI_NAS_UNBLOCK_LTE_PLMN, // 095 Unblock LTE PLMN + eQMI_NAS_RESET_LTE_PLMN_BLK, // 096 Reset LTE PLMN blocking + eQMI_NAS_CUR_PLMN_NAME_IND, // 097 Current PLMN name indication + eQMI_NAS_CONFIG_EMBMS, // 098 Configure eMBMS + eQMI_NAS_GET_EMBMS_STATUS, // 099 Get eMBMS status + eQMI_NAS_EMBMS_STATUS_IND, // 100 eMBMS status indication + eQMI_NAS_GET_CDMA_POS_INFO, // 101 Get CDMA position info + eQMI_NAS_RF_BAND_INFO_IND, // 102 RF band info indication + eQMI_NAS_FORCE_NET_SEARCH, // 103 Force network search + eQMI_NAS_NET_REJECT_IND, // 104 Network reject indication + eQMI_NAS_GET_MANAGED_ROAM, // 105 Get managed roaming configuration + eQMI_NAS_RTRE_CONFIG_IND, // 106 RTRE configuration indication + eQMI_NAS_GET_CENTRALIZED_EOM, // 107 Get centralized EONS support + eQMI_NAS_CFG_SIGNAL_INFO2, // 108 Configure signal info report (V2) + eQMI_NAS_GET_TDS_CELL_INFO, // 109 Get TD-SCDMA cell/position info + eQMI_NAS_SET_HPLMN_IRAT_TIMER,// 110 Set HPLMN IRAT search timer + eQMI_NAS_GET_EMBMS_SIQ_QUAL, // 111 Get eMBMS signal quality + eQMI_NAS_LIMIT_SYS_INFO, // 112 Limit system info indications + eQMI_NAS_GET_SYS_INFO_LIMITS, // 113 Get system info indication limits + eQMI_NAS_UPDATE_IMS_STATUS, // 114 Update IMS status + eQMI_NAS_GET_IMS_PREFERENCE, // 115 Get IMS preference status + eQMI_NAS_IMS_PREFERENCE_IND, // 116 IMS preference status indication + eQMI_NAS_CFG_IND_PLMN_NAME, // 117 Configure indication for PLMN name + eQMI_NAS_CDMA_AVOID_SYSTEM, // 118 CDMA avoid system + eQMI_NAS_GET_AVOIDED_SYSTEMS, // 119 Get CDMA avoided system list + eQMI_NAS_SET_HPLMN_SRCH_TIMER,// 120 Set HPLMN search timer + eQMI_NAS_GET_HPLMN_SRCH_TIMER,// 121 Get HPLMN search timer + eQMI_NAS_SET_E911_STATE, // 122 Set E911 state + eQMI_NAS_E911_STATE_IND, // 123 E911 state ready indication + eQMI_NAS_GET_SUBS_INFO, // 124 Get subscription info + eQMI_NAS_GET_NET_TIME, // 125 Get network time + eQMI_NAS_GET_LTE_SIB16_TIME, // 126 Get LTE SIB16 network time + eQMI_NAS_LTE_SIB16_TIME_IND, // 127 LTE SIB16 network time indication + + eQMI_NAS_ENUM_END +}; + +/*=========================================================================== +METHOD: + IsValid (Inline Method) + +DESCRIPTION: + eQMIMessageNAS validity check + +PARAMETERS: + msgID [ I ] - Enum value being verified + +RETURN VALUE: + bool +===========================================================================*/ +inline bool IsValid( eQMIMessageNAS msgID ) +{ + bool retVal = false; + if ( (msgID > eQMI_NAS_ENUM_BEGIN && msgID <= eQMI_NAS_SET_REG_EVENT) + || (msgID >= eQMI_NAS_GET_MESSAGES && msgID <= eQMI_NAS_SYS_SELECT_IND) + || (msgID >= eQMI_NAS_SET_DDTM_PREF && msgID <= eQMI_NAS_GET_MODE_PREF) + || (msgID >= eQMI_NAS_SET_DSB_PREF && msgID < eQMI_NAS_ENUM_END) ) + { + retVal = true; + } + + return retVal; +}; + +/*=========================================================================*/ +// eQMIMessageWMS Enumeration +// QMI WMS Service Type Message ID Enumeration +/*=========================================================================*/ +enum eQMIMessageWMS +{ + eQMI_WMS_ENUM_BEGIN = -1, + + eQMI_WMS_RESET, // 00 Reset WMS service state variables + eQMI_WMS_SET_EVENT, // 01 Set new message report conditions + eQMI_WMS_EVENT_IND = 1, // 01 New message report indication + + eQMI_WMS_GET_MESSAGES = 30, // 030 Get supported messages + eQMI_WMS_GET_FIELDS, // 031 Get supported fields + eQMI_WMS_RAW_SEND, // 32 Send a raw message + eQMI_WMS_RAW_WRITE, // 33 Write a raw message to the device + eQMI_WMS_RAW_READ, // 34 Read a raw message from the device + eQMI_WMS_MODIFY_TAG, // 35 Modify message tag on the device + eQMI_WMS_DELETE, // 36 Delete message by index/tag/memory + + eQMI_WMS_GET_MSG_PROTOCOL = 48, // 48 Get the current message protocol + eQMI_WMS_GET_MSG_LIST, // 49 Get list of messages from the device + eQMI_WMS_SET_ROUTES, // 50 Set routes for message memory storage + eQMI_WMS_GET_ROUTES, // 51 Get routes for message memory storage + eQMI_WMS_GET_SMSC_ADDR, // 52 Get SMSC address + eQMI_WMS_SET_SMSC_ADDR, // 53 Set SMSC address + eQMI_WMS_GET_MSG_LIST_MAX, // 54 Get maximum size of SMS storage + eQMI_WMS_SEND_ACK, // 55 Send ACK + eQMI_WMS_SET_RETRY_PERIOD, // 56 Set retry period + eQMI_WMS_SET_RETRY_INTERVAL, // 57 Set retry interval + eQMI_WMS_SET_DC_DISCO_TIMER, // 58 Set DC auto-disconnect timer + eQMI_WMS_SET_MEMORY_STATUS, // 59 Set memory storage status + eQMI_WMS_SET_BC_ACTIVATION, // 60 Set broadcast activation + eQMI_WMS_SET_BC_CONFIG, // 61 Set broadcast config + eQMI_WMS_GET_BC_CONFIG, // 62 Get broadcast config + eQMI_WMS_MEMORY_FULL_IND, // 63 Memory full indication + eQMI_WMS_GET_DOMAIN_PREF, // 64 Get domain preference + eQMI_WMS_SET_DOMAIN_PREF, // 65 Set domain preference + eQMI_WMS_MEMORY_SEND, // 66 Send message from memory store + eQMI_WMS_GET_MSG_WAITING, // 67 Get message waiting info + eQMI_WMS_MSG_WAITING_IND, // 68 Message waiting indication + eQMI_WMS_SET_PRIMARY_CLIENT, // 69 Set client as primary client + eQMI_WMS_SMSC_ADDR_IND, // 70 SMSC address indication + eQMI_WMS_INDICATOR_REG, // 71 Register for indicators + eQMI_WMS_GET_TRANSPORT_INFO, // 72 Get transport layer info + eQMI_WMS_TRANSPORT_INFO_IND, // 73 Transport layer info indication + eQMI_WMS_GET_NW_REG_INFO, // 74 Get network registration info + eQMI_WMS_NW_REG_INFO_IND, // 75 Network registration info indication + eQMI_WMS_BIND_SUBSCRIPTION, // 76 Bind client to a subscription + eQMI_WMS_GET_INDICATOR_REG, // 77 Get indicator registration + eQMI_WMS_GET_SMS_PARAMETERS, // 78 Get SMS EF-SMSP parameters + eQMI_WMS_SET_SMS_PARAMETERS, // 79 Set SMS EF-SMSP parameters + eQMI_WMS_CALL_STATUS_IND, // 80 Call status indication + eQMI_WMS_GET_DOMAIN_PREF_CFG, // 81 Get domain pref config + eQMI_WMS_SET_DOMAIN_PREF_CFG, // 82 Set domain pref config + eQMI_WMS_GET_RETRY_PERIOD, // 83 Get retry period + eQMI_WMS_GET_RETRY_INTERVAL, // 84 Get retry interval + eQMI_WMS_GET_DC_DISCO_TIMER, // 85 Get DC auto-disconnect timer + eQMI_WMS_GET_MEMORY_STATUS, // 86 Get memory storage status + eQMI_WMS_GET_PRIMARY_CLIENT, // 87 Get primary cleint + eQMI_WMS_GET_SUBSCR_BINDING, // 88 Get client subscription binding + eQMI_WMS_ASYNC_RAW_SEND, // 89 Asynchronously send a raw message + eQMI_WMS_ASYNC_RAW_SEND_IND = 89,// 89 Asynchronous send indication + eQMI_WMS_ASYNC_SEND_ACK, // 90 Asynchronously send ACK + eQMI_WMS_ASYNC_SEND_ACK_IND = 90,// 90 Asynchronou send ACK indication + eQMI_WMS_ASYNC_MEMORY_SEND, // 91 Async send msg from memory store + eQMI_WMS_ASYNC_MEM_SEND_IND = 91,// 91 Async memory store send indication + eQMI_WMS_GET_SERVICE_READY, // 92 Get service ready status + eQMI_WMS_SERVICE_READY_IND, // 93 Service ready status indication + eQMI_WMS_BC_CONFIG_IND, // 94 Broadcast config indication + eQMI_WMS_SET_MSG_WAITING, // 95 Set message waiting info + + eQMI_WMS_ENUM_END +}; + +/*=========================================================================== +METHOD: + IsValid (Inline Method) + +DESCRIPTION: + eQMIMessageWMS validity check + +PARAMETERS: + msgID [ I ] - Enum value being verified + +RETURN VALUE: + bool +===========================================================================*/ +inline bool IsValid( eQMIMessageWMS msgID ) +{ + bool retVal = false; + if ( (msgID > eQMI_WMS_ENUM_BEGIN && msgID <= eQMI_WMS_EVENT_IND) + || (msgID >= eQMI_WMS_GET_MESSAGES && msgID <= eQMI_WMS_DELETE) + || (msgID >= eQMI_WMS_GET_MSG_PROTOCOL && msgID < eQMI_WMS_ENUM_END) ) + { + retVal = true; + } + + return retVal; +}; + +/*=========================================================================*/ +// eQMIMessagePDS Enumeration +// QMI PDS Service Type Message ID Enumeration +/*=========================================================================*/ +enum eQMIMessagePDS +{ + eQMI_PDS_ENUM_BEGIN = -1, + + eQMI_PDS_RESET, // 000 Reset PDS service state variables + eQMI_PDS_SET_EVENT, // 001 Set PDS report conditions + eQMI_PDS_EVENT_IND = 1, // 001 PDS report indication + + eQMI_PDS_GET_STATE = 32, // 032 Return PDS service state + eQMI_PDS_STATE_IND = 32, // 032 PDS service state indication + eQMI_PDS_SET_STATE, // 033 Set PDS service state + eQMI_PDS_START_SESSION, // 034 Start a PDS tracking session + eQMI_PDS_GET_SESSION_INFO, // 035 Get PDS tracking session info + eQMI_PDS_FIX_POSITION, // 036 Manual tracking session position + eQMI_PDS_END_SESSION, // 037 End a PDS tracking session + eQMI_PDS_GET_NMEA_CFG, // 038 Get NMEA sentence config + eQMI_PDS_SET_NMEA_CFG, // 039 Set NMEA sentence config + eQMI_PDS_INJECT_TIME, // 040 Inject a time reference + eQMI_PDS_GET_DEFAULTS, // 041 Get default tracking session config + eQMI_PDS_SET_DEFAULTS, // 042 Set default tracking session config + eQMI_PDS_GET_XTRA_PARAMS, // 043 Get the GPS XTRA parameters + eQMI_PDS_SET_XTRA_PARAMS, // 044 Set the GPS XTRA parameters + eQMI_PDS_FORCE_XTRA_DL, // 045 Force a GPS XTRA database download + eQMI_PDS_GET_AGPS_CONFIG, // 046 Get the AGPS mode configuration + eQMI_PDS_SET_AGPS_CONFIG, // 047 Set the AGPS mode configuration + eQMI_PDS_GET_SVC_AUTOTRACK, // 048 Get the service auto-tracking state + eQMI_PDS_SET_SVC_AUTOTRACK, // 049 Set the service auto-tracking state + eQMI_PDS_GET_COM_AUTOTRACK, // 050 Get COM port auto-tracking config + eQMI_PDS_SET_COM_AUTOTRACK, // 051 Set COM port auto-tracking config + eQMI_PDS_RESET_DATA, // 052 Reset PDS service data + eQMI_PDS_SINGLE_FIX, // 053 Request single position fix + eQMI_PDS_GET_VERSION, // 054 Get PDS service version + eQMI_PDS_INJECT_XTRA, // 055 Inject XTRA data + eQMI_PDS_INJECT_POSITION, // 056 Inject position data + eQMI_PDS_INJECT_WIFI, // 057 Inject Wi-Fi obtained data + eQMI_PDS_GET_SBAS_CONFIG, // 058 Get SBAS config + eQMI_PDS_SET_SBAS_CONFIG, // 059 Set SBAS config + eQMI_PDS_SEND_NI_RESPONSE, // 060 Send network initiated response + eQMI_PDS_INJECT_ABS_TIME, // 061 Inject absolute time + eQMI_PDS_INJECT_EFS, // 062 Inject EFS data + eQMI_PDS_GET_DPO_CONFIG, // 063 Get DPO config + eQMI_PDS_SET_DPO_CONFIG, // 064 Set DPO config + eQMI_PDS_GET_ODP_CONFIG, // 065 Get ODP config + eQMI_PDS_SET_ODP_CONFIG, // 066 Set ODP config + eQMI_PDS_CANCEL_SINGLE_FIX, // 067 Cancel single position fix + eQMI_PDS_GET_GPS_STATE, // 068 Get GPS state + eQMI_PDS_SET_PPM_EVT_REPORT, // 069 Set PPM event report + eQMI_PDS_SET_SPI_REPORT, // 070 Set SPI streaming reporting + eQMI_PDS_SET_SPI_RPT_IND = 70, // 070 Set SPI streaming indication + eQMI_PDS_SET_SPI_STATUS, // 071 Set SPI status + eQMI_PDS_SET_PPM_REPORT, // 072 Set PPM reporting state + eQMI_PDS_SET_PPM_RPT_IND = 72, // 072 Set PPM reporting state indication + eQMI_PDS_FORCE_RECEIVER_OFF, // 073 Force receiver off + + eQMI_PDS_GET_METHODS = 80, // 080 Get GPS position methods state + eQMI_PDS_SET_METHODS, // 081 Set GPS position methods state + eQMI_PDS_INJECT_SENSOR, // 082 Inject sensor data + eQMI_PDS_INJECT_TIME_SYNC, // 083 Inject time sync data + eQMI_PDS_GET_SENSOR_CFG, // 084 Get sensor config + eQMI_PDS_SET_SENSOR_CFG, // 085 Set sensor config + eQMI_PDS_GET_NAV_CFG, // 086 Get navigation config + eQMI_PDS_SET_NAV_CFG, // 087 Set navigation config + + eQMI_PDS_SET_WLAN_BLANK = 90, // 090 Set WLAN blanking + eQMI_PDS_SET_LBS_SC_RPT, // 091 Set LBS security challenge reporting + eQMI_PDS_LBS_SC_IND = 91, // 091 LBS security challenge indication + eQMI_PDS_SET_LBS_SC, // 092 Set LBS security challenge + eQMI_PDS_GET_LBS_ENCRYPT_CFG, // 093 Get LBS security encryption config + eQMI_PDS_SET_LBS_UPDATE_RATE, // 094 Set LBS security update rate + eQMI_PDS_SET_CELLDB_CONTROL, // 095 Set cell database control + eQMI_PDS_READY_IND, // 096 Ready indication + eQMI_PDS_INJECT_MOTION_DATA, // 097 Inject motion data + eQMI_PDS_SET_GNSS_ERR_REPORT, // 098 Set GNSS error recovery report + eQMI_PDS_GNSS_ERR_IND = 98, // 098 GNSS error recovery report indication + eQMI_PDS_RESET_SERVICE, // 099 Reset location service + eQMI_PDS_INJECT_TEST_DATA, // 100 Inject test data + eQMI_PDS_SET_GNSS_RF_CFG, // 101 Set GNSS RF config + eQMI_PDS_INJECT_COG_DATA, // 102 Inject course over ground data + eQMI_PDS_INJECT_SUPL_CERT, // 103 Inject SUPL certificate + eQMI_PDS_DELETE_SUPL_CERT , // 104 Delete SUPL certificate + eQMI_PDS_GET_IS801_OVER_SUPL, // 105 Get IS-801 Over SUPL indicator + eQMI_PDS_SET_IS801_OVER_SUPL, // 106 Set IS-801 Over SUPL indicator + eQMI_PDS_GET_SUPL_HASH_ALG, // 107 Get SUPL hash algorithm + eQMI_PDS_SET_SUPL_HASH_ALG, // 108 Set SUPL hash algorithm + eQMI_PDS_GET_SUPL_MAX_VERSION, // 109 Get SUPL maximum version + eQMI_PDS_SET_SUPL_MAX_VERSION, // 110 Set SUPL maximum version + eQMI_PDS_GET_SUPL_SECURITY, // 111 Get SUPL security + eQMI_PDS_SET_SUPL_SECURITY, // 112 Set SUPL security + eQMI_PDS_GET_SUPL_TLS_VERSION, // 113 Get SUPL TLS version + eQMI_PDS_SET_SUPL_TLS_VERSION, // 114 Set SUPL TLS version + eQMI_PDS_GET_AGNSS_POS_MODES, // 115 Get AGNSS positioning modes + eQMI_PDS_SET_AGNSS_POS_MODES, // 116 Set AGNSS positioning modes + eQMI_PDS_GET_EMERGENCY_PROTO, // 117 Get emergency protocol config + eQMI_PDS_SET_EMERGENCY_PROTO, // 118 Set emergency protocol config + eQMI_PDS_GET_APN_PROFILES, // 119 Get APN profiles + eQMI_PDS_SET_APN_PROFILES, // 120 Set APN profiles + eQMI_PDS_GET_HOME_SUPL_ADDR, // 121 Get home SUPL address + eQMI_PDS_SET_HOME_SUPL_ADDR, // 122 Set home SUPL address + eQMI_PDS_INJECT_VEHICLE_DATA, // 123 Inject vehicle sensor data + eQMI_PDS_INJECT_PEDO_DATA, // 124 Inject pedometer data + + eQMI_PDS_ENUM_END +}; + +/*=========================================================================== +METHOD: + IsValid (Inline Method) + +DESCRIPTION: + eQMIMessagePDS validity check + +PARAMETERS: + msgID [ I ] - Enum value being verified + +RETURN VALUE: + bool +===========================================================================*/ +inline bool IsValid( eQMIMessagePDS msgID ) +{ + bool retVal = false; + if ( (msgID > eQMI_PDS_ENUM_BEGIN && msgID <= eQMI_PDS_EVENT_IND) + || (msgID >= eQMI_PDS_GET_STATE && msgID <= eQMI_PDS_FORCE_RECEIVER_OFF) + || (msgID >= eQMI_PDS_GET_METHODS && msgID <= eQMI_PDS_SET_NAV_CFG) + || (msgID >= eQMI_PDS_SET_WLAN_BLANK && msgID < eQMI_PDS_ENUM_END) ) + { + retVal = true; + } + + return retVal; +}; + +/*=========================================================================*/ +// eQMIMessageAUTH Enumeration +// QMI Authentication Service Type Message ID Enumeration +/*=========================================================================*/ +enum eQMIMessageAUTH +{ + eQMI_AUTH_ENUM_BEGIN = -1, + + eQMI_AUTH_START_EAP = 32, // 32 Start the EAP session + eQMI_AUTH_SEND_EAP, // 33 Send and receive EAP packets + eQMI_AUTH_EAP_RESULT_IND, // 34 EAP session result indication + eQMI_AUTH_GET_EAP_KEYS, // 35 Get the EAP session keys + eQMI_AUTH_END_EAP, // 36 End the EAP session + eQMI_AUTH_RUN_AKA, // 37 Runs the AKA algorithm + eQMI_AUTH_AKA_RESULT_IND, // 38 AKA algorithm result indication + + eQMI_AUTH_ENUM_END +}; + +/*=========================================================================== +METHOD: + IsValid (Inline Method) + +DESCRIPTION: + eQMIMessageAUTH validity check + +PARAMETERS: + msgID [ I ] - Enum value being verified + +RETURN VALUE: + bool +===========================================================================*/ +inline bool IsValid( eQMIMessageAUTH msgID ) +{ + bool retVal = false; + if (msgID >= eQMI_AUTH_START_EAP && msgID < eQMI_AUTH_ENUM_END) + { + retVal = true; + } + + return retVal; +}; + +/*=========================================================================*/ +// eQMIMessageAT Enumeration +// QMI AT Command Processor Service Type Message ID Enumeration +/*=========================================================================*/ +enum eQMIMessageAT +{ + eQMI_AT_ENUM_BEGIN = -1, + + eQMI_AT_RESET, // 00 Reset AT service state variables + + eQMI_AT_REG_COMMANDS = 32, // 32 Register AT commands to be forwarded + eQMI_AT_COMMAND_IND, // 33 AT command indication + eQMI_AT_SEND_RESPONSE, // 34 Send the response to an AT command + eQMI_AT_ABORT_IND, // 35 AT command abort indication + + eQMI_AT_ENUM_END +}; + +/*=========================================================================== +METHOD: + IsValid (Inline Method) + +DESCRIPTION: + eQMIMessageAT validity check + +PARAMETERS: + msgID [ I ] - Enum value being verified + +RETURN VALUE: + bool +===========================================================================*/ +inline bool IsValid( eQMIMessageAT msgID ) +{ + bool retVal = false; + if ( (msgID == eQMI_AT_RESET) + || (msgID >= eQMI_AT_REG_COMMANDS && msgID < eQMI_AT_ENUM_END) ) + { + retVal = true; + } + + return retVal; +}; + + +/*=========================================================================*/ +// eQMIMessageVoice Enumeration +// QMI Voice Service Type Message ID Enumeration +/*=========================================================================*/ +enum eQMIMessageVoice +{ + eQMI_VOICE_ENUM_BEGIN = -1, + + eQMI_VOICE_INDICATION_REG = 3, // 03 Set indication registration state + + eQMI_VOICE_GET_MESSAGES = 30, // 30 Get supported messages + eQMI_VOICE_GET_FIELDS, // 31 Get supported fields + eQMI_VOICE_CALL_ORIGINATE, // 32 Originate a voice call + eQMI_VOICE_CALL_END, // 33 End a voice call + eQMI_VOICE_CALL_ANSWER, // 34 Answer incoming voice call + + eQMI_VOICE_GET_CALL_INFO = 36, // 36 Get call information + eQMI_VOICE_OTASP_STATUS_IND, // 37 OTASP/OTAPA event indication + eQMI_VOICE_INFO_REC_IND, // 38 New info record indication + eQMI_VOICE_SEND_FLASH, // 39 Send a simple flash + eQMI_VOICE_BURST_DTMF, // 40 Send a burst DTMF + eQMI_VOICE_START_CONT_DTMF, // 41 Starts a continuous DTMF + eQMI_VOICE_STOP_CONT_DTMF, // 42 Stops a continuous DTMF + eQMI_VOICE_DTMF_IND, // 43 DTMF event indication + eQMI_VOICE_SET_PRIVACY_PREF, // 44 Set privacy preference + eQMI_VOICE_PRIVACY_IND, // 45 Privacy change indication + eQMI_VOICE_ALL_STATUS_IND, // 46 Voice all call status indication + eQMI_VOICE_GET_ALL_STATUS, // 47 Get voice all call status + + eQMI_VOICE_MANAGE_CALLS = 49, // 49 Manage calls + eQMI_VOICE_SUPS_NOTIFICATION_IND, // 50 Supplementary service notifications + eQMI_VOICE_SET_SUPS_SERVICE, // 51 Manage supplementary service + eQMI_VOICE_GET_CALL_WAITING, // 52 Query sup service call waiting + eQMI_VOICE_GET_CALL_BARRING, // 53 Query sup service call barring + eQMI_VOICE_GET_CLIP, // 54 Query sup service CLIP + eQMI_VOICE_GET_CLIR, // 55 Query sup service CLIR + eQMI_VOICE_GET_CALL_FWDING, // 56 Query sup service call forwarding + eQMI_VOICE_SET_CALL_BARRING_PWD, // 57 Set call barring password + eQMI_VOICE_ORIG_USSD, // 58 Initiate USSD operation then wait + eQMI_VOICE_ANSWER_USSD, // 59 Answer USSD request + eQMI_VOICE_CANCEL_USSD, // 60 Cancel USSD operation + eQMI_VOICE_USSD_RELEASE_IND, // 61 USSD release indication + eQMI_VOICE_USSD_IND, // 62 USSD request/notification indication + eQMI_VOICE_UUS_IND, // 63 UUS information indication + eQMI_VOICE_SET_CONFIG, // 64 Set config + eQMI_VOICE_GET_CONFIG, // 65 Get config + eQMI_VOICE_SUPS_IND, // 66 Sup service request indication + eQMI_VOICE_ASYNC_ORIG_USSD, // 67 Initiate USSD operation + eQMI_VOICE_ASYNC_USSD_IND = 67, // 67 USSD request/notification indication + eQMI_VOICE_BIND_SUBSCRIPTION, // 68 Bind subscription + eQMI_VOICE_ALS_SET_LINE_SW, // 69 ALS set line switching + eQMI_VOICE_ALS_SELECT_LINE, // 70 ALS select line + eQMI_VOICE_AOC_RESET_ACM, // 71 AOC reset ACM + eQMI_VOICE_AOC_SET_ACM_MAX, // 72 ACM set ACM maximum + eQMI_VOICE_AOC_GET_CM_INFO, // 73 AOC get call meter info + eQMI_VOICE_AOC_LOW_FUNDS_IND, // 74 AOC low funds indication + eQMI_VOICE_GET_COLP, // 75 Get COLP info + eQMI_VOICE_GET_COLR, // 76 Get COLR info + eQMI_VOICE_GET_CNAP, // 77 Get CNAP info + eQMI_VOICE_MANAGE_IP_CALLS, // 78 Manage VoIP calls + eQMI_VOICE_ALS_GET_LINE_SW, // 79 ALS get line switching + eQMI_VOICE_ALS_GET_LINE_SEL, // 80 ALS get selected line + eQMI_VOICE_MODIFIED_IND, // 81 Call modified indication + eQMI_VOICE_MODIFY_ACCEPT_IND, // 82 Call modify accept indication + eQMI_VOICE_SPEECH_CODEC_IND, // 83 Speech codec info indication + eQMI_VOICE_HANDOVER_IND, // 84 Handover indication + eQMI_VOICE_CONFERENCE_INFO_IND, // 85 Conference info indication + eQMI_VOICE_CONFERENCE_JOIN_IND, // 86 Conference join indication + eQMI_VOICE_CONFERENCE_UPDATE_IND, // 87 Conference update indication + eQMI_VOICE_EXT_BURST_TYPE_IND, // 88 Extended burst type indication + eQMI_VOICE_MT_PAGE_MISS_IND, // 89 MT page miss indication + eQMI_VOICE_CC_RESULT_INFO_IND, // 90 Call control result info indication + + eQMI_VOICE_ENUM_END +}; + +/*=========================================================================== +METHOD: + IsValid (Inline Method) + +DESCRIPTION: + eQMIMessageVoice validity check + +PARAMETERS: + msgID [ I ] - Enum value being verified + +RETURN VALUE: + bool +===========================================================================*/ +inline bool IsValid( eQMIMessageVoice msgID ) +{ + bool retVal = false; + if ( (msgID == eQMI_VOICE_INDICATION_REG) + || (msgID >= eQMI_VOICE_GET_MESSAGES && msgID <= eQMI_VOICE_CALL_ANSWER) + || (msgID >= eQMI_VOICE_GET_CALL_INFO && msgID <= eQMI_VOICE_GET_ALL_STATUS) + || (msgID >= eQMI_VOICE_MANAGE_CALLS && msgID < eQMI_VOICE_ENUM_END) ) + { + retVal = true; + } + + return retVal; +}; + +/*=========================================================================*/ +// eQMIMessageUIM Enumeration +// QMI UIM Service Type Message ID Enumeration +/*=========================================================================*/ +enum eQMIMessageUIM +{ + eQMI_UIM_ENUM_BEGIN = -1, + + eQMI_UIM_RESET, // 00 Reset + + eQMI_UIM_GET_MESSAGES = 30, // 30 Get supported messages + eQMI_UIM_GET_FIELDS, // 31 Get supported fields + eQMI_UIM_READ_TRANSPARENT, // 32 Read data + eQMI_UIM_READ_TRANSPARENT_IND = 32, // 32 Read data indication + eQMI_UIM_READ_RECORD, // 33 Read one or more records + eQMI_UIM_READ_RECORD_IND = 33, // 33 Read records indication + eQMI_UIM_WRITE_TRANSPARENT, // 34 Write data + eQMI_UIM_WRITE_TRANSPARENT_IND = 34, // 34 Write data indication + eQMI_UIM_WRITE_RECORD, // 35 Write a record + eQMI_UIM_WRITE_RECORD_IND = 35, // 35 Write a record indication + eQMI_UIM_GET_FILE_ATTRIBUTES, // 36 Get file attributes + eQMI_UIM_GET_FILE_ATTRIBUTES_IND = 36, // 36 Get file attributes indication + eQMI_UIM_SET_PIN_PROTECTION, // 37 Set PIN protection + eQMI_UIM_SET_PIN_PROTECTION_IND = 37, // 37 Set PIN protection indication + eQMI_UIM_VERITFY_PIN, // 38 Verify PIN + eQMI_UIM_VERITFY_PIN_IND = 38, // 38 Verify PIN indication + eQMI_UIM_UNBLOCK_PIN, // 39 Unblock PIN + eQMI_UIM_UNBLOCK_PIN_IND = 39, // 39 Unblock PIN indication + eQMI_UIM_CHANGE_PIN, // 40 Change PIN + eQMI_UIM_CHANGE_PIN_IND = 40, // 40 Change PIN indication + eQMI_UIM_DEPERSONALIZATION, // 41 Depersonalization + eQMI_UIM_REFRESH_REGISTER, // 42 Refresh register + eQMI_UIM_REFRESH_OK, // 43 Validate refresh + eQMI_UIM_REFRESH_COMPLETE, // 44 Complete refresh + eQMI_UIM_GET_LAST_REFRESH_EVENT, // 45 Get last refresh event + eQMI_UIM_EVENT_REGISTRATION, // 46 Register for indications + eQMI_UIM_GET_CARD_STATUS, // 47 Get card status + eQMI_UIM_POWER_DOWN, // 48 Power down + eQMI_UIM_POWER_UP, // 49 Power up + eQMI_UIM_CARD_STATUS_IND, // 50 Card status indication + eQMI_UIM_REFRESH_IND, // 51 Refresh indication + eQMI_UIM_AUTHENTICATE, // 52 Authenticate + eQMI_UIM_AUTHENTICATE_IND = 52, // 52 Authenticate indication + eQMI_UIM_CLOSE_SESSION, // 53 Close session + eQMI_UIM_GET_SERVICE_STATUS, // 54 Get service status + eQMI_UIM_SET_SERVICE_STATUS, // 55 Set service status + eQMI_UIM_CHANGE_PROVISIONING, // 56 Change provisioning + eQMI_UIM_GET_LABEL, // 57 Get label + eQMI_UIM_GET_CONFIG, // 58 Get configuration + eQMI_UIM_SEND_ADPU, // 59 Send ADPU + eQMI_UIM_SEND_ADPU_IND = 59, // 59 Send ADPU indication + eQMI_UIM_SAP_CONNECTION, // 60 SAP connection + eQMI_UIM_SAP_REQUEST, // 61 SAP request + eQMI_UIM_SAP_CONNECTION_IND, // 62 SAP connection indication + eQMI_UIM_LOGICAL_CHANNEL, // 63 Logical channel + eQMI_UIM_SUBSCRIPTION_OK, // 64 OK to publish subscription? + eQMI_UIM_GET_ATR, // 65 Get ATR + eQMI_UIM_SESSION_CLOSED_IND, // 67 Session closed indication + eQMI_UIM_REGISTER_REFRESH_ALL, // 68 Register for all refresh + eQMI_UIM_SET_FILE_STATUS, // 69 Set file status + + eQMI_UIM_ENUM_END +}; + +/*=========================================================================== +METHOD: + IsValid (Inline Method) + +DESCRIPTION: + eQMIMessageUIM validity check + +PARAMETERS: + msgID [ I ] - Enum value being verified + +RETURN VALUE: + bool +===========================================================================*/ +inline bool IsValid( eQMIMessageUIM msgID ) +{ + bool retVal = false; + if ( (msgID == eQMI_UIM_RESET) + || (msgID >= eQMI_UIM_GET_MESSAGES && msgID < eQMI_UIM_ENUM_END) ) + { + retVal = true; + } + + return retVal; +}; + +/*=========================================================================*/ +// eQMIMessagePBM Enumeration +// QMI PBM Service Type Message ID Enumeration +/*=========================================================================*/ +enum eQMIMessagePBM +{ + eQMI_PBM_ENUM_BEGIN = -1, + + eQMI_PBM_INDICATION_REG = 1, // 01 Set indication registration state + eQMI_PBM_GET_CAPABILITIES, // 02 Get phonebook capabilities by type + eQMI_PBM_GET_ALL_CAPABILITIES, // 03 Get all phonebook capabilities + eQMI_PBM_READ_RECORDS, // 04 Read phonebook records + eQMI_PBM_READ_RECORD_IND = 4, // 04 Read phonebook record indication + eQMI_PBM_WRITE_RECORD, // 05 Add/modify a phonebook record + eQMI_PBM_DELETE_RECORD, // 06 Delete a phonebook record + eQMI_PBM_DELETE_ALL_RECORDS, // 07 Delete all phonebook records + eQMI_PBM_SEARCH_RECORDS, // 08 Search phonebook records + eQMI_PBM_RECORD_UPDATE_IND, // 09 Phonebook record update indication + eQMI_PBM_REFRESH_IND, // 10 Phonebook refresh indication + eQMI_PBM_READY_IND, // 11 Phonebook ready indication + eQMI_PBM_EMERGENCY_LIST_IND, // 12 Phonebook emergency list indication + eQMI_PBM_ALL_READY_IND, // 13 All phonebooks ready indication + eQMI_PBM_GET_EMERGENCY_LIST, // 14 Get phonebook emergency list + eQMI_PBM_GET_ALL_GROUPS, // 15 Get all phonebook groups + eQMI_PBM_SET_GROUP_INFO, // 16 Set phonebook group info + eQMI_PBM_GET_STATE, // 17 Get phonebook state + eQMI_PBM_READ_ALL_HIDDEN_RECS, // 18 Read all hidden phonebook records + eQMI_PBM_HIDDEN_REC_STATUS_IND, // 19 Hidden record status indication + eQMI_PBM_GET_NEXT_EMPTY_REC_ID, // 20 Get next empty record ID + eQMI_PBM_GET_NEXT_REC_ID, // 21 Get next non-empty record ID + eQMI_PBM_GET_AAS_LIST, // 22 Get AAS list + eQMI_PBM_SET_AAS, // 23 Add/modify/delete AAS entry + eQMI_PBM_UPDATE_AAS_IND, // 24 AAS change indication + eQMI_PBM_UPDATE_GAS_IND, // 25 GAS change indication + eQMI_PBM_BIND_SUBSCRIPTION, // 26 Bind client to specific subscription + eQMI_PBM_GET_SUBSCRIPTION, // 27 Get subscription client is bound to + eQMI_PBM_SET_CAPS_READ_OP, // 28 ADN set capabilities read operation + eQMI_PBM_SET_CAPS_READ_IND = 28, // 28 ADN set caps read op indication + eQMI_PBM_EX_READ_RECORDS, // 29 Read phonebook records + eQMI_PBM_EX_READ_RECORD_IND = 29,// 29 Read phonebook record indication + eQMI_PBM_EX_WRITE_RECORD, // 30 Add/modify a phonebook record + eQMI_PBM_EX_SEARCH_RECORDS, // 31 Search phonebook records + eQMI_PBM_EX_READ_ALL_HIDDEN_RECS,// 32 Read all hidden phonebook records + eQMI_PBM_SIM_INIT_DONE_IND, // 33 SIM initialization done indication + eQMI_PBM_READ_UNDC_RECS, // 34 Read undecoded phonebook records + eQMI_PBM_READ_UNDC_RECS_IND = 34,// 34 Read undecoded phonebook record ind + + eQMI_PBM_ENUM_END +}; + +/*=========================================================================== +METHOD: + IsValid (Inline Method) + +DESCRIPTION: + eQMIMessagePBM validity check + +PARAMETERS: + msgID [ I ] - Enum value being verified + +RETURN VALUE: + bool +===========================================================================*/ +inline bool IsValid( eQMIMessagePBM msgID ) +{ + bool retVal = false; + if (msgID >= eQMI_PBM_INDICATION_REG && msgID < eQMI_PBM_ENUM_END) + { + retVal = true; + } + + return retVal; +}; + +/*=========================================================================*/ +// eQMIMessageLOC Enumeration +// QMI LOC Service Type Message ID Enumeration +/*=========================================================================*/ +enum eQMIMessageLOC +{ + eQMI_LOC_ENUM_BEGIN = -1, + + eQMI_LOC_GET_MESSAGES = 30, // 030 Get supported messages + eQMI_LOC_GET_FIELDS, // 031 Get supported fields + eQMI_LOC_CLIENT_REVISION, // 032 Send client revision to service + eQMI_LOC_REGISTER_EVENTS, // 033 Register for events/indications + eQMI_LOC_START, // 034 Start GPS session + eQMI_LOC_STOP, // 035 Start GPS session + eQMI_LOC_POSITION_REPORT_IND, // 036 Position report indication + eQMI_LOC_GNSS_SAT_INFO_IND, // 037 GNSS satellite info indication + eQMI_LOC_NMEA_IND, // 038 NMEA sentence indication + eQMI_LOC_NETWORK_REQ_IND, // 039 Network initiated request indication + eQMI_LOC_INJECT_TIME_REQ_IND, // 040 Inject time request indication + eQMI_LOC_INJECT_ORBITS_REQ_IND, // 041 Inject predicted orbits req ind + eQMI_LOC_INJECT_POS_REQ_IND, // 042 Inject position request indication + eQMI_LOC_ENGINE_STATE_IND, // 043 Engine state indication + eQMI_LOC_FIX_SESSION_STATE_IND, // 044 Fi session state indication + eQMI_LOC_WIFI_REQ_IND, // 045 Wi-Fi request indication + eQMI_LOC_SENSOR_DATA_IND, // 046 Sensor streaming ready status ind + eQMI_LOC_INJECT_TIME_SYNC_IND, // 047 Inject time sync data indication + eQMI_LOC_SPI_STREAM_REQ_IND, // 048 SPI streaming reports req indication + eQMI_LOC_SVR_CONNECTION_REQ_IND, // 049 Server connection req indication + eQMI_LOC_GET_REV_REQ, // 050 Get service revision + eQMI_LOC_GET_REV_REQ_IND = 50, // 050 Get service revision indication + eQMI_LOC_GET_FIX_CRIT, // 051 Get fix criteria + eQMI_LOC_GET_FIX_CRIT_IND = 51, // 051 Get fix criteria indication + eQMI_LOC_NI_USER_RSP, // 052 Network initiated user response + eQMI_LOC_NI_USER_RSP_IND = 52, // 052 Network initiated user response ind + eQMI_LOC_INJECT_ORBITS, // 053 Inject predicted orbits data + eQMI_LOC_INJECT_ORBITS_IND = 53, // 053 Inject predicted orbits indication + eQMI_LOC_GET_ORBIT_SRC, // 054 Get predicted orbits data source + eQMI_LOC_GET_ORBIT_SRC_IND = 54, // 054 Get predicted orbits data source ind + eQMI_LOC_GET_ORBIT_VLD, // 055 Get predicted orbits data validity + eQMI_LOC_GET_ORBIT_VLD_IND = 55, // 055 Get predicted orbits validity ind + eQMI_LOC_INJECT_UTC, // 056 Inject UTC time + eQMI_LOC_INJECT_UTC_IND = 56, // 056 Inject UTC time indication + eQMI_LOC_INJECT_POS, // 057 Inject position + eQMI_LOC_INJECT_POS_IND = 57, // 057 Inject position indication + eQMI_LOC_SET_ENG_LOCK, // 058 Set engine lock + eQMI_LOC_SET_ENG_LOCK_IND = 58, // 058 Set engine lock indication + eQMI_LOC_GET_ENG_LOCK, // 059 Get engine lock + eQMI_LOC_GET_ENG_LOCK_IND = 59, // 059 Get engine lock indication + eQMI_LOC_SET_SBAS_CFG, // 060 Set SBAS config + eQMI_LOC_SET_SBAS_CFG_IND = 60, // 060 Set SBAS config indication + eQMI_LOC_GET_SBAS_CFG, // 061 Get SBAS config + eQMI_LOC_GET_SBAS_CFG_IND = 61, // 061 Get SBAS config indication + eQMI_LOC_SET_NMEA_TYPS, // 062 Set NMEA sentence types + eQMI_LOC_SET_NMEA_TYPS_IND = 62, // 062 Set NMEA sentence types indication + eQMI_LOC_GET_NMEA_TYPS, // 063 Get NMEA sentence types + eQMI_LOC_GET_NMEA_TYPS_IND = 63, // 063 Get NMEA sentence types indication + eQMI_LOC_SET_LPM_CFG, // 064 Set low power mode config + eQMI_LOC_SET_LPM_CFG_IND = 64, // 064 Set low power mode config indication + eQMI_LOC_GET_LPM_CFG, // 065 Get low power mode config + eQMI_LOC_GET_LPM_CFG_IND = 65, // 065 Get low power mode config indication + eQMI_LOC_SET_SERVER, // 066 Set A-GPS server + eQMI_LOC_SET_SERVER_IND = 66, // 066 Set A-GPS server indication + eQMI_LOC_GET_SERVER, // 067 Set A-GPS server + eQMI_LOC_GET_SERVER_IND = 67, // 067 Set A-GPS server indication + eQMI_LOC_DEL_ASST_DATA, // 068 Delete assistance data + eQMI_LOC_DEL_ASST_DATA_IND = 68, // 068 Delete assistance data indication + eQMI_LOC_SET_XTRA_T, // 069 Set XTRA_T session control + eQMI_LOC_SET_XTRA_T_IND = 69, // 069 Set XTRA_T session control indication + eQMI_LOC_GET_XTRA_T, // 070 Get XTRA_T session control + eQMI_LOC_GET_XTRA_T_IND = 70, // 070 Get XTRA_T session control indication + eQMI_LOC_INJECT_WIFI, // 071 Inject Wi-Fi info + eQMI_LOC_INJECT_WIFI_IND = 71, // 071 Inject Wi-Fi info indication + eQMI_LOC_NOTIFY_WIFI, // 072 Notify server of Wi-Fi status + eQMI_LOC_NOTIFY_WIFI_IND = 72, // 072 Notify server of Wi-Fi status ind + eQMI_LOC_GET_REG_EVENTS, // 073 Get registered event status + eQMI_LOC_GET_REG_EVENTS_IND = 73,// 073 Get registered event status ind + eQMI_LOC_SET_OP_MODE, // 074 Set operation mode + eQMI_LOC_SET_OP_MODE_IND = 74, // 074 Set operation mode indication + eQMI_LOC_GET_OP_MODE, // 075 Get operation mode + eQMI_LOC_GET_OP_MODE_IND = 75, // 075 Get operation mode indication + eQMI_LOC_SET_SPI_STATUS, // 076 Set SPI status + eQMI_LOC_SET_SPI_STATUS_IND = 76,// 076 Set SPI status indication + eQMI_LOC_INJECT_SENSOR, // 077 Inject sensor data + eQMI_LOC_INJECT_SENSOR_IND = 77, // 077 Inject sensor data indication + eQMI_LOC_INJ_TIME_SYNC, // 078 Inject time sync data + eQMI_LOC_INJ_TIME_SYNC_IND = 78, // 078 Inject time sync data indication + eQMI_LOC_SET_CRADLE, // 079 Set cradle mount config + eQMI_LOC_SET_CRADLE_IND = 79, // 079 Set cradle mount config indication + eQMI_LOC_GET_CRADLE, // 080 Get cradle mount config + eQMI_LOC_GET_CRADLE_IND = 80, // 080 Get cradle mount config indication + eQMI_LOC_SET_EXT_POWER, // 081 Set external power config + eQMI_LOC_SET_EXT_POWER_IND = 81, // 081 Set external power config indication + eQMI_LOC_GET_EXT_POWER, // 082 Get external power config + eQMI_LOC_GET_EXT_POWER_IND = 82, // 082 Get external power config indication + eQMI_LOC_INFORM_CONN, // 083 Inform service of connection status + eQMI_LOC_INFORM_CONN_IND = 83, // 083 Inform connection status indication + eQMI_LOC_SET_PROTO_CFG, // 084 Set protocol config + eQMI_LOC_SET_PROTO_CFG_IND = 84, // 084 Set protocol config indication + eQMI_LOC_GET_PROTO_CFG, // 085 Get protocol config + eQMI_LOC_GET_PROTO_CFG_IND = 85, // 085 Get protocol config indication + eQMI_LOC_SET_SENSOR_CFG, // 086 Set sensor control config + eQMI_LOC_SET_SENSOR_CFG_IND = 86,// 086 Set sensor control config indication + eQMI_LOC_GET_SENSOR_CFG, // 087 Get sensor control config + eQMI_LOC_GET_SENSOR_CFG_IND = 87,// 087 Get sensor control config indication + eQMI_LOC_SET_SENSOR_PRP, // 088 Set sensor properties + eQMI_LOC_SET_SENSOR_PRP_IND = 88,// 088 Set sensor properties indication + eQMI_LOC_GET_SENSOR_PRP, // 089 Get sensor properties + eQMI_LOC_GET_SENSOR_PRP_IND = 89,// 089 Get sensor properties indication + eQMI_LOC_SET_SENSOR_PRF, // 090 Set sensor performance control + eQMI_LOC_SET_SENSOR_PRF_IND = 90,// 090 Set sensor performance control ind + eQMI_LOC_GET_SENSOR_PRF, // 091 Get sensor performance control + eQMI_LOC_GET_SENSOR_PRF_IND = 91,// 091 Get sensor performance control ind + eQMI_LOC_INJ_SUPL_CERT, // 092 Inject SUPL certificate + eQMI_LOC_INJ_SUPL_CERT_IND = 92, // 092 Inject SUPL certificate indication + eQMI_LOC_DEL_SUPL_CERT, // 093 Delete SUPL certificate + eQMI_LOC_DEL_SUPL_CERT_IND = 93, // 093 Delete SUPL certificate indication + eQMI_LOC_SET_ENGINE_CFG, // 094 Set position engine config + eQMI_LOC_SET_ENGINE_CFG_IND = 94,// 094 Set position engine config ind + eQMI_LOC_GET_ENGINE_CFG, // 095 Get position engine config + eQMI_LOC_GET_ENGINE_CFG_IND = 95,// 095 Get position engine config ind + eQMI_LOC_GEOFENCE_NOTIF_IND, // 096 Geofence notification indication + eQMI_LOC_GEOFENCE_ALERT_IND, // 097 Geofence alert indication + eQMI_LOC_GEOFENCE_BREACH_IND, // 098 Geofence breach indication + eQMI_LOC_ADD_GEOFENCE, // 099 Add circular geofence + eQMI_LOC_ADD_GEOFENCE_IND = 99, // 099 Add circular geofence indication + eQMI_LOC_DEL_GEOFENCE, // 100 Delete geofence + eQMI_LOC_DEL_GEOFENCE_IND = 100, // 100 Delete geofence indication + eQMI_LOC_QRY_GEOFENCE, // 101 Query geofence + eQMI_LOC_QRY_GEOFENCE_IND = 101, // 101 Query geofence indication + eQMI_LOC_EDIT_GEOFENCE, // 102 Edit geofence + eQMI_LOC_EDIT_GEOFENCE_IND = 102,// 102 Edit geofence indication + eQMI_LOC_GET_BEST_POS, // 103 Get best available position + eQMI_LOC_GET_BEST_POS_IND = 103, // 103 Get best available position ind + eQMI_LOC_INJ_MOTION, // 104 Inject motion data + eQMI_LOC_INJ_MOTION_IND = 104, // 104 Inject motion data indication + eQMI_LOC_GET_NI_GF_IDS, // 105 Get NI geofence ID list + eQMI_LOC_GET_NI_GF_IDS_IND = 105,// 105 Get NI geofence ID list indication + eQMI_LOC_INJ_GSM_CELL, // 106 Inject GSM cell info + eQMI_LOC_INJ_GSM_CELL_IND = 106, // 106 Inject GSM cell info indication + eQMI_LOC_INJ_NI_MSG, // 107 Inject network initiated message + eQMI_LOC_INJ_NI_MSG_IND = 107, // 107 Inject NI message indication + eQMI_LOC_WWAN_OOS, // 108 Notify WWAN is now OOS + eQMI_LOC_WWAN_OOS_IND = 108, // 108 Notify WWAN is now OOS indication + eQMI_PEDOMETER_CTRL_IND, // 109 Pedometer control indication + eQMI_MOTION_DATA_CTRL_IND, // 110 Motion data control indication + eQMI_LOC_INJ_PEDOMETER, // 111 Inject pedometer data + eQMI_LOC_INJ_PEDOMETER_IND = 111,// 111 Inject pedometer data indication + eQMI_LOC_INJ_WCDMA_CI, // 112 Inject WCDMA cell info + eQMI_LOC_INJ_WCDMA_CI_IND = 112, // 112 Inject WCDMA cell info indication + eQMI_LOC_INJ_TDSCDMA, // 113 Inject TD-SCDMA cell info + eQMI_LOC_INJ_TDSCDMA_IND = 113, // 113 Inject TD-SCDMA cell info indication + eQMI_LOC_INJ_SUBS_ID, // 114 Inject subscriber ID + eQMI_LOC_INJ_SUBS_ID_IND = 114, // 114 Inject subscriber ID indication + + eQMI_LOC_ENUM_END +}; + +/*=========================================================================== +METHOD: + IsValid (Inline Method) + +DESCRIPTION: + eQMIMessageLOC validity check + +PARAMETERS: + msgID [ I ] - Enum value being verified + +RETURN VALUE: + bool +===========================================================================*/ +inline bool IsValid( eQMIMessageLOC msgID ) +{ + bool retVal = false; + if (msgID >= eQMI_LOC_GET_MESSAGES && msgID < eQMI_LOC_ENUM_END) + { + retVal = true; + } + + return retVal; +}; + +/*=========================================================================*/ +// eQMIMessageSAR Enumeration +// QMI SAR Service Type Message ID Enumeration +/*=========================================================================*/ +enum eQMIMessageSAR +{ + eQMI_SAR_ENUM_BEGIN = -1, + + eQMI_SAR_SET_RF_SAR_STATE = 1, // 01 Set the RF SAR state + eQMI_SAR_GET_RF_SAR_STATE, // 02 Get the RF SAR state + + eQMI_SAR_ENUM_END +}; + +/*=========================================================================== +METHOD: + IsValid (Inline Method) + +DESCRIPTION: + eQMIMessageSAR validity check + +PARAMETERS: + msgID [ I ] - Enum value being verified + +RETURN VALUE: + bool +===========================================================================*/ +inline bool IsValid( eQMIMessageSAR msgID ) +{ + bool retVal = false; + if (msgID >= eQMI_SAR_SET_RF_SAR_STATE && msgID < eQMI_SAR_ENUM_END) + { + retVal = true; + } + + return retVal; +}; + +/*=========================================================================*/ +// eQMIMessageRMTFS Enumeration +// QMI Remote Filesystem Service Type Message ID Enumeration +/*=========================================================================*/ +enum eQMIMessageRMTFS +{ + eQMI_RMTFS_ENUM_BEGIN = -1, + + eQMI_RMTFS_OPEN = 1, // 01 Request an open + eQMI_RMTFS_CLOSE, // 02 Request a close + eQMI_RMTFS_IO_VECTOR, // 03 Request an I/O vector operation + eQMI_RMTFS_ALLOC_BUFFER, // 04 Allocate a buffer + eQMI_RMTFS_GET_DEV_ERROR, // 05 Return device error for last request + eQMI_RMTFS_FORCE_SYNC_IND, // 06 Force sync indication + + eQMI_RMTFS_ENUM_END +}; + +/*=========================================================================== +METHOD: + IsValid (Inline Method) + +DESCRIPTION: + eQMIMessageRMTFS validity check + +PARAMETERS: + msgID [ I ] - Enum value being verified + +RETURN VALUE: + bool +===========================================================================*/ +inline bool IsValid( eQMIMessageRMTFS msgID ) +{ + bool retVal = false; + if (msgID >= eQMI_RMTFS_OPEN && msgID < eQMI_RMTFS_ENUM_END) + { + retVal = true; + } + + return retVal; +}; + +/*=========================================================================*/ +// eQMIMessageWDA Enumeration +// QMI Qualcomm Wireless Data Addministrative Message ID Enumeration +/*=========================================================================*/ +enum eQMIMessageWDA +{ + eQMI_WDA_ENUM_BEGIN = -1, + + eQMI_WDA_GET_MESSAGES = 30, // 30 Get supported messages + eQMI_WDA_GET_FIELDS, // 31 Get supported fields + eQMI_WDA_SET_DATA_FORMAT, // 32 + eQMI_WDA_GET_DATA_FORMAT, // 33 + eQMI_WDA_ENABLE_PKT_FILTER, // 34 + eQMI_WDA_DISABLE_PKT_FILTER, // 35 + eQMI_WDA_GET_PKT_FILTER_STATE, // 36 + eQMI_WDA_ADD_PKT_FILTER_RULE, // 37 + eQMI_WDA_DELETE_PKT_FILTER_RULE, // 38 + eQMI_WDA_GET_PKT_FILTER_RULE_HANDLES, // 39 + eQMI_WDA_GET_PKT_FILTER_RULE, // 40 + eQMI_WDA_SET_LOOPBACK_STATE, // 41 + eQMI_WDA_GET_LOOPBACK_STATE, // 42 + + eQMI_WDA_ENUM_END +}; + +/*=========================================================================== +METHOD: + IsValid (Inline Method) + +DESCRIPTION: + eQMIMessageWDA validity check + +PARAMETERS: + msgID [ I ] - Enum value being verified + +RETURN VALUE: + bool +===========================================================================*/ +inline bool IsValid( eQMIMessageWDA msgID ) +{ + bool retVal = false; + if (msgID >= eQMI_WDA_GET_MESSAGES && msgID < eQMI_WDA_ENUM_END) + { + retVal = true; + } + + return retVal; +}; + +/*=========================================================================*/ +// eQMIMessageQCMAP Enumeration +// QMI Qualcomm Mobile Access Point Message ID Enumeration +/*=========================================================================*/ +enum eQMIMessageQCMAP +{ + eQMI_QCMAP_ENUM_BEGIN = -1, + + eQMI_QCMAP_ENABLE = 32, // 32 + eQMI_QCMAP_DISABLE, // 33 + eQMI_QCMAP_BRING_UP_WWAN, // 34 + eQMI_QCMAP_BRING_UP_WWAN_IND = 34, // 34 + eQMI_QCMAP_TEAR_DOWN_WWAN, // 35 + eQMI_QCMAP_TEAR_DOWN_WWAN_IND = 35, // 35 + eQMI_QCMAP_GET_WWAN_STATUS, // 36 + eQMI_QCMAP_GET_IPSEC_VPN_PASSTHROUGH, // 37 + eQMI_QCMAP_SET_IPSEC_VPN_PASSTHROUGH, // 38 + eQMI_QCMAP_GET_PPTP_VPN_PASSTHROUGH, // 39 + eQMI_QCMAP_SET_PPTP_VPN_PASSTHROUGH, // 40 + eQMI_QCMAP_GET_L2TP_VPN_PASSTHROUGH, // 41 + eQMI_QCMAP_SET_L2TP_VPN_PASSTHROUGH, // 42 + eQMI_QCMAP_GET_DYNAMIC_NAT_ENTRY_TO, // 43 + eQMI_QCMAP_SET_DYNAMIC_NAT_ENTRY_TO, // 44 + eQMI_QCMAP_ADD_SNAT_ENTRY, // 45 + eQMI_QCMAP_DELETE_SNAT_ENTRY, // 46 + eQMI_QCMAP_GET_SNAT_ENTRIES, // 47 + eQMI_QCMAP_SET_DMZ, // 48 + eQMI_QCMAP_DELETE_DMZ, // 49 + eQMI_QCMAP_GET_DMZ, // 50 + eQMI_QCMAP_GET_WWAN_CONFIG, // 51 + eQMI_QCMAP_ENABLE_FIREWALL_SETTING, // 52 + eQMI_QCMAP_GET_FIREWALL_SETTING, // 53 + eQMI_QCMAP_DISABLE_FIREWALL_SETTING, // 54 + eQMI_QCMAP_ADD_FIREWALL_CONFIG, // 55 + eQMI_QCMAP_GET_FIREWALL_CONFIG, // 56 + eQMI_QCMAP_DELETE_FIREWALL_CONFIG, // 57 + eQMI_QCMAP_WWAN_STATUS_IND_REG, // 58 + eQMI_QCMAP_STATION_MODE_ENABLE, // 59 + eQMI_QCMAP_STATION_MODE_DISABLE, // 60 + eQMI_QCMAP_GET_STATION_MODE, // 61 + eQMI_QCMAP_WWAN_STATUS_IND, // 62 + eQMI_QCMAP_ADD_EXT_FIREWALL_CONFIG, // 63 + eQMI_QCMAP_GET_EXT_FIREWALL_CONFIG, // 64 + eQMI_QCMAP_GET_FIREWALL_HANDLES, // 65 + eQMI_QCMAP_CHANGE_NAT_TYPE, // 66 + eQMI_QCMAP_GET_NAT_TYPE, // 67 + + eQMI_QCMAP_ENUM_END +}; + +/*=========================================================================== +METHOD: + IsValid (Inline Method) + +DESCRIPTION: + eQMIMessageQCMAP validity check + +PARAMETERS: + msgID [ I ] - Enum value being verified + +RETURN VALUE: + bool +===========================================================================*/ +inline bool IsValid( eQMIMessageQCMAP msgID ) +{ + bool retVal = false; + if (msgID >= eQMI_QCMAP_ENABLE && msgID < eQMI_QCMAP_ENUM_END) + { + retVal = true; + } + + return retVal; +}; + +/*=========================================================================*/ +// eQMIMessageCOEX Enumeration +// QMI COEX Service Type Message ID Enumeration +/*=========================================================================*/ +enum eQMIMessageCOEX +{ + eQMI_COEX_ENUM_BEGIN = -1, + + eQMI_COEX_RESET, // 00 Reset the PDC service + + eQMI_COEX_REG_INDICATIONS = 32, // 32 Register for indications + eQMI_COEX_WWAN_STATE_IND, // 33 WWAN state indication + eQMI_COEX_GET_WWAN_STATE, // 34 Get WWAN state + eQMI_COEX_SET_WLAN_STATE, // 35 Set WLAN state + eQMI_COEX_GET_WLAN_SCAN_STATE, // 36 Get WLAN scan state + eQMI_COEX_GET_WLAN_CONN_STATE, // 37 Get WLAN connection state + eQMI_COEX_SET_POLICY, // 38 Set policy + eQMI_COEX_GET_POLICY, // 39 Get policy + + eQMI_COEX_ENUM_END +}; + +/*=========================================================================== +METHOD: + IsValid (Inline Method) + +DESCRIPTION: + eQMIMessageCOEX validity check + +PARAMETERS: + msgID [ I ] - Enum value being verified + +RETURN VALUE: + bool +===========================================================================*/ +inline bool IsValid( eQMIMessageCOEX msgID ) +{ + bool retVal = false; + if ( (msgID == eQMI_COEX_RESET) + || (msgID >= eQMI_COEX_REG_INDICATIONS && msgID < eQMI_COEX_ENUM_END) ) + { + retVal = true; + } + + return retVal; +}; + +/*=========================================================================*/ +// eQMIMessagePDC Enumeration +// QMI PDC Service Type Message ID Enumeration +/*=========================================================================*/ +enum eQMIMessagePDC +{ + eQMI_PDC_ENUM_BEGIN = -1, + + eQMI_PDC_RESET, // 00 Reset the PDC service + + eQMI_PDC_REG_INDICATIONS = 32, // 32 Register for indications + eQMI_PDC_CFG_CHANGE_IND, // 33 Config change indication + eQMI_PDC_GET_CFG, // 34 Get selected config + eQMI_PDC_GET_CFG_IND = 34, // 34 Get selected config indication + eQMI_PDC_SET_CFG, // 35 Set selected config + eQMI_PDC_SET_CFG_IND = 35, // 35 Set selected config indication + eQMI_PDC_LIST_CFGS, // 36 List configs + eQMI_PDC_LIST_CFGS_IND = 36, // 36 List configs indication + eQMI_PDC_DEL_CFG, // 37 Delete config + eQMI_PDC_DEL_CFG_IND = 37, // 37 Delete config indication + eQMI_PDC_LOAD_CFG, // 38 Load config + eQMI_PDC_LOAD_CFG_IND = 38, // 38 Load config indication + eQMI_PDC_ACTIVATE_CFG, // 39 Activate config + eQMI_PDC_ACTIVATE_CFG_IND = 39, // 39 Activate config indication + eQMI_PDC_GET_CFG_INFO, // 40 Get config info + eQMI_PDC_GET_CFG_INFO_IND = 40, // 40 Get config info indication + eQMI_PDC_GET_CFG_LIMITS, // 41 Get config limits + eQMI_PDC_GET_CFG_LIMITS_IND = 41, // 41 Get config limits indication + eQMI_PDC_GET_DEF_CFG_INFO, // 42 Get default config info + eQMI_PDC_GET_DEF_CFG_INFO_IND = 42, // 42 Get default config info indication + eQMI_PDC_DEACTIVATE_CFG, // 43 Deactivate active config + eQMI_PDC_DEACTIVATE_CFG_IND = 43, // 43 Deactivate active config ind + + eQMI_PDC_ENUM_END +}; + +/*=========================================================================== +METHOD: + IsValid (Inline Method) + +DESCRIPTION: + eQMIMessagePDC validity check + +PARAMETERS: + msgID [ I ] - Enum value being verified + +RETURN VALUE: + bool +===========================================================================*/ +inline bool IsValid( eQMIMessagePDC msgID ) +{ + bool retVal = false; + if ( (msgID == eQMI_PDC_RESET) + || (msgID >= eQMI_PDC_REG_INDICATIONS && msgID < eQMI_PDC_ENUM_END) ) + { + retVal = true; + } + + return retVal; +}; + +/*=========================================================================*/ +// eQMIMessageSTX Enumeration +// QMI STX Service Type Message ID Enumeration +/*=========================================================================*/ +enum eQMIMessageSTX +{ + eQMI_STX_ENUM_BEGIN = -1, + + eQMI_STX_TECH_TX_STATUS = 32, // 32 Technology TX status + eQMI_STX_UPDATE_TX_POWER_LIMIT, // 33 Update TX power limit + eQMI_STX_TX_STATE_UPDATE_IND, // 34 TX state update indication + eQMI_STX_TX_STATE_CLEAR_IND, // 34 TX state clear indication + eQMI_STX_SET_TECH_POWER_LUT, // 36 Set technology power LUT + eQMI_STX_TX_POWER_LIMIT_IND, // 37 TX power limit state + + eQMI_STX_ENUM_END +}; + +/*=========================================================================== +METHOD: + IsValid (Inline Method) + +DESCRIPTION: + eQMIMessageSTX validity check + +PARAMETERS: + msgID [ I ] - Enum value being verified + +RETURN VALUE: + bool +===========================================================================*/ +inline bool IsValid( eQMIMessageSTX msgID ) +{ + bool retVal = false; + if (msgID >= eQMI_STX_TECH_TX_STATUS && msgID < eQMI_STX_ENUM_END) + { + retVal = true; + } + + return retVal; +}; + +/*=========================================================================*/ +// eQMIMessageRFRPE Enumeration +// QMI RFRPE Service Type Message ID Enumeration +/*=========================================================================*/ +enum eQMIMessageRFRPE +{ + eQMI_RFRPE_ENUM_BEGIN = -1, + + eQMI_RFRPE_SET_RFM_SCENARIO = 32, // 32 Set RFM scenario + eQMI_RFRPE_GET_RFM_SCENARIO, // 33 Get RFM scenario + eQMI_RFRPE_GET_TABLE_REVISION, // 34 Get provisioned table revision + + eQMI_RFRPE_ENUM_END +}; + +/*=========================================================================== +METHOD: + IsValid (Inline Method) + +DESCRIPTION: + eQMIMessageRFRPE validity check + +PARAMETERS: + msgID [ I ] - Enum value being verified + +RETURN VALUE: + bool +===========================================================================*/ +inline bool IsValid( eQMIMessageRFRPE msgID ) +{ + bool retVal = false; + if (msgID >= eQMI_RFRPE_SET_RFM_SCENARIO && msgID < eQMI_RFRPE_ENUM_END) + { + retVal = true; + } + + return retVal; +}; + +/*=========================================================================*/ +// eQMIMessageCAT Enumeration +// QMI CAT Service Type Message ID Enumeration +/*=========================================================================*/ +enum eQMIMessageCAT +{ + eQMI_CAT_ENUM_BEGIN = -1, + + eQMI_CAT_RESET, // 00 Reset CAT service state variables + eQMI_CAT_SET_EVENT, // 01 Set new message report conditions + eQMI_CAT_EVENT_IND = 1, // 01 New message report indication + + eQMI_CAT_GET_MESSAGES = 30, // 30 Get supported messages + eQMI_CAT_GET_FIELDS, // 31 Get supported fields + eQMI_CAT_GET_STATE, // 32 Get service state information + eQMI_CAT_SEND_TERMINAL, // 33 Send a terminal response + eQMI_CAT_SEND_ENVELOPE, // 34 Send an envelope command + eQMI_CAT_GET_EVENT, // 35 Get last message report + eQMI_CAT_SEND_DECODED_TERMINAL, // 36 Send a decoded terminal response + eQMI_CAT_SEND_DECODED_ENVELOPE, // 37 Send a decoded envelope command + eQMI_CAT_EVENT_CONFIRMATION, // 38 Event confirmation + eQMI_CAT_SCWS_OPEN_CHANNEL, // 39 Open a channel to a SCWS + eQMI_CAT_SCWS_OPEN_IND = 39, // 39 SCWS open channel indication + eQMI_CAT_SCWS_CLOSE_CHANNEL, // 40 Close a channel to a SCWS + eQMI_CAT_SCWS_CLOSE_IND = 40, // 40 SCWS close channel indication + eQMI_CAT_SCWS_SEND_DATA, // 41 Send data to a SCWS + eQMI_CAT_SCWS_SEND_IND = 41, // 41 SCWS send data indication + eQMI_CAT_SCWS_DATA_AVAILABLE, // 42 Indicate that data is available + eQMI_CAT_SCWS_CHANNEL_STATUS, // 43 Provide channel status + eQMI_CAT_GET_TERMINAL_PROFILE, // 44 Get current modem terminal profile + eQMI_CAT_SET_CONFIG, // 45 Set configuration + eQMI_CAT_GET_CONFIG, // 46 Get configuration + + eQMI_CAT_ENUM_END +}; + +/*=========================================================================== +METHOD: + IsValid (Inline Method) + +DESCRIPTION: + eQMIMessageCAT validity check + +PARAMETERS: + msgID [ I ] - Enum value being verified + +RETURN VALUE: + bool +===========================================================================*/ +inline bool IsValid( eQMIMessageCAT msgID ) +{ + bool retVal = false; + if ( (msgID > eQMI_CAT_ENUM_BEGIN && msgID <= eQMI_CAT_EVENT_IND) + || (msgID >= eQMI_CAT_GET_MESSAGES && msgID < eQMI_CAT_ENUM_END) ) + { + retVal = true; + } + + return retVal; +}; + +/*=========================================================================*/ +// eQMIMessageRMS Enumeration +// QMI RMS Service Type Message ID Enumeration +/*=========================================================================*/ +enum eQMIMessageRMS +{ + eQMI_RMS_ENUM_BEGIN = -1, + + eQMI_RMS_RESET, // 00 Reset RMS service state variables + + eQMI_RMS_GET_SMS_WAKE = 32, // 32 Get SMS wake settings + eQMI_RMS_SET_SMS_WAKE, // 33 Set SMS wake settings + + eQMI_RMS_ENUM_END +}; + +/*=========================================================================== +METHOD: + IsValid (Inline Method) + +DESCRIPTION: + eQMIMessageRMS validity check + +PARAMETERS: + msgID [ I ] - Enum value being verified + +RETURN VALUE: + bool +===========================================================================*/ +inline bool IsValid( eQMIMessageRMS msgID ) +{ + bool retVal = false; + if ( (msgID == eQMI_RMS_RESET) + || (msgID >= eQMI_RMS_GET_SMS_WAKE && msgID < eQMI_RMS_ENUM_END) ) + { + retVal = true; + } + + return retVal; +}; + +/*=========================================================================*/ +// eQMIMessageOMA Enumeration +// QMI OMA-DM Service Type Message ID Enumeration +/*=========================================================================*/ +enum eQMIMessageOMA +{ + eQMI_OMA_ENUM_BEGIN = -1, + + eQMI_OMA_RESET, // 00 Reset OMA service state variables + eQMI_OMA_SET_EVENT, // 01 Set OMA report conditions + eQMI_OMA_EVENT_IND = 1, // 01 OMA report indication + + eQMI_OMA_START_SESSION = 32, // 32 Start client inititated session + eQMI_OMA_CANCEL_SESSION, // 33 Cancel session + eQMI_OMA_GET_SESSION_INFO, // 34 Get session information + eQMI_OMA_SEND_SELECTION, // 35 Send selection for net inititated msg + eQMI_OMA_GET_FEATURES, // 36 Get feature settings + eQMI_OMA_SET_FEATURES, // 37 Set feature settings + + eQMI_OMA_ENUM_END +}; + +/*=========================================================================== +METHOD: + IsValid (Inline Method) + +DESCRIPTION: + eQMIMessageOMA validity check + +PARAMETERS: + msgID [ I ] - Enum value being verified + +RETURN VALUE: + bool +===========================================================================*/ +inline bool IsValid( eQMIMessageOMA msgID ) +{ + bool retVal = false; + if ( (msgID > eQMI_OMA_ENUM_BEGIN && msgID <= eQMI_OMA_EVENT_IND) + || (msgID >= eQMI_OMA_START_SESSION && msgID < eQMI_OMA_ENUM_END) ) + { + retVal = true; + } + + return retVal; +}; + +/*=========================================================================*/ +// eQMIResultCode Enumeration +// QMI Result Code Enumeration +/*=========================================================================*/ +enum eQMIResultCode +{ + eQMI_RC_ENUM_BEGIN = -1, + + eQMI_RC_SUCCESS, // 00 Success + eQMI_RC_ERROR, // 01 Error + + eQMI_RC_ENUM_END +}; + +/*=========================================================================== +METHOD: + IsValid (Inline Method) + +DESCRIPTION: + eQMIResultCode validity check + +PARAMETERS: + rc [ I ] - Enum value being verified + +RETURN VALUE: + bool +===========================================================================*/ +inline bool IsValid( eQMIResultCode rc ) +{ + bool retVal = false; + if (rc > eQMI_RC_ENUM_BEGIN && rc < eQMI_RC_ENUM_END) + { + retVal = true; + } + + return retVal; +}; + +/*=========================================================================*/ +// eQMIErrorCode Enumeration +// QMI Error Code Enumeration +/*=========================================================================*/ +enum eQMIErrorCode +{ + eQMI_ERR_ENUM_BEGIN = -1, + + eQMI_ERR_NONE, // 00 + eQMI_ERR_MALFORMED_MSG, // 01 + eQMI_ERR_NO_MEMORY, // 02 + eQMI_ERR_INTERNAL, // 03 + eQMI_ERR_ABORTED, // 04 + eQMI_ERR_CLIENT_IDS_EXHAUSTED, // 05 + eQMI_ERR_UNABORTABLE_TRANSACTION, // 06 + eQMI_ERR_INVALID_CLIENT_ID, // 07 + eQMI_ERR_NO_THRESHOLDS, // 08 + eQMI_ERR_INVALID_HANDLE, // 09 + eQMI_ERR_INVALID_PROFILE, // 10 + eQMI_ERR_INVALID_PIN_ID, // 11 + eQMI_ERR_INCORRECT_PIN, // 12 + eQMI_ERR_NO_NETWORK_FOUND, // 13 + eQMI_ERR_CALL_FAILED, // 14 + eQMI_ERR_OUT_OF_CALL, // 15 + eQMI_ERR_NOT_PROVISIONED, // 16 + eQMI_ERR_MISSING_ARG, // 17 + eQMI_ERR_18, // 18 + eQMI_ERR_ARG_TOO_LONG, // 19 + eQMI_ERR_20, // 20 + eQMI_ERR_21, // 21 + eQMI_ERR_INVALID_TX_ID, // 22 + eQMI_ERR_DEVICE_IN_USE, // 23 + eQMI_ERR_OP_NETWORK_UNSUPPORTED, // 24 + eQMI_ERR_OP_DEVICE_UNSUPPORTED, // 25 + eQMI_ERR_NO_EFFECT, // 26 + eQMI_ERR_NO_FREE_PROFILE, // 27 + eQMI_ERR_INVALID_PDP_TYPE, // 28 + eQMI_ERR_INVALID_TECH_PREF, // 29 + eQMI_ERR_INVALID_PROFILE_TYPE, // 30 + eQMI_ERR_INVALID_SERVICE_TYPE, // 31 + eQMI_ERR_INVALID_REGISTER_ACTION, // 32 + eQMI_ERR_INVALID_PS_ATTACH_ACTION, // 33 + eQMI_ERR_AUTHENTICATION_FAILED, // 34 + eQMI_ERR_PIN_BLOCKED, // 35 + eQMI_ERR_PIN_ALWAYS_BLOCKED, // 36 + eQMI_ERR_UIM_UNINITIALIZED, // 37 + eQMI_ERR_MAX_QOS_REQUESTS_IN_USE, // 38 + eQMI_ERR_INCORRECT_FLOW_FILTER, // 39 + eQMI_ERR_NETWORK_QOS_UNAWARE, // 40 + eQMI_ERR_INVALID_QOS_ID, // 41 + eQMI_ERR_REQUESTED_NUM_UNSUPPORTED, // 42 + eQMI_ERR_INTERFACE_NOT_FOUND, // 43 + eQMI_ERR_FLOW_SUSPENDED, // 44 + eQMI_ERR_INVALID_DATA_FORMAT, // 45 + eQMI_ERR_GENERAL, // 46 + eQMI_ERR_UNKNOWN, // 47 + eQMI_ERR_INVALID_ARG, // 48 + eQMI_ERR_INVALID_INDEX, // 49 + eQMI_ERR_NO_ENTRY, // 50 + eQMI_ERR_DEVICE_STORAGE_FULL, // 51 + eQMI_ERR_DEVICE_NOT_READY, // 52 + eQMI_ERR_NETWORK_NOT_READY, // 53 + eQMI_ERR_WMS_CAUSE_CODE, // 54 + eQMI_ERR_WMS_MESSAGE_NOT_SENT, // 55 + eQMI_ERR_WMS_MESSAGE_DELIVERY_FAILURE, // 56 + eQMI_ERR_WMS_INVALID_MESSAGE_ID, // 57 + eQMI_ERR_WMS_ENCODING, // 58 + eQMI_ERR_AUTHENTICATION_LOCK, // 59 + eQMI_ERR_INVALID_TRANSITION, // 60 + eQMI_ERR_61, // 61 + eQMI_ERR_62, // 62 + eQMI_ERR_63, // 63 + eQMI_ERR_64, // 64 + eQMI_ERR_SESSION_INACTIVE, // 65 + eQMI_ERR_SESSION_INVALID, // 66 + eQMI_ERR_SESSION_OWNERSHIP, // 67 + eQMI_ERR_INSUFFICIENT_RESOURCES, // 68 + eQMI_ERR_DISABLED, // 69 + eQMI_ERR_INVALID_OPERATION, // 70 + eQMI_ERR_INVALID_QMI_CMD, // 71 + eQMI_ERR_WMS_TPDU_TYPE, // 72 + eQMI_ERR_WMS_SMSC_ADDR, // 73 + eQMI_ERR_INFO_UNAVAILABLE, // 74 + eQMI_ERR_SEGMENT_TOO_LONG, // 75 + eQMI_ERR_SEGMENT_ORDER, // 76 + eQMI_ERR_BUNDLING_NOT_SUPPORTED, // 77 + eQMI_ERR_78, // 78 + eQMI_ERR_POLICY_MISMATCH, // 79 + eQMI_ERR_SIM_FILE_NOT_FOUND, // 80 + eQMI_ERR_EXTENDED_EXTERNAL, // 81 + eQMI_ERR_ACCESS_DENIED, // 82 + eQMI_ERR_HARDWARE_RESTRICTED, // 83 + eQMI_ERR_ACK_NOT_SENT, // 84 + + eQMI_ERR_INCOMPATIBLE_STATE = 90, // 90 + eQMI_ERR_FDN_RESTRICT, // 91 + eQMI_ERR_SUPS_FAILURE_CAUSE, // 92 + eQMI_ERR_NO_RADIO, // 93 + eQMI_ERR_NOT_SUPPORTED, // 94 + + eQMI_ERR_CARD_CALL_CONTROL_FAILED = 96, // 96 + eQMI_ERR_NETWORK_ABORTED, // 97 + + eQMI_ERR_CAT_EVT_REG_FAILED, // 61441 + eQMI_ERR_CAT_INVALID_TR, // 61442 + eQMI_ERR_CAT_INVALID_ENV_CMD, // 61443 + eQMI_ERR_CAT_ENV_CMD_BUSY, // 61444 + eQMI_ERR_CAT_ENV_CMD_FAIL, // 61445 + + eQMI_ERR_ENUM_END +}; + +/*=========================================================================== +METHOD: + IsValid (Inline Method) + +DESCRIPTION: + eQMIErrorCode validity check + +PARAMETERS: + ec [ I ] - Enum value being verified + +RETURN VALUE: + bool +===========================================================================*/ +inline bool IsValid( eQMIErrorCode ec ) +{ + bool retVal = false; + if ( (ec > eQMI_ERR_ENUM_BEGIN && ec <= eQMI_ERR_ACK_NOT_SENT) + || (ec >= eQMI_ERR_INCOMPATIBLE_STATE && ec <= eQMI_ERR_NOT_SUPPORTED) + || (ec == eQMI_ERR_CARD_CALL_CONTROL_FAILED) + || (ec == eQMI_ERR_NETWORK_ABORTED) + || (ec >= eQMI_ERR_CAT_EVT_REG_FAILED && ec < eQMI_ERR_ENUM_END) ) + { + retVal = true; + } + + return retVal; +}; + +/*=========================================================================*/ +// eQMICallEndReason Enumeration +// QMI Call End Reason Enumeration +/*=========================================================================*/ +enum eQMICallEndReason +{ + eQMI_CALL_END_REASON_BEGIN = -1, + + // General + eQMI_CALL_END_REASON_UNSPECIFIED = 1, // 1 + eQMI_CALL_END_REASON_CLIENT_END, // 2 + eQMI_CALL_END_REASON_NO_SRV, // 3 + eQMI_CALL_END_REASON_FADE, // 4 + eQMI_CALL_END_REASON_REL_NORMAL, // 5 + eQMI_CALL_END_REASON_ACC_IN_PROG, // 6 + eQMI_CALL_END_REASON_ACC_FAIL, // 7 + eQMI_CALL_END_REASON_REDIR_OR_HANDOFF, // 8 + eQMI_CALL_END_REASON_CLOSE_IN_PROGRESS, // 9 + eQMI_CALL_END_REASON_AUTH_FAILED, // 10 + eQMI_CALL_END_REASON_INTERNAL, // 11 + + // CDMA + eQMI_CALL_END_REASON_CDMA_LOCK = 500, // 500 + eQMI_CALL_END_REASON_INTERCEPT, // 501 + eQMI_CALL_END_REASON_REORDER, // 502 + eQMI_CALL_END_REASON_REL_SO_REJ, // 503 + eQMI_CALL_END_REASON_INCOM_CALL, // 504 + eQMI_CALL_END_REASON_ALERT_STOP, // 505 + eQMI_CALL_END_REASON_ACTIVATION, // 506 + eQMI_CALL_END_REASON_MAX_ACCESS_PROBE, // 507 + eQMI_CALL_END_REASON_CCS_NOT_SUPPORTED_BY_BS, // 508 + eQMI_CALL_END_REASON_NO_RESPONSE_FROM_BS, // 509 + eQMI_CALL_END_REASON_REJECTED_BY_BS, // 510 + eQMI_CALL_END_REASON_INCOMPATIBLE, // 511 + eQMI_CALL_END_REASON_ALREADY_IN_TC, // 512 + eQMI_CALL_END_REASON_USER_CALL_ORIG_DURING_GPS, // 513 + eQMI_CALL_END_REASON_USER_CALL_ORIG_DURING_SMS, // 514 + eQMI_CALL_END_REASON_NO_CDMA_SRV, // 515 + + // GSM/WCDMA + eQMI_CALL_END_REASON_CONF_FAILED = 1000, // 1000 + eQMI_CALL_END_REASON_INCOM_REJ, // 1001 + eQMI_CALL_END_REASON_NO_GW_SRV, // 1002 + eQMI_CALL_END_REASON_NETWORK_END, // 1003 + eQMI_CALL_END_REASON_LLC_SNDCP_FAILURE, // 1004 + eQMI_CALL_END_REASON_INSUFFICIENT_RESOURCES, // 1005 + eQMI_CALL_END_REASON_OPTION_TEMP_OOO, // 1006 + eQMI_CALL_END_REASON_NSAPI_ALREADY_USED, // 1007 + eQMI_CALL_END_REASON_REGULAR_DEACTIVATION, // 1008 + eQMI_CALL_END_REASON_NETWORK_FAILURE, // 1009 + eQMI_CALL_END_REASON_UMTS_REATTACH_REQ, // 1010 + eQMI_CALL_END_REASON_UMTS_PROTOCOL_ERROR, // 1011 + eQMI_CALL_END_REASON_OPERATOR_BARRING, // 1012 + eQMI_CALL_END_REASON_UNKNOWN_APN, // 1013 + eQMI_CALL_END_REASON_UNKNOWN_PDP, // 1014 + eQMI_CALL_END_REASON_GGSN_REJECT, // 1015 + eQMI_CALL_END_REASON_ACTIVATION_REJECT, // 1016 + eQMI_CALL_END_REASON_OPTION_NOT_SUPPORTED, // 1017 + eQMI_CALL_END_REASON_OPTION_UNSUBSCRIBED, // 1018 + eQMI_CALL_END_REASON_QOS_NOT_ACCEPTED, // 1019 + eQMI_CALL_END_REASON_TFT_SEMANTIC_ERROR, // 1020 + eQMI_CALL_END_REASON_TFT_SYNTAX_ERROR, // 1021 + eQMI_CALL_END_REASON_UNKNOWN_PDP_CONTEXT, // 1022 + eQMI_CALL_END_REASON_FILTER_SEMANTIC_ERROR, // 1023 + eQMI_CALL_END_REASON_FILTER_SYNTAX_ERROR, // 1024 + eQMI_CALL_END_REASON_PDP_WITHOUT_ACTIVE_TFT, // 1025 + eQMI_CALL_END_REASON_INVALID_TRANSACTION_ID, // 1026 + eQMI_CALL_END_REASON_MESSAGE_SEMANTIC_ERROR, // 1027 + eQMI_CALL_END_REASON_INVALID_MANDATORY_INFO, // 1028 + eQMI_CALL_END_REASON_TYPE_UNSUPPORTED, // 1029 + eQMI_CALL_END_REASON_MSG_TYPE_WRONG_FOR_STATE, // 1030 + eQMI_CALL_END_REASON_UNKNOWN_INFO_ELEMENT, // 1031 + eQMI_CALL_END_REASON_CONDITIONAL_IE_ERROR, // 1032 + eQMI_CALL_END_REASON_MSG_WRONG_FOR_PROTOCOL, // 1033 + eQMI_CALL_END_REASON_APN_TYPE_CONFLICT, // 1034 + eQMI_CALL_END_REASON_NO_GPRS_CONTEXT, // 1035 + eQMI_CALL_END_REASON_FEATURE_NOT_SUPPORTED, // 1036 + + // CDMA 1xEV-DO (HDR) + eQMI_CALL_END_REASON_CD_GEN_OR_BUSY = 1500, // 1500 + eQMI_CALL_END_REASON_CD_BILL_OR_AUTH, // 1501 + eQMI_CALL_END_REASON_CHG_HDR, // 1502 + eQMI_CALL_END_REASON_EXIT_HDR, // 1503 + eQMI_CALL_END_REASON_HDR_NO_SESSION , // 1504 + eQMI_CALL_END_REASON_HDR_ORIG_DURING_GPS_FIX, // 1505 + eQMI_CALL_END_REASON_HDR_CS_TIMEOUT , // 1506 + eQMI_CALL_END_REASON_HDR_RELEASED_BY_CM, // 1507 + + eQMI_CALL_END_REASON_END +}; + +/*=========================================================================== +METHOD: + IsValid (Inline Method) + +DESCRIPTION: + eQMICallEndReason validity check + +PARAMETERS: + err [ I ] - Enum value being verified + +RETURN VALUE: + bool +===========================================================================*/ +inline bool IsValid( eQMICallEndReason err ) +{ + if ( (err >= eQMI_CALL_END_REASON_UNSPECIFIED) + && (err <= eQMI_CALL_END_REASON_INTERNAL) ) + { + return true; + } + + if ( (err >= eQMI_CALL_END_REASON_CDMA_LOCK) + && (err <= eQMI_CALL_END_REASON_NO_CDMA_SRV) ) + { + return true; + } + + if ( (err >= eQMI_CALL_END_REASON_CONF_FAILED) + && (err <= eQMI_CALL_END_REASON_FEATURE_NOT_SUPPORTED) ) + { + return true; + } + + if ( (err >= eQMI_CALL_END_REASON_CD_GEN_OR_BUSY) + && (err <= eQMI_CALL_END_REASON_HDR_RELEASED_BY_CM) ) + { + return true; + } + + return false; +}; + +/*=========================================================================*/ +// eIPAddressType Enumeration +// IPv4 or IPv6 +/*=========================================================================*/ +enum eIPAddressType +{ + eIP_ADDRESS_ENUM_BEGIN = -1, + + eIP_ADDRESS_V4 = 4, // IPv4 + eIP_ADDRESS_V6 = 6, // IPv6 + + eIP_ADDRESS_ENUM_END +}; + +/*=========================================================================== +METHOD: + IsValid (Inline Method) + +DESCRIPTION: + eIPAddressType validity check + +PARAMETERS: + type [ I ] - Enum value being verified + +RETURN VALUE: + bool +===========================================================================*/ +inline bool IsValid( eIPAddressType type ) +{ + if (type == eIP_ADDRESS_V4 || type == eIP_ADDRESS_V6) + { + return true; + } + + return false; +} + +/*=========================================================================*/ +// eSMSMessageMode Enumeration +// CDMA or GW +/*=========================================================================*/ +enum eSMSMessageMode +{ + eSMS_MESSAGE_MODE_BEGIN = -1, + + eSMS_MESSAGE_MODE_CDMA, // 0 CDMA + eSMS_MESSAGE_MODE_GW, // 1 GW + + eSMS_MESSAGE_MODE_END +}; + +/*=========================================================================== +METHOD: + IsValid (Inline Method) + +DESCRIPTION: + eSMSMessageMode validity check + +PARAMETERS: + mode [ I ] - Enum value being verified + +RETURN VALUE: + bool +===========================================================================*/ +inline bool IsValid( eSMSMessageMode mode ) +{ + if (mode == eSMS_MESSAGE_MODE_CDMA || mode == eSMS_MESSAGE_MODE_GW) + { + return true; + } + + return false; +} + +/*=========================================================================*/ +// eNetworkMode Enumeration +// UMTS or CDMA +/*=========================================================================*/ +enum eNetworkMode +{ + eNETWORK_MODE_BEGIN = -1, + + eNETWORK_MODE_UMTS, // 0 UMTS + eNETWORK_MODE_CDMA, // 1 CDMA + + eNETWORK_MODE_UNSET = 0xff, // 0xff unknown/unset + + eNETWORK_MODE_END +}; + +/*=========================================================================== +METHOD: + IsValid (Inline Method) + +DESCRIPTION: + eNetworkMode validity check + +PARAMETERS: + mode [ I ] - Enum value being verified + +RETURN VALUE: + bool +===========================================================================*/ +inline bool IsValid( eNetworkMode mode ) +{ + if (mode == eNETWORK_MODE_UMTS + || mode == eNETWORK_MODE_CDMA + || mode == eNETWORK_MODE_UNSET) + { + return true; + } + + return false; +} \ No newline at end of file diff --git a/gobi-api/GobiAPI_2013-07-31-1347/Core/QMIProtocolServer.cpp b/gobi-api/GobiAPI_2013-07-31-1347/Core/QMIProtocolServer.cpp new file mode 100644 index 0000000..9f6f12f --- /dev/null +++ b/gobi-api/GobiAPI_2013-07-31-1347/Core/QMIProtocolServer.cpp @@ -0,0 +1,434 @@ +/*=========================================================================== +FILE: + QMIProtocolServer.cpp + +DESCRIPTION: + QMI protocol server + +PUBLIC CLASSES AND METHODS: + cQMIProtocolServer + +Copyright (c) 2013, The Linux Foundation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +===========================================================================*/ + +//--------------------------------------------------------------------------- +// Include Files +//--------------------------------------------------------------------------- +#include "StdAfx.h" +#include "QMIProtocolServer.h" +#include "QMIBuffers.h" +#include "Comm.h" +#include "Socket.h" + +/*=========================================================================*/ +// cQMIProtocolServer Methods +/*=========================================================================*/ + +/*=========================================================================== +METHOD: + cQMIProtocolServer (Public Method) + +DESCRIPTION: + Constructor + +PARAMETERS: + serviceType [ I ] - QMI service type requested + bufferSzRx [ I ] - Size of data buffer for incoming data + logSz [ I ] - Size of log (number of buffers) + +SEQUENCING: + None (constructs sequencing objects) + +RETURN VALUE: + None +===========================================================================*/ +cQMIProtocolServer::cQMIProtocolServer( + eQMIService serviceType, + ULONG bufferSzRx, + ULONG logSz ) + : cProtocolServer( MapQMIServiceToProtocol( serviceType, false ), + MapQMIServiceToProtocol( serviceType, true ), + bufferSzRx, + logSz ), + mLastTID( (WORD)INVALID_QMI_TRANSACTION_ID ), + mService( serviceType ) +{ + // Nothing to do +} + +/*=========================================================================== +METHOD: + ~cQMIProtocolServer (Public Method) + +DESCRIPTION: + Destructor + +SEQUENCING: + None (constructs sequencing objects) + +RETURN VALUE: + None +===========================================================================*/ +cQMIProtocolServer::~cQMIProtocolServer() +{ + // Nothing to do +} + +/*=========================================================================== +METHOD: + Connect (Public Method) + +DESCRIPTION: + Connect to the configured QMI service using the given QMI + control file + +PARAMETERS: + pControlFile [ I ] - QMI control file + +SEQUENCING: + This method is sequenced according to the command event, i.e. any + other thread that needs to send a command to the protocol server + thread will block until this method completes + +RETURN VALUE: + bool +===========================================================================*/ +bool cQMIProtocolServer::Connect( LPCSTR pControlFile ) +{ + // Assume failure + bool bRC = false; + if (IsValid( mService ) == false || mService == eQMI_SVC_CONTROL) + { + return bRC; + } + + std::string name = pControlFile; + if (name.find( "qcqmi" ) != std::string::npos) + { + mpConnection = new cComm(); + mConnectionType = eConnectionType_RmNet; + } + else + { + // SMD + std::string defaultPath = "/var/"; + + // Such as "SOCKET:/dev/socket/,0" + if (name.find( "SOCKET:" ) == 0) + { + // Remove qualifier + name = name.substr( 7 ); + } + // Such as "QMUXD:0" + else if (name.find( "QMUXD:" ) == 0) + { + name = name.substr( 6 ); + name = defaultPath + "," + name; + } + // Just channel ID, IE: "0" + else + { + name = defaultPath + "," + name; + } + + mpConnection = new cSocket(); + mConnectionType = eConnectionType_SMD; + } + + // Pass service file to base class for actual connection + bRC = cProtocolServer::Connect( name.c_str() ); + + if (bRC == false) + { + TRACE( "QMI connect %d failed\n", mService ); + } + + return bRC; +} + +/*=========================================================================== +METHOD: + ValidateRequest (Internal Method) + +DESCRIPTION: + Validate a request that is about to be scheduled + +SEQUENCING: + This method is sequenced according to the command event, i.e. any + other thread that needs to send a command to the protocol server + thread will block until this method completes + +RETURN VALUE: + bool +===========================================================================*/ +bool cQMIProtocolServer::ValidateRequest( const sProtocolRequest & req ) +{ + if (cProtocolServer::ValidateRequest( req ) == false) + { + return false; + } + + sQMIServiceBuffer qmiReq( req.GetSharedBuffer() ); + return qmiReq.IsValid(); +} + +/*=========================================================================== +METHOD: + InitializeComm (Internal Method) + +DESCRIPTION: + Perform protocol specific communications port initialization + +SEQUENCING: + None (must be called from protocol server thread) + +RETURN VALUE: + bool +===========================================================================*/ +bool cQMIProtocolServer::InitializeComm() +{ + bool bResult = false; + if (mpConnection == 0) + { + return bResult; + } + + if (mConnectionType == eConnectionType_RmNet) + { + // Setup the QMI Service type + int result = mpConnection->SendCtl( QMI_GET_SERVICE_FILE_IOCTL, + (void*)(unsigned long)mService ); + bResult = (result == 0); + } + else if (mConnectionType == eConnectionType_SMD) + { + // Setup the QMI Service type + int result = mpConnection->SendCtl( eQMUXD_MSG_ALLOC_QMI_CLIENT_ID, + (void*)&mService ); + bResult = (result == 0); + } + + return bResult; +} + +/*=========================================================================== +METHOD: + CleanupComm (Internal Method) + +DESCRIPTION: + Perform protocol specific communications port cleanup + +SEQUENCING: + None (must be called from protocol server thread) + +RETURN VALUE: + bool +===========================================================================*/ +bool cQMIProtocolServer::CleanupComm() +{ + bool bResult = true; + + if (mpConnection != 0 + && mConnectionType == eConnectionType_SMD) + { + // Delete the QMI client + + // NOTE: This is generally unnecessary, when you close the channel + // it is deleted + int result = mpConnection->SendCtl( eQMUXD_MSG_RELEASE_QMI_CLIENT_ID, + 0 ); + bResult = (result == 0); + } + + // Nothing to actually do here + return true; +} + +/*=========================================================================== +METHOD: + DecodeRxData (Internal Method) + +DESCRIPTION: + Decode incoming data into QMI indications/responses + +PARAMETERS: + bytesReceived [ I ] - Number of bytes to decoded + rspIdx [ O ] - Log index of last valid response (not used) + bAbortTx [ O ] - Response aborts current transmission? (not used) + +SEQUENCING: + None (must be called from protocol server thread) + +RETURN VALUE: + bool - Was a response received? +===========================================================================*/ +bool cQMIProtocolServer::DecodeRxData( + ULONG bytesReceived, + ULONG & rspIdx, + bool & bAbortTx ) +{ + // Assume failure + bool bRC = false; + + rspIdx = INVALID_LOG_INDEX; + bAbortTx = false; + + // Something to decode from? + if (bytesReceived == 0) + { + return bRC; + } + + // Set protocol type (we have to be dealing with a valid QMI service) + eProtocolType pt = MapQMIServiceToProtocol( mService, false ); + if (pt == ePROTOCOL_ENUM_BEGIN) + { + return bRC; + } + + sSharedBuffer * pTmp = 0; + pTmp = new sSharedBuffer( mpRxBuffer, bytesReceived, pt ); + if (pTmp != 0) + { + sQMIServiceBuffer tmpBuf( pTmp ); + if (tmpBuf.IsValid() == true) + { + rspIdx = mLog.AddBuffer( tmpBuf ); + if (IsResponse( tmpBuf ) == true) + { + bRC = true; + } + else + { + rspIdx = INVALID_LOG_INDEX; + } + } + } + + return bRC; +} + +/*=========================================================================== +METHOD: + EncodeTxData (Internal Method) + +DESCRIPTION: + Encode data for transmission + +PARAMETERS: + pBuffer [ I ] - Data to be encoded + bEncoded [ O ] - Do we even encode data? + +SEQUENCING: + None (must be called from protocol server thread) + +RETURN VALUE: + sSharedBuffer * - Encoded data (0 upon error when encoding is indicated) +===========================================================================*/ +sSharedBuffer * cQMIProtocolServer::EncodeTxData( + sSharedBuffer * pBuffer, + bool & bEncoded ) +{ + WORD tid = ++mLastTID; + if (tid == (WORD)INVALID_QMI_TRANSACTION_ID) + { + tid++; + } + + sQMIServiceBuffer tmpBuf( pBuffer ); + tmpBuf.SetTransactionID( tid ); + + // No actual encoding required as we alter the original request + bEncoded = false; + return 0; +}; + +/*=========================================================================== +METHOD: + IsResponse (Internal Method) + +DESCRIPTION: + Is the passed in data a response to the current request? + +PARAMETERS: + rsp [ I ] - Candidate response + +SEQUENCING: + None (must be called from protocol server thread) + +RETURN VALUE: + bool +===========================================================================*/ +bool cQMIProtocolServer::IsResponse( const sProtocolBuffer & rsp ) +{ + // Assume not + bool bRC = false; + if ( (mpActiveRequest == 0) + || (mpActiveRequest->mRequest.IsValid() == false) + || (mpActiveRequest->mbWaitingForResponse == false) + || (rsp.IsValid() == false) ) + { + return bRC; + } + + sQMIServiceBuffer qmiReq( mpActiveRequest->mRequest.GetSharedBuffer() ); + sQMIServiceBuffer qmiRsp( rsp.GetSharedBuffer() ); + + if (qmiReq.IsValid() == false || qmiRsp.IsValid() == false) + { + return bRC; + } + + if (qmiRsp.IsResponse() == false) + { + return bRC; + } + + WORD reqID = qmiReq.GetTransactionID(); + WORD rspID = qmiRsp.GetTransactionID(); + + if ( (reqID == (WORD)INVALID_QMI_TRANSACTION_ID) + || (rspID == (WORD)INVALID_QMI_TRANSACTION_ID) + || (reqID != rspID) ) + { + return bRC; + } + + // Sadly there are documentated cases of firmware returning responses + // with a matching transaction ID but a mismatching message ID. There + // is no reason for this to be considered valid behavior as of yet + ULONG reqMsgID = qmiReq.GetMessageID(); + ULONG rspMsgID = qmiRsp.GetMessageID(); + + if (reqMsgID != rspMsgID) + { + return bRC; + } + + bRC = true; + return bRC; +} diff --git a/gobi-api/GobiAPI_2013-07-31-1347/Core/QMIProtocolServer.h b/gobi-api/GobiAPI_2013-07-31-1347/Core/QMIProtocolServer.h new file mode 100644 index 0000000..f3e648b --- /dev/null +++ b/gobi-api/GobiAPI_2013-07-31-1347/Core/QMIProtocolServer.h @@ -0,0 +1,115 @@ +/*=========================================================================== +FILE: + QMIProtocolServer.h + +DESCRIPTION: + QMI protocol server + +PUBLIC CLASSES AND METHODS: + cQMIProtocolServer + +Copyright (c) 2013, The Linux Foundation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +===========================================================================*/ + +//--------------------------------------------------------------------------- +// Pragmas +//--------------------------------------------------------------------------- +#pragma once + +//--------------------------------------------------------------------------- +// Include Files +//--------------------------------------------------------------------------- +#include "ProtocolServer.h" +#include "QMIEnum.h" + +//--------------------------------------------------------------------------- +// Definitions +//--------------------------------------------------------------------------- + +/*=========================================================================*/ +// Class cQMIProtocolServer +/*=========================================================================*/ +class cQMIProtocolServer : public cProtocolServer +{ + public: + // Constructor + cQMIProtocolServer( + eQMIService serviceType, + ULONG bufferSzRx, + ULONG logSz ); + + // Destructor + virtual ~cQMIProtocolServer(); + + // Connect to the given QMI service using the configured QMI + // control file + bool Connect( LPCSTR pControlFile ); + + // (Inline) Return the QMI service type + eQMIService GetServiceType() + { + return mService; + }; + + protected: + // Validate a request that is about to be scheduled + virtual bool ValidateRequest( const sProtocolRequest & req ); + + // Perform protocol specific communications port initialization + virtual bool InitializeComm(); + + // Perform protocol specific communications port cleanup + virtual bool CleanupComm(); + + // Decode incoming data into packets returning the last response + virtual bool DecodeRxData( + ULONG bytesReceived, + ULONG & rspIdx, + bool & bAbortTx ); + + // Encode data for transmission + virtual sSharedBuffer * EncodeTxData( + sSharedBuffer * pBuffer, + bool & bEncoded ); + + // Is the passed in data a response to the current request? + virtual bool IsResponse( const sProtocolBuffer & rsp ); + + // (Inline) Is the passed in data a response that aborts the + // current request? + virtual bool IsTxAbortResponse( const sProtocolBuffer & /* rsp */ ) + { + // QMI doesn't necessarily require this + return false; + }; + + /* Current transaction ID */ + SHORT mLastTID; + + /* Type of QMI service we are serving */ + eQMIService mService; +}; diff --git a/gobi-api/GobiAPI_2013-07-31-1347/Core/SharedBuffer.cpp b/gobi-api/GobiAPI_2013-07-31-1347/Core/SharedBuffer.cpp new file mode 100644 index 0000000..8ac466b --- /dev/null +++ b/gobi-api/GobiAPI_2013-07-31-1347/Core/SharedBuffer.cpp @@ -0,0 +1,374 @@ +/*=========================================================================== +FILE: + SharedBuffer.cpp + +DESCRIPTION: + Shareable protocol structures and affliated methods + +PUBLIC CLASSES AND METHODS: + + sSharedBuffer + Simple struct to represent a reference counted shareable (no copy) + buffer, as the basis for all buffer related classes + +Copyright (c) 2013, The Linux Foundation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +===========================================================================*/ + +//--------------------------------------------------------------------------- +// Include Files +//--------------------------------------------------------------------------- +#include "StdAfx.h" +#include "SharedBuffer.h" + +//--------------------------------------------------------------------------- +// Definitions +//--------------------------------------------------------------------------- + +// Synchronization object +struct sSharedBufferSync +{ + public: + // Constructor + sSharedBufferSync() + : mbInitialized( false ) + { + int nRet = pthread_mutex_init( &mSyncSection, NULL ); + if (nRet != 0) + { + TRACE( "SharedBuffer: Unable to init sync mutex." + " Error %d: %s\n", + nRet, + strerror( nRet ) ); + return; + } + + mbInitialized = true; + }; + + // Destructor + ~sSharedBufferSync() + { + mbInitialized = false; + int nRet = pthread_mutex_destroy( &mSyncSection ); + if (nRet != 0) + { + TRACE( "SharedBuffer: Unable to destroy sync mutex." + " Error %d: %s\n", + nRet, + strerror( nRet ) ); + } + + }; + + // Lock sync object + void Lock() + { + if (mbInitialized == true) + { + int nRet = pthread_mutex_lock( &mSyncSection ); + if (nRet != 0) + { + TRACE( "SharedBuffer: Unable to lock sync mutex." + " Error %d: %s\n", + nRet, + strerror( nRet ) ); + return; + } + + } + }; + + // Unlock sync object + void Unlock() + { + if (mbInitialized == true) + { + int nRet = pthread_mutex_unlock( &mSyncSection ); + if (nRet != 0) + { + TRACE( "SharedBuffer: Unable to unlock sync mutex." + " Error %d: %s\n", + nRet, + strerror( nRet ) ); + return; + } + + } + }; + + protected: + /* DIAG buffer critical section */ + pthread_mutex_t mSyncSection; + + /* Has this object been initialized? */ + bool mbInitialized; +}; + +// Global (across all shared buffers) reference count guard +sSharedBufferSync gRefCount; + +/*=========================================================================*/ +// sSharedBuffer Methods +/*=========================================================================*/ + +/*=========================================================================== +METHOD: + sSharedBuffer (Public Method) + +DESCRIPTION: + Constructor (copy passed in buffer) + +PARAMETERS: + pDataToCopy [ I ] - The data buffer to copy (should be non-zero) + dataLen [ I ] - The length of the above buffer (should be > 1) + dataType [ I ] - Type of data (not used internal to class) + +RETURN VALUE: + None +===========================================================================*/ +sSharedBuffer::sSharedBuffer( + const BYTE * pDataToCopy, + ULONG dataLen, + ULONG dataType ) + : mpData( 0 ), + mSize( 0 ), + mType( dataType ), + mRefCount( 0 ) +{ + // Length not too small/not too big? + if (IsValidSize( dataLen ) == true) + { + // Yes, data actually exists? + if (pDataToCopy != 0) + { + // Yes, try to allocate memory + mpData = new BYTE[dataLen]; + if (mpData != 0) + { + // Now copy into our allocation + memcpy( (PVOID)mpData, + (LPCVOID)pDataToCopy, + (SIZE_T)dataLen ); + + // Now set the size, we do this last so that our double + // deletion logic is only applied if we had an allocation + // in the first place + mSize = dataLen; + } + } + } +} + +/*=========================================================================== +METHOD: + sSharedBuffer (Public Method) + +DESCRIPTION: + Constructor (assume ownership of passed in buffer) + +PARAMETERS: + dataLen [ I ] - The length of the above buffer (should be > 1) + pDataToOwn [ I ] - The data buffer to assume ownership of (should + be non-zero) + + dataType [ I ] - Type of data (not used internal to class) + + NOTE: The order is intentionally reversed from the previous constructor + to avoid any cases of mistaken identity (copy versus assume ownership) + +RETURN VALUE: + None +===========================================================================*/ +sSharedBuffer::sSharedBuffer( + ULONG dataLen, + PBYTE pDataToOwn, + ULONG dataType ) + : mpData( 0 ), + mSize( 0 ), + mType( dataType ), + mRefCount( 0 ) +{ + // Data actually exists? + if (pDataToOwn != 0) + { + // Yes, length not too small/not too big? + if (IsValidSize( dataLen ) == true) + { + // Yes, assume ownership of the passed in buffer + mpData = pDataToOwn; + mSize = dataLen; + } + else + { + // This data buffer is not acceptable to us, but we have assumed + // ownership of the memory which we will now free + delete [] pDataToOwn; + } + } +} + +/*=========================================================================== +METHOD: + ~sSharedBuffer (Public Method) + +DESCRIPTION: + Destructor + +RETURN VALUE: + None +===========================================================================*/ +sSharedBuffer::~sSharedBuffer() +{ + ASSERT( mRefCount == 0 ); + + // Buffer data to free? + if (mpData != 0) + { + // Yes, zero first byte for caution and then delete it + mpData[0] = 0; + delete [] mpData; + + // Even more caution, zero out pointer + mpData = 0; + } + else if (mSize != 0) + { + ASSERT( (PVOID)("Double deletion detected in ~sSharedBuffer") == 0 ); + } +} + +/*=========================================================================== +METHOD: + operator == (Public Method) + +DESCRIPTION: + Equality operator + +RETURN VALUE: + bool +===========================================================================*/ +bool sSharedBuffer::operator == ( const sSharedBuffer & refBuf ) const +{ + // Assume they are not equal + bool bEq = false; + + // The buffers must be the same + if (mpData == refBuf.mpData) + { + if (mSize == refBuf.mSize) + { + if (mRefCount == refBuf.mRefCount) + { + if (mType == refBuf.mType) + { + // The shared buffers are the same + bEq = true; + } + } + else + { + // Very odd - the buffers are the same, but not the ref count?!? + ASSERT( 0 ); + } + } + else + { + // Very odd - the buffers are the same, but not the size?!? + ASSERT( 0 ); + } + } + + return bEq; +} + +/*=========================================================================== +METHOD: + operator != (Public Method) + +DESCRIPTION: + Inequality operator + +RETURN VALUE: + bool +===========================================================================*/ +bool sSharedBuffer::operator != ( const sSharedBuffer & refBuf ) const +{ + if (*this == refBuf) + { + return false; + } + + return true; +} + +/*=========================================================================== +METHOD: + AddRef (Internal Method) + +DESCRIPTION: + Increment reference count + +RETURN VALUE: + None +===========================================================================*/ +void sSharedBuffer::AddRef() +{ + gRefCount.Lock(); + mRefCount++; + gRefCount.Unlock(); +} + +/*=========================================================================== +METHOD: + Release (Internal Method) + +DESCRIPTION: + Release reference, delete if reference count zero + +RETURN VALUE: + None +===========================================================================*/ +void sSharedBuffer::Release() +{ + gRefCount.Lock(); + + ASSERT( mRefCount != 0 ); + + // Decrement reference count + if (mRefCount > 0) + { + mRefCount--; + } + + // ... and delete if reference count now 0 + if (mRefCount == 0) + { + delete this; + } + + gRefCount.Unlock(); +} diff --git a/gobi-api/GobiAPI_2013-07-31-1347/Core/SharedBuffer.h b/gobi-api/GobiAPI_2013-07-31-1347/Core/SharedBuffer.h new file mode 100644 index 0000000..b4acbc3 --- /dev/null +++ b/gobi-api/GobiAPI_2013-07-31-1347/Core/SharedBuffer.h @@ -0,0 +1,165 @@ +/*=========================================================================== +FILE: + SharedBuffer.h + +DESCRIPTION: + Shareable buffer structures and affliated methods + +PUBLIC CLASSES AND METHODS: + sSharedBuffer + Simple struct to represent a reference counted shareable (no copy) + buffer, as the basis for all buffer related classes + +Copyright (c) 2013, The Linux Foundation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +===========================================================================*/ + +//--------------------------------------------------------------------------- +// Pragmas +//--------------------------------------------------------------------------- +#pragma once + +//--------------------------------------------------------------------------- +// Forward Declarations +//--------------------------------------------------------------------------- +struct sProtocolBuffer; + +//--------------------------------------------------------------------------- +// Definitions +//--------------------------------------------------------------------------- + +// Maximum size of a shared buffer +const ULONG MAX_SHARED_BUFFER_SIZE = 1024 * 16 + 256; + +//--------------------------------------------------------------------------- +// Pragmas (pack structs) +//--------------------------------------------------------------------------- +#pragma pack( push, 1 ) + +/*=========================================================================*/ +// Struct sSharedBuffer +// +// Simple struct to represent a reference counted shareable (no copy) +// buffer, as the basis for all buffer related classes +// +// NOTE: Do *NOT* create instances of this structure on the stack, it +// must be dynamically allocated in order to function correctly +/*=========================================================================*/ +struct sSharedBuffer +{ + public: + // Constructor (copy passed in buffer) + sSharedBuffer( + const BYTE * pDataToCopy, + ULONG dataLen, + ULONG dataType ); + + // Constructor (assume ownership of passed in buffer) + sSharedBuffer( + ULONG dataLen, + PBYTE pDataToOwn, + ULONG dataType ); + + // Destructor + virtual ~sSharedBuffer(); + + // Equality operator + bool operator == ( const sSharedBuffer & ) const; + + // Inequality operator + bool operator != ( const sSharedBuffer & ) const; + + // (Inline) Get buffer + const BYTE * GetBuffer() const + { + return mpData; + }; + + // (Inline) Get buffer size + ULONG GetSize() const + { + return mSize; + }; + + // (Inline) Get buffer type + ULONG GetType() const + { + return mType; + }; + + // (Inline) Is this buffer valid? + bool IsValid() const + { + return (mpData != 0 && IsValidSize( mSize )); + }; + + // (Inline) Get reference count + ULONG GetRefCount() const + { + return mRefCount; + }; + + // (Static Inline) Is the passed in size within the allowable range + // a shared buffer? + static bool IsValidSize( ULONG sz ) + { + return (sz > 0 && sz <= MAX_SHARED_BUFFER_SIZE); + }; + + protected: + // Add reference + void AddRef(); + + // Release reference, delete if reference count zero + void Release(); + + /* Data */ + PBYTE mpData; + + /* Size of data */ + ULONG mSize; + + /* Type of data */ + ULONG mType; + + /* Reference count */ + ULONG mRefCount; + + private: + // Leave copy constructor and assignment operator unimplemented + // to prevent unintentional and unauthorized copying of the object + // (which would lead to bad reference counting) + sSharedBuffer( const sSharedBuffer & ); + sSharedBuffer & operator = ( const sSharedBuffer & ); + + friend struct sProtocolBuffer; +}; + +//--------------------------------------------------------------------------- +// Pragmas +//--------------------------------------------------------------------------- +#pragma pack( pop ) + diff --git a/gobi-api/GobiAPI_2013-07-31-1347/Core/Socket.cpp b/gobi-api/GobiAPI_2013-07-31-1347/Core/Socket.cpp new file mode 100644 index 0000000..84331d2 --- /dev/null +++ b/gobi-api/GobiAPI_2013-07-31-1347/Core/Socket.cpp @@ -0,0 +1,836 @@ +/*=========================================================================== +FILE: + Socket.cpp + +DESCRIPTION: + Implementation of cSocket class + +PUBLIC CLASSES AND METHODS: + cSocket + This class wraps low level communication to qmuxd + +Copyright (c) 2013, The Linux Foundation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +===========================================================================*/ + +//--------------------------------------------------------------------------- +// Include Files +//--------------------------------------------------------------------------- +#include "StdAfx.h" +#include "Socket.h" +#include "ProtocolServer.h" +#include +#include + +//--------------------------------------------------------------------------- +// Definitions +//--------------------------------------------------------------------------- +// Thread commands +#define START_READ_CMD 0 +#define STOP_READ_CMD 1 +#define EXIT_CMD 2 + +// Size of the QMUXD command payload +// GET_CLIENT_ID and RELEASE_CLIENT_ID must pass in a buffer of this size +#define PAYLOAD_SIZE 808 + +/*=========================================================================*/ +// struct sQMUXDHeader +/*=========================================================================*/ +#pragma pack( push, 1 ) + +struct sQMUXDHeader +{ + /* Total size of header and following buffer */ + int mTotalSize; + + /* QMUXD client ID */ + int mQMUXDClientID; + + /* Message type */ + eQMUXDMessageTypes mQMUXDMsgID; + + /* Duplicate of mQMUXDClientID */ + int mQMUXDClientIDDuplicate; + + /* Transaction ID */ + unsigned long mTxID; + + /* System error code */ + int mSysErrCode; + + /* QMI error code (duplicate of TLV 0x02) */ + int mQmiErrCode; + + /* SMD channel. 0 = SMD_DATA_5 */ + int mQMUXDConnectionType; + + /* QMI service ID */ + int mQMUXServiceID; + + /* QMI client ID */ + unsigned char mQMUXClientID; + + /* QMI flags */ + unsigned char mRxFlags; + + /* In QMUXD this struct is not packed, so the compiler appends + these two bytes */ + unsigned short int mMissing2Bytes; +}; + +#pragma pack( pop ) + + +/*=========================================================================*/ +// Free Methods +/*=========================================================================*/ + +/*=========================================================================== +METHOD: + RxSocketThread (Free Method) + +DESCRIPTION: + Thread for simulating asynchronous reads to a socket + +PARAMETERS: + pData [ I ] cSocket pointer + +RETURN VALUE: + void * - thread exit value (always 0) +===========================================================================*/ +void * RxSocketThread( void * pData ) +{ + cSocket * pSocket = (cSocket*)pData; + if (pSocket == NULL || pSocket->IsValid() == false) + { + return 0; + } + + fd_set inputSet, outputSet; + FD_ZERO( &inputSet ); + FD_SET( pSocket->mCommandPipe[READING], &inputSet ); + int largestFD = pSocket->mCommandPipe[READING]; + + int status = 0; + while (true) + { + // No FD_COPY() available + memcpy( &outputSet, &inputSet, sizeof( fd_set ) ); + + // Wait until we recieve a command or data is available + status = select( largestFD + 1, &outputSet, NULL, NULL, NULL ); + if (status <= 0) + { + TRACE( "error %d in select, errno %d\n", status, errno ); + break; + } + + if (FD_ISSET( pSocket->mCommandPipe[READING], &outputSet ) == true) + { + // Read command value from the pipe + BYTE cmd; + status = read( pSocket->mCommandPipe[READING], &cmd, 1 ); + if (status != 1) + { + TRACE( "cmd error %d\n", status ); + break; + } + + if (cmd == START_READ_CMD) + { + FD_SET( pSocket->mSocket, &inputSet ); + largestFD = std::max( pSocket->mSocket, + pSocket->mCommandPipe[READING] ); + } + else if (cmd == STOP_READ_CMD) + { + FD_CLR( pSocket->mSocket, &inputSet ); + largestFD = pSocket->mCommandPipe[READING]; + } + else + { + // EXIT_CMD or anything else + pSocket->mpRxCallback = 0; + break; + } + } + else if (FD_ISSET( pSocket->mSocket, &outputSet ) == true) + { + // Stop watching for read data + FD_CLR( pSocket->mSocket, &inputSet ); + largestFD = pSocket->mCommandPipe[READING]; + + // Perform a recv for the header + sQMUXDHeader recvHdr; + status = recv( pSocket->mSocket, + &recvHdr, + sizeof( recvHdr ), + 0 ); + if (status != sizeof( recvHdr )) + { + TRACE( "recv error, bad size %d\n", status ); + break; + } + + // Calculate and read the remaining data + if ((recvHdr.mTotalSize < 0) + || ((ULONG)recvHdr.mTotalSize < sizeof( recvHdr )) + || ((ULONG)recvHdr.mTotalSize > sizeof( recvHdr ) + pSocket->mBuffSz)) + { + TRACE( "read too large for buffer\n" ); + break; + } + + status = recv( pSocket->mSocket, + pSocket->mpBuffer, + recvHdr.mTotalSize - sizeof( recvHdr ), + 0 ); + + // Is this one of our IOCTLS or a standard message? + if (recvHdr.mQMUXDMsgID == eQMUXD_MSG_WRITE_QMI_SDU) + { + cIOCallback * pCallback = pSocket->mpRxCallback; + pSocket->mpRxCallback = 0; + + if (pCallback == (cIOCallback *)1) + { + // We wanted to read, but not to be notified + } + else if (status >= 0) + { + pCallback->IOComplete( 0, status ); + } + else + { + pCallback->IOComplete( status, 0 ); + } + } + else + { + pSocket->mpRxCallback = 0; + // Notify SendCtl() that control message completed + + if (recvHdr.mQMUXDMsgID == eQMUXD_MSG_ALLOC_QMI_CLIENT_ID) + { + DWORD clientID; + memcpy( &clientID, &pSocket->mpBuffer[0], 4 ); + + pSocket->mCtrlMsgComplete.Set( clientID ); + } + else + { + // Just set the event + pSocket->mCtrlMsgComplete.Set( 0 ); + } + } + } + } + + return 0; +}; + +/*=========================================================================*/ +// cSocket Methods +/*=========================================================================*/ + +/*=========================================================================== +METHOD: + cSocket (Public Method) + +DESCRIPTION: + Constructor + +RETURN VALUE: + None +===========================================================================*/ +cSocket::cSocket() + : mSocket( INVALID_HANDLE_VALUE ), + mbCancelWrite( false ), + mpBuffer( 0 ), + mBuffSz( 0 ), + mRxThreadID( 0 ), + mCtrlMsgComplete(), + mQMUXDClientID( 0 ), + mQMUXClientID( 0 ), + mQMUXServiceID( 0 ), + mChannelID( -1 ), + mQMUXDTxID( 0 ) +{ + mCommandPipe[READING] = INVALID_HANDLE_VALUE; + mCommandPipe[WRITING] = INVALID_HANDLE_VALUE; +} + +/*=========================================================================== +METHOD: + ~cSocket (Public Method) + +DESCRIPTION: + Destructor + +RETURN VALUE: + None +===========================================================================*/ +cSocket::~cSocket() +{ + // Disconnect from current port + Disconnect(); + + mCommandPipe[READING] = INVALID_HANDLE_VALUE; + mCommandPipe[WRITING] = INVALID_HANDLE_VALUE; +} + +/*=========================================================================== +METHOD: + IsValid (Public Method) + +DESCRIPTION: + Is this object valid? + +RETURN VALUE: + Bool +===========================================================================*/ +bool cSocket::IsValid() +{ + // Nothing to do + return true; +} + +/*=========================================================================== +METHOD: + Connect (Public Method) + +DESCRIPTION: + Connect to the specified port + +PARAMETERS: + pPort [ I ] - String that consists of "Path,Channel" + Path is path to qmux_client_socket and qmux_connect_socket + Channel is used for connection type (IE: "0" = SMD_DATA_5 ) + +RETURN VALUE: + bool +===========================================================================*/ +bool cSocket::Connect( LPCSTR pPort ) +{ + if (IsValid() == false || pPort == 0 || pPort[0] == 0) + { + return false; + } + + if (mSocket != INVALID_HANDLE_VALUE) + { + Disconnect(); + } + + // Initialize command pipe for read thread + int nRet = pipe( mCommandPipe ); + if (nRet != 0) + { + TRACE( "cSocket:Connect() pipe creation failed %d\n", nRet ); + return false; + } + + // Start the read thread + nRet = pthread_create( &mRxThreadID, + 0, + RxSocketThread, + this ); + if (nRet != 0) + { + TRACE( "cSocket::Connect() pthread_create = %d\n", nRet ); + + Disconnect(); + return false; + } + + // Create a socket + mSocket = socket( AF_UNIX, SOCK_STREAM, 0 ); + if (mSocket == INVALID_HANDLE_VALUE) + { + TRACE( "unable to create socket %d\n", errno ); + + Disconnect(); + return false; + } + + // Get path and channel + std::string port = pPort; + size_t found = port.find( ',' ); + if (found == std::string::npos) + { + TRACE( "Invalid port specified" ); + + Disconnect(); + return false; + } + std::string path = port.substr( 0, found ); + std::string channel = port.substr( found + 1 ); + + struct sockaddr_un clientSockAddr; + memset( &clientSockAddr, 0, sizeof( clientSockAddr ) ); + clientSockAddr.sun_family = AF_UNIX; + + // Format the client path + snprintf( &clientSockAddr.sun_path[0], + sizeof( clientSockAddr.sun_path ), + "%sqmux_client_socket%7lu", + path.c_str(), + (unsigned long)getpid() ); + + // Delete if it exists already + unlink( clientSockAddr.sun_path ); + + // Bind to a client address + nRet = bind( mSocket, + (struct sockaddr *)&clientSockAddr, + sizeof( sockaddr_un ) ); + if (nRet == -1) + { + TRACE( "bad bind %d\n", errno ); + + Disconnect(); + return false; + } + + // Format the connection path + struct sockaddr_un connectSockAddr; + memset( &connectSockAddr, 0, sizeof( connectSockAddr ) ); + connectSockAddr.sun_family = AF_UNIX; + + snprintf( &connectSockAddr.sun_path[0], + sizeof( connectSockAddr.sun_path ), + "%sqmux_connect_socket", + path.c_str() ); + + // Connect to server address + nRet = connect( mSocket, + (struct sockaddr *)&connectSockAddr, + sizeof( sockaddr_un ) ); + if (nRet < 0) + { + TRACE( "bad connect %d\n", errno ); + + Disconnect(); + return false; + } + + int clientID; + nRet = recv( mSocket, &clientID, sizeof( clientID ), 0 ); + if (nRet != sizeof( clientID )) + { + TRACE( "bad client ID %d\n", errno ); + + Disconnect(); + return false; + } + + // Save QMUXD Client ID + mQMUXDClientID = clientID; + + // Save SMD channel + mChannelID = strtol( channel.c_str(), 0, 10 ); + if (mChannelID == -1) + { + Disconnect(); + return false; + } + + // Success! + return true; +} + +/*=========================================================================== +METHOD: + SendCtl (Public Method) + +DESCRIPTION: + Send a control message to the lower layer + +PARAMETERS: + msgType [ I ] - eQMUXDMessageType + pData [I/O] - input or output specific to ioctl request value + +RETURN VALUE: + int - control message return value (0 for success) +===========================================================================*/ +int cSocket::SendCtl( + UINT msgType, + void * pData ) +{ + if (mSocket == INVALID_HANDLE_VALUE) + { + TRACE( "Invalid file handle\n" ); + return -EBADFD; + } + + BYTE msg[sizeof( sQMUXDHeader ) + PAYLOAD_SIZE]; + memset( &msg[0], 0, sizeof( msg ) ); + + // The important QMUXD header values + sQMUXDHeader * pHdr = (sQMUXDHeader *)&msg[0]; + pHdr->mTotalSize = sizeof( msg ); + pHdr->mQMUXDClientID = mQMUXDClientID; + pHdr->mQMUXDMsgID = (eQMUXDMessageTypes)msgType; + pHdr->mQMUXDClientIDDuplicate = mQMUXDClientID; + pHdr->mQMUXDConnectionType = mChannelID; + + // mQMUXDTxID could go to INT_MAX, but rather than dealing with possible + // overflow in qmuxd or one of the lower layers, we'll stop early + mQMUXDTxID++; + if (mQMUXDTxID > 100000) + { + mQMUXDTxID = 1; + } + pHdr->mTxID = ++mQMUXDTxID; + + // The Payload + BYTE * pPayload = &msg[sizeof( sQMUXDHeader )]; + if (msgType == (int)eQMUXD_MSG_ALLOC_QMI_CLIENT_ID) + { + memcpy( &mQMUXServiceID, pData, 4 ); + memcpy( &pPayload[0], &mQMUXServiceID, 4 ); + } + else if (msgType == (int)eQMUXD_MSG_RELEASE_QMI_CLIENT_ID) + { + memcpy( &pPayload[0], &mQMUXServiceID, 4 ); + memcpy( &pPayload[4], &mQMUXClientID, 4 ); + } + + // Send the message + int rc = send( mSocket, &msg[0], sizeof( msg ), 0 ); + if (rc != sizeof( msg )) + { + TRACE( "bad write %d\n", rc ); + return rc; + } + + if (mpRxCallback == 0) + { + // No one is currently reading, need to trigger a read + // so our data can be recieved + RxData( &msg[0], sizeof( msg ), 0 ); + } + + // Wait for the response (10s timeout) + DWORD val; + rc = mCtrlMsgComplete.Wait( 10000, val ); + if (rc != 0) + { + TRACE( "bad SendCtl() wait %d\n", rc ); + return rc; + } + + if (msgType == (int)eQMUXD_MSG_ALLOC_QMI_CLIENT_ID) + { + // Grab the client ID + mQMUXClientID = val; + + // Verify client ID is valid + if (mQMUXClientID == 0) + { + return 1; + } + } + + return 0; +} + +/*=========================================================================== +METHOD: + Disconnect (Public Method) + +DESCRIPTION: + Disconnect from the current port + +RETURN VALUE: + bool +===========================================================================*/ +bool cSocket::Disconnect() +{ + // Assume success + bool bRC = true; + + if (mCommandPipe[WRITING] != INVALID_HANDLE_VALUE) + { + if (mRxThreadID != 0) + { + // Notify the thread to exit + BYTE byte = EXIT_CMD; + write( mCommandPipe[WRITING], &byte, 1 ); + + // And wait for it + int nRC = pthread_join( mRxThreadID, 0 ); + if (nRC != 0) + { + TRACE( "failed to join thread %d\n", nRC ); + bRC = false; + } + + mRxThreadID = 0; + } + + close( mCommandPipe[WRITING] ); + close( mCommandPipe[READING] ); + mCommandPipe[READING] = INVALID_HANDLE_VALUE; + mCommandPipe[WRITING] = INVALID_HANDLE_VALUE; + } + + if (mSocket != INVALID_HANDLE_VALUE) + { + close( mSocket ); + mSocket = INVALID_HANDLE_VALUE; + } + + // Double check + mpRxCallback = 0; + + mCtrlMsgComplete.Clear(); + mQMUXDClientID = 0; + mQMUXClientID = 0; + mQMUXServiceID = 0; + mQMUXDTxID = 0; + return bRC; +} + +/*=========================================================================== +METHOD: + CancelIO (Public Method) + +DESCRIPTION: + Cancel any in-progress I/O + +PARAMETERS: + +RETURN VALUE: + bool +===========================================================================*/ +bool cSocket::CancelIO() +{ + if (mSocket == INVALID_HANDLE_VALUE) + { + return false; + } + + bool bRxCancel = CancelRx(); + bool bTxCancel = CancelTx(); + + return (bRxCancel && bTxCancel); +} + +/*=========================================================================== +METHOD: + CancelRx (Public Method) + +DESCRIPTION: + Cancel any in-progress receive operation + +RETURN VALUE: + bool +===========================================================================*/ +bool cSocket::CancelRx() +{ + if (mSocket == INVALID_HANDLE_VALUE + || mCommandPipe[WRITING] == INVALID_HANDLE_VALUE + || mpRxCallback == 0 + || mRxThreadID == 0) + { + TRACE( "cannot cancel, thread not active\n" ); + mpRxCallback = 0; + return false; + } + + // Notify the thread to stop reading + BYTE byte = STOP_READ_CMD; + int nRC = write( mCommandPipe[WRITING], &byte, 1 ); + if (nRC != 1) + { + TRACE( "error %d canceling read\n", nRC ); + return false; + } + + // Remove the old callback + mpRxCallback = 0; + + return true; +} + +/*=========================================================================== +METHOD: + CancelTx (Public Method) + +DESCRIPTION: + Cancel any in-progress transmit operation + +RETURN VALUE: + bool +===========================================================================*/ +bool cSocket::CancelTx() +{ + if (mSocket == INVALID_HANDLE_VALUE) + { + return false; + } + + mbCancelWrite = true; + + return true; +} + +/*=========================================================================== +METHOD: + RxData (Public Method) + +DESCRIPTION: + Receive data + +PARAMETERS: + pBuf [ I ] - Buffer to contain received data + bufSz [ I ] - Amount of data to be received + pCallback [ I ] - Callback object to be exercised when the + operation completes + +RETURN VALUE: + bool +===========================================================================*/ +bool cSocket::RxData( + BYTE * pBuf, + ULONG bufSz, + cIOCallback * pCallback ) +{ + if (IsValid() == false || mpRxCallback != 0) + { + return false; + } + + if (pCallback == 0) + { + // Not interested in being notified, but we still need a value + // for this so that only one outstanding I/O operation is active + // at any given point in time + mpRxCallback = (cIOCallback * )1; + } + else + { + mpRxCallback = pCallback; + } + + mpBuffer = pBuf; + mBuffSz = bufSz; + + // Notify the thread to start reading + BYTE byte = START_READ_CMD; + int nRC = write( mCommandPipe[WRITING], &byte, 1 ); + if (nRC != 1) + { + TRACE( "error %d starting read\n", nRC ); + return false; + } + + return true; +} + +/*=========================================================================== +METHOD: + TxData (Public Method) + +DESCRIPTION: + Transmit data + +PARAMETERS: + pBuf [ I ] - Data to be transmitted + bufSz [ I ] - Amount of data to be transmitted + +RETURN VALUE: + bool +===========================================================================*/ +bool cSocket::TxData( + const BYTE * pBuf, + ULONG bufSz ) +{ + if (IsValid() == false) + { + return false; + } + +#ifdef DEBUG + ULONGLONG nStart = GetTickCount(); +#endif + + // Allow ourselves to be interupted + mbCancelWrite = false; + + // Format the header + int totalSz = sizeof( sQMUXDHeader ) + bufSz; + BYTE * pMsg = new BYTE[totalSz]; + if (pMsg == 0) + { + TRACE( "unable to allocate buffer\n" ); + return false; + } + memset( pMsg, 0, totalSz ); + + // The important QMUXD header values + sQMUXDHeader * pHdr = (sQMUXDHeader *)pMsg; + pHdr->mTotalSize = totalSz; + pHdr->mQMUXDClientID = mQMUXDClientID; + pHdr->mQMUXDMsgID = eQMUXD_MSG_WRITE_QMI_SDU; + pHdr->mQMUXDClientIDDuplicate = mQMUXDClientID; + + // mQMUXDTxID could go to INT_MAX, but rather than dealing with possible + // overflow in qmuxd or one of the lower layers, we'll stop early + mQMUXDTxID++; + if (mQMUXDTxID > 100000) + { + mQMUXDTxID = 1; + } + pHdr->mTxID = ++mQMUXDTxID; + + pHdr->mQMUXServiceID = mQMUXServiceID; + pHdr->mQMUXClientID = mQMUXClientID; + + // The data payload + memcpy( &pMsg[sizeof( sQMUXDHeader )], pBuf, bufSz ); + + // Send the message + int nRet = send( mSocket, pMsg, totalSz, 0 ); + delete [] pMsg; + if (nRet != totalSz) + { + TRACE( "cSocket::TxData() write returned %d instead of %d\n", + nRet, + totalSz ); + return false; + } + +#ifdef DEBUG + TRACE( "Write of %d bytes took %llu milliseconds\n", + totalSz, + GetTickCount() - nStart ); +#endif + + return true; +} diff --git a/gobi-api/GobiAPI_2013-07-31-1347/Core/Socket.h b/gobi-api/GobiAPI_2013-07-31-1347/Core/Socket.h new file mode 100644 index 0000000..0c4e6be --- /dev/null +++ b/gobi-api/GobiAPI_2013-07-31-1347/Core/Socket.h @@ -0,0 +1,163 @@ +/*=========================================================================== +FILE: + Socket.h + +DESCRIPTION: + Declaration of cSocket class + +PUBLIC CLASSES AND METHODS: + cSocket + This class wraps low level communication to qmuxd + +Copyright (c) 2013, The Linux Foundation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +===========================================================================*/ + +//--------------------------------------------------------------------------- +// Include Files +//--------------------------------------------------------------------------- +#include "Event.h" +#include "Connection.h" + +//--------------------------------------------------------------------------- +// Pragmas +//--------------------------------------------------------------------------- +#pragma once + +/*=========================================================================*/ +// Enum eQMUXDMessageTypes +// Types to be passed into SendCtl() for cSocket +/*=========================================================================*/ +enum eQMUXDMessageTypes +{ + eQMUXD_MSG_WRITE_QMI_SDU = 0, + eQMUXD_MSG_ALLOC_QMI_CLIENT_ID = 1, + eQMUXD_MSG_RELEASE_QMI_CLIENT_ID = 2, +}; + +/*=========================================================================*/ +// Class cSocket +/*=========================================================================*/ +class cSocket : public cConnection +{ + public: + // Constructor + cSocket(); + + // Destructor + ~cSocket(); + + // Is this object valid? + bool IsValid(); + + // Connect to the specified port + bool Connect( LPCSTR pPort ); + + // Run an IOCTL on the open file handle + int SendCtl( + UINT ioctlReq, + void * pData ); + + // Disconnect from the current port + bool Disconnect(); + + // Configure the port with the passed in parameters + bool ConfigureSettings( termios * pSettings ); + + // Return the current port settings + bool GetSettings( termios * pSettings ); + + // Cancel any in-progress I/O + bool CancelIO(); + + // Cancel any in-progress receive operation + bool CancelRx(); + + // Cancel any in-progress transmit operation + bool CancelTx(); + + // Receive data + bool RxData( + BYTE * pBuf, + ULONG bufSz, + cIOCallback * pCallback ); + + // Transmit data + bool TxData( + const BYTE * pBuf, + ULONG bufSz ); + + // (Inline) Return current channel ID + int GetChannelID() const + { + return mChannelID; + }; + + // Are we currently connected to a port? + bool IsConnected() + { + return (mSocket != INVALID_HANDLE_VALUE); + }; + + protected: + + /* Handle to socket */ + int mSocket; + + // Cancel the write request? + bool mbCancelWrite; + + /* Buffer */ + BYTE * mpBuffer; + + /* Buffer size */ + ULONG mBuffSz; + + /* Pipe for comunication with thread */ + int mCommandPipe[2]; + + /* Thread ID of Rx Thread. */ + pthread_t mRxThreadID; + + /* Control message completion event */ + cEvent mCtrlMsgComplete; + + /* QMUXD client ID */ + int mQMUXDClientID; + + /* QMUX client and service IDs */ + int mQMUXClientID; + int mQMUXServiceID; + + /* SMD Channel ID. 0 = SMD_DATA_5 */ + int mChannelID; + + /* The SMD transaction ID */ + int mQMUXDTxID; + + // Rx thread is allowed complete access + friend void * RxSocketThread( void * pData ); +}; diff --git a/gobi-api/GobiAPI_2013-07-31-1347/Core/StdAfx.h b/gobi-api/GobiAPI_2013-07-31-1347/Core/StdAfx.h new file mode 100644 index 0000000..39565be --- /dev/null +++ b/gobi-api/GobiAPI_2013-07-31-1347/Core/StdAfx.h @@ -0,0 +1,199 @@ +/*=========================================================================== +FILE: + StdAfx.h + +DESCRIPTION: + Application Framework eXtenstions for Linux + +PUBLIC CLASSES AND FUNCTIONS: + +Copyright (c) 2013, The Linux Foundation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +===========================================================================*/ + +//--------------------------------------------------------------------------- +// Pragmas +//--------------------------------------------------------------------------- +#pragma once +//--------------------------------------------------------------------------- +// Includes +//--------------------------------------------------------------------------- +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +//--------------------------------------------------------------------------- +// Macro defination +//--------------------------------------------------------------------------- + +#define ASSERT( x ) assert( x ) + +#ifdef DEBUG + + #ifdef ANDROID + + #include + + // TRACE macro + #define TRACE( format, arg... ) \ + if (true) \ + { \ + __android_log_print( ANDROID_LOG_INFO, \ + "Gobi", "%s:%d: " format, \ + __FILE__, \ + __LINE__, \ + ##arg ); \ + } + + #else + + #define TRACE( format, arg... ) \ + printf( "%s:%d: " format, \ + __FILE__, \ + __LINE__, \ + ##arg ) + #endif + +#else + #define TRACE(...) +#endif + +//--------------------------------------------------------------------------- +// data type defination +//--------------------------------------------------------------------------- +#ifndef FALSE +#define FALSE 0 +#endif + +#ifndef TRUE +#define TRUE 1 +#endif + +#ifndef CONST +#define CONST const +#endif + +typedef void VOID; +typedef unsigned long DWORD; +typedef int BOOL; +typedef unsigned char BYTE; +typedef unsigned short WORD; +typedef float FLOAT; +typedef long long LONGLONG; +typedef unsigned long long ULONGLONG; +typedef signed char INT8; +typedef double DOUBLE; + +typedef int INT; +typedef unsigned int UINT; +typedef unsigned int * PUINT; +typedef INT HANDLE; +typedef HANDLE HMODULE; + +typedef char CHAR; +typedef short SHORT; +typedef long LONG; + +typedef unsigned long ULONG; +typedef ULONG * PULONG; +typedef ULONG * ULONG_PTR; +typedef unsigned short USHORT; +typedef USHORT * PUSHORT; +typedef unsigned char UCHAR; +typedef UCHAR * PUCHAR; +typedef char * PSZ; + + +typedef CONST CHAR * LPCSTR; +typedef CHAR * LPSTR; + +typedef BYTE * PBYTE; +typedef BOOL * PBOOL; +typedef INT * PINT; +typedef UINT * LPINT; +typedef WORD * PWORD; +typedef PWORD LPWORD; +typedef LONG * LPLONG; +typedef DWORD * PDWORD; +typedef VOID * PVOID; +typedef PVOID LPVOID; +typedef const void * LPCVOID; + +typedef size_t SIZE_T; +typedef double DATE; + +// Error code +#define NO_ERROR 0L +#define ERROR_SUCCESS 0L +#define ERROR_NO_MORE_ITEMS 259L +#define ERROR_CRC 23L +#define ERROR_OUTOFMEMORY 14L +#define ERROR_CAN_NOT_COMPLETE 1003L +#define ERROR_REVISION_MISMATCH 1306L +#define ERROR_BAD_ARGUMENTS 160L +#define INVALID_SET_FILE_POINTER -1 +#define VALID_HANDLE_VALUE 0 +#define INVALID_HANDLE_VALUE -1 +#define INVALID_FILE_SZ -1 + +#define ERROR_GEN_FAILURE 31L +#define ERROR_FILE_NOT_FOUND 2L +#define ERROR_NOT_ENOUGH_MEMORY 8L +#define ERROR_INVALID_PARAMETER 87L +#define ERROR_BAD_FORMAT 11L + + +// Other Constant definitions +#define MAX_PATH 512 +#define INFINITE 0xffffffff + + +// SIOCIWFIRSTPRIV = 0x8BE0 + +// Device I/O control code for setting QMI service +#define QMI_GET_SERVICE_FILE_IOCTL 0x8BE0 + 1 + +// Device I/O control code for obtaining device VIDPID +#define QMI_GET_VIDPID_IOCTL 0x8BE0 + 2 + +// Device I/O control code for obtaining device MEID +#define QMI_GET_MEID_IOCTL 0x8BE0 + 3 + +// Define the directions for pipes +#define READING 0 +#define WRITING 1 diff --git a/gobi-api/GobiAPI_2013-07-31-1347/Core/SyncQueue.h b/gobi-api/GobiAPI_2013-07-31-1347/Core/SyncQueue.h new file mode 100644 index 0000000..84dd0eb --- /dev/null +++ b/gobi-api/GobiAPI_2013-07-31-1347/Core/SyncQueue.h @@ -0,0 +1,418 @@ +/*=========================================================================== +FILE: + SyncQueue.h + +DESCRIPTION: + Declaration/Implementation of cSyncQueue class + +PUBLIC CLASSES AND METHODS: + cSyncQueue + Synchronized shareable (across multiple threads) queue of + structures with event notifications + +Copyright (c) 2013, The Linux Foundation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +===========================================================================*/ + +//--------------------------------------------------------------------------- +// Pragmas +//--------------------------------------------------------------------------- +#pragma once + +//--------------------------------------------------------------------------- +// Include Files +//--------------------------------------------------------------------------- +#include +#include "Event.h" + +//--------------------------------------------------------------------------- +// Definitions +//--------------------------------------------------------------------------- + +/*=========================================================================*/ +// Class cSyncQueue +/*=========================================================================*/ +template class cSyncQueue +{ + public: + // (Inline) Constructor + cSyncQueue( + ULONG maxElements, + bool bSignalEvent = false ) + : mSignature( (ULONG)eSYNC_QUEUE_SIG ), + mSignalEvent(), + mbSignalEvent( bSignalEvent ), + mMaxElements( maxElements ), + mTotalElements( 0 ) + { + // Create sync CS + int nRet = pthread_mutex_init( &mSyncSection, NULL ); + if (nRet != 0) + { + TRACE( "SyncQueue: Unable to init sync mutex. Error %d: %s\n", + nRet, + strerror( nRet ) ); + return; + } + }; + + // (Inline) Destructor + ~cSyncQueue() + { + if (IsValid() == false) + { + ASSERT( (PVOID)"Double deletion detected in ~cSyncQueue" == 0 ); + } + else + { + EmptyQueue(); + + mSignature = 0; + int nRet = pthread_mutex_destroy( &mSyncSection ); + if (nRet != 0) + { + TRACE( "SyncQueue: Unable to destroy sync mutex." + " Error %d: %s\n", + nRet, + strerror( nRet ) ); + return; + } + } + + }; + + // (Inline) Add an element to the queue + bool AddElement( const tElementType & elem ) + { + // Assume failure + bool bRC = false; + if (IsValid() == false) + { + ASSERT( (PVOID)"Bad cSyncQueue object detected" == 0 ); + return bRC; + } + + int nRet = pthread_mutex_lock( &mSyncSection ); + if (nRet != 0) + { + TRACE( "SyncQueue: Unable to lock sync mutex. Error %d: %s\n", + nRet, + strerror( nRet ) ); + return false; + } + + // Are we out of space? + if ((ULONG)mElementDeque.size() >= mMaxElements) + { + // Yes, drop oldest element + mElementDeque.pop_front(); + } + + // Add new item to the queue + mElementDeque.push_back( elem ); + mTotalElements++; + + // Set event? + if (mbSignalEvent == true) + { + // Signal index of event + nRet = mSignalEvent.Set( mTotalElements - 1 ); + if (nRet != 0) + { + TRACE( "SyncQueue: Unable to signal. Error %d: %s\n", + nRet, + strerror( nRet ) ); + return false; + } + } + + // Success! + bRC = true; + + nRet = pthread_mutex_unlock( &mSyncSection ); + if (nRet != 0) + { + TRACE( "SyncQueue: Unable to unlock sync mutex. Error %d: %s\n", + nRet, + strerror( nRet ) ); + return false; + } + + return bRC; + }; + + // (Inline) Add an element to the queue returning the index of + // the element + bool AddElement( + const tElementType & elem, + ULONG & idx ) + { + // Assume failure + bool bRC = false; + if (IsValid() == false) + { + ASSERT( (PVOID)"Bad cSyncQueue object detected" == 0 ); + return bRC; + } + + int nRet = pthread_mutex_lock( &mSyncSection ); + if (nRet != 0) + { + TRACE( "SyncQueue: Unable to lock sync mutex. Error %d: %s\n", + nRet, + strerror( nRet ) ); + return false; + } + + // Are we out of space? + if ((ULONG)mElementDeque.size() >= mMaxElements) + { + mElementDeque.pop_front(); + } + + // Add new item to the queue + mElementDeque.push_back( elem ); + idx = mTotalElements++; + + // Set event? + if (mbSignalEvent == true) + { + // Signal index of event + nRet = mSignalEvent.Set( mTotalElements - 1 ); + if (nRet != 0) + { + TRACE( "SyncQueue: Unable to signal. Error %d: %s\n", + nRet, + strerror( nRet ) ); + return false; + } + } + + // Success! + bRC = true; + + nRet = pthread_mutex_unlock( &mSyncSection ); + if (nRet != 0) + { + TRACE( "SyncQueue: Unable to unlock sync mutex. Error %d: %s\n", + nRet, + strerror( nRet ) ); + return false; + } + + return bRC; + }; + + // (Inline) Return given element in the queue + bool GetElement( + ULONG idx, + tElementType & elem ) const + { + // Assume failure + bool bRC = false; + if (IsValid() == false) + { + ASSERT( (PVOID)"Bad cSyncQueue object detected" == 0 ); + return bRC; + } + + int nRet = pthread_mutex_lock( &mSyncSection ); + if (nRet != 0) + { + TRACE( "SyncQueue: Unable to lock sync mutex. Error %d: %s\n", + nRet, + strerror( nRet ) ); + return false; + } + + // Is this a current element index? + ULONG expiredIndices = mTotalElements - (ULONG)mElementDeque.size(); + if (idx >= expiredIndices) + { + // Yes, grab it from the deque + idx -= expiredIndices; + if (idx < (ULONG)mElementDeque.size()) + { + elem = mElementDeque[idx]; + bRC = true; + } + } + + nRet = pthread_mutex_unlock( &mSyncSection ); + if (nRet != 0) + { + TRACE( "SyncQueue: Unable to unlock sync mutex. Error %d: %s\n", + nRet, + strerror( nRet ) ); + return false; + } + + return bRC; + }; + + // (Inline) Empty element queue + bool EmptyQueue() + { + // Assume failure + bool bRC = false; + if (IsValid() == false) + { + ASSERT( (PVOID)"Bad cSyncQueue object detected" == 0 ); + return bRC; + } + + int nRet = pthread_mutex_lock( &mSyncSection ); + if (nRet != 0) + { + TRACE( "SyncQueue: Unable to lock sync mutex. Error %d: %s\n", + nRet, + strerror( nRet ) ); + return false; + } + + + mElementDeque.clear(); + mTotalElements = 0; + + nRet = pthread_mutex_unlock( &mSyncSection ); + if (nRet != 0) + { + TRACE( "SyncQueue: Unable to unlock sync mutex. Error %d: %s\n", + nRet, + strerror( nRet ) ); + return false; + } + + bRC = true; + return bRC; + }; + + // (Inline) Return the number of queued elements + ULONG GetQueueCount() const + { + ULONG elems = 0; + if (IsValid() == false) + { + ASSERT( (PVOID)"Bad cSyncQueue object detected" == 0 ); + return elems; + } + + int nRet = pthread_mutex_lock( &mSyncSection ); + if (nRet != 0) + { + TRACE( "SyncQueue: Unable to lock sync mutex. Error %d: %s\n", + nRet, + strerror( nRet ) ); + return 0; + } + + elems = (ULONG)mElementDeque.size(); + + nRet = pthread_mutex_unlock( &mSyncSection ); + if (nRet != 0) + { + TRACE( "SyncQueue: Unable to unlock sync mutex. Error %d: %s\n", + nRet, + strerror( nRet ) ); + return 0; + } + + return elems; + }; + + // (Inline) Return the total number of elements added to queue + ULONG GetTotalCount() const + { + ULONG elems = 0; + if (IsValid() == false) + { + ASSERT( (PVOID)"Bad cSyncQueue object detected" == 0 ); + return elems; + } + + int nRet = pthread_mutex_lock( &mSyncSection ); + if (nRet != 0) + { + TRACE( "SyncQueue: Unable to lock sync mutex. Error %d: %s\n", + nRet, + strerror( nRet ) ); + return 0; + } + + elems = mTotalElements; + + nRet = pthread_mutex_unlock( &mSyncSection ); + if (nRet != 0) + { + TRACE( "SyncQueue: Unable to unlock sync mutex. Error %d: %s\n", + nRet, + strerror( nRet ) ); + return 0; + } + + return elems; + }; + + // (Inline) Return the signal event + cEvent & GetSignalEvent() const + { + return mSignalEvent; + }; + + // (Inline) Is this sync queue valid? + bool IsValid() const + { + return (mSignature == (ULONG)eSYNC_QUEUE_SIG); + }; + + protected: + // Object signature + enum eClassConstants + { + eSYNC_QUEUE_SIG = 0x1799A2BC + }; + + /* Object signature */ + ULONG mSignature; + + /* Multithreaded mutex type */ + mutable pthread_mutex_t mSyncSection; + + /* Signal event, set everytime an element is added (if configured) */ + mutable cEvent mSignalEvent; + + /* Use above signal event? */ + bool mbSignalEvent; + + /* Maximum number of elements to add to the deque */ + ULONG mMaxElements; + + /* Total number of elements added to the deque */ + ULONG mTotalElements; + + /* Element queue */ + std::deque mElementDeque; +}; diff --git a/gobi-api/GobiAPI_2013-07-31-1347/Gobi3000Translation/Gobi3000Translation.cpp b/gobi-api/GobiAPI_2013-07-31-1347/Gobi3000Translation/Gobi3000Translation.cpp new file mode 100644 index 0000000..325ec5f --- /dev/null +++ b/gobi-api/GobiAPI_2013-07-31-1347/Gobi3000Translation/Gobi3000Translation.cpp @@ -0,0 +1,100 @@ +/*=========================================================================== +FILE: + Gobi3000Translation.cpp + +DESCRIPTION: + QUALCOMM Translation for Gobi 3000 + +Copyright (c) 2013, The Linux Foundation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +==========================================================================*/ + +//--------------------------------------------------------------------------- +// Include Files +//--------------------------------------------------------------------------- +#include "Gobi3000Translation.h" + +/*=========================================================================*/ +// Free Methods +/*=========================================================================*/ + +/*=========================================================================== +METHOD: + GetTLV + +DESCRIPTION: + Return the starting location and size of TLV buffer. + + NOTE: does not include the TLV header + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + type [ I ] - Type ID + pOutLen [ O ] - Length of the output buffer + ppOut [ O ] - Pointer to output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG GetTLV( + ULONG inLen, + const BYTE * pIn, + BYTE typeID, + ULONG * pOutLen, + const BYTE ** ppOut ) +{ + if (pIn == 0 || pOutLen == 0 || ppOut == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + for (ULONG offset = 0; + offset + sizeof( sQMIRawContentHeader ) <= inLen; + offset += sizeof( sQMIRawContentHeader )) + { + sQMIRawContentHeader * pHeader = (sQMIRawContentHeader*)(pIn + offset); + + // Is it big enough to contain this TLV? + if (offset + sizeof( sQMIRawContentHeader ) + pHeader->mLength > inLen) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + if (pHeader->mTypeID == typeID) + { + *pOutLen = pHeader->mLength; + *ppOut = pIn + offset + sizeof( sQMIRawContentHeader ); + + return eGOBI_ERR_NONE; + } + + offset += pHeader->mLength; + } + + // TLV not found + return eGOBI_ERR_INVALID_RSP; +} diff --git a/gobi-api/GobiAPI_2013-07-31-1347/Gobi3000Translation/Gobi3000Translation.h b/gobi-api/GobiAPI_2013-07-31-1347/Gobi3000Translation/Gobi3000Translation.h new file mode 100644 index 0000000..46bd390 --- /dev/null +++ b/gobi-api/GobiAPI_2013-07-31-1347/Gobi3000Translation/Gobi3000Translation.h @@ -0,0 +1,1027 @@ +/*=========================================================================== +FILE: + Gobi3000Translation.h + +DESCRIPTION: + QUALCOMM Tanslation for Gobi 3000 + +Copyright (c) 2013, The Linux Foundation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +==========================================================================*/ + +/*=========================================================================*/ +// Pragmas +/*=========================================================================*/ +#pragma once + +#ifndef GOBI_TYPEDEFS +#define GOBI_TYPEDEFS + +// Type Definitions +typedef unsigned long ULONG; +typedef unsigned long * ULONG_PTR; +typedef unsigned long long ULONGLONG; +typedef signed char INT8; +typedef unsigned char UINT8; +typedef signed short INT16; +typedef unsigned short UINT16; +typedef signed int INT32; +typedef unsigned int UINT32; +typedef unsigned char BYTE; +typedef char CHAR; +typedef unsigned short WORD; +typedef unsigned short USHORT; +typedef const char * LPCSTR; + +#ifdef WINDOWS + typedef signed __int64 INT64; + typedef unsigned __int64 UINT64; +#else + typedef signed long long INT64; + typedef unsigned long long UINT64; +#endif + +#endif + +//--------------------------------------------------------------------------- +// Include Files +//--------------------------------------------------------------------------- +#include +#include +#include +#include "GobiConnectionMgmtAPIStructs.h" + +//--------------------------------------------------------------------------- +// Prototypes +//--------------------------------------------------------------------------- + +// Get a TLV +ULONG GetTLV( + ULONG inLen, + const BYTE * pIn, + BYTE typeID, + ULONG * pOutLen, + const BYTE ** ppOut ); + +// WDS + +ULONG ParseGetSessionState( + ULONG inLen, + const BYTE * pIn, + ULONG * pState ); + +ULONG ParseGetSessionDuration( + ULONG inLen, + const BYTE * pIn, + ULONGLONG * pDuration ); + +ULONG ParseGetDormancyState( + ULONG inLen, + const BYTE * pIn, + ULONG * pState ); + +ULONG ParseGetEnhancedAutoconnect( + ULONG inLen, + const BYTE * pIn, + ULONG * pSetting, + ULONG * pRoamSetting ); + +ULONG PackSetEnhancedAutoconnect( + ULONG * pOutLen, + BYTE * pOut, + ULONG setting, + ULONG * pRoamSetting ); + +ULONG PackSetDefaultProfile( + ULONG * pOutLen, + BYTE * pOut, + ULONG profileType, + ULONG * pPDPType, + ULONG * pIPAddress, + ULONG * pPrimaryDNS, + ULONG * pSecondaryDNS, + ULONG * pAuthentication, + CHAR * pName, + CHAR * pAPNName, + CHAR * pUsername, + CHAR * pPassword ); + +ULONG PackGetDefaultProfile( + ULONG * pOutLen, + BYTE * pOut, + ULONG profileType ); + +ULONG ParseGetDefaultProfile( + ULONG inLen, + const BYTE * pIn, + ULONG * pPDPType, + ULONG * pIPAddress, + ULONG * pPrimaryDNS, + ULONG * pSecondaryDNS, + ULONG * pAuthentication, + BYTE nameSize, + CHAR * pName, + BYTE apnSize, + CHAR * pAPNName, + BYTE userSize, + CHAR * pUsername ); + +ULONG PackStartDataSession( + ULONG * pOutLen, + BYTE * pOut, + ULONG * pTechnology, + ULONG * pPrimaryDNS, + ULONG * pSecondaryDNS, + ULONG * pPrimaryNBNS, + ULONG * pSecondaryNBNS, + CHAR * pAPNName, + ULONG * pIPAddress, + ULONG * pAuthentication, + CHAR * pUsername, + CHAR * pPassword ); + +ULONG ParseStartDataSession( + ULONG inLen, + const BYTE * pIn, + ULONG * pSessionId, + ULONG * pFailureReason ); + +ULONG PackStopDataSession( + ULONG * pOutLen, + BYTE * pOut, + ULONG sessionId ); + +ULONG PackGetIPAddress( + ULONG * pOutLen, + BYTE * pOut ); + +ULONG ParseGetIPAddress( + ULONG inLen, + const BYTE * pIn, + ULONG * pIPAddress ); + +ULONG ParseGetConnectionRate( + ULONG inLen, + const BYTE * pIn, + ULONG * pCurrentChannelTXRate, + ULONG * pCurrentChannelRXRate, + ULONG * pMaxChannelTXRate, + ULONG * pMaxChannelRXRate ); + +ULONG PackGetPacketStatus( + ULONG * pOutLen, + BYTE * pOut ); + +ULONG ParseGetPacketStatus( + ULONG inLen, + const BYTE * pIn, + ULONG * pTXPacketSuccesses, + ULONG * pRXPacketSuccesses, + ULONG * pTXPacketErrors, + ULONG * pRXPacketErrors, + ULONG * pTXPacketOverflows, + ULONG * pRXPacketOverflows ); + +ULONG PackGetByteTotals( + ULONG * pOutLen, + BYTE * pOut ); + +ULONG ParseGetByteTotals( + ULONG inLen, + const BYTE * pIn, + ULONGLONG * pTXTotalBytes, + ULONGLONG * pRXTotalBytes ); + +ULONG PackSetMobileIP( + ULONG * pOutLen, + BYTE * pOut, + ULONG mode ); + +ULONG ParseGetMobileIP( + ULONG inLen, + const BYTE * pIn, + ULONG * pMode ); + +ULONG PackSetActiveMobileIPProfile( + ULONG * pOutLen, + BYTE * pOut, + CHAR * pSPC, + BYTE index ); + +ULONG ParseGetActiveMobileIPProfile( + ULONG inLen, + const BYTE * pIn, + BYTE * pIndex ); + +ULONG PackSetMobileIPProfile( + ULONG * pOutLen, + BYTE * pOut, + CHAR * pSPC, + BYTE index, + BYTE * pEnabled, + ULONG * pAddress, + ULONG * pPrimaryHA, + ULONG * pSecondaryHA, + BYTE * pRevTunneling, + CHAR * pNAI, + ULONG * pHASPI, + ULONG * pAAASPI, + CHAR * pMNHA, + CHAR * pMNAAA ); + +ULONG PackGetMobileIPProfile( + ULONG * pOutLen, + BYTE * pOut, + BYTE index ); + +ULONG ParseGetMobileIPProfile( + ULONG inLen, + const BYTE * pIn, + BYTE * pEnabled, + ULONG * pAddress, + ULONG * pPrimaryHA, + ULONG * pSecondaryHA, + BYTE * pRevTunneling, + BYTE naiSize, + CHAR * pNAI, + ULONG * pHASPI, + ULONG * pAAASPI, + ULONG * pHAState, + ULONG * pAAAState ); + +ULONG PackSetMobileIPParameters( + ULONG * pOutLen, + BYTE * pOut, + CHAR * pSPC, + ULONG * pMode, + BYTE * pRetryLimit, + BYTE * pRetryInterval, + BYTE * pReRegPeriod, + BYTE * pReRegTraffic, + BYTE * pHAAuthenticator, + BYTE * pHA2002bis ); + +ULONG ParseGetMobileIPParameters( + ULONG inLen, + const BYTE * pIn, + ULONG * pMode, + BYTE * pRetryLimit, + BYTE * pRetryInterval, + BYTE * pReRegPeriod, + BYTE * pReRegTraffic, + BYTE * pHAAuthenticator, + BYTE * pHA2002bis ); + +ULONG ParseGetLastMobileIPError( + ULONG inLen, + const BYTE * pIn, + ULONG * pError ); + +ULONG PackSetDNSSettings( + ULONG * pOutLen, + BYTE * pOut, + ULONG * pPrimaryDNS, + ULONG * pSecondaryDNS ); + +ULONG ParseGetDNSSettings( + ULONG inLen, + const BYTE * pIn, + ULONG * pPrimaryDNS, + ULONG * pSecondaryDNS ); + +ULONG ParseGetDataBearerTechnology( + ULONG inLen, + const BYTE * pIn, + ULONG * pDataBearer ); + +// NAS + +ULONG ParseGetANAAAAuthenticationStatus( + ULONG inLen, + const BYTE * pIn, + ULONG * pStatus ); + +ULONG ParseGetSignalStrength( + ULONG inLen, + const BYTE * pIn, + INT8 * pSignalStrength, + ULONG * pRadioInterface ); + +ULONG ParseGetSignalStrengths( + ULONG inLen, + const BYTE * pIn, + ULONG * pArraySizes, + INT8 * pSignalStrengths, + ULONG * pRadioInterfaces ); + +ULONG ParseGetRFInfo( + ULONG inLen, + const BYTE * pIn, + BYTE * pInstanceSize, + BYTE * pInstances ); + +ULONG ParsePerformNetworkScan( + ULONG inLen, + const BYTE * pIn, + BYTE * pInstanceSize, + BYTE * pInstances ); + +ULONG ParsePerformNetworkRATScan( + ULONG inLen, + const BYTE * pIn, + BYTE * pInstanceSize, + BYTE * pInstances, + BYTE * pRATSize, + BYTE * pRATInstances ); + +ULONG PackInitiateNetworkRegistration( + ULONG * pOutLen, + BYTE * pOut, + ULONG regType, + WORD mcc, + WORD mnc, + ULONG rat ); + +ULONG PackInitiateDomainAttach( + ULONG * pOutLen, + BYTE * pOut, + ULONG action ); + +ULONG ParseGetServingNetwork( + ULONG inLen, + const BYTE * pIn, + ULONG * pRegistrationState, + ULONG * pCSDomain, + ULONG * pPSDomain, + ULONG * pRAN, + BYTE * pRadioIfacesSize, + BYTE * pRadioIfaces, + ULONG * pRoaming, + WORD * pMCC, + WORD * pMNC, + BYTE nameSize, + CHAR * pName ); + +ULONG ParseGetServingNetworkCapabilities( + ULONG inLen, + const BYTE * pIn, + BYTE * pDataCapsSize, + BYTE * pDataCaps ); + +ULONG ParseGetHomeNetwork( + ULONG inLen, + const BYTE * pIn, + WORD * pMCC, + WORD * pMNC, + BYTE nameSize, + CHAR * pName, + WORD * pSID, + WORD * pNID ); + +ULONG PackSetNetworkPreference( + ULONG * pOutLen, + BYTE * pOut, + ULONG technologyPref, + ULONG duration ); + +ULONG ParseGetNetworkPreference( + ULONG inLen, + const BYTE * pIn, + ULONG * pTechnologyPref, + ULONG * pDuration, + ULONG * pPersistentTechnologyPref ); + +ULONG PackSetCDMANetworkParameters( + ULONG * pOutLen, + BYTE * pOut, + CHAR * pSPC, + BYTE * pForceRev0, + BYTE * pCustomSCP, + ULONG * pProtocol, + ULONG * pBroadcast, + ULONG * pApplication, + ULONG * pRoaming ); + +ULONG ParseGetCDMANetworkParameters( + ULONG inLen, + const BYTE * pIn, + BYTE * pSCI, + BYTE * pSCM, + BYTE * pRegHomeSID, + BYTE * pRegForeignSID, + BYTE * pRegForeignNID, + BYTE * pForceRev0, + BYTE * pCustomSCP, + ULONG * pProtocol, + ULONG * pBroadcast, + ULONG * pApplication, + ULONG * pRoaming ); + +ULONG ParseGetACCOLC( + ULONG inLen, + const BYTE * pIn, + BYTE * pACCOLC ); + +ULONG PackSetACCOLC( + ULONG * pOutLen, + BYTE * pOut, + CHAR * pSPC, + BYTE accolc ); + +ULONG ParseGetPLMNMode( + ULONG inLen, + const BYTE * pIn, + ULONG * pMode ); + +ULONG PackGetPLMNName( + ULONG * pOutLen, + BYTE * pOut, + USHORT mcc, + USHORT mnc ); + +ULONG ParseGetPLMNName( + ULONG inLen, + const BYTE * pIn, + ULONG * pNamesSize, + BYTE * pNames ); + +// DMS + +ULONG ParseGetDeviceCapabilities( + ULONG inLen, + const BYTE * pIn, + ULONG * pMaxTXChannelRate, + ULONG * pMaxRXChannelRate, + ULONG * pDataServiceCapability, + ULONG * pSimCapability, + ULONG * pRadioIfacesSize, + BYTE * pRadioIfaces ); + +ULONG ParseGetManufacturer( + ULONG inLen, + const BYTE * pIn, + BYTE stringSize, + CHAR * pString ); + +ULONG ParseGetModelID( + ULONG inLen, + const BYTE * pIn, + BYTE stringSize, + CHAR * pString ); + +ULONG ParseGetFirmwareRevision( + ULONG inLen, + const BYTE * pIn, + BYTE stringSize, + CHAR * pString ); + +ULONG ParseGetFirmwareRevisions( + ULONG inLen, + const BYTE * pIn, + BYTE amssSize, + CHAR * pAMSSString, + BYTE bootSize, + CHAR * pBootString, + BYTE priSize, + CHAR * pPRIString ); + +ULONG ParseGetVoiceNumber( + ULONG inLen, + const BYTE * pIn, + BYTE voiceNumberSize, + CHAR * pVoiceNumber, + BYTE minSize, + CHAR * pMIN ); + +ULONG ParseGetIMSI( + ULONG inLen, + const BYTE * pIn, + BYTE stringSize, + CHAR * pString ); + +ULONG ParseGetSerialNumbers( + ULONG inLen, + const BYTE * pIn, + BYTE esnSize, + CHAR * pESNString, + BYTE imeiSize, + CHAR * pIMEIString, + BYTE meidSize, + CHAR * pMEIDString ); + +ULONG PackSetLock( + ULONG * pOutLen, + BYTE * pOut, + ULONG state, + CHAR * pCurrentPIN ); + +ULONG ParseQueryLock( + ULONG inLen, + const BYTE * pIn, + ULONG * pState ); + +ULONG PackChangeLockPIN( + ULONG * pOutLen, + BYTE * pOut, + CHAR * pCurrentPIN, + CHAR * pDesiredPIN ); + +ULONG ParseGetHardwareRevision( + ULONG inLen, + const BYTE * pIn, + BYTE stringSize, + CHAR * pString ); + +ULONG ParseGetPRLVersion( + ULONG inLen, + const BYTE * pIn, + WORD * pPRLVersion ); + +ULONG ParseGetERIFile( + ULONG inLen, + const BYTE * pIn, + ULONG * pFileSize, + BYTE * pFile ); + +ULONG PackActivateAutomatic( + ULONG * pOutLen, + BYTE * pOut, + CHAR * pActivationCode ); + +ULONG PackResetToFactoryDefaults( + ULONG * pOutLen, + BYTE * pOut, + CHAR * pSPC ); + +ULONG ParseGetActivationState( + ULONG inLen, + const BYTE * pIn, + ULONG * pActivationState ); + +ULONG PackSetPower( + ULONG * pOutLen, + BYTE * pOut, + ULONG powerMode ); + +ULONG ParseGetPower( + ULONG inLen, + const BYTE * pIn, + ULONG * pPowerMode ); + +ULONG ParseGetOfflineReason( + ULONG inLen, + const BYTE * pIn, + ULONG * pReasonMask, + ULONG * pbPlatform ); + +ULONG ParseGetNetworkTime( + ULONG inLen, + const BYTE * pIn, + ULONGLONG * pTimeCount, + ULONG * pTimeSource ); + +ULONG PackValidateSPC( + ULONG * pOutLen, + BYTE * pOut, + CHAR * pSPC ); + +// SMS + +ULONG PackDeleteSMS( + ULONG * pOutLen, + BYTE * pOut, + ULONG storageType, + ULONG * pMessageIndex, + ULONG * pMessageTag ); + +ULONG PackGetSMSList( + ULONG * pOutLen, + BYTE * pOut, + ULONG storageType, + ULONG * pRequestedTag ); + +ULONG ParseGetSMSList( + ULONG inLen, + const BYTE * pIn, + ULONG * pMessageListSize, + BYTE * pMessageList ); + +ULONG PackGetSMS( + ULONG * pOutLen, + BYTE * pOut, + ULONG storageType, + ULONG messageIndex ); + +ULONG ParseGetSMS( + ULONG inLen, + const BYTE * pIn, + ULONG * pMessageTag, + ULONG * pMessageFormat, + ULONG * pMessageSize, + BYTE * pMessage ); + +ULONG PackModifySMSStatus( + ULONG * pOutLen, + BYTE * pOut, + ULONG storageType, + ULONG messageIndex, + ULONG messageTag ); + +ULONG PackSaveSMS( + ULONG * pOutLen, + BYTE * pOut, + ULONG storageType, + ULONG messageFormat, + ULONG messageSize, + BYTE * pMessage ); + +ULONG ParseSaveSMS( + ULONG inLen, + const BYTE * pIn, + ULONG * pMessageIndex ); + +ULONG PackSendSMS( + ULONG * pOutLen, + BYTE * pOut, + ULONG messageFormat, + ULONG messageSize, + BYTE * pMessage ); + +ULONG ParseSendSMS( + ULONG inLen, + const BYTE * pIn, + ULONG * pMessageFailureCode ); + +ULONG ParseGetSMSCAddress( + ULONG inLen, + const BYTE * pIn, + BYTE addressSize, + CHAR * pSMSCAddress, + BYTE typeSize, + CHAR * pSMSCType ); + +ULONG PackSetSMSCAddress( + ULONG * pOutLen, + BYTE * pOut, + CHAR * pSMSCAddress, + CHAR * pSMSCType ); + +ULONG ParseGetSMSRoutes( + ULONG inLen, + const BYTE * pIn, + BYTE * pRouteSize, + BYTE * pRoutes ); + +ULONG PackSetSMSRoutes( + ULONG * pOutLen, + BYTE * pOut, + BYTE * pRouteSize, + BYTE * pRoutes ); + +// DMS UIM + +ULONG PackUIMUnblockControlKey( + ULONG * pOutLen, + BYTE * pOut, + ULONG id, + CHAR * pValue ); + +ULONG ParseUIMUnblockControlKey( + ULONG inLen, + const BYTE * pIn, + ULONG * pUnblockRetriesLeft ); + +ULONG PackUIMSetControlKeyProtection( + ULONG * pOutLen, + BYTE * pOut, + ULONG id, + ULONG status, + CHAR * pValue ); + +ULONG ParseUIMSetControlKeyProtection( + ULONG inLen, + const BYTE * pIn, + ULONG * pVerifyRetriesLeft ); + +ULONG PackUIMGetControlKeyBlockingStatus( + ULONG * pOutLen, + BYTE * pOut, + ULONG id ); + +ULONG ParseUIMGetControlKeyBlockingStatus( + ULONG inLen, + const BYTE * pIn, + ULONG * pStatus, + ULONG * pVerifyRetriesLeft, + ULONG * pUnblockRetriesLeft, + ULONG * pbBlocking ); + +ULONG ParseUIMGetControlKeyStatus( + ULONG inLen, + const BYTE * pIn, + ULONG * pStatus, + ULONG * pVerifyRetriesLeft, + ULONG * pUnblockRetriesLeft ); + +ULONG PackUIMGetControlKeyStatus( + ULONG * pOutLen, + BYTE * pOut, + ULONG id ); + +ULONG ParseUIMGetICCID( + ULONG inLen, + const BYTE * pIn, + BYTE stringSize, + CHAR * pString ); + +ULONG ParseUIMGetPINStatus( + ULONG inLen, + const BYTE * pIn, + ULONG id, + ULONG * pStatus, + ULONG * pVerifyRetriesLeft, + ULONG * pUnblockRetriesLeft ); + +ULONG PackUIMChangePIN( + ULONG * pOutLen, + BYTE * pOut, + ULONG id, + CHAR * pOldValue, + CHAR * pNewValue ); + +ULONG ParseUIMChangePIN( + ULONG inLen, + const BYTE * pIn, + ULONG * pVerifyRetriesLeft, + ULONG * pUnblockRetriesLeft ); + +ULONG PackUIMUnblockPIN( + ULONG * pOutLen, + BYTE * pOut, + ULONG id, + CHAR * pOldValue, + CHAR * pNewValue ); + +ULONG ParseUIMUnblockPIN( + ULONG inLen, + const BYTE * pIn, + ULONG * pVerifyRetriesLeft, + ULONG * pUnblockRetriesLeft ); + +ULONG PackUIMVerifyPIN( + ULONG * pOutLen, + BYTE * pOut, + ULONG id, + CHAR * pValue ); + +ULONG ParseUIMVerifyPIN( + ULONG inLen, + const BYTE * pIn, + ULONG * pVerifyRetriesLeft, + ULONG * pUnblockRetriesLeft ); + +ULONG PackUIMSetPINProtection( + ULONG * pOutLen, + BYTE * pOut, + ULONG id, + ULONG bEnable, + CHAR * pValue ); + +ULONG ParseUIMSetPINProtection( + ULONG inLen, + const BYTE * pIn, + ULONG * pVerifyRetriesLeft, + ULONG * pUnblockRetriesLeft ); + +// PDS + +ULONG ParseGetPDSState( + ULONG inLen, + const BYTE * pIn, + ULONG * pEnabled, + ULONG * pTracking ); + +ULONG PackSetPDSState( + ULONG * pOutLen, + BYTE * pOut, + ULONG enable ); + +ULONG PackPDSInjectTimeReference( + ULONG * pOutLen, + BYTE * pOut, + ULONGLONG systemTime, + USHORT systemDiscontinuities ); + +ULONG ParseGetPDSDefaults( + ULONG inLen, + const BYTE * pIn, + ULONG * pOperation, + BYTE * pTimeout, + ULONG * pInterval, + ULONG * pAccuracy ); + +ULONG PackSetPDSDefaults( + ULONG * pOutLen, + BYTE * pOut, + ULONG operation, + BYTE timeout, + ULONG interval, + ULONG accuracy ); + +ULONG ParseGetXTRAAutomaticDownload( + ULONG inLen, + const BYTE * pIn, + ULONG * pbEnabled, + USHORT * pInterval ); + +ULONG PackSetXTRAAutomaticDownload( + ULONG * pOutLen, + BYTE * pOut, + ULONG bEnabled, + USHORT interval ); + +ULONG ParseGetXTRANetwork( + ULONG inLen, + const BYTE * pIn, + ULONG * pPreference ); + +ULONG PackSetXTRANetwork( + ULONG * pOutLen, + BYTE * pOut, + ULONG preference ); + +ULONG ParseGetXTRAValidity( + ULONG inLen, + const BYTE * pIn, + USHORT * pGPSWeek, + USHORT * pGPSWeekOffset, + USHORT * pDuration ); + +ULONG ParseGetXTRADataState( + ULONG inLen, + const BYTE * pIn, + ULONG * pState ); + +ULONG PackSetXTRADataState( + ULONG * pOutLen, + BYTE * pOut, + ULONG state ); + +ULONG ParseGetXTRATimeState( + ULONG inLen, + const BYTE * pIn, + ULONG * pState ); + +ULONG PackSetXTRATimeState( + ULONG * pOutLen, + BYTE * pOut, + ULONG state ); + +ULONG ParseGetAGPSConfig( + ULONG inLen, + const BYTE * pIn, + ULONG * pServerAddress, + ULONG * pServerPort ); + +ULONG PackSetAGPSConfig( + ULONG * pOutLen, + BYTE * pOut, + ULONG serverAddress, + ULONG serverPort ); + +ULONG ParseGetServiceAutomaticTracking( + ULONG inLen, + const BYTE * pIn, + ULONG * pbAuto ); + +ULONG PackSetServiceAutomaticTracking( + ULONG * pOutLen, + BYTE * pOut, + ULONG bAuto ); + +ULONG ParseGetPortAutomaticTracking( + ULONG inLen, + const BYTE * pIn, + ULONG * pbAuto ); + +ULONG PackSetPortAutomaticTracking( + ULONG * pOutLen, + BYTE * pOut, + ULONG bAuto ); + +ULONG PackResetPDSData( + ULONG * pOutLen, + BYTE * pOut, + ULONG * pGPSDataMask, + ULONG * pCellDataMask ); + +// CAT + +ULONG PackCATSendTerminalResponse( + ULONG * pOutLen, + BYTE * pOut, + ULONG refID, + ULONG dataLen, + BYTE * pData ); + +ULONG PackCATSendEnvelopeCommand( + ULONG * pOutLen, + BYTE * pOut, + ULONG cmdID, + ULONG dataLen, + BYTE * pData ); + +// RMS + +ULONG ParseGetSMSWake( + ULONG inLen, + const BYTE * pIn, + ULONG * pbEnabled, + ULONG * pWakeMask ); + +ULONG PackSetSMSWake( + ULONG * pOutLen, + BYTE * pOut, + ULONG bEnable, + ULONG wakeMask ); + +// OMADM + +ULONG PackOMADMStartSession( + ULONG * pOutLen, + BYTE * pOut, + ULONG sessionType ); + +ULONG ParseOMADMGetSessionInfo( + ULONG inLen, + const BYTE * pIn, + ULONG * pSessionState, + ULONG * pSessionType, + ULONG * pFailureReason, + BYTE * pRetryCount, + WORD * pSessionPause, + WORD * pTimeRemaining ); + +ULONG ParseOMADMGetPendingNIA( + ULONG inLen, + const BYTE * pIn, + ULONG * pSessionType, + USHORT * pSessionID ); + +ULONG PackOMADMSendSelection( + ULONG * pOutLen, + BYTE * pOut, + ULONG selection, + USHORT sessionID ); + +ULONG ParseOMADMGetFeatureSettings( + ULONG inLen, + const BYTE * pIn, + ULONG * pbProvisioning, + ULONG * pbPRLUpdate ); + +ULONG PackOMADMSetProvisioningFeature( + ULONG * pOutLen, + BYTE * pOut, + ULONG bProvisioning ); + +ULONG PackOMADMSetPRLUpdateFeature( + ULONG * pOutLen, + BYTE * pOut, + ULONG bPRLUpdate ); + +// Voice + +ULONG PackOriginateUSSD( + ULONG * pOutLen, + BYTE * pOut, + BYTE * pInfo ); + +ULONG PackAnswerUSSD( + ULONG * pOutLen, + BYTE * pOut, + BYTE * pInfo ); + diff --git a/gobi-api/GobiAPI_2013-07-31-1347/Gobi3000Translation/Gobi3000TranslationCAT.cpp b/gobi-api/GobiAPI_2013-07-31-1347/Gobi3000Translation/Gobi3000TranslationCAT.cpp new file mode 100644 index 0000000..e20e19d --- /dev/null +++ b/gobi-api/GobiAPI_2013-07-31-1347/Gobi3000Translation/Gobi3000TranslationCAT.cpp @@ -0,0 +1,176 @@ +/*=========================================================================== +FILE: + Gobi3000TranslationCAT.cpp + +DESCRIPTION: + QUALCOMM Translation for Gobi 3000 (Card Application Toolkit Service) + +Copyright (c) 2013, The Linux Foundation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +==========================================================================*/ + +//--------------------------------------------------------------------------- +// Include Files +//--------------------------------------------------------------------------- +#include "Gobi3000Translation.h" + +/*=========================================================================== +METHOD: + PackCATSendTerminalResponse + +DESCRIPTION: + This function sends the terminal response to the device + +PARAMETERS: + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + refID [ I ] - UIM reference ID (from CAT event) + dataLen [ I ] - Terminal response data length + pData [ I ] - Terminal response data + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PackCATSendTerminalResponse( + ULONG * pOutLen, + BYTE * pOut, + ULONG refID, + ULONG dataLen, + BYTE * pData ) +{ + // Validate arguments + if (pOut == 0 || pData == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Add arguments + + // Check size + WORD tlvx01Sz = sizeof( sCATSendTerminalResponseRequest_TerminalResponseType ) + + (WORD)dataLen; + if (*pOutLen < sizeof( sQMIRawContentHeader ) + tlvx01Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + sQMIRawContentHeader * pHeader = (sQMIRawContentHeader*)pOut; + pHeader->mTypeID = 0x01; + pHeader->mLength = tlvx01Sz; + + ULONG offset = sizeof( sQMIRawContentHeader ); + + sCATSendTerminalResponseRequest_TerminalResponseType * pTLVx01; + pTLVx01 = (sCATSendTerminalResponseRequest_TerminalResponseType*)(pOut + offset); + memset( pTLVx01, 0, tlvx01Sz ); + + // Set the value + pTLVx01->mReferenceID = refID; + pTLVx01->mTerminalResponseLength = (UINT16)dataLen; + + offset += sizeof( sCATSendTerminalResponseRequest_TerminalResponseType ); + + if (dataLen > 0) + { + memcpy( pOut + offset, pData, dataLen ); + offset += dataLen; + } + + *pOutLen = offset; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + PackCATSendEnvelopeCommand + +DESCRIPTION: + This function sends the envelope command to the device + +PARAMETERS: + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + cmdID [ I ] - Envelope command ID + dataLen [ I ] - Envelope command data length + pData [ I ] - Envelope command data + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PackCATSendEnvelopeCommand( + ULONG * pOutLen, + BYTE * pOut, + ULONG cmdID, + ULONG dataLen, + BYTE * pData ) +{ + // Validate arguments + if (pOut == 0 || dataLen == 0 || pData == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Add arguments + + // Check size + WORD tlvx01Sz = sizeof( sCATEnvelopeCommandRequest_EnvelopeCommand ) + + (WORD)dataLen; + if (*pOutLen < sizeof( sQMIRawContentHeader ) + tlvx01Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + sQMIRawContentHeader * pHeader = (sQMIRawContentHeader*)pOut; + pHeader->mTypeID = 0x01; + pHeader->mLength = tlvx01Sz; + + ULONG offset = sizeof( sQMIRawContentHeader ); + + sCATEnvelopeCommandRequest_EnvelopeCommand * pTLVx01; + pTLVx01 = (sCATEnvelopeCommandRequest_EnvelopeCommand*)(pOut + offset); + memset( pTLVx01, 0, tlvx01Sz ); + + // Set the value + pTLVx01->mEnvelopeCommandType = (eQMICATEnvelopeCommandType)cmdID; + pTLVx01->mEnvelopeLength = (UINT16)dataLen; + + offset += sizeof( sCATEnvelopeCommandRequest_EnvelopeCommand ); + + if (dataLen > 0) + { + memcpy( pOut + offset, pData, dataLen ); + offset += dataLen; + } + + *pOutLen = offset; + + return eGOBI_ERR_NONE; +} diff --git a/gobi-api/GobiAPI_2013-07-31-1347/Gobi3000Translation/Gobi3000TranslationDMS.cpp b/gobi-api/GobiAPI_2013-07-31-1347/Gobi3000Translation/Gobi3000TranslationDMS.cpp new file mode 100644 index 0000000..a41d9cd --- /dev/null +++ b/gobi-api/GobiAPI_2013-07-31-1347/Gobi3000Translation/Gobi3000TranslationDMS.cpp @@ -0,0 +1,1482 @@ +/*=========================================================================== +FILE: + Gobi3000TranslationDMS.cpp + +DESCRIPTION: + QUALCOMM Translation for Gobi 3000 (DMS Service) + +Copyright (c) 2013, The Linux Foundation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +==========================================================================*/ + +//--------------------------------------------------------------------------- +// Include Files +//--------------------------------------------------------------------------- +#include "Gobi3000Translation.h" + +/*=========================================================================== +METHOD: + ParseGetDeviceCapabilities + +DESCRIPTION: + This function gets device capabilities + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pMaxTXChannelRate [ O ] - Maximum transmission rate (bps) + pMaxRXChannelRate [ O ] - Maximum reception rate (bps) + pDataServiceCapability [ O ] - CS/PS data service capability + pSimCapability [ O ] - Device SIM support + pRadioIfacesSize [I/O] - Upon input the maximum number of elements + that the radio interfaces can contain. + Upon successful output the actual number + of elements in the radio interface array + pRadioIfaces [ O ] - The radio interface array + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseGetDeviceCapabilities( + ULONG inLen, + const BYTE * pIn, + ULONG * pMaxTXChannelRate, + ULONG * pMaxRXChannelRate, + ULONG * pDataServiceCapability, + ULONG * pSimCapability, + ULONG * pRadioIfacesSize, + BYTE * pRadioIfaces ) +{ + // Validate arguments + if (pIn == 0 + || pMaxTXChannelRate == 0 + || pMaxRXChannelRate == 0 + || pDataServiceCapability == 0 + || pSimCapability == 0 + || pRadioIfacesSize == 0 + || *pRadioIfacesSize == 0 + || pRadioIfaces == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + ULONG maxRadioIfaces = (ULONG)*pRadioIfacesSize; + + // Assume failure + *pRadioIfacesSize = 0; + + const sDMSGetDeviceCapabilitiesResponse_Capabilities * pTLVx01; + ULONG structSzx01 = sizeof( sDMSGetDeviceCapabilitiesResponse_Capabilities ); + ULONG outLenx01; + ULONG rc = GetTLV( inLen, pIn, 0x01, &outLenx01, (const BYTE **)&pTLVx01 ); + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + if (outLenx01 < structSzx01) + { + return eGOBI_ERR_BUFFER_SZ; + } + + // Populate the variables + *pMaxTXChannelRate = pTLVx01->mMaxTXRatebps; + *pMaxRXChannelRate = pTLVx01->mMaxRXRatebps; + *pDataServiceCapability = pTLVx01->mDataServiceCapability; + + // SIM capability should be treated as a boolean, even though it's not + *pSimCapability = (pTLVx01->mSIMSupported == 0 ? 0 : 1); + + ULONG activeRadioIfaces = pTLVx01->mRadioInterfaceCount; + if (activeRadioIfaces > maxRadioIfaces) + { + activeRadioIfaces = maxRadioIfaces; + } + + const eQMIDMSRadioInterfaces * pInRadioInterfaces; + + // Verify there is room for the array in the TLV + if (outLenx01 < structSzx01 + + sizeof( eQMIDMSRadioInterfaces ) * activeRadioIfaces) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + // Align to the first array element + pInRadioInterfaces = (const eQMIDMSRadioInterfaces *) + ((const BYTE *)pTLVx01 + structSzx01); + + ULONG * pOutRadioIfaces = (ULONG *)pRadioIfaces; + for (ULONG r = 0; r < activeRadioIfaces; r++) + { + *pOutRadioIfaces = *pInRadioInterfaces; + pOutRadioIfaces++; + pInRadioInterfaces++; + } + + *pRadioIfacesSize = activeRadioIfaces; + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + ParseGetManufacturer + +DESCRIPTION: + This function returns the device manufacturer name + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + stringSize [ I ] - The maximum number of characters (including NULL + terminator) that the string array can contain + pString [ O ] - NULL terminated string + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseGetManufacturer( + ULONG inLen, + const BYTE * pIn, + BYTE stringSize, + CHAR * pString ) +{ + // Validate arguments + if (pIn == 0 || stringSize == 0 || pString == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Assume failure + *pString = 0; + + // Find the manufacturer + // sDMSGetDeviceManfacturerResponse_Manfacturer only contains this + const CHAR * pTLVx01; + ULONG outLenx01; + ULONG rc = GetTLV( inLen, pIn, 0x01, &outLenx01, (const BYTE **)&pTLVx01 ); + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + // Space to perform the copy? + if (stringSize < outLenx01 + 1) + { + return eGOBI_ERR_BUFFER_SZ; + } + + memcpy( pString, pTLVx01, outLenx01 ); + pString[outLenx01] = 0; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + ParseGetModelID + +DESCRIPTION: + This function returns the device model ID + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + stringSize [ I ] - The maximum number of characters (including NULL + terminator) that the string array can contain + pString [ O ] - NULL terminated string + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseGetModelID( + ULONG inLen, + const BYTE * pIn, + BYTE stringSize, + CHAR * pString ) +{ + // Validate arguments + if (pIn == 0 || stringSize == 0 || pString == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Assume failure + *pString = 0; + + // Find the model + // sDMSGetDeviceModelResponse_Model only contains the model + const CHAR * pTLVx01; + ULONG outLenx01; + ULONG rc = GetTLV( inLen, pIn, 0x01, &outLenx01, (const BYTE **)&pTLVx01 ); + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + // Space to perform the copy? + if (stringSize < outLenx01 + 1) + { + return eGOBI_ERR_BUFFER_SZ; + } + + memcpy( pString, pTLVx01, outLenx01 ); + pString[outLenx01] = 0; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + ParseGetFirmwareRevision + +DESCRIPTION: + This function returns the device firmware revision + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + stringSize [ I ] - The maximum number of characters (including NULL + terminator) that the string array can contain + pString [ O ] - NULL terminated string + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseGetFirmwareRevision( + ULONG inLen, + const BYTE * pIn, + BYTE stringSize, + CHAR * pString ) +{ + // Validate arguments + if (pIn == 0 || stringSize == 0 || pString == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Assume failure + *pString = 0; + + // Find the PRI revision + // sDMSGetDeviceRevisionResponse_UQCNRevision only contains this + const CHAR * pTLVx11; + ULONG outLenx11; + ULONG rc = GetTLV( inLen, pIn, 0x11, &outLenx11, (const BYTE **)&pTLVx11 ); + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + // Space to perform the copy? + if (stringSize < outLenx11 + 1) + { + return eGOBI_ERR_BUFFER_SZ; + } + + memcpy( pString, pTLVx11, outLenx11 ); + pString[outLenx11] = 0; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + ParseGetFirmwareRevisions + +DESCRIPTION: + This function returns the device firmware (AMSS, boot, and PRI) + revisions + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + amssSize [ I ] - The maximum number of characters (including NULL + terminator) that the AMSS string array can contain + pAMSSString [ O ] - NULL terminated AMSS revision string + bootSize [ I ] - The maximum number of characters (including NULL + terminator) that the boot string array can contain + pBootString [ O ] - NULL terminated boot code revision string + priSize [ I ] - The maximum number of characters (including NULL + terminator) that the PRI string array can contain + pPRIString [ O ] - NULL terminated PRI revision string + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseGetFirmwareRevisions( + ULONG inLen, + const BYTE * pIn, + BYTE amssSize, + CHAR * pAMSSString, + BYTE bootSize, + CHAR * pBootString, + BYTE priSize, + CHAR * pPRIString ) +{ + // Validate arguments + if (pIn == 0 + || amssSize == 0 || pAMSSString == 0 + || bootSize == 0 || pBootString == 0 + || priSize == 0 || pPRIString == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Assume failure + *pAMSSString = 0; + *pBootString = 0; + *pPRIString = 0; + + // Find the AMSS version + // sDMSGetDeviceRevisionResponse_Revision only contains this + const CHAR * pTLVx01; + ULONG outLenx01; + ULONG rc = GetTLV( inLen, pIn, 0x01, &outLenx01, (const BYTE **)&pTLVx01 ); + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + // Space to perform the copy? + if (amssSize < outLenx01 + 1) + { + return eGOBI_ERR_BUFFER_SZ; + } + + memcpy( pAMSSString, pTLVx01, outLenx01 ); + pAMSSString[outLenx01] = 0; + + // Find the Boot version + // sDMSGetDeviceRevisionResponse_BootCodeRevision only contains this + const CHAR * pTLVx10; + ULONG outLenx10; + rc = GetTLV( inLen, pIn, 0x10, &outLenx10, (const BYTE **)&pTLVx10 ); + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + // Space to perform the copy? + if (bootSize < outLenx10 + 1) + { + return eGOBI_ERR_BUFFER_SZ; + } + + memcpy( pBootString, pTLVx10, outLenx10 ); + pBootString[outLenx10] = 0; + + // The PRI version is returned by ParseGetFirmwareRevision() + rc = ParseGetFirmwareRevision( inLen, pIn, priSize, pPRIString ); + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + ParseGetVoiceNumber + +DESCRIPTION: + This function returns the voice number in use by the device + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + voiceNumberSize [ I ] - The maximum number of characters (including NULL + terminator) that the voice number array can + contain + pVoiceNumber [ O ] - Voice number (MDN or ISDN) string + minSize [ I ] - The maximum number of characters (including NULL + terminator) that the MIN array can contain + pMIN [ O ] - MIN string (empty string returned when MIN is + not supported/programmed) + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseGetVoiceNumber( + ULONG inLen, + const BYTE * pIn, + BYTE voiceNumberSize, + CHAR * pVoiceNumber, + BYTE minSize, + CHAR * pMIN ) +{ + // Validate arguments + if (pIn == 0 + || voiceNumberSize == 0 || pVoiceNumber == 0 + || minSize == 0 || pMIN == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Assume failure + *pVoiceNumber = 0; + *pMIN = 0; + + // Find the Voice number + // sDMSGetDeviceVoiceNumberResponse_VoiceNumber only contains this + const CHAR * pTLVx01; + ULONG outLenx01; + ULONG rc = GetTLV( inLen, pIn, 0x01, &outLenx01, (const BYTE **)&pTLVx01 ); + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + // Space to perform the copy? + if (voiceNumberSize < outLenx01 + 1) + { + return eGOBI_ERR_BUFFER_SZ; + } + + memcpy( pVoiceNumber, pTLVx01, outLenx01 ); + pVoiceNumber[outLenx01] = 0; + + // Find the Mobile ID (optional) + // sDMSGetDeviceVoiceNumberResponse_MobileIDNumber only contains this + const CHAR * pTLVx10; + ULONG outLenx10; + rc = GetTLV( inLen, pIn, 0x10, &outLenx10, (const BYTE **)&pTLVx10 ); + if (rc == eGOBI_ERR_NONE) + { + // Space to perform the copy? + if (minSize < outLenx10 + 1) + { + return eGOBI_ERR_BUFFER_SZ; + } + + memcpy( pMIN, pTLVx10, outLenx10 ); + pMIN[outLenx10] = 0; + } + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + ParseGetIMSI + +DESCRIPTION: + This function returns the device IMSI + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + stringSize [ I ] - The maximum number of characters (including NULL + terminator) that the string array can contain + pString [ O ] - NULL terminated string + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseGetIMSI( + ULONG inLen, + const BYTE * pIn, + BYTE stringSize, + CHAR * pString ) +{ + // Validate arguments + if (pIn == 0 || stringSize == 0 || pString == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Assume failure + *pString = 0; + + // Find the IMSI + // sDMSGetDeviceVoiceNumberResponse_IMSI only contains this + const CHAR * pTLVx01; + ULONG outLenx01; + ULONG rc = GetTLV( inLen, pIn, 0x01, &outLenx01, (const BYTE **)&pTLVx01 ); + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + // Space to perform the copy? + if (stringSize < outLenx01 + 1) + { + return eGOBI_ERR_BUFFER_SZ; + } + + memcpy( pString, pTLVx01, outLenx01 ); + pString[outLenx01] = 0; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + ParseGetSerialNumbers + +DESCRIPTION: + This command returns all serial numbers assigned to the device + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + esnSize [ I ] - The maximum number of characters (including NULL + terminator) that the ESN array can contain + pESNString [ O ] - ESN string (empty string returned when ESN is + not supported/programmed) + imeiSize [ I ] - The maximum number of characters (including NULL + terminator) that the IMEI array can contain + pIMEIString [ O ] - IMEI string (empty string returned when IMEI is + not supported/programmed) + meidSize [ I ] - The maximum number of characters (including NULL + terminator) that the MEID array can contain + pMEIDString [ O ] - MEID string (empty string returned when MEID is + not supported/programmed) + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseGetSerialNumbers( + ULONG inLen, + const BYTE * pIn, + BYTE esnSize, + CHAR * pESNString, + BYTE imeiSize, + CHAR * pIMEIString, + BYTE meidSize, + CHAR * pMEIDString ) +{ + // Validate arguments + if (pIn == 0 + || esnSize == 0 || pESNString == 0 + || imeiSize == 0 || pIMEIString == 0 + || meidSize == 0 || pMEIDString == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Assume failure + *pESNString = 0; + *pIMEIString = 0; + *pMEIDString = 0; + + // Find the ESN + // sDMSGetDeviceSerialNumbersResponse_ESN only contains this + const CHAR * pTLVx10; + ULONG outLenx10; + ULONG rc = GetTLV( inLen, pIn, 0x10, &outLenx10, (const BYTE **)&pTLVx10 ); + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + // Space to perform the copy? + if (esnSize < outLenx10 + 1) + { + return eGOBI_ERR_BUFFER_SZ; + } + + memcpy( pESNString, pTLVx10, outLenx10 ); + pESNString[outLenx10] = 0; + + // Find the IMEI + // sDMSGetDeviceSerialNumbersResponse_IMEI only contains this + const CHAR * pTLVx11; + ULONG outLenx11; + rc = GetTLV( inLen, pIn, 0x11, &outLenx11, (const BYTE **)&pTLVx11 ); + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + // Space to perform the copy? + if (imeiSize < outLenx11 + 1) + { + return eGOBI_ERR_BUFFER_SZ; + } + + memcpy( pIMEIString, pTLVx11, outLenx11 ); + pIMEIString[outLenx11] = 0; + + // Find the MEID + // sDMSGetDeviceSerialNumbersResponse_MEID only contains this + const CHAR * pTLVx12; + ULONG outLenx12; + rc = GetTLV( inLen, pIn, 0x12, &outLenx12, (const BYTE **)&pTLVx12 ); + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + // Space to perform the copy? + if (meidSize < outLenx12 + 1) + { + return eGOBI_ERR_BUFFER_SZ; + } + + memcpy( pMEIDString, pTLVx12, outLenx12 ); + pMEIDString[outLenx12] = 0; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + PackSetLock + +DESCRIPTION: + This function sets the user lock state maintained by the device + +PARAMETERS: + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + state [ I ] - Desired lock state + pCurrentPIN [ I ] - Current four digit PIN string + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PackSetLock( + ULONG * pOutLen, + BYTE * pOut, + ULONG state, + CHAR * pCurrentPIN ) +{ + // Validate arguments + if (pOut == 0 || pCurrentPIN == 0 || pCurrentPIN[0] == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + std::string thePIN( pCurrentPIN ); + if (thePIN.size() > 4) + { + return eGOBI_ERR_INVALID_ARG; + } + + if (thePIN.find_first_not_of( "0123456789" ) != std::string::npos ) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Check size + WORD tlvx01Sz = sizeof( sDMSSetLockStateRequest_LockState ); + if (*pOutLen < sizeof( sQMIRawContentHeader ) + tlvx01Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + sQMIRawContentHeader * pHeader = (sQMIRawContentHeader*)(pOut); + pHeader->mTypeID = 0x01; + pHeader->mLength = tlvx01Sz; + + ULONG offset = sizeof( sQMIRawContentHeader ); + + sDMSSetLockStateRequest_LockState * pTLVx01; + pTLVx01 = (sDMSSetLockStateRequest_LockState*)(pOut + offset); + memset( pTLVx01, 0, tlvx01Sz ); + + // Set the values + pTLVx01->mLockState = (eQMIDMSLockStates)state; + memcpy( &pTLVx01->mLockCode[0], thePIN.c_str(), thePIN.size() ); + + offset += tlvx01Sz; + + *pOutLen = offset; + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + ParseQueryLock + +DESCRIPTION: + This function sets the user lock state maintained by the device + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pState [ O ] - Current lock state + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseQueryLock( + ULONG inLen, + const BYTE * pIn, + ULONG * pState ) +{ + // Validate arguments + if (pIn == 0 || pState == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Find the state + const sDMSGetLockStateResponse_LockState * pTLVx01; + ULONG outLenx01; + ULONG rc = GetTLV( inLen, pIn, 0x01, &outLenx01, (const BYTE **)&pTLVx01 ); + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + if (outLenx01 < sizeof( sDMSGetLockStateResponse_LockState )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + *pState = pTLVx01->mLockState; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + PackChangeLockPIN + +DESCRIPTION: + This command sets the user lock code maintained by the device + +PARAMETERS: + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + pCurrentPIN [ I ] - Current four digit PIN string + pDesiredPIN [ I ] - New four digit PIN string + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PackChangeLockPIN( + ULONG * pOutLen, + BYTE * pOut, + CHAR * pCurrentPIN, + CHAR * pDesiredPIN ) +{ + // Validate arguments + if (pOut == 0 + || pCurrentPIN == 0 || pCurrentPIN[0] == 0 + || pDesiredPIN == 0 || pDesiredPIN[0] == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + std::string theCurPIN( pCurrentPIN ); + if (theCurPIN.size() > 4) + { + return eGOBI_ERR_INVALID_ARG; + } + + if (theCurPIN.find_first_not_of( "0123456789" ) != std::string::npos ) + { + return eGOBI_ERR_INVALID_ARG; + } + + std::string theNewPIN( pDesiredPIN ); + if (theNewPIN.size() > 4) + { + return eGOBI_ERR_INVALID_ARG; + } + + if (theNewPIN.find_first_not_of( "0123456789" ) != std::string::npos ) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Check size + WORD tlvx01Sz = sizeof( sDMSSetLockCodeRequest_LockCode ); + if (*pOutLen < sizeof( sQMIRawContentHeader ) + tlvx01Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + sQMIRawContentHeader * pHeader = (sQMIRawContentHeader*)(pOut); + pHeader->mTypeID = 0x01; + pHeader->mLength = tlvx01Sz; + + ULONG offset = sizeof( sQMIRawContentHeader ); + + sDMSSetLockCodeRequest_LockCode * pTLVx01; + pTLVx01 = (sDMSSetLockCodeRequest_LockCode*)(pOut + offset); + memset( pTLVx01, 0, tlvx01Sz ); + + // Set the values + memcpy( &pTLVx01->mCurrentLockCode[0], + theCurPIN.c_str(), + theCurPIN.size() ); + + memcpy( &pTLVx01->mNewLockCode[0], + theNewPIN.c_str(), + theNewPIN.size() ); + + offset += tlvx01Sz; + + *pOutLen = offset; + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + ParseGetHardwareRevision + +DESCRIPTION: + This function returns the device hardware revision + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + stringSize [ I ] - The maximum number of characters (including NULL + terminator) that the string array can contain + pString [ O ] - NULL terminated string + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseGetHardwareRevision( + ULONG inLen, + const BYTE * pIn, + BYTE stringSize, + CHAR * pString ) +{ + // Validate arguments + if (pIn == 0 || pString == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Find the hardware revision + // sDMSGetHardwareRevisionResponse_HardwareRevision only contains this + const CHAR * pTLVx01; + ULONG outLenx01; + ULONG rc = GetTLV( inLen, pIn, 0x01, &outLenx01, (const BYTE **)&pTLVx01 ); + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + // Space to perform the copy? + if (stringSize < outLenx01 + 1) + { + return eGOBI_ERR_BUFFER_SZ; + } + + memcpy( pString, pTLVx01, outLenx01 ); + pString[outLenx01] = 0; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + ParseGetPRLVersion + +DESCRIPTION: + This function returns the version of the active Preferred Roaming List + (PRL) in use by the device + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pPRLVersion [ O ] - The PRL version number + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseGetPRLVersion( + ULONG inLen, + const BYTE * pIn, + WORD * pPRLVersion ) +{ + // Validate arguments + if (pIn == 0 || pPRLVersion == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Find the state + const sDMSGetPRLVersionResponse_PRLVersion * pTLVx01; + ULONG outLenx01; + ULONG rc = GetTLV( inLen, pIn, 0x01, &outLenx01, (const BYTE **)&pTLVx01 ); + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + if (outLenx01 < sizeof( sDMSGetPRLVersionResponse_PRLVersion )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + *pPRLVersion = pTLVx01->mPRLVersion; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + ParseGetERIFile + +DESCRIPTION: + This command returns the ERI file that is stored in EFS on the device + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pFileSize [I/O] - Upon input the maximum number of bytes that the file + contents array can contain. Upon successful output + the actual number of bytes written to the file contents + array + pFile [ O ] - The file contents + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseGetERIFile( + ULONG inLen, + const BYTE * pIn, + ULONG * pFileSize, + BYTE * pFile ) +{ + // Validate arguments + if (pIn == 0 || pFileSize == 0 || *pFileSize == 0 || pFile == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Assume failure + ULONG maxFileSize = *pFileSize; + *pFileSize = 0; + + // Find the state + const sDMSReadERIDataResponse_UserData * pTLVx01; + ULONG outLenx01; + ULONG rc = GetTLV( inLen, pIn, 0x01, &outLenx01, (const BYTE **)&pTLVx01 ); + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + if (outLenx01 < sizeof( sDMSReadERIDataResponse_UserData )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + ULONG fileSz = pTLVx01->mDataLength; + const BYTE * pInFile; + + // Verify there is room for the array in the TLV + if (outLenx01 < sizeof( sDMSReadERIDataResponse_UserData ) + + sizeof( BYTE ) * fileSz) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + // Space to copy into? + if (fileSz > maxFileSize) + { + return eGOBI_ERR_BUFFER_SZ; + } + + // Align to the first array element + pInFile = (const BYTE *)pTLVx01 + + sizeof( sDMSReadERIDataResponse_UserData ); + + // Perform the copy + memcpy( pFile, pInFile, fileSz ); + *pFileSize = fileSz; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + PackActivateAutomatic + +DESCRIPTION: + This function requests the device to perform automatic service activation + +PARAMETERS: + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + pActivationCode [ I ] - Activation code (maximum string length of 12) + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PackActivateAutomatic( + ULONG * pOutLen, + BYTE * pOut, + CHAR * pActivationCode ) +{ + // Validate arguments + if (pOut == 0 || pActivationCode == 0 || pActivationCode[0] == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + std::string ac( pActivationCode ); + if (ac.size() > 12) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Check size + WORD tlvx01Sz = sizeof( sDMSActivateAutomaticRequest_ActivationCode ) + + (WORD)ac.size(); + if (*pOutLen < sizeof( sQMIRawContentHeader ) + tlvx01Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + sQMIRawContentHeader * pHeader = (sQMIRawContentHeader*)(pOut); + pHeader->mTypeID = 0x01; + pHeader->mLength = tlvx01Sz; + + ULONG offset = sizeof( sQMIRawContentHeader ); + + sDMSActivateAutomaticRequest_ActivationCode * pTLVx01; + pTLVx01 = (sDMSActivateAutomaticRequest_ActivationCode*)(pOut + offset); + memset( pTLVx01, 0, tlvx01Sz ); + + // Set the values + pTLVx01->mCodeLength = (UINT8)ac.size(); + + memcpy( (BYTE *)pTLVx01 + + sizeof( sDMSActivateAutomaticRequest_ActivationCode ), + ac.c_str(), + ac.size() ); + + offset += tlvx01Sz; + + *pOutLen = offset; + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + PackResetToFactoryDefaults + +DESCRIPTION: + This function requests the device reset configuration to factory defaults + + CHANGES: + * The client must manually reset the device after this request completes + using DMSSetOperatingMode() + +PARAMETERS: + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied to pOut + pOut [ O ] - Output buffer + pSPC [ I ] - NULL terminated string representing the six digit + service programming code + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PackResetToFactoryDefaults( + ULONG * pOutLen, + BYTE * pOut, + CHAR * pSPC ) +{ + // Validate arguments + if (pOut == 0 || pSPC == 0 || pSPC[0] == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + std::string spc( pSPC ); + if (spc.size() > 6) + { + return eGOBI_ERR_INVALID_ARG; + } + + if (spc.find_first_not_of( "0123456789" ) != std::string::npos ) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Check size + WORD tlvx01Sz = sizeof( sDMSResetFactoryDefaultsRequest_SPC ); + if (*pOutLen < sizeof( sQMIRawContentHeader ) + tlvx01Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + sQMIRawContentHeader * pHeader = (sQMIRawContentHeader*)(pOut); + pHeader->mTypeID = 0x01; + pHeader->mLength = tlvx01Sz; + + ULONG offset = sizeof( sQMIRawContentHeader ); + + // The SPC + sDMSResetFactoryDefaultsRequest_SPC * pTLVx01; + pTLVx01 = (sDMSResetFactoryDefaultsRequest_SPC*)(pOut + offset); + memset( pTLVx01, 0, tlvx01Sz ); + + // Set the values + memcpy( &pTLVx01->mSPC[0], spc.c_str(), spc.size() ); + + offset += tlvx01Sz; + *pOutLen = offset; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + ParseGetActivationState + +DESCRIPTION: + This function returns the device activation state + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pActivationState [ O ] - Service activation state + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseGetActivationState( + ULONG inLen, + const BYTE * pIn, + ULONG * pActivationState ) +{ + // Validate arguments + if (pIn == 0 || pActivationState == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Find the state + const sDMSGetActivationStateResponse_ActivationState * pTLVx01; + ULONG outLenx01; + ULONG rc = GetTLV( inLen, pIn, 0x01, &outLenx01, (const BYTE **)&pTLVx01 ); + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + if (outLenx01 < sizeof( sDMSGetActivationStateResponse_ActivationState )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + *pActivationState = pTLVx01->mActivationState; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + PackSetPower + +DESCRIPTION: + This function sets the operating mode of the device + +PARAMETERS: + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied to pOut + pOut [ O ] - Output buffer + powerMode [ I ] - Selected operating mode + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PackSetPower( + ULONG * pOutLen, + BYTE * pOut, + ULONG powerMode ) +{ + // Validate arguments + if (pOut == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Check size + WORD tlvx01Sz = sizeof( sDMSSetOperatingModeRequest_OperatingMode ); + if (*pOutLen < sizeof( sQMIRawContentHeader ) + tlvx01Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + sQMIRawContentHeader * pHeader = (sQMIRawContentHeader*)(pOut); + pHeader->mTypeID = 0x01; + pHeader->mLength = tlvx01Sz; + + ULONG offset = sizeof( sQMIRawContentHeader ); + + // Set the mode + sDMSSetOperatingModeRequest_OperatingMode * pTLVx01; + pTLVx01 = (sDMSSetOperatingModeRequest_OperatingMode*)(pOut + offset); + memset( pTLVx01, 0, tlvx01Sz ); + + // Set the values + pTLVx01->mOperatingMode = (eQMIDMSOperatingModes)powerMode; + + offset += tlvx01Sz; + *pOutLen = offset; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + ParseGetPower + +DESCRIPTION: + This function returns the operating mode of the device + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pPowerMode [ O ] - Current operating mode + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseGetPower( + ULONG inLen, + const BYTE * pIn, + ULONG * pPowerMode ) +{ + // Validate arguments + if (pIn == 0 || pPowerMode == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Assume failure + *pPowerMode = 0xffffffff; + + // Find the mode + const sDMSGetOperatingModeResponse_OperatingMode * pTLVx01; + ULONG outLenx01; + ULONG rc = GetTLV( inLen, pIn, 0x01, &outLenx01, (const BYTE **)&pTLVx01 ); + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + if (outLenx01 < sizeof( sDMSGetOperatingModeResponse_OperatingMode )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + *pPowerMode = pTLVx01->mOperatingMode; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + ParseGetOfflineReason + +DESCRIPTION: + This function returns the reason why the operating mode of the device + is currently offline + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pReasonMask [ O ] - Bitmask of offline reasons + pbPlatform [ O ] - Offline due to being platform retricted? + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseGetOfflineReason( + ULONG inLen, + const BYTE * pIn, + ULONG * pReasonMask, + ULONG * pbPlatform ) +{ + // Validate arguments + if (pIn == 0 || pReasonMask == 0 || pbPlatform == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Assume failure + *pReasonMask = 0; + *pbPlatform = 0; + + // Find the reason mask (optional) + const sDMSGetOperatingModeResponse_OfflineReason * pTLVx10; + ULONG outLenx10; + ULONG rc = GetTLV( inLen, pIn, 0x10, &outLenx10, (const BYTE **)&pTLVx10 ); + if (rc == eGOBI_ERR_NONE) + { + if (outLenx10 < sizeof( sDMSGetOperatingModeResponse_OfflineReason )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + // Copy the bitmask to pReasonMask + *pReasonMask = *(WORD*)pTLVx10; + } + + // Find the platform restriction (optional) + const sDMSGetOperatingModeResponse_PlatformRestricted * pTLVx11; + ULONG outLenx11; + rc = GetTLV( inLen, pIn, 0x11, &outLenx11, (const BYTE **)&pTLVx11 ); + if (rc == eGOBI_ERR_NONE) + { + if (outLenx11 < sizeof( sDMSGetOperatingModeResponse_PlatformRestricted )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + // Copy the value + *pbPlatform = pTLVx11->mPlatformRestricted; + } + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + ParseGetNetworkTime + +DESCRIPTION: + This function returns the current time of the device + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pTimeCount [ O ] - Count of 1.25ms that have elapsed from the start + of GPS time (Jan 6, 1980) + pTimeSource [ O ] - Source of the timestamp + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseGetNetworkTime( + ULONG inLen, + const BYTE * pIn, + ULONGLONG * pTimeCount, + ULONG * pTimeSource ) +{ + // Validate arguments + if (pIn == 0 || pTimeCount == 0 || pTimeSource == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Find the reason mask + const sDMSGetTimestampResponse_Timestamp * pTLVx01; + ULONG outLenx01; + ULONG rc = GetTLV( inLen, pIn, 0x01, &outLenx01, (const BYTE **)&pTLVx01 ); + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + if (outLenx01 < sizeof( sDMSGetTimestampResponse_Timestamp )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + // Get the values + *pTimeCount = pTLVx01->mTimestamp; + // mSource is of type eQMIDMSTimestampSources + *pTimeSource = pTLVx01->mSource; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + PackValidateSPC + +DESCRIPTION: + This function validates the service programming code + +PARAMETERS: + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied to pOut + pOut [ O ] - Output buffer + pSPC [ I ] - Six digit service programming code + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PackValidateSPC( + ULONG * pOutLen, + BYTE * pOut, + CHAR * pSPC ) +{ + // Validate arguments + if (pOut == 0 || pSPC == 0 || pSPC[0] == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + std::string spc( pSPC ); + if (spc.size() > 6) + { + return eGOBI_ERR_INVALID_ARG; + } + + if (spc.find_first_not_of( "0123456789" ) != std::string::npos ) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Check size + WORD tlvx01Sz = sizeof( sDMSValidateSPCRequest_SPC ); + if (*pOutLen < sizeof( sQMIRawContentHeader ) + tlvx01Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + sQMIRawContentHeader * pHeader = (sQMIRawContentHeader*)(pOut); + pHeader->mTypeID = 0x01; + pHeader->mLength = tlvx01Sz; + + ULONG offset = sizeof( sQMIRawContentHeader ); + + // The SPC + sDMSValidateSPCRequest_SPC * pTLVx01; + pTLVx01 = (sDMSValidateSPCRequest_SPC*)(pOut + offset); + memset( pTLVx01, 0, tlvx01Sz ); + + // Set the values + memcpy( &pTLVx01->mSPC[0], spc.c_str(), spc.size() ); + + offset += tlvx01Sz; + *pOutLen = offset; + + return eGOBI_ERR_NONE; +} diff --git a/gobi-api/GobiAPI_2013-07-31-1347/Gobi3000Translation/Gobi3000TranslationNAS.cpp b/gobi-api/GobiAPI_2013-07-31-1347/Gobi3000Translation/Gobi3000TranslationNAS.cpp new file mode 100644 index 0000000..836f41b --- /dev/null +++ b/gobi-api/GobiAPI_2013-07-31-1347/Gobi3000Translation/Gobi3000TranslationNAS.cpp @@ -0,0 +1,2021 @@ +/*=========================================================================== +FILE: + Gobi3000TranslationNAS.cpp + +DESCRIPTION: + QUALCOMM Translation for Gobi 3000 (NAS Service) + +Copyright (c) 2013, The Linux Foundation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +==========================================================================*/ + +//--------------------------------------------------------------------------- +// Include Files +//--------------------------------------------------------------------------- +#include "Gobi3000Translation.h" + +// Maximum length for a scanned network description +const ULONG MAX_SNI_DESCRIPTION_LEN = 255; + +//--------------------------------------------------------------------------- +// Pragmas (pack structs) +//--------------------------------------------------------------------------- +#pragma pack( push, 1 ) + +/*=========================================================================*/ +// Struct sEVDOCustomSCPConfig +// Struct to represent CDMA 1xEV-DO custom SCP config +/*=========================================================================*/ +struct sEVDOCustomSCPConfig +{ + public: + BYTE mbActive; + ULONG mProtocolMask; + ULONG mBroadcastMask; + ULONG mApplicationMask; +}; + +/*=========================================================================*/ +// Struct sScannedNetworkInfo +// Struct to represent scanned network information +/*=========================================================================*/ +struct sScannedNetworkInfo +{ + public: + USHORT mMCC; + USHORT mMNC; + ULONG mInUse; + ULONG mRoaming; + ULONG mForbidden; + ULONG mPreferred; + CHAR mDescription[MAX_SNI_DESCRIPTION_LEN]; +}; + +/*=========================================================================*/ +// Struct sScannedNetworkRATInfo +// Struct to represent scanned network RAT information +/*=========================================================================*/ +struct sScannedNetworkRATInfo +{ + public: + USHORT mMCC; + USHORT mMNC; + ULONG mRAT; +}; + +//--------------------------------------------------------------------------- +// Pragmas +//--------------------------------------------------------------------------- +#pragma pack( pop ) + +/*=========================================================================== +METHOD: + ParseGetANAAAAuthenticationStatus + +DESCRIPTION: + This function gets the AN-AAA authentication status + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pStatus [ O ] - AN-AAA authentication status + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseGetANAAAAuthenticationStatus( + ULONG inLen, + const BYTE * pIn, + ULONG * pStatus ) +{ + // Validate arguments + if (pIn == 0 || pStatus == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Find the TLV + const sNASGetANAAAAuthenticationStatusResponse_Status * pTLVx01; + ULONG outLenx01; + ULONG rc = GetTLV( inLen, pIn, 0x01, &outLenx01, (const BYTE **)&pTLVx01 ); + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + // Is the TLV large enough? + if (outLenx01 < sizeof( sNASGetANAAAAuthenticationStatusResponse_Status )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + *pStatus = pTLVx01->mANAAAAuthenticationStatus; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + ParseGetSignalStrength + +DESCRIPTION: + This function gets the current signal strength (in dBm) as measured by + the device, the signal strength returned will be one of the currently + available technologies with preference CDMA 1xEV-DO, CDMA, AMPS, + WCDMA, GSM + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pSignalStrength [ O ] - Received signal strength (dBm) + pRadioInterface [ O ] - Radio interface technology + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseGetSignalStrength( + ULONG inLen, + const BYTE * pIn, + INT8 * pSignalStrength, + ULONG * pRadioInterface ) +{ + // Validate arguments + if (pSignalStrength == 0 || pRadioInterface == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + ULONG sigSz = 12; + INT8 sigs[12]; + ULONG radios[12]; + ULONG qcErr = ParseGetSignalStrengths( inLen, + pIn, + &sigSz, + &sigs[0], + &radios[0] ); + if (qcErr != eGOBI_ERR_NONE) + { + return qcErr; + } + + std::map sigMap; + for (ULONG s = 0; s < sigSz; s++) + { + sigMap[radios[s]] = sigs[s]; + } + + std::map ::const_iterator pIter; + + // HDR? + pIter = sigMap.find( 2 ); + if (pIter != sigMap.end()) + { + *pSignalStrength = pIter->second; + *pRadioInterface = pIter->first; + + return eGOBI_ERR_NONE; + } + + // CDMA? + pIter = sigMap.find( 1 ); + if (pIter != sigMap.end()) + { + *pSignalStrength = pIter->second; + *pRadioInterface = pIter->first; + + return eGOBI_ERR_NONE; + } + + // AMPS? + pIter = sigMap.find( 3 ); + if (pIter != sigMap.end()) + { + *pSignalStrength = pIter->second; + *pRadioInterface = pIter->first; + + return eGOBI_ERR_NONE; + } + + // WCDMA? + pIter = sigMap.find( 5 ); + if (pIter != sigMap.end()) + { + *pSignalStrength = pIter->second; + *pRadioInterface = pIter->first; + + return eGOBI_ERR_NONE; + } + + // GSM? + pIter = sigMap.find( 4 ); + if (pIter != sigMap.end()) + { + *pSignalStrength = pIter->second; + *pRadioInterface = pIter->first; + + return eGOBI_ERR_NONE; + } + + // Error values + *pSignalStrength = -128; + *pRadioInterface = 0; + + return eGOBI_ERR_NO_SIGNAL; +} + +/*=========================================================================== +METHOD: + ParseGetSignalStrengths + +DESCRIPTION: + This function gets the current available signal strengths (in dBm) + as measured by the device + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pArraySizes [I/O] - Upon input the maximum number of elements + that each array can contain can contain. + Upon successful output the actual number + of elements in each array + pSignalStrengths [ O ] - Received signal strength array (dBm) + pRadioInterfaces [ O ] - Radio interface technology array + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseGetSignalStrengths( + ULONG inLen, + const BYTE * pIn, + ULONG * pArraySizes, + INT8 * pSignalStrengths, + ULONG * pRadioInterfaces ) +{ + // Validate arguments + if (pIn == 0 + || pArraySizes == 0 + || *pArraySizes == 0 + || pSignalStrengths == 0 + || pRadioInterfaces == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + ULONG maxSignals = (ULONG)*pArraySizes; + + // Assume failure + *pArraySizes = 0; + + // Find the first signal strength value + const sNASGetSignalStrengthResponse_SignalStrength * pTLVx01; + ULONG outLenx01; + ULONG rc = GetTLV( inLen, pIn, 0x01, &outLenx01, (const BYTE **)&pTLVx01 ); + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + // Is the TLV large enough? + if (outLenx01 < sizeof( sNASGetSignalStrengthResponse_SignalStrength )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + // Weed out bogus values + std::map sigMap; + + INT8 sigVal = pTLVx01->mSignalStrengthdBm; + ULONG radioVal = pTLVx01->mRadioInterface; + if (sigVal <= -30 && sigVal > -125 && radioVal != 0) + { + sigMap[radioVal] = sigVal; + } + + // Handle list, if present + const sNASGetSignalStrengthResponse_SignalStrengthList * pTLVx10; + ULONG outLenx10; + rc = GetTLV( inLen, pIn, 0x10, &outLenx10, (const BYTE **)&pTLVx10 ); + if (rc == eGOBI_ERR_NONE) + { + if (outLenx10 < sizeof( sNASGetSignalStrengthResponse_SignalStrengthList )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + ULONG auxSigs = pTLVx10->mNumberOfInfoInstances; + if (auxSigs > maxSignals) + { + auxSigs = maxSignals; + } + + const sNASGetSignalStrengthResponse_SignalStrengthList::sInfo * pInfo; + + // Verify there is room for the array in the TLV + if (outLenx10 < sizeof( sNASGetSignalStrengthResponse_SignalStrengthList ) + + sizeof( sNASGetSignalStrengthResponse_SignalStrengthList::sInfo ) + * auxSigs) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + // Align to the first array element + pInfo = (const sNASGetSignalStrengthResponse_SignalStrengthList::sInfo *) + ((const BYTE *)pTLVx10 + + sizeof( sNASGetSignalStrengthResponse_SignalStrengthList )); + + for (ULONG s = 0; s < auxSigs; s++) + { + sigVal = pInfo->mSignalStrengthdBm; + radioVal = pInfo->mRadioInterface; + if (sigVal <= -30 && sigVal > -125 && radioVal != 0) + { + sigMap[radioVal] = sigVal; + } + + // Move pInfo forward one element + pInfo++; + } + } + + ULONG sigCount = 0; + std::map ::const_iterator pIter; + for (pIter = sigMap.begin(); pIter != sigMap.end(); pIter++, sigCount++) + { + if (sigCount < maxSignals) + { + pSignalStrengths[sigCount] = pIter->second; + pRadioInterfaces[sigCount] = pIter->first; + *pArraySizes = sigCount + 1; + } + } + + // No valid signals? + if (sigCount == 0) + { + return eGOBI_ERR_NO_SIGNAL; + } + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + ParseGetRFInfo + +DESCRIPTION: + This function gets the current RF information + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pInstanceSize [I/O] - Upon input the maximum number of elements that the + RF info instance array can contain. Upon success + the actual number of elements in the RF info + instance array + pInstances [ O ] - The RF info instance array + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseGetRFInfo( + ULONG inLen, + const BYTE * pIn, + BYTE * pInstanceSize, + BYTE * pInstances ) +{ + // Validate arguments + if (pIn == 0 + || pInstanceSize == 0 + || *pInstanceSize == 0 + || pInstances == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Assume failure + BYTE maxInstances = *pInstanceSize; + *pInstanceSize = 0; + + // Find the TLV + const sNASGetRFInfoResponse_RFInfo * pTLVx01; + ULONG outLenx01; + ULONG rc = GetTLV( inLen, pIn, 0x01, &outLenx01, (const BYTE **)&pTLVx01 ); + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + // Is the TLV large enough? + if (outLenx01 < sizeof( sNASGetRFInfoResponse_RFInfo )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + BYTE ifaceCount = pTLVx01->mNumberOfInstances; + if (ifaceCount > maxInstances) + { + ifaceCount = maxInstances; + } + + const sNASGetRFInfoResponse_RFInfo::sInstance * pInstance; + + // Verify there is room for the array in the TLV + if (outLenx01 < sizeof( sNASGetRFInfoResponse_RFInfo ) + + sizeof( sNASGetRFInfoResponse_RFInfo::sInstance ) + * ifaceCount) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + // Align to the first array element + pInstance = (const sNASGetRFInfoResponse_RFInfo::sInstance *) + ((const BYTE *)pTLVx01 + + sizeof( sNASGetRFInfoResponse_RFInfo )); + + ULONG * pOutput = (ULONG *)pInstances; + for (BYTE i = 0; i < ifaceCount; i++) + { + *pOutput++ = pInstance->mRadioInterface; + *pOutput++ = pInstance->mActiveBandClass; + *pOutput++ = pInstance->mActiveChannel; + + // Move pInstance forward one element + pInstance++; + } + + *pInstanceSize = ifaceCount; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + ParsePerformNetworkScan + +DESCRIPTION: + This function performs a scan for available networks + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pInstanceSize [I/O] - Upon input the maximum number of elements that the + network info instance array can contain. Upon + success the actual number of elements in the + network info instance array + pInstances [ O ] - The network info instance array + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParsePerformNetworkScan( + ULONG inLen, + const BYTE * pIn, + BYTE * pInstanceSize, + BYTE * pInstances ) +{ + // Validate arguments + if (pIn == 0 + || pInstanceSize == 0 + || *pInstanceSize == 0 + || pInstances == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + BYTE maxInstances = *pInstanceSize; + + // Assume failure + *pInstanceSize = 0; + + // Find the TLV + const sNASPerformNetworkScanResponse_NetworkInfo * pTLVx10; + ULONG outLenx10; + ULONG rc = GetTLV( inLen, pIn, 0x10, &outLenx10, (const BYTE **)&pTLVx10 ); + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + // Is the TLV large enough? + if (outLenx10 < sizeof( sNASPerformNetworkScanResponse_NetworkInfo )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + UINT16 netCount = pTLVx10->mNumberOfInfoInstances; + if (netCount > maxInstances) + { + netCount = maxInstances; + } + + const sNASPerformNetworkScanResponse_NetworkInfo::sNetworkInfo * pNetInfo; + + // Align to the first array element + pNetInfo = (const sNASPerformNetworkScanResponse_NetworkInfo::sNetworkInfo *) + ((const BYTE *)pTLVx10 + + sizeof( sNASPerformNetworkScanResponse_NetworkInfo )); + ULONG offset = sizeof( sNASPerformNetworkScanResponse_NetworkInfo ); + + sScannedNetworkInfo * pNet = (sScannedNetworkInfo *)pInstances; + for (BYTE i = 0; i < netCount; i++) + { + // Check TLV size + if (offset > outLenx10) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + pNet->mMCC = pNetInfo->mMobileCountryCode; + pNet->mMNC = pNetInfo->mMobileNetworkCode; + pNet->mInUse = pNetInfo->mInUseStatus; + pNet->mRoaming = pNetInfo->mRoamingStatus; + pNet->mForbidden = pNetInfo->mForbiddenStatus; + pNet->mPreferred = pNetInfo->mPreferredStatus; + + memset( &pNet->mDescription[0], 0, MAX_SNI_DESCRIPTION_LEN ); + + BYTE descLen = pNetInfo->mDescriptionLength; + if (descLen > 0) + { + // Move pNetInfo forward + pNetInfo++; + offset += sizeof( sNASPerformNetworkScanResponse_NetworkInfo::sNetworkInfo ); + + // Check TLV size + if (offset > outLenx10) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + std::string netDesc( (LPCSTR)pNetInfo ); + + ULONG actualLen = (ULONG)netDesc.size(); + if (actualLen >= MAX_SNI_DESCRIPTION_LEN) + { + actualLen = MAX_SNI_DESCRIPTION_LEN - 1; + } + + LPCSTR pNetDesc = netDesc.c_str(); + memcpy( &pNet->mDescription[0], pNetDesc, actualLen ); + + // Move pNetInfo past string + pNetInfo = (const sNASPerformNetworkScanResponse_NetworkInfo::sNetworkInfo *) + ((const BYTE *)pNetInfo + descLen); + offset += descLen; + } + + pNet++; + } + + *pInstanceSize = (BYTE)netCount; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + ParsePerformNetworkRATScan + +DESCRIPTION: + This function performs a scan for available networks (includes RAT) + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pInstanceSize [I/O] - Upon input the maximum number of elements that the + network info instance array can contain. Upon + success the actual number of elements in the + network info instance array + pInstances [ O ] - The network info instance array + pRATSize [I/O] - Upon input the maximum number of elements that the + RAT info instance array can contain. Upon success + the actual number of elements in the RAT info + instance array + pRATInstances [ O ] - The RAT info instance array + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParsePerformNetworkRATScan( + ULONG inLen, + const BYTE * pIn, + BYTE * pInstanceSize, + BYTE * pInstances, + BYTE * pRATSize, + BYTE * pRATInstances ) +{ + // Validate arguments + if (pIn == 0 + || pInstanceSize == 0 + || *pInstanceSize == 0 + || pInstances == 0 + || pRATSize == 0 + || *pRATSize == 0 + || pRATInstances == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + BYTE maxRATInstances = *pRATSize; + + // Assume failure + *pInstanceSize = 0; + *pRATSize = 0; + + // First, generate the instances using ParsePerformNetworkScan + ULONG rc = ParsePerformNetworkScan( inLen, pIn, pInstanceSize, pInstances ); + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + // Now find the RAT info too + + // Find the TLV + const sNASPerformNetworkScanResponse_NetworkRAT * pTLVx11; + ULONG outLenx11; + rc = GetTLV( inLen, pIn, 0x11, &outLenx11, (const BYTE **)&pTLVx11 ); + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + // Is the TLV large enough? + if (outLenx11 < sizeof( sNASPerformNetworkScanResponse_NetworkRAT )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + UINT16 ratCount = pTLVx11->mNumberOfInfoInstances; + if (ratCount > maxRATInstances) + { + ratCount = maxRATInstances; + } + + const sNASPerformNetworkScanResponse_NetworkRAT::sInfo * pRatInfo; + + // Verify there is room for the array in the TLV + if (outLenx11 < sizeof( sNASPerformNetworkScanResponse_NetworkRAT ) + + sizeof( sNASPerformNetworkScanResponse_NetworkRAT::sInfo ) + * ratCount) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + // Align to the first array element + pRatInfo = (const sNASPerformNetworkScanResponse_NetworkRAT::sInfo *) + ((const BYTE *)pTLVx11 + + sizeof( sNASPerformNetworkScanResponse_NetworkRAT )); + + sScannedNetworkRATInfo * pRAT = (sScannedNetworkRATInfo *)pRATInstances; + for (BYTE r = 0; r < ratCount; r++) + { + pRAT->mMCC = pRatInfo->mMobileCountryCode; + pRAT->mMNC = pRatInfo->mMobileNetworkCode; + pRAT->mRAT = pRatInfo->mRadioAccessTechnology; + + pRAT++; + pRatInfo++; + } + + *pRATSize = (BYTE)ratCount; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + PackInitiateNetworkRegistration + +DESCRIPTION: + This function initiates a network registration + +PARAMETERS: + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + regType [ I ] - Registration type + mcc [ I ] - Mobile country code (ignored for auto registration) + mnc [ I ] - Mobile network code (ignored for auto registration) + rat [ I ] - Radio access type (ignored for auto registration) + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PackInitiateNetworkRegistration( + ULONG * pOutLen, + BYTE * pOut, + ULONG regType, + WORD mcc, + WORD mnc, + ULONG rat ) +{ + // Validate arguments + if (pOut == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Set the action + + // Check size + WORD tlvx01Sz = sizeof( sNASInitiateNetworkRegisterRequest_Action ); + if (*pOutLen < sizeof( sQMIRawContentHeader ) + tlvx01Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + sQMIRawContentHeader * pHeader = (sQMIRawContentHeader*)pOut; + pHeader->mTypeID = 0x01; + pHeader->mLength = tlvx01Sz; + + ULONG offset = sizeof( sQMIRawContentHeader ); + + sNASInitiateNetworkRegisterRequest_Action * pTLVx01; + pTLVx01 = (sNASInitiateNetworkRegisterRequest_Action*)(pOut + offset); + memset( pTLVx01, 0, tlvx01Sz ); + + // Set the value + pTLVx01->mRegisterAction = (eQMINASRegisterActions)regType; + + offset += tlvx01Sz; + + // Set the info + + // Check size + WORD tlvx10Sz = sizeof( sNASInitiateNetworkRegisterRequest_ManualInfo ); + if (*pOutLen < offset + sizeof( sQMIRawContentHeader ) + tlvx10Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + pHeader = (sQMIRawContentHeader*)(pOut + offset); + pHeader->mTypeID = 0x10; + pHeader->mLength = tlvx10Sz; + + offset = sizeof( sQMIRawContentHeader ); + + sNASInitiateNetworkRegisterRequest_ManualInfo * pTLVx10; + pTLVx10 = (sNASInitiateNetworkRegisterRequest_ManualInfo*)(pOut + offset); + memset( pTLVx10, 0, tlvx10Sz ); + + // Set the value + pTLVx10->mMobileCountryCode = mcc; + pTLVx10->mMobileNetworkCode = mnc; + pTLVx10->mRadioAccessTechnology = (eQMINASRadioAccessTechnologies)rat; + + offset += tlvx10Sz; + + *pOutLen = offset; + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + PackInitiateDomainAttach + +DESCRIPTION: + This function initiates a domain attach (or detach) + +PARAMETERS: + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + action [ I ] - PS attach action (attach or detach) + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PackInitiateDomainAttach( + ULONG * pOutLen, + BYTE * pOut, + ULONG action ) +{ + // Validate arguments + if (pOut == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Check size + WORD tlvx10Sz = sizeof( sNASInitiateAttachRequest_Action ); + if (*pOutLen < sizeof( sQMIRawContentHeader ) + tlvx10Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + sQMIRawContentHeader * pHeader = (sQMIRawContentHeader*)pOut; + pHeader->mTypeID = 0x10; + pHeader->mLength = tlvx10Sz; + + ULONG offset = sizeof( sQMIRawContentHeader ); + + sNASInitiateAttachRequest_Action * pTLVx10; + pTLVx10 = (sNASInitiateAttachRequest_Action*)(pOut + offset); + memset( pTLVx10, 0, tlvx10Sz ); + + // Set the value + pTLVx10->mPSAttachAction = (eQMINASPSAttachActions)action; + + offset += tlvx10Sz; + + *pOutLen = offset; + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + ParseGetServingNetwork + +DESCRIPTION: + Gets information regarding the system that currently provides service + to the device + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pRegistrationState [ O ] - Registration state + pCSDomain [ O ] - Circuit switch domain status + pPSDomain [ O ] - Packet switch domain status + pRAN [ O ] - Radio access network + pRadioIfacesSize [I/O] - Upon input the maximum number of elements + that the radio interfaces can contain. Upon + successful output the actual number of elements + in the radio interface array + pRadioIfaces [ O ] - The radio interface array + pRoaming [ O ] - Roaming indicator (0xFFFFFFFF - Unknown) + pMCC [ O ] - Mobile country code (0xFFFF - Unknown) + pMNC [ O ] - Mobile network code (0xFFFF - Unknown) + nameSize [ I ] - The maximum number of characters (including + NULL terminator) that the network name array + can contain + pName [ O ] - The network name or description represented + as a NULL terminated string (empty string + returned when unknown) + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseGetServingNetwork( + ULONG inLen, + const BYTE * pIn, + ULONG * pRegistrationState, + ULONG * pCSDomain, + ULONG * pPSDomain, + ULONG * pRAN, + BYTE * pRadioIfacesSize, + BYTE * pRadioIfaces, + ULONG * pRoaming, + WORD * pMCC, + WORD * pMNC, + BYTE nameSize, + CHAR * pName ) +{ + // Validate arguments + if (pIn == 0 + || pRegistrationState == 0 + || pCSDomain == 0 + || pPSDomain == 0 + || pRAN == 0 + || pRadioIfacesSize == 0 + || *pRadioIfacesSize == 0 + || pRadioIfaces == 0 + || pRoaming == 0 + || pMCC == 0 + || pMNC == 0 + || nameSize == 0 + || pName == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + BYTE maxRadioIfaces = *pRadioIfacesSize; + + // Assume failure + *pRadioIfacesSize = 0; + *pRoaming = 0xffffffff; + *pMCC = 0xffff; + *pMNC = 0xffff; + *pName = 0; + + // Parse the serving system (mandatory) + + // Find the TLV + const sNASGetServingSystemResponse_ServingSystem * pTLVx01; + ULONG outLenx01; + ULONG rc = GetTLV( inLen, pIn, 0x01, &outLenx01, (const BYTE **)&pTLVx01 ); + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + // Is the TLV large enough? + if (outLenx01 < sizeof( sNASGetServingSystemResponse_ServingSystem )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + // Populate the variables + *pRegistrationState = pTLVx01->mRegistrationState; + *pCSDomain = pTLVx01->mCSAttachState; + *pPSDomain = pTLVx01->mPSAttachState; + *pRAN = pTLVx01->mRegisteredNetwork; + + BYTE activeRadioIfaces = pTLVx01->mNumberOfRadioInterfacesInUse; + if (activeRadioIfaces > maxRadioIfaces) + { + activeRadioIfaces = maxRadioIfaces; + } + + const eQMINASRadioInterfaces * pRadioInfo; + + // Verify there is room for the array in the TLV + if (outLenx01 < sizeof( sNASGetServingSystemResponse_ServingSystem ) + + sizeof( eQMINASRadioInterfaces ) * activeRadioIfaces) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + // Align to the first array element + pRadioInfo = (const eQMINASRadioInterfaces *) + ((const BYTE *)pTLVx01 + + sizeof( sNASGetServingSystemResponse_ServingSystem )); + + ULONG * pOutRadioIfaces = (ULONG *)pRadioIfaces; + for (ULONG r = 0; r < activeRadioIfaces; r++) + { + *pOutRadioIfaces = *pRadioInfo; + pOutRadioIfaces++; + pRadioInfo++; + } + + *pRadioIfacesSize = activeRadioIfaces; + + // Find the roaming indicator (optional) + const sNASGetServingSystemResponse_RoamingIndicator * pTLVx10; + ULONG outLenx10; + rc = GetTLV( inLen, pIn, 0x10, &outLenx10, (const BYTE **)&pTLVx10 ); + if (rc == eGOBI_ERR_NONE) + { + if (outLenx10 < sizeof( sNASGetServingSystemResponse_RoamingIndicator )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + // Get the values + *pRoaming = (eQMINASRoamingIndicators)pTLVx10->mRoamingIndicator; + } + + // Find the PLMN (optional) + const sNASGetServingSystemResponse_CurrentPLMN * pTLVx12; + ULONG outLenx12; + rc = GetTLV( inLen, pIn, 0x12, &outLenx12, (const BYTE **)&pTLVx12 ); + if (rc == eGOBI_ERR_NONE) + { + if (outLenx12 < sizeof( sNASGetServingSystemResponse_CurrentPLMN )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + *pMCC = pTLVx12->mMobileCountryCode; + *pMNC = pTLVx12->mMobileNetworkCode; + + ULONG descLen = pTLVx12->mDescriptionLength; + const CHAR * pDesc; + + // Verify there is room for the array in the TLV + if (outLenx12 < sizeof( sNASGetServingSystemResponse_CurrentPLMN ) + + sizeof( CHAR ) * descLen) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + // Space to perform the copy? + if (nameSize < descLen + 1) + { + return eGOBI_ERR_BUFFER_SZ; + } + + // Align to the first array element + pDesc = (const CHAR *)((const BYTE *)pTLVx12 + + sizeof( sNASGetServingSystemResponse_CurrentPLMN )); + + memcpy( pName, pDesc, descLen ); + pName[descLen] = 0; + } + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + ParseGetServingNetworkCapabilities + +DESCRIPTION: + Gets information regarding the data capabilities of the system that + currently provides service to the device + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pDataCapsSize [I/O] - Upon input the maximum number of elements that the + data capabilities array can contain. Upon success + the actual number of elements in the data + capabilities array + pDataCaps [ O ] - The data capabilities array + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseGetServingNetworkCapabilities( + ULONG inLen, + const BYTE * pIn, + BYTE * pDataCapsSize, + BYTE * pDataCaps ) +{ + // Validate arguments + if (pIn == 0 + || pDataCapsSize == 0 + || *pDataCapsSize == 0 + || pDataCaps == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + BYTE maxDataCaps = *pDataCapsSize; + + // Assume failure + *pDataCapsSize = 0; + + // Find the TLV + const sNASGetServingSystemResponse_DataServices * pTLVx11; + ULONG outLenx11; + ULONG rc = GetTLV( inLen, pIn, 0x11, &outLenx11, (const BYTE **)&pTLVx11 ); + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + // Is the TLV large enough? + if (outLenx11 < sizeof( sNASGetServingSystemResponse_DataServices )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + BYTE activeDataCaps = pTLVx11->mNumberOfDataCapabilities; + if (activeDataCaps > maxDataCaps) + { + activeDataCaps = maxDataCaps; + } + + const eQMINASDataServiceCapabilities2 * pInDataCaps; + + // Verify there is room for the array in the TLV + if (outLenx11 < sizeof( sNASGetServingSystemResponse_DataServices ) + + sizeof( eQMINASDataServiceCapabilities2 ) * activeDataCaps) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + // Align to the first array element + pInDataCaps = (const eQMINASDataServiceCapabilities2 *) + ((const BYTE *)pTLVx11 + + sizeof( sNASGetServingSystemResponse_DataServices )); + + ULONG * pOutDataCaps = (ULONG *)pDataCaps; + for (ULONG d = 0; d < activeDataCaps; d++) + { + *pOutDataCaps = *pInDataCaps; + pOutDataCaps++; + pInDataCaps++; + } + + *pDataCapsSize = activeDataCaps; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + ParseGetHomeNetwork + +DESCRIPTION: + This function retrieves information about the home network of the device + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pMCC [ O ] - Mobile country code + pMNC [ O ] - Mobile network code + nameSize [ I ] - The maximum number of characters (including NULL + terminator) that the network name array can contain + pName [ O ] - The network name or description represented as a NULL + terminated string (empty string returned when unknown) + pSID [ O ] - Home network system ID (0xFFFF - Unknown) + pNID [ O ] - Home network ID (0xFFFF - Unknown) + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseGetHomeNetwork( + ULONG inLen, + const BYTE * pIn, + WORD * pMCC, + WORD * pMNC, + BYTE nameSize, + CHAR * pName, + WORD * pSID, + WORD * pNID ) +{ + // Validate arguments + if (pIn == 0 + || pMCC == 0 + || pMNC == 0 + || nameSize == 0 + || pName == 0 + || pSID == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Assume failure + *pName = 0; + *pSID = 0xffff; + *pNID = 0xffff; + + // Find the name (mandatory) + const sNASGetHomeNetworkResponse_HomeNetwork * pTLVx01; + ULONG outLenx01; + ULONG rc = GetTLV( inLen, pIn, 0x01, &outLenx01, (const BYTE **)&pTLVx01 ); + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + if (outLenx01 < sizeof( sNASGetHomeNetworkResponse_HomeNetwork )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + // Populate the variables + *pMCC = pTLVx01->mMobileCountryCode; + *pMNC = pTLVx01->mMobileNetworkCode; + + ULONG descLen = pTLVx01->mDescriptionLength; + const CHAR * pDesc; + + // Verify there is room for the array in the TLV + if (outLenx01 < sizeof( sNASGetHomeNetworkResponse_HomeNetwork ) + + sizeof( CHAR ) * descLen) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + // Space to perform the copy? + if (nameSize < descLen + 1) + { + return eGOBI_ERR_BUFFER_SZ; + } + + // Align to the first array element + pDesc = (const CHAR *)((const BYTE *)pTLVx01 + + sizeof( sNASGetHomeNetworkResponse_HomeNetwork )); + + memcpy( pName, pDesc, descLen ); + pName[descLen] = 0; + + + // Find the SID/NID (optional) + const sNASGetHomeNetworkResponse_HomeIDs * pTLVx10; + ULONG outLenx10; + rc = GetTLV( inLen, pIn, 0x10, &outLenx10, (const BYTE **)&pTLVx10 ); + if (rc == eGOBI_ERR_NONE) + { + if (outLenx10 < sizeof( sNASGetHomeNetworkResponse_HomeIDs )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + *pSID = pTLVx10->mSystemID; + *pNID = pTLVx10->mNetworkID; + } + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + PackSetNetworkPreference + +DESCRIPTION: + This function sets the network registration preference + +PARAMETERS: + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + technologyPref [ I ] - Technology preference bitmap + duration [ I ] - Duration of active preference + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PackSetNetworkPreference( + ULONG * pOutLen, + BYTE * pOut, + ULONG technologyPref, + ULONG duration ) +{ + // Validate arguments + if (pOut == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Check size + WORD tlvx01Sz = sizeof( sNASSetTechnologyPreferenceRequest_Preference ); + if (*pOutLen < sizeof( sQMIRawContentHeader ) + tlvx01Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + sQMIRawContentHeader * pHeader = (sQMIRawContentHeader*)pOut; + pHeader->mTypeID = 0x01; + pHeader->mLength = tlvx01Sz; + + ULONG offset = sizeof( sQMIRawContentHeader ); + + sNASSetTechnologyPreferenceRequest_Preference * pTLVx01; + pTLVx01 = (sNASSetTechnologyPreferenceRequest_Preference*)(pOut + offset); + memset( pTLVx01, 0, tlvx01Sz ); + + // Copy technology preference WORD as-is + memcpy( &pTLVx01->mValOfTechnology, &technologyPref, 2 ); + + pTLVx01->mDuration = (eQMINASTechPrefDurations)duration; + + offset += tlvx01Sz; + + *pOutLen = offset; + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + ParseGetNetworkPreference + +DESCRIPTION: + This function returns the network registration preference + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pTechnologyPref [ O ] - Technology preference bitmap + pDuration [ O ] - Duration of active preference + pPersistentTechnologyPref [ O ] - Persistent technology preference bitmap + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseGetNetworkPreference( + ULONG inLen, + const BYTE * pIn, + ULONG * pTechnologyPref, + ULONG * pDuration, + ULONG * pPersistentTechnologyPref ) +{ + // Validate arguments + if (pIn == 0 + || pTechnologyPref == 0 + || pDuration == 0 + || pPersistentTechnologyPref == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Find the preference (mandatory) + const sNASGetTechnologyPreferenceResponse_ActivePreference * pTLVx01; + ULONG outLenx01; + ULONG rc = GetTLV( inLen, pIn, 0x01, &outLenx01, (const BYTE **)&pTLVx01 ); + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + if (outLenx01 < sizeof( sNASGetTechnologyPreferenceResponse_ActivePreference )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + // Copy technology preference WORD as-is + *pTechnologyPref = 0; + memcpy( pTechnologyPref, &pTLVx01->mValOfTechnology, 2 ); + + *pDuration = pTLVx01->mDuration; + + + // Until we know any better the persistent setting is the current setting + *pPersistentTechnologyPref = *pTechnologyPref; + + // Find the persistant technology preference (optional) + const sNASGetTechnologyPreferenceResponse_PersistentPreference * pTLVx10; + ULONG outLenx10; + rc = GetTLV( inLen, pIn, 0x10, &outLenx10, (const BYTE **)&pTLVx10 ); + if (rc == eGOBI_ERR_NONE) + { + if (outLenx10 < sizeof( sNASGetTechnologyPreferenceResponse_PersistentPreference )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + // Copy technology preference WORD as-is + *pTechnologyPref = 0; + memcpy( pPersistentTechnologyPref, &pTLVx10->mValOfTechnology, 2 ); + } + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + PackSetCDMANetworkParameters + +DESCRIPTION: + This function sets the desired CDMA network parameters + +PARAMETERS: + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + pSPC [ I ] - Six digit service programming code + pForceRev0 [ I ] - (Optional) Force CDMA 1x-EV-DO Rev. 0 mode? + pCustomSCP [ I ] - (Optional) Use a custom config for CDMA 1x-EV-DO SCP? + pProtocol [ I ] - (Optional) Protocol mask for custom SCP config + pBroadcast [ I ] - (Optional) Broadcast mask for custom SCP config + pApplication [ I ] - (Optional) Application mask for custom SCP config + pRoaming [ I ] - (Optional) Roaming preference + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PackSetCDMANetworkParameters( + ULONG * pOutLen, + BYTE * pOut, + CHAR * pSPC, + BYTE * pForceRev0, + BYTE * pCustomSCP, + ULONG * pProtocol, + ULONG * pBroadcast, + ULONG * pApplication, + ULONG * pRoaming ) +{ + // Validate arguments + if (pOut == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // If you specify one of the custom SCP config fields then you must + // specify them all + ULONG scpCount = 0; + if (pCustomSCP != 0) + { + scpCount++; + } + + if (pProtocol != 0) + { + scpCount++; + } + + if (pBroadcast != 0) + { + scpCount++; + } + + if (pApplication != 0) + { + scpCount++; + } + + if (scpCount != 0 && scpCount != 4) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Rev. 0 and SCP custom config are mutually exclusive + if (pForceRev0 != 0 && scpCount == 4) + { + if (*pForceRev0 != 0 && *pCustomSCP != 0) + { + return eGOBI_ERR_INVALID_ARG; + } + } + + sQMIRawContentHeader * pHeader; + ULONG offset = 0; + + // Need to start with SPC? + if (pForceRev0 != 0 || scpCount == 4) + { + // Validate arguments + if (pSPC == 0 || pSPC[0] == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + std::string spc( pSPC ); + if (spc.size() > 6) + { + return eGOBI_ERR_INVALID_ARG; + } + + if (spc.find_first_not_of( "0123456789" ) != std::string::npos ) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Check size + WORD tlvx10Sz = sizeof( sNASSetNetworkParametersRequest_SPC ); + if (*pOutLen < offset + sizeof( sQMIRawContentHeader ) + tlvx10Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + pHeader = (sQMIRawContentHeader*)(pOut + offset); + pHeader->mTypeID = 0x10; + pHeader->mLength = tlvx10Sz; + + offset += sizeof( sQMIRawContentHeader ); + + sNASSetNetworkParametersRequest_SPC * pTLVx10; + pTLVx10 = (sNASSetNetworkParametersRequest_SPC*)(pOut + offset); + memset( pTLVx10, 0, tlvx10Sz ); + + // Set the values + memcpy( &pTLVx10->mSPC[0], spc.c_str(), spc.size() ); + + offset += tlvx10Sz; + } + + // Force Rev. 0? + if (pForceRev0 != 0) + { + // Check size + WORD tlvx14Sz = sizeof( sNASSetNetworkParametersRequest_CDMA1xEVDORevision ); + if (*pOutLen < offset + sizeof( sQMIRawContentHeader ) + tlvx14Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + pHeader = (sQMIRawContentHeader*)(pOut + offset); + pHeader->mTypeID = 0x14; + pHeader->mLength = tlvx14Sz; + + offset += sizeof( sQMIRawContentHeader ); + + sNASSetNetworkParametersRequest_CDMA1xEVDORevision * pTLVx14; + pTLVx14 = (sNASSetNetworkParametersRequest_CDMA1xEVDORevision*)(pOut + offset); + memset( pTLVx14, 0, tlvx14Sz ); + + // Set the value + pTLVx14->mForceCDMA1xEVDORev0 = (*pForceRev0 == 0 ? 0 : 1); + + offset += tlvx14Sz; + } + + if (scpCount == 4) + { + // Check size + WORD tlvx15Sz = sizeof( sNASSetNetworkParametersRequest_CDMA1xEVDOSCPCustom ); + if (*pOutLen < offset + sizeof( sQMIRawContentHeader ) + tlvx15Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + pHeader = (sQMIRawContentHeader*)(pOut + offset); + pHeader->mTypeID = 0x15; + pHeader->mLength = tlvx15Sz; + + offset += sizeof( sQMIRawContentHeader ); + + sNASSetNetworkParametersRequest_CDMA1xEVDOSCPCustom * pTLVx15; + pTLVx15 = (sNASSetNetworkParametersRequest_CDMA1xEVDOSCPCustom*)(pOut + offset); + memset( pTLVx15, 0, tlvx15Sz ); + + // Set the values + pTLVx15->mCDMA1xEVDOSCPCustomConfig = (*pCustomSCP == 0 ? 0 : 1); + + // The pProtocol bitmask + pTLVx15->mSubtype2PhysicalLayer = (*pProtocol & 0x00000001 ? 1 : 0); + pTLVx15->mEnhancedCCMAC = (*pProtocol & 0x00000002 ? 1 : 0); + pTLVx15->mEnhancedACMAC = (*pProtocol & 0x00000004 ? 1 : 0); + pTLVx15->mEnhancedFTCMAC = (*pProtocol & 0x00000008 ? 1 : 0); + pTLVx15->mSubtype3RTCMAC = (*pProtocol & 0x00000010 ? 1 : 0); + pTLVx15->mSubtype1RTCMAC = (*pProtocol & 0x00000020 ? 1 : 0); + pTLVx15->mEnhancedIdle = (*pProtocol & 0x00000040 ? 1 : 0); + pTLVx15->mGenericMultimodeCapableDiscPort + = (*pProtocol & 0x00000080 ? 1 : 0); + + pTLVx15->mGenericBroadcast = (*pBroadcast & 0x00000001 ? 1 : 0); + + pTLVx15->mSNMultiflowPacketApplication + = (*pApplication & 0x00000001 ? 1 : 0); + + pTLVx15->mSNEnhancedMultiflowPacketApplication + = (*pApplication & 0x00000002 ? 1 : 0); + + offset += tlvx15Sz; + } + + if (pRoaming != 0) + { + // Check size + WORD tlvx16Sz = sizeof( sNASSetNetworkParametersRequest_Roaming ); + if (*pOutLen < offset + sizeof( sQMIRawContentHeader ) + tlvx16Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + pHeader = (sQMIRawContentHeader*)(pOut + offset); + pHeader->mTypeID = 0x16; + pHeader->mLength = tlvx16Sz; + + offset += sizeof( sQMIRawContentHeader ); + + sNASSetNetworkParametersRequest_Roaming * pTLVx16; + pTLVx16 = (sNASSetNetworkParametersRequest_Roaming*)(pOut + offset); + memset( pTLVx16, 0, tlvx16Sz ); + + // Set the values + pTLVx16->mRoamPreference = (eQMINASRoamingPreferences)*pRoaming; + + offset += tlvx16Sz; + } + + // At least one of the optional parameters must have been set + if (offset == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + *pOutLen = offset; + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + ParseGetCDMANetworkParameters + +DESCRIPTION: + This function gets the current CDMA network parameters + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pSCI [ O ] - Slot cycle index + pSCM [ O ] - Station class mark + pRegHomeSID [ O ] - Register on home SID? + pRegForeignSID [ O ] - Register on foreign SID? + pRegForeignNID [ O ] - Register on foreign NID? + pForceRev0 [ O ] - Force CDMA 1x-EV-DO Rev. 0 mode? + pCustomSCP [ O ] - Use a custom config for CDMA 1x-EV-DO SCP? + pProtocol [ O ] - Protocol mask for custom SCP config + pBroadcast [ O ] - Broadcast mask for custom SCP config + pApplication [ O ] - Application mask for custom SCP config + pRoaming [ O ] - Roaming preference + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseGetCDMANetworkParameters( + ULONG inLen, + const BYTE * pIn, + BYTE * pSCI, + BYTE * pSCM, + BYTE * pRegHomeSID, + BYTE * pRegForeignSID, + BYTE * pRegForeignNID, + BYTE * pForceRev0, + BYTE * pCustomSCP, + ULONG * pProtocol, + ULONG * pBroadcast, + ULONG * pApplication, + ULONG * pRoaming ) +{ + // Validate arguments + if (pIn == 0 + || pSCI == 0 + || pSCM == 0 + || pRegHomeSID == 0 + || pRegForeignSID == 0 + || pRegForeignNID == 0 + || pForceRev0 == 0 + || pCustomSCP == 0 + || pProtocol == 0 + || pBroadcast == 0 + || pApplication == 0 + || pRoaming == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + *pSCI = 0xff; + *pSCM = 0xff; + *pRegHomeSID = 0xff; + *pRegForeignSID = 0xff; + *pRegForeignNID = 0xff; + *pForceRev0 = 0xff; + *pCustomSCP = 0xff; + *pProtocol = 0xffffffff; + *pBroadcast = 0xffffffff; + *pApplication = 0xffffffff; + *pRoaming = 0xff; + + // Find the SCI + const sNASGetNetworkParametersResponse_SCI * pTLVx11; + ULONG outLenx11; + ULONG rc = GetTLV( inLen, pIn, 0x11, &outLenx11, (const BYTE **)&pTLVx11 ); + if (rc == eGOBI_ERR_NONE) + { + if (outLenx11 < sizeof( sNASGetNetworkParametersResponse_SCI )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + *pSCI = pTLVx11->mSlotCycleIndex; + } + + // Find the SCM + const sNASGetNetworkParametersResponse_SCM * pTLVx12; + ULONG outLenx12; + rc = GetTLV( inLen, pIn, 0x12, &outLenx12, (const BYTE **)&pTLVx12 ); + if (rc == eGOBI_ERR_NONE) + { + if (outLenx12 < sizeof( sNASGetNetworkParametersResponse_SCM )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + *pSCM = pTLVx12->mStationClassMark; + } + + // Find the Registration + const sNASGetNetworkParametersResponse_Registration * pTLVx13; + ULONG outLenx13; + rc = GetTLV( inLen, pIn, 0x13, &outLenx13, (const BYTE **)&pTLVx13 ); + if (rc == eGOBI_ERR_NONE) + { + if (outLenx13 < sizeof( sNASGetNetworkParametersResponse_Registration )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + *pRegHomeSID = pTLVx13->mRegisterOnHomeSystem; + *pRegForeignSID = pTLVx13->mRegisterOnForeignSystem; + *pRegForeignNID = pTLVx13->mRegisterOnForeignNetwork; + } + + // Rev. 0? + const sNASGetNetworkParametersResponse_CDMA1xEVDORevision * pTLVx14; + ULONG outLenx14; + rc = GetTLV( inLen, pIn, 0x14, &outLenx14, (const BYTE **)&pTLVx14 ); + if (rc == eGOBI_ERR_NONE) + { + if (outLenx14 < sizeof( sNASGetNetworkParametersResponse_CDMA1xEVDORevision )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + *pRegHomeSID = pTLVx14->mForceCDMA1xEVDORev0; + } + + // We're lazy, so we'll just typecast all the bitmask members from + // sNASGetNetworkParametersResponse_CDMA1xEVDOSCPCustom into their + // respective container parameters + const sEVDOCustomSCPConfig * pTLVx15; + ULONG outLenx15; + rc = GetTLV( inLen, pIn, 0x15, &outLenx15, (const BYTE **)&pTLVx15 ); + if (rc == eGOBI_ERR_NONE) + { + if (outLenx15 < sizeof( sEVDOCustomSCPConfig )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + *pCustomSCP = pTLVx15->mbActive; + *pProtocol = pTLVx15->mProtocolMask; + *pBroadcast = pTLVx15->mBroadcastMask; + *pApplication = pTLVx15->mApplicationMask; + } + + // Roaming? + const sNASGetNetworkParametersResponse_Roaming * pTLVx16; + ULONG outLenx16; + rc = GetTLV( inLen, pIn, 0x16, &outLenx16, (const BYTE **)&pTLVx16 ); + if (rc == eGOBI_ERR_NONE) + { + if (outLenx16 < sizeof( sNASGetNetworkParametersResponse_Roaming )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + *pRoaming = (eQMINASRoamingPreferences)pTLVx16->mRoamPreference; + } + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + ParseGetACCOLC + +DESCRIPTION: + This function returns the Access Overload Class (ACCOLC) of the device + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pACCOLC [ O ] - The ACCOLC + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseGetACCOLC( + ULONG inLen, + const BYTE * pIn, + BYTE * pACCOLC ) +{ + // Validate arguments + if (pIn == 0 || pACCOLC == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Find the ACCOLC (mandatory) + const sNASGetACCOLCResponse_ACCOLC * pTLVx01; + ULONG outLenx01; + ULONG rc = GetTLV( inLen, pIn, 0x01, &outLenx01, (const BYTE **)&pTLVx01 ); + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + if (outLenx01 < sizeof( sNASGetACCOLCResponse_ACCOLC )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + *pACCOLC = pTLVx01->mACCOLC; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + PackSetACCOLC + +DESCRIPTION: + This function sets the Access Overload Class (ACCOLC) of the device + +PARAMETERS: + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + pSPC [ I ] - NULL terminated string representing the six digit + service programming code + accolc [ I ] - The ACCOLC + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PackSetACCOLC( + ULONG * pOutLen, + BYTE * pOut, + CHAR * pSPC, + BYTE accolc ) +{ + // Validate arguments + if (pOut == 0 || pSPC == 0 || pSPC[0] == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + std::string spc( pSPC ); + if (spc.size() > 6) + { + return eGOBI_ERR_INVALID_ARG; + } + + if (spc.find_first_not_of( "0123456789" ) != std::string::npos ) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Check size + WORD tlvx01Sz = sizeof( sNASSetACCOLCRequest_ACCOLC ); + if (*pOutLen < sizeof( sQMIRawContentHeader ) + tlvx01Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + sQMIRawContentHeader * pHeader = (sQMIRawContentHeader*)pOut; + pHeader->mTypeID = 0x01; + pHeader->mLength = tlvx01Sz; + + ULONG offset = sizeof( sQMIRawContentHeader ); + + sNASSetACCOLCRequest_ACCOLC * pTLVx01; + pTLVx01 = (sNASSetACCOLCRequest_ACCOLC*)(pOut + offset); + memset( pTLVx01, 0, tlvx01Sz ); + + // Set the values + memcpy( &pTLVx01->mSPC[0], spc.c_str(), spc.size() ); + pTLVx01->mACCOLC = accolc; + + offset += tlvx01Sz; + *pOutLen = offset; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + ParseGetPLMNMode + +DESCRIPTION: + This function returns the PLMN mode from the CSP + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pMode [ O ] - PLMN mode + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseGetPLMNMode( + ULONG inLen, + const BYTE * pIn, + ULONG * pMode ) +{ + // Validate arguments + if (pIn == 0 || pMode == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Find the mode (mandatory) + const sNASGetCSPPLMNModeResponse_Mode * pTLVx10; + ULONG outLenx10; + ULONG rc = GetTLV( inLen, pIn, 0x10, &outLenx10, (const BYTE **)&pTLVx10 ); + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + if (outLenx10 < sizeof( sNASGetCSPPLMNModeResponse_Mode )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + *pMode = pTLVx10->mRestrictManualPLMNSelection; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + PackGetPLMNName + +DESCRIPTION: + This function returns PLMN name information for the given MCC/MNC + +PARAMETERS: + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + mcc [ I ] - Mobile country code + mnc [ I ] - Mobile network code + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PackGetPLMNName( + ULONG * pOutLen, + BYTE * pOut, + USHORT mcc, + USHORT mnc ) +{ + // Validate arguments + if (pOut == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Check size + WORD tlvx01Sz = sizeof( sNASGetPLMNNameRequest_PLMN ); + if (*pOutLen < sizeof( sQMIRawContentHeader ) + tlvx01Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + sQMIRawContentHeader * pHeader = (sQMIRawContentHeader*)pOut; + pHeader->mTypeID = 0x01; + pHeader->mLength = tlvx01Sz; + + ULONG offset = sizeof( sQMIRawContentHeader ); + + sNASGetPLMNNameRequest_PLMN * pTLVx01; + pTLVx01 = (sNASGetPLMNNameRequest_PLMN*)(pOut + offset); + memset( pTLVx01, 0, tlvx01Sz ); + + // Set the values + pTLVx01->mMobileCountryCode = mcc; + pTLVx01->mMobileNetworkCode = mnc; + + offset += tlvx01Sz; + *pOutLen = offset; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + ParseGetPLMNName + +DESCRIPTION: + This function returns PLMN name information for the given MCC/MNC + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pNamesSize [I/O] - Upon input the size in BYTEs of the name structure + array. Upon success the actual number of BYTEs + copied to the name structure array + pNames [ O ] - The name structure array + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseGetPLMNName( + ULONG inLen, + const BYTE * pIn, + ULONG * pNamesSize, + BYTE * pNames ) +{ + // Validate arguments + if (pIn == 0 || *pNamesSize == 0 || pNames == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + const BYTE * pTLVx10; + ULONG outLenx10; + ULONG rc = GetTLV( inLen, pIn, 0x10, &outLenx10, (const BYTE **)&pTLVx10 ); + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + // The output format just happens to be the same as + // sNASGetPLMNNameResponse_Name. Copy the full TLV to pNames + if (outLenx10 > *pNamesSize) + { + return eGOBI_ERR_BUFFER_SZ; + } + + memcpy( pNames, pTLVx10, outLenx10 ); + *pNamesSize = outLenx10; + + return eGOBI_ERR_NONE; +} diff --git a/gobi-api/GobiAPI_2013-07-31-1347/Gobi3000Translation/Gobi3000TranslationOMA.cpp b/gobi-api/GobiAPI_2013-07-31-1347/Gobi3000Translation/Gobi3000TranslationOMA.cpp new file mode 100644 index 0000000..eba68c3 --- /dev/null +++ b/gobi-api/GobiAPI_2013-07-31-1347/Gobi3000Translation/Gobi3000TranslationOMA.cpp @@ -0,0 +1,480 @@ +/*=========================================================================== +FILE: + Gobi3000TranslationOMA.cpp + +DESCRIPTION: + QUALCOMM Translation for Gobi 3000 (OMADM Service) + +Copyright (c) 2013, The Linux Foundation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +==========================================================================*/ + +//--------------------------------------------------------------------------- +// Include Files +//--------------------------------------------------------------------------- +#include "Gobi3000Translation.h" + +/*=========================================================================== +METHOD: + PackOMADMStartSession + +DESCRIPTION: + This function starts an OMA-DM session + +PARAMETERS: + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + sessionType [ I ] - Type of session to initiate + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PackOMADMStartSession( + ULONG * pOutLen, + BYTE * pOut, + ULONG sessionType ) +{ + // Validate arguments + if (pOut == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Add sessionType + + // Check size + WORD tlvx10Sz = sizeof( sOMAStartSessionRequest_Type ); + if (*pOutLen < sizeof( sQMIRawContentHeader ) + tlvx10Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + sQMIRawContentHeader * pHeader = (sQMIRawContentHeader*)pOut; + pHeader->mTypeID = 0x10; + pHeader->mLength = tlvx10Sz; + + ULONG offset = sizeof( sQMIRawContentHeader ); + + sOMAStartSessionRequest_Type * pTLVx10; + pTLVx10 = (sOMAStartSessionRequest_Type*)(pOut + offset); + memset( pTLVx10, 0, tlvx10Sz ); + + // Set the value + pTLVx10->mSessionType = (eQMIOMASessionTypes)sessionType; + + offset += tlvx10Sz; + + *pOutLen = offset; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + ParseOMADMGetSessionInfo + +DESCRIPTION: + This function returns information related to the current (or previous + if no session is active) OMA-DM session + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pSessionState [ O ] - State of session + pSessionType [ O ] - Type of session + pFailureReason [ O ] - Session failure reason (when state indicates failure) + pRetryCount [ O ] - Session retry count (when state indicates retrying) + pSessionPause [ O ] - Session pause timer (when state indicates retrying) + pTimeRemaining [ O ] - Pause time remaining (when state indicates retrying) + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseOMADMGetSessionInfo( + ULONG inLen, + const BYTE * pIn, + ULONG * pSessionState, + ULONG * pSessionType, + ULONG * pFailureReason, + BYTE * pRetryCount, + WORD * pSessionPause, + WORD * pTimeRemaining ) +{ + // Validate arguments + if (pIn == 0 || pSessionState == 0 || pSessionType == 0 + || pFailureReason == 0 || pRetryCount == 0 || pSessionPause == 0 + || pTimeRemaining == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Find the first TLV + const sOMAGetSessionInfoResponse_Info * pTLVx10; + ULONG outLenx10; + ULONG rc = GetTLV( inLen, pIn, 0x10, &outLenx10, (const BYTE **)&pTLVx10 ); + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + // Is the TLV large enough? + if (outLenx10 < sizeof( sOMAGetSessionInfoResponse_Info )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + *pSessionState = pTLVx10->mSessionState; + *pSessionType = pTLVx10->mSessionType; + + // Find the second TLV + const sOMAGetSessionInfoResponse_Failure * pTLVx11; + ULONG outLenx11; + rc = GetTLV( inLen, pIn, 0x11, &outLenx11, (const BYTE **)&pTLVx11 ); + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + // Is the TLV large enough? + if (outLenx11 < sizeof( sOMAGetSessionInfoResponse_Failure )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + *pFailureReason = pTLVx11->mSessionFailure; + + // Find the third TLV + const sOMAGetSessionInfoResponse_Retry * pTLVx12; + ULONG outLenx12; + rc = GetTLV( inLen, pIn, 0x12, &outLenx12, (const BYTE **)&pTLVx12 ); + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + // Is the TLV large enough? + if (outLenx12 < sizeof( sOMAGetSessionInfoResponse_Retry )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + *pRetryCount = pTLVx12->mRetryCount; + *pSessionPause = pTLVx12->mRetryPauseTimer; + *pTimeRemaining = pTLVx12->mRemainingTime; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + ParseOMADMGetPendingNIA + +DESCRIPTION: + This function returns information about the pending network initiated + alert + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pSessionType [ O ] - Type of session + pSessionID [ O ] - Unique session ID + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseOMADMGetPendingNIA( + ULONG inLen, + const BYTE * pIn, + ULONG * pSessionType, + USHORT * pSessionID ) +{ + // Validate arguments + if (pIn == 0 || pSessionType == 0 || pSessionID == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Find the TLV + const sOMAGetSessionInfoResponse_NIA * pTLVx13; + ULONG outLenx13; + ULONG rc = GetTLV( inLen, pIn, 0x13, &outLenx13, (const BYTE **)&pTLVx13 ); + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + // Is the TLV large enough? + if (outLenx13 < sizeof( sOMAGetSessionInfoResponse_NIA )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + *pSessionID = pTLVx13->mSessionID; + *pSessionType = pTLVx13->mSessionType; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + PackOMADMSendSelection + +DESCRIPTION: + This function sends the specified OMA-DM selection for the current + network initiated session + +PARAMETERS: + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + selection [ I ] - Selection + sessionID [ I ] - Unique session ID + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PackOMADMSendSelection( + ULONG * pOutLen, + BYTE * pOut, + ULONG selection, + USHORT sessionID ) +{ + // Validate arguments + if (pOut == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Add selection and session ID + + // Check size + WORD tlvx10Sz = sizeof( sOMASendSelectionRequest_Type ); + if (*pOutLen < sizeof( sQMIRawContentHeader ) + tlvx10Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + sQMIRawContentHeader * pHeader = (sQMIRawContentHeader*)pOut; + pHeader->mTypeID = 0x10; + pHeader->mLength = tlvx10Sz; + + ULONG offset = sizeof( sQMIRawContentHeader ); + + sOMASendSelectionRequest_Type * pTLVx10; + pTLVx10 = (sOMASendSelectionRequest_Type*)(pOut + offset); + memset( pTLVx10, 0, tlvx10Sz ); + + // Set the values + pTLVx10->mSelection = (eQMIOMASelections)selection; + pTLVx10->mSessionID = sessionID; + + offset += tlvx10Sz; + + *pOutLen = offset; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + ParseOMADMGetFeatureSettings + +DESCRIPTION: + This function returns the OMA-DM feature settings + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pbProvisioning [ O ] - Device provisioning service update enabled + pbPRLUpdate [ O ] - PRL service update enabled + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseOMADMGetFeatureSettings( + ULONG inLen, + const BYTE * pIn, + ULONG * pbProvisioning, + ULONG * pbPRLUpdate ) +{ + // Validate arguments + if (pIn == 0 || pbProvisioning == 0 || pbPRLUpdate == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Find the first TLV + const sOMAGetFeaturesResponse_Provisioning * pTLVx10; + ULONG outLenx10; + ULONG rc = GetTLV( inLen, pIn, 0x10, &outLenx10, (const BYTE **)&pTLVx10 ); + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + // Is the TLV large enough? + if (outLenx10 < sizeof( sOMAGetFeaturesResponse_Provisioning )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + *pbProvisioning = pTLVx10->mDeviceProvisioningServiceUpdateEnabled; + + // Find the second TLV + const sOMAGetFeaturesResponse_PRLUpdate * pTLVx11; + ULONG outLenx11; + rc = GetTLV( inLen, pIn, 0x11, &outLenx11, (const BYTE **)&pTLVx11 ); + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + // Is the TLV large enough? + if (outLenx10 < sizeof( sOMAGetFeaturesResponse_PRLUpdate )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + *pbPRLUpdate = pTLVx11->mPRLServiceUpdateEnabled; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + PackOMADMSetProvisioningFeature + +DESCRIPTION: + This function sets the OMA-DM device provisioning service + update feature setting + +PARAMETERS: + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + bProvisioning [ I ] - Device provisioning service update enabled + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PackOMADMSetProvisioningFeature( + ULONG * pOutLen, + BYTE * pOut, + ULONG bProvisioning ) +{ + // Validate arguments + if (pOut == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Add bProvisioning + + // Check size + WORD tlvx10Sz = sizeof( sOMASetFeaturesRequest_Provisioning ); + if (*pOutLen < sizeof( sQMIRawContentHeader ) + tlvx10Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + sQMIRawContentHeader * pHeader = (sQMIRawContentHeader*)pOut; + pHeader->mTypeID = 0x10; + pHeader->mLength = tlvx10Sz; + + ULONG offset = sizeof( sQMIRawContentHeader ); + + sOMASetFeaturesRequest_Provisioning * pTLVx10; + pTLVx10 = (sOMASetFeaturesRequest_Provisioning*)(pOut + offset); + memset( pTLVx10, 0, tlvx10Sz ); + + // Set the value + pTLVx10->mDeviceProvisioningServiceUpdateEnabled = (INT8)bProvisioning; + + offset += tlvx10Sz; + *pOutLen = offset; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + PackOMADMSetPRLUpdateFeature + +DESCRIPTION: + This function sets the OMA-DM PRL service update feature setting + +PARAMETERS: + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + bPRLUpdate [ I ] - PRL service update enabled + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PackOMADMSetPRLUpdateFeature( + ULONG * pOutLen, + BYTE * pOut, + ULONG bPRLUpdate ) +{ + // Validate arguments + if (pOut == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Add bPRLUpdate + + // Check size + WORD tlvx11Sz = sizeof( sOMASetFeaturesRequest_PRLUpdate ); + if (*pOutLen < sizeof( sQMIRawContentHeader ) + tlvx11Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + sQMIRawContentHeader * pHeader = (sQMIRawContentHeader*)pOut; + pHeader->mTypeID = 0x11; + pHeader->mLength = tlvx11Sz; + + ULONG offset = sizeof( sQMIRawContentHeader ); + + sOMASetFeaturesRequest_PRLUpdate * pTLVx11; + pTLVx11 = (sOMASetFeaturesRequest_PRLUpdate*)(pOut + offset); + memset( pTLVx11, 0, tlvx11Sz ); + + // Set the value + pTLVx11->mPRLServiceUpdateEnabled = (INT8)bPRLUpdate; + + offset += tlvx11Sz; + *pOutLen = offset; + + return eGOBI_ERR_NONE; +} diff --git a/gobi-api/GobiAPI_2013-07-31-1347/Gobi3000Translation/Gobi3000TranslationPDS.cpp b/gobi-api/GobiAPI_2013-07-31-1347/Gobi3000Translation/Gobi3000TranslationPDS.cpp new file mode 100644 index 0000000..e35e956 --- /dev/null +++ b/gobi-api/GobiAPI_2013-07-31-1347/Gobi3000Translation/Gobi3000TranslationPDS.cpp @@ -0,0 +1,1206 @@ +/*=========================================================================== +FILE: + Gobi3000TranslationPDS.cpp + +DESCRIPTION: + QUALCOMM Translation for Gobi 3000 (Position Determination Service) + +Copyright (c) 2013, The Linux Foundation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +==========================================================================*/ + +//--------------------------------------------------------------------------- +// Include Files +//--------------------------------------------------------------------------- +#include "Gobi3000Translation.h" + +/*=========================================================================== +METHOD: + PackResetPDSData + +DESCRIPTION: + This function resets the specified PDS data + +PARAMETERS: + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + pGPSDataMask [ I ] - Bitmask of GPS data to clear (optional) + pCellDataMask [ I ] - Bitmask of cell data to clear (optional) + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PackResetPDSData( + ULONG * pOutLen, + BYTE * pOut, + ULONG * pGPSDataMask, + ULONG * pCellDataMask ) +{ + // Validate arguments (at least one mask must be present) + if (pOut == 0 || (pGPSDataMask == 0 && pCellDataMask == 0)) + { + return eGOBI_ERR_INVALID_ARG; + } + + sQMIRawContentHeader * pHeader; + ULONG offset = 0; + + // Optionally add pGPSDataMask + if (pGPSDataMask != 0) + { + // Check size + WORD tlvx10Sz = sizeof( sPDSResetPDSDataRequest_GPSData ); + if (*pOutLen < offset + sizeof( sQMIRawContentHeader ) + tlvx10Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + pHeader = (sQMIRawContentHeader*)(pOut + offset); + pHeader->mTypeID = 0x10; + pHeader->mLength = tlvx10Sz; + offset += sizeof( sQMIRawContentHeader ); + + sPDSResetPDSDataRequest_GPSData * pTLVx10; + pTLVx10 = (sPDSResetPDSDataRequest_GPSData*)(pOut + offset); + memset( pTLVx10, 0, tlvx10Sz ); + + // Typecast the input over the bitmask + *(ULONG *)pTLVx10 = *pGPSDataMask; + offset += tlvx10Sz; + } + + // Optionally add pCellDataMask + if (pCellDataMask != 0) + { + // Check size + WORD tlvx11Sz = sizeof( sPDSResetPDSDataRequest_CellData ); + if (*pOutLen < offset + sizeof( sQMIRawContentHeader ) + tlvx11Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + pHeader = (sQMIRawContentHeader*)(pOut + offset); + pHeader->mTypeID = 0x11; + pHeader->mLength = tlvx11Sz; + offset += sizeof( sQMIRawContentHeader ); + + sPDSResetPDSDataRequest_CellData * pTLVx11; + pTLVx11 = (sPDSResetPDSDataRequest_CellData*)(pOut + offset); + memset( pTLVx11, 0, tlvx11Sz ); + + // Typecast the input over the bitmask + *(ULONG *)pTLVx11 = *pCellDataMask; + offset += tlvx11Sz; + } + + *pOutLen = offset; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + PackSetPortAutomaticTracking + +DESCRIPTION: + This function sets the automatic tracking configuration for the NMEA + COM port + +PARAMETERS: + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + bAuto [ I ] - Enable automatic tracking for NMEA COM port? + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PackSetPortAutomaticTracking( + ULONG * pOutLen, + BYTE * pOut, + ULONG bAuto ) +{ + // Validate arguments + if (pOut == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Add bAuto + + // Check size + WORD tlvx01Sz = sizeof( sPDSSetCOMPortAutoTrackingConfigRequest_Config ); + if (*pOutLen < sizeof( sQMIRawContentHeader ) + tlvx01Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + sQMIRawContentHeader * pHeader = (sQMIRawContentHeader*)pOut; + pHeader->mTypeID = 0x01; + pHeader->mLength = tlvx01Sz; + + ULONG offset = sizeof( sQMIRawContentHeader ); + + sPDSSetCOMPortAutoTrackingConfigRequest_Config * pTLVx01; + pTLVx01 = (sPDSSetCOMPortAutoTrackingConfigRequest_Config*)(pOut + offset); + memset( pTLVx01, 0, tlvx01Sz ); + + // Set the value + pTLVx01->mAutoTrackingEnabled = (bAuto == 0 ? 0 : 1); + + offset += tlvx01Sz; + + *pOutLen = offset; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + ParseGetPortAutomaticTracking + +DESCRIPTION: + This function returns the automatic tracking configuration for the NMEA + COM port + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pbAuto [ O ] - Automatic tracking enabled for NMEA COM port? + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseGetPortAutomaticTracking( + ULONG inLen, + const BYTE * pIn, + ULONG * pbAuto ) +{ + // Validate arguments + if (pIn == 0 || pbAuto == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Find pbAuto + const sPDSGetCOMPortAutoTrackingConfigResponse_Config * pTLVx01; + ULONG outLenx01; + ULONG rc = GetTLV( inLen, pIn, 0x01, &outLenx01, (const BYTE **)&pTLVx01 ); + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + // Is the TLV large enough? + if (outLenx01 < sizeof( sPDSGetCOMPortAutoTrackingConfigResponse_Config )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + *pbAuto = pTLVx01->mAutoTrackingEnabled; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + PackSetServiceAutomaticTracking + +DESCRIPTION: + This function sets the automatic tracking state for the service + +PARAMETERS: + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + pbAuto [ I ] - Start automatic tracking session for service? + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PackSetServiceAutomaticTracking( + ULONG * pOutLen, + BYTE * pOut, + ULONG bAuto ) +{ + // Validate arguments + if (pOut == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Add bAuto + + // Check size + WORD tlvx01Sz = sizeof( sPDSSetServiceAutoTrackingStateRequest_State ); + if (*pOutLen < sizeof( sQMIRawContentHeader ) + tlvx01Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + sQMIRawContentHeader * pHeader = (sQMIRawContentHeader*)pOut; + pHeader->mTypeID = 0x01; + pHeader->mLength = tlvx01Sz; + + ULONG offset = sizeof( sQMIRawContentHeader ); + + sPDSSetServiceAutoTrackingStateRequest_State * pTLVx01; + pTLVx01 = (sPDSSetServiceAutoTrackingStateRequest_State*)(pOut + offset); + memset( pTLVx01, 0, tlvx01Sz ); + + // Set the value + pTLVx01->mAutoTrackingEnabled = (bAuto == 0 ? 0 : 1); + + offset += tlvx01Sz; + + *pOutLen = offset; + + return eGOBI_ERR_NONE; +} +/*=========================================================================== +METHOD: + ParseGetServiceAutomaticTracking + +DESCRIPTION: + This function returns the automatic tracking state for the service + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pbAuto [ O ] - Automatic tracking session started for service? + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseGetServiceAutomaticTracking( + ULONG inLen, + const BYTE * pIn, + ULONG * pbAuto ) +{ + // Validate arguments + if (pIn == 0 || pbAuto == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Find pbAuto + const sPDSGetServiceAutoTrackingStateResponse_State * pTLVx01; + ULONG outLenx01; + ULONG rc = GetTLV( inLen, pIn, 0x01, &outLenx01, (const BYTE **)&pTLVx01 ); + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + // Is the TLV large enough? + if (outLenx01 < sizeof( sPDSGetServiceAutoTrackingStateResponse_State )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + *pbAuto = pTLVx01->mAutoTrackingEnabled; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + PackSetAGPSConfig + +DESCRIPTION: + This function sets the PDS AGPS configuration + +PARAMETERS: + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + serverAddress [ I ] - IPv4 address of AGPS server + serverPort [ I ] - Port number of AGPS server + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PackSetAGPSConfig( + ULONG * pOutLen, + BYTE * pOut, + ULONG serverAddress, + ULONG serverPort ) +{ + // Validate arguments + if (pOut == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Add arguments + + // Check size + WORD tlvx10Sz = sizeof( sPDSSetAGPSConfigRequest_Server ); + if (*pOutLen < sizeof( sQMIRawContentHeader ) + tlvx10Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + sQMIRawContentHeader * pHeader = (sQMIRawContentHeader*)pOut; + pHeader->mTypeID = 0x10; + pHeader->mLength = tlvx10Sz; + + ULONG offset = sizeof( sQMIRawContentHeader ); + + sPDSSetAGPSConfigRequest_Server * pTLVx10; + pTLVx10 = (sPDSSetAGPSConfigRequest_Server*)(pOut + offset); + memset( pTLVx10, 0, tlvx10Sz ); + + ULONG ip0 = (serverAddress & 0x000000FF); + ULONG ip1 = (serverAddress & 0x0000FF00) >> 8; + ULONG ip2 = (serverAddress & 0x00FF0000) >> 16; + ULONG ip3 = (serverAddress & 0xFF000000) >> 24; + + // Set the values + pTLVx10->mServerAddress[0] = (INT8)ip0; + pTLVx10->mServerAddress[1] = (INT8)ip1; + pTLVx10->mServerAddress[2] = (INT8)ip2; + pTLVx10->mServerAddress[3] = (INT8)ip3; + pTLVx10->mServerPort = serverPort; + + offset += tlvx10Sz; + + *pOutLen = offset; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + ParseGetAGPSConfig + +DESCRIPTION: + This function returns the PDS AGPS configuration + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pServerAddress [ O ] - IPv4 address of AGPS server + pServerPort [ O ] - Port number of AGPS server + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseGetAGPSConfig( + ULONG inLen, + const BYTE * pIn, + ULONG * pServerAddress, + ULONG * pServerPort ) +{ + // Validate arguments + if (pIn == 0 || pServerAddress == 0 || pServerPort == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Find arguments + const sPDSGetAGPSConfigResponse_ServerAddress * pTLVx01; + ULONG outLenx01; + ULONG rc = GetTLV( inLen, pIn, 0x01, &outLenx01, (const BYTE **)&pTLVx01 ); + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + // Is the TLV large enough? + if (outLenx01 < sizeof( sPDSGetAGPSConfigResponse_ServerAddress )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + *pServerPort = pTLVx01->mServerPort; + + ULONG ip0 = (ULONG)pTLVx01->mServerAddress[0]; + ULONG ip1 = (ULONG)pTLVx01->mServerAddress[1] << 8; + ULONG ip2 = (ULONG)pTLVx01->mServerAddress[2] << 16; + ULONG ip3 = (ULONG)pTLVx01->mServerAddress[3] << 24; + *pServerAddress = (ip0 | ip1 | ip2 | ip3); + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + PackSetXTRATimeState + +DESCRIPTION: + This function sets the XTRA time positioning state + +PARAMETERS: + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + state [ I ] - XTRA time positioning state + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PackSetXTRATimeState( + ULONG * pOutLen, + BYTE * pOut, + ULONG state ) +{ + // Validate arguments + if (pOut == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Add state + + // Check size + WORD tlvx10Sz = sizeof( sPDSSetPositionMethodsStateRequest_XTRATime ); + if (*pOutLen < sizeof( sQMIRawContentHeader ) + tlvx10Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + sQMIRawContentHeader * pHeader = (sQMIRawContentHeader*)pOut; + pHeader->mTypeID = 0x10; + pHeader->mLength = tlvx10Sz; + + ULONG offset = sizeof( sQMIRawContentHeader ); + + sPDSSetPositionMethodsStateRequest_XTRATime * pTLVx10; + pTLVx10 = (sPDSSetPositionMethodsStateRequest_XTRATime*)(pOut + offset); + memset( pTLVx10, 0, tlvx10Sz ); + + // Set the value + pTLVx10->mMethodState = (eQMIPDSMethodStates)state; + + offset += tlvx10Sz; + *pOutLen = offset; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + ParseGetXTRATimeState + +DESCRIPTION: + This function returns the XTRA time positioning state + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pState [ O ] - XTRA time positioning state + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseGetXTRATimeState( + ULONG inLen, + const BYTE * pIn, + ULONG * pState ) +{ + // Validate arguments + if (pIn == 0 || pState == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Find pState + const sPDSGetPositionMethodsStateResponse_XTRATime * pTLVx10; + ULONG outLenx10; + ULONG rc = GetTLV( inLen, pIn, 0x10, &outLenx10, (const BYTE **)&pTLVx10 ); + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + // Is the TLV large enough? + if (outLenx10 < sizeof( sPDSGetPositionMethodsStateResponse_XTRATime )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + *pState = pTLVx10->mMethodState; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + PackSetXTRADataState + +DESCRIPTION: + This function sets the XTRA data positioning state + +PARAMETERS: + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + state [ I ] - XTRA data positioning state + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PackSetXTRADataState( + ULONG * pOutLen, + BYTE * pOut, + ULONG state ) +{ + // Validate arguments + if (pOut == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Add state + + // Check size + WORD tlvx10Sz = sizeof( sPDSSetPositionMethodsStateRequest_XTRAData ); + if (*pOutLen < sizeof( sQMIRawContentHeader ) + tlvx10Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + sQMIRawContentHeader * pHeader = (sQMIRawContentHeader*)pOut; + pHeader->mTypeID = 0x10; + pHeader->mLength = tlvx10Sz; + + ULONG offset = sizeof( sQMIRawContentHeader ); + + sPDSSetPositionMethodsStateRequest_XTRAData * pTLVx10; + pTLVx10 = (sPDSSetPositionMethodsStateRequest_XTRAData*)(pOut + offset); + memset( pTLVx10, 0, tlvx10Sz ); + + // Set the value + pTLVx10->mMethodState = (eQMIPDSMethodStates)state; + + offset += tlvx10Sz; + *pOutLen = offset; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + ParseGetXTRADataState + +DESCRIPTION: + This function returns the XTRA data positioning state + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pState [ O ] - XTRA data positioning state + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseGetXTRADataState( + ULONG inLen, + const BYTE * pIn, + ULONG * pState ) +{ + // Validate arguments + if (pIn == 0 || pState == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Find pState + const sPDSGetPositionMethodsStateResponse_XTRAData * pTLVx10; + ULONG outLenx10; + ULONG rc = GetTLV( inLen, pIn, 0x10, &outLenx10, (const BYTE **)&pTLVx10 ); + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + // Is the TLV large enough? + if (outLenx10 < sizeof( sPDSGetPositionMethodsStateResponse_XTRAData )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + *pState = pTLVx10->mMethodState; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + ParseGetXTRAValidity + +DESCRIPTION: + This function returns the XTRA database validity period + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pGPSWeek [ O ] - Starting GPS week of validity period + pGPSWeekOffset [ O ] - Starting GPS week offset (minutes) of validity period + pDuration [ O ] - Length of validity period (hours) + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseGetXTRAValidity( + ULONG inLen, + const BYTE * pIn, + USHORT * pGPSWeek, + USHORT * pGPSWeekOffset, + USHORT * pDuration ) +{ + // Validate arguments + if (pIn == 0 || pGPSWeek == 0 || pGPSWeekOffset == 0 || pDuration == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Find arguments + const sPDSGetXTRAParametersResponse_Validity * pTLVx13; + ULONG outLenx13; + ULONG rc = GetTLV( inLen, pIn, 0x13, &outLenx13, (const BYTE **)&pTLVx13 ); + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + // Is the TLV large enough? + if (outLenx13 < sizeof( sPDSGetXTRAParametersResponse_Validity )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + *pDuration = pTLVx13->mValidPeriodDurationInHours; + *pGPSWeek = pTLVx13->mValidPeriodGPSStartWeek; + *pGPSWeekOffset = pTLVx13->mValidPeriodGPSStartWeekOffsetInMinutes; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + PackSetXTRANetwork + +DESCRIPTION: + This function sets the XTRA WWAN network preference + +PARAMETERS: + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + preference [ I ] - XTRA WWAN network preference + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PackSetXTRANetwork( + ULONG * pOutLen, + BYTE * pOut, + ULONG preference ) +{ + // Validate arguments + if (pOut == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Add preference + + // Check size + WORD tlvx12Sz = sizeof( sPDSSetXTRAParametersRequest_Network ); + if (*pOutLen < sizeof( sQMIRawContentHeader ) + tlvx12Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + sQMIRawContentHeader * pHeader = (sQMIRawContentHeader*)pOut; + pHeader->mTypeID = 0x12; + pHeader->mLength = tlvx12Sz; + + ULONG offset = sizeof( sQMIRawContentHeader ); + + sPDSSetXTRAParametersRequest_Network * pTLVx12; + pTLVx12 = (sPDSSetXTRAParametersRequest_Network*)(pOut + offset); + memset( pTLVx12, 0, tlvx12Sz ); + + // Set the value + pTLVx12->mWWANNetworkPreference = (eQMIPDSWWANNetworkPreferences)preference; + + offset += tlvx12Sz; + *pOutLen = offset; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + ParseGetXTRANetwork + +DESCRIPTION: + This function returns the XTRA WWAN network preference + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pPreference [ O ] - XTRA WWAN network preference + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseGetXTRANetwork( + ULONG inLen, + const BYTE * pIn, + ULONG * pPreference ) +{ + // Validate arguments + if (pIn == 0 || pPreference == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Find pPreference + const sPDSGetXTRAParametersResponse_Network * pTLVx12; + ULONG outLenx12; + ULONG rc = GetTLV( inLen, pIn, 0x12, &outLenx12, (const BYTE **)&pTLVx12 ); + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + // Is the TLV large enough? + if (outLenx12 < sizeof( sPDSGetXTRAParametersResponse_Network )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + *pPreference = pTLVx12->mWWANNetworkPreference; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + PackSetXTRAAutomaticDownload + +DESCRIPTION: + This function sets the XTRA automatic download configuration + +PARAMETERS: + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + bEnabled [ I ] - Automatic download enabled? + interval [ I ] - Interval (hours) between XTRA downloads + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PackSetXTRAAutomaticDownload( + ULONG * pOutLen, + BYTE * pOut, + ULONG bEnabled, + USHORT interval ) +{ + // Validate arguments + if (pOut == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Add arguments + + // Check size + WORD tlvx10Sz = sizeof( sPDSSetXTRAParametersRequest_Automatic ); + if (*pOutLen < sizeof( sQMIRawContentHeader ) + tlvx10Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + sQMIRawContentHeader * pHeader = (sQMIRawContentHeader*)pOut; + pHeader->mTypeID = 0x10; + pHeader->mLength = tlvx10Sz; + + ULONG offset = sizeof( sQMIRawContentHeader ); + + sPDSSetXTRAParametersRequest_Automatic * pTLVx10; + pTLVx10 = (sPDSSetXTRAParametersRequest_Automatic*)(pOut + offset); + memset( pTLVx10, 0, tlvx10Sz ); + + // Set the value + pTLVx10->mAutomaticDownloadEnabled = (bEnabled == 0 ? 0 : 1); + pTLVx10->mDownloadIntervalInHours = interval; + + offset += tlvx10Sz; + *pOutLen = offset; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + ParseGetXTRAAutomaticDownload + +DESCRIPTION: + This function returns the XTRA automatic download configuration + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pbEnabled [ O ] - Automatic download enabled? + pInterval [ O ] - Interval (hours) between XTRA downloads + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseGetXTRAAutomaticDownload( + ULONG inLen, + const BYTE * pIn, + ULONG * pbEnabled, + USHORT * pInterval ) +{ + // Validate arguments + if (pIn == 0 || pbEnabled == 0 || pInterval == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Find arguments + const sPDSGetXTRAParametersResponse_Automatic * pTLVx10; + ULONG outLenx10; + ULONG rc = GetTLV( inLen, pIn, 0x10, &outLenx10, (const BYTE **)&pTLVx10 ); + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + // Is the TLV large enough? + if (outLenx10 < sizeof( sPDSGetXTRAParametersResponse_Automatic )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + *pbEnabled = pTLVx10->mAutomaticDownloadEnabled; + *pInterval = pTLVx10->mDownloadIntervalInHours; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + ParseGetPDSState + +DESCRIPTION: + This function returns the current PDS state + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pEnabled [ O ] - Current PDS state (0 = disabled) + pTracking [ O ] - Current PDS tracking session state + + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseGetPDSState( + ULONG inLen, + const BYTE * pIn, + ULONG * pEnabled, + ULONG * pTracking ) +{ + // Validate arguments + if (pIn == 0 || pEnabled == 0 || pTracking == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Find arguments + const sPDSGetServiceStateResponse_State * pTLVx01; + ULONG outLenx01; + ULONG rc = GetTLV( inLen, pIn, 0x01, &outLenx01, (const BYTE **)&pTLVx01 ); + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + // Is the TLV large enough? + if (outLenx01 < sizeof( sPDSGetServiceStateResponse_State )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + *pEnabled = pTLVx01->mServiceEnabled; + *pTracking = pTLVx01->mTrackingSessionState; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + PackSetPDSState + +DESCRIPTION: + This function sets the PDS state + +PARAMETERS: + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + enable [ I ] - Desired PDS state (0 = disable) + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PackSetPDSState( + ULONG * pOutLen, + BYTE * pOut, + ULONG enable ) +{ + // Validate arguments + if (pOut == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Add enable + + // Check size + WORD tlvx01Sz = sizeof( sPDSSetServiceStateRequest_State ); + if (*pOutLen < sizeof( sQMIRawContentHeader ) + tlvx01Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + sQMIRawContentHeader * pHeader = (sQMIRawContentHeader*)pOut; + pHeader->mTypeID = 0x01; + pHeader->mLength = tlvx01Sz; + + ULONG offset = sizeof( sQMIRawContentHeader ); + + sPDSSetServiceStateRequest_State * pTLVx01; + pTLVx01 = (sPDSSetServiceStateRequest_State*)(pOut + offset); + memset( pTLVx01, 0, tlvx01Sz ); + + // Set the value + pTLVx01->mServiceEnabled = (enable == 0 ? 0 : 1); + + offset += tlvx01Sz; + *pOutLen = offset; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + PackPDSInjectTimeReference + +DESCRIPTION: + This function injects a system time into the PDS engine + +PARAMETERS: + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + sysTime [ I ] - System time + sysDiscontinuities [ I ] - Number of system time discontinuities + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PackPDSInjectTimeReference( + ULONG * pOutLen, + BYTE * pOut, + ULONGLONG systemTime, + USHORT systemDiscontinuities ) +{ + // Validate arguments + if (pOut == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Add arguments + + // Check size + WORD tlvx01Sz = sizeof( sPDSInjectTimeReferenceRequest_Time ); + if (*pOutLen < sizeof( sQMIRawContentHeader ) + tlvx01Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + sQMIRawContentHeader * pHeader = (sQMIRawContentHeader*)pOut; + pHeader->mTypeID = 0x01; + pHeader->mLength = tlvx01Sz; + + ULONG offset = sizeof( sQMIRawContentHeader ); + + sPDSInjectTimeReferenceRequest_Time * pTLVx01; + pTLVx01 = (sPDSInjectTimeReferenceRequest_Time*)(pOut + offset); + memset( pTLVx01, 0, tlvx01Sz ); + + // Set the values + pTLVx01->mSystemTimeMilliseconds = systemTime; + pTLVx01->mSystemDiscontinuties = systemDiscontinuities; + + offset += tlvx01Sz; + *pOutLen = offset; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + ParseGetPDSDefaults + +DESCRIPTION: + This function returns the default tracking session configuration + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOperation [ O ] - Current session operating mode + pTimeout [ O ] - Maximum amount of time (seconds) to work on each fix + pInterval [ O ] - Interval (milliseconds) between fix requests + pAccuracy [ O ] - Current accuracy threshold (meters) + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseGetPDSDefaults( + ULONG inLen, + const BYTE * pIn, + ULONG * pOperation, + BYTE * pTimeout, + ULONG * pInterval, + ULONG * pAccuracy ) +{ + // Validate arguments + if (pIn == 0 || pOperation == 0 || pTimeout == 0 + || pInterval == 0 || pAccuracy == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Find arguments + const sPDSGetDefaultsResponse_Defaults * pTLVx01; + ULONG outLenx01; + ULONG rc = GetTLV( inLen, pIn, 0x01, &outLenx01, (const BYTE **)&pTLVx01 ); + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + // Is the TLV large enough? + if (outLenx01 < sizeof( sPDSGetDefaultsResponse_Defaults )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + *pOperation = pTLVx01->mSessionOperation; + *pTimeout = pTLVx01->mTimeoutSeconds; + *pInterval = pTLVx01->mFixRequestIntervalSeconds; + *pAccuracy = pTLVx01->mDesiredAccuracyMeters; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + PackSetPDSDefaults + +DESCRIPTION: + This function sets the default tracking session configuration + +PARAMETERS: + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + operation [ I ] - Desired session operating mode + timeout [ I ] - Maximum amount of time (seconds) to work on each fix + interval [ I ] - Interval (milliseconds) between fix requests + accuracy [ I ] - Desired accuracy threshold (meters) + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PackSetPDSDefaults( + ULONG * pOutLen, + BYTE * pOut, + ULONG operation, + BYTE timeout, + ULONG interval, + ULONG accuracy ) +{ + // Validate arguments + if (pOut == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Add arguments + + // Check size + WORD tlvx01Sz = sizeof( sPDSSetDefaultsRequest_Defaults ); + if (*pOutLen < sizeof( sQMIRawContentHeader ) + tlvx01Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + sQMIRawContentHeader * pHeader = (sQMIRawContentHeader*)pOut; + pHeader->mTypeID = 0x01; + pHeader->mLength = tlvx01Sz; + + ULONG offset = sizeof( sQMIRawContentHeader ); + + sPDSSetDefaultsRequest_Defaults * pTLVx01; + pTLVx01 = (sPDSSetDefaultsRequest_Defaults*)(pOut + offset); + memset( pTLVx01, 0, tlvx01Sz ); + + // Set the values + pTLVx01->mDesiredAccuracyMeters = accuracy; + pTLVx01->mFixRequestIntervalSeconds = interval; + pTLVx01->mSessionOperation = (eQMIPDSOperationTypes)operation; + pTLVx01->mTimeoutSeconds = timeout; + + offset += tlvx01Sz; + + *pOutLen = offset; + + return eGOBI_ERR_NONE; +} diff --git a/gobi-api/GobiAPI_2013-07-31-1347/Gobi3000Translation/Gobi3000TranslationRMS.cpp b/gobi-api/GobiAPI_2013-07-31-1347/Gobi3000Translation/Gobi3000TranslationRMS.cpp new file mode 100644 index 0000000..816521f --- /dev/null +++ b/gobi-api/GobiAPI_2013-07-31-1347/Gobi3000Translation/Gobi3000TranslationRMS.cpp @@ -0,0 +1,187 @@ +/*=========================================================================== +FILE: + Gobi3000TranslationRMS.cpp + +DESCRIPTION: + QUALCOMM Translation for Gobi 3000 (Remote Management Service) + +Copyright (c) 2013, The Linux Foundation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +==========================================================================*/ + +//--------------------------------------------------------------------------- +// Include Files +//--------------------------------------------------------------------------- +#include "Gobi3000Translation.h" + +/*=========================================================================== +METHOD: + ParseGetSMSWake + +DESCRIPTION: + This function queries the state of the SMS wake functionality + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pbEnabled [ O ] - SMS wake functionality enabled? + pWakeMask [ O ] - SMS wake mask (only relevant when enabled) + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseGetSMSWake( + ULONG inLen, + const BYTE * pIn, + ULONG * pbEnabled, + ULONG * pWakeMask ) +{ + // Validate arguments + if (pIn == 0 || pbEnabled == 0 || pWakeMask == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Find the first TLV + const sRMSGetSMSWakeResponse_State * pTLVx10; + ULONG outLenx10; + ULONG rc = GetTLV( inLen, pIn, 0x10, &outLenx10, (const BYTE **)&pTLVx10 ); + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + // Is the TLV large enough? + if (outLenx10 < sizeof( sRMSGetSMSWakeResponse_State )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + // Find the second TLV + const sRMSGetSMSWakeRequest_Mask * pTLVx11; + ULONG outLenx11; + rc = GetTLV( inLen, pIn, 0x11, &outLenx11, (const BYTE **)&pTLVx11 ); + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + // Is the TLV large enough? + if (outLenx11 < sizeof( sRMSGetSMSWakeRequest_Mask )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + *pbEnabled = pTLVx10->mSMSWakeEnabled; + *pWakeMask = pTLVx11->mMask; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + PackSetSMSWake + +DESCRIPTION: + This function enables/disables the SMS wake functionality + +PARAMETERS: + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + bEnable [ I ] - Enable SMS wake functionality? + wakeMask [ I ] - SMS wake mask (only relevant when enabling) + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PackSetSMSWake( + ULONG * pOutLen, + BYTE * pOut, + ULONG bEnable, + ULONG wakeMask ) +{ + // Validate arguments + if (pOut == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Add bEnable + + // Check size + WORD tlvx10Sz = sizeof( sRMSSetSMSWakeRequest_State ); + if (*pOutLen < sizeof( sQMIRawContentHeader ) + tlvx10Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + sQMIRawContentHeader * pHeader = (sQMIRawContentHeader*)pOut; + pHeader->mTypeID = 0x10; + pHeader->mLength = tlvx10Sz; + + ULONG offset = sizeof( sQMIRawContentHeader ); + + sRMSSetSMSWakeRequest_State * pTLVx10; + pTLVx10 = (sRMSSetSMSWakeRequest_State*)(pOut + offset); + memset( pTLVx10, 0, tlvx10Sz ); + + // Set the value + pTLVx10->mSMSWakeEnabled = (INT8)bEnable; + + offset += tlvx10Sz; + + // Add wakeMask if enabled + if (bEnable != 0) + { + // Check size + WORD tlvx11Sz = sizeof( sRMSSetSMSWakeRequest_Mask ); + if (*pOutLen < offset + sizeof( sQMIRawContentHeader ) + tlvx11Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + pHeader = (sQMIRawContentHeader*)(pOut + offset); + pHeader->mTypeID = 0x11; + pHeader->mLength = tlvx11Sz; + + offset += sizeof( sQMIRawContentHeader ); + + sRMSSetSMSWakeRequest_Mask * pTLVx11; + pTLVx11 = (sRMSSetSMSWakeRequest_Mask*)(pOut + offset); + memset( pTLVx11, 0, tlvx11Sz ); + + // Set the value + pTLVx11->mMask = wakeMask; + + offset += tlvx11Sz; + } + + *pOutLen = offset; + + return eGOBI_ERR_NONE; +} diff --git a/gobi-api/GobiAPI_2013-07-31-1347/Gobi3000Translation/Gobi3000TranslationUIM.cpp b/gobi-api/GobiAPI_2013-07-31-1347/Gobi3000Translation/Gobi3000TranslationUIM.cpp new file mode 100644 index 0000000..6bce7ce --- /dev/null +++ b/gobi-api/GobiAPI_2013-07-31-1347/Gobi3000Translation/Gobi3000TranslationUIM.cpp @@ -0,0 +1,1169 @@ +/*=========================================================================== +FILE: + Gobi3000TranslationUIM.cpp + +DESCRIPTION: + QUALCOMM Translation for Gobi 3000 (DMS_UIM Service) + +Copyright (c) 2013, The Linux Foundation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +==========================================================================*/ + +//--------------------------------------------------------------------------- +// Include Files +//--------------------------------------------------------------------------- +#include "Gobi3000Translation.h" + +/*=========================================================================== +METHOD: + ParseUIMUnblockControlKey + +DESCRIPTION: + This function unblocks the specified facility control key + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pUnblockRetriesLeft [ O ] - The number of unblock retries left, after + which the control key will be permanently + blocked + (0xFFFFFFFF = unknown) +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseUIMUnblockControlKey( + ULONG inLen, + const BYTE * pIn, + ULONG * pUnblockRetriesLeft ) +{ + // Validate arguments + if (pIn == 0 || pUnblockRetriesLeft == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Find the TLV + const sDMSUIMUnblockControlKeyResponse_Status * pTLVx10; + ULONG outLenx10; + ULONG rc = GetTLV( inLen, pIn, 0x10, &outLenx10, (const BYTE **)&pTLVx10 ); + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + // Is the TLV large enough? + if (outLenx10 < sizeof( sDMSUIMUnblockControlKeyResponse_Status )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + *pUnblockRetriesLeft = pTLVx10->mRemainingUnblockRetries; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + PackUIMUnblockControlKey + +DESCRIPTION: + This function unblocks the specified facility control key + +PARAMETERS: + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + id [ I ] - Facility ID + pValue [ I ] - Control key de-personalization string + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PackUIMUnblockControlKey( + ULONG * pOutLen, + BYTE * pOut, + ULONG id, + CHAR * pValue ) +{ + // Validate arguments + if (pOut == 0 + || pValue == 0 + || pValue[0] == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Add arguments + std::string val( pValue ); + UINT8 valSz = (UINT8)val.size(); + + // Check size + WORD tlvx01Sz = sizeof( sDMSUIMUnblockControlKeyRequest_Facility ) + valSz; + if (*pOutLen < sizeof( sQMIRawContentHeader ) + tlvx01Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + sQMIRawContentHeader * pHeader = (sQMIRawContentHeader*)pOut; + pHeader->mTypeID = 0x01; + pHeader->mLength = tlvx01Sz; + + ULONG offset = sizeof( sQMIRawContentHeader ); + + sDMSUIMUnblockControlKeyRequest_Facility * pTLVx01; + pTLVx01 = (sDMSUIMUnblockControlKeyRequest_Facility*)(pOut + offset); + memset( pTLVx01, 0, tlvx01Sz ); + + // Set the values + pTLVx01->mFacility = (eQMIDMSUIMFacility)id; + pTLVx01->mControlKeyLength = valSz; + + offset += sizeof( sDMSUIMUnblockControlKeyRequest_Facility ); + + memcpy( (pOut + offset), (LPCSTR)val.c_str(), valSz ); + offset += valSz; + + *pOutLen = offset; + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + ParseUIMSetControlKeyProtection + +DESCRIPTION: + This function changes the specified facility control key + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pVerifyRetriesLeft [ O ] - Upon operational failure this will indicate + the number of retries left, after which the + control key will be blocked + (0xFFFFFFFF = unknown) +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseUIMSetControlKeyProtection( + ULONG inLen, + const BYTE * pIn, + ULONG * pVerifyRetriesLeft ) +{ + // Validate arguments + if (pIn == 0 || pVerifyRetriesLeft == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Find the TLV + const sDMSUIMSetControlKeyProtectionResponse_Status * pTLVx10; + ULONG outLenx10; + ULONG rc = GetTLV( inLen, pIn, 0x10, &outLenx10, (const BYTE **)&pTLVx10 ); + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + // Is the TLV large enough? + if (outLenx10 < sizeof( sDMSUIMSetControlKeyProtectionResponse_Status )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + *pVerifyRetriesLeft = pTLVx10->mRemainingVerifyRetries; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + PackUIMSetControlKeyProtection + +DESCRIPTION: + This function changes the specified facility control key + +PARAMETERS: + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + id [ I ] - Facility ID + status [ I ] - Control key status + pValue [ I ] - Control key de-personalization string + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PackUIMSetControlKeyProtection( + ULONG * pOutLen, + BYTE * pOut, + ULONG id, + ULONG status, + CHAR * pValue ) +{ + // Validate arguments + if (pOut == 0 + || pValue == 0 + || pValue[0] == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Add arguments + std::string val( pValue ); + UINT8 valSz = (UINT8)val.size(); + + // Check size + WORD tlvx01Sz = sizeof( sDMSUIMSetControlKeyProtectionRequest_Facility ) + valSz; + if (*pOutLen < sizeof( sQMIRawContentHeader ) + tlvx01Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + sQMIRawContentHeader * pHeader = (sQMIRawContentHeader*)pOut; + pHeader->mTypeID = 0x01; + pHeader->mLength = tlvx01Sz; + + ULONG offset = sizeof( sQMIRawContentHeader ); + + sDMSUIMSetControlKeyProtectionRequest_Facility * pTLVx01; + pTLVx01 = (sDMSUIMSetControlKeyProtectionRequest_Facility*)(pOut + offset); + memset( pTLVx01, 0, tlvx01Sz ); + + // Set the values + pTLVx01->mFacility = (eQMIDMSUIMFacility)id; + pTLVx01->mFacilityState = (eQMIDMSUIMFacilityStates)status; + pTLVx01->mControlKeyLength = (UINT8)valSz; + + offset += sizeof( sDMSUIMSetControlKeyProtectionRequest_Facility ); + + memcpy( (pOut + offset), val.c_str(), valSz ); + offset += valSz; + + *pOutLen = offset; + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + ParseUIMGetControlKeyBlockingStatus + +DESCRIPTION: + This function returns the status of the specified facility control key + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pStatus [ O ] - Control key status + pVerifyRetriesLeft [ O ] - The number of retries left, after which the + control key will be blocked + pUnblockRetriesLeft [ O ] - The number of unblock retries left, after + which the control key will be permanently + blocked + pbBlocking [ O ] - (Optional) Is the facility blocking? + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseUIMGetControlKeyBlockingStatus( + ULONG inLen, + const BYTE * pIn, + ULONG * pStatus, + ULONG * pVerifyRetriesLeft, + ULONG * pUnblockRetriesLeft, + ULONG * pbBlocking ) +{ + // Validate arguments + if (pIn == 0 + || pStatus == 0 + || pVerifyRetriesLeft == 0 + || pUnblockRetriesLeft == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Find the first arguments + const sDMSUIMGetControlKeyStatusResponse_Status * pTLVx01; + ULONG outLenx01; + ULONG rc = GetTLV( inLen, pIn, 0x01, &outLenx01, (const BYTE **)&pTLVx01 ); + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + // Is the TLV large enough? + if (outLenx01 < sizeof( sDMSUIMGetControlKeyStatusResponse_Status )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + *pVerifyRetriesLeft = pTLVx01->mRemainingVerifyRetries; + *pUnblockRetriesLeft = pTLVx01->mRemainingUnblockRetries; + *pStatus = pTLVx01->mFacilityState; + + // Find the last (optional) argument + if (pbBlocking != 0) + { + const sDMSUIMGetControlKeyStatusResponse_Blocking * pTLVx10; + ULONG tlvLenx10; + rc = GetTLV( inLen, pIn, 0x10, &tlvLenx10, (const BYTE **)&pTLVx10 ); + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + // Is the TLV large enough? + if (tlvLenx10 < sizeof( sDMSUIMGetControlKeyStatusResponse_Blocking )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + *pbBlocking = pTLVx10->mOperationBlocking; + } + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + PackUIMGetControlKeyBlockingStatus + +DESCRIPTION: + This function returns the status of the specified facility control key + +PARAMETERS: + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + id [ I ] - Facility ID + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PackUIMGetControlKeyBlockingStatus( + ULONG * pOutLen, + BYTE * pOut, + ULONG id ) +{ + // Validate arguments + if (pOut == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Add id + + // Check size + WORD tlvx01Sz = sizeof( sDMSUIMGetControlKeyStatusRequest_Facility ); + if (*pOutLen < sizeof( sQMIRawContentHeader ) + tlvx01Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + sQMIRawContentHeader * pHeader = (sQMIRawContentHeader*)pOut; + pHeader->mTypeID = 0x01; + pHeader->mLength = tlvx01Sz; + + ULONG offset = sizeof( sQMIRawContentHeader ); + + sDMSUIMGetControlKeyStatusRequest_Facility * pTLVx01; + pTLVx01 = (sDMSUIMGetControlKeyStatusRequest_Facility*)(pOut + offset); + memset( pTLVx01, 0, tlvx01Sz ); + + // Set the values + pTLVx01->mFacility = (eQMIDMSUIMFacility)id; + + offset += tlvx01Sz; + + *pOutLen = offset; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + ParseUIMGetControlKeyStatus + +DESCRIPTION: + This function returns the status of the specified facility control key + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pStatus [ O ] - Control key status + pVerifyRetriesLeft [ O ] - The number of retries left, after which the + control key will be blocked + pUnblockRetriesLeft [ O ] - The number of unblock retries left, after + which the control key will be permanently + blocked + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseUIMGetControlKeyStatus( + ULONG inLen, + const BYTE * pIn, + ULONG * pStatus, + ULONG * pVerifyRetriesLeft, + ULONG * pUnblockRetriesLeft ) +{ + // Validate arguments + if (pIn == 0 + || pStatus == 0 + || pVerifyRetriesLeft == 0 + || pUnblockRetriesLeft == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Find the arguments + const sDMSUIMGetControlKeyStatusResponse_Status * pTLVx01; + ULONG outLenx01; + ULONG rc = GetTLV( inLen, pIn, 0x01, &outLenx01, (const BYTE **)&pTLVx01 ); + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + // Is the TLV large enough? + if (outLenx01 < sizeof( sDMSUIMGetControlKeyStatusResponse_Status )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + *pVerifyRetriesLeft = pTLVx01->mRemainingVerifyRetries; + *pUnblockRetriesLeft = pTLVx01->mRemainingUnblockRetries; + *pStatus = pTLVx01->mFacilityState; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + PackUIMGetControlKeyStatus + +DESCRIPTION: + This function requests the status of the specified facility control key + +PARAMETERS: + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + id [ I ] - Facility ID + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PackUIMGetControlKeyStatus( + ULONG * pOutLen, + BYTE * pOut, + ULONG id ) +{ + // Request is the same as PackUIMGetControlKeyBlockingStatus + return PackUIMGetControlKeyBlockingStatus( pOutLen, + pOut, + id ); +} + +/*=========================================================================== +METHOD: + ParseUIMGetICCID + +DESCRIPTION: + This function returns the UIM ICCID + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + stringSize [ I ] - The maximum number of characters (including NULL + terminator) that the string array can contain + pString [ O ] - NULL terminated string + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseUIMGetICCID( + ULONG inLen, + const BYTE * pIn, + BYTE stringSize, + CHAR * pString ) +{ + // Validate arguments + if (pIn == 0 || stringSize == 0 || pString == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Find the TLV + const sDMSUIMGetICCIDResponse_ICCID * pTLVx01; + ULONG outLenx01; + ULONG rc = GetTLV( inLen, pIn, 0x01, &outLenx01, (const BYTE **)&pTLVx01 ); + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + // Is the TLV large enough? + if (outLenx01 < sizeof( sDMSUIMGetICCIDResponse_ICCID )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + // The TLV only contains the string + + // Space to perform the copy? + if (stringSize < outLenx01 + 1) + { + return eGOBI_ERR_BUFFER_SZ; + } + + memcpy( pString, (const CHAR*)pTLVx01, outLenx01 ); + pString[outLenx01] = 0; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + ParseUIMGetPINStatus + +DESCRIPTION: + This function returns the status of the pin + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + id [ I ] - PIN ID (1/2) + pStatus [ O ] - PIN status (0xFFFFFFFF = unknown) + pVerifyRetriesLeft [ O ] - The number of retries left, after which the + PIN will be blocked (0xFFFFFFFF = unknown) + pUnblockRetriesLeft [ O ] - The number of unblock retries left, after + which the PIN will be permanently blocked, + i.e. UIM is unusable (0xFFFFFFFF = unknown) + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseUIMGetPINStatus( + ULONG inLen, + const BYTE * pIn, + ULONG id, + ULONG * pStatus, + ULONG * pVerifyRetriesLeft, + ULONG * pUnblockRetriesLeft ) +{ + // Validate arguments + if (pIn == 0 + || id < 1 + || id > 2 + || pStatus == 0 + || pVerifyRetriesLeft == 0 + || pUnblockRetriesLeft == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + ULONG tlvLen; + + // The typeID is either 0x11 or 0x12 + if (id == 1) + { + const sDMSUIMGetPINStatusResponse_PIN1Status * pTLV11; + ULONG rc = GetTLV( inLen, pIn, 0x11, &tlvLen, (const BYTE **)&pTLV11 ); + + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + // Is the TLV large enough? + if (tlvLen < sizeof( sDMSUIMGetPINStatusResponse_PIN1Status )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + *pVerifyRetriesLeft = pTLV11->mRemainingVerifyRetries; + *pUnblockRetriesLeft = pTLV11->mRemainingUnblockRetries; + *pStatus = pTLV11->mPINStatus; + } + else if (id == 2) + { + const sDMSUIMGetPINStatusResponse_PIN2Status * pTLV12; + ULONG rc = GetTLV( inLen, pIn, 0x12, &tlvLen, (const BYTE **)&pTLV12 ); + + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + // Is the TLV large enough? + if (tlvLen < sizeof( sDMSUIMGetPINStatusResponse_PIN2Status )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + *pVerifyRetriesLeft = pTLV12->mRemainingVerifyRetries; + *pUnblockRetriesLeft = pTLV12->mRemainingUnblockRetries; + *pStatus = pTLV12->mPINStatus; + } + else + { + return eGOBI_ERR_INVALID_ARG; + } + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + ParseUIMChangePIN + +DESCRIPTION: + This function changes the PIN value + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pVerifyRetriesLeft [ O ] - Upon operational failure this will indicate + the number of retries left, after which the + PIN will be blocked (0xFFFFFFFF = unknown) + pUnblockRetriesLeft [ O ] - Upon operational failure this will indicate + the number of unblock retries left, after + which the PIN will be permanently blocked, + i.e. UIM is unusable (0xFFFFFFFF = unknown) + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseUIMChangePIN( + ULONG inLen, + const BYTE * pIn, + ULONG * pVerifyRetriesLeft, + ULONG * pUnblockRetriesLeft ) +{ + // Validate arguments + if (pIn == 0 || pVerifyRetriesLeft == 0 || pUnblockRetriesLeft == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Find the TLV + const sDMSUIMChangePINResponse_RetryInfo * pTLVx10; + ULONG outLenx10; + ULONG rc = GetTLV( inLen, pIn, 0x10, &outLenx10, (const BYTE **)&pTLVx10 ); + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + // Is the TLV large enough? + if (outLenx10 < sizeof( sDMSUIMChangePINResponse_RetryInfo )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + *pVerifyRetriesLeft = pTLVx10->mRemainingVerifyRetries; + *pUnblockRetriesLeft = pTLVx10->mRemainingUnblockRetries; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + PackUIMChangePIN + +DESCRIPTION: + This function changes the PIN value + +PARAMETERS: + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + id [ I ] - PIN ID (1/2) + pOldValue [ I ] - Old PIN value of the PIN to change + pNewValue [ I ] - New PIN value of the PIN to change + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PackUIMChangePIN( + ULONG * pOutLen, + BYTE * pOut, + ULONG id, + CHAR * pOldValue, + CHAR * pNewValue ) +{ + // Validate arguments + if (pOut == 0 + || id < 1 + || id > 2 + || pOldValue == 0 + || pOldValue[0] == 0 + || pNewValue == 0 + || pNewValue[0] == 0 ) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Add arguments + std::string oldVal( pOldValue ); + ULONG oldValSz = (ULONG)oldVal.size(); + std::string newVal( pNewValue ); + ULONG newValSz = (ULONG)newVal.size(); + + // Check size + WORD tlvx01Sz = sizeof( sDMSUIMChangePINRequest_Info ) + + (WORD)oldValSz + (WORD)newValSz; + if (*pOutLen < sizeof( sQMIRawContentHeader ) + tlvx01Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + sQMIRawContentHeader * pHeader = (sQMIRawContentHeader*)pOut; + pHeader->mTypeID = 0x01; + pHeader->mLength = tlvx01Sz; + + ULONG offset = sizeof( sQMIRawContentHeader ); + + // First part of the TLV + sDMSUIMChangePINRequest_Info1 * pTLVx01_1; + pTLVx01_1 = (sDMSUIMChangePINRequest_Info1*)(pOut + offset); + memset( pTLVx01_1, 0, tlvx01Sz ); + + pTLVx01_1->mPINID = (UINT8)id; + pTLVx01_1->mOldPINLength = (UINT8)oldValSz; + offset += sizeof( sDMSUIMChangePINRequest_Info1 ); + + // mOldPINValue string + memcpy( (pOut + offset), oldVal.c_str(), oldValSz ); + offset += oldValSz; + + // Second part of the TLV + sDMSUIMChangePINRequest_Info2 * pTLVx01_2; + pTLVx01_2 = (sDMSUIMChangePINRequest_Info2*)(pOut + offset); + + pTLVx01_2->mNewPINLength = (UINT8)newValSz; + offset += sizeof( sDMSUIMChangePINRequest_Info2 ); + + // mNewPINValue string + memcpy( (pOut + offset), newVal.c_str(), newValSz ); + offset += newValSz; + + *pOutLen = offset; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + ParseUIMUnblockPIN + +DESCRIPTION: + This function unblocks a blocked PIN + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pVerifyRetriesLeft [ O ] - Upon operational failure this will indicate + the number of retries left, after which the + PIN will be blocked (0xFFFFFFFF = unknown) + pUnblockRetriesLeft [ O ] - Upon operational failure this will indicate + the number of unblock retries left, after + which the PIN will be permanently blocked, + i.e. UIM is unusable (0xFFFFFFFF = unknown) + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseUIMUnblockPIN( + ULONG inLen, + const BYTE * pIn, + ULONG * pVerifyRetriesLeft, + ULONG * pUnblockRetriesLeft ) +{ + // Validate arguments + if (pIn == 0 || pVerifyRetriesLeft == 0 || pUnblockRetriesLeft == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Find the TLV + const sDMSUIMUnblockPINResponse_RetryInfo * pTLVx10; + ULONG outLenx10; + ULONG rc = GetTLV( inLen, pIn, 0x10, &outLenx10, (const BYTE **)&pTLVx10 ); + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + // Is the TLV large enough? + if (outLenx10 < sizeof( sDMSUIMUnblockPINResponse_RetryInfo )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + *pVerifyRetriesLeft = pTLVx10->mRemainingVerifyRetries; + *pUnblockRetriesLeft = pTLVx10->mRemainingUnblockRetries; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + PackUIMUnblockPIN + +DESCRIPTION: + This function unblocks a blocked PIN + +PARAMETERS: + id [ I ] - PIN ID (1/2) + pPUKValue [ I ] - PUK value of the PIN to unblock + pNewValue [ I ] - New PIN value of the PIN to unblock + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PackUIMUnblockPIN( + ULONG * pOutLen, + BYTE * pOut, + ULONG id, + CHAR * pPUKValue, + CHAR * pNewValue ) +{ + // Validate arguments + if (pOut == 0 + || id < 1 + || id > 2 + || pPUKValue == 0 + || pPUKValue[0] == 0 + || pNewValue == 0 + || pNewValue[0] == 0 ) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Add arguments + std::string oldVal( pPUKValue ); + ULONG oldValSz = (ULONG)oldVal.size(); + std::string newVal( pNewValue ); + ULONG newValSz = (ULONG)newVal.size(); + + // Check size + WORD tlvx01Sz = sizeof( sDMSUIMUnblockPINRequest_Info ) + + (WORD)oldValSz + (WORD)newValSz; + if (*pOutLen < sizeof( sQMIRawContentHeader ) + tlvx01Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + sQMIRawContentHeader * pHeader = (sQMIRawContentHeader*)pOut; + pHeader->mTypeID = 0x01; + pHeader->mLength = tlvx01Sz; + + ULONG offset = sizeof( sQMIRawContentHeader ); + + // First part of the TLV + sDMSUIMUnblockPINRequest_Info1 * pTLVx01_1; + pTLVx01_1 = (sDMSUIMUnblockPINRequest_Info1*)(pOut + offset); + memset( pTLVx01_1, 0, tlvx01Sz ); + + pTLVx01_1->mPINID = (UINT8)id; + pTLVx01_1->mPUKLength = (UINT8)oldValSz; + offset += sizeof( sDMSUIMUnblockPINRequest_Info1 ); + + // mPUKValue string + memcpy( (pOut + offset), oldVal.c_str(), oldValSz ); + offset += oldValSz; + + // Second part of the TLV + sDMSUIMUnblockPINRequest_Info2 * pTLVx01_2; + pTLVx01_2 = (sDMSUIMUnblockPINRequest_Info2*)(pOut + offset); + + pTLVx01_2->mNewPINLength = (UINT8)newValSz; + offset += sizeof( sDMSUIMUnblockPINRequest_Info2 ); + + // mNewPINValue string + memcpy( (pOut + offset), newVal.c_str(), newValSz ); + offset += newValSz; + + *pOutLen = offset; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + ParseUIMVerifyPIN + +DESCRIPTION: + This function verifies the PIN before accessing the UIM contents + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pVerifyRetriesLeft [ O ] - Upon operational failure this will indicate + the number of retries left, after which the + PIN will be blocked (0xFFFFFFFF = unknown) + pUnblockRetriesLeft [ O ] - Upon operational failure this will indicate + the number of unblock retries left, after + which the PIN will be permanently blocked, + i.e. UIM is unusable (0xFFFFFFFF = unknown) + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseUIMVerifyPIN( + ULONG inLen, + const BYTE * pIn, + ULONG * pVerifyRetriesLeft, + ULONG * pUnblockRetriesLeft ) +{ + // Validate arguments + if (pIn == 0 || pVerifyRetriesLeft == 0 || pUnblockRetriesLeft == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Find the TLV + const sDMSUIMVerifyPINResponse_RetryInfo * pTLVx10; + ULONG outLenx10; + ULONG rc = GetTLV( inLen, pIn, 0x10, &outLenx10, (const BYTE **)&pTLVx10 ); + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + // Is the TLV large enough? + if (outLenx10 < sizeof( sDMSUIMVerifyPINResponse_RetryInfo )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + *pVerifyRetriesLeft = pTLVx10->mRemainingVerifyRetries; + *pUnblockRetriesLeft = pTLVx10->mRemainingUnblockRetries; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + PackUIMVerifyPIN + +DESCRIPTION: + This function verifies the PIN before accessing the UIM contents + +PARAMETERS: + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + id [ I ] - PIN ID (1/2) + pValue [ I ] - PIN value of the PIN to verify + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PackUIMVerifyPIN( + ULONG * pOutLen, + BYTE * pOut, + ULONG id, + CHAR * pValue ) +{ + // Validate arguments + if (pOut == 0 + || id < 1 + || id > 2 + || pValue == 0 + || pValue[0] == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Add arguments + std::string val( pValue ); + UINT8 valSz = (UINT8)val.size(); + + // Check size + WORD tlvx01Sz = sizeof( sDMSUIMVerifyPINRequest_Info ) + valSz; + if (*pOutLen < sizeof( sQMIRawContentHeader ) + tlvx01Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + sQMIRawContentHeader * pHeader = (sQMIRawContentHeader*)pOut; + pHeader->mTypeID = 0x01; + pHeader->mLength = tlvx01Sz; + + ULONG offset = sizeof( sQMIRawContentHeader ); + + sDMSUIMVerifyPINRequest_Info * pTLVx01; + pTLVx01 = (sDMSUIMVerifyPINRequest_Info*)(pOut + offset); + memset( pTLVx01, 0, tlvx01Sz ); + + // Set the values + pTLVx01->mPINID = (UINT8)id; + pTLVx01->mPINLength = valSz; + offset += sizeof( sDMSUIMVerifyPINRequest_Info ); + + // Add mPINValue + memcpy( (pOut + offset), val.c_str(), valSz ); + offset += valSz; + + *pOutLen = offset; + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + ParseUIMSetPINProtection + +DESCRIPTION: + This function enables or disables protection of UIM contents by a + given PIN + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pVerifyRetriesLeft [ O ] - Upon operational failure this will indicate + the number of retries left, after which the + PIN will be blocked (0xFFFFFFFF = unknown) + pUnblockRetriesLeft [ O ] - Upon operational failure this will indicate + the number of unblock retries left, after + which the PIN will be permanently blocked, + i.e. UIM is unusable (0xFFFFFFFF = unknown) + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseUIMSetPINProtection( + ULONG inLen, + const BYTE * pIn, + ULONG * pVerifyRetriesLeft, + ULONG * pUnblockRetriesLeft ) +{ + // Validate arguments + if (pIn == 0 || pVerifyRetriesLeft == 0 || pUnblockRetriesLeft == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Find the TLV + const sDMSUIMSetPINProtectionResponse_RetryInfo * pTLVx10; + ULONG outLenx10; + ULONG rc = GetTLV( inLen, pIn, 0x10, &outLenx10, (const BYTE **)&pTLVx10 ); + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + // Is the TLV large enough? + if (outLenx10 < sizeof( sDMSUIMSetPINProtectionResponse_RetryInfo )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + *pVerifyRetriesLeft = pTLVx10->mRemainingVerifyRetries; + *pUnblockRetriesLeft = pTLVx10->mRemainingUnblockRetries; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + PackUIMSetPINProtection + +DESCRIPTION: + This function enables or disables protection of UIM contents by a + given PIN + +PARAMETERS: + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + id [ I ] - PIN ID (1/2) + bEnable [ I ] - Enable/disable PIN protection (0 = disable)? + pValue [ I ] - PIN value of the PIN to be enabled/disabled + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PackUIMSetPINProtection( + ULONG * pOutLen, + BYTE * pOut, + ULONG id, + ULONG bEnable, + CHAR * pValue ) +{ + // Validate arguments + if (pOut == 0 + || id < 1 + || id > 2 + || pValue == 0 + || pValue[0] == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Add arguments + std::string val( pValue ); + ULONG valSz = (ULONG)val.size(); + + // Check size + WORD tlvx01Sz = sizeof( sDMSUIMSetPINProtectionRequest_Info ) + (WORD)valSz; + if (*pOutLen < sizeof( sQMIRawContentHeader ) + tlvx01Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + sQMIRawContentHeader * pHeader = (sQMIRawContentHeader*)pOut; + pHeader->mTypeID = 0x01; + pHeader->mLength = tlvx01Sz; + + ULONG offset = sizeof( sQMIRawContentHeader ); + + sDMSUIMSetPINProtectionRequest_Info * pTLVx01; + pTLVx01 = (sDMSUIMSetPINProtectionRequest_Info*)(pOut + offset); + memset( pTLVx01, 0, tlvx01Sz ); + + // Set the values + pTLVx01->mPINID = (UINT8)id; + pTLVx01->mPINEnabled = (bEnable == 0 ? 0 : 1); + pTLVx01->mPINLength = (UINT8)valSz; + + offset += sizeof( sDMSUIMSetPINProtectionRequest_Info ); + + // Add mPINValue + memcpy( (pOut + offset), val.c_str(), valSz ); + offset += valSz; + + *pOutLen = offset; + return eGOBI_ERR_NONE; +} diff --git a/gobi-api/GobiAPI_2013-07-31-1347/Gobi3000Translation/Gobi3000TranslationVoice.cpp b/gobi-api/GobiAPI_2013-07-31-1347/Gobi3000Translation/Gobi3000TranslationVoice.cpp new file mode 100644 index 0000000..866e168 --- /dev/null +++ b/gobi-api/GobiAPI_2013-07-31-1347/Gobi3000Translation/Gobi3000TranslationVoice.cpp @@ -0,0 +1,173 @@ +/*=========================================================================== +FILE: + Gobi3000TranslationVoice.cpp + +DESCRIPTION: + QUALCOMM Translation for Gobi 3000 (Voice Service for USSD) + +Copyright (c) 2013, The Linux Foundation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +==========================================================================*/ + +//--------------------------------------------------------------------------- +// Include Files +//--------------------------------------------------------------------------- +#include "Gobi3000Translation.h" + +//--------------------------------------------------------------------------- +// Pragmas (pack structs) +//--------------------------------------------------------------------------- +#pragma pack( push, 1 ) + +/*=========================================================================*/ +// Struct sUSSDInfo +// Struct to represent USSD/Alpha information header +/*=========================================================================*/ +struct sUSSDInfoHdr +{ + public: + BYTE mDCS; + BYTE mLength; + + // Data of 'mLength' follows +}; + +//--------------------------------------------------------------------------- +// Pragmas +//--------------------------------------------------------------------------- +#pragma pack( pop ) + +/*=========================================================================== +METHOD: + PackOriginateUSSD + +DESCRIPTION: + This function initiates a USSD operation + +PARAMETERS: + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + pInfo [ I ] - USSD information + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PackOriginateUSSD( + ULONG * pOutLen, + BYTE * pOut, + BYTE * pInfo ) +{ + // Validate arguments + if (pOut == 0 || pInfo == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + const WORD INFO_HDR_SZ = sizeof( sUSSDInfoHdr ); + + // This assumes that pInfo is at least 2 bytes long + sUSSDInfoHdr * pInInfo = (sUSSDInfoHdr *)pInfo; + WORD infoLen = pInInfo->mLength + INFO_HDR_SZ; + + // Check size + if (*pOutLen < sizeof( sQMIRawContentHeader ) + infoLen) + { + return eGOBI_ERR_BUFFER_SZ; + } + + // Add pInfo + + sQMIRawContentHeader * pHeader = (sQMIRawContentHeader*)pOut; + pHeader->mTypeID = 0x01; + pHeader->mLength = infoLen; + + ULONG offset = sizeof( sQMIRawContentHeader ); + + // No pTLVx01 since pInfo is our TLV + memcpy( (pOut + offset), pInfo, infoLen ); + + offset += infoLen; + *pOutLen = offset; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + PackAnswerUSSD + +DESCRIPTION: + This function responds to a USSD request from the network + +PARAMETERS: + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + pInfo [ I ] - USSD information + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PackAnswerUSSD( + ULONG * pOutLen, + BYTE * pOut, + BYTE * pInfo ) +{ + // Validate arguments + if (pOut == 0 || pInfo == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + const WORD INFO_HDR_SZ = sizeof( sUSSDInfoHdr ); + + // This assumes that pInfo is at least 2 bytes long + sUSSDInfoHdr * pInInfo = (sUSSDInfoHdr *)pInfo; + WORD infoLen = pInInfo->mLength + INFO_HDR_SZ; + + // Check size + if (*pOutLen < sizeof( sQMIRawContentHeader ) + infoLen) + { + return eGOBI_ERR_BUFFER_SZ; + } + + sQMIRawContentHeader * pHeader = (sQMIRawContentHeader*)pOut; + pHeader->mTypeID = 0x01; + pHeader->mLength = infoLen; + + ULONG offset = sizeof( sQMIRawContentHeader ); + + // No pTLVx01 since pInfo is our TLV + memcpy( (pOut + offset), pInfo, infoLen ); + + offset += infoLen; + *pOutLen = offset; + + return eGOBI_ERR_NONE; +} diff --git a/gobi-api/GobiAPI_2013-07-31-1347/Gobi3000Translation/Gobi3000TranslationWDS.cpp b/gobi-api/GobiAPI_2013-07-31-1347/Gobi3000Translation/Gobi3000TranslationWDS.cpp new file mode 100644 index 0000000..e6c7cd2 --- /dev/null +++ b/gobi-api/GobiAPI_2013-07-31-1347/Gobi3000Translation/Gobi3000TranslationWDS.cpp @@ -0,0 +1,3485 @@ +/*=========================================================================== +FILE: + Gobi3000TranslationWDS.cpp + +DESCRIPTION: + QUALCOMM Translation for Gobi 3000 (WDS Service) + +Copyright (c) 2013, The Linux Foundation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +==========================================================================*/ + +//--------------------------------------------------------------------------- +// Include Files +//--------------------------------------------------------------------------- +#include "Gobi3000Translation.h" + +/*=========================================================================== +METHOD: + ParseGetSessionState + +DESCRIPTION: + This function returns the state of the current packet data session + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pState [ O ] - State of the current packet session + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseGetSessionState( + ULONG inLen, + const BYTE * pIn, + ULONG * pState ) +{ + // Validate arguments + if (pIn == 0 || pState == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Find the TLV + const sWDSGetPacketServiceStatusResponse_Status * pTLVx01; + ULONG outLenx01; + ULONG rc = GetTLV( inLen, pIn, 0x01, &outLenx01, (const BYTE **)&pTLVx01 ); + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + // Is the TLV large enough? + if (outLenx01 < sizeof( sWDSGetPacketServiceStatusResponse_Status )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + *pState = pTLVx01->mConnectionStatus; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + ParseGetSessionDuration + +DESCRIPTION: + This function returns the duration of the current packet data session + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pDuration [ O ] - Duration of the current packet session + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseGetSessionDuration( + ULONG inLen, + const BYTE * pIn, + ULONGLONG * pDuration ) +{ + // Validate arguments + if (pIn == 0 || pDuration == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Find the TLV + const sWDSGetDataSessionDurationResponse_Duration * pTLVx01; + ULONG outLenx01; + ULONG rc = GetTLV( inLen, pIn, 0x01, &outLenx01, (const BYTE **)&pTLVx01 ); + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + // Is the TLV large enough? + if (outLenx01 < sizeof( sWDSGetDataSessionDurationResponse_Duration )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + *pDuration = pTLVx01->mDataSessionDuration; + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + ParseGetDormancyState + +DESCRIPTION: + This function returns the dormancy state of the current packet + data session (when connected) + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pState [ O ] - Dormancy state of the current packet session + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseGetDormancyState( + ULONG inLen, + const BYTE * pIn, + ULONG * pState ) +{ + // Validate arguments + if (pIn == 0 || pState == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Find the TLV + const sWDSGetDormancyResponse_DormancyStatus * pTLVx01; + ULONG outLenx01; + ULONG rc = GetTLV( inLen, pIn, 0x01, &outLenx01, (const BYTE **)&pTLVx01 ); + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + // Is the TLV large enough? + if (outLenx01 < sizeof( sWDSGetDormancyResponse_DormancyStatus )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + *pState = pTLVx01->mDormancyStatus; + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + ParseGetEnhancedAutoconnect + +DESCRIPTION: + This function returns the current autoconnect data session setting + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pSetting [ O ] - NDIS autoconnect setting + pRoamSetting [ O ] - NDIS autoconnect roam setting + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseGetEnhancedAutoconnect( + ULONG inLen, + const BYTE * pIn, + ULONG * pSetting, + ULONG * pRoamSetting ) +{ + // Validate arguments + if (pIn == 0 || pSetting == 0 || pRoamSetting == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + *pSetting = 0xffffffff; + *pRoamSetting = 0xffffffff; + + // Find the first TLV + const sWDSGetAutoconnectSettingResponse_Autoconnect * pTLVx01; + ULONG outLenx01; + ULONG rc = GetTLV( inLen, pIn, 0x01, &outLenx01, (const BYTE **)&pTLVx01 ); + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + // Is the TLV large enough? + if (outLenx01 < sizeof( sWDSGetAutoconnectSettingResponse_Autoconnect )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + *pSetting = pTLVx01->mAutoconnectSetting; + + // Find the second TLV (optional) + const sWDSGetAutoconnectSettingResponse_Roam * pTLVx10; + ULONG outLenx10; + rc = GetTLV( inLen, pIn, 0x10, &outLenx10, (const BYTE **)&pTLVx10 ); + if (rc == eGOBI_ERR_NONE) + { + // Is the TLV large enough? + if (outLenx10 < sizeof( sWDSGetAutoconnectSettingResponse_Roam )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + *pRoamSetting = pTLVx10->mAutoconnectRoamSetting; + } + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + PackSetEnhancedAutoconnect + +DESCRIPTION: + This function sets the autoconnect data session setting + +PARAMETERS: + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + setting [ I ] - NDIS autoconnect setting + pRoamSetting [ I ] - (Optional) NDIS autoconnect roam setting + + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PackSetEnhancedAutoconnect( + ULONG * pOutLen, + BYTE * pOut, + ULONG setting, + ULONG * pRoamSetting ) +{ + // Validate arguments + if (pOut == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Add setting + + // Check size + WORD tlvx01Sz = sizeof( sWDSSetAutoconnectSettingRequest_Autoconnect ); + if (*pOutLen < sizeof( sQMIRawContentHeader ) + tlvx01Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + sQMIRawContentHeader * pHeader = (sQMIRawContentHeader*)pOut; + pHeader->mTypeID = 0x01; + pHeader->mLength = tlvx01Sz; + + ULONG offset = sizeof( sQMIRawContentHeader ); + + sWDSSetAutoconnectSettingRequest_Autoconnect * pTLVx01; + pTLVx01 = (sWDSSetAutoconnectSettingRequest_Autoconnect*)(pOut + offset); + memset( pTLVx01, 0, tlvx01Sz ); + + // Set the value + pTLVx01->mAutoconnectSetting = (eQMIWDSAutoconnectSettings)setting; + + offset += tlvx01Sz; + + // Add roam setting, if specified + if (pRoamSetting != 0) + { + // Check size + WORD tlvx10Sz = sizeof( sWDSSetAutoconnectSettingRequest_Roam ); + if (*pOutLen < offset + sizeof( sQMIRawContentHeader ) + tlvx10Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + pHeader = (sQMIRawContentHeader*)(pOut + offset); + pHeader->mTypeID = 0x10; + pHeader->mLength = tlvx10Sz; + + offset += sizeof( sQMIRawContentHeader ); + + sWDSSetAutoconnectSettingRequest_Roam * pTLVx10; + pTLVx10 = (sWDSSetAutoconnectSettingRequest_Roam*)(pOut + offset); + memset( pTLVx10, 0, tlvx10Sz ); + + // Set the value + pTLVx10->mAutoconnectRoamSetting = (eQMIWDSAutoconnectRoamSettings)*pRoamSetting; + + offset += tlvx10Sz; + } + + *pOutLen = offset; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + PackSetDefaultProfile + +DESCRIPTION: + This function writes the default profile settings to the device, the + default profile is used during autoconnect + + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + profileType [ I ] - Profile type being written + pPDPType [ I ] - (Optional) PDP type + pIPAddress [ I ] - (Optional) Preferred assigned IPv4 address + pPrimaryDNS [ I ] - (Optional) Primary DNS IPv4 address + pSecondaryDNS [ I ] - (Optional) Secondary DNS IPv4 address + pAuthentication [ I ] - (Optional) Authentication algorithm bitmap + pName [ I ] - (Optional) The profile name or description + pAPNName [ I ] - (Optional) Access point name + pUsername [ I ] - (Optional) Username used during authentication + pPassword [ I ] - (Optional) Password used during authentication + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PackSetDefaultProfile( + ULONG * pOutLen, + BYTE * pOut, + ULONG profileType, + ULONG * pPDPType, + ULONG * pIPAddress, + ULONG * pPrimaryDNS, + ULONG * pSecondaryDNS, + ULONG * pAuthentication, + CHAR * pName, + CHAR * pAPNName, + CHAR * pUsername, + CHAR * pPassword ) +{ + // Validate arguments + if (pOut == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Add profileType + + // Check size + WORD tlvx01Sz = sizeof( sWDSModifyProfileRequest_ProfileIdentifier ); + if (*pOutLen < sizeof( sQMIRawContentHeader ) + tlvx01Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + sQMIRawContentHeader * pHeader = (sQMIRawContentHeader*)pOut; + pHeader->mTypeID = 0x01; + pHeader->mLength = tlvx01Sz; + + ULONG offset = sizeof( sQMIRawContentHeader ); + + sWDSModifyProfileRequest_ProfileIdentifier * pTLVx01; + pTLVx01 = (sWDSModifyProfileRequest_ProfileIdentifier*)(pOut + offset); + memset( pTLVx01, 0, tlvx01Sz ); + + // Set the value + pTLVx01->mProfileType = (eQMIProfileTypes)profileType; + pTLVx01->mProfileIndex = 1; + + offset += tlvx01Sz; + + // Add name, if specified + if (pName != 0) + { + std::string name( pName ); + + // Check size + WORD tlvx10Sz = (WORD)name.size(); + if (*pOutLen < offset + sizeof( sQMIRawContentHeader ) + tlvx10Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + pHeader = (sQMIRawContentHeader*)(pOut + offset); + pHeader->mTypeID = 0x10; + pHeader->mLength = tlvx10Sz; + + offset += sizeof( sQMIRawContentHeader ); + + // Set the value + memcpy( pOut + offset, name.c_str(), name.size() ); + + offset += tlvx10Sz; + } + + // Add PDP type, if specified + if (pPDPType != 0) + { + // Check size + WORD tlvx11Sz = sizeof( sWDSModifyProfileRequest_PDPType ); + if (*pOutLen < offset + sizeof( sQMIRawContentHeader ) + tlvx11Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + pHeader = (sQMIRawContentHeader*)(pOut + offset); + pHeader->mTypeID = 0x11; + pHeader->mLength = tlvx11Sz; + + offset += sizeof( sQMIRawContentHeader ); + + sWDSModifyProfileRequest_PDPType * pTLVx11; + pTLVx11 = (sWDSModifyProfileRequest_PDPType*)(pOut + offset); + memset( pTLVx11, 0, tlvx11Sz ); + + // Set the value + pTLVx11->mPDPType = (eQMIPDPTypes)*pPDPType; + + offset += tlvx11Sz; + } + + // Add APN Name, if specified + if (pAPNName != 0) + { + std::string apnName( pAPNName ); + + // Check size + WORD tlvx14Sz = (WORD)apnName.size(); + if (*pOutLen < offset + sizeof( sQMIRawContentHeader ) + tlvx14Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + pHeader = (sQMIRawContentHeader*)(pOut + offset); + pHeader->mTypeID = 0x14; + pHeader->mLength = tlvx14Sz; + + offset += sizeof( sQMIRawContentHeader ); + + // Set the value + memcpy( (pOut + offset), apnName.c_str(), apnName.size() ); + + offset += tlvx14Sz; + } + + // Add Primary DNS, if specified + if (pPrimaryDNS != 0) + { + // Check size + WORD tlvx15Sz = sizeof( sWDSModifyProfileRequest_PrimaryDNS ); + if (*pOutLen < offset + sizeof( sQMIRawContentHeader ) + tlvx15Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + pHeader = (sQMIRawContentHeader*)(pOut + offset); + pHeader->mTypeID = 0x15; + pHeader->mLength = tlvx15Sz; + + offset += sizeof( sQMIRawContentHeader ); + + sWDSModifyProfileRequest_PrimaryDNS * pTLVx15; + pTLVx15 = (sWDSModifyProfileRequest_PrimaryDNS*)(pOut + offset); + memset( pTLVx15, 0, tlvx15Sz ); + + ULONG ip0 = (*pPrimaryDNS & 0x000000FF); + ULONG ip1 = (*pPrimaryDNS & 0x0000FF00) >> 8; + ULONG ip2 = (*pPrimaryDNS & 0x00FF0000) >> 16; + ULONG ip3 = (*pPrimaryDNS & 0xFF000000) >> 24; + + // Set the value + pTLVx15->mIPV4Address[0] = (INT8)ip0; + pTLVx15->mIPV4Address[1] = (INT8)ip1; + pTLVx15->mIPV4Address[2] = (INT8)ip2; + pTLVx15->mIPV4Address[3] = (INT8)ip3; + + offset += tlvx15Sz; + } + + // Add Secondary DNS, if specified + if (pSecondaryDNS != 0) + { + // Check size + WORD tlvx16Sz = sizeof( sWDSModifyProfileRequest_SecondaryDNS ); + if (*pOutLen < offset + sizeof( sQMIRawContentHeader ) + tlvx16Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + pHeader = (sQMIRawContentHeader*)(pOut + offset); + pHeader->mTypeID = 0x16; + pHeader->mLength = tlvx16Sz; + + offset += sizeof( sQMIRawContentHeader ); + + sWDSModifyProfileRequest_SecondaryDNS * pTLVx16; + pTLVx16 = (sWDSModifyProfileRequest_SecondaryDNS*)(pOut + offset); + memset( pTLVx16, 0, tlvx16Sz ); + + ULONG ip0 = (*pSecondaryDNS & 0x000000FF); + ULONG ip1 = (*pSecondaryDNS & 0x0000FF00) >> 8; + ULONG ip2 = (*pSecondaryDNS & 0x00FF0000) >> 16; + ULONG ip3 = (*pSecondaryDNS & 0xFF000000) >> 24; + + // Set the value + pTLVx16->mIPV4Address[0] = (INT8)ip0; + pTLVx16->mIPV4Address[1] = (INT8)ip1; + pTLVx16->mIPV4Address[2] = (INT8)ip2; + pTLVx16->mIPV4Address[3] = (INT8)ip3; + + offset += tlvx16Sz; + } + + // Add Username, if specified + if (pUsername != 0) + { + std::string username( pUsername ); + + // Check size + WORD tlvx1BSz = (WORD)username.size(); + if (*pOutLen < offset + sizeof( sQMIRawContentHeader ) + tlvx1BSz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + pHeader = (sQMIRawContentHeader*)(pOut + offset); + pHeader->mTypeID = 0x1B; + pHeader->mLength = tlvx1BSz; + + offset += sizeof( sQMIRawContentHeader ); + + // Set the value + memcpy( (pOut + offset), username.c_str(), username.size() ); + + offset += tlvx1BSz; + } + + // Add Password, if specified + if (pPassword != 0) + { + std::string password( pPassword ); + + // Check size + WORD tlvx1CSz = (WORD)password.size(); + if (*pOutLen < offset + sizeof( sQMIRawContentHeader ) + tlvx1CSz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + pHeader = (sQMIRawContentHeader*)(pOut + offset); + pHeader->mTypeID = 0x1C; + pHeader->mLength = tlvx1CSz; + + offset += sizeof( sQMIRawContentHeader ); + + // Set the value + memcpy( (pOut + offset), password.c_str(), password.size() ); + + offset += tlvx1CSz; + } + + // Add Authentication, if specified + if (pAuthentication != 0) + { + // Check size + WORD tlvx1DSz = sizeof( sWDSModifyProfileRequest_Authentication ); + if (*pOutLen < offset + sizeof( sQMIRawContentHeader ) + tlvx1DSz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + pHeader = (sQMIRawContentHeader*)(pOut + offset); + pHeader->mTypeID = 0x1D; + pHeader->mLength = tlvx1DSz; + + offset += sizeof( sQMIRawContentHeader ); + + sWDSModifyProfileRequest_Authentication * pTLVx1D; + pTLVx1D = (sWDSModifyProfileRequest_Authentication*)(pOut + offset); + memset( pTLVx1D, 0, tlvx1DSz ); + + // Set the value + pTLVx1D->mEnablePAP = ((*pAuthentication & 0x00000001) != 0); + pTLVx1D->mEnableCHAP = ((*pAuthentication & 0x00000002) != 0); + + offset += tlvx1DSz; + } + + // Add IP Address, if specified + if (pIPAddress != 0) + { + // Check size + WORD tlvx1ESz = sizeof( sWDSModifyProfileRequest_IPAddress ); + if (*pOutLen < offset + sizeof( sQMIRawContentHeader ) + tlvx1ESz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + pHeader = (sQMIRawContentHeader*)(pOut + offset); + pHeader->mTypeID = 0x1E; + pHeader->mLength = tlvx1ESz; + + offset += sizeof( sQMIRawContentHeader ); + + sWDSModifyProfileRequest_IPAddress * pTLVx1E; + pTLVx1E = (sWDSModifyProfileRequest_IPAddress*)(pOut + offset); + memset( pTLVx1E, 0, tlvx1ESz ); + + ULONG ip0 = (*pIPAddress & 0x000000FF); + ULONG ip1 = (*pIPAddress & 0x0000FF00) >> 8; + ULONG ip2 = (*pIPAddress & 0x00FF0000) >> 16; + ULONG ip3 = (*pIPAddress & 0xFF000000) >> 24; + + // Set the value + pTLVx1E->mIPV4Address[0] = (INT8)ip0; + pTLVx1E->mIPV4Address[1] = (INT8)ip1; + pTLVx1E->mIPV4Address[2] = (INT8)ip2; + pTLVx1E->mIPV4Address[3] = (INT8)ip3; + + offset += tlvx1ESz; + } + + // At least one of the optional parameters must have been set + if (offset <= sizeof( sQMIRawContentHeader ) + tlvx01Sz) + { + return eGOBI_ERR_INVALID_ARG; + } + + *pOutLen = offset; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + PackGetDefaultProfile + +DESCRIPTION: + This function reads the default profile settings from the device, the + default profile is used during autoconnect + +PARAMETERS: + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + profileType [ I ] - Profile type being read + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PackGetDefaultProfile( + ULONG * pOutLen, + BYTE * pOut, + ULONG profileType ) +{ + // Validate arguments + if (pOut == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Add profileType + + // Check size + WORD tlvx01Sz = sizeof( sWDSGetDefaultSettingsRequest_ProfileType ); + if (*pOutLen < sizeof( sQMIRawContentHeader ) + tlvx01Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + sQMIRawContentHeader * pHeader = (sQMIRawContentHeader*)pOut; + pHeader->mTypeID = 0x01; + pHeader->mLength = tlvx01Sz; + + ULONG offset = sizeof( sQMIRawContentHeader ); + + sWDSGetDefaultSettingsRequest_ProfileType * pTLVx01; + pTLVx01 = (sWDSGetDefaultSettingsRequest_ProfileType*)(pOut + offset); + memset( pTLVx01, 0, tlvx01Sz ); + + // Set the value + pTLVx01->mProfileType = (eQMIProfileTypes)profileType; + + offset += tlvx01Sz; + + *pOutLen = offset; + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + ParseGetDefaultProfile + +DESCRIPTION: + This function reads the default profile settings from the device, the + default profile is used during autoconnect + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pPDPType [ O ] - PDP type + pIPAddress [ O ] - Preferred assigned IPv4 address + pPrimaryDNS [ O ] - Primary DNS IPv4 address + pSecondaryDNS [ O ] - Secondary DNS IPv4 address + pAuthentication [ O ] - Authentication algorithm bitmap + nameSize [ I ] - The maximum number of characters (including + NULL terminator) that the profile name array + can contain + pName [ O ] - The profile name or description + apnSize [ I ] - The maximum number of characters (including + NULL terminator) that the APN name array + can contain + pAPNName [ O ] - Access point name represented as a NULL + terminated string (empty string returned when + unknown) + userSize [ I ] - The maximum number of characters (including + NULL terminator) that the username array + can contain + pUsername [ O ] - Username used during authentication + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseGetDefaultProfile( + ULONG inLen, + const BYTE * pIn, + ULONG * pPDPType, + ULONG * pIPAddress, + ULONG * pPrimaryDNS, + ULONG * pSecondaryDNS, + ULONG * pAuthentication, + BYTE nameSize, + CHAR * pName, + BYTE apnSize, + CHAR * pAPNName, + BYTE userSize, + CHAR * pUsername ) +{ + // Validate arguments + if (pIn == 0 + || pPDPType == 0 + || pIPAddress == 0 + || pPrimaryDNS == 0 + || pSecondaryDNS == 0 + || pAuthentication == 0 + || nameSize == 0 + || pName == 0 + || apnSize == 0 + || pAPNName == 0 + || userSize == 0 + || pUsername == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Set defaults + *pPDPType = 0xffffffff; + *pIPAddress = 0xffffffff; + *pPrimaryDNS = 0xffffffff; + *pSecondaryDNS = 0xffffffff; + *pAuthentication = 0xffffffff; + pName[0] = 0; + pAPNName[0] = 0; + pUsername[0] = 0; + + // Find the name + const sWDSGetDefaultSettingsResponse_ProfileName * pTLVx10; + ULONG outLenx10; + ULONG rc = GetTLV( inLen, pIn, 0x10, &outLenx10, (const BYTE **)&pTLVx10 ); + if (rc == eGOBI_ERR_NONE) + { + if (nameSize < outLenx10 + 1) + { + return eGOBI_ERR_BUFFER_SZ; + } + + memcpy( pName, (const BYTE *)pTLVx10, outLenx10 ); + + // Null terminate + pName[outLenx10] = 0; + } + + // Find the PDP type + const sWDSGetDefaultSettingsResponse_PDPType * pTLVx11; + ULONG outLenx11; + rc = GetTLV( inLen, pIn, 0x11, &outLenx11, (const BYTE **)&pTLVx11 ); + if (rc == eGOBI_ERR_NONE) + { + if (outLenx11 < sizeof( sWDSGetDefaultSettingsResponse_PDPType )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + *pPDPType = pTLVx11->mPDPType; + } + + // Find the APN name + const sWDSGetDefaultSettingsResponse_APNName * pTLVx14; + ULONG outLenx14; + rc = GetTLV( inLen, pIn, 0x14, &outLenx14, (const BYTE **)&pTLVx14 ); + if (rc == eGOBI_ERR_NONE) + { + if (apnSize < outLenx14 + 1) + { + return eGOBI_ERR_BUFFER_SZ; + } + + memcpy( pAPNName, (const BYTE *)pTLVx14, outLenx14 ); + + // Null terminate + pAPNName[outLenx14] = 0; + } + + // Find the Primary DNS + const sWDSGetDefaultSettingsResponse_PrimaryDNS * pTLVx15; + ULONG outLenx15; + rc = GetTLV( inLen, pIn, 0x15, &outLenx15, (const BYTE **)&pTLVx15 ); + if (rc == eGOBI_ERR_NONE) + { + if (outLenx15 < sizeof( sWDSGetDefaultSettingsResponse_PrimaryDNS )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + ULONG ip0 = pTLVx15->mIPV4Address[0]; + ULONG ip1 = pTLVx15->mIPV4Address[1] << 8; + ULONG ip2 = pTLVx15->mIPV4Address[2] << 16; + ULONG ip3 = pTLVx15->mIPV4Address[3] << 24; + + *pPrimaryDNS = (ip0 | ip1 | ip2 | ip3); + } + + // Find the Secondary DNS + const sWDSGetDefaultSettingsResponse_SecondaryDNS * pTLVx16; + ULONG outLenx16; + rc = GetTLV( inLen, pIn, 0x16, &outLenx16, (const BYTE **)&pTLVx16 ); + if (rc == eGOBI_ERR_NONE) + { + if (outLenx16 < sizeof( sWDSGetDefaultSettingsResponse_SecondaryDNS )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + ULONG ip0 = pTLVx16->mIPV4Address[0]; + ULONG ip1 = pTLVx16->mIPV4Address[1] << 8; + ULONG ip2 = pTLVx16->mIPV4Address[2] << 16; + ULONG ip3 = pTLVx16->mIPV4Address[3] << 24; + + *pSecondaryDNS = (ip0 | ip1 | ip2 | ip3); + } + + // Find the Username + const sWDSGetDefaultSettingsResponse_APNName * pTLVx1B; + ULONG outLenx1B; + rc = GetTLV( inLen, pIn, 0x1B, &outLenx1B, (const BYTE **)&pTLVx1B ); + if (rc == eGOBI_ERR_NONE) + { + if (userSize < outLenx1B + 1) + { + return eGOBI_ERR_BUFFER_SZ; + } + + memcpy( pAPNName, (const BYTE *)pTLVx1B, outLenx1B ); + + // Null terminate + pAPNName[outLenx1B] = 0; + } + + // Find the Authentication + const sWDSGetDefaultSettingsResponse_Authentication * pTLVx1D; + ULONG outLenx1D; + rc = GetTLV( inLen, pIn, 0x1D, &outLenx1D, (const BYTE **)&pTLVx1D ); + if (rc == eGOBI_ERR_NONE) + { + if (outLenx1D < sizeof( sWDSGetDefaultSettingsResponse_Authentication )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + ULONG pap = pTLVx1D->mEnablePAP; + ULONG chap = pTLVx1D->mEnableCHAP << 1; + + *pAuthentication = (pap | chap); + } + + // Find the IP Address + const sWDSGetDefaultSettingsResponse_IPAddress * pTLVx1E; + ULONG outLenx1E; + rc = GetTLV( inLen, pIn, 0x1E, &outLenx1E, (const BYTE **)&pTLVx1E ); + if (rc == eGOBI_ERR_NONE) + { + if (outLenx1E < sizeof( sWDSGetDefaultSettingsResponse_IPAddress )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + ULONG ip0 = pTLVx1E->mIPV4Address[0]; + ULONG ip1 = pTLVx1E->mIPV4Address[1] << 8; + ULONG ip2 = pTLVx1E->mIPV4Address[2] << 16; + ULONG ip3 = pTLVx1E->mIPV4Address[3] << 24; + + *pIPAddress = (ip0 | ip1 | ip2 | ip3); + } + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + PackStartDataSession + +DESCRIPTION: + This function activates a packet data session + +PARAMETERS: + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + pTechnology [ I ] - (Optional) Technology bitmap + pPrimaryDNS [ I ] - (Optional) Primary DNS IPv4 address + pSecondaryDNS [ I ] - (Optional) Secondary DNS IPv4 address + pPrimaryNBNS [ I ] - (Optional) Primary NetBIOS NS IPv4 address + pSecondaryNBNS [ I ] - (Optional) Secondary NetBIOS NS IPv4 address + pAPNName [ I ] - (Optional) Access point name + pIPAddress [ I ] - (Optional) Preferred assigned IPv4 address + pAuthentication [ I ] - (Optional) Authentication algorithm bitmap + pUsername [ I ] - (Optional) Username used during authentication + pPassword [ I ] - (Optional) Password used during authentication + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PackStartDataSession( + ULONG * pOutLen, + BYTE * pOut, + ULONG * pTechnology, + ULONG * pPrimaryDNS, + ULONG * pSecondaryDNS, + ULONG * pPrimaryNBNS, + ULONG * pSecondaryNBNS, + CHAR * pAPNName, + ULONG * pIPAddress, + ULONG * pAuthentication, + CHAR * pUsername, + CHAR * pPassword ) +{ + // Validate arguments + if (pOut == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + sQMIRawContentHeader * pHeader; + ULONG offset = 0; + + // Add technology, if specified + if (pTechnology != 0) + { + // Check size + WORD tlvx30Sz = sizeof( sWDSStartNetworkInterfaceRequest_TechnologyPreference ); + if (*pOutLen < offset + sizeof( sQMIRawContentHeader ) + tlvx30Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + pHeader = (sQMIRawContentHeader*)(pOut + offset); + pHeader->mTypeID = 0x30; + pHeader->mLength = tlvx30Sz; + + offset += sizeof( sQMIRawContentHeader ); + + sWDSStartNetworkInterfaceRequest_TechnologyPreference * pTLVx30; + pTLVx30 = (sWDSStartNetworkInterfaceRequest_TechnologyPreference*)(pOut + offset); + memset( pTLVx30, 0, tlvx30Sz ); + + // Set the value + pTLVx30->mEnable3GPP = ((*pTechnology & 0x00000001) != 0); + pTLVx30->mEnable3GPP2 = ((*pTechnology & 0x00000002) != 0); + + offset += tlvx30Sz; + } + + // Add Primary DNS, if specified + if (pPrimaryDNS != 0) + { + // Check size + WORD tlvx10Sz = sizeof( sWDSStartNetworkInterfaceRequest_PrimaryDNS ); + if (*pOutLen < offset + sizeof( sQMIRawContentHeader ) + tlvx10Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + pHeader = (sQMIRawContentHeader*)(pOut + offset); + pHeader->mTypeID = 0x10; + pHeader->mLength = tlvx10Sz; + + offset += sizeof( sQMIRawContentHeader ); + + sWDSStartNetworkInterfaceRequest_PrimaryDNS * pTLVx10; + pTLVx10 = (sWDSStartNetworkInterfaceRequest_PrimaryDNS*)(pOut + offset); + memset( pTLVx10, 0, tlvx10Sz ); + + ULONG ip0 = (*pPrimaryDNS & 0x000000FF); + ULONG ip1 = (*pPrimaryDNS & 0x0000FF00) >> 8; + ULONG ip2 = (*pPrimaryDNS & 0x00FF0000) >> 16; + ULONG ip3 = (*pPrimaryDNS & 0xFF000000) >> 24; + + // Set the value + pTLVx10->mIPV4Address[0] = (INT8)ip0; + pTLVx10->mIPV4Address[1] = (INT8)ip1; + pTLVx10->mIPV4Address[2] = (INT8)ip2; + pTLVx10->mIPV4Address[3] = (INT8)ip3; + + offset += tlvx10Sz; + } + + // Add Secondary DNS, if specified + if (pSecondaryDNS != 0) + { + // Check size + WORD tlvx11Sz = sizeof( sWDSStartNetworkInterfaceRequest_SecondaryDNS ); + if (*pOutLen < offset + sizeof( sQMIRawContentHeader ) + tlvx11Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + pHeader = (sQMIRawContentHeader*)(pOut + offset); + pHeader->mTypeID = 0x11; + pHeader->mLength = tlvx11Sz; + + offset += sizeof( sQMIRawContentHeader ); + + sWDSStartNetworkInterfaceRequest_SecondaryDNS * pTLVx11; + pTLVx11 = (sWDSStartNetworkInterfaceRequest_SecondaryDNS*)(pOut + offset); + memset( pTLVx11, 0, tlvx11Sz ); + + ULONG ip0 = (*pSecondaryDNS & 0x000000FF); + ULONG ip1 = (*pSecondaryDNS & 0x0000FF00) >> 8; + ULONG ip2 = (*pSecondaryDNS & 0x00FF0000) >> 16; + ULONG ip3 = (*pSecondaryDNS & 0xFF000000) >> 24; + + // Set the value + pTLVx11->mIPV4Address[0] = (INT8)ip0; + pTLVx11->mIPV4Address[1] = (INT8)ip1; + pTLVx11->mIPV4Address[2] = (INT8)ip2; + pTLVx11->mIPV4Address[3] = (INT8)ip3; + + offset += tlvx11Sz; + } + + // Add Primary NBNS, if specified + if (pPrimaryNBNS != 0) + { + // Check size + WORD tlvx12Sz = sizeof( sWDSStartNetworkInterfaceRequest_PrimaryNBNS ); + if (*pOutLen < offset + sizeof( sQMIRawContentHeader ) + tlvx12Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + pHeader = (sQMIRawContentHeader*)(pOut + offset); + pHeader->mTypeID = 0x12; + pHeader->mLength = tlvx12Sz; + + offset += sizeof( sQMIRawContentHeader ); + + sWDSStartNetworkInterfaceRequest_PrimaryNBNS * pTLVx12; + pTLVx12 = (sWDSStartNetworkInterfaceRequest_PrimaryNBNS*)(pOut + offset); + memset( pTLVx12, 0, tlvx12Sz ); + + ULONG ip0 = (*pPrimaryNBNS & 0x000000FF); + ULONG ip1 = (*pPrimaryNBNS & 0x0000FF00) >> 8; + ULONG ip2 = (*pPrimaryNBNS & 0x00FF0000) >> 16; + ULONG ip3 = (*pPrimaryNBNS & 0xFF000000) >> 24; + + // Set the value + pTLVx12->mIPV4Address[0] = (INT8)ip0; + pTLVx12->mIPV4Address[1] = (INT8)ip1; + pTLVx12->mIPV4Address[2] = (INT8)ip2; + pTLVx12->mIPV4Address[3] = (INT8)ip3; + + offset += tlvx12Sz; + } + + // Add Secondary NBNS, if specified + if (pSecondaryNBNS != 0) + { + // Check size + WORD tlvx13Sz = sizeof( sWDSStartNetworkInterfaceRequest_SecondaryNBNS ); + if (*pOutLen < offset + sizeof( sQMIRawContentHeader ) + tlvx13Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + pHeader = (sQMIRawContentHeader*)(pOut + offset); + pHeader->mTypeID = 0x13; + pHeader->mLength = tlvx13Sz; + + offset += sizeof( sQMIRawContentHeader ); + + sWDSStartNetworkInterfaceRequest_SecondaryNBNS * pTLVx13; + pTLVx13 = (sWDSStartNetworkInterfaceRequest_SecondaryNBNS*)(pOut + offset); + memset( pTLVx13, 0, tlvx13Sz ); + + ULONG ip0 = (*pSecondaryNBNS & 0x000000FF); + ULONG ip1 = (*pSecondaryNBNS & 0x0000FF00) >> 8; + ULONG ip2 = (*pSecondaryNBNS & 0x00FF0000) >> 16; + ULONG ip3 = (*pSecondaryNBNS & 0xFF000000) >> 24; + + // Set the value + pTLVx13->mIPV4Address[0] = (INT8)ip0; + pTLVx13->mIPV4Address[1] = (INT8)ip1; + pTLVx13->mIPV4Address[2] = (INT8)ip2; + pTLVx13->mIPV4Address[3] = (INT8)ip3; + + offset += tlvx13Sz; + } + + // Add APN Name, if specified + if (pAPNName != 0) + { + std::string apnName( pAPNName ); + + // Check size + WORD tlvx14Sz = (WORD)apnName.size(); + if (*pOutLen < offset + sizeof( sQMIRawContentHeader ) + tlvx14Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + pHeader = (sQMIRawContentHeader*)(pOut + offset); + pHeader->mTypeID = 0x14; + pHeader->mLength = tlvx14Sz; + + offset += sizeof( sQMIRawContentHeader ); + + // Set the value + memcpy( (pOut + offset), apnName.c_str(), apnName.size() ); + + offset += tlvx14Sz; + } + + // Add IP Address, if specified + if (pIPAddress != 0) + { + // Check size + WORD tlvx15Sz = sizeof( sWDSStartNetworkInterfaceRequest_IPAddress ); + if (*pOutLen < offset + sizeof( sQMIRawContentHeader ) + tlvx15Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + pHeader = (sQMIRawContentHeader*)(pOut + offset); + pHeader->mTypeID = 0x15; + pHeader->mLength = tlvx15Sz; + + offset += sizeof( sQMIRawContentHeader ); + + sWDSStartNetworkInterfaceRequest_IPAddress * pTLVx15; + pTLVx15 = (sWDSStartNetworkInterfaceRequest_IPAddress*)(pOut + offset); + memset( pTLVx15, 0, tlvx15Sz ); + + ULONG ip0 = (*pIPAddress & 0x000000FF); + ULONG ip1 = (*pIPAddress & 0x0000FF00) >> 8; + ULONG ip2 = (*pIPAddress & 0x00FF0000) >> 16; + ULONG ip3 = (*pIPAddress & 0xFF000000) >> 24; + + // Set the value + pTLVx15->mIPV4Address[0] = (INT8)ip0; + pTLVx15->mIPV4Address[1] = (INT8)ip1; + pTLVx15->mIPV4Address[2] = (INT8)ip2; + pTLVx15->mIPV4Address[3] = (INT8)ip3; + + offset += tlvx15Sz; + } + + // Add Authentication, if specified + if (pAuthentication != 0) + { + // Check size + WORD tlvx16Sz = sizeof( sWDSStartNetworkInterfaceRequest_Authentication ); + if (*pOutLen < offset + sizeof( sQMIRawContentHeader ) + tlvx16Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + pHeader = (sQMIRawContentHeader*)(pOut + offset); + pHeader->mTypeID = 0x16; + pHeader->mLength = tlvx16Sz; + + offset += sizeof( sQMIRawContentHeader ); + + sWDSStartNetworkInterfaceRequest_Authentication * pTLVx16; + pTLVx16 = (sWDSStartNetworkInterfaceRequest_Authentication*)(pOut + offset); + memset( pTLVx16, 0, tlvx16Sz ); + + // Set the value + pTLVx16->mEnablePAP = ((*pAuthentication & 0x00000001) != 0); + pTLVx16->mEnableCHAP = ((*pAuthentication & 0x00000002) != 0); + + offset += tlvx16Sz; + } + + // Add Username, if specified + if (pUsername != 0) + { + std::string username( pUsername ); + + // Check size + WORD tlvx17Sz = (WORD)username.size(); + if (*pOutLen < offset + sizeof( sQMIRawContentHeader ) + tlvx17Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + pHeader = (sQMIRawContentHeader*)(pOut + offset); + pHeader->mTypeID = 0x17; + pHeader->mLength = tlvx17Sz; + + offset += sizeof( sQMIRawContentHeader ); + + // Set the value + memcpy( (pOut + offset), username.c_str(), username.size() ); + + offset += tlvx17Sz; + } + + // Add Password, if specified + if (pPassword != 0) + { + std::string password( pPassword ); + + // Check size + WORD tlvx18Sz = (WORD)password.size(); + if (*pOutLen < offset + sizeof( sQMIRawContentHeader ) + tlvx18Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + pHeader = (sQMIRawContentHeader*)(pOut + offset); + pHeader->mTypeID = 0x18; + pHeader->mLength = tlvx18Sz; + + offset += sizeof( sQMIRawContentHeader ); + + // Set the value + memcpy( (pOut + offset), password.c_str(), password.size() ); + + offset += tlvx18Sz; + } + + *pOutLen = offset; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + ParseStartDataSession + +DESCRIPTION: + This function activates a packet data session + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pSessionId [ O ] - The assigned session ID + pFailureReason [ O ] - Upon call failure the failure reason provided + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseStartDataSession( + ULONG inLen, + const BYTE * pIn, + ULONG * pSessionId, + ULONG * pFailureReason ) +{ + // Validate arguments + if (pIn == 0 + || pSessionId == 0 + || pFailureReason == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Check mandatory response + const sResultCode * pTLVx02; + ULONG outLenx02; + ULONG rc = GetTLV( inLen, pIn, 0x02, &outLenx02, (const BYTE **)&pTLVx02 ); + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + if (outLenx02 < sizeof( sResultCode )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + if (pTLVx02->mQMIResult != eQMIResults_Success) + { + rc = pTLVx02->mQMIError + eGOBI_ERR_QMI_OFFSET; + } + + if (rc != eGOBI_ERR_NONE) + { + // Still parse call end reason, if present + const sWDSStartNetworkInterfaceResponse_CallEndReason * pTLVx10; + ULONG outLenx10; + ULONG rc2 = GetTLV( inLen, pIn, 0x10, &outLenx10, (const BYTE **)&pTLVx10 ); + if (rc2 == eGOBI_ERR_NONE) + { + if (outLenx10 >= sizeof( sWDSStartNetworkInterfaceResponse_CallEndReason )) + { + *pFailureReason = pTLVx10->mCallEnd; + } + } + + return rc; + } + + // Find the Session ID + const sWDSStartNetworkInterfaceResponse_PacketDataHandle * pTLVx01; + ULONG outLenx01; + rc = GetTLV( inLen, pIn, 0x01, &outLenx01, (const BYTE **)&pTLVx01 ); + if (rc == eGOBI_ERR_NONE) + { + if (outLenx01 < sizeof( sWDSStartNetworkInterfaceResponse_PacketDataHandle )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + *pSessionId = pTLVx01->mPacketDataHandle; + } + + // Session ID is mandatory, if it failed return that error + return rc; +} + +/*=========================================================================== +METHOD: + PackStopDataSession + +DESCRIPTION: + This function stops the current data session + +PARAMETERS: + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + sessionId [ I ] - The ID of the session to terminate + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PackStopDataSession( + ULONG * pOutLen, + BYTE * pOut, + ULONG sessionId ) +{ + // Validate arguments + if (pOut == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Add session ID + + // Check size + WORD tlvx01Sz = sizeof( sWDSStopNetworkInterfaceRequest_PacketDataHandle ); + if (*pOutLen < sizeof( sQMIRawContentHeader ) + tlvx01Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + sQMIRawContentHeader * pHeader = (sQMIRawContentHeader*)pOut; + pHeader->mTypeID = 0x01; + pHeader->mLength = tlvx01Sz; + + ULONG offset = sizeof( sQMIRawContentHeader ); + + sWDSStopNetworkInterfaceRequest_PacketDataHandle * pTLVx01; + pTLVx01 = (sWDSStopNetworkInterfaceRequest_PacketDataHandle*)(pOut + offset); + memset( pTLVx01, 0, tlvx01Sz ); + + // Set the value + pTLVx01->mPacketDataHandle = sessionId; + + offset += tlvx01Sz; + *pOutLen = offset; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + PackGetIPAddress + +DESCRIPTION: + This function returns the current packet data session IP address + +PARAMETERS: + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PackGetIPAddress( + ULONG * pOutLen, + BYTE * pOut ) +{ + // Validate arguments + if (pOut == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Request the settings + + // Check size + WORD tlvx10Sz = sizeof( sWDSGetCurrentSettingsRequest_RequestedSettings ); + if (*pOutLen < sizeof( sQMIRawContentHeader ) + tlvx10Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + sQMIRawContentHeader * pHeader = (sQMIRawContentHeader*)pOut; + pHeader->mTypeID = 0x10; + pHeader->mLength = tlvx10Sz; + + ULONG offset = sizeof( sQMIRawContentHeader ); + + sWDSGetCurrentSettingsRequest_RequestedSettings * pTLVx10; + pTLVx10 = (sWDSGetCurrentSettingsRequest_RequestedSettings*)(pOut + offset); + memset( pTLVx10, 0, tlvx10Sz ); + + // Set the value + pTLVx10->mIPAddress = true; + + offset += tlvx10Sz; + *pOutLen = offset; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + ParseGetIPAddress + +DESCRIPTION: + This function returns the current packet data session IP address + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pIPAddress [ O ] - Assigned IPv4 address + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseGetIPAddress( + ULONG inLen, + const BYTE * pIn, + ULONG * pIPAddress ) +{ + // Validate arguments + if (pIn == 0 || pIPAddress == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Find the IP Address + const sWDSGetDefaultSettingsResponse_IPAddress * pTLVx1E; + ULONG outLenx1E; + ULONG rc = GetTLV( inLen, pIn, 0x1E, &outLenx1E, (const BYTE **)&pTLVx1E ); + if (rc == eGOBI_ERR_NONE) + { + if (outLenx1E < sizeof( sWDSGetDefaultSettingsResponse_IPAddress )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + ULONG ip0 = pTLVx1E->mIPV4Address[0]; + ULONG ip1 = pTLVx1E->mIPV4Address[1] << 8; + ULONG ip2 = pTLVx1E->mIPV4Address[2] << 16; + ULONG ip3 = pTLVx1E->mIPV4Address[3] << 24; + + *pIPAddress = (ip0 | ip1 | ip2 | ip3); + } + + // If no IP address is found, fail + return rc; +} + +/*=========================================================================== +METHOD: + ParseGetConnectionRate + +DESCRIPTION: + This function returns connection rate information for the packet data + connection + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pCurrentChannelTXRate [ O ] - Current channel TX rate (bps) + pCurrentChannelRXRate [ O ] - Current channel RX rate (bps) + pMaxChannelTXRate [ O ] - Maximum channel TX rate (bps) + pMaxChannelRXRate [ O ] - Maximum channel RX rate (bps) + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseGetConnectionRate( + ULONG inLen, + const BYTE * pIn, + ULONG * pCurrentChannelTXRate, + ULONG * pCurrentChannelRXRate, + ULONG * pMaxChannelTXRate, + ULONG * pMaxChannelRXRate ) +{ + // Validate arguments + if (pIn == 0 + || pCurrentChannelTXRate == 0 + || pCurrentChannelRXRate == 0 + || pMaxChannelTXRate == 0 + || pMaxChannelRXRate == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Find the rates + const sWDSGetChannelRatesResponse_ChannelRates * pTLVx01; + ULONG outLenx01; + ULONG rc = GetTLV( inLen, pIn, 0x01, &outLenx01, (const BYTE **)&pTLVx01 ); + if (rc == eGOBI_ERR_NONE) + { + if (outLenx01 < sizeof( sWDSGetChannelRatesResponse_ChannelRates )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + // Get the values + *pCurrentChannelTXRate = pTLVx01->mChannelTXRatebps; + *pCurrentChannelRXRate = pTLVx01->mChannelRXRatebps; + *pMaxChannelTXRate = pTLVx01->mMaxChannelTXRatebps; + *pMaxChannelRXRate = pTLVx01->mMaxChannelRXRatebps; + } + + // If no rates are found, fail + return rc; +} + +/*=========================================================================== +METHOD: + PackGetPacketStatus + +DESCRIPTION: + This function returns the packet data transfer statistics since the start + of the current packet data session + +PARAMETERS: + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PackGetPacketStatus( + ULONG * pOutLen, + BYTE * pOut ) +{ + // Validate arguments + if (pOut == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Request the settings + + // Check size + WORD tlvx01Sz = sizeof( sWDSGetPacketStatisticsRequest_PacketStatsMask ); + if (*pOutLen < sizeof( sQMIRawContentHeader ) + tlvx01Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + sQMIRawContentHeader * pHeader = (sQMIRawContentHeader*)pOut; + pHeader->mTypeID = 0x01; + pHeader->mLength = tlvx01Sz; + + ULONG offset = sizeof( sQMIRawContentHeader ); + + sWDSGetPacketStatisticsRequest_PacketStatsMask * pTLVx01; + pTLVx01 = (sWDSGetPacketStatisticsRequest_PacketStatsMask*)(pOut + offset); + memset( pTLVx01, 0, tlvx01Sz ); + + // Set the values + pTLVx01->mReportTXPacketSuccesses = true; + pTLVx01->mReportRXPacketSuccesses = true; + pTLVx01->mReportTXPacketErrors = true; + pTLVx01->mReportRXPacketErrors = true; + pTLVx01->mReportTXOverflows = true; + pTLVx01->mReportRXOverflows = true; + + offset += tlvx01Sz; + *pOutLen = offset; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + ParseGetPacketStatus + +DESCRIPTION: + This function returns the packet data transfer statistics since the start + of the current packet data session + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pTXPacketSuccesses [ O ] - Packets transmitted without error + pRXPacketSuccesses [ O ] - Packets received without error + pTXPacketErrors [ O ] - Outgoing packets with framing errors + pRXPacketErrors [ O ] - Incoming packets with framing errors + pTXPacketOverflows [ O ] - Packets dropped because TX buffer overflowed + pRXPacketOverflows [ O ] - Packets dropped because RX buffer overflowed + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseGetPacketStatus( + ULONG inLen, + const BYTE * pIn, + ULONG * pTXPacketSuccesses, + ULONG * pRXPacketSuccesses, + ULONG * pTXPacketErrors, + ULONG * pRXPacketErrors, + ULONG * pTXPacketOverflows, + ULONG * pRXPacketOverflows ) +{ + // Validate arguments + if (pIn == 0 + || pTXPacketSuccesses == 0 + || pRXPacketSuccesses == 0 + || pTXPacketErrors == 0 + || pRXPacketErrors == 0 + || pTXPacketOverflows == 0 + || pRXPacketOverflows == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // NOTE: All TLVs are required. If any fail then all fail + + // Find the TX packet sucesses + const sWDSGetPacketStatisticsResponse_TXPacketSuccesses * pTLVx10; + ULONG outLenx10; + ULONG rc = GetTLV( inLen, pIn, 0x10, &outLenx10, (const BYTE **)&pTLVx10 ); + if (rc == eGOBI_ERR_NONE) + { + if (outLenx10 < sizeof( sWDSGetPacketStatisticsResponse_TXPacketSuccesses )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + } + else + { + return rc; + } + + // Find the RX packet sucesses + const sWDSGetPacketStatisticsResponse_RXPacketSuccesses * pTLVx11; + ULONG outLenx11; + rc = GetTLV( inLen, pIn, 0x11, &outLenx11, (const BYTE **)&pTLVx11 ); + if (rc == eGOBI_ERR_NONE) + { + if (outLenx11 < sizeof( sWDSGetPacketStatisticsResponse_RXPacketSuccesses )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + } + else + { + return rc; + } + + // Find the TX packet errors + const sWDSGetPacketStatisticsResponse_TXPacketErrors * pTLVx12; + ULONG outLenx12; + rc = GetTLV( inLen, pIn, 0x12, &outLenx12, (const BYTE **)&pTLVx12 ); + if (rc == eGOBI_ERR_NONE) + { + if (outLenx12 < sizeof( sWDSGetPacketStatisticsResponse_TXPacketErrors )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + } + else + { + return rc; + } + + // Find the RX packet errors + const sWDSGetPacketStatisticsResponse_RXPacketErrors * pTLVx13; + ULONG outLenx13; + rc = GetTLV( inLen, pIn, 0x13, &outLenx13, (const BYTE **)&pTLVx13 ); + if (rc == eGOBI_ERR_NONE) + { + if (outLenx13 < sizeof( sWDSGetPacketStatisticsResponse_RXPacketErrors )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + } + else + { + return rc; + } + + // Find the TX packet overflows + const sWDSGetPacketStatisticsResponse_TXOverflows * pTLVx14; + ULONG outLenx14; + rc = GetTLV( inLen, pIn, 0x14, &outLenx14, (const BYTE **)&pTLVx14 ); + if (rc == eGOBI_ERR_NONE) + { + if (outLenx14 < sizeof( sWDSGetPacketStatisticsResponse_TXOverflows )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + } + else + { + return rc; + } + + // Find the RX packet overflows + const sWDSGetPacketStatisticsResponse_RXOverflows * pTLVx15; + ULONG outLenx15; + rc = GetTLV( inLen, pIn, 0x15, &outLenx15, (const BYTE **)&pTLVx15 ); + if (rc == eGOBI_ERR_NONE) + { + if (outLenx15 < sizeof( sWDSGetPacketStatisticsResponse_RXOverflows )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + } + else + { + return rc; + } + + // Populate the statistics + *pTXPacketSuccesses = pTLVx10->mTXPacketSuccesses; + *pRXPacketSuccesses = pTLVx11->mRXPacketSuccesses; + *pTXPacketErrors = pTLVx12->mTXPacketErrors; + *pRXPacketErrors = pTLVx13->mRXPacketErrors; + *pTXPacketOverflows = pTLVx14->mTXOverflows; + *pRXPacketOverflows = pTLVx15->mRXOverflows; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + PackGetByteTotals + +DESCRIPTION: + This function returns the RX/TX byte counts since the start of the + current packet data session + +PARAMETERS: + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PackGetByteTotals( + ULONG * pOutLen, + BYTE * pOut ) +{ + // Validate arguments + if (pOut == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Request the settings + + // Check size + WORD tlvx01Sz = sizeof( sWDSGetPacketStatisticsRequest_PacketStatsMask ); + if (*pOutLen < sizeof( sQMIRawContentHeader ) + tlvx01Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + sQMIRawContentHeader * pHeader = (sQMIRawContentHeader*)pOut; + pHeader->mTypeID = 0x01; + pHeader->mLength = tlvx01Sz; + + ULONG offset = sizeof( sQMIRawContentHeader ); + + sWDSGetPacketStatisticsRequest_PacketStatsMask * pTLVx01; + pTLVx01 = (sWDSGetPacketStatisticsRequest_PacketStatsMask*)(pOut + offset); + memset( pTLVx01, 0, tlvx01Sz ); + + // Set the values + pTLVx01->mTXByteTotal = true; + pTLVx01->mRXByteTotal = true; + + offset += tlvx01Sz; + *pOutLen = offset; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + ParseGetByteTotals + +DESCRIPTION: + This function returns the RX/TX byte counts since the start of the + current packet data session + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pTXTotalBytes [ O ] - Bytes transmitted without error + pRXTotalBytes [ O ] - Bytes received without error + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseGetByteTotals( + ULONG inLen, + const BYTE * pIn, + ULONGLONG * pTXTotalBytes, + ULONGLONG * pRXTotalBytes ) +{ + // Validate arguments + if (pIn == 0 + || pTXTotalBytes == 0 + || pRXTotalBytes == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // NOTE: All TLVs are required. If any fail then all fail + + // Find the TX bytes + const sWDSGetPacketStatisticsResponse_TXBytes * pTLVx19; + ULONG outLenx19; + ULONG rc = GetTLV( inLen, pIn, 0x19, &outLenx19, (const BYTE **)&pTLVx19 ); + if (rc == eGOBI_ERR_NONE) + { + if (outLenx19 < sizeof( sWDSGetPacketStatisticsResponse_TXBytes )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + } + else + { + return rc; + } + + // Find the RX bytes + const sWDSGetPacketStatisticsResponse_RXBytes * pTLVx1A; + ULONG outLenx1A; + rc = GetTLV( inLen, pIn, 0x1A, &outLenx1A, (const BYTE **)&pTLVx1A ); + if (rc == eGOBI_ERR_NONE) + { + if (outLenx1A < sizeof( sWDSGetPacketStatisticsResponse_RXBytes )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + } + else + { + return rc; + } + + // Populate the statistics + *pTXTotalBytes = pTLVx19->mTXByteTotal; + *pRXTotalBytes = pTLVx1A->mRXByteTotal; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + PackSetMobileIP + +DESCRIPTION: + This function sets the current mobile IP setting + +PARAMETERS: + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + mode [ I ] - Desired mobile IP setting + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PackSetMobileIP( + ULONG * pOutLen, + BYTE * pOut, + ULONG mode ) +{ + // Validate arguments + if (pOut == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Set the mode + + // Check size + WORD tlvx01Sz = sizeof( sWDSSetMIPModeRequest_MobileIPMode ); + if (*pOutLen < sizeof( sQMIRawContentHeader ) + tlvx01Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + sQMIRawContentHeader * pHeader = (sQMIRawContentHeader*)pOut; + pHeader->mTypeID = 0x01; + pHeader->mLength = tlvx01Sz; + + ULONG offset = sizeof( sQMIRawContentHeader ); + + sWDSSetMIPModeRequest_MobileIPMode * pTLVx01; + pTLVx01 = (sWDSSetMIPModeRequest_MobileIPMode*)(pOut + offset); + memset( pTLVx01, 0, tlvx01Sz ); + + // Set the values + pTLVx01->mMIPMode = (eQMIMobileIPModes)mode; + + offset += tlvx01Sz; + *pOutLen = offset; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + ParseGetMobileIP + +DESCRIPTION: + This function gets the current mobile IP setting + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pMode [ O ] - Current mobile IP setting + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseGetMobileIP( + ULONG inLen, + const BYTE * pIn, + ULONG * pMode ) +{ + // Validate arguments + if (pIn == 0 || pMode == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Find the mode + const sWDSGetMIPModeResponse_MobileIPMode * pTLVx01; + ULONG outLenx01; + ULONG rc = GetTLV( inLen, pIn, 0x01, &outLenx01, (const BYTE **)&pTLVx01 ); + if (rc == eGOBI_ERR_NONE) + { + if (outLenx01 < sizeof( sWDSGetMIPModeResponse_MobileIPMode )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + *pMode = pTLVx01->mMIPMode; + } + + return rc; +} + +/*=========================================================================== +METHOD: + PackSetActiveMobileIPProfile + +DESCRIPTION: + This function sets the active mobile IP profile index + +PARAMETERS: + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + pSPC [ I ] - Six digit service programming code + index [ I ] - Desired mobile IP profile index + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PackSetActiveMobileIPProfile( + ULONG * pOutLen, + BYTE * pOut, + CHAR * pSPC, + BYTE index ) +{ + // Validate arguments + if (pOut == 0 || pSPC == 0 || pSPC[0] == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + std::string spc( pSPC ); + if (spc.size() > 6) + { + return eGOBI_ERR_INVALID_ARG; + } + + if (spc.find_first_not_of( "0123456789" ) != std::string::npos ) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Check size + WORD tlvx01Sz = sizeof( sWDSSetActiveMIPProfileRequest_Index ); + if (*pOutLen < sizeof( sQMIRawContentHeader ) + tlvx01Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + sQMIRawContentHeader * pHeader = (sQMIRawContentHeader*)pOut; + pHeader->mTypeID = 0x01; + pHeader->mLength = tlvx01Sz; + + ULONG offset = sizeof( sQMIRawContentHeader ); + + sWDSSetActiveMIPProfileRequest_Index * pTLVx01; + pTLVx01 = (sWDSSetActiveMIPProfileRequest_Index*)(pOut + offset); + memset( pTLVx01, 0, tlvx01Sz ); + + // Set the values + memcpy( &pTLVx01->mSPC[0], spc.c_str(), spc.size() ); + pTLVx01->mProfileIndex = index; + + offset += tlvx01Sz; + *pOutLen = offset; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + ParseGetActiveMobileIPProfile + +DESCRIPTION: + This function gets the the active mobile IP profile index + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pIndex [ O ] - Active mobile IP profile index + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseGetActiveMobileIPProfile( + ULONG inLen, + const BYTE * pIn, + BYTE * pIndex ) +{ + // Validate arguments + if (pIn == 0 || pIndex == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Find the mode + const sWDSGetActiveMIPProfileResponse_Index * pTLVx01; + ULONG outLenx01; + ULONG rc = GetTLV( inLen, pIn, 0x01, &outLenx01, (const BYTE **)&pTLVx01 ); + if (rc == eGOBI_ERR_NONE) + { + if (outLenx01 < sizeof( sWDSGetActiveMIPProfileResponse_Index )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + *pIndex = pTLVx01->mProfileIndex; + } + + return rc; +} + +/*=========================================================================== +METHOD: + PackSetMobileIPProfile + +DESCRIPTION: + This function sets the specified mobile IP profile settings + +PARAMETERS: + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + pSPC [ I ] - Six digit service programming code + index [ I ] - Mobile IP profile ID + pEnabled [ I ] - (Optional) Enable MIP profile? + pAddress [ I ] - (Optional) Home IPv4 address + pPrimaryHA [ I ] - (Optional) Primary home agent IPv4 address + pSecondaryHA [ I ] - (Optional) Secondary home agent IPv4 address + bRevTunneling [ I ] - (Optional) Enable reverse tunneling? + pNAI [ I ] - (Optional) Network access identifier string + pHASPI [ I ] - (Optional) HA security parameter index + pAAASPI [ I ] - (Optional) AAA security parameter index + pMNHA [ I ] - (Optional) MN-HA string + pMNAAA [ I ] - (Optional) MN-AAA string + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PackSetMobileIPProfile( + ULONG * pOutLen, + BYTE * pOut, + CHAR * pSPC, + BYTE index, + BYTE * pEnabled, + ULONG * pAddress, + ULONG * pPrimaryHA, + ULONG * pSecondaryHA, + BYTE * pRevTunneling, + CHAR * pNAI, + ULONG * pHASPI, + ULONG * pAAASPI, + CHAR * pMNHA, + CHAR * pMNAAA ) +{ + // Validate arguments + if (pOut == 0 || pSPC == 0 || pSPC[0] == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + std::string spc( pSPC ); + if (spc.size() > 6) + { + return eGOBI_ERR_INVALID_ARG; + } + + if (spc.find_first_not_of( "0123456789" ) != std::string::npos ) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Check size + WORD tlvx01Sz = sizeof( sWDSSetMIPProfileRequest_Index ); + if (*pOutLen < sizeof( sQMIRawContentHeader ) + tlvx01Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + sQMIRawContentHeader * pHeader = (sQMIRawContentHeader*)pOut; + pHeader->mTypeID = 0x01; + pHeader->mLength = tlvx01Sz; + + ULONG offset = sizeof( sQMIRawContentHeader ); + + sWDSSetMIPProfileRequest_Index * pTLVx01; + pTLVx01 = (sWDSSetMIPProfileRequest_Index*)(pOut + offset); + memset( pTLVx01, 0, tlvx01Sz ); + + // Set the values + memcpy( &pTLVx01->mSPC[0], spc.c_str(), spc.size() ); + pTLVx01->mProfileIndex = index; + + offset += tlvx01Sz; + + // Add Enabled, if specified + if (pEnabled != 0) + { + // Check size + WORD tlvx10Sz = sizeof( sWDSSetMIPProfileRequest_State ); + if (*pOutLen < offset + sizeof( sQMIRawContentHeader ) + tlvx10Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + pHeader = (sQMIRawContentHeader*)(pOut + offset); + pHeader->mTypeID = 0x10; + pHeader->mLength = tlvx10Sz; + + offset += sizeof( sQMIRawContentHeader ); + + sWDSSetMIPProfileRequest_State * pTLVx10; + pTLVx10 = (sWDSSetMIPProfileRequest_State*)(pOut + offset); + memset( pTLVx10, 0, tlvx10Sz ); + + // Set the value + pTLVx10->mEnabled = (*pEnabled == 0 ? 0 : 1); + + offset += tlvx10Sz; + } + + // Add Home Address, if specified + if (pAddress != 0) + { + // Check size + WORD tlvx11Sz = sizeof( sWDSSetMIPProfileRequest_HomeAddress ); + if (*pOutLen < offset + sizeof( sQMIRawContentHeader ) + tlvx11Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + pHeader = (sQMIRawContentHeader*)(pOut + offset); + pHeader->mTypeID = 0x11; + pHeader->mLength = tlvx11Sz; + + offset += sizeof( sQMIRawContentHeader ); + + sWDSSetMIPProfileRequest_HomeAddress * pTLVx11; + pTLVx11 = (sWDSSetMIPProfileRequest_HomeAddress*)(pOut + offset); + memset( pTLVx11, 0, tlvx11Sz ); + + ULONG ip0 = (*pAddress & 0x000000FF); + ULONG ip1 = (*pAddress & 0x0000FF00) >> 8; + ULONG ip2 = (*pAddress & 0x00FF0000) >> 16; + ULONG ip3 = (*pAddress & 0xFF000000) >> 24; + + // Set the value + pTLVx11->mIPV4Address[0] = (INT8)ip0; + pTLVx11->mIPV4Address[1] = (INT8)ip1; + pTLVx11->mIPV4Address[2] = (INT8)ip2; + pTLVx11->mIPV4Address[3] = (INT8)ip3; + + offset += tlvx11Sz; + } + + // Add Primary Home Agent Address, if specified + if (pPrimaryHA != 0) + { + // Check size + WORD tlvx12Sz = sizeof( sWDSSetMIPProfileRequest_PrimaryHomeAgentAddress ); + if (*pOutLen < offset + sizeof( sQMIRawContentHeader ) + tlvx12Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + pHeader = (sQMIRawContentHeader*)(pOut + offset); + pHeader->mTypeID = 0x12; + pHeader->mLength = tlvx12Sz; + + offset += sizeof( sQMIRawContentHeader ); + + sWDSSetMIPProfileRequest_PrimaryHomeAgentAddress * pTLVx12; + pTLVx12 = (sWDSSetMIPProfileRequest_PrimaryHomeAgentAddress*)(pOut + offset); + memset( pTLVx12, 0, tlvx12Sz ); + + ULONG ip0 = (*pPrimaryHA & 0x000000FF); + ULONG ip1 = (*pPrimaryHA & 0x0000FF00) >> 8; + ULONG ip2 = (*pPrimaryHA & 0x00FF0000) >> 16; + ULONG ip3 = (*pPrimaryHA & 0xFF000000) >> 24; + + // Set the value + pTLVx12->mIPV4Address[0] = (INT8)ip0; + pTLVx12->mIPV4Address[1] = (INT8)ip1; + pTLVx12->mIPV4Address[2] = (INT8)ip2; + pTLVx12->mIPV4Address[3] = (INT8)ip3; + + offset += tlvx12Sz; + } + + // Add Secondary Home Agent Address, if specified + if (pSecondaryHA != 0) + { + // Check size + WORD tlvx13Sz = sizeof( sWDSSetMIPProfileRequest_SecondaryHomeAgentAddress ); + if (*pOutLen < offset + sizeof( sQMIRawContentHeader ) + tlvx13Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + pHeader = (sQMIRawContentHeader*)(pOut + offset); + pHeader->mTypeID = 0x13; + pHeader->mLength = tlvx13Sz; + + offset += sizeof( sQMIRawContentHeader ); + + sWDSSetMIPProfileRequest_SecondaryHomeAgentAddress * pTLVx13; + pTLVx13 = (sWDSSetMIPProfileRequest_SecondaryHomeAgentAddress*)(pOut + offset); + memset( pTLVx13, 0, tlvx13Sz ); + + ULONG ip0 = (*pSecondaryHA & 0x000000FF); + ULONG ip1 = (*pSecondaryHA & 0x0000FF00) >> 8; + ULONG ip2 = (*pSecondaryHA & 0x00FF0000) >> 16; + ULONG ip3 = (*pSecondaryHA & 0xFF000000) >> 24; + + // Set the value + pTLVx13->mIPV4Address[0] = (INT8)ip0; + pTLVx13->mIPV4Address[1] = (INT8)ip1; + pTLVx13->mIPV4Address[2] = (INT8)ip2; + pTLVx13->mIPV4Address[3] = (INT8)ip3; + + offset += tlvx13Sz; + } + + // Add reverse tunneling, if specified + if (pRevTunneling != 0) + { + // Check size + WORD tlvx14Sz = sizeof( sWDSSetMIPProfileRequest_ReverseTunneling ); + if (*pOutLen < offset + sizeof( sQMIRawContentHeader ) + tlvx14Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + pHeader = (sQMIRawContentHeader*)(pOut + offset); + pHeader->mTypeID = 0x14; + pHeader->mLength = tlvx14Sz; + + offset += sizeof( sQMIRawContentHeader ); + + sWDSSetMIPProfileRequest_ReverseTunneling * pTLVx14; + pTLVx14 = (sWDSSetMIPProfileRequest_ReverseTunneling*)(pOut + offset); + memset( pTLVx14, 0, tlvx14Sz ); + + // Set the value + pTLVx14->mReverseTunneling = (*pRevTunneling == 0 ? 0 : 1); + + offset += tlvx14Sz; + } + + // Add NAI, if specified + if (pNAI != 0) + { + std::string nai( pNAI ); + + // Check size + WORD tlvx15Sz = (WORD)nai.size(); + if (*pOutLen < offset + sizeof( sQMIRawContentHeader ) + tlvx15Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + pHeader = (sQMIRawContentHeader*)(pOut + offset); + pHeader->mTypeID = 0x15; + pHeader->mLength = tlvx15Sz; + + offset += sizeof( sQMIRawContentHeader ); + + // Set the value + memcpy( (pOut + offset), nai.c_str(), nai.size() ); + + offset += tlvx15Sz; + } + + // Add HA SPI, if specified + if (pHASPI != 0) + { + // Check size + WORD tlvx16Sz = sizeof( sWDSSetMIPProfileRequest_HASPI ); + if (*pOutLen < offset + sizeof( sQMIRawContentHeader ) + tlvx16Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + pHeader = (sQMIRawContentHeader*)(pOut + offset); + pHeader->mTypeID = 0x16; + pHeader->mLength = tlvx16Sz; + + offset += sizeof( sQMIRawContentHeader ); + + sWDSSetMIPProfileRequest_HASPI * pTLVx16; + pTLVx16 = (sWDSSetMIPProfileRequest_HASPI*)(pOut + offset); + memset( pTLVx16, 0, tlvx16Sz ); + + // Set the value + pTLVx16->mHASPI = *pHASPI; + + offset += tlvx16Sz; + } + + // Add AAA SPI, if specified + if (pAAASPI != 0) + { + // Check size + WORD tlvx17Sz = sizeof( sWDSSetMIPProfileRequeste_AAASPI ); + if (*pOutLen < offset + sizeof( sQMIRawContentHeader ) + tlvx17Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + pHeader = (sQMIRawContentHeader*)(pOut + offset); + pHeader->mTypeID = 0x17; + pHeader->mLength = tlvx17Sz; + + offset += sizeof( sQMIRawContentHeader ); + + sWDSSetMIPProfileRequeste_AAASPI * pTLVx17; + pTLVx17 = (sWDSSetMIPProfileRequeste_AAASPI*)(pOut + offset); + memset( pTLVx17, 0, tlvx17Sz ); + + // Set the value + pTLVx17->mAAASPI = *pAAASPI; + + offset += tlvx17Sz; + } + + // Add MN-HA key, if specified + if (pMNHA != 0) + { + std::string mnha( pMNHA ); + + // Check size + WORD tlvx18Sz = (WORD)mnha.size(); + if (*pOutLen < offset + sizeof( sQMIRawContentHeader ) + tlvx18Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + pHeader = (sQMIRawContentHeader*)(pOut + offset); + pHeader->mTypeID = 0x18; + pHeader->mLength = tlvx18Sz; + + offset += sizeof( sQMIRawContentHeader ); + + // Set the value + memcpy( (pOut + offset), mnha.c_str(), mnha.size() ); + + offset += tlvx18Sz; + } + + // Add MN-AAA key, if specified + if (pMNHA != 0) + { + std::string mnaaa( pMNAAA ); + + // Check size + WORD tlvx19Sz = (WORD)mnaaa.size(); + if (*pOutLen < offset + sizeof( sQMIRawContentHeader ) + tlvx19Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + pHeader = (sQMIRawContentHeader*)(pOut + offset); + pHeader->mTypeID = 0x19; + pHeader->mLength = tlvx19Sz; + + offset += sizeof( sQMIRawContentHeader ); + + // Set the value + memcpy( (pOut + offset), mnaaa.c_str(), mnaaa.size() ); + + offset += tlvx19Sz; + } + + // At least one of the optional parameters must have been set + if (offset <= sizeof( sQMIRawContentHeader ) + tlvx01Sz) + { + return eGOBI_ERR_INVALID_ARG; + } + + *pOutLen = offset; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + PackGetMobileIPProfile + +DESCRIPTION: + This function gets the specified mobile IP profile settings + +PARAMETERS: + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + index [ I ] - Mobile IP profile ID + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PackGetMobileIPProfile( + ULONG * pOutLen, + BYTE * pOut, + BYTE index ) +{ + // Validate arguments + if (pOut == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Check size + WORD tlvx01Sz = sizeof( sWDSGetMIPProfileRequest_Index ); + if (*pOutLen < sizeof( sQMIRawContentHeader ) + tlvx01Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + sQMIRawContentHeader * pHeader = (sQMIRawContentHeader*)pOut; + pHeader->mTypeID = 0x01; + pHeader->mLength = tlvx01Sz; + + ULONG offset = sizeof( sQMIRawContentHeader ); + + sWDSGetMIPProfileRequest_Index * pTLVx01; + pTLVx01 = (sWDSGetMIPProfileRequest_Index*)(pOut + offset); + memset( pTLVx01, 0, tlvx01Sz ); + + // Set the values + pTLVx01->mProfileIndex = index; + + offset += tlvx01Sz; + *pOutLen = offset; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + ParseGetMobileIPProfile + +DESCRIPTION: + This function gets the specified mobile IP profile settings + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pEnabled [ O ] - Mobile IP profile enabled? + pAddress [ O ] - Home IPv4 address + pPrimaryHA [ O ] - Primary home agent IPv4 address + pSecondaryHA [ O ] - Secondary home agent IPv4 address + pRevTunneling [ O ] - Reverse tunneling enabled? + naiSize [ I ] - The maximum number of characters (including NULL + terminator) that the NAI array can contain + pNAI [ O ] - Network access identifier string + pHASPI [ O ] - HA security parameter index + pAAASPI [ O ] - AAA security parameter index + pHAState [ O ] - HA key state + pAAAState [ O ] - AAA key state + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseGetMobileIPProfile( + ULONG inLen, + const BYTE * pIn, + BYTE * pEnabled, + ULONG * pAddress, + ULONG * pPrimaryHA, + ULONG * pSecondaryHA, + BYTE * pRevTunneling, + BYTE naiSize, + CHAR * pNAI, + ULONG * pHASPI, + ULONG * pAAASPI, + ULONG * pHAState, + ULONG * pAAAState ) +{ + // Validate arguments + if (pIn == 0 + || pEnabled == 0 + || pAddress == 0 + || pPrimaryHA == 0 + || pSecondaryHA == 0 + || pRevTunneling == 0 + || naiSize == 0 + || pNAI == 0 + || pHASPI == 0 + || pAAASPI == 0 + || pHAState == 0 + || pAAAState == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Assume errors + *pEnabled = 0xff; + *pAddress = 0xffffffff; + *pPrimaryHA = 0xffffffff; + *pSecondaryHA = 0xffffffff; + *pRevTunneling = 0xff; + *pHASPI = 0xffffffff; + *pAAASPI = 0xffffffff; + *pHAState = 0xffffffff; + *pAAAState = 0xffffffff; + + // Find the State + const sWDSGetMIPProfileResponse_State * pTLVx10; + ULONG outLenx10; + ULONG rc = GetTLV( inLen, pIn, 0x10, &outLenx10, (const BYTE **)&pTLVx10 ); + if (rc == eGOBI_ERR_NONE) + { + if (outLenx10 < sizeof( sWDSGetMIPProfileResponse_State )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + *pEnabled = pTLVx10->mEnabled; + } + + // Find the Home Address + const sWDSGetMIPProfileResponse_HomeAddress * pTLVx11; + ULONG outLenx11; + rc = GetTLV( inLen, pIn, 0x11, &outLenx11, (const BYTE **)&pTLVx11 ); + if (rc == eGOBI_ERR_NONE) + { + if (outLenx11 < sizeof( sWDSGetMIPProfileResponse_HomeAddress )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + ULONG ip0 = pTLVx11->mIPV4Address[0]; + ULONG ip1 = pTLVx11->mIPV4Address[1] << 8; + ULONG ip2 = pTLVx11->mIPV4Address[2] << 16; + ULONG ip3 = pTLVx11->mIPV4Address[3] << 24; + + *pAddress = (ip0 | ip1 | ip2 | ip3); + } + + // Find the Primary Home Agent Address + const sWDSGetMIPProfileResponse_PrimaryHomeAgentAddress * pTLVx12; + ULONG outLenx12; + rc = GetTLV( inLen, pIn, 0x12, &outLenx12, (const BYTE **)&pTLVx12 ); + if (rc == eGOBI_ERR_NONE) + { + if (outLenx12 < sizeof( sWDSGetMIPProfileResponse_PrimaryHomeAgentAddress )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + ULONG ip0 = pTLVx12->mIPV4Address[0]; + ULONG ip1 = pTLVx12->mIPV4Address[1] << 8; + ULONG ip2 = pTLVx12->mIPV4Address[2] << 16; + ULONG ip3 = pTLVx12->mIPV4Address[3] << 24; + + *pPrimaryHA = (ip0 | ip1 | ip2 | ip3); + } + + // Find the Secondary Home Agent Address + const sWDSGetMIPProfileResponse_SecondaryHomeAgentAddress * pTLVx13; + ULONG outLenx13; + rc = GetTLV( inLen, pIn, 0x13, &outLenx13, (const BYTE **)&pTLVx13 ); + if (rc == eGOBI_ERR_NONE) + { + if (outLenx13 < sizeof( sWDSGetMIPProfileResponse_SecondaryHomeAgentAddress )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + ULONG ip0 = pTLVx13->mIPV4Address[0]; + ULONG ip1 = pTLVx13->mIPV4Address[1] << 8; + ULONG ip2 = pTLVx13->mIPV4Address[2] << 16; + ULONG ip3 = pTLVx13->mIPV4Address[3] << 24; + + *pSecondaryHA = (ip0 | ip1 | ip2 | ip3); + } + + // Find the Reverse tunneling, if enabled + const sWDSGetMIPProfileResponse_ReverseTunneling * pTLVx14; + ULONG outLenx14; + rc = GetTLV( inLen, pIn, 0x14, &outLenx14, (const BYTE **)&pTLVx14 ); + if (rc == eGOBI_ERR_NONE) + { + if (outLenx10 < sizeof( sWDSGetMIPProfileResponse_ReverseTunneling )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + *pRevTunneling = pTLVx14->mReverseTunneling; + } + + // Find the NAI, if enabled + const sWDSGetMIPProfileResponse_NAI * pTLVx15; + ULONG outLenx15; + rc = GetTLV( inLen, pIn, 0x15, &outLenx15, (const BYTE **)&pTLVx15 ); + if (rc == eGOBI_ERR_NONE) + { + if (naiSize < outLenx15 + 1) + { + return eGOBI_ERR_BUFFER_SZ; + } + + memcpy( pNAI, (const BYTE *)pTLVx15, outLenx15 ); + + // Null terminate + pNAI[outLenx15] = 0; + } + + // Find the HA SPI + const sWDSGetMIPProfileResponse_HASPI * pTLVx16; + ULONG outLenx16; + rc = GetTLV( inLen, pIn, 0x16, &outLenx16, (const BYTE **)&pTLVx16 ); + if (rc == eGOBI_ERR_NONE) + { + if (outLenx16 < sizeof( sWDSGetMIPProfileResponse_HASPI )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + *pHASPI = pTLVx16->mHASPI; + } + + // Find the AAA SPI + const sWDSGetMIPProfileResponse_AAASPI * pTLVx17; + ULONG outLenx17; + rc = GetTLV( inLen, pIn, 0x17, &outLenx17, (const BYTE **)&pTLVx17 ); + if (rc == eGOBI_ERR_NONE) + { + if (outLenx17 < sizeof( sWDSGetMIPProfileResponse_AAASPI )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + *pAAASPI = pTLVx17->mAAASPI; + } + + // Find the HA state + const sWDSGetMIPProfileResponse_HAState * pTLVx1A; + ULONG outLenx1A; + rc = GetTLV( inLen, pIn, 0x1A, &outLenx1A, (const BYTE **)&pTLVx1A ); + if (rc == eGOBI_ERR_NONE) + { + if (outLenx1A < sizeof( sWDSGetMIPProfileResponse_HAState )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + *pHAState = pTLVx1A->mKeyState; + } + + // Find the AAA state + const sWDSGetMIPProfileResponse_AAAState * pTLVx1B; + ULONG outLenx1B; + rc = GetTLV( inLen, pIn, 0x1B, &outLenx1B, (const BYTE **)&pTLVx1B ); + if (rc == eGOBI_ERR_NONE) + { + if (outLenx1B < sizeof( sWDSGetMIPProfileResponse_AAAState )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + *pAAAState = pTLVx1B->mKeyState; + } + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + PackSetMobileIPParameters + +DESCRIPTION: + This function sets the specified mobile IP parameters + +PARAMETERS: + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + pSPC [ I ] - Six digit service programming code + pMode [ I ] - (Optional) Desired mobile IP setting + pRetryLimit [ I ] - (Optional) Retry attempt limit + pRetryInterval [ I ] - (Optional) Retry attempt interval + pReRegPeriod [ I ] - (Optional) Re-registration period + pReRegTraffic [ I ] - (Optional) Re-registration only with traffic? + pHAAuthenticator [ I ] - (Optional) MH-HA authenticator calculator? + pHA2002bis [ I ] - (Optional) MH-HA RFC 2002bis authentication? + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PackSetMobileIPParameters( + ULONG * pOutLen, + BYTE * pOut, + CHAR * pSPC, + ULONG * pMode, + BYTE * pRetryLimit, + BYTE * pRetryInterval, + BYTE * pReRegPeriod, + BYTE * pReRegTraffic, + BYTE * pHAAuthenticator, + BYTE * pHA2002bis ) +{ + // Validate arguments + if (pOut == 0 || pSPC == 0 || pSPC[0] == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + std::string spc( pSPC ); + if (spc.size() > 6) + { + return eGOBI_ERR_INVALID_ARG; + } + + if (spc.find_first_not_of( "0123456789" ) != std::string::npos ) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Check size + WORD tlvx01Sz = sizeof( sWDSSetMIPParametersRequest_SPC ); + if (*pOutLen < sizeof( sQMIRawContentHeader ) + tlvx01Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + sQMIRawContentHeader * pHeader = (sQMIRawContentHeader*)pOut; + pHeader->mTypeID = 0x01; + pHeader->mLength = tlvx01Sz; + + ULONG offset = sizeof( sQMIRawContentHeader ); + + sWDSSetMIPParametersRequest_SPC * pTLVx01; + pTLVx01 = (sWDSSetMIPParametersRequest_SPC*)(pOut + offset); + memset( pTLVx01, 0, tlvx01Sz ); + + // Set the values + memcpy( &pTLVx01->mSPC[0], spc.c_str(), spc.size() ); + + offset += tlvx01Sz; + + // Add Mode, if specified + if (pMode != 0) + { + // Check size + WORD tlvx10Sz = sizeof( sWDSSetMIPParametersRequest_MobileIPMode ); + if (*pOutLen < offset + sizeof( sQMIRawContentHeader ) + tlvx10Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + pHeader = (sQMIRawContentHeader*)(pOut + offset); + pHeader->mTypeID = 0x10; + pHeader->mLength = tlvx10Sz; + + offset += sizeof( sQMIRawContentHeader ); + + sWDSSetMIPParametersRequest_MobileIPMode * pTLVx10; + pTLVx10 = (sWDSSetMIPParametersRequest_MobileIPMode*)(pOut + offset); + memset( pTLVx10, 0, tlvx10Sz ); + + // Set the value + pTLVx10->mMIPMode = (eQMIMobileIPModes)*pMode; + + offset += tlvx10Sz; + } + + // Add Retry Limit, if specified + if (pRetryLimit != 0) + { + // Check size + WORD tlvx11Sz = sizeof( sWDSSetMIPParametersRequest_RetryAttemptLimit ); + if (*pOutLen < offset + sizeof( sQMIRawContentHeader ) + tlvx11Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + pHeader = (sQMIRawContentHeader*)(pOut + offset); + pHeader->mTypeID = 0x11; + pHeader->mLength = tlvx11Sz; + + offset += sizeof( sQMIRawContentHeader ); + + sWDSSetMIPParametersRequest_RetryAttemptLimit * pTLVx11; + pTLVx11 = (sWDSSetMIPParametersRequest_RetryAttemptLimit*)(pOut + offset); + memset( pTLVx11, 0, tlvx11Sz ); + + // Set the value + pTLVx11->mRetryAttemptLimit = *pRetryLimit; + + offset += tlvx11Sz; + } + + // Add Retry interval, if specified + if (pRetryInterval != 0) + { + // Check size + WORD tlvx12Sz = sizeof( sWDSSetMIPParametersRequest_RetryAttemptInterval ); + if (*pOutLen < offset + sizeof( sQMIRawContentHeader ) + tlvx12Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + pHeader = (sQMIRawContentHeader*)(pOut + offset); + pHeader->mTypeID = 0x12; + pHeader->mLength = tlvx12Sz; + + offset += sizeof( sQMIRawContentHeader ); + + sWDSSetMIPParametersRequest_RetryAttemptInterval * pTLVx12; + pTLVx12 = (sWDSSetMIPParametersRequest_RetryAttemptInterval*)(pOut + offset); + memset( pTLVx12, 0, tlvx12Sz ); + + // Set the value + pTLVx12->mRetryAttemptInterval = *pRetryInterval; + + offset += tlvx12Sz; + } + + // Add Re-registration period, if specified + if (pReRegPeriod != 0) + { + // Check size + WORD tlvx13Sz = sizeof( sWDSSetMIPParametersRequest_ReRegistrationPeriod ); + if (*pOutLen < offset + sizeof( sQMIRawContentHeader ) + tlvx13Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + pHeader = (sQMIRawContentHeader*)(pOut + offset); + pHeader->mTypeID = 0x13; + pHeader->mLength = tlvx13Sz; + + offset += sizeof( sQMIRawContentHeader ); + + sWDSSetMIPParametersRequest_ReRegistrationPeriod * pTLVx13; + pTLVx13 = (sWDSSetMIPParametersRequest_ReRegistrationPeriod*)(pOut + offset); + memset( pTLVx13, 0, tlvx13Sz ); + + // Set the value + pTLVx13->mReRegistrationPeriod = *pReRegPeriod; + + offset += tlvx13Sz; + } + + // Add Re-registration on traffic flag, if specified + if (pReRegTraffic != 0) + { + // Check size + WORD tlvx14Sz = sizeof( sWDSSetMIPParametersRequest_ReRegistrationOnlyWithTraffic ); + if (*pOutLen < offset + sizeof( sQMIRawContentHeader ) + tlvx14Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + pHeader = (sQMIRawContentHeader*)(pOut + offset); + pHeader->mTypeID = 0x14; + pHeader->mLength = tlvx14Sz; + + offset += sizeof( sQMIRawContentHeader ); + + sWDSSetMIPParametersRequest_ReRegistrationOnlyWithTraffic * pTLVx14; + pTLVx14 = (sWDSSetMIPParametersRequest_ReRegistrationOnlyWithTraffic*)(pOut + offset); + memset( pTLVx14, 0, tlvx14Sz ); + + // Set the value + pTLVx14->mReRegistrationOnlyWithTraffic = (*pReRegTraffic == 0 ? 0 : 1); + + offset += tlvx14Sz; + } + + // Add HA authenticator flag, if specified + if (pHAAuthenticator != 0) + { + // Check size + WORD tlvx15Sz = sizeof( sWDSSetMIPParametersRequest_MNHAAuthenticatorCalculator ); + if (*pOutLen < offset + sizeof( sQMIRawContentHeader ) + tlvx15Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + pHeader = (sQMIRawContentHeader*)(pOut + offset); + pHeader->mTypeID = 0x15; + pHeader->mLength = tlvx15Sz; + + offset += sizeof( sQMIRawContentHeader ); + + sWDSSetMIPParametersRequest_MNHAAuthenticatorCalculator * pTLVx15; + pTLVx15 = (sWDSSetMIPParametersRequest_MNHAAuthenticatorCalculator*)(pOut + offset); + memset( pTLVx15, 0, tlvx15Sz ); + + // Set the value + pTLVx15->mMNHAAuthenticatorCalculator = (*pHAAuthenticator == 0 ? 0 : 1); + + offset += tlvx15Sz; + } + + // Add HA RFC2002bis authentication flag, if specified + if (pHA2002bis != 0) + { + // Check size + WORD tlvx16Sz = sizeof( sWDSSetMIPParametersRequest_MNHARFC2002BISAuthentication ); + if (*pOutLen < offset + sizeof( sQMIRawContentHeader ) + tlvx16Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + pHeader = (sQMIRawContentHeader*)(pOut + offset); + pHeader->mTypeID = 0x16; + pHeader->mLength = tlvx16Sz; + + offset += sizeof( sQMIRawContentHeader ); + + sWDSSetMIPParametersRequest_MNHARFC2002BISAuthentication * pTLVx16; + pTLVx16 = (sWDSSetMIPParametersRequest_MNHARFC2002BISAuthentication*)(pOut + offset); + memset( pTLVx16, 0, tlvx16Sz ); + + // Set the value + pTLVx16->mMNHARFC2002BISAuthentication = (*pHA2002bis == 0 ? 0 : 1); + + offset += tlvx16Sz; + } + + // At least one of the optional parameters must have been set + if (offset <= sizeof( sQMIRawContentHeader ) + tlvx01Sz) + { + return eGOBI_ERR_INVALID_ARG; + } + + *pOutLen = offset; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + ParseGetMobileIPParameters + +DESCRIPTION: + This function gets the mobile IP parameters + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pMode [ O ] - Current mobile IP setting + pRetryLimit [ O ] - Retry attempt limit + pRetryInterval [ O ] - Retry attempt interval + pReRegPeriod [ O ] - Re-registration period + pReRegTraffic [ O ] - Re-registration only with traffic? + pHAAuthenticator [ O ] - MH-HA authenticator calculator? + pHA2002bis [ O ] - MH-HA RFC 2002bis authentication? + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseGetMobileIPParameters( + ULONG inLen, + const BYTE * pIn, + ULONG * pMode, + BYTE * pRetryLimit, + BYTE * pRetryInterval, + BYTE * pReRegPeriod, + BYTE * pReRegTraffic, + BYTE * pHAAuthenticator, + BYTE * pHA2002bis ) +{ + // Validate arguments + if (pIn == 0 + || pMode == 0 + || pRetryLimit == 0 + || pRetryInterval == 0 + || pReRegPeriod == 0 + || pReRegTraffic == 0 + || pHAAuthenticator == 0 + || pHA2002bis == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + *pMode = 0xffffffff; + *pRetryLimit = 0xff; + *pRetryInterval = 0xff; + *pReRegPeriod = 0xff; + *pReRegTraffic = 0xff; + *pHAAuthenticator = 0xff; + *pHA2002bis = 0xff; + + // Find the mode + const sWDSGetMIPParametersResponse_MobileIPMode * pTLVx10; + ULONG outLenx10; + ULONG rc = GetTLV( inLen, pIn, 0x10, &outLenx10, (const BYTE **)&pTLVx10 ); + if (rc == eGOBI_ERR_NONE) + { + if (outLenx10 < sizeof( sWDSGetMIPParametersResponse_MobileIPMode )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + *pMode = pTLVx10->mMIPMode; + } + + // Find the Retry limit + const sWDSGetMIPParametersResponse_RetryAttemptLimit * pTLVx11; + ULONG outLenx11; + rc = GetTLV( inLen, pIn, 0x11, &outLenx11, (const BYTE **)&pTLVx11 ); + if (rc == eGOBI_ERR_NONE) + { + if (outLenx11 < sizeof( sWDSGetMIPParametersResponse_RetryAttemptLimit )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + *pRetryLimit = pTLVx11->mRetryAttemptLimit; + } + + // Find the Retry Interval + const sWDSGetMIPParametersResponse_RetryAttemptInterval * pTLVx12; + ULONG outLenx12; + rc = GetTLV( inLen, pIn, 0x12, &outLenx12, (const BYTE **)&pTLVx12 ); + if (rc == eGOBI_ERR_NONE) + { + if (outLenx12 < sizeof( sWDSGetMIPParametersResponse_RetryAttemptInterval )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + *pRetryInterval = pTLVx12->mRetryAttemptInterval; + } + + // Find the Re-registration period + const sWDSGetMIPParametersResponse_ReRegistrationPeriod * pTLVx13; + ULONG outLenx13; + rc = GetTLV( inLen, pIn, 0x13, &outLenx13, (const BYTE **)&pTLVx13 ); + if (rc == eGOBI_ERR_NONE) + { + if (outLenx13 < sizeof( sWDSGetMIPParametersResponse_ReRegistrationPeriod )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + *pReRegPeriod = pTLVx13->mReRegistrationPeriod; + } + + // Find the Re-register on traffic flag + const sWDSGetMIPParametersResponse_ReRegistrationOnlyWithTraffic * pTLVx14; + ULONG outLenx14; + rc = GetTLV( inLen, pIn, 0x14, &outLenx14, (const BYTE **)&pTLVx14 ); + if (rc == eGOBI_ERR_NONE) + { + if (outLenx14 < sizeof( sWDSGetMIPParametersResponse_ReRegistrationOnlyWithTraffic )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + *pReRegTraffic = pTLVx14->mReRegistrationOnlyWithTraffic; + } + + // Find the HA authenticator + const sWDSGetMIPParametersResponse_MNHAAuthenticatorCalculator * pTLVx15; + ULONG outLenx15; + rc = GetTLV( inLen, pIn, 0x15, &outLenx15, (const BYTE **)&pTLVx15 ); + if (rc == eGOBI_ERR_NONE) + { + if (outLenx15 < sizeof( sWDSGetMIPParametersResponse_MNHAAuthenticatorCalculator )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + *pHAAuthenticator = pTLVx15->mMNHAAuthenticatorCalculator; + } + + // Find the HA RFC2002bis authentication flag + const sWDSGetMIPParametersResponse_MNHARFC2002BISAuthentication * pTLVx16; + ULONG outLenx16; + rc = GetTLV( inLen, pIn, 0x16, &outLenx16, (const BYTE **)&pTLVx16 ); + if (rc == eGOBI_ERR_NONE) + { + if (outLenx16 < sizeof( sWDSGetMIPParametersResponse_MNHARFC2002BISAuthentication )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + *pHA2002bis = pTLVx16->mMNHARFC2002BISAuthentication; + } + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + ParseGetLastMobileIPError + +DESCRIPTION: + This function gets the last mobile IP error + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pError [ O ] - Last mobile IP error + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseGetLastMobileIPError( + ULONG inLen, + const BYTE * pIn, + ULONG * pError ) +{ + // Validate arguments + if (pIn == 0 || pError == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Find the TLV + const sWDSGetLastMIPStatusResponse_Status * pTLVx01; + ULONG outLenx01; + ULONG rc = GetTLV( inLen, pIn, 0x01, &outLenx01, (const BYTE **)&pTLVx01 ); + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + // Is the TLV large enough? + if (outLenx01 < sizeof( sWDSGetLastMIPStatusResponse_Status )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + *pError = pTLVx01->mLastMIPStatus; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + PackSetDNSSettings + +DESCRIPTION: + This function sets the DNS settings for the device + +PARAMETERS: + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + pPrimaryDNS [ I ] - (Optional) Primary DNS IPv4 address + pSecondaryDNS [ I ] - (Optional) Secondary DNS IPv4 address + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PackSetDNSSettings( + ULONG * pOutLen, + BYTE * pOut, + ULONG * pPrimaryDNS, + ULONG * pSecondaryDNS ) +{ + // Validate arguments + // At least one must be specified + if (pOut == 0 || (pPrimaryDNS == 0 && pSecondaryDNS == 0)) + { + return eGOBI_ERR_INVALID_ARG; + } + + sQMIRawContentHeader * pHeader; + ULONG offset = 0; + + // Add Primary DNS, if specified + if (pPrimaryDNS != 0) + { + // Check size + WORD tlvx10Sz = sizeof( sWDSSetDNSSettingRequest_PrimaryDNS ); + if (*pOutLen < offset + sizeof( sQMIRawContentHeader ) + tlvx10Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + pHeader = (sQMIRawContentHeader*)(pOut + offset); + pHeader->mTypeID = 0x10; + pHeader->mLength = tlvx10Sz; + + offset += sizeof( sQMIRawContentHeader ); + + sWDSSetDNSSettingRequest_PrimaryDNS * pTLVx10; + pTLVx10 = (sWDSSetDNSSettingRequest_PrimaryDNS*)(pOut + offset); + memset( pTLVx10, 0, tlvx10Sz ); + + ULONG ip0 = (*pPrimaryDNS & 0x000000FF); + ULONG ip1 = (*pPrimaryDNS & 0x0000FF00) >> 8; + ULONG ip2 = (*pPrimaryDNS & 0x00FF0000) >> 16; + ULONG ip3 = (*pPrimaryDNS & 0xFF000000) >> 24; + + // Set the value + pTLVx10->mIPV4Address[0] = (INT8)ip0; + pTLVx10->mIPV4Address[1] = (INT8)ip1; + pTLVx10->mIPV4Address[2] = (INT8)ip2; + pTLVx10->mIPV4Address[3] = (INT8)ip3; + + offset += tlvx10Sz; + } + + // Add Secondary DNS, if specified + if (pSecondaryDNS != 0) + { + // Check size + WORD tlvx11Sz = sizeof( sWDSSetDNSSettingRequest_SecondaryDNS ); + if (*pOutLen < offset + sizeof( sQMIRawContentHeader ) + tlvx11Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + pHeader = (sQMIRawContentHeader*)(pOut + offset); + pHeader->mTypeID = 0x11; + pHeader->mLength = tlvx11Sz; + + offset += sizeof( sQMIRawContentHeader ); + + sWDSSetDNSSettingRequest_SecondaryDNS * pTLVx11; + pTLVx11 = (sWDSSetDNSSettingRequest_SecondaryDNS*)(pOut + offset); + memset( pTLVx11, 0, tlvx11Sz ); + + ULONG ip0 = (*pSecondaryDNS & 0x000000FF); + ULONG ip1 = (*pSecondaryDNS & 0x0000FF00) >> 8; + ULONG ip2 = (*pSecondaryDNS & 0x00FF0000) >> 16; + ULONG ip3 = (*pSecondaryDNS & 0xFF000000) >> 24; + + // Set the value + pTLVx11->mIPV4Address[0] = (INT8)ip0; + pTLVx11->mIPV4Address[1] = (INT8)ip1; + pTLVx11->mIPV4Address[2] = (INT8)ip2; + pTLVx11->mIPV4Address[3] = (INT8)ip3; + + offset += tlvx11Sz; + } + + *pOutLen = offset; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + ParseGetDNSSettings + +DESCRIPTION: + This function gets the DNS settings for the device + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pPrimaryDNS [ O ] - Primary DNS IPv4 address + pSecondaryDNS [ O ] - Secondary DNS IPv4 address + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseGetDNSSettings( + ULONG inLen, + const BYTE * pIn, + ULONG * pPrimaryDNS, + ULONG * pSecondaryDNS ) +{ + // Validate arguments + if (pIn == 0 || pPrimaryDNS == 0 || pSecondaryDNS == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Find the Primary DNS + const sWDSGetDNSSettingResponse_PrimaryDNS * pTLVx10; + ULONG outLenx10; + ULONG rc = GetTLV( inLen, pIn, 0x10, &outLenx10, (const BYTE **)&pTLVx10 ); + if (rc == eGOBI_ERR_NONE) + { + if (outLenx10 < sizeof( sWDSGetDNSSettingResponse_PrimaryDNS )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + ULONG ip0 = pTLVx10->mIPV4Address[0]; + ULONG ip1 = pTLVx10->mIPV4Address[1] << 8; + ULONG ip2 = pTLVx10->mIPV4Address[2] << 16; + ULONG ip3 = pTLVx10->mIPV4Address[3] << 24; + + *pPrimaryDNS = (ip0 | ip1 | ip2 | ip3); + } + + // Find the Secondary DNS + const sWDSGetDNSSettingResponse_SecondaryDNS * pTLVx11; + ULONG outLenx11; + rc = GetTLV( inLen, pIn, 0x11, &outLenx11, (const BYTE **)&pTLVx11 ); + if (rc == eGOBI_ERR_NONE) + { + if (outLenx11 < sizeof( sWDSGetDNSSettingResponse_SecondaryDNS )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + ULONG ip0 = pTLVx11->mIPV4Address[0]; + ULONG ip1 = pTLVx11->mIPV4Address[1] << 8; + ULONG ip2 = pTLVx11->mIPV4Address[2] << 16; + ULONG ip3 = pTLVx11->mIPV4Address[3] << 24; + + *pSecondaryDNS = (ip0 | ip1 | ip2 | ip3); + } + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + ParseGetDataBearerTechnology + +DESCRIPTION: + This function retrieves the current data bearer technology (only + valid when connected) + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pDataCaps [ O ] - The data bearer technology + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseGetDataBearerTechnology( + ULONG inLen, + const BYTE * pIn, + ULONG * pDataBearer ) +{ + // Validate arguments + if (pIn == 0 || pDataBearer == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Find the TLV + const sWDSGetDataBearerTechnologyResponse_Technology * pTLVx01; + ULONG outLenx01; + ULONG rc = GetTLV( inLen, pIn, 0x01, &outLenx01, (const BYTE **)&pTLVx01 ); + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + // Is the TLV large enough? + if (outLenx01 < sizeof( sWDSGetDataBearerTechnologyResponse_Technology )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + *pDataBearer = pTLVx01->mDataBearerTechnology; + + return eGOBI_ERR_NONE; +} diff --git a/gobi-api/GobiAPI_2013-07-31-1347/Gobi3000Translation/Gobi3000TranslationWMS.cpp b/gobi-api/GobiAPI_2013-07-31-1347/Gobi3000Translation/Gobi3000TranslationWMS.cpp new file mode 100644 index 0000000..9178d11 --- /dev/null +++ b/gobi-api/GobiAPI_2013-07-31-1347/Gobi3000Translation/Gobi3000TranslationWMS.cpp @@ -0,0 +1,1120 @@ +/*=========================================================================== +FILE: + Gobi3000TranslationWMS.cpp + +DESCRIPTION: + QUALCOMM Translation for Gobi 3000 (WMS Service) + +Copyright (c) 2013, The Linux Foundation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +==========================================================================*/ + +//--------------------------------------------------------------------------- +// Include Files +//--------------------------------------------------------------------------- +#include "Gobi3000Translation.h" + +/*=========================================================================== +METHOD: + PackDeleteSMS + +DESCRIPTION: + This function deletes one or more SMS messages from device memory + +PARAMETERS: + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + storageType [ I ] - SMS message storage type + pMessageIndex [ I ] - (Optional) message index + pMessageTag [ I ] - (Optional) message tag + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PackDeleteSMS( + ULONG * pOutLen, + BYTE * pOut, + ULONG storageType, + ULONG * pMessageIndex, + ULONG * pMessageTag ) +{ + // Validate arguments + if (pOut == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Check size + WORD tlvx01Sz = sizeof( sWMSDeleteRequest_MemoryStorage ); + if (*pOutLen < sizeof( sQMIRawContentHeader ) + tlvx01Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + sQMIRawContentHeader * pHeader = (sQMIRawContentHeader*)(pOut); + pHeader->mTypeID = 0x01; + pHeader->mLength = tlvx01Sz; + + ULONG offset = sizeof( sQMIRawContentHeader ); + + // The SPC + sWMSDeleteRequest_MemoryStorage * pTLVx01; + pTLVx01 = (sWMSDeleteRequest_MemoryStorage*)(pOut + offset); + memset( pTLVx01, 0, tlvx01Sz ); + + // Set the values + pTLVx01->mStorageType = (eQMIWMSStorageTypes)storageType; + + offset += tlvx01Sz; + + // Add the Message index, if specified + if (pMessageIndex != 0) + { + // Check size + WORD tlvx10Sz = sizeof( sWMSDeleteRequest_MessageIndex ); + if (*pOutLen < offset + sizeof( sQMIRawContentHeader ) + tlvx10Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + pHeader = (sQMIRawContentHeader*)(pOut + offset); + pHeader->mTypeID = 0x10; + pHeader->mLength = tlvx10Sz; + + offset += sizeof( sQMIRawContentHeader ); + + // The SPC + sWMSDeleteRequest_MessageIndex * pTLVx10; + pTLVx10 = (sWMSDeleteRequest_MessageIndex*)(pOut + offset); + memset( pTLVx10, 0, tlvx10Sz ); + + // Set the values + pTLVx10->mStorageIndex = *pMessageIndex; + + offset += tlvx10Sz; + } + + // Add the Message tag, if specified + if (pMessageTag != 0) + { + // Check size + WORD tlvx11Sz = sizeof( sWMSDeleteRequest_MessageTag ); + if (*pOutLen < offset + sizeof( sQMIRawContentHeader ) + tlvx11Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + pHeader = (sQMIRawContentHeader*)(pOut + offset); + pHeader->mTypeID = 0x11; + pHeader->mLength = tlvx11Sz; + + offset += sizeof( sQMIRawContentHeader ); + + // The SPC + sWMSDeleteRequest_MessageTag * pTLVx11; + pTLVx11 = (sWMSDeleteRequest_MessageTag*)(pOut + offset); + memset( pTLVx11, 0, tlvx11Sz ); + + // Set the values + pTLVx11->mMessageTag = (eQMIWMSMessageTags)*pMessageTag; + + offset += tlvx11Sz; + } + + *pOutLen = offset; + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + PackGetSMSList + +DESCRIPTION: + This function returns the list of SMS messages stored on the device + +PARAMETERS: + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + storageType [ I ] - SMS message storage type + pRequestedTag [ I ] - Message index + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PackGetSMSList( + ULONG * pOutLen, + BYTE * pOut, + ULONG storageType, + ULONG * pRequestedTag ) +{ + // Validate arguments + if (pOut == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Check size + WORD tlvx01Sz = sizeof( sWMSListMessagesRequest_MemoryStorage ); + if (*pOutLen < sizeof( sQMIRawContentHeader ) + tlvx01Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + sQMIRawContentHeader * pHeader = (sQMIRawContentHeader*)(pOut); + pHeader->mTypeID = 0x01; + pHeader->mLength = tlvx01Sz; + + ULONG offset = sizeof( sQMIRawContentHeader ); + + // The storage type + sWMSListMessagesRequest_MemoryStorage * pTLVx01; + pTLVx01 = (sWMSListMessagesRequest_MemoryStorage*)(pOut + offset); + memset( pTLVx01, 0, tlvx01Sz ); + + // Set the values + pTLVx01->mStorageType = (eQMIWMSStorageTypes)storageType; + + offset += tlvx01Sz; + + // Add the Message tag, if specified + if (pRequestedTag != 0) + { + // Check size + WORD tlvx10Sz = sizeof( sWMSListMessagesRequest_MessageTag ); + if (*pOutLen < offset + sizeof( sQMIRawContentHeader ) + tlvx10Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + pHeader = (sQMIRawContentHeader*)(pOut + offset); + pHeader->mTypeID = 0x10; + pHeader->mLength = tlvx10Sz; + + offset += sizeof( sQMIRawContentHeader ); + + // The SPC + sWMSListMessagesRequest_MessageTag * pTLVx10; + pTLVx10 = (sWMSListMessagesRequest_MessageTag*)(pOut + offset); + memset( pTLVx10, 0, tlvx10Sz ); + + // Set the values + pTLVx10->mMessageTag = (eQMIWMSMessageTags)*pRequestedTag; + + offset += tlvx10Sz; + } + + *pOutLen = offset; + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + ParseGetSMSList + +DESCRIPTION: + This function returns the list of SMS messages stored on the device + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pMessageListSize [I/O] - Upon input the maximum number of elements that the + message list array can contain. Upon successful + output the actual number of elements in the message + list array + pMessageList [ O ] - The message list array + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseGetSMSList( + ULONG inLen, + const BYTE * pIn, + ULONG * pMessageListSize, + BYTE * pMessageList ) +{ + // Validate arguments + if (pIn == 0 || pMessageListSize == 0 + || *pMessageListSize == 0 || pMessageList == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + ULONG maxMessageListSz = *pMessageListSize; + + // Assume failure + *pMessageListSize = 0; + + // Find the messages + const sWMSListMessagesResponse_MessageList * pTLVx01; + ULONG outLenx01; + ULONG rc = GetTLV( inLen, pIn, 0x01, &outLenx01, (const BYTE **)&pTLVx01 ); + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + if (outLenx01 < sizeof( sWMSListMessagesResponse_MessageList )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + ULONG messageListSz = pTLVx01->mNumberOfMessages; + if (messageListSz == 0) + { + // No stored messages, but not necessarily a failure + return eGOBI_ERR_NONE; + } + + if (maxMessageListSz < messageListSz) + { + messageListSz = maxMessageListSz; + } + + const sWMSListMessagesResponse_MessageList::sMessage * pMessages; + + // Verify there is room for the array in the TLV + if (outLenx01 < sizeof( sWMSListMessagesResponse_MessageList ) + + sizeof( sWMSListMessagesResponse_MessageList::sMessage ) + * messageListSz) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + // Align to the first array element + pMessages = (const sWMSListMessagesResponse_MessageList::sMessage *) + ((const BYTE *)pTLVx01 + + sizeof( sWMSListMessagesResponse_MessageList )); + + ULONG * pData = (ULONG *)pMessageList; + for (ULONG m = 0; m < messageListSz; m++) + { + *pData++ = pMessages->mStorageIndex; + *pData++ = pMessages->mMessageTag; + pMessages++; + } + + *pMessageListSize = messageListSz; + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + PackGetSMS + +DESCRIPTION: + This function returns an SMS message from device memory + +PARAMETERS: + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + storageType [ I ] - SMS message storage type + messageIndex [ I ] - Message index + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PackGetSMS( + ULONG * pOutLen, + BYTE * pOut, + ULONG storageType, + ULONG messageIndex ) +{ + // Validate arguments + if (pOut == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Check size + WORD tlvx01Sz = sizeof( sWMSRawReadRequest_MessageIndex ); + if (*pOutLen < sizeof( sQMIRawContentHeader ) + tlvx01Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + sQMIRawContentHeader * pHeader = (sQMIRawContentHeader*)(pOut); + pHeader->mTypeID = 0x01; + pHeader->mLength = tlvx01Sz; + + ULONG offset = sizeof( sQMIRawContentHeader ); + + // The index + sWMSRawReadRequest_MessageIndex * pTLVx01; + pTLVx01 = (sWMSRawReadRequest_MessageIndex*)(pOut + offset); + memset( pTLVx01, 0, tlvx01Sz ); + + // Set the values + pTLVx01->mStorageType = (eQMIWMSStorageTypes)storageType; + pTLVx01->mStorageIndex = messageIndex; + + offset += tlvx01Sz; + *pOutLen = offset; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + ParseGetSMS + +DESCRIPTION: + This function returns an SMS message from device memory + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pMessageTag [ O ] - Message tag + pMessageFormat [ O ] - Message format + pMessageSize [I/O] - Upon input the maximum number of bytes that can be + written to the message array. Upon successful + output the actual number of bytes written to the + message array + pMessage [ O ] - The message contents array + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseGetSMS( + ULONG inLen, + const BYTE * pIn, + ULONG * pMessageTag, + ULONG * pMessageFormat, + ULONG * pMessageSize, + BYTE * pMessage ) +{ + // Validate arguments + if (pIn == 0 + || pMessageTag == 0 + || pMessageFormat == 0 + || pMessageSize == 0 + || *pMessageSize == 0 + || pMessage == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + ULONG maxMessageSz = *pMessageSize; + + // Assume failure + *pMessageSize = 0; + + // Find the messages + const sWMSRawReadResponse_MessageData * pTLVx01; + ULONG outLenx01; + ULONG rc = GetTLV( inLen, pIn, 0x01, &outLenx01, (const BYTE **)&pTLVx01 ); + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + if (outLenx01 < sizeof( sWMSRawReadResponse_MessageData )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + *pMessageTag = pTLVx01->mMessageTag; + *pMessageFormat = pTLVx01->mMessageFormat; + + ULONG messageSz = pTLVx01->mRawMessageLength; + if (messageSz == 0) + { + // No stored messages, but not necessarily a failure + return eGOBI_ERR_NONE; + } + + if (messageSz > maxMessageSz) + { + messageSz = maxMessageSz; + } + + // Verify there is room for the array in the TLV + if (outLenx01 < sizeof( sWMSRawReadResponse_MessageData ) + messageSz) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + memcpy( pMessage, + pTLVx01 + sizeof( sWMSRawReadResponse_MessageData ), + messageSz ); + + *pMessageSize = messageSz; + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + PackModifySMSStatus + +DESCRIPTION: + This function modifies the status of an SMS message saved in storage on + the device + +PARAMETERS: + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + storageType [ I ] - SMS message storage type + messageIndex [ I ] - Message index + messageTag [ I ] - Message tag + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PackModifySMSStatus( + ULONG * pOutLen, + BYTE * pOut, + ULONG storageType, + ULONG messageIndex, + ULONG messageTag ) +{ + // Validate arguments + if (pOut == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Check size + WORD tlvx01Sz = sizeof( sWMSModifyTagRequest_MessageTag ); + if (*pOutLen < sizeof( sQMIRawContentHeader ) + tlvx01Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + sQMIRawContentHeader * pHeader = (sQMIRawContentHeader*)(pOut); + pHeader->mTypeID = 0x01; + pHeader->mLength = tlvx01Sz; + + ULONG offset = sizeof( sQMIRawContentHeader ); + + // The index + sWMSModifyTagRequest_MessageTag * pTLVx01; + pTLVx01 = (sWMSModifyTagRequest_MessageTag*)(pOut + offset); + memset( pTLVx01, 0, tlvx01Sz ); + + // Set the values + pTLVx01->mStorageType = (eQMIWMSStorageTypes)storageType; + pTLVx01->mStorageIndex = messageIndex; + pTLVx01->mMessageTag = (eQMIWMSMessageTags)messageTag; + + offset += tlvx01Sz; + *pOutLen = offset; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + PackSaveSMS + +DESCRIPTION: + This function saves an SMS message to device memory + +PARAMETERS: + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + storageType [ I ] - SMS message storage type + messageFormat [ I ] - Message format + messageSize [ I ] - The length of the message contents in bytes + pMessage [ I ] - The message contents + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PackSaveSMS( + ULONG * pOutLen, + BYTE * pOut, + ULONG storageType, + ULONG messageFormat, + ULONG messageSize, + BYTE * pMessage ) +{ + // Validate arguments + if (pOut == 0 || messageSize == 0 || pMessage == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Check size + WORD tlvx01Sz = sizeof( sWMSRawWriteRequest_MessageData ) + + (WORD)messageSize; + if (*pOutLen < sizeof( sQMIRawContentHeader ) + tlvx01Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + sQMIRawContentHeader * pHeader = (sQMIRawContentHeader*)(pOut); + pHeader->mTypeID = 0x01; + pHeader->mLength = tlvx01Sz; + + ULONG offset = sizeof( sQMIRawContentHeader ); + + // The index + sWMSRawWriteRequest_MessageData * pTLVx01; + pTLVx01 = (sWMSRawWriteRequest_MessageData*)(pOut + offset); + memset( pTLVx01, 0, tlvx01Sz ); + + // Set the values + pTLVx01->mStorageType = (eQMIWMSStorageTypes)storageType; + pTLVx01->mMessageFormat = (eQMIWMSMessageFormats)messageFormat; + pTLVx01->mRawMessageLength = (UINT16)messageSize; + + offset += sizeof( sWMSRawWriteRequest_MessageData ); + + // Add the message + memcpy( (pOut + offset), pMessage, messageSize ); + + offset += messageSize; + + *pOutLen = offset; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + ParseSaveSMS + +DESCRIPTION: + This function saves an SMS message to device memory + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pMessageIndex [ O ] - The message index assigned by the device + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseSaveSMS( + ULONG inLen, + const BYTE * pIn, + ULONG * pMessageIndex ) +{ + // Validate arguments + if (pIn == 0 || pMessageIndex == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Find the messages + const sWMSRawWriteResponse_MessageIndex * pTLVx01; + ULONG outLenx01; + ULONG rc = GetTLV( inLen, pIn, 0x01, &outLenx01, (const BYTE **)&pTLVx01 ); + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + if (outLenx01 < sizeof( sWMSRawWriteResponse_MessageIndex )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + *pMessageIndex = pTLVx01->mStorageIndex; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + PackSendSMS + +DESCRIPTION: + This function sends an SMS message for immediate over the air transmission + +PARAMETERS: + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + messageFormat [ I ] - Message format + messageSize [ I ] - The length of the message contents in bytes + pMessage [ I ] - The message contents + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PackSendSMS( + ULONG * pOutLen, + BYTE * pOut, + ULONG messageFormat, + ULONG messageSize, + BYTE * pMessage ) +{ + // Validate arguments + if (pOut == 0 || messageSize == 0 || pMessage == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Check size + WORD tlvx01Sz = sizeof( sWMSRawSendRequest_MessageData ) + + (WORD)messageSize; + if (*pOutLen < sizeof( sQMIRawContentHeader ) + tlvx01Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + sQMIRawContentHeader * pHeader = (sQMIRawContentHeader*)(pOut); + pHeader->mTypeID = 0x01; + pHeader->mLength = tlvx01Sz; + + ULONG offset = sizeof( sQMIRawContentHeader ); + + // The index + sWMSRawSendRequest_MessageData * pTLVx01; + pTLVx01 = (sWMSRawSendRequest_MessageData*)(pOut + offset); + memset( pTLVx01, 0, tlvx01Sz ); + + // Set the values + pTLVx01->mMessageFormat = (eQMIWMSMessageFormats)messageFormat; + pTLVx01->mRawMessageLength = (UINT16)messageSize; + + offset += sizeof( sWMSRawSendRequest_MessageData ); + + // Add the message + memcpy( (pOut + offset), pMessage, messageSize ); + + offset += messageSize; + + *pOutLen = offset; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + ParseSendSMS + +DESCRIPTION: + This function sends an SMS message for immediate over the air transmission + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pMessageFailureCode [ O ] - When the function fails due to an error sending + the message this parameter may contain the + message failure cause code (see 3GPP2 N.S0005 + Section 6.5.2.125). If the cause code is not + provided then the value will be 0xFFFFFFFF + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseSendSMS( + ULONG inLen, + const BYTE * pIn, + ULONG * pMessageFailureCode ) +{ + // Validate arguments + if (pIn == 0 || pMessageFailureCode == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Assume we have no message failure cause code + *pMessageFailureCode = 0xffffffff; + + // Check mandatory response + const sResultCode * pTLVx02; + ULONG outLenx02; + ULONG rc = GetTLV( inLen, pIn, 0x02, &outLenx02, (const BYTE **)&pTLVx02 ); + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + if (outLenx02 < sizeof( sResultCode )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + if (pTLVx02->mQMIResult != eQMIResults_Success) + { + rc = pTLVx02->mQMIError + eGOBI_ERR_QMI_OFFSET; + } + + if (rc != eGOBI_ERR_NONE) + { + // Check for the failure code (optional) + const sWMSRawSendResponse_CauseCode * pTLVx10; + ULONG outLenx10; + ULONG rc2 = GetTLV( inLen, pIn, 0x10, &outLenx10, (const BYTE **)&pTLVx10 ); + if (rc2 == eGOBI_ERR_NONE) + { + if (outLenx10 < sizeof( sWMSRawSendResponse_CauseCode )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + *pMessageFailureCode = pTLVx10->mCauseCode; + } + } + + return rc; +} + +/*=========================================================================== +METHOD: + ParseGetSMSCAddress + +DESCRIPTION: + This function returns the SMS center address + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + addressSize [ I ] - The maximum number of characters (including NULL + terminator) that the SMS center address array + can contain + pSMSCAddress [ O ] - The SMS center address represented as a NULL + terminated string + typeSize [ I ] - The maximum number of characters (including NULL + terminator) that the SMS center address type array + can contain + pSMSCType [ O ] - The SMS center address type represented as a NULL + terminated string + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseGetSMSCAddress( + ULONG inLen, + const BYTE * pIn, + BYTE addressSize, + CHAR * pSMSCAddress, + BYTE typeSize, + CHAR * pSMSCType ) +{ + // Validate arguments + if (pIn == 0 + || addressSize == 0 || pSMSCAddress == 0 + || typeSize == 0 || pSMSCType == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Assume empty + pSMSCAddress[0] = 0; + pSMSCType[0] = 0; + + // Get the address (mandatory) + const sWMSGetSMSCAddressResponse_Address * pTLVx01; + ULONG outLenx01; + ULONG rc = GetTLV( inLen, pIn, 0x01, &outLenx01, (const BYTE **)&pTLVx01 ); + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + if (outLenx01 < sizeof( sWMSRawSendResponse_CauseCode )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + // Handle the type as a string (maximum 3 chars) + std::string smscType( &pTLVx01->mSMSCAddressType[0], 3 ); + + // Is the SMSC type present? (optional) + ULONG smscTypeLen = (ULONG)smscType.size(); + if (smscTypeLen > 0) + { + // Space to perform copy? + if (typeSize < smscTypeLen + 1) + { + return eGOBI_ERR_BUFFER_SZ; + } + + memcpy( pSMSCType, &pTLVx01->mSMSCAddressType[0], smscTypeLen ); + pSMSCType[smscTypeLen] = 0; + } + + // Treat the address as a null terminated string + std::string smscAddr( (const CHAR *)pTLVx01 + + sizeof( sWMSGetSMSCAddressResponse_Address ), + pTLVx01->mSMSCAddressLength ); + + ULONG smscAddrLen = (ULONG)smscAddr.size(); + if (addressSize < smscAddrLen + 1) + { + return eGOBI_ERR_BUFFER_SZ; + } + + memcpy( pSMSCAddress, smscAddr.c_str(), addressSize ); + pSMSCAddress[addressSize] = 0; + + return rc; +} + +/*=========================================================================== +METHOD: + PackSetSMSCAddress + +DESCRIPTION: + This function sets the SMS center address + +PARAMETERS: + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + pSMSCAddress [ I ] - The SMS center address represented as a NULL + terminated string + pSMSCType [ I ] - The SMS center address type represented as a NULL + terminated string (optional) + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PackSetSMSCAddress( + ULONG * pOutLen, + BYTE * pOut, + CHAR * pSMSCAddress, + CHAR * pSMSCType ) +{ + // Validate arguments + if (pOut == 0 || pSMSCAddress == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // The TLV contains only the address + std::string smscAddr( pSMSCAddress ); + + // Check size + WORD tlvx01Sz = (WORD)smscAddr.size(); + if (*pOutLen < sizeof( sQMIRawContentHeader ) + tlvx01Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + sQMIRawContentHeader * pHeader = (sQMIRawContentHeader*)(pOut); + pHeader->mTypeID = 0x01; + pHeader->mLength = tlvx01Sz; + + ULONG offset = sizeof( sQMIRawContentHeader ); + + memcpy( (pOut + offset), smscAddr.c_str(), tlvx01Sz ); + offset += tlvx01Sz; + + // smscType is optional + if (pSMSCType != 0) + { + // The TLV contains only the type + std::string smscType( pSMSCType ); + + if (smscType.size() != 0) + { + // Check size + WORD tlvx10Sz = (WORD)smscType.size(); + if (*pOutLen < offset + sizeof( sQMIRawContentHeader ) + tlvx10Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + sQMIRawContentHeader * pHeader = (sQMIRawContentHeader*)(pOut); + pHeader->mTypeID = 0x10; + pHeader->mLength = tlvx10Sz; + + ULONG offset = sizeof( sQMIRawContentHeader ); + + memcpy( (pOut + offset), smscType.c_str(), tlvx10Sz ); + offset += tlvx10Sz; + } + } + + + *pOutLen = offset; + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + ParseGetSMSRoutes + +DESCRIPTION: + This function gets the current incoming SMS routing information + +PARAMETERS: + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pRouteSize [I/O] - Upon input the maximum number of elements that the + SMS route array can contain. Upon succes the actual + number of elements in the SMS route array + pRoutes [ O ] - The SMS route array + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG ParseGetSMSRoutes( + ULONG inLen, + const BYTE * pIn, + BYTE * pRouteSize, + BYTE * pRoutes ) +{ + // Validate arguments + if (pIn == 0 || pRouteSize == 0 || *pRouteSize == 0 || pRoutes == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + // Assume failure + BYTE maxRoutes = *pRouteSize; + *pRouteSize = 0; + + // Get the route list + const sWMSGetRoutesResponse_RouteList * pTLVx01; + ULONG outLenx01; + ULONG rc = GetTLV( inLen, pIn, 0x01, &outLenx01, (const BYTE **)&pTLVx01 ); + if (rc != eGOBI_ERR_NONE) + { + return rc; + } + + if (outLenx01 < sizeof( sWMSGetRoutesResponse_RouteList )) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + ULONG routeCount = pTLVx01->mNumberOfRoutes; + if (routeCount > (ULONG)maxRoutes) + { + routeCount = (ULONG)maxRoutes; + } + + const sWMSGetRoutesResponse_RouteList::sRoute * pInRoute; + + // Verify there is room for the array in the TLV + if (outLenx01 < sizeof( sWMSGetRoutesResponse_RouteList ) + + sizeof( sWMSGetRoutesResponse_RouteList::sRoute ) + * routeCount) + { + return eGOBI_ERR_MALFORMED_RSP; + } + + // Align to the first array element + pInRoute = (const sWMSGetRoutesResponse_RouteList::sRoute *) + ((const BYTE *)pTLVx01 + + sizeof( sWMSGetRoutesResponse_RouteList )); + + ULONG * pRouteArray = (ULONG *)pRoutes; + for (ULONG r = 0; r < routeCount; r++) + { + *pRouteArray++ = pInRoute->mMessageType; + *pRouteArray++ = pInRoute->mMessageClass; + *pRouteArray++ = pInRoute->mStorageType; + *pRouteArray++ = pInRoute->mRouteValue; + pInRoute++; + } + + *pRouteSize = (BYTE)routeCount; + return rc; +} + +/*=========================================================================== +METHOD: + PackSetSMSRoutes + +DESCRIPTION: + This function sets the desired incoming SMS routing information + +PARAMETERS: + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied to pOut + pOut [ O ] - Output buffer + pRouteSize [ I ] - The number of elements in the SMS route array + pRoutes [ I ] - The SMS route array + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PackSetSMSRoutes( + ULONG * pOutLen, + BYTE * pOut, + BYTE * pRouteSize, + BYTE * pRoutes ) +{ + // Validate arguments + if (pOut == 0 || pRouteSize == 0 || *pRouteSize == 0 || pRoutes == 0) + { + return eGOBI_ERR_INVALID_ARG; + } + + UINT16 routeCount = (ULONG)*pRouteSize; + + // Check size + WORD tlvx01Sz = sizeof( sWMSSetRoutesRequest_RouteList ) + + sizeof( sWMSSetRoutesRequest_RouteList::sRoute ) * routeCount; + if (*pOutLen < sizeof( sQMIRawContentHeader ) + tlvx01Sz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + sQMIRawContentHeader * pHeader = (sQMIRawContentHeader*)(pOut); + pHeader->mTypeID = 0x01; + pHeader->mLength = tlvx01Sz; + + ULONG offset = sizeof( sQMIRawContentHeader ); + + // Add route count + sWMSSetRoutesRequest_RouteList * pTLVx01; + pTLVx01 = (sWMSSetRoutesRequest_RouteList*)(pOut + offset); + memset( pTLVx01, 0, tlvx01Sz ); + + // Set the values + pTLVx01->mNumberOfRoutes = routeCount; + offset += sizeof( sWMSSetRoutesRequest_RouteList ); + + sWMSSetRoutesRequest_RouteList::sRoute * pOutRoute; + + // Align to the first array element + pOutRoute = (sWMSSetRoutesRequest_RouteList::sRoute *)(pOut + offset); + + // Add the routes + ULONG * pRouteArray = (ULONG *)pRoutes; + for (ULONG r = 0; r < routeCount; r++) + { + pOutRoute->mMessageType = (eQMIWMSMessageTypes)*pRouteArray++; + pOutRoute->mMessageClass = (eQMIWMSMessageClasses)*pRouteArray++; + pOutRoute->mStorageType = (eQMIWMSStorageTypes)*pRouteArray++; + pOutRoute->mReceiptAction = (eQMIWMSReceiptActions)*pRouteArray++; + pOutRoute++; + offset += sizeof( sWMSSetRoutesRequest_RouteList::sRoute ); + } + + *pOutLen = offset; + return eGOBI_ERR_NONE; +} diff --git a/gobi-api/GobiAPI_2013-07-31-1347/GobiConnectionMgmt/GobiConnectionMgmt.cpp b/gobi-api/GobiAPI_2013-07-31-1347/GobiConnectionMgmt/GobiConnectionMgmt.cpp new file mode 100644 index 0000000..d956779 --- /dev/null +++ b/gobi-api/GobiAPI_2013-07-31-1347/GobiConnectionMgmt/GobiConnectionMgmt.cpp @@ -0,0 +1,605 @@ +/*=========================================================================== +FILE: + GobiConnectionMgmt.cpp + +DESCRIPTION: + QUALCOMM Connection Management API for Gobi + +PUBLIC CLASSES AND FUNCTIONS: + CGobiConnectionMgmtDLL + cGobiConnectionMgmt + +Copyright (c) 2013, The Linux Foundation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +==========================================================================*/ + +//--------------------------------------------------------------------------- +// Include Files +//--------------------------------------------------------------------------- +#include "StdAfx.h" +#include "GobiConnectionMgmt.h" +#include "QMIBuffers.h" + +//--------------------------------------------------------------------------- +// Definitions +//--------------------------------------------------------------------------- + +// Global object +CGobiConnectionMgmtDLL gDLL; + +// Interval between traffic processing loop iterations (milliseconds) +const ULONG TRAFFIC_INTERVAL_MS = 300000; + +// Maximum amount of time to wait for the traffic thread to exit +const ULONG THREAD_EXIT_TIME = 2000; + +/*=========================================================================== +METHOD: + TrafficProcessThread (Free Method) + +DESCRIPTION: + QMI traffic process thread - processes all traffic in order to fire + off QMI traffic related callbacks + +PARAMETERS: + pArg [ I ] - Object to interface to + +RETURN VALUE: + void * - thread exit value (always 0) +===========================================================================*/ +void * TrafficProcessThread( PVOID pArg ) +{ + // Keep running? + bool bRun = false; + + // Create a vector of the objects to wait on + std::vector events; + + // Store the index to service type for use later + std::map services; + + // Grab API object + cGobiConnectionMgmt * pAPI = (cGobiConnectionMgmt *)pArg; + if (pAPI != 0) + { + // Time to go to work + bRun = true; + + // Add the thread exit event + events.push_back( &pAPI->mExitEvent ); + + // Grab signal events for our protocol servers + std::map ::const_iterator pIter; + pIter = pAPI->mServers.begin(); + while (pIter != pAPI->mServers.end()) + { + eQMIService svc = pIter->first; + cQMIProtocolServer * pServer = pAPI->GetServer( svc ); + if (pServer != 0) + { + // Grab the log from the server + const cProtocolLog & log = pServer->GetLog(); + + // Grab the Signal event, if it exists + cEvent & sigEvent = log.GetSignalEvent(); + + services[events.size()] = svc; + events.push_back( &sigEvent ); + } + + pIter++; + } + } + + TRACE( "GobiConnectionMgmt traffic thread [%u] started\n", + (UINT)pthread_self() ); + + // Loop waiting for exit event + while (bRun == true) + { + // Wait for activity + DWORD ignoredVal, index; + int nRet = WaitOnMultipleEvents( events, + TRAFFIC_INTERVAL_MS, + ignoredVal, + index ); + + // Timeout + if (nRet == -ETIME) + { + // Do nothing + } + // Error? + else if (nRet <= 0) + { + TRACE( "GobiConnectionMgmt traffic thread wait error %d\n", nRet ); + bRun = false; + } + // Exit event? + else if (index == 0) + { + bRun = false; + } + else if (index < events.size()) + { + // Run ProcessTraffic() for this service type + if (services.find( index ) != services.end()) + { + pAPI->ProcessTraffic( services[index] ); + } + } + else + { + // Fatal error + bRun = false; + } + } + + TRACE( "GobiConnectionMgmt traffic thread [%u] exited\n", + (UINT)pthread_self() ); + + if (pAPI != 0) + { + pAPI->mThreadCleanupFinished = true; + } + + return 0; +} + +/*=========================================================================== +METHOD: + CallbackThread (Free Method) + +DESCRIPTION: + Thread to execute a callback asynchronously + +PARAMETERS: + pArg [ I ] - The cGobiCMCallback object + +RETURN VALUE: + void * - thread exit value (always 0) +===========================================================================*/ +void * CallbackThread( PVOID pArg ) +{ + cGobiCMCallback * pCB = (cGobiCMCallback *)pArg; + if (pCB == 0) + { + ASSERT( 0 ); + return 0; + } + + pCB->Call(); + + delete pCB; + pCB = 0; + + return 0; +} + +/*=========================================================================*/ +// CGobiConnectionMgmtDLL Methods +/*=========================================================================*/ + +/*=========================================================================== +METHOD: + CGobiConnectionMgmtDLL (Public Method) + +DESCRIPTION: + Constructor + +RETURN VALUE: + None +===========================================================================*/ +CGobiConnectionMgmtDLL::CGobiConnectionMgmtDLL() +{ + // Create sync CS + pthread_mutex_init( &mSyncSection, NULL ); +} + +/*=========================================================================== +METHOD: + ~CGobiConnectionMgmtDLL (Public Method) + +DESCRIPTION: + Destructor + +RETURN VALUE: + None +===========================================================================*/ +CGobiConnectionMgmtDLL::~CGobiConnectionMgmtDLL() +{ + std::map tmpAPI = mAPI; + std::map ::const_iterator pIter; + pIter = tmpAPI.begin(); + + while (pIter != tmpAPI.end()) + { + cGobiConnectionMgmt * pAPI = pIter->second; + if (pAPI != 0) + { + pAPI->Cleanup(); + delete pAPI; + } + + pIter++; + } + + mAPI.clear(); + + pthread_mutex_destroy( &mSyncSection ); +} + +/*=========================================================================== +METHOD: + CreateAPI (Public Method) + +DESCRIPTION: + Create a new API object + +RETURN VALUE: + GOBIHANDLE - Handle to new API object (0 upon failure) +===========================================================================*/ +GOBIHANDLE CGobiConnectionMgmtDLL::CreateAPI() +{ + pthread_mutex_lock( &mSyncSection ); + + cGobiConnectionMgmt * pAPI = new cGobiConnectionMgmt; + if (pAPI != 0) + { + bool bInit = pAPI->Initialize(); + if (bInit == true) + { + mAPI[(GOBIHANDLE)pAPI] = pAPI; + } + } + + pthread_mutex_unlock( &mSyncSection ); + + return (GOBIHANDLE)pAPI; +} + +/*=========================================================================== +METHOD: + DeleteAPI (Public Method) + +DESCRIPTION: + Delete an existing API object + +PARAMETERS: + handle [ I ] - Handle to API object to return + +RETURN VALUE: + None +===========================================================================*/ +void CGobiConnectionMgmtDLL::DeleteAPI( GOBIHANDLE handle ) +{ + pthread_mutex_lock( &mSyncSection ); + + std::map ::iterator pIter; + pIter = mAPI.find( handle ); + if (pIter != mAPI.end()) + { + cGobiConnectionMgmt * pAPI = pIter->second; + delete pAPI; + + mAPI.erase( pIter ); + } + + pthread_mutex_unlock( &mSyncSection ); +} + +/*=========================================================================== +METHOD: + GetAPI (Public Method) + +DESCRIPTION: + Return the requested API object + +PARAMETERS: + handle [ I ] - Handle to API object to return + +RETURN VALUE: + cGobiConnectionMgmt * +===========================================================================*/ +cGobiConnectionMgmt * CGobiConnectionMgmtDLL::GetAPI( GOBIHANDLE handle ) +{ + cGobiConnectionMgmt * pAPI = 0; + + pthread_mutex_lock( &mSyncSection ); + + std::map ::const_iterator pIter; + pIter = mAPI.find( handle ); + if (pIter != mAPI.end()) + { + pAPI = pIter->second; + } + + pthread_mutex_unlock( &mSyncSection ); + + return pAPI; +} + +/*=========================================================================*/ +// cGobiConnectionMgmt Methods +/*=========================================================================*/ + +/*=========================================================================== +METHOD: + cGobiConnectionMgmt (Public Method) + +DESCRIPTION: + Constructor + +RETURN VALUE: + None +===========================================================================*/ +cGobiConnectionMgmt::cGobiConnectionMgmt() + : cGobiQMICore(), + mbThreadStarted( false ), + mThreadID( 0 ), + mThreadCleanupFinished( false ) +{ + // Nothing to do but init those variables +} + +/*=========================================================================== +METHOD: + ~cGobiConnectionMgmt (Public Method) + +DESCRIPTION: + Destructor + +RETURN VALUE: + None +===========================================================================*/ +cGobiConnectionMgmt::~cGobiConnectionMgmt() +{ + Disconnect(); +} + +/*=========================================================================== +METHOD: + ProcessTraffic (Internal Method) + +DESCRIPTION: + Process traffic in a QMI server protocol log, this is done to + exercise QMI indication related callbacks + +PARAMETERS: + svc [ I ] - QMI Service type + +RETURN VALUE: + None +===========================================================================*/ +void cGobiConnectionMgmt::ProcessTraffic( eQMIService svc ) +{ + ULONG count = 0; + + std::map ::iterator pIter; + pIter = mServers.find( svc ); + if (pIter == mServers.end()) + { + return; + } + + sServerInfo & si = pIter->second; + cQMIProtocolServer * pSvr = si.mpServer; + if (pSvr == 0) + { + return; + } + + // Grab the service ID from the service + eQMIService svcID = pSvr->GetServiceType(); + if (svcID == eQMI_SVC_ENUM_BEGIN) + { + return; + } + + // Grab the log from the server + const cProtocolLog & logSvr = pSvr->GetLog(); + + // New items to process? + count = logSvr.GetCount(); + if (count != INVALID_LOG_INDEX && count > si.mLogsProcessed) + { + for (ULONG i = si.mLogsProcessed; i < count; i++) + { + sProtocolBuffer buf = logSvr.GetBuffer( i ); + if (buf.IsValid() == false) + { + continue; + } + + eProtocolType pt = buf.GetType(); + if (IsQMIProtocolRX( pt ) == false) + { + continue; + } + + sQMIServiceBuffer qmiBuf( buf.GetSharedBuffer() ); + if (qmiBuf.IsIndication() == false) + { + continue; + } + + ULONG msgID = qmiBuf.GetMessageID(); + + tCallbackKey ck( svcID, msgID ); + std::map ::iterator pIter; + pIter = mCallbacks.find( ck ); + if (pIter == mCallbacks.end()) + { + continue; + } + + ULONG outLen = 0; + const BYTE * pOutput = (const BYTE *)qmiBuf.GetRawContents( outLen ); + tCallbackValue cv = pIter->second; + + cGenericCallback * pCB = 0; + pCB = new cGenericCallback( cv.first, + svcID, + msgID, + cv.second, + outLen, + pOutput ); + + if (pCB != 0) + { + if (pCB->Initialize() == false) + { + delete pCB; + } + } + } + + si.mLogsProcessed = count; + } +} + +/*=========================================================================== +METHOD: + Connect (Public Method) + +DESCRIPTION: + Connect to the specified Gobi device + +PARAMETERS: + pQMIFile [ I ] - QMI control file to connect to + services [ I ] - QMI services to connect to + +RETURN VALUE: + std::set - Services successfuly configured +===========================================================================*/ +std::set cGobiConnectionMgmt::Connect( + LPCSTR pQMIFile, + std::set & services ) +{ + std::set svcs = cGobiQMICore::Connect( pQMIFile, services ); + if (svcs.size() > 0) + { + // Start the traffic processing thread? + if (mbThreadStarted == false) + { + // Clear mExitEvent; + mExitEvent.Clear(); + + pthread_create( &mThreadID, + NULL, + TrafficProcessThread, + this ); + + mbThreadStarted = true; + } + } + + return svcs; +} + +/*=========================================================================== +METHOD: + Disconnect (Public Method) + +DESCRIPTION: + Disconnect from the currently connected Gobi device + +RETURN VALUE: + bool +===========================================================================*/ +bool cGobiConnectionMgmt::Disconnect() +{ + // Clear all callback function pointers + mCallbacks.clear(); + + // Exit traffic processing thread + if (mbThreadStarted == true) + { + // Signal thread to exit + mExitEvent.Set( 0 ); + + // If we are not being called from the thread itself then wait for + // it to exit, if not then it will have to exit automatically + if (pthread_self() != mThreadID) + { + if (mThreadID != 0) + { + pthread_join( mThreadID, NULL ); + } + } + } + + // Clear out thread handle/ID + mbThreadStarted = false; + mThreadID = 0; + + return cGobiQMICore::Disconnect(); +} + +/*=========================================================================== +METHOD: + SetGenericCallback (Public Method) + +DESCRIPTION: + Enable/disable generic callback function + +PARAMETERS: + svcID [ I ] - Service ID to monitor + msgID [ I ] - Message ID to look for + pCallback [ I ] - Generic callback pointer + userValue [ I ] - User value to pass back to callback + +RETURN VALUE: + eGobiError - Return code +===========================================================================*/ +eGobiError cGobiConnectionMgmt::SetGenericCallback( + ULONG svcID, + ULONG msgID, + tFNGenericCallback pCallback, + ULONG_PTR userValue ) +{ + // Assume success + eGobiError rc = eGOBI_ERR_NONE; + + tCallbackKey ck( svcID, msgID ); + std::map ::iterator pIter; + pIter = mCallbacks.find( ck ); + + bool bOn = (pCallback != 0 && pIter == mCallbacks.end()); + bool bOff = (pCallback == 0 && pIter != mCallbacks.end()); + bool bReplace = (pCallback != 0 && pIter != mCallbacks.end()); + if (bOn == true || bReplace == true) + { + tCallbackValue cv( pCallback, userValue ); + mCallbacks[ck] = cv; + } + else if (bOff == true) + { + mCallbacks.erase( pIter ); + } + + return rc; +} diff --git a/gobi-api/GobiAPI_2013-07-31-1347/GobiConnectionMgmt/GobiConnectionMgmt.h b/gobi-api/GobiAPI_2013-07-31-1347/GobiConnectionMgmt/GobiConnectionMgmt.h new file mode 100644 index 0000000..2e03121 --- /dev/null +++ b/gobi-api/GobiAPI_2013-07-31-1347/GobiConnectionMgmt/GobiConnectionMgmt.h @@ -0,0 +1,269 @@ +/*=========================================================================== +FILE: + GobiConnectionMgmt.h + +DESCRIPTION: + QUALCOMM Connection Management API for Gobi + +PUBLIC CLASSES AND FUNCTIONS: + CGobiConnectionMgmtDLL + cGobiConnectionMgmt + +Copyright (c) 2013, The Linux Foundation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +==========================================================================*/ + +/*=========================================================================*/ +// Pragmas +/*=========================================================================*/ +#pragma once + +//--------------------------------------------------------------------------- +// Include Files +//--------------------------------------------------------------------------- +#include "GobiQMICore.h" + +#include "QMIBuffers.h" + +//--------------------------------------------------------------------------- +// Definitions +//--------------------------------------------------------------------------- + +// Handle to Gobi API +typedef ULONG_PTR GOBIHANDLE; + +extern "C" +{ + // Generic callback function pointer + typedef void (* tFNGenericCallback)( + ULONG svcID, + ULONG msgID, + ULONG_PTR userValue, + ULONG outLen, + const BYTE * pOut ); + +}; + +// CallbackThread prototype +// Thread to execute a callback asynchronously +void * CallbackThread( PVOID pArg ); + +/*=========================================================================*/ +// Class cGobiCMCallback +/*=========================================================================*/ +class cGobiCMCallback +{ + public: + // (Inline) Constructor + cGobiCMCallback() + { }; + + // (Inline) Destructor + virtual ~cGobiCMCallback() + { }; + + // (Inline) Initialize the callback object by starting the thread + bool Initialize() + { + // Start the thread + pthread_t threadID; + pthread_attr_t attributes; + pthread_attr_init( &attributes ); + pthread_attr_setdetachstate( &attributes, PTHREAD_CREATE_DETACHED ); + + int nRC = pthread_create( &threadID, + &attributes, + CallbackThread, + this ); + + if (nRC == 0) + { + // Success! + return true; + } + + return false; + }; + + protected: + // Call the function + virtual void Call() = 0; + + // Function thread gets full access + friend void * CallbackThread( PVOID pArg ); +}; + +/*=========================================================================*/ +// Class cGenericCallback +/*=========================================================================*/ +class cGenericCallback : public cGobiCMCallback +{ + public: + // (Inline) Constructor + cGenericCallback( + tFNGenericCallback pCallback, + ULONG svcID, + ULONG msgID, + ULONG_PTR userValue, + ULONG outLen, + const BYTE * pOut ) + : mServiceID( svcID ), + mMessageID( msgID ), + mUserValue( userValue ), + mOutputLen( 0 ), + mpCallback( pCallback ) + { + memset( &mOutput[0], 0, QMI_MAX_BUFFER_SIZE ); + if (outLen <= QMI_MAX_BUFFER_SIZE && pOut != 0) + { + mOutputLen = outLen; + memcpy( &mOutput[0], pOut, outLen ); + } + }; + + // (Inline) Destructor + virtual ~cGenericCallback() + { + mpCallback = 0; + }; + + protected: + /* Service ID */ + ULONG mServiceID; + + /* Message ID */ + ULONG mMessageID; + + /* User value */ + ULONG_PTR mUserValue; + + /* Actual size of output content */ + ULONG mOutputLen; + + /* Output content buffer */ + BYTE mOutput[QMI_MAX_BUFFER_SIZE]; + + /* Callback function */ + tFNGenericCallback mpCallback; + + // Call the function + virtual void Call() + { + if (mpCallback != 0) + { + mpCallback( mServiceID, + mMessageID, + mUserValue, + mOutputLen, + (const BYTE *)&mOutput[0] ); + } + }; +}; + +/*=========================================================================*/ +// Class cGobiConnectionMgmt +/*=========================================================================*/ +class cGobiConnectionMgmt : public cGobiQMICore +{ + public: + // Constructor + cGobiConnectionMgmt(); + + // Destructor + virtual ~cGobiConnectionMgmt(); + + // Connect to the specified Gobi device interface + virtual std::set Connect( + LPCSTR pInterface, + std::set & services ); + + // Disconnect from the currently connected device interface + virtual bool Disconnect(); + + // Enable/disable generic callback function + eGobiError SetGenericCallback( + ULONG svcID, + ULONG msgID, + tFNGenericCallback pCallback, + ULONG_PTR userValue ); + + protected: + // Process new traffic + void ProcessTraffic( eQMIService svc ); + + /* Is there an active thread? */ + bool mbThreadStarted; + + /* ID of traffic processing thread */ + pthread_t mThreadID; + + /* Traffic processing thread exit event */ + cEvent mExitEvent; + + /* Has the protocol server thread finished cleanup? */ + bool mThreadCleanupFinished; + + /* Generic callback function key/value */ + typedef std::pair tCallbackKey; + typedef std::pair tCallbackValue; + + /* Callback functions */ + std::map mCallbacks; + + // Traffic process thread gets full access + friend VOID * TrafficProcessThread( PVOID pArg ); +}; + +/*=========================================================================*/ +// Class CGobiConnectionMgmtDLL +/*=========================================================================*/ +class CGobiConnectionMgmtDLL +{ + public: + // Constructor + CGobiConnectionMgmtDLL(); + + // Destructor + virtual ~CGobiConnectionMgmtDLL(); + + // Create a new API object + GOBIHANDLE CreateAPI(); + + // Delete an existing API object + void DeleteAPI( GOBIHANDLE handle ); + + // Return the requested API object + cGobiConnectionMgmt * GetAPI( GOBIHANDLE handle ); + + protected: + /* API interface object */ + std::map mAPI; + + /* Synchronization object */ + mutable pthread_mutex_t mSyncSection; +}; + +extern CGobiConnectionMgmtDLL gDLL; diff --git a/gobi-api/GobiAPI_2013-07-31-1347/GobiConnectionMgmt/GobiConnectionMgmtAPI.h b/gobi-api/GobiAPI_2013-07-31-1347/GobiConnectionMgmt/GobiConnectionMgmtAPI.h new file mode 100644 index 0000000..bbf40e2 --- /dev/null +++ b/gobi-api/GobiAPI_2013-07-31-1347/GobiConnectionMgmt/GobiConnectionMgmtAPI.h @@ -0,0 +1,18734 @@ +/*=========================================================================== +FILE: + GobiConnectionMgmtAPI.h + +DESCRIPTION: + QUALCOMM Connection Management API for Gobi 5000 + +Copyright (c) 2013, The Linux Foundation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +==========================================================================*/ + +/*=========================================================================*/ +// Definitions +/*=========================================================================*/ +#ifndef GOBI_TYPEDEFS +#define GOBI_TYPEDEFS + +// Type Definitions +typedef unsigned long ULONG; +typedef unsigned long * ULONG_PTR; +typedef unsigned long long ULONGLONG; +typedef signed char INT8; +typedef unsigned char UINT8; +typedef signed short INT16; +typedef unsigned short UINT16; +typedef signed int INT32; +typedef unsigned int UINT32; +typedef unsigned char BYTE; +typedef char CHAR; +typedef unsigned short WORD; +typedef unsigned short USHORT; +typedef const char * LPCSTR; + +#ifdef WINDOWS + typedef signed __int64 INT64; + typedef unsigned __int64 UINT64; +#else + typedef signed long long INT64; + typedef unsigned long long UINT64; +#endif + +#endif + +// Handle to Gobi API +typedef ULONG_PTR GOBIHANDLE; + +#ifdef __cplusplus + extern "C" { +#endif + +// Geeneric callback function pointer +typedef void (* tFNGenericCallback)( + ULONG svcID, + ULONG msgID, + GOBIHANDLE handle, + ULONG outLen, + const BYTE * pOut ); + +#ifdef __cplusplus + }; +#endif + +/*=========================================================================*/ +// Prototypes +/*=========================================================================*/ + +/*=========================================================================== +METHOD: + GobiConnect + +DESCRIPTION: + This function connects the CM API library to the specified Gobi + device interface + +PARAMETERS: + pQMIFile [ I ] - Device interface to connect to + pServicesCount [I/O] - Upon input the number of QMI services to connect to, + upon output the number of QMI services successfully + connected to + pServices [I/O] - Upon input the array of QMI service IDs to connect + to, upon output the array of QMI service IDs + successfully connected to + pHandle [ O ] - The returned Gobi interface handle + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG GobiConnect( + LPCSTR pInterface, + ULONG * pServicesCount, + ULONG * pServices, + GOBIHANDLE * pHandle ); + +/*=========================================================================== +METHOD: + GobiCancel + +DESCRIPTION: + This function cancels the most recent outstanding request for the + specified QMI service + +PARAMETERS: + handle [ I ] - Gobi interface handle + svcID [ I ] - Service whose outstanding request is to be cancelled + pTXID [ O ] - QMI transaction ID of outstanding request + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG GobiCancel( + GOBIHANDLE handle, + ULONG svcID, + ULONG * pTXID ); + +/*=========================================================================== +METHOD: + GobiDisconnect + +DESCRIPTION: + This function disconnects the CM API library from the currently + connected Gobi device + +PARAMETERS: + handle [ I ] - Gobi interface handle + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG GobiDisconnect( GOBIHANDLE handle ); + +/*=========================================================================== +METHOD: + SetGenericCallback + +DESCRIPTION: + This function enables/disables a generic callback + +PARAMETERS: + handle [ I ] - Gobi interface handle + svcID [ I ] - Service ID to monitor + msgID [ I ] - Message ID to look for + pCallback [ I ] - Callback function + +RETURN VALUE: + ULONG +===========================================================================*/ +ULONG SetGenericCallback( + GOBIHANDLE handle, + ULONG svcID, + ULONG msgID, + tFNGenericCallback pCallback ); + +/*=========================================================================== +METHOD: + WDSReset + +DESCRIPTION: + The function sends 'WDS/Reset Request' (0x0000) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSReset( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSSetEventReport + +DESCRIPTION: + The function sends 'WDS/Set Event Report Request' (0x0001) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSSetEventReport( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSAbort + +DESCRIPTION: + The function sends 'WDS/Abort Request' (0x0002) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSAbort( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSSetIndication + +DESCRIPTION: + The function sends 'WDS/Set Indication Request' (0x0003) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSSetIndication( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSGetSupportedMessages + +DESCRIPTION: + The function sends 'WDS/Get Supported Messages Request' (0x001E) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetSupportedMessages( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSGetSupportedFields + +DESCRIPTION: + The function sends 'WDS/Get Supported Fields Request' (0x001F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetSupportedFields( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSStartNetworkInterface + +DESCRIPTION: + The function sends 'WDS/Start Network Interface Request' (0x0020) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSStartNetworkInterface( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSStopNetworkInterface + +DESCRIPTION: + The function sends 'WDS/Stop Network Interface Request' (0x0021) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSStopNetworkInterface( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSGetPacketServiceStatus + +DESCRIPTION: + The function sends 'WDS/Get Packet Service Status Request' (0x0022) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetPacketServiceStatus( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSGetChannelRates + +DESCRIPTION: + The function sends 'WDS/Get Channel Rates Request' (0x0023) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetChannelRates( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSGetPacketStatistics + +DESCRIPTION: + The function sends 'WDS/Get Packet Statistics Request' (0x0024) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetPacketStatistics( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSGoDormant + +DESCRIPTION: + The function sends 'WDS/Go Dormant Request' (0x0025) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGoDormant( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSGoActive + +DESCRIPTION: + The function sends 'WDS/Go Active Request' (0x0026) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGoActive( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSCreateProfile + +DESCRIPTION: + The function sends 'WDS/Create Profile Request' (0x0027) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSCreateProfile( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSModifyProfile + +DESCRIPTION: + The function sends 'WDS/Modify Profile Request' (0x0028) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSModifyProfile( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSDeleteProfile + +DESCRIPTION: + The function sends 'WDS/Delete Profile Request' (0x0029) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSDeleteProfile( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSGetProfileList + +DESCRIPTION: + The function sends 'WDS/Get Profile List Request' (0x002A) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetProfileList( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSGetProfileSettings + +DESCRIPTION: + The function sends 'WDS/Get Profile Settings Request' (0x002B) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetProfileSettings( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSGetDefaultSettings + +DESCRIPTION: + The function sends 'WDS/Get Default Settings Request' (0x002C) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetDefaultSettings( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSGetCurrentSettings + +DESCRIPTION: + The function sends 'WDS/Get Current Settings Request' (0x002D) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetCurrentSettings( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSSetMIPMode + +DESCRIPTION: + The function sends 'WDS/Set MIP Mode Request' (0x002E) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSSetMIPMode( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSGetMIPMode + +DESCRIPTION: + The function sends 'WDS/Get MIP Mode Request' (0x002F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetMIPMode( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSGetDormancy + +DESCRIPTION: + The function sends 'WDS/Get Dormancy Request' (0x0030) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetDormancy( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSGetAutoconnectSetting + +DESCRIPTION: + The function sends 'WDS/Get Autoconnect Setting Request' (0x0034) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetAutoconnectSetting( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSGetDataSessionDuration + +DESCRIPTION: + The function sends 'WDS/Get Data Session Duration Request' (0x0035) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetDataSessionDuration( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSGetModemStatus + +DESCRIPTION: + The function sends 'WDS/Get Modem Status Request' (0x0036) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetModemStatus( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSGetDataBearerTechnology + +DESCRIPTION: + The function sends 'WDS/Get Data Bearer Technology Request' (0x0037) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetDataBearerTechnology( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSGetModemInfo + +DESCRIPTION: + The function sends 'WDS/Get Modem Info Request' (0x0038) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetModemInfo( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSGetActiveMIPProfile + +DESCRIPTION: + The function sends 'WDS/Get Active MIP Profile Request' (0x003C) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetActiveMIPProfile( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSSetActiveMIPProfile + +DESCRIPTION: + The function sends 'WDS/Set Active MIP Profile Request' (0x003D) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSSetActiveMIPProfile( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSGetMIPProfile + +DESCRIPTION: + The function sends 'WDS/Get MIP Profile Request' (0x003E) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetMIPProfile( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSSetMIPProfile + +DESCRIPTION: + The function sends 'WDS/Set MIP Profile Request' (0x003F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSSetMIPProfile( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSGetMIPParameters + +DESCRIPTION: + The function sends 'WDS/Get MIP Parameters Request' (0x0040) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetMIPParameters( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSSetMIPParameters + +DESCRIPTION: + The function sends 'WDS/Set MIP Parameters Request' (0x0041) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSSetMIPParameters( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSGetLastMIPStatus + +DESCRIPTION: + The function sends 'WDS/Get Last MIP Status Request' (0x0042) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetLastMIPStatus( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSGetANAAAAuthenticationStatus + +DESCRIPTION: + The function sends 'WDS/Get AN-AAA Authentication Status Request' (0x0043) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetANAAAAuthenticationStatus( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSGetCurrentDataBearerTechnology + +DESCRIPTION: + The function sends 'WDS/Get Current Data Bearer Technology Request' (0x0044) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetCurrentDataBearerTechnology( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSGetCallList + +DESCRIPTION: + The function sends 'WDS/Get Call List Request' (0x0045) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetCallList( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSGetCallRecord + +DESCRIPTION: + The function sends 'WDS/Get Call Record Request' (0x0046) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetCallRecord( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSClearCallList + +DESCRIPTION: + The function sends 'WDS/Clear Call List Request' (0x0047) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSClearCallList( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSGetCallListMaxSize + +DESCRIPTION: + The function sends 'WDS/Get Call List Max Size Request' (0x0048) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetCallListMaxSize( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSGetDefaultProfileNumber + +DESCRIPTION: + The function sends 'WDS/Get Default Profile Number Request' (0x0049) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetDefaultProfileNumber( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSSetDefaultProfileNumber + +DESCRIPTION: + The function sends 'WDS/Set Default Profile Number Request' (0x004A) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSSetDefaultProfileNumber( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSResetProfile + +DESCRIPTION: + The function sends 'WDS/Reset Profile Request' (0x004B) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSResetProfile( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSResetProfileParamToInvalid + +DESCRIPTION: + The function sends 'WDS/Reset Profile Param To Invalid Request' (0x004C) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSResetProfileParamToInvalid( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSSetIPFamilyPreference + +DESCRIPTION: + The function sends 'WDS/Set IP Family Preference Request' (0x004D) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSSetIPFamilyPreference( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSSetFMCTunnelParameters + +DESCRIPTION: + The function sends 'WDS/Set FMC Tunnel Parameters Request' (0x004E) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSSetFMCTunnelParameters( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSClearFMCTunnelParameters + +DESCRIPTION: + The function sends 'WDS/Clear FMC Tunnel Parameters Request' (0x004F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSClearFMCTunnelParameters( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSGetFMCTunnelParameters + +DESCRIPTION: + The function sends 'WDS/Get FMC Tunnel Parameters Request' (0x0050) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetFMCTunnelParameters( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSSetAutoconnectSetting + +DESCRIPTION: + The function sends 'WDS/Set Autoconnect Setting Request' (0x0051) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSSetAutoconnectSetting( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSGetDNSSetting + +DESCRIPTION: + The function sends 'WDS/Get DNS Setting Request' (0x0052) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetDNSSetting( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSSetDNSSetting + +DESCRIPTION: + The function sends 'WDS/Set DNS Setting Request' (0x0053) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSSetDNSSetting( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSGetCDMAPreDormancySettings + +DESCRIPTION: + The function sends 'WDS/Get CDMA Pre-Dormancy Settings Request' (0x0054) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetCDMAPreDormancySettings( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSSetCAMTimer + +DESCRIPTION: + The function sends 'WDS/Set CAM Timer Request' (0x0055) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSSetCAMTimer( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSGetCAMTimer + +DESCRIPTION: + The function sends 'WDS/Get CAM Timer Request' (0x0056) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetCAMTimer( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSSetSCRM + +DESCRIPTION: + The function sends 'WDS/Set SCRM Request' (0x0057) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSSetSCRM( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSGetSCRM + +DESCRIPTION: + The function sends 'WDS/Get SCRM Request' (0x0058) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetSCRM( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSSetRDUD + +DESCRIPTION: + The function sends 'WDS/Set RDUD Request' (0x0059) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSSetRDUD( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSGetRDUD + +DESCRIPTION: + The function sends 'WDS/Get RDUD Request' (0x005A) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetRDUD( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSGetSIPMIPCallType + +DESCRIPTION: + The function sends 'WDS/Get SIP/MIP Call Type Request' (0x005B) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetSIPMIPCallType( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSSetEVDOPageMonitorPeriod + +DESCRIPTION: + The function sends 'WDS/Set EV-DO Page Monitor Period Request' (0x005C) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSSetEVDOPageMonitorPeriod( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSSetEVDOLongSleep + +DESCRIPTION: + The function sends 'WDS/Set EV-DO Long Sleep Request' (0x005D) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSSetEVDOLongSleep( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSGetEVDOPageMonitorPeriod + +DESCRIPTION: + The function sends 'WDS/Get EV-DO Page Monitor Period Request' (0x005E) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetEVDOPageMonitorPeriod( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSGetCallThrottleInfo + +DESCRIPTION: + The function sends 'WDS/Get Call Throttle Info Request' (0x005F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetCallThrottleInfo( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSGetNSAPI + +DESCRIPTION: + The function sends 'WDS/Get NSAPI Request' (0x0060) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetNSAPI( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSSetDUNCallControlPreference + +DESCRIPTION: + The function sends 'WDS/Set DUN Call Control Preference Request' (0x0061) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSSetDUNCallControlPreference( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSGetDUNCallControlInfo + +DESCRIPTION: + The function sends 'WDS/Get DUN Call Control Info Request' (0x0062) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetDUNCallControlInfo( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSSetDUNCallControlEventReport + +DESCRIPTION: + The function sends 'WDS/Set DUN Call Control Event Report Request' (0x0063) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSSetDUNCallControlEventReport( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSPendingDUNCallControl + +DESCRIPTION: + The function sends 'WDS/Pending DUN Call Control Request' (0x0064) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSPendingDUNCallControl( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSEMBMSTMGIActivate + +DESCRIPTION: + The function sends 'WDS/EMBMS TMGI Activate Request' (0x0065) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSEMBMSTMGIActivate( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSEMBMSTMGIDeactivate + +DESCRIPTION: + The function sends 'WDS/EMBMS TMGI Deactivate Request' (0x0066) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSEMBMSTMGIDeactivate( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSEMBMSTMGIListQuery + +DESCRIPTION: + The function sends 'WDS/EMBMS TMGI List Query Request' (0x0067) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSEMBMSTMGIListQuery( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSGetPreferredDataSystem + +DESCRIPTION: + The function sends 'WDS/Get Preferred Data System Request' (0x0069) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetPreferredDataSystem( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSGetLastDataCallStatus + +DESCRIPTION: + The function sends 'WDS/Get Last Data Call Status Request' (0x006A) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetLastDataCallStatus( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSGetCurrentDataSystems + +DESCRIPTION: + The function sends 'WDS/Get Current Data Systems Request' (0x006B) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetCurrentDataSystems( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSGetPDNThrottleInfo + +DESCRIPTION: + The function sends 'WDS/Get PDN Throttle Info Request' (0x006C) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetPDNThrottleInfo( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSGetLTEAttachParameters + +DESCRIPTION: + The function sends 'WDS/Get LTE Attach Parameters Request' (0x0085) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetLTEAttachParameters( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSResetPacketStatistics + +DESCRIPTION: + The function sends 'WDS/Reset Packet Statistics Request' (0x0086) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSResetPacketStatistics( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSGetFlowControlStatus + +DESCRIPTION: + The function sends 'WDS/Get Flow Control Status Request' (0x0087) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetFlowControlStatus( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSEMBMSTMGISwitch + +DESCRIPTION: + The function sends 'WDS/EMBMS TMGI Switch Request' (0x0088) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSEMBMSTMGISwitch( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSBindDataPort + +DESCRIPTION: + The function sends 'WDS/Bind Data Port Request' (0x0089) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSBindDataPort( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSSetPDNFilter + +DESCRIPTION: + The function sends 'WDS/Set PDN Filter Request' (0x008A) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSSetPDNFilter( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSRemovePDNFilter + +DESCRIPTION: + The function sends 'WDS/Remove PDN Filter Request' (0x008B) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSRemovePDNFilter( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSReverseIPTransportConnectionIndication + +DESCRIPTION: + The function sends 'WDS/Reverse IP Transport Connection Indication Request' (0x008D) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSReverseIPTransportConnectionIndication( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSGetIPSecStaticSAConfig + +DESCRIPTION: + The function sends 'WDS/Get IPSec Static SA Config Request' (0x008F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetIPSecStaticSAConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSReverseIPTransportConfigComplete + +DESCRIPTION: + The function sends 'WDS/Reverse IP Transport Config Complete Request' (0x0090) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSReverseIPTransportConfigComplete( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSGetExtendedDataBearerTechnology + +DESCRIPTION: + The function sends 'WDS/Get Extended Data Bearer Technology Request' (0x0091) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetExtendedDataBearerTechnology( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSGetLTEMaximumAttachPDNNumber + +DESCRIPTION: + The function sends 'WDS/Get LTE Maximum Attach PDN Number Request' (0x0092) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetLTEMaximumAttachPDNNumber( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSSetLTEAttachPDNList + +DESCRIPTION: + The function sends 'WDS/Set LTE Attach PDN List Request' (0x0093) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSSetLTEAttachPDNList( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSGetLTEAttachPDNList + +DESCRIPTION: + The function sends 'WDS/Get LTE Attach PDN List Request' (0x0094) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetLTEAttachPDNList( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSSetLTEDataRetry + +DESCRIPTION: + The function sends 'WDS/Set LTE Data Retry Request' (0x0096) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSSetLTEDataRetry( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSGetLTEDataRetry + +DESCRIPTION: + The function sends 'WDS/Get LTE Data Retry Request' (0x0097) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetLTEDataRetry( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSSetLTEAttachType + +DESCRIPTION: + The function sends 'WDS/Set LTE Attach Type Request' (0x0098) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSSetLTEAttachType( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDSGetLTEAttachType + +DESCRIPTION: + The function sends 'WDS/Get LTE Attach Type Request' (0x0099) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetLTEAttachType( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + DMSReset + +DESCRIPTION: + The function sends 'DMS/Reset Request' (0x0000) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSReset( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + DMSSetEventReport + +DESCRIPTION: + The function sends 'DMS/Set Event Report Request' (0x0001) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSSetEventReport( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + DMSGetSupportedMessages + +DESCRIPTION: + The function sends 'DMS/Get Supported Messages Request' (0x001E) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSGetSupportedMessages( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + DMSGetSupportedFields + +DESCRIPTION: + The function sends 'DMS/Get Supported Fields Request' (0x001F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSGetSupportedFields( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + DMSGetDeviceCapabilities + +DESCRIPTION: + The function sends 'DMS/Get Device Capabilities Request' (0x0020) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSGetDeviceCapabilities( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + DMSGetDeviceManfacturer + +DESCRIPTION: + The function sends 'DMS/Get Device Manfacturer Request' (0x0021) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSGetDeviceManfacturer( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + DMSGetDeviceModel + +DESCRIPTION: + The function sends 'DMS/Get Device Model Request' (0x0022) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSGetDeviceModel( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + DMSGetDeviceRevision + +DESCRIPTION: + The function sends 'DMS/Get Device Revision Request' (0x0023) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSGetDeviceRevision( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + DMSGetDeviceVoiceNumber + +DESCRIPTION: + The function sends 'DMS/Get Device Voice Number Request' (0x0024) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSGetDeviceVoiceNumber( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + DMSGetDeviceSerialNumbers + +DESCRIPTION: + The function sends 'DMS/Get Device Serial Numbers Request' (0x0025) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSGetDeviceSerialNumbers( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + DMSGetPowerState + +DESCRIPTION: + The function sends 'DMS/Get Power State Request' (0x0026) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSGetPowerState( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + DMSUIMSetPINProtection + +DESCRIPTION: + The function sends 'DMS/UIM Set PIN Protection Request' (0x0027) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSUIMSetPINProtection( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + DMSUIMVerifyPIN + +DESCRIPTION: + The function sends 'DMS/UIM Verify PIN Request' (0x0028) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSUIMVerifyPIN( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + DMSUIMUnblockPIN + +DESCRIPTION: + The function sends 'DMS/UIM Unblock PIN Request' (0x0029) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSUIMUnblockPIN( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + DMSUIMChangePIN + +DESCRIPTION: + The function sends 'DMS/UIM Change PIN Request' (0x002A) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSUIMChangePIN( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + DMSUIMGetPINStatus + +DESCRIPTION: + The function sends 'DMS/UIM Get PIN Status Request' (0x002B) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSUIMGetPINStatus( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + DMSGetHardwareRevision + +DESCRIPTION: + The function sends 'DMS/Get Hardware Revision Request' (0x002C) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSGetHardwareRevision( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + DMSGetOperatingMode + +DESCRIPTION: + The function sends 'DMS/Get Operating Mode Request' (0x002D) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSGetOperatingMode( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + DMSSetOperatingMode + +DESCRIPTION: + The function sends 'DMS/Set Operating Mode Request' (0x002E) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSSetOperatingMode( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + DMSGetTimestamp + +DESCRIPTION: + The function sends 'DMS/Get Timestamp Request' (0x002F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSGetTimestamp( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + DMSGetPRLVersion + +DESCRIPTION: + The function sends 'DMS/Get PRL Version Request' (0x0030) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSGetPRLVersion( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + DMSGetActivationState + +DESCRIPTION: + The function sends 'DMS/Get Activation State Request' (0x0031) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSGetActivationState( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + DMSActivateAutomatic + +DESCRIPTION: + The function sends 'DMS/Activate Automatic Request' (0x0032) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSActivateAutomatic( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + DMSActivateManual + +DESCRIPTION: + The function sends 'DMS/Activate Manual Request' (0x0033) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSActivateManual( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + DMSGetLockState + +DESCRIPTION: + The function sends 'DMS/Get Lock State Request' (0x0034) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSGetLockState( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + DMSSetLockState + +DESCRIPTION: + The function sends 'DMS/Set Lock State Request' (0x0035) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSSetLockState( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + DMSSetLockCode + +DESCRIPTION: + The function sends 'DMS/Set Lock Code Request' (0x0036) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSSetLockCode( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + DMSReadUserData + +DESCRIPTION: + The function sends 'DMS/Read User Data Request' (0x0037) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSReadUserData( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + DMSWriteUserData + +DESCRIPTION: + The function sends 'DMS/Write User Data Request' (0x0038) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSWriteUserData( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + DMSReadERIData + +DESCRIPTION: + The function sends 'DMS/Read ERI Data Request' (0x0039) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSReadERIData( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + DMSResetFactoryDefaults + +DESCRIPTION: + The function sends 'DMS/Reset Factory Defaults Request' (0x003A) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSResetFactoryDefaults( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + DMSValidateSPC + +DESCRIPTION: + The function sends 'DMS/Validate SPC Request' (0x003B) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSValidateSPC( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + DMSUIMGetICCID + +DESCRIPTION: + The function sends 'DMS/UIM Get ICCID Request' (0x003C) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSUIMGetICCID( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + DMSUIMGetHostLockID + +DESCRIPTION: + The function sends 'DMS/UIM Get Host Lock ID Request' (0x003F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSUIMGetHostLockID( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + DMSUIMGetControlKeyStatus + +DESCRIPTION: + The function sends 'DMS/UIM Get Control Key Status Request' (0x0040) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSUIMGetControlKeyStatus( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + DMSUIMSetControlKeyProtection + +DESCRIPTION: + The function sends 'DMS/UIM Set Control Key Protection Request' (0x0041) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSUIMSetControlKeyProtection( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + DMSUIMUnblockControlKey + +DESCRIPTION: + The function sends 'DMS/UIM Unblock Control Key Request' (0x0042) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSUIMUnblockControlKey( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + DMSGetIMSI + +DESCRIPTION: + The function sends 'DMS/Get IMSI Request' (0x0043) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSGetIMSI( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + DMSGetUIMState + +DESCRIPTION: + The function sends 'DMS/Get UIM State Request' (0x0044) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSGetUIMState( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + DMSGetBandCapabilities + +DESCRIPTION: + The function sends 'DMS/Get Band Capabilities Request' (0x0045) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSGetBandCapabilities( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + DMSGetFactorySerialNumber + +DESCRIPTION: + The function sends 'DMS/Get Factory Serial Number Request' (0x0046) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSGetFactorySerialNumber( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + DMSSetDeviceTime + +DESCRIPTION: + The function sends 'DMS/Set Device Time Request' (0x004B) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSSetDeviceTime( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + DMSGetSoftwareVersion + +DESCRIPTION: + The function sends 'DMS/Get Software Version Request' (0x0051) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSGetSoftwareVersion( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + DMSSetSPC + +DESCRIPTION: + The function sends 'DMS/Set SPC Request' (0x0052) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSSetSPC( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + DMSGetCurrentPRLInfo + +DESCRIPTION: + The function sends 'DMS/Get Current PRL Info Request' (0x0053) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSGetCurrentPRLInfo( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + DMSBindSubscription + +DESCRIPTION: + The function sends 'DMS/Bind Subscription Request' (0x0054) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSBindSubscription( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + DMSGetSubscription + +DESCRIPTION: + The function sends 'DMS/Get Subscription Request' (0x0055) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSGetSubscription( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASReset + +DESCRIPTION: + The function sends 'NAS/Reset Request' (0x0000) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASReset( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASAbort + +DESCRIPTION: + The function sends 'NAS/Abort Request' (0x0001) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASAbort( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASSetEventReport + +DESCRIPTION: + The function sends 'NAS/Set Event Report Request' (0x0002) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASSetEventReport( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASSetRegistrationEventReport + +DESCRIPTION: + The function sends 'NAS/Set Registration Event Report Request' (0x0003) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASSetRegistrationEventReport( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASGetSupportedMessages + +DESCRIPTION: + The function sends 'NAS/Get Supported Messages Request' (0x001E) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetSupportedMessages( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASGetSupportedFields + +DESCRIPTION: + The function sends 'NAS/Get Supported Fields Request' (0x001F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetSupportedFields( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASGetSignalStrength + +DESCRIPTION: + The function sends 'NAS/Get Signal Strength Request' (0x0020) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetSignalStrength( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASPerformNetworkScan + +DESCRIPTION: + The function sends 'NAS/Perform Network Scan Request' (0x0021) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASPerformNetworkScan( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASInitiateNetworkRegister + +DESCRIPTION: + The function sends 'NAS/Initiate Network Register Request' (0x0022) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASInitiateNetworkRegister( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASInitiateAttach + +DESCRIPTION: + The function sends 'NAS/Initiate Attach Request' (0x0023) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASInitiateAttach( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASGetServingSystem + +DESCRIPTION: + The function sends 'NAS/Get Serving System Request' (0x0024) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetServingSystem( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASGetHomeNetwork + +DESCRIPTION: + The function sends 'NAS/Get Home Network Request' (0x0025) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetHomeNetwork( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASGetPreferredNetworks + +DESCRIPTION: + The function sends 'NAS/Get Preferred Networks Request' (0x0026) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetPreferredNetworks( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASSetPreferredNetworks + +DESCRIPTION: + The function sends 'NAS/Set Preferred Networks Request' (0x0027) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASSetPreferredNetworks( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASGetForbiddenNetworks + +DESCRIPTION: + The function sends 'NAS/Get Forbidden Networks Request' (0x0028) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetForbiddenNetworks( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASSetForbiddenNetworks + +DESCRIPTION: + The function sends 'NAS/Set Forbidden Networks Request' (0x0029) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASSetForbiddenNetworks( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASSetTechnologyPreference + +DESCRIPTION: + The function sends 'NAS/Set Technology Preference Request' (0x002A) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASSetTechnologyPreference( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASGetTechnologyPreference + +DESCRIPTION: + The function sends 'NAS/Get Technology Preference Request' (0x002B) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetTechnologyPreference( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASGetACCOLC + +DESCRIPTION: + The function sends 'NAS/Get ACCOLC Request' (0x002C) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetACCOLC( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASSetACCOLC + +DESCRIPTION: + The function sends 'NAS/Set ACCOLC Request' (0x002D) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASSetACCOLC( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASGetSystemPreference + +DESCRIPTION: + The function sends 'NAS/Get System Preference' (0x002E) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetSystemPreference( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASGetNetworkParameters + +DESCRIPTION: + The function sends 'NAS/Get Network Parameters Request' (0x002F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetNetworkParameters( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASSetNetworkParameters + +DESCRIPTION: + The function sends 'NAS/Set Network Parameters Request' (0x0030) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASSetNetworkParameters( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASGetRFInfo + +DESCRIPTION: + The function sends 'NAS/Get RF Info Request' (0x0031) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetRFInfo( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASGetANAAAAuthenticationStatus + +DESCRIPTION: + The function sends 'NAS/Get AN-AAA Authentication Status Request' (0x0032) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetANAAAAuthenticationStatus( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASSetSystemSelectionPref + +DESCRIPTION: + The function sends 'NAS/Set System Selection Pref Request' (0x0033) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASSetSystemSelectionPref( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASGetSystemSelectionPref + +DESCRIPTION: + The function sends 'NAS/Get System Selection Pref Request' (0x0034) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetSystemSelectionPref( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASSetDDTMPreference + +DESCRIPTION: + The function sends 'NAS/Set DDTM Preference Request' (0x0037) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASSetDDTMPreference( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASGetDDTMPreference + +DESCRIPTION: + The function sends 'NAS/Get DDTM Preference Request' (0x0038) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetDDTMPreference( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASGetOperatorNameData + +DESCRIPTION: + The function sends 'NAS/Get Operator Name Data Request' (0x0039) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetOperatorNameData( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASGetCSPPLMNMode + +DESCRIPTION: + The function sends 'NAS/Get CSP PLMN Mode Request' (0x003B) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetCSPPLMNMode( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASUpdateAKEY + +DESCRIPTION: + The function sends 'NAS/Update AKEY Request' (0x003D) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASUpdateAKEY( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASGet3GPP2SubscriptionInfo + +DESCRIPTION: + The function sends 'NAS/Get 3GPP2 Subscription Info Request' (0x003E) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGet3GPP2SubscriptionInfo( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASSet3GPP2SubscriptionInfo + +DESCRIPTION: + The function sends 'NAS/Set 3GPP2 Subscription Info Request' (0x003F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASSet3GPP2SubscriptionInfo( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASGetMobileCAIRevision + +DESCRIPTION: + The function sends 'NAS/Get Mobile CAI Revision Request' (0x0040) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetMobileCAIRevision( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASGetRTREConfig + +DESCRIPTION: + The function sends 'NAS/Get RTRE Config Request' (0x0041) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetRTREConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASSetRTREConfig + +DESCRIPTION: + The function sends 'NAS/Set RTRE Config Request' (0x0042) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASSetRTREConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASGetCellLocationInfo + +DESCRIPTION: + The function sends 'NAS/Get Cell Location Info Request' (0x0043) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetCellLocationInfo( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASGetPLMNName + +DESCRIPTION: + The function sends 'NAS/Get PLMN Name Request' (0x0044) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetPLMNName( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASBindSubscription + +DESCRIPTION: + The function sends 'NAS/Bind Subscription Request' (0x0045) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASBindSubscription( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASGetModePref + +DESCRIPTION: + The function sends 'NAS/Get Mode Pref Request' (0x0049) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetModePref( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASSetDualStandbyPreference + +DESCRIPTION: + The function sends 'NAS/Set Dual Standby Preference Request' (0x004B) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASSetDualStandbyPreference( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASGetSystemInfo + +DESCRIPTION: + The function sends 'NAS/Get System Info Request' (0x004D) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetSystemInfo( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASGetSignalInfo + +DESCRIPTION: + The function sends 'NAS/Get Signal Info Request' (0x004F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetSignalInfo( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASConfigureSignalInfo + +DESCRIPTION: + The function sends 'NAS/Configure Signal Info Request' (0x0050) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASConfigureSignalInfo( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASGetErrorRate + +DESCRIPTION: + The function sends 'NAS/Get Error Rate Request' (0x0052) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetErrorRate( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASGetEVDOProtocolSubtype + +DESCRIPTION: + The function sends 'NAS/Get EV-DO Protocol Subtype Request' (0x0056) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetEVDOProtocolSubtype( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASGetEVDOColorCode + +DESCRIPTION: + The function sends 'NAS/Get EV-DO Color Code Request' (0x0057) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetEVDOColorCode( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASGetAcquisitionSystemMode + +DESCRIPTION: + The function sends 'NAS/Get Acquisition System Mode Request' (0x0058) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetAcquisitionSystemMode( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASSetRXDiversity + +DESCRIPTION: + The function sends 'NAS/Set RX Diversity Request' (0x0059) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASSetRXDiversity( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASGetRXTXInfo + +DESCRIPTION: + The function sends 'NAS/Get RX/TX Info Request' (0x005A) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetRXTXInfo( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASUpdateAKEYExtended + +DESCRIPTION: + The function sends 'NAS/Update A-KEY Extended Request' (0x005B) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASUpdateAKEYExtended( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASGetDualStandbyPreference + +DESCRIPTION: + The function sends 'NAS/Get Dual Standby Preference Request' (0x005C) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetDualStandbyPreference( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASDetachLTE + +DESCRIPTION: + The function sends 'NAS/Detach LTE Request' (0x005D) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASDetachLTE( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASBlockLTEPLMN + +DESCRIPTION: + The function sends 'NAS/Block LTE PLMN Request' (0x005E) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASBlockLTEPLMN( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASUnblockLTEPLMN + +DESCRIPTION: + The function sends 'NAS/Unblock LTE PLMN Request' (0x005F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASUnblockLTEPLMN( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASResetLTEPLMNBlock + +DESCRIPTION: + The function sends 'NAS/Reset LTE PLMN Block Request' (0x0060) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASResetLTEPLMNBlock( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASConfigureEMBMS + +DESCRIPTION: + The function sends 'NAS/Configure EMBMS Request' (0x0062) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASConfigureEMBMS( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASGetEMBMSStatus + +DESCRIPTION: + The function sends 'NAS/Get EMBMS Status Request' (0x0063) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetEMBMSStatus( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASGetCDMAPositionInfo + +DESCRIPTION: + The function sends 'NAS/Get CDMA Position Info Request' (0x0065) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetCDMAPositionInfo( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASForceNetworkSearch + +DESCRIPTION: + The function sends 'NAS/Force Network Search Request' (0x0067) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASForceNetworkSearch( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASGetManagedRoamingConfig + +DESCRIPTION: + The function sends 'NAS/Get Managed Roaming Config Request' (0x0069) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetManagedRoamingConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASGetCentralizedEONSSupport + +DESCRIPTION: + The function sends 'NAS/Get Centralized EONS Support Request' (0x006B) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetCentralizedEONSSupport( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASConfigureSignalInfo2 + +DESCRIPTION: + The function sends 'NAS/Configure Signal Info 2 Request' (0x006C) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASConfigureSignalInfo2( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASGetTDSCDMACellInfo + +DESCRIPTION: + The function sends 'NAS/Get TD-SCDMA Cell Info Request' (0x006D) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetTDSCDMACellInfo( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASSetHPLMNIRATSearchTimer + +DESCRIPTION: + The function sends 'NAS/Set HPLMN IRAT Search Timer Request' (0x006E) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASSetHPLMNIRATSearchTimer( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASGetEMBMSSignalQuality + +DESCRIPTION: + The function sends 'NAS/Get EMBMS Signal Quality Request' (0x006F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetEMBMSSignalQuality( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASLimitSystemInfoIndications + +DESCRIPTION: + The function sends 'NAS/Limit System Info Indications Request' (0x0070) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASLimitSystemInfoIndications( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASGetSystemInfoIndicationLimits + +DESCRIPTION: + The function sends 'NAS/Get System Info Indication Limits Request' (0x0071) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetSystemInfoIndicationLimits( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASUpdateIMSStatus + +DESCRIPTION: + The function sends 'NAS/Update IMS Status Request' (0x0072) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASUpdateIMSStatus( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASGetIMSPreference + +DESCRIPTION: + The function sends 'NAS/Get IMS Preference Request' (0x0073) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetIMSPreference( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASConfigurePLMNNameIndication + +DESCRIPTION: + The function sends 'NAS/Configure PLMN Name Indication Request' (0x0075) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASConfigurePLMNNameIndication( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASCDMAAvoidSystem + +DESCRIPTION: + The function sends 'NAS/CDMA Avoid System Request' (0x0076) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASCDMAAvoidSystem( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASGetCDMAAvoidSystemList + +DESCRIPTION: + The function sends 'NAS/Get CDMA Avoid System List Request' (0x0077) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetCDMAAvoidSystemList( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASSetHPLMNSearchTimer + +DESCRIPTION: + The function sends 'NAS/Set HPLMN Search Timer Request' (0x0078) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASSetHPLMNSearchTimer( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASGetHPLMNSearchTimer + +DESCRIPTION: + The function sends 'NAS/Get HPLMN Search Timer Request' (0x0079) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetHPLMNSearchTimer( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASSetE911State + +DESCRIPTION: + The function sends 'NAS/Set E911 State Request' (0x007A) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASSetE911State( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASGetSubscriptionInfo + +DESCRIPTION: + The function sends 'NAS/Get Subscription Info Request' (0x007C) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetSubscriptionInfo( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASGetNetworkTime + +DESCRIPTION: + The function sends 'NAS/Get Network Time Request' (0x007D) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetNetworkTime( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + NASGetLTESIB16NetworkTime + +DESCRIPTION: + The function sends 'NAS/Get LTE SIB16 Network Time Request' (0x007E) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetLTESIB16NetworkTime( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WMSReset + +DESCRIPTION: + The function sends 'WMS/Reset Request' (0x0000) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSReset( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WMSSetEventReport + +DESCRIPTION: + The function sends 'WMS/Set Event Report Request' (0x0001) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSSetEventReport( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WMSGetSupportedMessages + +DESCRIPTION: + The function sends 'WMS/Get Supported Messages Request' (0x001E) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSGetSupportedMessages( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WMSGetSupportedFields + +DESCRIPTION: + The function sends 'WMS/Get Supported Fields Request' (0x001F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSGetSupportedFields( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WMSRawSend + +DESCRIPTION: + The function sends 'WMS/Raw Send Request' (0x0020) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSRawSend( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WMSRawWrite + +DESCRIPTION: + The function sends 'WMS/Raw Write Request' (0x0021) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSRawWrite( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WMSRawRead + +DESCRIPTION: + The function sends 'WMS/Raw Read Request' (0x0022) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSRawRead( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WMSModifyTag + +DESCRIPTION: + The function sends 'WMS/Modify Tag Request' (0x0023) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSModifyTag( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WMSDelete + +DESCRIPTION: + The function sends 'WMS/Delete Request' (0x0024) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSDelete( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WMSGetMessageProtocol + +DESCRIPTION: + The function sends 'WMS/Get Message Protocol Request' (0x0030) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSGetMessageProtocol( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WMSListMessages + +DESCRIPTION: + The function sends 'WMS/List Messages Request' (0x0031) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSListMessages( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WMSSetRoutes + +DESCRIPTION: + The function sends 'WMS/Set Routes Request' (0x0032) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSSetRoutes( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WMSGetRoutes + +DESCRIPTION: + The function sends 'WMS/Get Routes Request' (0x0033) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSGetRoutes( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WMSGetSMSCAddress + +DESCRIPTION: + The function sends 'WMS/Get SMSC Address Request' (0x0034) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSGetSMSCAddress( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WMSSetSMSCAddress + +DESCRIPTION: + The function sends 'WMS/Set SMSC Address Request' (0x0035) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSSetSMSCAddress( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WMSGetStorageMaxSize + +DESCRIPTION: + The function sends 'WMS/Get Storage Max Size Request' (0x0036) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSGetStorageMaxSize( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WMSSendACK + +DESCRIPTION: + The function sends 'WMS/Send ACK Request' (0x0037) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSSendACK( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WMSSetRetryPeriod + +DESCRIPTION: + The function sends 'WMS/Set Retry Period Request' (0x0038) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSSetRetryPeriod( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WMSSetRetryInterval + +DESCRIPTION: + The function sends 'WMS/Set Retry Interval Request' (0x0039) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSSetRetryInterval( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WMSSetDCDisconnectTimer + +DESCRIPTION: + The function sends 'WMS/Set DC Disconnect Timer Request' (0x003A) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSSetDCDisconnectTimer( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WMSSetMemoryStatus + +DESCRIPTION: + The function sends 'WMS/Set Memory Status Request' (0x003B) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSSetMemoryStatus( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WMSSetBroadcastActivation + +DESCRIPTION: + The function sends 'WMS/Set Broadcast Activation Request' (0x003C) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSSetBroadcastActivation( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WMSSetBroadcastConfig + +DESCRIPTION: + The function sends 'WMS/Set Broadcast Config Request' (0x003D) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSSetBroadcastConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WMSGetBroadcastConfig + +DESCRIPTION: + The function sends 'WMS/Get Broadcast Config Request' (0x003E) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSGetBroadcastConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WMSGetDomainPreference + +DESCRIPTION: + The function sends 'WMS/Get Domain Preference Request' (0x0040) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSGetDomainPreference( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WMSSetDomainPreference + +DESCRIPTION: + The function sends 'WMS/Set Domain Preference Request' (0x0041) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSSetDomainPreference( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WMSSendFromMemoryStore + +DESCRIPTION: + The function sends 'WMS/Send From Memory Store Request' (0x0042) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSSendFromMemoryStore( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WMSGetWaitingMessage + +DESCRIPTION: + The function sends 'WMS/Get Waiting Message Request' (0x0043) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSGetWaitingMessage( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WMSSetPrimaryClient + +DESCRIPTION: + The function sends 'WMS/Set Primary Client Request' (0x0045) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSSetPrimaryClient( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WMSIndicatorRegistration + +DESCRIPTION: + The function sends 'WMS/Indicator Registration Request' (0x0047) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSIndicatorRegistration( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WMSGetTransportLayerInfo + +DESCRIPTION: + The function sends 'WMS/Get Transport Layer Info Request' (0x0048) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSGetTransportLayerInfo( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WMSGetNetworkRegistrationInfo + +DESCRIPTION: + The function sends 'WMS/Get Network Registration Info Request' (0x004A) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSGetNetworkRegistrationInfo( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WMSBindSubscription + +DESCRIPTION: + The function sends 'WMS/Bind Subscription Request' (0x004C) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSBindSubscription( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WMSGetIndicatorRegistration + +DESCRIPTION: + The function sends 'WMS/Get Indicator Registration Request' (0x004D) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSGetIndicatorRegistration( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WMSGetSMSParameters + +DESCRIPTION: + The function sends 'WMS/Get SMS Parameters Request' (0x004E) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSGetSMSParameters( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WMSSetSMSParameters + +DESCRIPTION: + The function sends 'WMS/Set SMS Parameters Request' (0x004F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSSetSMSParameters( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WMSGetDomainPreferenceConfig + +DESCRIPTION: + The function sends 'WMS/Get Domain Preference Config Request' (0x0051) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSGetDomainPreferenceConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WMSSetDomainPreferenceConfig + +DESCRIPTION: + The function sends 'WMS/Set Domain Preference Config Request' (0x0052) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSSetDomainPreferenceConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WMSGetRetryPeriod + +DESCRIPTION: + The function sends 'WMS/Get Retry Period Request' (0x0053) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSGetRetryPeriod( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WMSGetRetryInterval + +DESCRIPTION: + The function sends 'WMS/Get Retry Interval Request' (0x0054) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSGetRetryInterval( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WMSGetDCDisconnectTimer + +DESCRIPTION: + The function sends 'WMS/Get DC Disconnect Timer Request' (0x0055) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSGetDCDisconnectTimer( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WMSGetMemoryStatus + +DESCRIPTION: + The function sends 'WMS/Get Memory Status Request' (0x0056) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSGetMemoryStatus( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WMSGetPrimaryClient + +DESCRIPTION: + The function sends 'WMS/Get Primary Client Request' (0x0057) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSGetPrimaryClient( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WMSGetSubscriptionBinding + +DESCRIPTION: + The function sends 'WMS/Get Subscription Binding Request' (0x0058) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSGetSubscriptionBinding( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WMSAsyncRawSend + +DESCRIPTION: + The function sends 'WMS/Async Raw Send Request' (0x0059) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSAsyncRawSend( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WMSAsyncSendACK + +DESCRIPTION: + The function sends 'WMS/Async Send ACK Request' (0x005A) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSAsyncSendACK( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WMSAsyncSendFromMemoryStore + +DESCRIPTION: + The function sends 'WMS/Async Send From Memory Store Request' (0x005B) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSAsyncSendFromMemoryStore( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WMSGetServiceReadyStatus + +DESCRIPTION: + The function sends 'WMS/Get Service Ready Status Request' (0x005C) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSGetServiceReadyStatus( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WMSSetWaitingMessage + +DESCRIPTION: + The function sends 'WMS/Set Waiting Message Request' (0x005F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSSetWaitingMessage( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSReset + +DESCRIPTION: + The function sends 'PDS/Reset Request' (0x0000) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSReset( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSSetEventReport + +DESCRIPTION: + The function sends 'PDS/Set Event Report Request' (0x0001) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSSetEventReport( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSGetServiceState + +DESCRIPTION: + The function sends 'PDS/Get Service State Request' (0x0020) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSGetServiceState( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSSetServiceState + +DESCRIPTION: + The function sends 'PDS/Set Service State Request' (0x0021) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSSetServiceState( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSStartTrackingSession + +DESCRIPTION: + The function sends 'PDS/Start Tracking Session Request' (0x0022) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSStartTrackingSession( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSGetTrackingSessionInfo + +DESCRIPTION: + The function sends 'PDS/Get Tracking Session Info Request' (0x0023) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSGetTrackingSessionInfo( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSFixPosition + +DESCRIPTION: + The function sends 'PDS/Fix Position Request' (0x0024) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSFixPosition( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSEndTrackingSession + +DESCRIPTION: + The function sends 'PDS/End Tracking Session Request' (0x0025) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSEndTrackingSession( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSGetNMEAConfig + +DESCRIPTION: + The function sends 'PDS/Get NMEA Config Request' (0x0026) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSGetNMEAConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSSetNMEAConfig + +DESCRIPTION: + The function sends 'PDS/Set NMEA Config Request' (0x0027) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSSetNMEAConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSInjectTimeReference + +DESCRIPTION: + The function sends 'PDS/Inject Time Reference Request' (0x0028) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSInjectTimeReference( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSGetDefaults + +DESCRIPTION: + The function sends 'PDS/Get Defaults Request' (0x0029) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSGetDefaults( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSSetDefaults + +DESCRIPTION: + The function sends 'PDS/Set Defaults Request' (0x002A) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSSetDefaults( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSGetXTRAParameters + +DESCRIPTION: + The function sends 'PDS/Get XTRA Parameters Request' (0x002B) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSGetXTRAParameters( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSSetXTRAParameters + +DESCRIPTION: + The function sends 'PDS/Set XTRA Parameters Request' (0x002C) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSSetXTRAParameters( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSForceXTRADownload + +DESCRIPTION: + The function sends 'PDS/Force XTRA Download Request' (0x002D) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSForceXTRADownload( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSGetAGPSConfig + +DESCRIPTION: + The function sends 'PDS/Get AGPS Config Request' (0x002E) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSGetAGPSConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSSetAGPSConfig + +DESCRIPTION: + The function sends 'PDS/Set AGPS Config Request' (0x002F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSSetAGPSConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSGetServiceAutoTrackingState + +DESCRIPTION: + The function sends 'PDS/Get Service Auto-Tracking State Request' (0x0030) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSGetServiceAutoTrackingState( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSSetServiceAutoTrackingState + +DESCRIPTION: + The function sends 'PDS/Set Service Auto-Tracking State Request' (0x0031) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSSetServiceAutoTrackingState( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSGetCOMPortAutoTrackingConfig + +DESCRIPTION: + The function sends 'PDS/Get COM Port Auto-Tracking Config Request' (0x0032) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSGetCOMPortAutoTrackingConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSSetCOMPortAutoTrackingConfig + +DESCRIPTION: + The function sends 'PDS/Set COM Port Auto-Tracking Config Request' (0x0033) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSSetCOMPortAutoTrackingConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSResetPDSData + +DESCRIPTION: + The function sends 'PDS/Reset PDS Data Request' (0x0034) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSResetPDSData( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSSinglePositionFix + +DESCRIPTION: + The function sends 'PDS/Single Position Fix Request' (0x0035) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSSinglePositionFix( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSGetServiceVersion + +DESCRIPTION: + The function sends 'PDS/Get Service Version Request' (0x0036) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSGetServiceVersion( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSInjectXTRAData + +DESCRIPTION: + The function sends 'PDS/Inject XTRA Data Request' (0x0037) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSInjectXTRAData( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSInjectPositionData + +DESCRIPTION: + The function sends 'PDS/Inject Position Data Request' (0x0038) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSInjectPositionData( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSInjectWiFiPositionData + +DESCRIPTION: + The function sends 'PDS/Inject Wi-Fi Position Data Request' (0x0039) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSInjectWiFiPositionData( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSGetSBASConfig + +DESCRIPTION: + The function sends 'PDS/Get SBAS Config Request' (0x003A) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSGetSBASConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSSetSBASConfig + +DESCRIPTION: + The function sends 'PDS/Set SBAS Config Request' (0x003B) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSSetSBASConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSSendNetworkInitiatedResponse + +DESCRIPTION: + The function sends 'PDS/Send Network Initiated Response Request' (0x003C) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSSendNetworkInitiatedResponse( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSInjectAbsoluteTime + +DESCRIPTION: + The function sends 'PDS/Inject Absolute Time Request' (0x003D) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSInjectAbsoluteTime( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSInjectEFSData + +DESCRIPTION: + The function sends 'PDS/Inject EFS Data Request' (0x003E) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSInjectEFSData( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSGetDPOConfig + +DESCRIPTION: + The function sends 'PDS/Get DPO Config Request' (0x003F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSGetDPOConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSSetDPOConfig + +DESCRIPTION: + The function sends 'PDS/Set DPO Config Request' (0x0040) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSSetDPOConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSGetODPConfig + +DESCRIPTION: + The function sends 'PDS/Get ODP Config Request' (0x0041) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSGetODPConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSSetODPConfig + +DESCRIPTION: + The function sends 'PDS/Set ODP Config Request' (0x0042) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSSetODPConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSCancelSinglePositionFix + +DESCRIPTION: + The function sends 'PDS/Cancel Single Position Fix Request' (0x0043) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSCancelSinglePositionFix( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSGetGPSState + +DESCRIPTION: + The function sends 'PDS/Get GPS State Request' (0x0044) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSGetGPSState( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSSetPPMEventReport + +DESCRIPTION: + The function sends 'PDS/Set PPM Event Report Request' (0x0045) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSSetPPMEventReport( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSSetSPIStreamingReport + +DESCRIPTION: + The function sends 'PDS/Set SPI Streaming Report Request' (0x0046) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSSetSPIStreamingReport( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSSetSPIStatus + +DESCRIPTION: + The function sends 'PDS/Set SPI Status Request' (0x0047) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSSetSPIStatus( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSSetPPMReportingState + +DESCRIPTION: + The function sends 'PDS/Set PPM Reporting State Request' (0x0048) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSSetPPMReportingState( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSForceReceiverOff + +DESCRIPTION: + The function sends 'PDS/Force Receiver Off Request' (0x0049) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSForceReceiverOff( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSGetPositionMethodsState + +DESCRIPTION: + The function sends 'PDS/Get Position Methods State Request' (0x0050) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSGetPositionMethodsState( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSSetPositionMethodsState + +DESCRIPTION: + The function sends 'PDS/Set Position Methods State Request' (0x0051) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSSetPositionMethodsState( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSInjectSensorData + +DESCRIPTION: + The function sends 'PDS/Inject Sensor Data Request' (0x0052) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSInjectSensorData( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSInjectTimeSyncData + +DESCRIPTION: + The function sends 'PDS/Inject Time Sync Data Request' (0x0053) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSInjectTimeSyncData( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSGetSensorConfig + +DESCRIPTION: + The function sends 'PDS/Get Sensor Config Request' (0x0054) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSGetSensorConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSSetSensorConfig + +DESCRIPTION: + The function sends 'PDS/Set Sensor Config Request' (0x0055) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSSetSensorConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSGetSensorNavigation + +DESCRIPTION: + The function sends 'PDS/Get Sensor Navigation Request' (0x0056) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSGetSensorNavigation( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSSetNavigationConfig + +DESCRIPTION: + The function sends 'PDS/Set Navigation Config Request' (0x0057) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSSetNavigationConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSSetWLANBlanking + +DESCRIPTION: + The function sends 'PDS/Set WLAN Blanking Request' (0x005A) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSSetWLANBlanking( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSSetSecurityChallengeReport + +DESCRIPTION: + The function sends 'PDS/Set Security Challenge Report Request' (0x005B) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSSetSecurityChallengeReport( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSSetSecurityChallenge + +DESCRIPTION: + The function sends 'PDS/Set Security Challenge Request' (0x005C) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSSetSecurityChallenge( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSGetSecurityEncryptionConfig + +DESCRIPTION: + The function sends 'PDS/Get Security Encryption Config Request' (0x005D) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSGetSecurityEncryptionConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSSetSecurityUpdateRate + +DESCRIPTION: + The function sends 'PDS/Set Security Update Rate Request' (0x005E) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSSetSecurityUpdateRate( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSSetCellDatabaseControl + +DESCRIPTION: + The function sends 'PDS/Set Cell Database Control Request' (0x005F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSSetCellDatabaseControl( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSInjectMotionData + +DESCRIPTION: + The function sends 'PDS/Inject Motion Data Request' (0x0061) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSInjectMotionData( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSSetGNSSEngineErrorRecoveryReport + +DESCRIPTION: + The function sends 'PDS/Set GNSS Engine Error Recovery Report Request' (0x0062) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSSetGNSSEngineErrorRecoveryReport( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSResetLocationService + +DESCRIPTION: + The function sends 'PDS/Reset Location Service Request' (0x0063) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSResetLocationService( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSInjectTestData + +DESCRIPTION: + The function sends 'PDS/Inject Test Data Request' (0x0064) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSInjectTestData( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSSetGNSSRFConfig + +DESCRIPTION: + The function sends 'PDS/Set GNSS RF Config Request' (0x0065) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSSetGNSSRFConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSInjectCourseOverGroundData + +DESCRIPTION: + The function sends 'PDS/Inject Course Over Ground Data Request' (0x0066) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSInjectCourseOverGroundData( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSInjectSUPLCertificate + +DESCRIPTION: + The function sends 'PDS/Inject SUPL Certificate Request' (0x0067) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSInjectSUPLCertificate( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSDeleteSUPLCertificate + +DESCRIPTION: + The function sends 'PDS/Delete SUPL Certificate Request' (0x0068) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSDeleteSUPLCertificate( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSGetIS801OverSUPLIndicator + +DESCRIPTION: + The function sends 'PDS/Get IS-801 Over SUPL Indicator Request' (0x0069) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSGetIS801OverSUPLIndicator( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSSetIS801OverSUPLIndicator + +DESCRIPTION: + The function sends 'PDS/Set IS-801 Over SUPL Indicator Request' (0x006A) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSSetIS801OverSUPLIndicator( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSGetSUPLHashAlgorithm + +DESCRIPTION: + The function sends 'PDS/Get SUPL Hash Algorithm Request' (0x006B) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSGetSUPLHashAlgorithm( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSSetSUPLHashAlgorithm + +DESCRIPTION: + The function sends 'PDS/Set SUPL Hash Algorithm Request' (0x006C) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSSetSUPLHashAlgorithm( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSGetSUPLMaximumVersion + +DESCRIPTION: + The function sends 'PDS/Get SUPL Maximum Version Request' (0x006D) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSGetSUPLMaximumVersion( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSSetSUPLMaximumVersion + +DESCRIPTION: + The function sends 'PDS/Set SUPL Maximum Version Request' (0x006E) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSSetSUPLMaximumVersion( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSGetSUPLSecurity + +DESCRIPTION: + The function sends 'PDS/Get SUPL Security Request' (0x006F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSGetSUPLSecurity( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSSetSUPLSecurity + +DESCRIPTION: + The function sends 'PDS/Set SUPL Security Request' (0x0070) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSSetSUPLSecurity( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSGetSUPLTLSVersion + +DESCRIPTION: + The function sends 'PDS/Get SUPL TLS Version Request' (0x0071) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSGetSUPLTLSVersion( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSSetSUPLTLSVersion + +DESCRIPTION: + The function sends 'PDS/Set SUPL TLS Version Request' (0x0072) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSSetSUPLTLSVersion( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSGetAGNSSPositioningModes + +DESCRIPTION: + The function sends 'PDS/Get AGNSS Positioning Modes Request' (0x0073) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSGetAGNSSPositioningModes( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSSetAGNSSPositioningModes + +DESCRIPTION: + The function sends 'PDS/Set AGNSS Positioning Modes Request' (0x0074) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSSetAGNSSPositioningModes( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSGetEmergencyProtocolConfig + +DESCRIPTION: + The function sends 'PDS/Get Emergency Protocol Config Request' (0x0075) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSGetEmergencyProtocolConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSSetEmergencyProtocolConfig + +DESCRIPTION: + The function sends 'PDS/Set Emergency Protocol Config Request' (0x0076) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSSetEmergencyProtocolConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSGetAPNProfiles + +DESCRIPTION: + The function sends 'PDS/Get APN Profiles Request' (0x0077) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSGetAPNProfiles( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSSetAPNProfiles + +DESCRIPTION: + The function sends 'PDS/Set APN Profiles Request' (0x0078) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSSetAPNProfiles( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSGetHomeSUPLAddress + +DESCRIPTION: + The function sends 'PDS/Get Home SUPL Address Request' (0x0079) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSGetHomeSUPLAddress( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSSetHomeSUPLAddress + +DESCRIPTION: + The function sends 'PDS/Set Home SUPL Address Request' (0x007A) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSSetHomeSUPLAddress( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSInjectVehicleSensorData + +DESCRIPTION: + The function sends 'PDS/Inject Vehicle Sensor Data Request' (0x007B) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSInjectVehicleSensorData( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDSInjectPedometerData + +DESCRIPTION: + The function sends 'PDS/Inject Pedometer Data Request' (0x007C) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSInjectPedometerData( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + AUTHStartEAPSession + +DESCRIPTION: + The function sends 'AUTH/Start EAP Session Request' (0x0020) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG AUTHStartEAPSession( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + AUTHSendEAPPacket + +DESCRIPTION: + The function sends 'AUTH/Send EAP Packet Request' (0x0021) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG AUTHSendEAPPacket( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + AUTHGetEAPSessionKeys + +DESCRIPTION: + The function sends 'AUTH/Get EAP Session Keys Request' (0x0023) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG AUTHGetEAPSessionKeys( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + AUTHEndEAPSession + +DESCRIPTION: + The function sends 'AUTH/End EAP Session Request' (0x0024) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG AUTHEndEAPSession( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + AUTHRunAKA + +DESCRIPTION: + The function sends 'AUTH/Run AKA Request' (0x0025) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG AUTHRunAKA( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + VoiceIndicationRegistration + +DESCRIPTION: + The function sends 'Voice/Indication Registration Request' (0x0003) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceIndicationRegistration( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + VoiceGetSupportedMessages + +DESCRIPTION: + The function sends 'Voice/Get Supported Messages Request' (0x001E) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceGetSupportedMessages( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + VoiceGetSupportedFields + +DESCRIPTION: + The function sends 'Voice/Get Supported Fields Request' (0x001F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceGetSupportedFields( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + VoiceCallOriginate + +DESCRIPTION: + The function sends 'Voice/Call Originate Request' (0x0020) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceCallOriginate( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + VoiceCallEnd + +DESCRIPTION: + The function sends 'Voice/Call End Request' (0x0021) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceCallEnd( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + VoiceCallAnswer + +DESCRIPTION: + The function sends 'Voice/Call Answer Request' (0x0022) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceCallAnswer( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + VoiceGetCallInfo + +DESCRIPTION: + The function sends 'Voice/Get Call Info Request' (0x0024) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceGetCallInfo( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + VoiceSendFlash + +DESCRIPTION: + The function sends 'Voice/Send Flash Request' (0x0027) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceSendFlash( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + VoiceBurstDTMF + +DESCRIPTION: + The function sends 'Voice/Burst DTMF Request' (0x0028) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceBurstDTMF( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + VoiceStartContinuousDTMF + +DESCRIPTION: + The function sends 'Voice/Start Continuous DTMF Request' (0x0029) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceStartContinuousDTMF( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + VoiceStopContinuousDTMF + +DESCRIPTION: + The function sends 'Voice/Stop Continuous DTMF Request' (0x002A) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceStopContinuousDTMF( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + VoiceSetPreferredPrivacy + +DESCRIPTION: + The function sends 'Voice/Set Preferred Privacy Request' (0x002C) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceSetPreferredPrivacy( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + VoiceGetAllCallInfo + +DESCRIPTION: + The function sends 'Voice/Get All Call Info Request' (0x002F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceGetAllCallInfo( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + VoiceManageCalls + +DESCRIPTION: + The function sends 'Voice/Manage Calls Request' (0x0031) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceManageCalls( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + VoiceSetSupplementaryService + +DESCRIPTION: + The function sends 'Voice/Set Supplementary Service Request' (0x0033) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceSetSupplementaryService( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + VoiceGetCallWaiting + +DESCRIPTION: + The function sends 'Voice/Get Call Waiting Request' (0x0034) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceGetCallWaiting( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + VoiceGetCallBarring + +DESCRIPTION: + The function sends 'Voice/Get Call Barring Request' (0x0035) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceGetCallBarring( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + VoiceGetCLIP + +DESCRIPTION: + The function sends 'Voice/Get CLIP Request' (0x0036) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceGetCLIP( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + VoiceGetCLIR + +DESCRIPTION: + The function sends 'Voice/Get CLIR Request' (0x0037) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceGetCLIR( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + VoiceGetCallForwarding + +DESCRIPTION: + The function sends 'Voice/Get Call Forwarding Request' (0x0038) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceGetCallForwarding( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + VoiceSetCallBarringPassword + +DESCRIPTION: + The function sends 'Voice/Set Call Barring Password Request' (0x0039) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceSetCallBarringPassword( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + VoiceInitiateUSSD + +DESCRIPTION: + The function sends 'Voice/Initiate USSD Request' (0x003A) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceInitiateUSSD( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + VoiceAnswerUSSD + +DESCRIPTION: + The function sends 'Voice/Answer USSD Request' (0x003B) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceAnswerUSSD( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + VoiceCancelUSSD + +DESCRIPTION: + The function sends 'Voice/Cancel USSD Request' (0x003C) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceCancelUSSD( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + VoiceSetConfig + +DESCRIPTION: + The function sends 'Voice/Set Config Request' (0x0040) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceSetConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + VoiceGetConfig + +DESCRIPTION: + The function sends 'Voice/Get Config Request' (0x0041) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceGetConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + VoiceAsyncInitiateUSSD + +DESCRIPTION: + The function sends 'Voice/Async Initiate USSD Request' (0x0043) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceAsyncInitiateUSSD( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + VoiceBindSubscription + +DESCRIPTION: + The function sends 'Voice/Bind Subscription Request' (0x0044) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceBindSubscription( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + VoiceALSSetLineSwitching + +DESCRIPTION: + The function sends 'Voice/ALS Set Line Switching Request' (0x0045) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceALSSetLineSwitching( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + VoiceALSSelectLine + +DESCRIPTION: + The function sends 'Voice/ALS Select Line Request' (0x0046) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceALSSelectLine( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + VoiceAOCResetACM + +DESCRIPTION: + The function sends 'Voice/AOC Reset ACM Request' (0x0047) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceAOCResetACM( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + VoiceAOCSetACMMaximum + +DESCRIPTION: + The function sends 'Voice/AOC Set ACM Maximum Request' (0x0048) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceAOCSetACMMaximum( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + VoiceAOCGetCallMeterInfo + +DESCRIPTION: + The function sends 'Voice/AOC Get Call Meter Info Request' (0x0049) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceAOCGetCallMeterInfo( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + VoiceGetCOLP + +DESCRIPTION: + The function sends 'Voice/Get COLP Request' (0x004B) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceGetCOLP( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + VoiceGetCOLR + +DESCRIPTION: + The function sends 'Voice/Get COLR Request' (0x004C) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceGetCOLR( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + VoiceGetCNAP + +DESCRIPTION: + The function sends 'Voice/Get CNAP Request' (0x004D) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceGetCNAP( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + VoiceManageIPCalls + +DESCRIPTION: + The function sends 'Voice/Manage IP Calls Request' (0x004E) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceManageIPCalls( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + VoiceALSGetLineSwitchingStatus + +DESCRIPTION: + The function sends 'Voice/ALS Get Line Switching Status Request' (0x004F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceALSGetLineSwitchingStatus( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + VoiceALSGetSelectedLine + +DESCRIPTION: + The function sends 'Voice/ALS Get Selected Line Request' (0x0050) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceALSGetSelectedLine( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + CAT2Reset + +DESCRIPTION: + The function sends 'CAT2/Reset Request' (0x0000) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CAT2Reset( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + CAT2SetEventReport + +DESCRIPTION: + The function sends 'CAT2/Set Event Report Request' (0x0001) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CAT2SetEventReport( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + CAT2GetSupportedMessages + +DESCRIPTION: + The function sends 'CAT2/Get Supported Messages Request' (0x001E) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CAT2GetSupportedMessages( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + CAT2GetSupportedFields + +DESCRIPTION: + The function sends 'CAT2/Get Supported Fields Request' (0x001F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CAT2GetSupportedFields( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + CAT2GetServiceState + +DESCRIPTION: + The function sends 'CAT2/Get Service State Request' (0x0020) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CAT2GetServiceState( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + CAT2SendTerminalResponse + +DESCRIPTION: + The function sends 'CAT2/Send Terminal Response Request' (0x0021) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CAT2SendTerminalResponse( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + CAT2EnvelopeCommand + +DESCRIPTION: + The function sends 'CAT2/Envelope Command Request' (0x0022) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CAT2EnvelopeCommand( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + CAT2GetEventReport + +DESCRIPTION: + The function sends 'CAT2/Get Event Report Request' (0x0023) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CAT2GetEventReport( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + CAT2SendDecodedTerminalResponse + +DESCRIPTION: + The function sends 'CAT2/Send Decoded Terminal Response Request' (0x0024) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CAT2SendDecodedTerminalResponse( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + CAT2SendDecodedEnvelopeCommand + +DESCRIPTION: + The function sends 'CAT2/Send Decoded Envelope Command Request' (0x0025) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CAT2SendDecodedEnvelopeCommand( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + CAT2EventConfirmation + +DESCRIPTION: + The function sends 'CAT2/Event Confirmation Request' (0x0026) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CAT2EventConfirmation( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + CAT2SCWSOpenChannel + +DESCRIPTION: + The function sends 'CAT2/SCWS Open Channel Request' (0x0027) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CAT2SCWSOpenChannel( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + CAT2SCWSCloseChannel + +DESCRIPTION: + The function sends 'CAT2/SCWS Close Channel Request' (0x0028) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CAT2SCWSCloseChannel( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + CAT2SCWSSendData + +DESCRIPTION: + The function sends 'CAT2/SCWS Send Data Request' (0x0029) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CAT2SCWSSendData( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + CAT2SCWSDataAvailable + +DESCRIPTION: + The function sends 'CAT2/SCWS Data Available Request' (0x002A) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CAT2SCWSDataAvailable( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + CAT2SCWSChannelStatus + +DESCRIPTION: + The function sends 'CAT2/SCWS Channel Status Request' (0x002B) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CAT2SCWSChannelStatus( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + CAT2GetTerminalProfile + +DESCRIPTION: + The function sends 'CAT2/Get Terminal Profile Request' (0x002C) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CAT2GetTerminalProfile( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + CAT2SetConfiguration + +DESCRIPTION: + The function sends 'CAT2/Set Configuration Request' (0x002D) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CAT2SetConfiguration( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + CAT2GetConfiguration + +DESCRIPTION: + The function sends 'CAT2/Get Configuration Request' (0x002E) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CAT2GetConfiguration( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + UIMReset + +DESCRIPTION: + The function sends 'UIM/Reset Request' (0x0000) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG UIMReset( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + UIMGetSupportedMessages + +DESCRIPTION: + The function sends 'UIM/Get Supported Messages Request' (0x001E) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG UIMGetSupportedMessages( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + UIMGetSupportedFields + +DESCRIPTION: + The function sends 'UIM/Get Supported Fields Request' (0x001F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG UIMGetSupportedFields( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + UIMReadTransparent + +DESCRIPTION: + The function sends 'UIM/Read Transparent Request' (0x0020) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG UIMReadTransparent( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + UIMReadRecord + +DESCRIPTION: + The function sends 'UIM/Read Record Request' (0x0021) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG UIMReadRecord( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + UIMWriteTransparent + +DESCRIPTION: + The function sends 'UIM/Write Transparent Request' (0x0022) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG UIMWriteTransparent( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + UIMWriteRecord + +DESCRIPTION: + The function sends 'UIM/Write Record Request' (0x0023) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG UIMWriteRecord( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + UIMGetFileAttributes + +DESCRIPTION: + The function sends 'UIM/Get File Attributes Request' (0x0024) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG UIMGetFileAttributes( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + UIMSetPINProtection + +DESCRIPTION: + The function sends 'UIM/Set PIN Protection Request' (0x0025) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG UIMSetPINProtection( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + UIMVerifyPIN + +DESCRIPTION: + The function sends 'UIM/Verify PIN Request' (0x0026) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG UIMVerifyPIN( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + UIMUnblockPIN + +DESCRIPTION: + The function sends 'UIM/Unblock PIN Request' (0x0027) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG UIMUnblockPIN( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + UIMChangePIN + +DESCRIPTION: + The function sends 'UIM/Change PIN Request' (0x0028) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG UIMChangePIN( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + UIMDepersonalization + +DESCRIPTION: + The function sends 'UIM/Depersonalization Request' (0x0029) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG UIMDepersonalization( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + UIMRefreshRegister + +DESCRIPTION: + The function sends 'UIM/Refresh Register Request' (0x002A) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG UIMRefreshRegister( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + UIMRefreshOK + +DESCRIPTION: + The function sends 'UIM/Refresh OK Request' (0x002B) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG UIMRefreshOK( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + UIMRefreshComplete + +DESCRIPTION: + The function sends 'UIM/Refresh Complete Request' (0x002C) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG UIMRefreshComplete( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + UIMGetLastRefreshEvent + +DESCRIPTION: + The function sends 'UIM/Get Last Refresh Event Request' (0x002D) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG UIMGetLastRefreshEvent( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + UIMEventRegistration + +DESCRIPTION: + The function sends 'UIM/Event Registration Request' (0x002E) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG UIMEventRegistration( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + UIMGetCardStatus + +DESCRIPTION: + The function sends 'UIM/Get Card Status Request' (0x002F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG UIMGetCardStatus( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + UIMPowerDown + +DESCRIPTION: + The function sends 'UIM/Power Down Request' (0x0030) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG UIMPowerDown( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + UIMPowerUp + +DESCRIPTION: + The function sends 'UIM/Power Up Request' (0x0031) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG UIMPowerUp( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + UIMAuthenticate + +DESCRIPTION: + The function sends 'UIM/Authenticate Request' (0x0034) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG UIMAuthenticate( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + UIMCloseSession + +DESCRIPTION: + The function sends 'UIM/Close Session Request' (0x0035) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG UIMCloseSession( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + UIMGetServiceStatus + +DESCRIPTION: + The function sends 'UIM/Get Service Status Request' (0x0036) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG UIMGetServiceStatus( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + UIMSetServiceStatus + +DESCRIPTION: + The function sends 'UIM/Set Service Status Request' (0x0037) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG UIMSetServiceStatus( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + UIMChangeProvisioningSession + +DESCRIPTION: + The function sends 'UIM/Change Provisioning Session Request' (0x0038) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG UIMChangeProvisioningSession( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + UIMGetLabel + +DESCRIPTION: + The function sends 'UIM/Get Label Request' (0x0039) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG UIMGetLabel( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + UIMGetConfiguration + +DESCRIPTION: + The function sends 'UIM/Get Configuration Request' (0x003A) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG UIMGetConfiguration( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + UIMSendADPU + +DESCRIPTION: + The function sends 'UIM/Send ADPU Request' (0x003B) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG UIMSendADPU( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + UIMSAPConnection + +DESCRIPTION: + The function sends 'UIM/SAP Connection Request' (0x003C) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG UIMSAPConnection( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + UIMSAPRequest + +DESCRIPTION: + The function sends 'UIM/SAP Request Request' (0x003D) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG UIMSAPRequest( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + UIMLogicalChannel + +DESCRIPTION: + The function sends 'UIM/Logical Channel Request' (0x003F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG UIMLogicalChannel( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + UIMSubscriptionOK + +DESCRIPTION: + The function sends 'UIM/Subscription OK Request' (0x0040) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG UIMSubscriptionOK( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + UIMGetATR + +DESCRIPTION: + The function sends 'UIM/Get ATR Request' (0x0041) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG UIMGetATR( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + UIMOpenLogicalChannel + +DESCRIPTION: + The function sends 'UIM/Open Logical Channel Request' (0x0042) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG UIMOpenLogicalChannel( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + UIMRefreshRegisterAll + +DESCRIPTION: + The function sends 'UIM/Refresh Register All Request' (0x0044) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG UIMRefreshRegisterAll( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + UIMSetFileStatus + +DESCRIPTION: + The function sends 'UIM/Set File Status Request' (0x0045) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG UIMSetFileStatus( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PBMSetIndicationRegistrationState + +DESCRIPTION: + The function sends 'PBM/Set Indication Registration State Request' (0x0001) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PBMSetIndicationRegistrationState( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PBMGetCapabilities + +DESCRIPTION: + The function sends 'PBM/Get Capabilities Request' (0x0002) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PBMGetCapabilities( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PBMGetAllCapabilities + +DESCRIPTION: + The function sends 'PBM/Get All Capabilities Request' (0x0003) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PBMGetAllCapabilities( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PBMReadRecords + +DESCRIPTION: + The function sends 'PBM/Read Records Request' (0x0004) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PBMReadRecords( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PBMWriteRecord + +DESCRIPTION: + The function sends 'PBM/Write Record Request' (0x0005) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PBMWriteRecord( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PBMDeleteRecord + +DESCRIPTION: + The function sends 'PBM/Delete Record Request' (0x0006) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PBMDeleteRecord( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PBMDeleteAllRecords + +DESCRIPTION: + The function sends 'PBM/Delete All Records Request' (0x0007) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PBMDeleteAllRecords( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PBMSearchRecords + +DESCRIPTION: + The function sends 'PBM/Search Records Request' (0x0008) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PBMSearchRecords( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PBMGetEmergencyList + +DESCRIPTION: + The function sends 'PBM/Get Emergency List Request' (0x000E) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PBMGetEmergencyList( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PBMGetAllGroups + +DESCRIPTION: + The function sends 'PBM/Get All Groups Request' (0x000F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PBMGetAllGroups( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PBMSetGroupInfo + +DESCRIPTION: + The function sends 'PBM/Set Group Info Request' (0x0010) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PBMSetGroupInfo( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PBMGetState + +DESCRIPTION: + The function sends 'PBM/Get State Request' (0x0011) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PBMGetState( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PBMReadAllHiddenRecords + +DESCRIPTION: + The function sends 'PBM/Read All Hidden Records Request' (0x0012) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PBMReadAllHiddenRecords( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PBMGetNextEmptyRecordID + +DESCRIPTION: + The function sends 'PBM/Get Next Empty Record ID Request' (0x0014) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PBMGetNextEmptyRecordID( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PBMGetNextRecordID + +DESCRIPTION: + The function sends 'PBM/Get Next Record ID Request' (0x0015) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PBMGetNextRecordID( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PBMGetAASList + +DESCRIPTION: + The function sends 'PBM/Get AAS List Request' (0x0016) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PBMGetAASList( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PBMSetAAS + +DESCRIPTION: + The function sends 'PBM/Set AAS Request' (0x0017) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PBMSetAAS( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PBMBindSubscription + +DESCRIPTION: + The function sends 'PBM/Bind Subscription Request' (0x001A) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PBMBindSubscription( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PBMGetSubscription + +DESCRIPTION: + The function sends 'PBM/Get Subscription Request' (0x001B) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PBMGetSubscription( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PBMSetCapabilitiesReadOperation + +DESCRIPTION: + The function sends 'PBM/Set Capabilities Read Operation Request' (0x001C) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PBMSetCapabilitiesReadOperation( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PBMExtendedReadRecords + +DESCRIPTION: + The function sends 'PBM/Extended Read Records Request' (0x001D) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PBMExtendedReadRecords( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PBMExtendedWriteRecord + +DESCRIPTION: + The function sends 'PBM/Extended Write Record Request' (0x001E) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PBMExtendedWriteRecord( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PBMExtendedSearchRecords + +DESCRIPTION: + The function sends 'PBM/Extended Search Records Request' (0x001F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PBMExtendedSearchRecords( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PBMExtendedReadAllHiddenRecords + +DESCRIPTION: + The function sends 'PBM/Extended Read All Hidden Records Request' (0x0020) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PBMExtendedReadAllHiddenRecords( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PBMReadUndecodedRecords + +DESCRIPTION: + The function sends 'PBM/Read Undecoded Records Request' (0x0022) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PBMReadUndecodedRecords( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + LOCGetSupportedMessages + +DESCRIPTION: + The function sends 'LOC/Get Supported Messages Request' (0x001E) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCGetSupportedMessages( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + LOCGetSupportedFields + +DESCRIPTION: + The function sends 'LOC/Get Supported Fields Request' (0x001F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCGetSupportedFields( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + LOCClientRevision + +DESCRIPTION: + The function sends 'LOC/Client Revision Request' (0x0020) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCClientRevision( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + LOCRegisterEvents + +DESCRIPTION: + The function sends 'LOC/Register Events Request' (0x0021) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCRegisterEvents( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + LOCStart + +DESCRIPTION: + The function sends 'LOC/Start Request' (0x0022) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCStart( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + LOCStop + +DESCRIPTION: + The function sends 'LOC/Stop Request' (0x0023) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCStop( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + LOCGetServiceRevision + +DESCRIPTION: + The function sends 'LOC/Get Service Revision Request' (0x0032) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCGetServiceRevision( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + LOCGetFixCriteria + +DESCRIPTION: + The function sends 'LOC/Get Fix Criteria Request' (0x0033) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCGetFixCriteria( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + LOCProvideNIUserResponse + +DESCRIPTION: + The function sends 'LOC/Provide NI User Response Request' (0x0034) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCProvideNIUserResponse( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + LOCInjectPredictedOrbitsData + +DESCRIPTION: + The function sends 'LOC/Inject Predicted Orbits Data Request' (0x0035) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCInjectPredictedOrbitsData( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + LOCGetPredictedOrbitsDataSource + +DESCRIPTION: + The function sends 'LOC/Get Predicted Orbits Data Source Request' (0x0036) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCGetPredictedOrbitsDataSource( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + LOCGetPredictedOrbitsDataValidity + +DESCRIPTION: + The function sends 'LOC/Get Predicted Orbits Data Validity Request' (0x0037) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCGetPredictedOrbitsDataValidity( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + LOCInjectUTCTime + +DESCRIPTION: + The function sends 'LOC/Inject UTC Time Request' (0x0038) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCInjectUTCTime( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + LOCInjectPosition + +DESCRIPTION: + The function sends 'LOC/Inject Position Request' (0x0039) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCInjectPosition( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + LOCSetEngineLock + +DESCRIPTION: + The function sends 'LOC/Set Engine Lock Request' (0x003A) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCSetEngineLock( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + LOCGetEngineLock + +DESCRIPTION: + The function sends 'LOC/Get Engine Lock Request' (0x003B) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCGetEngineLock( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + LOCSetSBASConfig + +DESCRIPTION: + The function sends 'LOC/Set SBAS Config Request' (0x003C) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCSetSBASConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + LOCGetSBASConfig + +DESCRIPTION: + The function sends 'LOC/Get SBAS Config Request' (0x003D) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCGetSBASConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + LOCSetNMEATypes + +DESCRIPTION: + The function sends 'LOC/Set NMEA Types Request' (0x003E) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCSetNMEATypes( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + LOCGetNMEATypes + +DESCRIPTION: + The function sends 'LOC/Get NMEA Types Request' (0x003F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCGetNMEATypes( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + LOCSetLowPowerMode + +DESCRIPTION: + The function sends 'LOC/Set Low Power Mode Request' (0x0040) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCSetLowPowerMode( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + LOCGetLowPowerMode + +DESCRIPTION: + The function sends 'LOC/Get Low Power Mode Request' (0x0041) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCGetLowPowerMode( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + LOCSetLocationServer + +DESCRIPTION: + The function sends 'LOC/Set Location Server Request' (0x0042) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCSetLocationServer( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + LOCGetLocationServer + +DESCRIPTION: + The function sends 'LOC/Get Location Server Request' (0x0043) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCGetLocationServer( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + LOCDeleteAssistData + +DESCRIPTION: + The function sends 'LOC/Delete Assist Data Request' (0x0044) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCDeleteAssistData( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + LOCSetXTRATSessionControl + +DESCRIPTION: + The function sends 'LOC/Set XTRA-T Session Control Request' (0x0045) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCSetXTRATSessionControl( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + LOC + +DESCRIPTION: + The function sends 'LOC' (0x0046) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOC( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + LOCInjectWiFiPosition + +DESCRIPTION: + The function sends 'LOC/Inject Wi-Fi Position Request' (0x0047) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCInjectWiFiPosition( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + LOCProvideWiFiStatus + +DESCRIPTION: + The function sends 'LOC/Provide Wi-Fi Status Request' (0x0048) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCProvideWiFiStatus( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + LOCGetRegisteredEvents + +DESCRIPTION: + The function sends 'LOC/Get Registered Events Request' (0x0049) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCGetRegisteredEvents( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + LOCSetOperationMode + +DESCRIPTION: + The function sends 'LOC/Set Operation Mode Request' (0x004A) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCSetOperationMode( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + LOCGetOperationMode + +DESCRIPTION: + The function sends 'LOC/Get Operation Mode Request' (0x004B) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCGetOperationMode( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + LOCSetSPIStatus + +DESCRIPTION: + The function sends 'LOC/Set SPI Status Request' (0x004C) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCSetSPIStatus( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + LOCInjectSensorData + +DESCRIPTION: + The function sends 'LOC/Inject Sensor Data Request' (0x004D) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCInjectSensorData( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + LOCInjectTimeSyncData + +DESCRIPTION: + The function sends 'LOC/Inject Time Sync Data Request' (0x004E) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCInjectTimeSyncData( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + LOCSetCradleMountConfig + +DESCRIPTION: + The function sends 'LOC/Set Cradle Mount Config Request' (0x004F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCSetCradleMountConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + LOCGetCradleMountConfig + +DESCRIPTION: + The function sends 'LOC/Get Cradle Mount Config Request' (0x0050) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCGetCradleMountConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + LOCSetExternalPowerConfig + +DESCRIPTION: + The function sends 'LOC/Set External Power Config Request' (0x0051) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCSetExternalPowerConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + LOCGetExternalPowerConfig + +DESCRIPTION: + The function sends 'LOC/Get External Power Config Request' (0x0052) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCGetExternalPowerConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + LOCProvideConnectionStatus + +DESCRIPTION: + The function sends 'LOC/Provide Connection Status Request' (0x0053) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCProvideConnectionStatus( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + LOCSetProtocolConfigParameters + +DESCRIPTION: + The function sends 'LOC/Set Protocol Config Parameters Request' (0x0054) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCSetProtocolConfigParameters( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + LOCGetProtocolConfigParameters + +DESCRIPTION: + The function sends 'LOC/Get Protocol Config Parameters Request' (0x0055) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCGetProtocolConfigParameters( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + LOCSetSensorControlConfig + +DESCRIPTION: + The function sends 'LOC/Set Sensor Control Config Request' (0x0056) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCSetSensorControlConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + LOCGetSensorControlConfig + +DESCRIPTION: + The function sends 'LOC/Get Sensor Control Config Request' (0x0057) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCGetSensorControlConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + LOCSetSensorProperties + +DESCRIPTION: + The function sends 'LOC/Set Sensor Properties Request' (0x0058) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCSetSensorProperties( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + LOCGetSensorProperties + +DESCRIPTION: + The function sends 'LOC/Get Sensor Properties Request' (0x0059) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCGetSensorProperties( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + LOCSetSensorPerformanceConfig + +DESCRIPTION: + The function sends 'LOC/Set Sensor Performance Config Request' (0x005A) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCSetSensorPerformanceConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + LOCGetSensorPerformanceConfig + +DESCRIPTION: + The function sends 'LOC/Get Sensor Performance Config Request' (0x005B) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCGetSensorPerformanceConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + LOCInjectSUPLCertificate + +DESCRIPTION: + The function sends 'LOC/Inject SUPL Certificate Request' (0x005C) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCInjectSUPLCertificate( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + LOCDeleteSUPLCertificate + +DESCRIPTION: + The function sends 'LOC/Delete SUPL Certificate Request' (0x005D) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCDeleteSUPLCertificate( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + LOCSetPositionEngineConfig + +DESCRIPTION: + The function sends 'LOC/Set Position Engine Config Request' (0x005E) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCSetPositionEngineConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + LOCGetPositionEngineConfig + +DESCRIPTION: + The function sends 'LOC/Get Position Engine Config Request' (0x005F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCGetPositionEngineConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + LOCAddCircularGeofence + +DESCRIPTION: + The function sends 'LOC/Add Circular Geofence Request' (0x0063) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCAddCircularGeofence( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + LOCDeleteGeofence + +DESCRIPTION: + The function sends 'LOC/Delete Geofence Request' (0x0064) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCDeleteGeofence( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + LOCQueryGeofence + +DESCRIPTION: + The function sends 'LOC/Query Geofence Request' (0x0065) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCQueryGeofence( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + LOCEditGeofence + +DESCRIPTION: + The function sends 'LOC/Edit Geofence Request' (0x0066) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCEditGeofence( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + LOCGetBestAvailablePosition + +DESCRIPTION: + The function sends 'LOC/Get Best Available Position Request' (0x0067) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCGetBestAvailablePosition( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + LOCInjectMotionData + +DESCRIPTION: + The function sends 'LOC/Inject Motion Data Request' (0x0068) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCInjectMotionData( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + LOCGetNIGeofenceIDList + +DESCRIPTION: + The function sends 'LOC/Get NI Geofence ID List Request' (0x0069) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCGetNIGeofenceIDList( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + LOCInjectGSMCellInfo + +DESCRIPTION: + The function sends 'LOC/Inject GSM Cell Info Request' (0x006A) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCInjectGSMCellInfo( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + LOCInjectNetworkInitiatedMessage + +DESCRIPTION: + The function sends 'LOC/Inject Network Initiated Message Request' (0x006B) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCInjectNetworkInitiatedMessage( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + LOCNotifyWWANOutOfService + +DESCRIPTION: + The function sends 'LOC/Notify WWAN Out Of Service Request' (0x006C) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCNotifyWWANOutOfService( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + LOCInjectPedometerData + +DESCRIPTION: + The function sends 'LOC/Inject Pedometer Data Request' (0x006F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCInjectPedometerData( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + LOCInjectWCDMACellInfo + +DESCRIPTION: + The function sends 'LOC/Inject WCDMA Cell Info Request' (0x0070) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCInjectWCDMACellInfo( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + LOCInjectTDSCDMACellInfo + +DESCRIPTION: + The function sends 'LOC/Inject TD-SCDMA Cell Info Request' (0x0071) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCInjectTDSCDMACellInfo( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + LOCInjectSubscriberID + +DESCRIPTION: + The function sends 'LOC/Inject Subscriber ID Request' (0x0072) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCInjectSubscriberID( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDAGetSupportedMessages + +DESCRIPTION: + The function sends 'WDA/Get Supported Messages Request' (0x001E) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDAGetSupportedMessages( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDAGetSupportedFields + +DESCRIPTION: + The function sends 'WDA/Get Supported Fields Request' (0x001F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDAGetSupportedFields( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDASetDataFormat + +DESCRIPTION: + The function sends 'WDA/Set Data Format Request' (0x0020) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDASetDataFormat( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDAGetDataFormat + +DESCRIPTION: + The function sends 'WDA/Get Data Format Request' (0x0021) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDAGetDataFormat( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDAEnablePacketFilter + +DESCRIPTION: + The function sends 'WDA/Enable Packet Filter Request' (0x0022) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDAEnablePacketFilter( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDADisablePacketFilter + +DESCRIPTION: + The function sends 'WDA/Disable Packet Filter Request' (0x0023) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDADisablePacketFilter( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDAGetPacketFilterState + +DESCRIPTION: + The function sends 'WDA/Get Packet Filter State Request' (0x0024) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDAGetPacketFilterState( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDAAddPacketFilterRule + +DESCRIPTION: + The function sends 'WDA/Add Packet Filter Rule Request' (0x0025) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDAAddPacketFilterRule( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDADeletePacketFilterRule + +DESCRIPTION: + The function sends 'WDA/Delete Packet Filter Rule Request' (0x0026) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDADeletePacketFilterRule( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDAGetPacketFilterRuleHandles + +DESCRIPTION: + The function sends 'WDA/Get Packet Filter Rule Handles Request' (0x0027) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDAGetPacketFilterRuleHandles( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDAGetPacketFilterRule + +DESCRIPTION: + The function sends 'WDA/Get Packet Filter Rule Request' (0x0028) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDAGetPacketFilterRule( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDASetLoopbackState + +DESCRIPTION: + The function sends 'WDA/Set Loopback State Request' (0x0029) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDASetLoopbackState( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + WDAGetLoopbackState + +DESCRIPTION: + The function sends 'WDA/Get Loopback State Request' (0x002A) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDAGetLoopbackState( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + QCMAPEnable + +DESCRIPTION: + The function sends 'QCMAP/Enable Request' (0x0020) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG QCMAPEnable( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + QCMAPDisable + +DESCRIPTION: + The function sends 'QCMAP/Disable Request' (0x0021) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG QCMAPDisable( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + QCMAPBringUpWWAN + +DESCRIPTION: + The function sends 'QCMAP/Bring Up WWAN Request' (0x0022) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG QCMAPBringUpWWAN( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + QCMAPTearDownWWAN + +DESCRIPTION: + The function sends 'QCMAP/Tear Down WWAN Request' (0x0023) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG QCMAPTearDownWWAN( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + QCMAPGetWWANStatus + +DESCRIPTION: + The function sends 'QCMAP/Get WWAN Status Request' (0x0024) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG QCMAPGetWWANStatus( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + QCMAPGetIPSecVPNPassthrough + +DESCRIPTION: + The function sends 'QCMAP/Get IPSec VPN Passthrough Request' (0x0025) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG QCMAPGetIPSecVPNPassthrough( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + QCMAPSetIPSecVPNPassthrough + +DESCRIPTION: + The function sends 'QCMAP/Set IPSec VPN Passthrough Request' (0x0026) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG QCMAPSetIPSecVPNPassthrough( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + QCMAPGetPPTPVPNPassthrough + +DESCRIPTION: + The function sends 'QCMAP/Get PPTP VPN Passthrough Request' (0x0027) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG QCMAPGetPPTPVPNPassthrough( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + QCMAPSetPPTPVPNPassthrough + +DESCRIPTION: + The function sends 'QCMAP/Set PPTP VPN Passthrough Request' (0x0028) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG QCMAPSetPPTPVPNPassthrough( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + QCMAPGetL2TPVPNPassthrough + +DESCRIPTION: + The function sends 'QCMAP/Get L2TP VPN Passthrough Request' (0x0029) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG QCMAPGetL2TPVPNPassthrough( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + QCMAPSetL2TPVPNPassthrough + +DESCRIPTION: + The function sends 'QCMAP/Set L2TP VPN Passthrough Request' (0x002A) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG QCMAPSetL2TPVPNPassthrough( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + QCMAPGetDynamicNATEntryTimeout + +DESCRIPTION: + The function sends 'QCMAP/Get Dynamic NAT Entry Timeout Request' (0x002B) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG QCMAPGetDynamicNATEntryTimeout( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + QCMAPSetDynamicNATEntryTimeout + +DESCRIPTION: + The function sends 'QCMAP/Set Dynamic NAT Entry Timeout Request' (0x002C) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG QCMAPSetDynamicNATEntryTimeout( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + QCMAPAddStaticNATEntry + +DESCRIPTION: + The function sends 'QCMAP/Add Static NAT Entry Request' (0x002D) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG QCMAPAddStaticNATEntry( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + QCMAPDeleteStaticNATEntry + +DESCRIPTION: + The function sends 'QCMAP/Delete Static NAT Entry Request' (0x002E) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG QCMAPDeleteStaticNATEntry( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + QCMAPGetStaticNATEntries + +DESCRIPTION: + The function sends 'QCMAP/Get Static NAT Entries Request' (0x002F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG QCMAPGetStaticNATEntries( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + QCMAPSetDMZ + +DESCRIPTION: + The function sends 'QCMAP/Set DMZ Request' (0x0030) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG QCMAPSetDMZ( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + QCMAPDeleteDMZ + +DESCRIPTION: + The function sends 'QCMAP/Delete DMZ Request' (0x0031) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG QCMAPDeleteDMZ( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + QCMAPGetDMZ + +DESCRIPTION: + The function sends 'QCMAP/Get DMZ Request' (0x0032) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG QCMAPGetDMZ( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + QCMAPGetWWANConfig + +DESCRIPTION: + The function sends 'QCMAP/Get WWAN Config Request' (0x0033) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG QCMAPGetWWANConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + QCMAPEnableFirewallSetting + +DESCRIPTION: + The function sends 'QCMAP/Enable Firewall Setting Request' (0x0034) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG QCMAPEnableFirewallSetting( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + QCMAPGetFirewallSetting + +DESCRIPTION: + The function sends 'QCMAP/Get Firewall Setting Request' (0x0035) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG QCMAPGetFirewallSetting( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + QCMAPDisableFirewallSetting + +DESCRIPTION: + The function sends 'QCMAP/Disable Firewall Setting Request' (0x0036) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG QCMAPDisableFirewallSetting( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + QCMAPAddFirewallConfig + +DESCRIPTION: + The function sends 'QCMAP/Add Firewall Config Request' (0x0037) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG QCMAPAddFirewallConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + QCMAPGetFirewallConfig + +DESCRIPTION: + The function sends 'QCMAP/Get Firewall Config Request' (0x0038) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG QCMAPGetFirewallConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + QCMAPDeleteFirewallConfig + +DESCRIPTION: + The function sends 'QCMAP/Delete Firewall Config Request' (0x0039) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG QCMAPDeleteFirewallConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + QCMAPWWANStatusIndicationRegister + +DESCRIPTION: + The function sends 'QCMAP/WWAN Status Indication Register Request' (0x003A) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG QCMAPWWANStatusIndicationRegister( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + QCMAPStationModeEnable + +DESCRIPTION: + The function sends 'QCMAP/Station Mode Enable Request' (0x003B) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG QCMAPStationModeEnable( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + QCMAPStationModeDisable + +DESCRIPTION: + The function sends 'QCMAP/Station Mode Disable Request' (0x003C) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG QCMAPStationModeDisable( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + QCMAPGetStationMode + +DESCRIPTION: + The function sends 'QCMAP/Get Station Mode Request' (0x003D) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG QCMAPGetStationMode( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + QCMAPAddExtendedFirewallConfig + +DESCRIPTION: + The function sends 'QCMAP/Add Extended Firewall Config Request' (0x003F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG QCMAPAddExtendedFirewallConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + QCMAPGetExtendedFirewallConfig + +DESCRIPTION: + The function sends 'QCMAP/Get Extended Firewall Config Request' (0x0040) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG QCMAPGetExtendedFirewallConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + QCMAPGetFirewallHandles + +DESCRIPTION: + The function sends 'QCMAP/Get Firewall Handles Request' (0x0041) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG QCMAPGetFirewallHandles( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + QCMAPChangeNATType + +DESCRIPTION: + The function sends 'QCMAP/Change NAT Type Request' (0x0042) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG QCMAPChangeNATType( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + QCMAPGetNATType + +DESCRIPTION: + The function sends 'QCMAP/Get NAT Type Request' (0x0043) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG QCMAPGetNATType( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDCReset + +DESCRIPTION: + The function sends 'PDC/Reset Request' (0x0000) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDCReset( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDCRegisterForIndications + +DESCRIPTION: + The function sends 'PDC/Register For Indications Request' (0x0020) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDCRegisterForIndications( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDCGetSelectedConfig + +DESCRIPTION: + The function sends 'PDC/Get Selected Config Request' (0x0022) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDCGetSelectedConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDCSetSelectedConfig + +DESCRIPTION: + The function sends 'PDC/Set Selected Config Request' (0x0023) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDCSetSelectedConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDCListConfigs + +DESCRIPTION: + The function sends 'PDC/List Configs Request' (0x0024) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDCListConfigs( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDCDeleteConfig + +DESCRIPTION: + The function sends 'PDC/Delete Config Request' (0x0025) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDCDeleteConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDCLoadConfig + +DESCRIPTION: + The function sends 'PDC/Load Config Request' (0x0026) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDCLoadConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDCActivateConfig + +DESCRIPTION: + The function sends 'PDC/Activate Config Request' (0x0027) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDCActivateConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDCGetConfigInfo + +DESCRIPTION: + The function sends 'PDC/Get Config Info Request' (0x0028) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDCGetConfigInfo( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDCGetConfigLimits + +DESCRIPTION: + The function sends 'PDC/Get Config Limits Request' (0x0029) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDCGetConfigLimits( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDCGetDefaultConfigInfo + +DESCRIPTION: + The function sends 'PDC/Get Default Config Info Request' (0x002A) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDCGetDefaultConfigInfo( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + PDCDeactivateConfig + +DESCRIPTION: + The function sends 'PDC/Deactivate Config Request' (0x002B) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDCDeactivateConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + RFRPESetRFMScenario + +DESCRIPTION: + The function sends 'RFRPE/Set RFM Scenario Request' (0x0020) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG RFRPESetRFMScenario( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + RFRPEGetRFMScenario + +DESCRIPTION: + The function sends 'RFRPE/Get RFM Scenario Request' (0x0021) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG RFRPEGetRFMScenario( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + RFRPEGetProvisionedTableRevision + +DESCRIPTION: + The function sends 'RFRPE/Get Provisioned Table Revision Request' (0x0022) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG RFRPEGetProvisionedTableRevision( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + CATReset + +DESCRIPTION: + The function sends 'CAT/Reset Request' (0x0000) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CATReset( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + CATSetEventReport + +DESCRIPTION: + The function sends 'CAT/Set Event Report Request' (0x0001) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CATSetEventReport( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + CATGetSupportedMessages + +DESCRIPTION: + The function sends 'CAT/Get Supported Messages Request' (0x001E) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CATGetSupportedMessages( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + CATGetSupportedFields + +DESCRIPTION: + The function sends 'CAT/Get Supported Fields Request' (0x001F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CATGetSupportedFields( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + CATGetServiceState + +DESCRIPTION: + The function sends 'CAT/Get Service State Request' (0x0020) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CATGetServiceState( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + CATSendTerminalResponse + +DESCRIPTION: + The function sends 'CAT/Send Terminal Response Request' (0x0021) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CATSendTerminalResponse( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + CATEnvelopeCommand + +DESCRIPTION: + The function sends 'CAT/Envelope Command Request' (0x0022) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CATEnvelopeCommand( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + CATGetEventReport + +DESCRIPTION: + The function sends 'CAT/Get Event Report Request' (0x0023) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CATGetEventReport( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + CATSendDecodedTerminalResponse + +DESCRIPTION: + The function sends 'CAT/Send Decoded Terminal Response Request' (0x0024) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CATSendDecodedTerminalResponse( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + CATSendDecodedEnvelopeCommand + +DESCRIPTION: + The function sends 'CAT/Send Decoded Envelope Command Request' (0x0025) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CATSendDecodedEnvelopeCommand( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + CATEventConfirmation + +DESCRIPTION: + The function sends 'CAT/Event Confirmation Request' (0x0026) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CATEventConfirmation( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + CATSCWSOpenChannel + +DESCRIPTION: + The function sends 'CAT/SCWS Open Channel Request' (0x0027) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CATSCWSOpenChannel( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + CATSCWSCloseChannel + +DESCRIPTION: + The function sends 'CAT/SCWS Close Channel Request' (0x0028) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CATSCWSCloseChannel( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + CATSCWSSendData + +DESCRIPTION: + The function sends 'CAT/SCWS Send Data Request' (0x0029) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CATSCWSSendData( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + CATSCWSDataAvailable + +DESCRIPTION: + The function sends 'CAT/SCWS Data Available Request' (0x002A) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CATSCWSDataAvailable( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + CATSCWSChannelStatus + +DESCRIPTION: + The function sends 'CAT/SCWS Channel Status Request' (0x002B) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CATSCWSChannelStatus( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + CATGetTerminalProfile + +DESCRIPTION: + The function sends 'CAT/Get Terminal Profile Request' (0x002C) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CATGetTerminalProfile( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + CATSetConfiguration + +DESCRIPTION: + The function sends 'CAT/Set Configuration Request' (0x002D) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CATSetConfiguration( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + CATGetConfiguration + +DESCRIPTION: + The function sends 'CAT/Get Configuration Request' (0x002E) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CATGetConfiguration( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + RMSReset + +DESCRIPTION: + The function sends 'RMS/Reset Request' (0x0000) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG RMSReset( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + RMSGetSMSWake + +DESCRIPTION: + The function sends 'RMS/Get SMS Wake Request' (0x0020) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG RMSGetSMSWake( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + RMSSetSMSWake + +DESCRIPTION: + The function sends 'RMS/Set SMS Wake Request' (0x0021) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG RMSSetSMSWake( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + OMAReset + +DESCRIPTION: + The function sends 'OMA/Reset Request' (0x0000) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG OMAReset( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + OMASetEventReport + +DESCRIPTION: + The function sends 'OMA/Set Event Report Request' (0x0001) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG OMASetEventReport( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + OMAStartSession + +DESCRIPTION: + The function sends 'OMA/Start Session Request' (0x0020) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG OMAStartSession( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + OMACancelSession + +DESCRIPTION: + The function sends 'OMA/Cancel Session Request' (0x0021) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG OMACancelSession( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + OMAGetSessionInfo + +DESCRIPTION: + The function sends 'OMA/Get Session Info Request' (0x0022) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG OMAGetSessionInfo( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + OMASendSelection + +DESCRIPTION: + The function sends 'OMA/Send Selection Request' (0x0023) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG OMASendSelection( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + OMAGetFeatures + +DESCRIPTION: + The function sends 'OMA/Get Features Request' (0x0024) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG OMAGetFeatures( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================== +METHOD: + OMASetFeatures + +DESCRIPTION: + The function sends 'OMA/Set Features Request' (0x0025) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG OMASetFeatures( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); diff --git a/gobi-api/GobiAPI_2013-07-31-1347/GobiConnectionMgmt/GobiConnectionMgmtAPIEnums.h b/gobi-api/GobiAPI_2013-07-31-1347/GobiConnectionMgmt/GobiConnectionMgmtAPIEnums.h new file mode 100644 index 0000000..8f799a3 --- /dev/null +++ b/gobi-api/GobiAPI_2013-07-31-1347/GobiConnectionMgmt/GobiConnectionMgmtAPIEnums.h @@ -0,0 +1,7083 @@ +/*=========================================================================== +FILE: + GobiConnectionMgmtAPIEnums.h + +DESCRIPTION: + Declaration of the Gobi API enumerations + +Copyright (c) 2013, The Linux Foundation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +==========================================================================*/ + +//--------------------------------------------------------------------------- +// Pragmas +//--------------------------------------------------------------------------- +#pragma once + +//--------------------------------------------------------------------------- +// Definitions +//--------------------------------------------------------------------------- + +// Gobi API error code +enum eGobiError +{ + eGOBI_ERR_ENUM_BEGIN = -1, + + eGOBI_ERR_NONE, // 00 Success + eGOBI_ERR_GENERAL, // 01 General error + eGOBI_ERR_INTERNAL, // 02 Internal error + eGOBI_ERR_MEMORY, // 03 Memory error + eGOBI_ERR_INVALID_ARG, // 04 Invalid argument + eGOBI_ERR_BUFFER_SZ, // 05 Buffer too small + eGOBI_ERR_NO_DEVICE, // 06 Unable to detect device + eGOBI_ERR_INVALID_DEVID, // 07 Invalid device ID + eGOBI_ERR_NO_CONNECTION, // 08 No connection to device + eGOBI_ERR_IFACE, // 09 Unable to obtain required interace + eGOBI_ERR_CONNECT, // 10 Unable to connect to interface + eGOBI_ERR_REQ_SCHEDULE, // 11 Unable to schedule request + eGOBI_ERR_REQUEST, // 12 Error sending request + eGOBI_ERR_RESPONSE, // 13 Error receiving response + eGOBI_ERR_REQUEST_TO, // 14 Timeout while sending request + eGOBI_ERR_RESPONSE_TO, // 15 Timeout while receiving response + eGOBI_ERR_MALFORMED_RSP, // 16 Malformed response received + eGOBI_ERR_INVALID_RSP, // 17 Invalid/error response received + eGOBI_ERR_INVALID_FILE, // 18 Invalid file path + eGOBI_ERR_FILE_OPEN, // 19 Unable to open file + eGOBI_ERR_FILE_COPY, // 20 Unable to copy file + eGOBI_ERR_QDL_SCM, // 21 Unable to open service control mgr + eGOBI_ERR_NO_QDL_SVC, // 22 Unable to detect QDL service + eGOBI_ERR_NO_QDL_SVC_INFO, // 23 Unable to obtain QDL service info + eGOBI_ERR_NO_QDL_SVC_PATH, // 24 Unable to locate QSL service + eGOBI_ERR_QDL_SVC_CFG, // 25 Unable to reconfigure QDL service + eGOBI_ERR_QDL_SVC_IFACE, // 26 Unable to interface to QDL service + eGOBI_ERR_OFFLINE, // 27 Unable to set device offline + eGOBI_ERR_RESET, // 28 Unable to reset device + eGOBI_ERR_NO_SIGNAL, // 29 No available signal + eGOBI_ERR_MULTIPLE_DEVICES, // 30 Multiple devices detected + eGOBI_ERR_DRIVER, // 31 Error interfacing to driver + eGOBI_ERR_NO_CANCELABLE_OP, // 32 No cancelable operation is pending + eGOBI_ERR_CANCEL_OP, // 33 Error canceling outstanding operation + eGOBI_ERR_QDL_CRC, // 34 QDL image data CRC error + eGOBI_ERR_QDL_PARSING, // 35 QDL image data parsing error + eGOBI_ERR_QDL_AUTH, // 36 QDL image authentication error + eGOBI_ERR_QDL_WRITE, // 37 QDL image write error + eGOBI_ERR_QDL_OPEN_SIZE, // 38 QDL image size error + eGOBI_ERR_QDL_OPEN_TYPE, // 39 QDL image type error + eGOBI_ERR_QDL_OPEN_PROT, // 40 QDL memory protection error + eGOBI_ERR_QDL_OPEN_SKIP, // 41 QDL image not required + eGOBI_ERR_QDL_ERR_GENERAL, // 42 QDL general error + eGOBI_ERR_QDL_BAR_MODE, // 43 QDL BAR mode error + + eGOBI_ERR_ENUM_END, + + // Offset from which mapped QMI error codes start from (see eQMIErrors) + eGOBI_ERR_QMI_OFFSET = 1000 +}; + +// Enum to describe possible QMI services +enum eQMIService:BYTE +{ + eQMI_SVC_CONTROL, // 000 Control service + eQMI_SVC_WDS, // 001 Wireless data service + eQMI_SVC_DMS, // 002 Device management service + eQMI_SVC_NAS, // 003 Network access service + eQMI_SVC_QOS, // 004 Quality of service, err, service + eQMI_SVC_WMS, // 005 Wireless messaging service + eQMI_SVC_PDS, // 006 Position determination service + eQMI_SVC_AUTH, // 007 Authentication service + eQMI_SVC_AT, // 008 AT command processor service + eQMI_SVC_VOICE, // 009 Voice service + eQMI_SVC_CAT2, // 010 Card application toolkit service (new) + eQMI_SVC_UIM, // 011 UIM service + eQMI_SVC_PBM, // 012 Phonebook service + eQMI_SVC_QCHAT, // 013 QCHAT Service + eQMI_SVC_RMTFS, // 014 Remote file system service + eQMI_SVC_TEST, // 015 Test service + eQMI_SVC_LOC, // 016 Location service + eQMI_SVC_SAR, // 017 Specific absorption rate service + eQMI_SVC_IMSS, // 018 IMS settings service + eQMI_SVC_ADC, // 019 Analog to digital converter driver service + eQMI_SVC_CSD, // 020 Core sound driver service + eQMI_SVC_MFS, // 021 Modem embedded file system service + eQMI_SVC_TIME, // 022 Time service + eQMI_SVC_TS, // 023 Thermal sensors service + eQMI_SVC_TMD, // 024 Thermal mitigation device service + eQMI_SVC_SAP, // 025 Service access proxy service + eQMI_SVC_WDA, // 026 Wireless data administrative service + eQMI_SVC_TSYNC, // 027 TSYNC control service + eQMI_SVC_RFSA, // 028 Remote file system access service + eQMI_SVC_CSVT, // 029 Circuit switched videotelephony service + eQMI_SVC_QCMAP, // 030 Qualcomm mobile access point service + eQMI_SVC_IMSP, // 031 IMS presence service + eQMI_SVC_IMSVT, // 032 IMS videotelephony service + eQMI_SVC_IMSA, // 033 IMS application service + eQMI_SVC_COEX, // 034 Coexistence service + eQMI_SVC_RESERVED_35, // 035 Reserved + eQMI_SVC_PDC, // 036 Persistent device configuration service + eQMI_SVC_RESERVED_37, // 037 Reserved + eQMI_SVC_STX, // 038 Simultaneous transmit service + eQMI_SVC_BIT, // 039 Bearer independent transport service + eQMI_SVC_IMSRTP, // 040 IMS RTP service + eQMI_SVC_RFRPE, // 041 RF radiated performance enhancement service + eQMI_SVC_DSD, // 042 Data system determination service + eQMI_SVC_SSCTL, // 043 Subsystem control service + + eQMI_SVC_CAT = 224, // 224 Card application toolkit service + eQMI_SVC_RMS, // 225 Remote management service + eQMI_SVC_OMA // 226 Open mobile alliance dev mgmt service +}; + +// Enum to describe QMI CTL Message types +enum eQMIMessageCTL:WORD +{ + eQMI_CTL_SET_INSTANCE_ID = 32, // 32 Set the unique link instance ID + eQMI_CTL_GET_VERSION_INFO, // 33 Get supported service version info + eQMI_CTL_GET_CLIENT_ID, // 34 Get a unique client ID + eQMI_CTL_RELEASE_CLIENT_ID, // 35 Release the unique client ID + eQMI_CTL_REVOKE_CLIENT_ID_IND, // 36 Indication of client ID revocation + eQMI_CTL_INVALID_CLIENT_ID, // 37 Indication of invalid client ID + eQMI_CTL_SET_DATA_FORMAT, // 38 Set host driver data format + eQMI_CTL_SYNC, // 39 Synchronize client/server + eQMI_CTL_SYNC_IND = 39, // 39 Synchronize indication + eQMI_CTL_SET_EVENT, // 40 Set event report conditions + eQMI_CTL_EVENT_IND = 40, // 40 Event report indication + eQMI_CTL_SET_POWER_SAVE_CFG, // 41 Set power save config + eQMI_CTL_SET_POWER_SAVE_MODE, // 42 Set power save mode + eQMI_CTL_GET_POWER_SAVE_MODE // 43 Get power save mode +}; + +// Enum to describe QMI WDS Message types +enum eQMIMessageWDS:WORD +{ + eQMI_WDS_RESET, // 000 Reset WDS service state variables + eQMI_WDS_SET_EVENT, // 001 Set connection state report conditions + eQMI_WDS_EVENT_IND = 1, // 001 Connection state report indication + eQMI_WDS_ABORT, // 002 Abort previously issued WDS command + eQMI_WDS_SET_INDICATION, // 003 Set indication conditions + + eQMI_WDS_GET_MESSAGES = 30, // 030 Get supported messages + eQMI_WDS_GET_FIELDS, // 031 Get supported fields + eQMI_WDS_START_NET, // 032 Start WDS network interface + eQMI_WDS_STOP_NET, // 033 Stop WDS network interface + eQMI_WDS_GET_PKT_STATUS, // 034 Get packet data connection status + eQMI_WDS_PKT_STATUS_IND = 34, // 034 Packet data connection status indication + eQMI_WDS_GET_RATES, // 035 Get current bit rates of the connection + eQMI_WDS_GET_STATISTICS, // 036 Get the packet data transfer statistics + eQMI_WDS_G0_DORMANT, // 037 Go dormant + eQMI_WDS_G0_ACTIVE, // 038 Go active + eQMI_WDS_CREATE_PROFILE, // 039 Create profile with specified settings + eQMI_WDS_MODIFY_PROFILE, // 040 Modify profile with specified settings + eQMI_WDS_DELETE_PROFILE, // 041 Delete the specified profile + eQMI_WDS_GET_PROFILE_LIST, // 042 Get all profiles + eQMI_WDS_GET_PROFILE, // 043 Get the specified profile + eQMI_WDS_GET_DEFAULTS, // 044 Get the default data session settings + eQMI_WDS_GET_SETTINGS, // 045 Get the runtime data session settings + eQMI_WDS_SET_MIP, // 046 Get the mobile IP setting + eQMI_WDS_GET_MIP, // 047 Set the mobile IP setting + eQMI_WDS_GET_DORMANCY, // 048 Get the dormancy status + + eQMI_WDS_GET_AUTOCONNECT = 52, // 052 Get the NDIS autoconnect setting + eQMI_WDS_GET_DURATION, // 053 Get the duration of data session + eQMI_WDS_GET_MODEM_STATUS, // 054 Get the modem status + eQMI_WDS_MODEM_IND = 54, // 054 Modem status indication + eQMI_WDS_GET_DATA_BEARER, // 055 Get the data bearer type + eQMI_WDS_GET_MODEM_INFO, // 056 Get the modem info + eQMI_WDS_MODEM_INFO_IND = 56, // 056 Modem info indication + + eQMI_WDS_GET_ACTIVE_MIP = 60, // 060 Get the active mobile IP profile + eQMI_WDS_SET_ACTIVE_MIP, // 061 Set the active mobile IP profile + eQMI_WDS_GET_MIP_PROFILE, // 062 Get mobile IP profile settings + eQMI_WDS_SET_MIP_PROFILE, // 063 Set mobile IP profile settings + eQMI_WDS_GET_MIP_PARAMS, // 064 Get mobile IP parameters + eQMI_WDS_SET_MIP_PARAMS, // 065 Set mobile IP parameters + eQMI_WDS_GET_LAST_MIP_STATUS, // 066 Get last mobile IP status + eQMI_WDS_GET_AAA_AUTH_STATUS, // 067 Get AN-AAA authentication status + eQMI_WDS_GET_CUR_DATA_BEARER, // 068 Get current data bearer + eQMI_WDS_GET_CALL_LIST, // 069 Get the call history list + eQMI_WDS_GET_CALL_ENTRY, // 070 Get an entry from the call history list + eQMI_WDS_CLEAR_CALL_LIST, // 071 Clear the call history list + eQMI_WDS_GET_CALL_LIST_MAX, // 072 Get maximum size of call history list + eQMI_WDS_GET_DEFAULT_PROF_NUM, // 073 Get default profile number + eQMI_WDS_SET_DEFAULT_PROF_NUM, // 074 Set default profile number + eQMI_WDS_RESET_PROFILE, // 075 Reset profile + eQMI_WDS_RESET_PROF_PARAM, // 076 Reset profile param to invalid + eQMI_WDS_SET_IP_FAMILY, // 077 Set the client IP family preference + eQMI_WDS_SET_FMC_TUNNEL, // 078 Set FMC tunnel parameters + eQMI_WDS_CLEAR_FMC_TUNNEL, // 079 Clear FMC tunnel parameters + eQMI_WDS_GET_FMC_TUNNEL, // 080 Get FMC tunnel parameters + eQMI_WDS_SET_AUTOCONNECT, // 081 Set the NDIS autoconnect setting + eQMI_WDS_GET_DNS, // 082 Get the DNS setting + eQMI_WDS_SET_DNS, // 083 Set the DNS setting + eQMI_WDS_GET_PRE_DORMANCY, // 084 Get the CDMA pre-dormancy settings + eQMI_WDS_SET_CAM_TIMER, // 085 Set the CAM timer + eQMI_WDS_GET_CAM_TIMER, // 086 Get the CAM timer + eQMI_WDS_SET_SCRM, // 087 Set SCRM status + eQMI_WDS_GET_SCRM, // 088 Get SCRM status + eQMI_WDS_SET_RDUD, // 089 Set RDUD status + eQMI_WDS_GET_RDUD, // 090 Get RDUD status + eQMI_WDS_GET_SIPMIP_CALL_TYPE, // 091 Set SIP/MIP call type + eQMI_WDS_SET_PM_PERIOD, // 092 Set EV-DO page monitor period + eQMI_WDS_PM_PERIOD_IND = 92, // 092 EV-DO page monitor period indication + eQMI_WDS_SET_FORCE_LONG_SLEEP, // 093 Set EV-DO force long sleep feature + eQMI_WDS_GET_PM_PERIOD, // 094 Get EV-DO page monitor period + eQMI_WDS_GET_CALL_THROTTLE, // 095 Get call throttle info + eQMI_WDS_GET_NSAPI, // 096 Get NSAPI + eQMI_WDS_SET_DUN_CTRL_PREF, // 097 Set DUN control preference + eQMI_WDS_GET_DUN_CTRL_INFO, // 098 Set DUN control info + eQMI_WDS_SET_DUN_CTRL_EVENT, // 099 Set DUN control event preference + eQMI_WDS_DUN_CTRL_IND = 99, // 099 DUN control event report indication + eQMI_WDS_PENDING_DUN_CTRL, // 100 Control pending DUN call + eQMI_WDS_TMGI_ACTIVATE, // 101 Activate eMBMS TMGI + eQMI_WDS_TMGI_ACT_IND = 101, // 101 eMBMS TMGI activate indication + eQMI_WDS_TMGI_DEACTIVATE, // 102 Activate eMBMS TMGI + eQMI_WDS_TMGI_DEACT_IND = 102, // 102 eMBMS TMGI activate indication + eQMI_WDS_TMGI_LIST_QUERY, // 103 Query for eMBMS TMGI list + eQMI_WDS_TMGI_LIST_IND, // 104 eMBMS TMGI list query indication + eQMI_WDS_GET_PREF_DATA_SYS, // 105 Get preferred data system + eQMI_WDS_GET_LAST_DATA_STATUS, // 106 Get last data call status + eQMI_WDS_GET_CURR_DATA_SYS, // 107 Get current data systems status + eQMI_WDS_GET_PDN_THROTTLE, // 108 Get PDN throttle info + + eQMI_WDS_GET_LTE_ATTACH = 133, // 133 Get LTE attach parameters + eQMI_WDS_RESET_PKT_STATS, // 134 Reset packet statistics + eQMI_WDS_GET_FLOW_CTRL_STATUS, // 135 Get flow control status + eQMI_WDS_TMGI_SWITCH, // 136 Activate/deactivate eMBMS TMGI + eQMI_WDS_TMGI_SWITCH_IND = 136,// 136 eMBMS TMGI activate/deactivate ind + eQMI_WDS_BIND_DATA_PORT, // 137 Bind data port + eQMI_WDS_SET_PDN_FILTER, // 138 Set additional PDN filter + eQMI_WDS_REMOVE_PDN_FILTER, // 139 Remove PDN filter + eQMI_WDS_EX_IP_CFG_IND, // 140 Extend IP config indication + eQMI_WDS_CFG_REV_IP_CONN_EVT, // 141 Configure reverse IP connection event + eQMI_WDS_REV_IP_TRANSPORT_IND, // 142 Reverse IP transport connection ind + eQMI_WDS_GET_IPSEC_SA_CFG, // 143 Get IPSec static SA config + eQMI_WDS_REV_IP_TPORT_CFG_DONE,// 144 Reverse IP transport config complete + eQMI_WDS_GET_EX_DATA_BEARER, // 145 Get extended data bearer + eQMI_WDS_GET_LTE_MAX_ATTACH, // 146 Get LTE maximum attach PDN number + eQMI_WDS_SET_LTE_ATTACH_PDNS, // 147 Set LTE attach PDN list + eQMI_WDS_GET_LTE_ATTACH_PDNS, // 148 Set LTE attach PDN list + eQMI_WDS_LTE_ATTACH_PDNS_IND, // 149 LTE attach PDN list indication + eQMI_WDS_SET_LTE_DATA_RETRY, // 150 Set LTE data retry + eQMI_WDS_GET_LTE_DATA_RETRY, // 151 Get LTE data retry + eQMI_WDS_SET_LTE_ATTACH_TYPE, // 152 Set LTE attach type + eQMI_WDS_GET_LTE_ATTACH_TYPE, // 153 Get LTE attach type + eQMI_WDS_REV_IP_FILTER_IND, // 154 Reverse IP transport filter ind + eQMI_WDS_HANDOFF_INFO_IND // 155 Handoff info indication +}; + +// Enum to describe QMI DMS Message types +enum eQMIMessageDMS:WORD +{ + eQMI_DMS_RESET, // 00 Reset DMS service state variables + eQMI_DMS_SET_EVENT, // 01 Set connection state report conditions + eQMI_DMS_EVENT_IND = 1, // 01 Connection state report indication + + eQMI_DMS_GET_MESSAGES = 30, // 30 Get supported messages + eQMI_DMS_GET_FIELDS, // 31 Get supported fields + eQMI_DMS_GET_CAPS, // 32 Get the device capabilities + eQMI_DMS_GET_MANUFACTURER, // 33 Get the device manfacturer + eQMI_DMS_GET_MODEL_ID, // 34 Get the device model ID + eQMI_DMS_GET_REV_ID, // 35 Get the device revision ID + eQMI_DMS_GET_NUMBER, // 36 Get the assigned voice number + eQMI_DMS_GET_IDS, // 37 Get the ESN/IMEI/MEID + eQMI_DMS_GET_POWER_STATE, // 38 Get the get power state + eQMI_DMS_UIM_SET_PIN_PROT, // 39 UIM - Set PIN protection + eQMI_DMS_UIM_PIN_VERIFY, // 40 UIM - Verify PIN + eQMI_DMS_UIM_PIN_UNBLOCK, // 41 UIM - Unblock PIN + eQMI_DMS_UIM_PIN_CHANGE, // 42 UIM - Change PIN + eQMI_DMS_UIM_GET_PIN_STATUS, // 43 UIM - Get PIN status + eQMI_DMS_GET_MSM_ID = 44, // 44 Get MSM ID + eQMI_DMS_GET_OPERATING_MODE, // 45 Get the operating mode + eQMI_DMS_SET_OPERATING_MODE, // 46 Set the operating mode + eQMI_DMS_GET_TIME, // 47 Get timestamp from the device + eQMI_DMS_GET_PRL_VERSION, // 48 Get the PRL version + eQMI_DMS_GET_ACTIVATED_STATE, // 49 Get the activation state + eQMI_DMS_ACTIVATE_AUTOMATIC, // 50 Perform an automatic activation + eQMI_DMS_ACTIVATE_MANUAL, // 51 Perform a manual activation + eQMI_DMS_GET_USER_LOCK_STATE, // 52 Get the lock state + eQMI_DMS_SET_USER_LOCK_STATE, // 53 Set the lock state + eQMI_DMS_SET_USER_LOCK_CODE, // 54 Set the lock PIN + eQMI_DMS_READ_USER_DATA, // 55 Read user data + eQMI_DMS_WRITE_USER_DATA, // 56 Write user data + eQMI_DMS_READ_ERI_FILE, // 57 Read the enhanced roaming indicator file + eQMI_DMS_FACTORY_DEFAULTS, // 58 Reset to factory defaults + eQMI_DMS_VALIDATE_SPC, // 59 Validate service programming code + eQMI_DMS_UIM_GET_ICCID, // 60 Get UIM ICCID + eQMI_DMS_GET_FIRWARE_ID, // 61 Get firmware ID + eQMI_DMS_SET_FIRMWARE_ID, // 62 Set firmware ID + eQMI_DMS_GET_HOST_LOCK_ID, // 63 Get host lock ID + eQMI_DMS_UIM_GET_CK_STATUS, // 64 UIM - Get control key status + eQMI_DMS_UIM_SET_CK_PROT, // 65 UIM - Set control key protection + eQMI_DMS_UIM_UNBLOCK_CK, // 66 UIM - Unblock facility control key + eQMI_DMS_GET_IMSI, // 67 Get the IMSI + eQMI_DMS_UIM_GET_STATE, // 68 UIM - Get the UIM state + eQMI_DMS_GET_BAND_CAPS, // 69 Get the device band capabilities + eQMI_DMS_GET_FACTORY_ID, // 70 Get the device factory ID + eQMI_DMS_GET_FIRMWARE_PREF, // 71 Get firmware preference + eQMI_DMS_SET_FIRMWARE_PREF, // 72 Set firmware preference + eQMI_DMS_LIST_FIRMWARE, // 73 List all stored firmware + eQMI_DMS_DELETE_FIRMWARE, // 74 Delete specified stored firmware + eQMI_DMS_SET_TIME, // 75 Set device time + eQMI_DMS_GET_FIRMWARE_INFO, // 76 Get stored firmware info + eQMI_DMS_GET_ALT_NET_CFG, // 77 Get alternate network config + eQMI_DMS_SET_ALT_NET_CFG, // 78 Set alternate network config + eQMI_DMS_GET_IMG_DLOAD_MODE, // 79 Get next image download mode + eQMI_DMS_SET_IMG_DLOAD_MODE, // 80 Set next image download mode + eQMI_DMS_GET_SW_VERSION, // 81 Get software version + eQMI_DMS_SET_SPC, // 82 Set SPC + eQMI_DMS_GET_CURRENT_PRL_INFO,// 83 Get current PRL info + eQMI_DMS_BIND_SUBSCRIPTION, // 84 Bind subscription + eQMI_DMS_GET_SUBSCRIPTION // 85 Get bound subscription +}; + +// Enum to describe QMI NAS Message types +enum eQMIMessageNAS:WORD +{ + eQMI_NAS_RESET, // 000 Reset NAS service state variables + eQMI_NAS_ABORT, // 001 Abort previously issued NAS command + eQMI_NAS_SET_EVENT, // 002 Set NAS state report conditions + eQMI_NAS_EVENT_IND = 2, // 002 Connection state report indication + eQMI_NAS_SET_REG_EVENT, // 003 Set NAS registration report conditions + + eQMI_NAS_GET_MESSAGES = 30, // 030 Get supported messages + eQMI_NAS_GET_FIELDS, // 031 Get supported fields + eQMI_NAS_GET_RSSI, // 032 Get the signal strength + eQMI_NAS_SCAN_NETS, // 033 Scan for visible network + eQMI_NAS_REGISTER_NET, // 034 Initiate a network registration + eQMI_NAS_ATTACH_DETACH, // 035 Initiate an attach or detach action + eQMI_NAS_GET_SS_INFO, // 036 Get info about current serving system + eQMI_NAS_SS_INFO_IND = 36, // 036 Current serving system info indication + eQMI_NAS_GET_HOME_INFO, // 037 Get info about home network + eQMI_NAS_GET_NET_PREF_LIST, // 038 Get the list of preferred networks + eQMI_NAS_SET_NET_PREF_LIST, // 039 Set the list of preferred networks + eQMI_NAS_GET_NET_BAN_LIST, // 040 Get the list of forbidden networks + eQMI_NAS_SET_NET_BAN_LIST, // 041 Set the list of forbidden networks + eQMI_NAS_SET_TECH_PREF, // 042 Set the technology preference + eQMI_NAS_GET_TECH_PREF, // 043 Get the technology preference + eQMI_NAS_GET_ACCOLC, // 044 Get the Access Overload Class + eQMI_NAS_SET_ACCOLC, // 045 Set the Access Overload Class + eQMI_NAS_GET_SYSPREF, // 046 Get the CDMA system preference + eQMI_NAS_GET_NET_PARAMS, // 047 Get various network parameters + eQMI_NAS_SET_NET_PARAMS, // 048 Set various network parameters + eQMI_NAS_GET_RF_INFO, // 049 Get the SS radio/band channel info + eQMI_NAS_GET_AAA_AUTH_STATUS, // 050 Get AN-AAA authentication status + eQMI_NAS_SET_SYS_SELECT_PREF, // 051 Set system selection preference + eQMI_NAS_GET_SYS_SELECT_PREF, // 052 Get system selection preference + eQMI_NAS_SYS_SELECT_IND = 52, // 052 System selection pref indication + + eQMI_NAS_SET_DDTM_PREF = 55, // 055 Set DDTM preference + eQMI_NAS_GET_DDTM_PREF, // 056 Get DDTM preference + eQMI_NAS_DDTM_IND = 56, // 056 DDTM preference indication + eQMI_NAS_GET_OPERATER_NAME, // 057 Get operator name data + eQMI_NAS_OPERATER_NAME_IND, // 058 Operator name data indication + eQMI_NAS_GET_PLMN_MODE, // 059 Get PLMN mode bit from CSP + eQMI_NAS_PLMN_MODE_IND, // 060 CSP PLMN mode bit indication + eQMI_NAS_UPDATE_AKEY, // 061 Update the A-KEY + eQMI_NAS_GET_3GPP2_SUBS_INFO, // 062 Get 3GPP2 subscription info + eQMI_NAS_SET_3GPP2_SUBS_INFO, // 063 Set 3GPP2 subscription info + eQMI_NAS_MOB_CAI_REV, // 064 Get mobile CAI revision information + eQMI_NAS_GET_RTRE_CONFIG, // 065 Get RTRE configuration information + eQMI_NAS_SET_RTRE_CONFIG, // 066 Set RTRE configuration information + eQMI_NAS_GET_CELL_LOC_INFO, // 067 Get cell location information + eQMI_NAS_GET_PLMN_NAME, // 068 Get operator name for specified network + eQMI_NAS_BIND_SUBS, // 069 Bind client to a specific subscription + eQMI_NAS_MANAGED_ROAMING_IND, // 070 Managed roaming indication + eQMI_NAS_DSB_PREF_IND, // 071 Dual standby preference indication + eQMI_NAS_SUBS_INFO_IND, // 072 Subscription info indication + eQMI_NAS_GET_MODE_PREF, // 073 Get mode preference + + eQMI_NAS_SET_DSB_PREF = 75, // 075 Set dual standby preference + eQMI_NAS_NETWORK_TIME_IND, // 076 Network time indication + eQMI_NAS_GET_SYSTEM_INFO, // 077 Get system info + eQMI_NAS_SYSTEM_INFO_IND, // 078 System info indication + eQMI_NAS_GET_SIGNAL_INFO, // 079 Get signal info + eQMI_NAS_CFG_SIGNAL_INFO, // 080 Configure signal info report + eQMI_NAS_SIGNAL_INFO_IND, // 081 Signal info indication + eQMI_NAS_GET_ERROR_RATE, // 082 Get error rate info + eQMI_NAS_ERROR_RATE_IND, // 083 Error rate indication + eQMI_NAS_EVDO_SESSION_IND, // 084 CDMA 1xEV-DO session close indication + eQMI_NAS_EVDO_UATI_IND, // 085 CDMA 1xEV-DO UATI update indication + eQMI_NAS_GET_EVDO_SUBTYPE, // 086 Get CDMA 1xEV-DO protocol subtype + eQMI_NAS_GET_EVDO_COLOR_CODE, // 087 Get CDMA 1xEV-DO color code + eQMI_NAS_GET_ACQ_SYS_MODE, // 088 Get current acquisition system mode + eQMI_NAS_SET_RX_DIVERSITY, // 089 Set the RX diversity + eQMI_NAS_GET_RX_TX_INFO, // 090 Get detailed RX/TX information + eQMI_NAS_UPDATE_AKEY_EXT, // 091 Update the A-KEY (extended) + eQMI_NAS_GET_DSB_PREF, // 092 Get dual standby preference + eQMI_NAS_DETACH_LTE, // 093 Detach the current LTE system + eQMI_NAS_BLOCK_LTE_PLMN, // 094 Block LTE PLMN + eQMI_NAS_UNBLOCK_LTE_PLMN, // 095 Unblock LTE PLMN + eQMI_NAS_RESET_LTE_PLMN_BLK, // 096 Reset LTE PLMN blocking + eQMI_NAS_CUR_PLMN_NAME_IND, // 097 Current PLMN name indication + eQMI_NAS_CONFIG_EMBMS, // 098 Configure eMBMS + eQMI_NAS_GET_EMBMS_STATUS, // 099 Get eMBMS status + eQMI_NAS_EMBMS_STATUS_IND, // 100 eMBMS status indication + eQMI_NAS_GET_CDMA_POS_INFO, // 101 Get CDMA position info + eQMI_NAS_RF_BAND_INFO_IND, // 102 RF band info indication + eQMI_NAS_FORCE_NET_SEARCH, // 103 Force network search + eQMI_NAS_NET_REJECT_IND, // 104 Network reject indication + eQMI_NAS_GET_MANAGED_ROAM, // 105 Get managed roaming configuration + eQMI_NAS_RTRE_CONFIG_IND, // 106 RTRE configuration indication + eQMI_NAS_GET_CENTRALIZED_EOM, // 107 Get centralized EONS support + eQMI_NAS_CFG_SIGNAL_INFO2, // 108 Configure signal info report (V2) + eQMI_NAS_GET_TDS_CELL_INFO, // 109 Get TD-SCDMA cell/position info + eQMI_NAS_SET_HPLMN_IRAT_TIMER,// 110 Set HPLMN IRAT search timer + eQMI_NAS_GET_EMBMS_SIQ_QUAL, // 111 Get eMBMS signal quality + eQMI_NAS_LIMIT_SYS_INFO, // 112 Limit system info indications + eQMI_NAS_GET_SYS_INFO_LIMITS, // 113 Get system info indication limits + eQMI_NAS_UPDATE_IMS_STATUS, // 114 Update IMS status + eQMI_NAS_GET_IMS_PREFERENCE, // 115 Get IMS preference status + eQMI_NAS_IMS_PREFERENCE_IND, // 116 IMS preference status indication + eQMI_NAS_CFG_IND_PLMN_NAME, // 117 Configure indication for PLMN name + eQMI_NAS_CDMA_AVOID_SYSTEM, // 118 CDMA avoid system + eQMI_NAS_GET_AVOIDED_SYSTEMS, // 119 Get CDMA avoided system list + eQMI_NAS_SET_HPLMN_SRCH_TIMER,// 120 Set HPLMN search timer + eQMI_NAS_GET_HPLMN_SRCH_TIMER,// 121 Get HPLMN search timer + eQMI_NAS_SET_E911_STATE, // 122 Set E911 state + eQMI_NAS_E911_STATE_IND, // 123 E911 state ready indication + eQMI_NAS_GET_SUBS_INFO, // 124 Get subscription info + eQMI_NAS_GET_NET_TIME, // 125 Get network time + eQMI_NAS_GET_LTE_SIB16_TIME, // 126 Get LTE SIB16 network time + eQMI_NAS_LTE_SIB16_TIME_IND // 127 LTE SIB16 network time indication +}; + +// Enum to describe QMI WMS Message types +enum eQMIMessageWMS:WORD +{ + eQMI_WMS_RESET, // 00 Reset WMS service state variables + eQMI_WMS_SET_EVENT, // 01 Set new message report conditions + eQMI_WMS_EVENT_IND = 1, // 01 New message report indication + + eQMI_WMS_GET_MESSAGES = 30, // 030 Get supported messages + eQMI_WMS_GET_FIELDS, // 031 Get supported fields + eQMI_WMS_RAW_SEND, // 32 Send a raw message + eQMI_WMS_RAW_WRITE, // 33 Write a raw message to the device + eQMI_WMS_RAW_READ, // 34 Read a raw message from the device + eQMI_WMS_MODIFY_TAG, // 35 Modify message tag on the device + eQMI_WMS_DELETE, // 36 Delete message by index/tag/memory + + eQMI_WMS_GET_MSG_PROTOCOL = 48, // 48 Get the current message protocol + eQMI_WMS_GET_MSG_LIST, // 49 Get list of messages from the device + eQMI_WMS_SET_ROUTES, // 50 Set routes for message memory storage + eQMI_WMS_GET_ROUTES, // 51 Get routes for message memory storage + eQMI_WMS_GET_SMSC_ADDR, // 52 Get SMSC address + eQMI_WMS_SET_SMSC_ADDR, // 53 Set SMSC address + eQMI_WMS_GET_MSG_LIST_MAX, // 54 Get maximum size of SMS storage + eQMI_WMS_SEND_ACK, // 55 Send ACK + eQMI_WMS_SET_RETRY_PERIOD, // 56 Set retry period + eQMI_WMS_SET_RETRY_INTERVAL, // 57 Set retry interval + eQMI_WMS_SET_DC_DISCO_TIMER, // 58 Set DC auto-disconnect timer + eQMI_WMS_SET_MEMORY_STATUS, // 59 Set memory storage status + eQMI_WMS_SET_BC_ACTIVATION, // 60 Set broadcast activation + eQMI_WMS_SET_BC_CONFIG, // 61 Set broadcast config + eQMI_WMS_GET_BC_CONFIG, // 62 Get broadcast config + eQMI_WMS_MEMORY_FULL_IND, // 63 Memory full indication + eQMI_WMS_GET_DOMAIN_PREF, // 64 Get domain preference + eQMI_WMS_SET_DOMAIN_PREF, // 65 Set domain preference + eQMI_WMS_MEMORY_SEND, // 66 Send message from memory store + eQMI_WMS_GET_MSG_WAITING, // 67 Get message waiting info + eQMI_WMS_MSG_WAITING_IND, // 68 Message waiting indication + eQMI_WMS_SET_PRIMARY_CLIENT, // 69 Set client as primary client + eQMI_WMS_SMSC_ADDR_IND, // 70 SMSC address indication + eQMI_WMS_INDICATOR_REG, // 71 Register for indicators + eQMI_WMS_GET_TRANSPORT_INFO, // 72 Get transport layer info + eQMI_WMS_TRANSPORT_INFO_IND, // 73 Transport layer info indication + eQMI_WMS_GET_NW_REG_INFO, // 74 Get network registration info + eQMI_WMS_NW_REG_INFO_IND, // 75 Network registration info indication + eQMI_WMS_BIND_SUBSCRIPTION, // 76 Bind client to a subscription + eQMI_WMS_GET_INDICATOR_REG, // 77 Get indicator registration + eQMI_WMS_GET_SMS_PARAMETERS, // 78 Get SMS EF-SMSP parameters + eQMI_WMS_SET_SMS_PARAMETERS, // 79 Set SMS EF-SMSP parameters + eQMI_WMS_CALL_STATUS_IND, // 80 Call status indication + eQMI_WMS_GET_DOMAIN_PREF_CFG, // 81 Get domain pref config + eQMI_WMS_SET_DOMAIN_PREF_CFG, // 82 Set domain pref config + eQMI_WMS_GET_RETRY_PERIOD, // 83 Get retry period + eQMI_WMS_GET_RETRY_INTERVAL, // 84 Get retry interval + eQMI_WMS_GET_DC_DISCO_TIMER, // 85 Get DC auto-disconnect timer + eQMI_WMS_GET_MEMORY_STATUS, // 86 Get memory storage status + eQMI_WMS_GET_PRIMARY_CLIENT, // 87 Get primary cleint + eQMI_WMS_GET_SUBSCR_BINDING, // 88 Get client subscription binding + eQMI_WMS_ASYNC_RAW_SEND, // 89 Asynchronously send a raw message + eQMI_WMS_ASYNC_RAW_SEND_IND = 89,// 89 Asynchronous send indication + eQMI_WMS_ASYNC_SEND_ACK, // 90 Asynchronously send ACK + eQMI_WMS_ASYNC_SEND_ACK_IND = 90,// 90 Asynchronou send ACK indication + eQMI_WMS_ASYNC_MEMORY_SEND, // 91 Async send msg from memory store + eQMI_WMS_ASYNC_MEM_SEND_IND = 91,// 91 Async memory store send indication + eQMI_WMS_GET_SERVICE_READY, // 92 Get service ready status + eQMI_WMS_SERVICE_READY_IND, // 93 Service ready status indication + eQMI_WMS_BC_CONFIG_IND, // 94 Broadcast config indication + eQMI_WMS_SET_MSG_WAITING // 95 Set message waiting info +}; + +// Enum to describe QMI PDS Message types +enum eQMIMessagePDS:WORD +{ + eQMI_PDS_RESET, // 000 Reset PDS service state variables + eQMI_PDS_SET_EVENT, // 001 Set PDS report conditions + eQMI_PDS_EVENT_IND = 1, // 001 PDS report indication + + eQMI_PDS_GET_STATE = 32, // 032 Return PDS service state + eQMI_PDS_STATE_IND = 32, // 032 PDS service state indication + eQMI_PDS_SET_STATE, // 033 Set PDS service state + eQMI_PDS_START_SESSION, // 034 Start a PDS tracking session + eQMI_PDS_GET_SESSION_INFO, // 035 Get PDS tracking session info + eQMI_PDS_FIX_POSITION, // 036 Manual tracking session position + eQMI_PDS_END_SESSION, // 037 End a PDS tracking session + eQMI_PDS_GET_NMEA_CFG, // 038 Get NMEA sentence config + eQMI_PDS_SET_NMEA_CFG, // 039 Set NMEA sentence config + eQMI_PDS_INJECT_TIME, // 040 Inject a time reference + eQMI_PDS_GET_DEFAULTS, // 041 Get default tracking session config + eQMI_PDS_SET_DEFAULTS, // 042 Set default tracking session config + eQMI_PDS_GET_XTRA_PARAMS, // 043 Get the GPS XTRA parameters + eQMI_PDS_SET_XTRA_PARAMS, // 044 Set the GPS XTRA parameters + eQMI_PDS_FORCE_XTRA_DL, // 045 Force a GPS XTRA database download + eQMI_PDS_GET_AGPS_CONFIG, // 046 Get the AGPS mode configuration + eQMI_PDS_SET_AGPS_CONFIG, // 047 Set the AGPS mode configuration + eQMI_PDS_GET_SVC_AUTOTRACK, // 048 Get the service auto-tracking state + eQMI_PDS_SET_SVC_AUTOTRACK, // 049 Set the service auto-tracking state + eQMI_PDS_GET_COM_AUTOTRACK, // 050 Get COM port auto-tracking config + eQMI_PDS_SET_COM_AUTOTRACK, // 051 Set COM port auto-tracking config + eQMI_PDS_RESET_DATA, // 052 Reset PDS service data + eQMI_PDS_SINGLE_FIX, // 053 Request single position fix + eQMI_PDS_GET_VERSION, // 054 Get PDS service version + eQMI_PDS_INJECT_XTRA, // 055 Inject XTRA data + eQMI_PDS_INJECT_POSITION, // 056 Inject position data + eQMI_PDS_INJECT_WIFI, // 057 Inject Wi-Fi obtained data + eQMI_PDS_GET_SBAS_CONFIG, // 058 Get SBAS config + eQMI_PDS_SET_SBAS_CONFIG, // 059 Set SBAS config + eQMI_PDS_SEND_NI_RESPONSE, // 060 Send network initiated response + eQMI_PDS_INJECT_ABS_TIME, // 061 Inject absolute time + eQMI_PDS_INJECT_EFS, // 062 Inject EFS data + eQMI_PDS_GET_DPO_CONFIG, // 063 Get DPO config + eQMI_PDS_SET_DPO_CONFIG, // 064 Set DPO config + eQMI_PDS_GET_ODP_CONFIG, // 065 Get ODP config + eQMI_PDS_SET_ODP_CONFIG, // 066 Set ODP config + eQMI_PDS_CANCEL_SINGLE_FIX, // 067 Cancel single position fix + eQMI_PDS_GET_GPS_STATE, // 068 Get GPS state + eQMI_PDS_SET_PPM_EVT_REPORT, // 069 Set PPM event report + eQMI_PDS_SET_SPI_REPORT, // 070 Set SPI streaming reporting + eQMI_PDS_SET_SPI_RPT_IND = 70, // 070 Set SPI streaming indication + eQMI_PDS_SET_SPI_STATUS, // 071 Set SPI status + eQMI_PDS_SET_PPM_REPORT, // 072 Set PPM reporting state + eQMI_PDS_SET_PPM_RPT_IND = 72, // 072 Set PPM reporting state indication + eQMI_PDS_FORCE_RECEIVER_OFF, // 073 Force receiver off + + eQMI_PDS_GET_METHODS = 80, // 080 Get GPS position methods state + eQMI_PDS_SET_METHODS, // 081 Set GPS position methods state + eQMI_PDS_INJECT_SENSOR, // 082 Inject sensor data + eQMI_PDS_INJECT_TIME_SYNC, // 083 Inject time sync data + eQMI_PDS_GET_SENSOR_CFG, // 084 Get sensor config + eQMI_PDS_SET_SENSOR_CFG, // 085 Set sensor config + eQMI_PDS_GET_NAV_CFG, // 086 Get navigation config + eQMI_PDS_SET_NAV_CFG, // 087 Set navigation config + + eQMI_PDS_SET_WLAN_BLANK = 90, // 090 Set WLAN blanking + eQMI_PDS_SET_LBS_SC_RPT, // 091 Set LBS security challenge reporting + eQMI_PDS_LBS_SC_IND = 91, // 091 LBS security challenge indication + eQMI_PDS_SET_LBS_SC, // 092 Set LBS security challenge + eQMI_PDS_GET_LBS_ENCRYPT_CFG, // 093 Get LBS security encryption config + eQMI_PDS_SET_LBS_UPDATE_RATE, // 094 Set LBS security update rate + eQMI_PDS_SET_CELLDB_CONTROL, // 095 Set cell database control + eQMI_PDS_READY_IND, // 096 Ready indication + eQMI_PDS_INJECT_MOTION_DATA, // 097 Inject motion data + eQMI_PDS_SET_GNSS_ERR_REPORT, // 098 Set GNSS error recovery report + eQMI_PDS_GNSS_ERR_IND = 98, // 098 GNSS error recovery report indication + eQMI_PDS_RESET_SERVICE, // 099 Reset location service + eQMI_PDS_INJECT_TEST_DATA, // 100 Inject test data + eQMI_PDS_SET_GNSS_RF_CFG, // 101 Set GNSS RF config + eQMI_PDS_INJECT_COG_DATA, // 102 Inject course over ground data + eQMI_PDS_INJECT_SUPL_CERT, // 103 Inject SUPL certificate + eQMI_PDS_DELETE_SUPL_CERT , // 104 Delete SUPL certificate + eQMI_PDS_GET_IS801_OVER_SUPL, // 105 Get IS-801 Over SUPL indicator + eQMI_PDS_SET_IS801_OVER_SUPL, // 106 Set IS-801 Over SUPL indicator + eQMI_PDS_GET_SUPL_HASH_ALG, // 107 Get SUPL hash algorithm + eQMI_PDS_SET_SUPL_HASH_ALG, // 108 Set SUPL hash algorithm + eQMI_PDS_GET_SUPL_MAX_VERSION, // 109 Get SUPL maximum version + eQMI_PDS_SET_SUPL_MAX_VERSION, // 110 Set SUPL maximum version + eQMI_PDS_GET_SUPL_SECURITY, // 111 Get SUPL security + eQMI_PDS_SET_SUPL_SECURITY, // 112 Set SUPL security + eQMI_PDS_GET_SUPL_TLS_VERSION, // 113 Get SUPL TLS version + eQMI_PDS_SET_SUPL_TLS_VERSION, // 114 Set SUPL TLS version + eQMI_PDS_GET_AGNSS_POS_MODES, // 115 Get AGNSS positioning modes + eQMI_PDS_SET_AGNSS_POS_MODES, // 116 Set AGNSS positioning modes + eQMI_PDS_GET_EMERGENCY_PROTO, // 117 Get emergency protocol config + eQMI_PDS_SET_EMERGENCY_PROTO, // 118 Set emergency protocol config + eQMI_PDS_GET_APN_PROFILES, // 119 Get APN profiles + eQMI_PDS_SET_APN_PROFILES, // 120 Set APN profiles + eQMI_PDS_GET_HOME_SUPL_ADDR, // 121 Get home SUPL address + eQMI_PDS_SET_HOME_SUPL_ADDR, // 122 Set home SUPL address + eQMI_PDS_INJECT_VEHICLE_DATA, // 123 Inject vehicle sensor data +}; + +// Enum to describe QMI AUTH Message types +enum eQMIMessageAUTH:WORD +{ + eQMI_AUTH_START_EAP = 32, // 32 Start the EAP session + eQMI_AUTH_SEND_EAP, // 33 Send and receive EAP packets + eQMI_AUTH_EAP_RESULT_IND, // 34 EAP session result indication + eQMI_AUTH_GET_EAP_KEYS, // 35 Get the EAP session keys + eQMI_AUTH_END_EAP, // 36 End the EAP session + eQMI_AUTH_RUN_AKA, // 37 Runs the AKA algorithm + eQMI_AUTH_AKA_RESULT_IND // 38 AKA algorithm result indication +}; + +// Enum to describe QMI VOICE Message types +enum eQMIMessageVoice:WORD +{ + eQMI_VOICE_INDICATION_REG = 3, // 03 Set indication registration state + + eQMI_VOICE_GET_MESSAGES = 30, // 30 Get supported messages + eQMI_VOICE_GET_FIELDS, // 31 Get supported fields + eQMI_VOICE_CALL_ORIGINATE, // 32 Originate a voice call + eQMI_VOICE_CALL_END, // 33 End a voice call + eQMI_VOICE_CALL_ANSWER, // 34 Answer incoming voice call + + eQMI_VOICE_GET_CALL_INFO = 36, // 36 Get call information + eQMI_VOICE_OTASP_STATUS_IND, // 37 OTASP/OTAPA event indication + eQMI_VOICE_INFO_REC_IND, // 38 New info record indication + eQMI_VOICE_SEND_FLASH, // 39 Send a simple flash + eQMI_VOICE_BURST_DTMF, // 40 Send a burst DTMF + eQMI_VOICE_START_CONT_DTMF, // 41 Starts a continuous DTMF + eQMI_VOICE_STOP_CONT_DTMF, // 42 Stops a continuous DTMF + eQMI_VOICE_DTMF_IND, // 43 DTMF event indication + eQMI_VOICE_SET_PRIVACY_PREF, // 44 Set privacy preference + eQMI_VOICE_PRIVACY_IND, // 45 Privacy change indication + eQMI_VOICE_ALL_STATUS_IND, // 46 Voice all call status indication + eQMI_VOICE_GET_ALL_STATUS, // 47 Get voice all call status + + eQMI_VOICE_MANAGE_CALLS = 49, // 49 Manage calls + eQMI_VOICE_SUPS_NOTIFICATION_IND, // 50 Supplementary service notifications + eQMI_VOICE_SET_SUPS_SERVICE, // 51 Manage supplementary service + eQMI_VOICE_GET_CALL_WAITING, // 52 Query sup service call waiting + eQMI_VOICE_GET_CALL_BARRING, // 53 Query sup service call barring + eQMI_VOICE_GET_CLIP, // 54 Query sup service CLIP + eQMI_VOICE_GET_CLIR, // 55 Query sup service CLIR + eQMI_VOICE_GET_CALL_FWDING, // 56 Query sup service call forwarding + eQMI_VOICE_SET_CALL_BARRING_PWD, // 57 Set call barring password + eQMI_VOICE_ORIG_USSD, // 58 Initiate USSD operation then wait + eQMI_VOICE_ANSWER_USSD, // 59 Answer USSD request + eQMI_VOICE_CANCEL_USSD, // 60 Cancel USSD operation + eQMI_VOICE_USSD_RELEASE_IND, // 61 USSD release indication + eQMI_VOICE_USSD_IND, // 62 USSD request/notification indication + eQMI_VOICE_UUS_IND, // 63 UUS information indication + eQMI_VOICE_SET_CONFIG, // 64 Set config + eQMI_VOICE_GET_CONFIG, // 65 Get config + eQMI_VOICE_SUPS_IND, // 66 Sup service request indication + eQMI_VOICE_ASYNC_ORIG_USSD, // 67 Initiate USSD operation + eQMI_VOICE_ASYNC_USSD_IND = 67, // 67 USSD request/notification indication + eQMI_VOICE_BIND_SUBSCRIPTION, // 68 Bind subscription + eQMI_VOICE_ALS_SET_LINE_SW, // 69 ALS set line switching + eQMI_VOICE_ALS_SELECT_LINE, // 70 ALS select line + eQMI_VOICE_AOC_RESET_ACM, // 71 AOC reset ACM + eQMI_VOICE_AOC_SET_ACM_MAX, // 72 ACM set ACM maximum + eQMI_VOICE_AOC_GET_CM_INFO, // 73 AOC get call meter info + eQMI_VOICE_AOC_LOW_FUNDS_IND, // 74 AOC low funds indication + eQMI_VOICE_GET_COLP, // 75 Get COLP info + eQMI_VOICE_GET_COLR, // 76 Get COLR info + eQMI_VOICE_GET_CNAP, // 77 Get CNAP info + eQMI_VOICE_MANAGE_IP_CALLS, // 78 Manage VoIP calls + eQMI_VOICE_ALS_GET_LINE_SW, // 79 ALS get line switching + eQMI_VOICE_ALS_GET_LINE_SEL, // 80 ALS get selected line + eQMI_VOICE_MODIFIED_IND, // 81 Call modified indication + eQMI_VOICE_MODIFY_ACCEPT_IND, // 82 Call modify accept indication + eQMI_VOICE_SPEECH_CODEC_IND, // 83 Speech codec info indication + eQMI_VOICE_HANDOVER_IND, // 84 Handover indication + eQMI_VOICE_CONFERENCE_INFO_IND, // 85 Conference info indication + eQMI_VOICE_CONFERENCE_JOIN_IND, // 86 Conference join indication + eQMI_VOICE_CONFERENCE_UPDATE_IND, // 87 Conference update indication + eQMI_VOICE_EXT_BURST_TYPE_IND, // 88 Extended burst type indication + eQMI_VOICE_MT_PAGE_MISS_IND, // 89 MT page miss indication + eQMI_VOICE_CC_RESULT_INFO_IND // 90 Call control result info indication +}; + +// Enum to describe QMI UIM Message types +enum eQMIMessageUIM:WORD +{ + eQMI_UIM_RESET, // 00 Reset + + eQMI_UIM_GET_MESSAGES = 30, // 30 Get supported messages + eQMI_UIM_GET_FIELDS, // 31 Get supported fields + eQMI_UIM_READ_TRANSPARENT, // 32 Read data + eQMI_UIM_READ_TRANSPARENT_IND = 32, // 32 Read data indication + eQMI_UIM_READ_RECORD, // 33 Read one or more records + eQMI_UIM_READ_RECORD_IND = 33, // 33 Read records indication + eQMI_UIM_WRITE_TRANSPARENT, // 34 Write data + eQMI_UIM_WRITE_TRANSPARENT_IND = 34, // 34 Write data indication + eQMI_UIM_WRITE_RECORD, // 35 Write a record + eQMI_UIM_WRITE_RECORD_IND = 35, // 35 Write a record indication + eQMI_UIM_GET_FILE_ATTRIBUTES, // 36 Get file attributes + eQMI_UIM_GET_FILE_ATTRIBUTES_IND = 36, // 36 Get file attributes indication + eQMI_UIM_SET_PIN_PROTECTION, // 37 Set PIN protection + eQMI_UIM_SET_PIN_PROTECTION_IND = 37, // 37 Set PIN protection indication + eQMI_UIM_VERITFY_PIN, // 38 Verify PIN + eQMI_UIM_VERITFY_PIN_IND = 38, // 38 Verify PIN indication + eQMI_UIM_UNBLOCK_PIN, // 39 Unblock PIN + eQMI_UIM_UNBLOCK_PIN_IND = 39, // 39 Unblock PIN indication + eQMI_UIM_CHANGE_PIN, // 40 Change PIN + eQMI_UIM_CHANGE_PIN_IND = 40, // 40 Change PIN indication + eQMI_UIM_DEPERSONALIZATION, // 41 Depersonalization + eQMI_UIM_REFRESH_REGISTER, // 42 Refresh register + eQMI_UIM_REFRESH_OK, // 43 Validate refresh + eQMI_UIM_REFRESH_COMPLETE, // 44 Complete refresh + eQMI_UIM_GET_LAST_REFRESH_EVENT, // 45 Get last refresh event + eQMI_UIM_EVENT_REGISTRATION, // 46 Register for indications + eQMI_UIM_GET_CARD_STATUS, // 47 Get card status + eQMI_UIM_POWER_DOWN, // 48 Power down + eQMI_UIM_POWER_UP, // 49 Power up + eQMI_UIM_CARD_STATUS_IND, // 50 Card status indication + eQMI_UIM_REFRESH_IND, // 51 Refresh indication + eQMI_UIM_AUTHENTICATE, // 52 Authenticate + eQMI_UIM_AUTHENTICATE_IND = 52, // 52 Authenticate indication + eQMI_UIM_CLOSE_SESSION, // 53 Close session + eQMI_UIM_GET_SERVICE_STATUS, // 54 Get service status + eQMI_UIM_SET_SERVICE_STATUS, // 55 Set service status + eQMI_UIM_CHANGE_PROVISIONING, // 56 Change provisioning + eQMI_UIM_GET_LABEL, // 57 Get label + eQMI_UIM_GET_CONFIG, // 58 Get configuration + eQMI_UIM_SEND_ADPU, // 59 Send ADPU + eQMI_UIM_SEND_ADPU_IND = 59, // 59 Send ADPU indication + eQMI_UIM_SAP_CONNECTION, // 60 SAP connection + eQMI_UIM_SAP_REQUEST, // 61 SAP request + eQMI_UIM_SAP_CONNECTION_IND, // 62 SAP connection indication + eQMI_UIM_LOGICAL_CHANNEL, // 63 Logical channel + eQMI_UIM_SUBSCRIPTION_OK, // 64 OK to publish subscription? + eQMI_UIM_GET_ATR, // 65 Get ATR + eQMI_UIM_SESSION_CLOSED_IND, // 67 Session closed indication + eQMI_UIM_REGISTER_REFRESH_ALL, // 68 Register for all refresh + eQMI_UIM_SET_FILE_STATUS // 69 Set file status +}; + +// Enum to describe QMI PBM Message types +enum eQMIMessagePBM:WORD +{ + eQMI_PBM_INDICATION_REG = 1, // 01 Set indication registration state + eQMI_PBM_GET_CAPABILITIES, // 02 Get phonebook capabilities by type + eQMI_PBM_GET_ALL_CAPABILITIES, // 03 Get all phonebook capabilities + eQMI_PBM_READ_RECORDS, // 04 Read phonebook records + eQMI_PBM_READ_RECORD_IND = 4, // 04 Read phonebook record indication + eQMI_PBM_WRITE_RECORD, // 05 Add/modify a phonebook record + eQMI_PBM_DELETE_RECORD, // 06 Delete a phonebook record + eQMI_PBM_DELETE_ALL_RECORDS, // 07 Delete all phonebook records + eQMI_PBM_SEARCH_RECORDS, // 08 Search phonebook records + eQMI_PBM_RECORD_UPDATE_IND, // 09 Phonebook record update indication + eQMI_PBM_REFRESH_IND, // 10 Phonebook refresh indication + eQMI_PBM_READY_IND, // 11 Phonebook ready indication + eQMI_PBM_EMERGENCY_LIST_IND, // 12 Phonebook emergency list indication + eQMI_PBM_ALL_READY_IND, // 13 All phonebooks ready indication + eQMI_PBM_GET_EMERGENCY_LIST, // 14 Get phonebook emergency list + eQMI_PBM_GET_ALL_GROUPS, // 15 Get all phonebook groups + eQMI_PBM_SET_GROUP_INFO, // 16 Set phonebook group info + eQMI_PBM_GET_STATE, // 17 Get phonebook state + eQMI_PBM_READ_ALL_HIDDEN_RECS, // 18 Read all hidden phonebook records + eQMI_PBM_HIDDEN_REC_STATUS_IND, // 19 Hidden record status indication + eQMI_PBM_GET_NEXT_EMPTY_REC_ID, // 20 Get next empty record ID + eQMI_PBM_GET_NEXT_REC_ID, // 21 Get next non-empty record ID + eQMI_PBM_GET_AAS_LIST, // 22 Get AAS list + eQMI_PBM_SET_AAS, // 23 Add/modify/delete AAS entry + eQMI_PBM_UPDATE_AAS_IND, // 24 AAS change indication + eQMI_PBM_UPDATE_GAS_IND, // 25 GAS change indication + eQMI_PBM_BIND_SUBSCRIPTION, // 26 Bind client to specific subscription + eQMI_PBM_GET_SUBSCRIPTION, // 27 Get subscription client is bound to + eQMI_PBM_SET_CAPS_READ_OP, // 28 ADN set capabilities read operation + eQMI_PBM_SET_CAPS_READ_IND = 28, // 28 ADN set caps read op indication + eQMI_PBM_EX_READ_RECORDS, // 29 Read phonebook records + eQMI_PBM_EX_READ_RECORD_IND = 29,// 29 Read phonebook record indication + eQMI_PBM_EX_WRITE_RECORD, // 30 Add/modify a phonebook record + eQMI_PBM_EX_SEARCH_RECORDS, // 31 Search phonebook records + eQMI_PBM_EX_READ_ALL_HIDDEN_RECS,// 32 Read all hidden phonebook records + eQMI_PBM_SIM_INIT_DONE_IND, // 33 SIM initialization done indication + eQMI_PBM_READ_UNDC_RECS, // 34 Read undecoded phonebook records + eQMI_PBM_READ_UNDC_RECS_IND = 34 // 34 Read undecoded phonebook record ind +}; + +// Enum to describe QMI LOC Message types +enum eQMIMessageLOC:WORD +{ + eQMI_LOC_GET_MESSAGES = 30, // 030 Get supported messages + eQMI_LOC_GET_FIELDS, // 031 Get supported fields + eQMI_LOC_CLIENT_REVISION, // 032 Send client revision to service + eQMI_LOC_REGISTER_EVENTS, // 033 Register for events/indications + eQMI_LOC_START, // 034 Start GPS session + eQMI_LOC_STOP, // 035 Start GPS session + eQMI_LOC_POSITION_REPORT_IND, // 036 Position report indication + eQMI_LOC_GNSS_SAT_INFO_IND, // 037 GNSS satellite info indication + eQMI_LOC_NMEA_IND, // 038 NMEA sentence indication + eQMI_LOC_NETWORK_REQ_IND, // 039 Network initiated request indication + eQMI_LOC_INJECT_TIME_REQ_IND, // 040 Inject time request indication + eQMI_LOC_INJECT_ORBITS_REQ_IND, // 041 Inject predicted orbits req ind + eQMI_LOC_INJECT_POS_REQ_IND, // 042 Inject position request indication + eQMI_LOC_ENGINE_STATE_IND, // 043 Engine state indication + eQMI_LOC_FIX_SESSION_STATE_IND, // 044 Fi session state indication + eQMI_LOC_WIFI_REQ_IND, // 045 Wi-Fi request indication + eQMI_LOC_SENSOR_DATA_IND, // 046 Sensor streaming ready status ind + eQMI_LOC_INJECT_TIME_SYNC_IND, // 047 Inject time sync data indication + eQMI_LOC_SPI_STREAM_REQ_IND, // 048 SPI streaming reports req indication + eQMI_LOC_SVR_CONNECTION_REQ_IND, // 049 Server connection req indication + eQMI_LOC_GET_REV_REQ, // 050 Get service revision + eQMI_LOC_GET_REV_REQ_IND = 50, // 050 Get service revision indication + eQMI_LOC_GET_FIX_CRIT, // 051 Get fix criteria + eQMI_LOC_GET_FIX_CRIT_IND = 51, // 051 Get fix criteria indication + eQMI_LOC_NI_USER_RSP, // 052 Network initiated user response + eQMI_LOC_NI_USER_RSP_IND = 52, // 052 Network initiated user response ind + eQMI_LOC_INJECT_ORBITS, // 053 Inject predicted orbits data + eQMI_LOC_INJECT_ORBITS_IND = 53, // 053 Inject predicted orbits indication + eQMI_LOC_GET_ORBIT_SRC, // 054 Get predicted orbits data source + eQMI_LOC_GET_ORBIT_SRC_IND = 54, // 054 Get predicted orbits data source ind + eQMI_LOC_GET_ORBIT_VLD, // 055 Get predicted orbits data validity + eQMI_LOC_GET_ORBIT_VLD_IND = 55, // 055 Get predicted orbits validity ind + eQMI_LOC_INJECT_UTC, // 056 Inject UTC time + eQMI_LOC_INJECT_UTC_IND = 56, // 056 Inject UTC time indication + eQMI_LOC_INJECT_POS, // 057 Inject position + eQMI_LOC_INJECT_POS_IND = 57, // 057 Inject position indication + eQMI_LOC_SET_ENG_LOCK, // 058 Set engine lock + eQMI_LOC_SET_ENG_LOCK_IND = 58, // 058 Set engine lock indication + eQMI_LOC_GET_ENG_LOCK, // 059 Get engine lock + eQMI_LOC_GET_ENG_LOCK_IND = 59, // 059 Get engine lock indication + eQMI_LOC_SET_SBAS_CFG, // 060 Set SBAS config + eQMI_LOC_SET_SBAS_CFG_IND = 60, // 060 Set SBAS config indication + eQMI_LOC_GET_SBAS_CFG, // 061 Get SBAS config + eQMI_LOC_GET_SBAS_CFG_IND = 61, // 061 Get SBAS config indication + eQMI_LOC_SET_NMEA_TYPS, // 062 Set NMEA sentence types + eQMI_LOC_SET_NMEA_TYPS_IND = 62, // 062 Set NMEA sentence types indication + eQMI_LOC_GET_NMEA_TYPS, // 063 Get NMEA sentence types + eQMI_LOC_GET_NMEA_TYPS_IND = 63, // 063 Get NMEA sentence types indication + eQMI_LOC_SET_LPM_CFG, // 064 Set low power mode config + eQMI_LOC_SET_LPM_CFG_IND = 64, // 064 Set low power mode config indication + eQMI_LOC_GET_LPM_CFG, // 065 Get low power mode config + eQMI_LOC_GET_LPM_CFG_IND = 65, // 065 Get low power mode config indication + eQMI_LOC_SET_SERVER, // 066 Set A-GPS server + eQMI_LOC_SET_SERVER_IND = 66, // 066 Set A-GPS server indication + eQMI_LOC_GET_SERVER, // 067 Set A-GPS server + eQMI_LOC_GET_SERVER_IND = 67, // 067 Set A-GPS server indication + eQMI_LOC_DEL_ASST_DATA, // 068 Delete assistance data + eQMI_LOC_DEL_ASST_DATA_IND = 68, // 068 Delete assistance data indication + eQMI_LOC_SET_XTRA_T, // 069 Set XTRA_T session control + eQMI_LOC_SET_XTRA_T_IND = 69, // 069 Set XTRA_T session control indication + eQMI_LOC_GET_XTRA_T, // 070 Get XTRA_T session control + eQMI_LOC_GET_XTRA_T_IND = 70, // 070 Get XTRA_T session control indication + eQMI_LOC_INJECT_WIFI, // 071 Inject Wi-Fi info + eQMI_LOC_INJECT_WIFI_IND = 71, // 071 Inject Wi-Fi info indication + eQMI_LOC_NOTIFY_WIFI, // 072 Notify server of Wi-Fi status + eQMI_LOC_NOTIFY_WIFI_IND = 72, // 072 Notify server of Wi-Fi status ind + eQMI_LOC_GET_REG_EVENTS, // 073 Get registered event status + eQMI_LOC_GET_REG_EVENTS_IND = 73,// 073 Get registered event status ind + eQMI_LOC_SET_OP_MODE, // 074 Set operation mode + eQMI_LOC_SET_OP_MODE_IND = 74, // 074 Set operation mode indication + eQMI_LOC_GET_OP_MODE, // 075 Get operation mode + eQMI_LOC_GET_OP_MODE_IND = 75, // 075 Get operation mode indication + eQMI_LOC_SET_SPI_STATUS, // 076 Set SPI status + eQMI_LOC_SET_SPI_STATUS_IND = 76,// 076 Set SPI status indication + eQMI_LOC_INJECT_SENSOR, // 077 Inject sensor data + eQMI_LOC_INJECT_SENSOR_IND = 77, // 077 Inject sensor data indication + eQMI_LOC_INJ_TIME_SYNC, // 078 Inject time sync data + eQMI_LOC_INJ_TIME_SYNC_IND = 78, // 078 Inject time sync data indication + eQMI_LOC_SET_CRADLE, // 079 Set cradle mount config + eQMI_LOC_SET_CRADLE_IND = 79, // 079 Set cradle mount config indication + eQMI_LOC_GET_CRADLE, // 080 Get cradle mount config + eQMI_LOC_GET_CRADLE_IND = 80, // 080 Get cradle mount config indication + eQMI_LOC_SET_EXT_POWER, // 081 Set external power config + eQMI_LOC_SET_EXT_POWER_IND = 81, // 081 Set external power config indication + eQMI_LOC_GET_EXT_POWER, // 082 Get external power config + eQMI_LOC_GET_EXT_POWER_IND = 82, // 082 Get external power config indication + eQMI_LOC_INFORM_CONN, // 083 Inform service of connection status + eQMI_LOC_INFORM_CONN_IND = 83, // 083 Inform connection status indication + eQMI_LOC_SET_PROTO_CFG, // 084 Set protocol config + eQMI_LOC_SET_PROTO_CFG_IND = 84, // 084 Set protocol config indication + eQMI_LOC_GET_PROTO_CFG, // 085 Get protocol config + eQMI_LOC_GET_PROTO_CFG_IND = 85, // 085 Get protocol config indication + eQMI_LOC_SET_SENSOR_CFG, // 086 Set sensor control config + eQMI_LOC_SET_SENSOR_CFG_IND = 86,// 086 Set sensor control config indication + eQMI_LOC_GET_SENSOR_CFG, // 087 Get sensor control config + eQMI_LOC_GET_SENSOR_CFG_IND = 87,// 087 Get sensor control config indication + eQMI_LOC_SET_SENSOR_PRP, // 088 Set sensor properties + eQMI_LOC_SET_SENSOR_PRP_IND = 88,// 088 Set sensor properties indication + eQMI_LOC_GET_SENSOR_PRP, // 089 Get sensor properties + eQMI_LOC_GET_SENSOR_PRP_IND = 89,// 089 Get sensor properties indication + eQMI_LOC_SET_SENSOR_PRF, // 090 Set sensor performance control + eQMI_LOC_SET_SENSOR_PRF_IND = 90,// 090 Set sensor performance control ind + eQMI_LOC_GET_SENSOR_PRF, // 091 Get sensor performance control + eQMI_LOC_GET_SENSOR_PRF_IND = 91,// 091 Get sensor performance control ind + eQMI_LOC_INJ_SUPL_CERT, // 092 Inject SUPL certificate + eQMI_LOC_INJ_SUPL_CERT_IND = 92, // 092 Inject SUPL certificate indication + eQMI_LOC_DEL_SUPL_CERT, // 093 Delete SUPL certificate + eQMI_LOC_DEL_SUPL_CERT_IND = 93, // 093 Delete SUPL certificate indication + eQMI_LOC_SET_ENGINE_CFG, // 094 Set position engine config + eQMI_LOC_SET_ENGINE_CFG_IND = 94,// 094 Set position engine config ind + eQMI_LOC_GET_ENGINE_CFG, // 095 Get position engine config + eQMI_LOC_GET_ENGINE_CFG_IND = 95,// 095 Get position engine config ind + eQMI_LOC_GEOFENCE_NOTIF_IND, // 096 Geofence notification indication + eQMI_LOC_GEOFENCE_ALERT_IND, // 097 Geofence alert indication + eQMI_LOC_GEOFENCE_BREACH_IND, // 098 Geofence breach indication + eQMI_LOC_ADD_GEOFENCE, // 099 Add circular geofence + eQMI_LOC_ADD_GEOFENCE_IND = 99, // 099 Add circular geofence indication + eQMI_LOC_DEL_GEOFENCE, // 100 Delete geofence + eQMI_LOC_DEL_GEOFENCE_IND = 100, // 100 Delete geofence indication + eQMI_LOC_QRY_GEOFENCE, // 101 Query geofence + eQMI_LOC_QRY_GEOFENCE_IND = 101, // 101 Query geofence indication + eQMI_LOC_EDIT_GEOFENCE, // 102 Edit geofence + eQMI_LOC_EDIT_GEOFENCE_IND = 102,// 102 Edit geofence indication + eQMI_LOC_GET_BEST_POS, // 103 Get best available position + eQMI_LOC_GET_BEST_POS_IND = 103, // 103 Get best available position ind + eQMI_LOC_INJ_MOTION, // 104 Inject motion data + eQMI_LOC_INJ_MOTION_IND = 104, // 104 Inject motion data indication + eQMI_LOC_GET_NI_GF_IDS, // 105 Get NI geofence ID list + eQMI_LOC_GET_NI_GF_IDS_IND = 105,// 105 Get NI geofence ID list indication + eQMI_LOC_INJ_GSM_CELL, // 106 Inject GSM cell info + eQMI_LOC_INJ_GSM_CELL_IND = 106, // 106 Inject GSM cell info indication + eQMI_LOC_INJ_NI_MSG, // 107 Inject network initiated message + eQMI_LOC_INJ_NI_MSG_IND = 107, // 107 Inject NI message indication + eQMI_LOC_WWAN_OOS, // 108 Notify WWAN is now OOS + eQMI_LOC_WWAN_OOS_IND = 108, // 108 Notify WWAN is now OOS indication + eQMI_PEDOMETER_CTRL_IND, // 109 Pedometer control indication + eQMI_MOTION_DATA_CTRL_IND, // 110 Motion data control indication + eQMI_LOC_INJ_PEDOMETER, // 111 Inject pedometer data + eQMI_LOC_INJ_PEDOMETER_IND = 111,// 111 Inject pedometer data indication + eQMI_LOC_INJ_WCDMA_CI, // 112 Inject WCDMA cell info + eQMI_LOC_INJ_WCDMA_CI_IND = 112, // 112 Inject WCDMA cell info indication + eQMI_LOC_INJ_TDSCDMA, // 113 Inject TD-SCDMA cell info + eQMI_LOC_INJ_TDSCDMA_IND = 113, // 113 Inject TD-SCDMA cell info indication + eQMI_LOC_INJ_SUBS_ID, // 114 Inject subscriber ID + eQMI_LOC_INJ_SUBS_ID_IND = 114 // 114 Inject subscriber ID indication +}; + +// Enum to describe QMI WDA Message types +enum eQMIMessageWDA:WORD +{ + eQMI_WDA_GET_MESSAGES = 30, // 30 Get supported messages + eQMI_WDA_GET_FIELDS, // 31 Get supported fields + eQMI_WDA_SET_DATA_FORMAT, // 32 + eQMI_WDA_GET_DATA_FORMAT, // 33 + eQMI_WDA_ENABLE_PKT_FILTER, // 34 + eQMI_WDA_DISABLE_PKT_FILTER, // 35 + eQMI_WDA_GET_PKT_FILTER_STATE, // 36 + eQMI_WDA_ADD_PKT_FILTER_RULE, // 37 + eQMI_WDA_DELETE_PKT_FILTER_RULE, // 38 + eQMI_WDA_GET_PKT_FILTER_RULE_HANDLES, // 39 + eQMI_WDA_GET_PKT_FILTER_RULE, // 40 + eQMI_WDA_SET_LOOPBACK_STATE, // 41 + eQMI_WDA_GET_LOOPBACK_STATE, // 42 +}; + +// Enum to describe QMI QCMAP Message types +enum eQMIMessageQCMAP:WORD +{ + eQMI_QCMAP_ENABLE = 32, // 32 + eQMI_QCMAP_DISABLE, // 33 + eQMI_QCMAP_BRING_UP_WWAN, // 34 + eQMI_QCMAP_BRING_UP_WWAN_IND = 34, // 34 + eQMI_QCMAP_TEAR_DOWN_WWAN, // 35 + eQMI_QCMAP_TEAR_DOWN_WWAN_IND = 35, // 35 + eQMI_QCMAP_GET_WWAN_STATUS, // 36 + eQMI_QCMAP_GET_IPSEC_VPN_PASSTHROUGH, // 37 + eQMI_QCMAP_SET_IPSEC_VPN_PASSTHROUGH, // 38 + eQMI_QCMAP_GET_PPTP_VPN_PASSTHROUGH, // 39 + eQMI_QCMAP_SET_PPTP_VPN_PASSTHROUGH, // 40 + eQMI_QCMAP_GET_L2TP_VPN_PASSTHROUGH, // 41 + eQMI_QCMAP_SET_L2TP_VPN_PASSTHROUGH, // 42 + eQMI_QCMAP_GET_DYNAMIC_NAT_ENTRY_TO, // 43 + eQMI_QCMAP_SET_DYNAMIC_NAT_ENTRY_TO, // 44 + eQMI_QCMAP_ADD_SNAT_ENTRY, // 45 + eQMI_QCMAP_DELETE_SNAT_ENTRY, // 46 + eQMI_QCMAP_GET_SNAT_ENTRIES, // 47 + eQMI_QCMAP_SET_DMZ, // 48 + eQMI_QCMAP_DELETE_DMZ, // 49 + eQMI_QCMAP_GET_DMZ, // 50 + eQMI_QCMAP_GET_WWAN_CONFIG, // 51 + eQMI_QCMAP_ENABLE_FIREWALL_SETTING, // 52 + eQMI_QCMAP_GET_FIREWALL_SETTING, // 53 + eQMI_QCMAP_DISABLE_FIREWALL_SETTING, // 54 + eQMI_QCMAP_ADD_FIREWALL_CONFIG, // 55 + eQMI_QCMAP_GET_FIREWALL_CONFIG, // 56 + eQMI_QCMAP_DELETE_FIREWALL_CONFIG, // 57 + eQMI_QCMAP_WWAN_STATUS_IND_REG, // 58 + eQMI_QCMAP_STATION_MODE_ENABLE, // 59 + eQMI_QCMAP_STATION_MODE_DISABLE, // 60 + eQMI_QCMAP_GET_STATION_MODE, // 61 + eQMI_QCMAP_WWAN_STATUS_IND, // 62 + eQMI_QCMAP_ADD_EXT_FIREWALL_CONFIG, // 63 + eQMI_QCMAP_GET_EXT_FIREWALL_CONFIG, // 64 + eQMI_QCMAP_GET_FIREWALL_HANDLES, // 65 + eQMI_QCMAP_CHANGE_NAT_TYPE, // 66 + eQMI_QCMAP_GET_NAT_TYPE // 67 +}; + +// Enum to describe QMI PDC Message types +enum eQMIMessagePDC:WORD +{ + eQMI_PDC_RESET = 0, // 00 Reset the PDC service + + eQMI_PDC_REG_INDICATIONS = 32, // 32 Register for indications + eQMI_PDC_CFG_CHANGE_IND, // 33 Config change indication + eQMI_PDC_GET_CFG, // 34 Get selected config + eQMI_PDC_GET_CFG_IND = 34, // 34 Get selected config indication + eQMI_PDC_SET_CFG, // 35 Set selected config + eQMI_PDC_SET_CFG_IND = 35, // 35 Set selected config indication + eQMI_PDC_LIST_CFGS, // 36 List configs + eQMI_PDC_LIST_CFGS_IND = 36, // 36 List configs indication + eQMI_PDC_DEL_CFG, // 37 Delete config + eQMI_PDC_DEL_CFG_IND = 37, // 37 Delete config indication + eQMI_PDC_LOAD_CFG, // 38 Load config + eQMI_PDC_LOAD_CFG_IND = 38, // 38 Load config indication + eQMI_PDC_ACTIVATE_CFG, // 39 Activate config + eQMI_PDC_ACTIVATE_CFG_IND = 39, // 39 Activate config indication + eQMI_PDC_GET_CFG_INFO, // 40 Get config info + eQMI_PDC_GET_CFG_INFO_IND = 40, // 40 Get config info indication + eQMI_PDC_GET_CFG_LIMITS, // 41 Get config limits + eQMI_PDC_GET_CFG_LIMITS_IND = 41, // 41 Get config limits indication + eQMI_PDC_GET_DEF_CFG_INFO, // 42 Get default config info + eQMI_PDC_GET_DEF_CFG_INFO_IND = 42, // 42 Get default config info indication + eQMI_PDC_DEACTIVATE_CFG, // 43 Deactivate active config + eQMI_PDC_DEACTIVATE_CFG_IND = 43, // 43 Deactivate active config ind +}; + +// Enum to describe QMI RFRPE Message types +enum eQMIMessageRFRPE:WORD +{ + eQMI_RFRPE_SET_RFM_SCENARIO = 32, // 32 Set RFM scenario + eQMI_RFRPE_GET_RFM_SCENARIO, // 33 Get RFM scenario + eQMI_RFRPE_GET_TABLE_REVISION, // 34 Get provisioned table revision +}; + +// Enum to describe QMI CAT Message types +enum eQMIMessageCAT:WORD +{ + eQMI_CAT_RESET, // 00 Reset CAT service state variables + eQMI_CAT_SET_EVENT, // 01 Set new message report conditions + eQMI_CAT_EVENT_IND = 1, // 01 New message report indication + + eQMI_CAT_GET_MESSAGES = 30, // 30 Get supported messages + eQMI_CAT_GET_FIELDS, // 31 Get supported fields + eQMI_CAT_GET_STATE, // 32 Get service state information + eQMI_CAT_SEND_TERMINAL, // 33 Send a terminal response + eQMI_CAT_SEND_ENVELOPE, // 34 Send an envelope command + eQMI_CAT_GET_EVENT, // 35 Get last message report + eQMI_CAT_SEND_DECODED_TERMINAL, // 36 Send a decoded terminal response + eQMI_CAT_SEND_DECODED_ENVELOPE, // 37 Send a decoded envelope command + eQMI_CAT_EVENT_CONFIRMATION, // 38 Event confirmation + eQMI_CAT_SCWS_OPEN_CHANNEL, // 39 Open a channel to a SCWS + eQMI_CAT_SCWS_OPEN_IND = 39, // 39 SCWS open channel indication + eQMI_CAT_SCWS_CLOSE_CHANNEL, // 40 Close a channel to a SCWS + eQMI_CAT_SCWS_CLOSE_IND = 40, // 40 SCWS close channel indication + eQMI_CAT_SCWS_SEND_DATA, // 41 Send data to a SCWS + eQMI_CAT_SCWS_SEND_IND = 41, // 41 SCWS send data indication + eQMI_CAT_SCWS_DATA_AVAILABLE, // 42 Indicate that data is available + eQMI_CAT_SCWS_CHANNEL_STATUS, // 43 Provide channel status + eQMI_CAT_GET_TERMINAL_PROFILE, // 44 Get current modem terminal profile + eQMI_CAT_SET_CONFIG, // 45 Set configuration + eQMI_CAT_GET_CONFIG // 46 Get configuration +}; + +// Enum to describe QMI RMS Message types +enum eQMIMessageRMS:WORD +{ + eQMI_RMS_RESET, // 00 Reset RMS service state variables + + eQMI_RMS_GET_SMS_WAKE = 32, // 32 Get SMS wake settings + eQMI_RMS_SET_SMS_WAKE // 33 Set SMS wake settings +}; + +// Enum to describe QMI OMA Message types +enum eQMIMessageOMA:WORD +{ + eQMI_OMA_RESET, // 00 Reset OMA service state variables + eQMI_OMA_SET_EVENT, // 01 Set OMA report conditions + eQMI_OMA_EVENT_IND = 1, // 01 OMA report indication + + eQMI_OMA_START_SESSION = 32, // 32 Start client inititated session + eQMI_OMA_CANCEL_SESSION, // 33 Cancel session + eQMI_OMA_GET_SESSION_INFO, // 34 Get session information + eQMI_OMA_SEND_SELECTION, // 35 Send selection for net inititated msg + eQMI_OMA_GET_FEATURES, // 36 Get feature settings + eQMI_OMA_SET_FEATURES // 37 Set feature settings +}; + +// Enum to describe QMI AUTH AKA Result +enum eQMIAUTHAKAResult:UINT8 +{ + eQMIAUTHAKAResult_Success = 0, + eQMIAUTHAKAResult_SyncFailure = 1, + eQMIAUTHAKAResult_Failure = 2, +}; + +// Enum to describe QMI AUTH AKA Version +enum eQMIAUTHAKAVersion:UINT8 +{ + eQMIAUTHAKAVersion_Version1 = 0, + eQMIAUTHAKAVersion_Version2 = 1, +}; + +// Enum to describe QMI AUTH EAP Result +enum eQMIAUTHEAPResult:UINT8 +{ + eQMIAUTHEAPResult_Success = 0, + eQMIAUTHEAPResult_Failure = 1, +}; + +// Enum to describe QMI AUTH SIM AKA Algorithm +enum eQMIAUTHSIMAKAAlgorithm:UINT32 +{ + eQMIAUTHSIMAKAAlgorithm_None = 0, + eQMIAUTHSIMAKAAlgorithm_SHA1 = 1, + eQMIAUTHSIMAKAAlgorithm_MILENAGE = 2, + eQMIAUTHSIMAKAAlgorithm_CAVE = 3, + eQMIAUTHSIMAKAAlgorithm_GSM = 4, + eQMIAUTHSIMAKAAlgorithm_USIMGSM = 5, +}; + +// Enum to describe QMI CAT Activate Targets +enum eQMICATActivateTargets:UINT8 +{ + eQMICATActivateTargets_UICCCLFInterface = 1, +}; + +// Enum to describe QMI CAT Address NPI +enum eQMICATAddressNPI:UINT8 +{ + eQMICATAddressNPI_Unknown = 0, + eQMICATAddressNPI_ISDNTelephony = 1, + eQMICATAddressNPI_DataNPI = 2, + eQMICATAddressNPI_TelexNPI = 3, + eQMICATAddressNPI_PrivateNPI = 4, + eQMICATAddressNPI_ExtensionIsReserved = 15, +}; + +// Enum to describe QMI CAT Address TON +enum eQMICATAddressTON:UINT8 +{ + eQMICATAddressTON_Unknown = 0, + eQMICATAddressTON_InternationalNumber = 1, + eQMICATAddressTON_NationalNumber = 2, + eQMICATAddressTON_NetworkSpecificNumber = 3, +}; + +// Enum to describe QMI CAT Address Type +enum eQMICATAddressType:UINT8 +{ + eQMICATAddressType_NoAddressGiven = 1, + eQMICATAddressType_Dynamic = 2, + eQMICATAddressType_IPv4 = 3, + eQMICATAddressType_IPv6 = 4, +}; + +// Enum to describe QMI CAT Alpha ID Command Type +enum eQMICATAlphaIDCommandType:UINT8 +{ + eQMICATAlphaIDCommandType_SendSMSProactiveCommand = 1, +}; + +// Enum to describe QMI CAT Bearer +enum eQMICATBearer:UINT8 +{ + eQMICATBearer_SMS = 0, + eQMICATBearer_CSD = 1, + eQMICATBearer_USSD = 2, + eQMICATBearer_GPRS = 3, + eQMICATBearer_Default = 4, +}; + +// Enum to describe QMI CAT Bearer Capability Repeat Indicator +enum eQMICATBearerCapabilityRepeatIndicator:UINT8 +{ + eQMICATBearerCapabilityRepeatIndicator_AlternateMode = 0, + eQMICATBearerCapabilityRepeatIndicator_SequentialMode = 1, +}; + +// Enum to describe QMI CAT Bearer Independent Protocol Status +enum eQMICATBearerIndependentProtocolStatus:UINT32 +{ + eQMICATBearerIndependentProtocolStatus_InProgress = 0, + eQMICATBearerIndependentProtocolStatus_End = 1, +}; + +// Enum to describe QMI CAT Browser Termination Causes +enum eQMICATBrowserTerminationCauses:UINT32 +{ + eQMICATBrowserTerminationCauses_UserTerminated = 0, + eQMICATBrowserTerminationCauses_ErrorTerminated = 1, +}; + +// Enum to describe QMI CAT CSD Bearer Name +enum eQMICATCSDBearerName:UINT8 +{ + eQMICATCSDBearerName_DataCircuitAsyncUDIOr31kHzModem = 0, + eQMICATCSDBearerName_DataCircuitSyncUDIOr31kHzModem = 1, + eQMICATCSDBearerName_PADAccessAsyncUDI = 2, + eQMICATCSDBearerName_PacketAccessSyncUDI = 3, + eQMICATCSDBearerName_DataCircuitAsyncRDI = 4, + eQMICATCSDBearerName_DataCircuitSyncRDI = 5, + eQMICATCSDBearerName_PADAccessAsyncRDI = 6, + eQMICATCSDBearerName_PacketAccessSyncRDI = 7, +}; + +// Enum to describe QMI CAT Call Control Result +enum eQMICATCallControlResult:UINT8 +{ + eQMICATCallControlResult_AllowedWithNoModification = 0, + eQMICATCallControlResult_NotAllowed = 1, + eQMICATCallControlResult_AllowedWithModification = 2, +}; + +// Enum to describe QMI CAT Call Setup Requirement +enum eQMICATCallSetupRequirement:UINT8 +{ + eQMICATCallSetupRequirement_NoOtherCalls = 0, + eQMICATCallSetupRequirement_HoldActiveCalls = 1, + eQMICATCallSetupRequirement_DisconnectActiveCalls = 2, +}; + +// Enum to describe QMI CAT Call Types +enum eQMICATCallTypes:UINT32 +{ + eQMICATCallTypes_Voice = 0, + eQMICATCallTypes_SS = 1, + eQMICATCallTypes_USSD = 2, + eQMICATCallTypes_SMS = 3, +}; + +// Enum to describe QMI CAT Channel State +enum eQMICATChannelState:UINT8 +{ + eQMICATChannelState_ClosedState = 0, + eQMICATChannelState_ListenState = 1, + eQMICATChannelState_EstablishedState = 2, +}; + +// Enum to describe QMI CAT Command Format +enum eQMICATCommandFormat:UINT8 +{ + eQMICATCommandFormat_Raw = 1, + eQMICATCommandFormat_Decoded = 2, +}; + +// Enum to describe QMI CAT Command ID +enum eQMICATCommandID:UINT8 +{ + eQMICATCommandID_DisplayText = 1, + eQMICATCommandID_GetInkey = 2, + eQMICATCommandID_GetInput = 3, + eQMICATCommandID_LaunchBrowser = 4, + eQMICATCommandID_PlayTone = 5, + eQMICATCommandID_SelectItem = 6, + eQMICATCommandID_SendSMS = 7, + eQMICATCommandID_SendSS = 8, + eQMICATCommandID_SendUSSD = 9, + eQMICATCommandID_SetupCallUserConfiguration = 10, + eQMICATCommandID_SetupCallAlphaDisplay = 11, + eQMICATCommandID_SetupMenu = 12, + eQMICATCommandID_SetupIdleText = 13, + eQMICATCommandID_ProvideLocalInformationLanguage = 14, + eQMICATCommandID_SendDTMF = 15, + eQMICATCommandID_LanguageNotification = 16, + eQMICATCommandID_SetupEventUserActivity = 17, + eQMICATCommandID_SetupEventIdleScreenNotify = 18, + eQMICATCommandID_SetupEventLanguageSelectionNotify = 19, + eQMICATCommandID_OpenChannel = 20, + eQMICATCommandID_CloseChannel = 21, + eQMICATCommandID_ReceiveData = 22, + eQMICATCommandID_SendData = 23, + eQMICATCommandID_Activate = 24, + eQMICATCommandID_SetupEventHCIConnectivity = 25, + eQMICATCommandID_SetupEventBrowserTermination = 32, +}; + +// Enum to describe QMI CAT Config Modes +enum eQMICATConfigModes:UINT8 +{ + eQMICATConfigModes_DisabledMode = 0, + eQMICATConfigModes_GobiMode = 1, + eQMICATConfigModes_AndroidMode = 2, + eQMICATConfigModes_DecodedMode = 3, + eQMICATConfigModes_DecodedPullOnlyMode = 4, + eQMICATConfigModes_CustomRawMode = 5, + eQMICATConfigModes_CustomDecodedMode = 6, +}; + +// Enum to describe QMI CAT Connection Element +enum eQMICATConnectionElement:UINT8 +{ + eQMICATConnectionElement_Transparent = 0, + eQMICATConnectionElement_Nontransparent = 1, + eQMICATConnectionElement_BothTransparentPreferred = 2, + eQMICATConnectionElement_BothNontransparentPreferred = 3, +}; + +// Enum to describe QMI CAT Data Coding Scheme +enum eQMICATDataCodingScheme:UINT8 +{ + eQMICATDataCodingScheme_7BitGSM = 0, + eQMICATDataCodingScheme_8BitGSM = 1, + eQMICATDataCodingScheme_UCS2 = 2, +}; + +// Enum to describe QMI CAT Decoded Envelope Command +enum eQMICATDecodedEnvelopeCommand:UINT16 +{ + eQMICATDecodedEnvelopeCommand_MenuSelection = 1, + eQMICATDecodedEnvelopeCommand_EventDownloadLanguageSelection = 2, + eQMICATDecodedEnvelopeCommand_EventDownloadUserActivity = 3, + eQMICATDecodedEnvelopeCommand_EventDownloadIdleScreenAvailable = 4, + eQMICATDecodedEnvelopeCommand_SendCallControl = 5, + eQMICATDecodedEnvelopeCommand_EventDownloadHCIConnectivity = 6, + eQMICATDecodedEnvelopeCommand_EventBrowserTermination = 7, + eQMICATDecodedEnvelopeCommand_SMSPPDataDownload = 8, + eQMICATDecodedEnvelopeCommand_EventDownloadMTCall = 9, + eQMICATDecodedEnvelopeCommand_EventDownloadMTCallConnected = 10, + eQMICATDecodedEnvelopeCommand_EventDownloadMOCallConnected = 11, + eQMICATDecodedEnvelopeCommand_EventDownloadCallDisconnectedNearEnd = 12, + eQMICATDecodedEnvelopeCommand_EventDownloadCallDisconnectedFarEnd = 13, +}; + +// Enum to describe QMI CAT Deliver Error SDU +enum eQMICATDeliverErrorSDU:UINT8 +{ + eQMICATDeliverErrorSDU_No = 0, + eQMICATDeliverErrorSDU_Yes = 1, + eQMICATDeliverErrorSDU_NoDetect = 2, + eQMICATDeliverErrorSDU_SubscribedValue = 3, +}; + +// Enum to describe QMI CAT Delivery Order +enum eQMICATDeliveryOrder:UINT8 +{ + eQMICATDeliveryOrder_No = 0, + eQMICATDeliveryOrder_Yes = 1, + eQMICATDeliveryOrder_SubscribedValue = 2, +}; + +// Enum to describe QMI CAT Display Icon Only +enum eQMICATDisplayIconOnly:UINT8 +{ + eQMICATDisplayIconOnly_DoNotDisplayTheIcon = 0, + eQMICATDisplayIconOnly_DisplayOnlyTheIcon = 1, +}; + +// Enum to describe QMI CAT Envelope Command Type +enum eQMICATEnvelopeCommandType:UINT16 +{ + eQMICATEnvelopeCommandType_MenuSelection = 1, + eQMICATEnvelopeCommandType_EventDownloadUserActivity = 2, + eQMICATEnvelopeCommandType_EventDownloadIdleScreenAvailable = 3, + eQMICATEnvelopeCommandType_EventDownloadLanguageSelection = 4, + eQMICATEnvelopeCommandType_UnknownType = 5, + eQMICATEnvelopeCommandType_EventDownloadBrowserTermination = 6, + eQMICATEnvelopeCommandType_SendCallControl = 7, + eQMICATEnvelopeCommandType_EventDownloadHCIConnectivity = 8, + eQMICATEnvelopeCommandType_SMSPPDataDownload = 9, + eQMICATEnvelopeCommandType_EventDownloadMTCall = 10, + eQMICATEnvelopeCommandType_EventDownloadCallConnected = 11, + eQMICATEnvelopeCommandType_EventDownloadCallDisconnected = 12, +}; + +// Enum to describe QMI CAT Help Available +enum eQMICATHelpAvailable:UINT8 +{ + eQMICATHelpAvailable_NoHelpIsAvailable = 0, + eQMICATHelpAvailable_HelpIsAvailable = 1, +}; + +// Enum to describe QMI CAT Help Request +enum eQMICATHelpRequest:UINT8 +{ + eQMICATHelpRequest_NoHelpIsRequested = 0, + eQMICATHelpRequest_HelpIsRequested = 1, +}; + +// Enum to describe QMI CAT High Priority +enum eQMICATHighPriority:UINT8 +{ + eQMICATHighPriority_DoNotClearTheScreen = 0, + eQMICATHighPriority_ClearAnythingThatIsOnTheScreen = 1, +}; + +// Enum to describe QMI CAT Icon Is Displayed +enum eQMICATIconIsDisplayed:UINT8 +{ + eQMICATIconIsDisplayed_No = 0, + eQMICATIconIsDisplayed_Yes = 1, +}; + +// Enum to describe QMI CAT Icon Qualifier +enum eQMICATIconQualifier:UINT8 +{ + eQMICATIconQualifier_IconIsSelfExplanatory = 0, + eQMICATIconQualifier_IconIsNotSelfExplanatory = 1, +}; + +// Enum to describe QMI CAT Image Coding Scheme +enum eQMICATImageCodingScheme:UINT8 +{ + eQMICATImageCodingScheme_Unknown = 0, + eQMICATImageCodingScheme_Basic = 1, + eQMICATImageCodingScheme_Color = 2, +}; + +// Enum to describe QMI CAT Immediate Response +enum eQMICATImmediateResponse:UINT8 +{ + eQMICATImmediateResponse_No = 0, + eQMICATImmediateResponse_Yes = 1, +}; + +// Enum to describe QMI CAT Is CDMA SMS +enum eQMICATIsCDMASMS:UINT8 +{ + eQMICATIsCDMASMS_NotCDMASMS = 0, + eQMICATIsCDMASMS_CDMASMS = 1, +}; + +// Enum to describe QMI CAT Launch Mode +enum eQMICATLaunchMode:UINT8 +{ + eQMICATLaunchMode_LaunchIfNotAlreadyLaunched = 0, + eQMICATLaunchMode_UseTheExistingBrowser = 1, + eQMICATLaunchMode_CloseTheExistingBroswer = 2, +}; + +// Enum to describe QMI CAT Next Action +enum eQMICATNextAction:UINT8 +{ + eQMICATNextAction_SetupCall = 0, + eQMICATNextAction_SendSS = 1, + eQMICATNextAction_SendUSSD = 2, + eQMICATNextAction_SendShortMessage = 3, + eQMICATNextAction_LaunchBrowser = 4, + eQMICATNextAction_PlayTone = 5, + eQMICATNextAction_DisplayText = 6, + eQMICATNextAction_GetInkey = 7, + eQMICATNextAction_GetInput = 8, + eQMICATNextAction_SelectItem = 9, + eQMICATNextAction_SetupMenu = 10, + eQMICATNextAction_SetupIdleModeText = 11, + eQMICATNextAction_EndOfTheProactiveSession = 12, + eQMICATNextAction_ProvideLocalInformation = 13, +}; + +// Enum to describe QMI CAT Notification Required +enum eQMICATNotificationRequired:UINT8 +{ + eQMICATNotificationRequired_NotificationIsNotRequired = 0, + eQMICATNotificationRequired_NotificationIsRequired = 1, +}; + +// Enum to describe QMI CAT On Demand Link Establish +enum eQMICATOnDemandLinkEstablish:UINT8 +{ + eQMICATOnDemandLinkEstablish_LinkIsNotRequired = 0, + eQMICATOnDemandLinkEstablish_LinkIsRequired = 1, +}; + +// Enum to describe QMI CAT PDP Type +enum eQMICATPDPType:UINT8 +{ + eQMICATPDPType_IP = 2, +}; + +// Enum to describe QMI CAT Packet Data Protocol +enum eQMICATPacketDataProtocol:UINT8 +{ + eQMICATPacketDataProtocol_IP = 2, +}; + +// Enum to describe QMI CAT Packing Required +enum eQMICATPackingRequired:UINT8 +{ + eQMICATPackingRequired_PackingIsNotRequired = 0, + eQMICATPackingRequired_PackingIsRequired = 1, +}; + +// Enum to describe QMI CAT Presentation +enum eQMICATPresentation:UINT8 +{ + eQMICATPresentation_NotSpecified = 0, + eQMICATPresentation_DataValuePresentation = 1, + eQMICATPresentation_NavigationPresentation = 2, +}; + +// Enum to describe QMI CAT Proactive Session End Type +enum eQMICATProactiveSessionEndType:UINT8 +{ + eQMICATProactiveSessionEndType_EndProactiveSessionCommandReceivedFromTheCard = 1, + eQMICATProactiveSessionEndType_EndProactiveSessionInternalToME = 2, +}; + +// Enum to describe QMI CAT Radio Access Technologies +enum eQMICATRadioAccessTechnologies:UINT32 +{ + eQMICATRadioAccessTechnologies_Unknown = 0, + eQMICATRadioAccessTechnologies_GSM = 1, + eQMICATRadioAccessTechnologies_UTRAN = 2, + eQMICATRadioAccessTechnologies_CDMA = 3, + eQMICATRadioAccessTechnologies_LTE = 4, +}; + +// Enum to describe QMI CAT Redial Necessary +enum eQMICATRedialNecessary:UINT8 +{ + eQMICATRedialNecessary_RedialIsNotNecessary = 0, + eQMICATRedialNecessary_RedialIsNecessary = 1, +}; + +// Enum to describe QMI CAT Refresh Stage +enum eQMICATRefreshStage:UINT16 +{ + eQMICATRefreshStage_RefreshStart = 1, + eQMICATRefreshStage_RefreshSuccess = 2, + eQMICATRefreshStage_RefreshFailed = 3, +}; + +// Enum to describe QMI CAT Response Command +enum eQMICATResponseCommand:UINT8 +{ + eQMICATResponseCommand_DisplayText = 1, + eQMICATResponseCommand_GetInkey = 2, + eQMICATResponseCommand_GetInput = 3, + eQMICATResponseCommand_LaunchBrowser = 4, + eQMICATResponseCommand_PlayTone = 5, + eQMICATResponseCommand_SelectItemRequest = 6, + eQMICATResponseCommand_SetupMenu = 7, + eQMICATResponseCommand_SetupIdleText = 8, + eQMICATResponseCommand_ProvideLocalInformationLanguage = 9, + eQMICATResponseCommand_SetupEventUserActivity = 10, + eQMICATResponseCommand_SetupEventIdleScreenActivity = 11, + eQMICATResponseCommand_SetupEventLanguageSelectNotify = 12, + eQMICATResponseCommand_LanguageNotification = 13, + eQMICATResponseCommand_Activate = 14, + eQMICATResponseCommand_SetupEventHCIConnectivity = 15, + eQMICATResponseCommand_SetupEventBrowserTermination = 16, + eQMICATResponseCommand_SendSMS = 17, + eQMICATResponseCommand_SetupCall = 18, + eQMICATResponseCommand_SendDTMF = 19, + eQMICATResponseCommand_SendSS = 20, + eQMICATResponseCommand_SendUSSD = 21, +}; + +// Enum to describe QMI CAT Response Format +enum eQMICATResponseFormat:UINT8 +{ + eQMICATResponseFormat_SMSDefaultAlphabet = 0, + eQMICATResponseFormat_YesOrNo = 1, + eQMICATResponseFormat_NumericalOnly = 2, + eQMICATResponseFormat_UCS2 = 3, + eQMICATResponseFormat_ImmediateDigitResponse = 4, + eQMICATResponseFormat_YesOrNoOrImmediateDigitalResponse = 5, +}; + +// Enum to describe QMI CAT Response Packing Format +enum eQMICATResponsePackingFormat:UINT8 +{ + eQMICATResponsePackingFormat_UnpacketFormat = 0, + eQMICATResponsePackingFormat_PacketFormat = 1, +}; + +// Enum to describe QMI CAT Response Types +enum eQMICATResponseTypes:UINT32 +{ + eQMICATResponseTypes_TerminalResponse = 0, + eQMICATResponseTypes_EventConfirmation = 1, +}; + +// Enum to describe QMI CAT Send Data Immediately +enum eQMICATSendDataImmediately:UINT8 +{ + eQMICATSendDataImmediately_NoStoreInTXBuffer = 0, + eQMICATSendDataImmediately_Yes = 1, +}; + +// Enum to describe QMI CAT Send Data Result +enum eQMICATSendDataResult:UINT8 +{ + eQMICATSendDataResult_Failed = 0, + eQMICATSendDataResult_Success = 1, +}; + +// Enum to describe QMI CAT Show User Input +enum eQMICATShowUserInput:UINT8 +{ + eQMICATShowUserInput_DeviceCanShowAllCharacters = 0, + eQMICATShowUserInput_DeviceCanShowUserInput = 1, +}; + +// Enum to describe QMI CAT Slot +enum eQMICATSlot:UINT8 +{ + eQMICATSlot_Slot1 = 1, + eQMICATSlot_Slot2 = 2, + eQMICATSlot_Slot3 = 3, + eQMICATSlot_Slot4 = 4, + eQMICATSlot_Slot5 = 5, +}; + +// Enum to describe QMI CAT Softkey Selection +enum eQMICATSoftkeySelection:UINT8 +{ + eQMICATSoftkeySelection_SoftkeyIsNotSelected = 0, + eQMICATSoftkeySelection_SoftkeyIsSelected = 1, +}; + +// Enum to describe QMI CAT Specific Language Notfication +enum eQMICATSpecificLanguageNotfication:UINT8 +{ + eQMICATSpecificLanguageNotfication_No = 0, + eQMICATSpecificLanguageNotfication_Yes = 1, +}; + +// Enum to describe QMI CAT Time Units +enum eQMICATTimeUnits:UINT8 +{ + eQMICATTimeUnits_Minutes = 0, + eQMICATTimeUnits_Seconds = 1, + eQMICATTimeUnits_TenthsOfSeconds = 2, + eQMICATTimeUnits_DurationIsNotPresent = 255, +}; + +// Enum to describe QMI CAT Tone +enum eQMICATTone:UINT8 +{ + eQMICATTone_DialTone = 1, + eQMICATTone_CalledSubscriberBusy = 2, + eQMICATTone_Congestion = 3, + eQMICATTone_RadioPathAck = 4, + eQMICATTone_RadioPathNotAvailableCallDrop = 5, + eQMICATTone_ErrorTone = 6, + eQMICATTone_CallWaitingTone = 7, + eQMICATTone_RingingTone = 8, + eQMICATTone_GeneralBeep = 9, + eQMICATTone_PositiveAckTone = 10, + eQMICATTone_NegativeAckTone = 11, + eQMICATTone_RingingToneSelectedByUser = 12, + eQMICATTone_SMSAlertToneSelectedByUser = 13, + eQMICATTone_NotInUse = 255, +}; + +// Enum to describe QMI CAT Traffic Class +enum eQMICATTrafficClass:UINT8 +{ + eQMICATTrafficClass_Conversational = 0, + eQMICATTrafficClass_Streaming = 1, + eQMICATTrafficClass_Interactive = 2, + eQMICATTrafficClass_Background = 3, + eQMICATTrafficClass_SubscribedValue = 4, +}; + +// Enum to describe QMI CAT Transport Protocol +enum eQMICATTransportProtocol:UINT8 +{ + eQMICATTransportProtocol_NotPresent = 0, + eQMICATTransportProtocol_UDP = 1, + eQMICATTransportProtocol_TCP = 2, +}; + +// Enum to describe QMI CAT USSD Data Coding Scheme +enum eQMICATUSSDDataCodingScheme:UINT8 +{ + eQMICATUSSDDataCodingScheme_7BitGSM = 0, + eQMICATUSSDDataCodingScheme_8BitGSM = 1, + eQMICATUSSDDataCodingScheme_8BitUCS2 = 2, + eQMICATUSSDDataCodingScheme_7BitUCS2 = 3, +}; + +// Enum to describe QMI CAT User Confirmed +enum eQMICATUserConfirmed:UINT8 +{ + eQMICATUserConfirmed_No = 0, + eQMICATUserConfirmed_Yes = 1, +}; + +// Enum to describe QMI CAT User Control +enum eQMICATUserControl:UINT8 +{ + eQMICATUserControl_DoNotAllowUserToClearTheScreen = 0, + eQMICATUserControl_AllowUserToClearTheScreen = 1, +}; + +// Enum to describe QMI CTL Service Types +enum eQMICTLServiceTypes:UINT8 +{ + eQMICTLServiceTypes_Control = 0, + eQMICTLServiceTypes_WDS = 1, + eQMICTLServiceTypes_DMS = 2, + eQMICTLServiceTypes_NAS = 3, + eQMICTLServiceTypes_QOS = 4, + eQMICTLServiceTypes_WMS = 5, + eQMICTLServiceTypes_PDS = 6, + eQMICTLServiceTypes_AUTH = 7, + eQMICTLServiceTypes_AT = 8, + eQMICTLServiceTypes_Voice = 9, + eQMICTLServiceTypes_CAT2 = 10, + eQMICTLServiceTypes_UIM = 11, + eQMICTLServiceTypes_PBM = 12, + eQMICTLServiceTypes_QCHAT = 13, + eQMICTLServiceTypes_RMTFS = 14, + eQMICTLServiceTypes_TEST = 15, + eQMICTLServiceTypes_LOC = 16, + eQMICTLServiceTypes_SAR = 17, + eQMICTLServiceTypes_IMSS = 18, + eQMICTLServiceTypes_ADC = 19, + eQMICTLServiceTypes_CSD = 20, + eQMICTLServiceTypes_MFS = 21, + eQMICTLServiceTypes_TIME = 22, + eQMICTLServiceTypes_TS = 23, + eQMICTLServiceTypes_TMD = 24, + eQMICTLServiceTypes_SAP = 25, + eQMICTLServiceTypes_WDA = 26, + eQMICTLServiceTypes_TSYNC = 27, + eQMICTLServiceTypes_RFSA = 28, + eQMICTLServiceTypes_CSVT = 29, + eQMICTLServiceTypes_QCMAP = 30, + eQMICTLServiceTypes_IMSP = 31, + eQMICTLServiceTypes_IMSVT = 32, + eQMICTLServiceTypes_IMSA = 33, + eQMICTLServiceTypes_COEX = 34, + eQMICTLServiceTypes_PDC = 36, + eQMICTLServiceTypes_STX = 38, + eQMICTLServiceTypes_BIT = 39, + eQMICTLServiceTypes_IMSRTP = 40, + eQMICTLServiceTypes_RFRPE = 41, + eQMICTLServiceTypes_DSD = 42, + eQMICTLServiceTypes_SSCTL = 43, + eQMICTLServiceTypes_CAT = 224, + eQMICTLServiceTypes_RMS = 225, + eQMICTLServiceTypes_OMA = 226, +}; + +// Enum to describe QMI Call End Reasons +enum eQMICallEndReasons:UINT16 +{ + eQMICallEndReasons_Unknown = 0, + eQMICallEndReasons_Unspecified = 1, + eQMICallEndReasons_ClientEnd = 2, + eQMICallEndReasons_NoService = 3, + eQMICallEndReasons_Fade = 4, + eQMICallEndReasons_ReleaseNormal = 5, + eQMICallEndReasons_AccInProgress = 6, + eQMICallEndReasons_AccFailed = 7, + eQMICallEndReasons_RedirectOrHandoff = 8, + eQMICallEndReasons_CloseInProgress = 9, + eQMICallEndReasons_AuthenticationFailed = 10, + eQMICallEndReasons_InternalError = 11, + eQMICallEndReasons_CDMALock = 500, + eQMICallEndReasons_Intercept = 501, + eQMICallEndReasons_Reorder = 502, + eQMICallEndReasons_ReleaseServiceOptionRejected = 503, + eQMICallEndReasons_IncomingCall = 504, + eQMICallEndReasons_AlertStop = 505, + eQMICallEndReasons_Activation = 506, + eQMICallEndReasons_MaxAccessProbe = 507, + eQMICallEndReasons_CCSNotSupportedByBS = 508, + eQMICallEndReasons_NoResponseFromBS = 509, + eQMICallEndReasons_RejectedByBS = 510, + eQMICallEndReasons_Incompatible = 511, + eQMICallEndReasons_AlreadyInTC = 512, + eQMICallEndReasons_UserCallOrigDuringGPS = 513, + eQMICallEndReasons_UserCallOrigDuringSMS = 514, + eQMICallEndReasons_NoCDMAService = 515, + eQMICallEndReasons_ConfFailed = 1000, + eQMICallEndReasons_IncomingRejected = 1001, + eQMICallEndReasons_NoGWService = 1002, + eQMICallEndReasons_NetworkEnd = 1003, + eQMICallEndReasons_LLCOrSNDCPFailure = 1004, + eQMICallEndReasons_InsufficientResources = 1005, + eQMICallEndReasons_ServiceOptionOutOfOrder = 1006, + eQMICallEndReasons_NSAPIAlreadyUsed = 1007, + eQMICallEndReasons_RegularPDPContextDeactivation = 1008, + eQMICallEndReasons_NetworkFailure = 1009, + eQMICallEndReasons_ReactivationRequested = 1010, + eQMICallEndReasons_ProtocolError = 1011, + eQMICallEndReasons_OperatorDeterminedBarring = 1012, + eQMICallEndReasons_UnknownOrMissingAPN = 1013, + eQMICallEndReasons_UnknownPDPAddressOrPDPType = 1014, + eQMICallEndReasons_ActivationRejectedByGGSN = 1015, + eQMICallEndReasons_ActivationRejectedUnspecified = 1016, + eQMICallEndReasons_ServiceOptionNotSupported = 1017, + eQMICallEndReasons_RequestedServiceOptionNotSubscribed = 1018, + eQMICallEndReasons_QoSNotAccepted = 1019, + eQMICallEndReasons_SemanticErrorInTheTFTOperation = 1020, + eQMICallEndReasons_SyntacticalErrorInTheTFTOperation = 1021, + eQMICallEndReasons_UnknownPDPContext = 1022, + eQMICallEndReasons_SemanticErrorsInPacketFilters = 1023, + eQMICallEndReasons_SyntacticalErrorsInPacketFilters = 1024, + eQMICallEndReasons_PDPContextWithoutTFTAlreadyActivated = 1025, + eQMICallEndReasons_InvalidTransactionIdentifierValue = 1026, + eQMICallEndReasons_SemanticallyIncorrectMessage = 1027, + eQMICallEndReasons_InvalidMandatoryInformation = 1028, + eQMICallEndReasons_MessageTypeNonExistent = 1029, + eQMICallEndReasons_MessageNotCompatibleWithState = 1030, + eQMICallEndReasons_InformationElementNonexistent = 1031, + eQMICallEndReasons_ConditionalInformationElementError = 1032, + eQMICallEndReasons_MessageNotCompatibleWithProtocolState = 1033, + eQMICallEndReasons_APNRestrictionValueIncompatibleWithActivePDPContext = 1034, + eQMICallEndReasons_NoGPRSContextPresent = 1035, + eQMICallEndReasons_RequestedFeatureNotSupported = 1036, + eQMICallEndReasons_CDGenOrBusy = 1500, + eQMICallEndReasons_CDBillOrAuth = 1501, + eQMICallEndReasons_ChangeHDR = 1502, + eQMICallEndReasons_ExitHDR = 1503, + eQMICallEndReasons_HDRNoSession = 1504, + eQMICallEndReasons_HDROrigDuringGPSFix = 1505, + eQMICallEndReasons_HDRCSTimeout = 1506, + eQMICallEndReasons_HDRReleasedByCM = 1507, +}; + +// Enum to describe QMI Call History Types +enum eQMICallHistoryTypes:UINT8 +{ + eQMICallHistoryTypes_Full = 0, + eQMICallHistoryTypes_IDsOnly = 1, +}; + +// Enum to describe QMI Call Types +enum eQMICallTypes:UINT8 +{ + eQMICallTypes_NDIS = 0, + eQMICallTypes_DUN = 1, +}; + +// Enum to describe QMI Connection Status +enum eQMIConnectionStatus:UINT8 +{ + eQMIConnectionStatus_Disconnected = 1, + eQMIConnectionStatus_Connected = 2, + eQMIConnectionStatus_Suspended = 3, + eQMIConnectionStatus_Authenticating = 4, +}; + +// Enum to describe QMI DMS Activation States +enum eQMIDMSActivationStates:UINT16 +{ + eQMIDMSActivationStates_ServiceNotActivated = 0, + eQMIDMSActivationStates_SerivceActivated = 1, + eQMIDMSActivationStates_ActivationConnecting = 2, + eQMIDMSActivationStates_ActivationInProgress = 3, + eQMIDMSActivationStates_OTASPSecurityAuthenticated = 4, + eQMIDMSActivationStates_OTASPNAMDownloaded = 5, + eQMIDMSActivationStates_OTASPMDNDownloaded = 6, + eQMIDMSActivationStates_OTASPIMSIDownloaded = 7, + eQMIDMSActivationStates_OTASPPRLDownloaded = 8, + eQMIDMSActivationStates_OTASPSPCDownloaded = 9, + eQMIDMSActivationStates_OTASPSettingsCommitted = 10, +}; + +// Enum to describe QMI DMS Data Service Capabilities 1 +enum eQMIDMSDataServiceCapabilities1:UINT8 +{ + eQMIDMSDataServiceCapabilities1_NoDataServicesSupported = 0, + eQMIDMSDataServiceCapabilities1_OnlyCircuitSwitched = 1, + eQMIDMSDataServiceCapabilities1_OnlyPacketSwitched = 2, + eQMIDMSDataServiceCapabilities1_SimultaneousCircuitPacketSwitched = 3, + eQMIDMSDataServiceCapabilities1_NonsimultaneousCircuitPacketSwitched = 4, +}; + +// Enum to describe QMI DMS Lock States +enum eQMIDMSLockStates:UINT8 +{ + eQMIDMSLockStates_LockDisabled = 0, + eQMIDMSLockStates_LockEnabled = 1, +}; + +// Enum to describe QMI DMS Operating Modes +enum eQMIDMSOperatingModes:UINT8 +{ + eQMIDMSOperatingModes_Online = 0, + eQMIDMSOperatingModes_LowPower = 1, + eQMIDMSOperatingModes_FactoryTestMode = 2, + eQMIDMSOperatingModes_Offline = 3, + eQMIDMSOperatingModes_Reset = 4, + eQMIDMSOperatingModes_Shutdown = 5, + eQMIDMSOperatingModes_PersistentLowPower = 6, + eQMIDMSOperatingModes_ModeOnlyLowPower = 7, + eQMIDMSOperatingModes_GWNetworkTest = 8, +}; + +// Enum to describe QMI DMS PIN Status +enum eQMIDMSPINStatus:UINT8 +{ + eQMIDMSPINStatus_PINUninitialized = 0, + eQMIDMSPINStatus_PINEnabledUnverified = 1, + eQMIDMSPINStatus_PINEnabledVerified = 2, + eQMIDMSPINStatus_PINDisabled = 3, + eQMIDMSPINStatus_PINBlocked = 4, + eQMIDMSPINStatus_PINBlockedPermanently = 5, + eQMIDMSPINStatus_PINUnblocked = 6, + eQMIDMSPINStatus_PINChanged = 7, +}; + +// Enum to describe QMI DMS Power Sources +enum eQMIDMSPowerSources:UINT8 +{ + eQMIDMSPowerSources_Battery = 0, + eQMIDMSPowerSources_External = 1, +}; + +// Enum to describe QMI DMS Radio Interfaces +enum eQMIDMSRadioInterfaces:UINT8 +{ + eQMIDMSRadioInterfaces_CDMA20001x = 1, + eQMIDMSRadioInterfaces_CDMA2000HRPD = 2, + eQMIDMSRadioInterfaces_GSM = 4, + eQMIDMSRadioInterfaces_UMTS = 5, + eQMIDMSRadioInterfaces_LTE = 8, + eQMIDMSRadioInterfaces_TDS = 9, +}; + +// Enum to describe QMI DMS Service Capabilities +enum eQMIDMSServiceCapabilities:UINT32 +{ + eQMIDMSServiceCapabilities_DataOnly = 1, + eQMIDMSServiceCapabilities_VoiceOnly = 2, + eQMIDMSServiceCapabilities_SimultaneousVoiceAndData = 3, + eQMIDMSServiceCapabilities_NonsimultaneousVoiceAndData = 4, +}; + +// Enum to describe QMI DMS Subscriptions +enum eQMIDMSSubscriptions:UINT32 +{ + eQMIDMSSubscriptions_Primary = 1, + eQMIDMSSubscriptions_Secondary = 2, +}; + +// Enum to describe QMI DMS Time References +enum eQMIDMSTimeReferences:UINT32 +{ + eQMIDMSTimeReferences_User = 0, +}; + +// Enum to describe QMI DMS Timestamp Sources +enum eQMIDMSTimestampSources:UINT16 +{ + eQMIDMSTimestampSources_Device = 0, + eQMIDMSTimestampSources_CDMANetwork = 1, + eQMIDMSTimestampSources_CDMA1xEVDONetwork = 2, + eQMIDMSTimestampSources_GSMNetwork = 3, + eQMIDMSTimestampSources_WCDMANetwork = 4, + eQMIDMSTimestampSources_GPSNetwork = 5, + eQMIDMSTimestampSources_MFLONetwork = 6, +}; + +// Enum to describe QMI DMS UIM Facility +enum eQMIDMSUIMFacility:UINT8 +{ + eQMIDMSUIMFacility_PNNetworkPersonalization = 0, + eQMIDMSUIMFacility_PUNetworkSubsetPersonalization = 1, + eQMIDMSUIMFacility_PPServiceProviderPersonalization = 2, + eQMIDMSUIMFacility_PCCorporatePersonalization = 3, + eQMIDMSUIMFacility_PFUIMPersonalization = 4, +}; + +// Enum to describe QMI DMS UIM Facility States +enum eQMIDMSUIMFacilityStates:UINT8 +{ + eQMIDMSUIMFacilityStates_Deactivated = 0, + eQMIDMSUIMFacilityStates_Activated = 1, + eQMIDMSUIMFacilityStates_Block = 2, +}; + +// Enum to describe QMI DMS UIM States +enum eQMIDMSUIMStates:UINT8 +{ + eQMIDMSUIMStates_InitializationCompleted = 0, + eQMIDMSUIMStates_InitializationFailed = 1, + eQMIDMSUIMStates_NotPresent = 2, + eQMIDMSUIMStates_StateUnavailable = 255, +}; + +// Enum to describe QMI Data Bearer Technologies +enum eQMIDataBearerTechnologies:UINT8 +{ + eQMIDataBearerTechnologies_CDMA20001x = 1, + eQMIDataBearerTechnologies_CDMA20001xEVDORev0 = 2, + eQMIDataBearerTechnologies_GPRS = 3, + eQMIDataBearerTechnologies_WCDMA = 4, + eQMIDataBearerTechnologies_CDMA20001xEVDORevA = 5, + eQMIDataBearerTechnologies_EGPRS = 6, + eQMIDataBearerTechnologies_HSDPAWCDMA = 7, + eQMIDataBearerTechnologies_WCDMAHSUPA = 8, + eQMIDataBearerTechnologies_HSDPAHSUPA = 9, + eQMIDataBearerTechnologies_LTE = 10, + eQMIDataBearerTechnologies_CDMA2000EHRPD = 11, + eQMIDataBearerTechnologies_HSDPAPlusWCDMA = 12, + eQMIDataBearerTechnologies_HSDPAPlusHSUPA = 13, + eQMIDataBearerTechnologies_DualCellHSDPAPlusWCDMA = 14, + eQMIDataBearerTechnologies_DualCellHSDPAPlusHSUPA = 15, + eQMIDataBearerTechnologies_HSDPAPlus64QAM = 16, + eQMIDataBearerTechnologies_HSDPAPlus64QAMHSUPA = 17, + eQMIDataBearerTechnologies_TDSCDMA = 18, + eQMIDataBearerTechnologies_TDSCDMAHSDPA = 19, + eQMIDataBearerTechnologies_TDSCDMAHSUPA = 20, + eQMIDataBearerTechnologies_Unknown = 255, +}; + +// Enum to describe QMI Dormancy Status +enum eQMIDormancyStatus:UINT8 +{ + eQMIDormancyStatus_TrafficChannelDormant = 1, + eQMIDormancyStatus_TrafficChannelActive = 2, +}; + +// Enum to describe QMI Erroneous SDU Deliveries +enum eQMIErroneousSDUDeliveries:UINT8 +{ + eQMIErroneousSDUDeliveries_Subscribe = 0, + eQMIErroneousSDUDeliveries_NoDetection = 1, + eQMIErroneousSDUDeliveries_ErroneousSDUIsDelivered = 2, + eQMIErroneousSDUDeliveries_ErroneousSDUIsNotDelivered = 3, +}; + +// Enum to describe QMI Errors +enum eQMIErrors:UINT16 +{ + eQMIErrors_None = 0, + eQMIErrors_MalformedMessage = 1, + eQMIErrors_NoMemory = 2, + eQMIErrors_Internal = 3, + eQMIErrors_Aborted = 4, + eQMIErrors_ClientIDsExhausted = 5, + eQMIErrors_UnabortableTransaction = 6, + eQMIErrors_InvalidClientID = 7, + eQMIErrors_NoThresholdsProvided = 8, + eQMIErrors_InvalidHandle = 9, + eQMIErrors_InvalidProfile = 10, + eQMIErrors_InvalidPINID = 11, + eQMIErrors_IncorrectPIN = 12, + eQMIErrors_NoNetworkFound = 13, + eQMIErrors_CallFailed = 14, + eQMIErrors_OutOfCall = 15, + eQMIErrors_NotProvisioned = 16, + eQMIErrors_MissingArgument = 17, + eQMIErrors_ArgumentTooLong = 19, + eQMIErrors_InvalidTransactionID = 22, + eQMIErrors_DeviceInUse = 23, + eQMIErrors_NetworkUnsupported = 24, + eQMIErrors_DeviceUnsupported = 25, + eQMIErrors_NoEffect = 26, + eQMIErrors_NoFreeProfile = 27, + eQMIErrors_InvalidPDPType = 28, + eQMIErrors_InvalidTechnologyPreference = 29, + eQMIErrors_InvalidProfileType = 30, + eQMIErrors_InvalidServiceType = 31, + eQMIErrors_InvalidRegisterAction = 32, + eQMIErrors_InvalidPSAttachAction = 33, + eQMIErrors_AuthenticationFailed = 34, + eQMIErrors_PINBlocked = 35, + eQMIErrors_PINAlwaysBlocked = 36, + eQMIErrors_UIMUninitialized = 37, + eQMIErrors_MaximumQoSRequestsInUse = 38, + eQMIErrors_IncorrectFlowFilter = 39, + eQMIErrors_NetworkQoSUnaware = 40, + eQMIErrors_InvalidQoSID = 41, + eQMIErrors_RequestedNumberUnsupported = 42, + eQMIErrors_InterfaceNotFound = 43, + eQMIErrors_FlowSuspended = 44, + eQMIErrors_InvalidDataFormat = 45, + eQMIErrors_GeneralError = 46, + eQMIErrors_UnknownError = 47, + eQMIErrors_InvalidArgument = 48, + eQMIErrors_InvalidIndex = 49, + eQMIErrors_NoEntry = 50, + eQMIErrors_DeviceStorageFull = 51, + eQMIErrors_DeviceNotReady = 52, + eQMIErrors_NetworkNotReady = 53, + eQMIErrors_WMSCauseCode = 54, + eQMIErrors_WMSMessageNotSent = 55, + eQMIErrors_WMSMessageDeliveryFailure = 56, + eQMIErrors_WMSInvalidMessageID = 57, + eQMIErrors_WMSEncoding = 58, + eQMIErrors_AuthenticationLock = 59, + eQMIErrors_InvalidTransition = 60, + eQMIErrors_NotMCASTInterface = 61, + eQMIErrors_MaximumMCASTRequestsInUse = 62, + eQMIErrors_InvalidMCASTHandle = 63, + eQMIErrors_InvalidIPFamilyPreference = 64, + eQMIErrors_SessionInactive = 65, + eQMIErrors_SessionInvalid = 66, + eQMIErrors_SessionOwnership = 67, + eQMIErrors_InsufficientResources = 68, + eQMIErrors_Disabled = 69, + eQMIErrors_InvalidOperation = 70, + eQMIErrors_InvalidQMICommand = 71, + eQMIErrors_WMSTPDUType = 72, + eQMIErrors_WMSSMSCAddress = 73, + eQMIErrors_InformationUnavailable = 74, + eQMIErrors_SegmentTooLong = 75, + eQMIErrors_SegmentOrder = 76, + eQMIErrors_BundlingNotSupported = 77, + eQMIErrors_OperationPartialFailure = 78, + eQMIErrors_PolicyMismatch = 79, + eQMIErrors_SIMFileNotFound = 80, + eQMIErrors_ExtendedInternal = 81, + eQMIErrors_AccessDenied = 82, + eQMIErrors_HardwareRestricted = 83, + eQMIErrors_AckNotSent = 84, + eQMIErrors_InjectTimeout = 85, + eQMIErrors_IncompatibleState = 90, + eQMIErrors_FDNRestrict = 91, + eQMIErrors_SUPSFailureCause = 92, + eQMIErrors_NoRadio = 93, + eQMIErrors_NotSupported = 94, + eQMIErrors_NoSubscription = 95, + eQMIErrors_CardCallControlFailed = 96, + eQMIErrors_NetworkAborted = 97, + eQMIErrors_MSGBlocked = 98, + eQMIErrors_InvalidSessionType = 100, + eQMIErrors_InvalidPBType = 101, + eQMIErrors_NoSIM = 102, + eQMIErrors_PBNotReady = 103, + eQMIErrors_PINRestriction = 104, + eQMIErrors_PIN2Restriction = 105, + eQMIErrors_PUKRestriction = 106, + eQMIErrors_PUK2Restriction = 107, + eQMIErrors_PBAccessRestricted = 108, + eQMIErrors_PBDeleteInProgress = 109, + eQMIErrors_PBTextTooLong = 110, + eQMIErrors_PBNumberTooLong = 111, + eQMIErrors_PBHiddenKeyRestriction = 112, + eQMIErrors_PBNotAvailable = 113, + eQMIErrors_CATEventRegistrationFailed = 61441, + eQMIErrors_CATInvalidTerminalResponse = 61442, + eQMIErrors_CATInvalidEnvelopeCommand = 61443, + eQMIErrors_CATEnvelopeCommandBusy = 61444, + eQMIErrors_CATEnvelopeCommandFailed = 61445, +}; + +// Enum to describe QMI HA/AAA Key States +enum eQMIHAAAAKeyStates:UINT8 +{ + eQMIHAAAAKeyStates_Unset = 0, + eQMIHAAAAKeyStates_SetDefault = 1, + eQMIHAAAAKeyStates_SetModified = 2, +}; + +// Enum to describe QMI LOC Altitude Assumed +enum eQMILOCAltitudeAssumed:UINT32 +{ + eQMILOCAltitudeAssumed_AltitudeIsCalculated = 0, + eQMILOCAltitudeAssumed_AltitudeIsAssumed = 1, +}; + +// Enum to describe QMI LOC Altitude Source +enum eQMILOCAltitudeSource:UINT32 +{ + eQMILOCAltitudeSource_Unknown = 0, + eQMILOCAltitudeSource_GPS = 1, + eQMILOCAltitudeSource_CellID = 2, + eQMILOCAltitudeSource_EnhancedCellID = 3, + eQMILOCAltitudeSource_WiFi = 4, + eQMILOCAltitudeSource_Terrestrial = 5, + eQMILOCAltitudeSource_TerrestrialHybrid = 6, + eQMILOCAltitudeSource_AltitudeDatabase = 7, + eQMILOCAltitudeSource_BarometricAltimeter = 8, + eQMILOCAltitudeSource_Other = 9, +}; + +// Enum to describe QMI LOC Confidence +enum eQMILOCConfidence:UINT32 +{ + eQMILOCConfidence_Low = 1, + eQMILOCConfidence_Medium = 2, + eQMILOCConfidence_High = 3, +}; + +// Enum to describe QMI LOC Connection Request Type +enum eQMILOCConnectionRequestType:UINT32 +{ + eQMILOCConnectionRequestType_Open = 1, + eQMILOCConnectionRequestType_Close = 2, +}; + +// Enum to describe QMI LOC Connection Status +enum eQMILOCConnectionStatus:UINT32 +{ + eQMILOCConnectionStatus_Success = 1, + eQMILOCConnectionStatus_Failure = 2, +}; + +// Enum to describe QMI LOC Control Mode +enum eQMILOCControlMode:UINT32 +{ + eQMILOCControlMode_Automatic = 0, + eQMILOCControlMode_Forced = 1, +}; + +// Enum to describe QMI LOC Coverage +enum eQMILOCCoverage:UINT32 +{ + eQMILOCCoverage_NotSpecified = 0, + eQMILOCCoverage_Point = 1, + eQMILOCCoverage_Full = 2, +}; + +// Enum to describe QMI LOC Cradle Mount State +enum eQMILOCCradleMountState:UINT32 +{ + eQMILOCCradleMountState_NotMounted = 0, + eQMILOCCradleMountState_Mounted = 1, + eQMILOCCradleMountState_Unknown = 2, +}; + +// Enum to describe QMI LOC Data Coding Scheme +enum eQMILOCDataCodingScheme:UINT32 +{ + eQMILOCDataCodingScheme_German = 12, + eQMILOCDataCodingScheme_English = 13, + eQMILOCDataCodingScheme_Italian = 14, + eQMILOCDataCodingScheme_French = 15, + eQMILOCDataCodingScheme_Spanish = 16, + eQMILOCDataCodingScheme_Dutch = 17, + eQMILOCDataCodingScheme_Swedish = 18, + eQMILOCDataCodingScheme_Danish = 19, + eQMILOCDataCodingScheme_Portuguese = 20, + eQMILOCDataCodingScheme_Finnish = 21, + eQMILOCDataCodingScheme_Norwegian = 22, + eQMILOCDataCodingScheme_Greek = 23, + eQMILOCDataCodingScheme_Turkish = 24, + eQMILOCDataCodingScheme_Hungarian = 25, + eQMILOCDataCodingScheme_Polish = 26, + eQMILOCDataCodingScheme_Unspecified = 27, + eQMILOCDataCodingScheme_UTF8 = 28, + eQMILOCDataCodingScheme_UCS2 = 29, + eQMILOCDataCodingScheme_GSMDefault = 30, +}; + +// Enum to describe QMI LOC Emergency Protocols +enum eQMILOCEmergencyProtocols:UINT32 +{ + eQMILOCEmergencyProtocols_WCDMACP = 0, + eQMILOCEmergencyProtocols_WCDMAUP = 1, +}; + +// Enum to describe QMI LOC Encoding Scheme +enum eQMILOCEncodingScheme:UINT32 +{ + eQMILOCEncodingScheme_Octet = 0, + eQMILOCEncodingScheme_EXNProtocolMessage = 1, + eQMILOCEncodingScheme_ASCII = 2, + eQMILOCEncodingScheme_IA5 = 3, + eQMILOCEncodingScheme_Unicode = 4, + eQMILOCEncodingScheme_ShiftJIS = 5, + eQMILOCEncodingScheme_Korean = 6, + eQMILOCEncodingScheme_LatinHebrew = 7, + eQMILOCEncodingScheme_Latin = 8, + eQMILOCEncodingScheme_GSM = 9, +}; + +// Enum to describe QMI LOC Engine State +enum eQMILOCEngineState +{ + eQMILOCEngineState_On = 1, + eQMILOCEngineState_Off = 2, +}; + +// Enum to describe QMI LOC Fix Recurrence Type +enum eQMILOCFixRecurrenceType:UINT32 +{ + eQMILOCFixRecurrenceType_RequestPeriodicFixes = 1, + eQMILOCFixRecurrenceType_RequestSingleFix = 2, +}; + +// Enum to describe QMI LOC Format Type +enum eQMILOCFormatType:UINT32 +{ + eQMILOCFormatType_LogicalName = 0, + eQMILOCFormatType_EmailAddress = 1, + eQMILOCFormatType_MSISDN = 2, + eQMILOCFormatType_URL = 3, + eQMILOCFormatType_SIPURL = 4, + eQMILOCFormatType_MIN = 5, + eQMILOCFormatType_MDN = 6, + eQMILOCFormatType_IMSPublicIdentity = 7, + eQMILOCFormatType_OSSUnknown = 2147483647, +}; + +// Enum to describe QMI LOC Geofence Breach Type +enum eQMILOCGeofenceBreachType:UINT8 +{ + eQMILOCGeofenceBreachType_Entering = 1, + eQMILOCGeofenceBreachType_Leaving = 2, +}; + +// Enum to describe QMI LOC Geofence General Alert +enum eQMILOCGeofenceGeneralAlert:UINT32 +{ + eQMILOCGeofenceGeneralAlert_GNSSUnavailable = 1, + eQMILOCGeofenceGeneralAlert_GNSSAvailable = 2, + eQMILOCGeofenceGeneralAlert_OOS = 3, + eQMILOCGeofenceGeneralAlert_TimeInvalid = 4, +}; + +// Enum to describe QMI LOC Geofence Operation Mode +enum eQMILOCGeofenceOperationMode:UINT32 +{ + eQMILOCGeofenceOperationMode_Added = 1, + eQMILOCGeofenceOperationMode_Deleted = 2, + eQMILOCGeofenceOperationMode_Edited = 3, +}; + +// Enum to describe QMI LOC Geofence Origin +enum eQMILOCGeofenceOrigin:UINT32 +{ + eQMILOCGeofenceOrigin_Network = 1, + eQMILOCGeofenceOrigin_Device = 2, +}; + +// Enum to describe QMI LOC Geofence State +enum eQMILOCGeofenceState:UINT32 +{ + eQMILOCGeofenceState_Active = 1, + eQMILOCGeofenceState_Suspended = 2, +}; + +// Enum to describe QMI LOC Geofence Status +enum eQMILOCGeofenceStatus:UINT32 +{ + eQMILOCGeofenceStatus_Success = 0, + eQMILOCGeofenceStatus_GeneralFailure = 1, + eQMILOCGeofenceStatus_Unsupported = 2, + eQMILOCGeofenceStatus_InvalidParameters = 3, + eQMILOCGeofenceStatus_EngineBusy = 4, + eQMILOCGeofenceStatus_PhoneOffline = 5, + eQMILOCGeofenceStatus_Timeout = 6, + eQMILOCGeofenceStatus_InsufficientMemory = 8, +}; + +// Enum to describe QMI LOC Health Status +enum eQMILOCHealthStatus:UINT8 +{ + eQMILOCHealthStatus_Unhealthy = 0, + eQMILOCHealthStatus_Healthy = 1, +}; + +// Enum to describe QMI LOC Horizontal Accuracy +enum eQMILOCHorizontalAccuracy:UINT32 +{ + eQMILOCHorizontalAccuracy_Low = 1, + eQMILOCHorizontalAccuracy_Medium = 2, + eQMILOCHorizontalAccuracy_High = 3, +}; + +// Enum to describe QMI LOC Intermediate Report State +enum eQMILOCIntermediateReportState:UINT32 +{ + eQMILOCIntermediateReportState_Enable = 1, + eQMILOCIntermediateReportState_Disable = 2, +}; + +// Enum to describe QMI LOC Linkage +enum eQMILOCLinkage:UINT32 +{ + eQMILOCLinkage_NotSpecified = 0, + eQMILOCLinkage_FullyInterdependent = 1, + eQMILOCLinkage_DependsOnLatLong = 2, + eQMILOCLinkage_FullyIndependent = 3, +}; + +// Enum to describe QMI LOC Location Server Type +enum eQMILOCLocationServerType:UINT32 +{ + eQMILOCLocationServerType_CDMAPDE = 1, + eQMILOCLocationServerType_CDMAMPC = 2, + eQMILOCLocationServerType_UMTSSLP = 3, + eQMILOCLocationServerType_CustomPDE = 4, +}; + +// Enum to describe QMI LOC Location Type +enum eQMILOCLocationType:UINT32 +{ + eQMILOCLocationType_CurrentLocation = 1, + eQMILOCLocationType_CurrentOrLastKnownLocation = 2, + eQMILOCLocationType_InitialLocation = 4, +}; + +// Enum to describe QMI LOC Lock Type +enum eQMILOCLockType:UINT32 +{ + eQMILOCLockType_LockNone = 1, + eQMILOCLockType_LockMI = 2, + eQMILOCLockType_LockMT = 3, + eQMILOCLockType_LockAll = 4, +}; + +// Enum to describe QMI LOC Motion Modes +enum eQMILOCMotionModes:UINT32 +{ + eQMILOCMotionModes_Unknown = 0, + eQMILOCMotionModes_Stationary = 1, + eQMILOCMotionModes_PedestrianUnknown = 200, + eQMILOCMotionModes_PedestrianWalking = 201, + eQMILOCMotionModes_PedestrianRunning = 202, + eQMILOCMotionModes_VehicleUnknown = 300, +}; + +// Enum to describe QMI LOC Motion States +enum eQMILOCMotionStates:UINT32 +{ + eQMILOCMotionStates_Unknown = 0, + eQMILOCMotionStates_Stationary = 1, + eQMILOCMotionStates_InMotion = 2, +}; + +// Enum to describe QMI LOC Network Initiated Message Types +enum eQMILOCNetworkInitiatedMessageTypes:UINT32 +{ + eQMILOCNetworkInitiatedMessageTypes_SUPL = 0, +}; + +// Enum to describe QMI LOC Notification Type +enum eQMILOCNotificationType:UINT32 +{ + eQMILOCNotificationType_NoNotifyOrVerify = 1, + eQMILOCNotificationType_NotifyOnly = 2, + eQMILOCNotificationType_AllowNoResponse = 3, + eQMILOCNotificationType_ResponseRequired = 4, + eQMILOCNotificationType_PrivacyOverride = 5, +}; + +// Enum to describe QMI LOC Operation Mode +enum eQMILOCOperationMode:UINT32 +{ + eQMILOCOperationMode_Default = 1, + eQMILOCOperationMode_MSB = 2, + eQMILOCOperationMode_MSA = 3, + eQMILOCOperationMode_StandAlone = 4, + eQMILOCOperationMode_CellID = 5, + eQMILOCOperationMode_WWAN = 6, +}; + +// Enum to describe QMI LOC Orbits Format Type +enum eQMILOCOrbitsFormatType:UINT32 +{ + eQMILOCOrbitsFormatType_PredictedOrbitsXTRA = 0, +}; + +// Enum to describe QMI LOC PDN Type +enum eQMILOCPDNType:UINT32 +{ + eQMILOCPDNType_IPv4 = 1, + eQMILOCPDNType_IPv6 = 2, + eQMILOCPDNType_IPv4OrIPv6 = 3, + eQMILOCPDNType_PPP = 4, +}; + +// Enum to describe QMI LOC Position +enum eQMILOCPosition:UINT32 +{ + eQMILOCPosition_AGPSSetAssisted = 1, + eQMILOCPosition_AGPSSetBased = 2, + eQMILOCPosition_AGPSSetAssistedPreference = 3, + eQMILOCPosition_AGPSSetBasedPreference = 4, + eQMILOCPosition_AutonomousGPS = 5, + eQMILOCPosition_AFLT = 6, + eQMILOCPosition_ECID = 7, + eQMILOCPosition_EOTD = 8, + eQMILOCPosition_OTDOA = 9, + eQMILOCPosition_NoPosition = 10, +}; + +// Enum to describe QMI LOC Position From Geofence +enum eQMILOCPositionFromGeofence:UINT32 +{ + eQMILOCPositionFromGeofence_Inside = 1, + eQMILOCPositionFromGeofence_Outside = 2, +}; + +// Enum to describe QMI LOC Position Mode +enum eQMILOCPositionMode:UINT32 +{ + eQMILOCPositionMode_AssistedOnly = 1, + eQMILOCPositionMode_BasedOnly = 2, + eQMILOCPositionMode_AssistedPreferredBasedAllowed = 3, + eQMILOCPositionMode_BasedPreferredAssistedAllowed = 4, +}; + +// Enum to describe QMI LOC Position Source +enum eQMILOCPositionSource:UINT32 +{ + eQMILOCPositionSource_GNSS = 0, + eQMILOCPositionSource_CellID = 1, + eQMILOCPositionSource_EnhancedCellID = 2, + eQMILOCPositionSource_WiFi = 3, + eQMILOCPositionSource_Terrestrial = 4, + eQMILOCPositionSource_TerrestrialHybrid = 5, + eQMILOCPositionSource_Other = 6, +}; + +// Enum to describe QMI LOC Power State +enum eQMILOCPowerState:UINT32 +{ + eQMILOCPowerState_NotConnected = 0, + eQMILOCPowerState_Connected = 1, + eQMILOCPowerState_Unknown = 2, +}; + +// Enum to describe QMI LOC Reliability +enum eQMILOCReliability:UINT32 +{ + eQMILOCReliability_NotSet = 0, + eQMILOCReliability_VeryLow = 1, + eQMILOCReliability_Low = 2, + eQMILOCReliability_Medium = 3, + eQMILOCReliability_High = 4, +}; + +// Enum to describe QMI LOC Request Type +enum eQMILOCRequestType:UINT32 +{ + eQMILOCRequestType_StartPeriodicHighFrequencyFixes = 0, + eQMILOCRequestType_StartPeriodicKeepWarmFixes = 1, + eQMILOCRequestType_StopPeriodicFixes = 2, +}; + +// Enum to describe QMI LOC Responsiveness +enum eQMILOCResponsiveness:UINT32 +{ + eQMILOCResponsiveness_Low = 1, + eQMILOCResponsiveness_Medium = 2, + eQMILOCResponsiveness_High = 3, +}; + +// Enum to describe QMI LOC SUPL Hash Algorithms +enum eQMILOCSUPLHashAlgorithms:UINT32 +{ + eQMILOCSUPLHashAlgorithms_SHA1 = 0, + eQMILOCSUPLHashAlgorithms_SHA256 = 1, +}; + +// Enum to describe QMI LOC SUPL TLS Versions +enum eQMILOCSUPLTLSVersions:UINT32 +{ + eQMILOCSUPLTLSVersions_TLSVersion10 = 0, + eQMILOCSUPLTLSVersions_TLSVersion11 = 1, +}; + +// Enum to describe QMI LOC SUPL Version +enum eQMILOCSUPLVersion:UINT32 +{ + eQMILOCSUPLVersion_10 = 1, + eQMILOCSUPLVersion_20 = 2, +}; + +// Enum to describe QMI LOC Satellite Status +enum eQMILOCSatelliteStatus:UINT32 +{ + eQMILOCSatelliteStatus_Idle = 1, + eQMILOCSatelliteStatus_Searching = 2, + eQMILOCSatelliteStatus_Tracking = 3, +}; + +// Enum to describe QMI LOC Sensor Time Sources +enum eQMILOCSensorTimeSources:UINT32 +{ + eQMILOCSensorTimeSources_Unspecified = 0, + eQMILOCSensorTimeSources_Common = 1, +}; + +// Enum to describe QMI LOC Sensor Usage +enum eQMILOCSensorUsage:UINT32 +{ + eQMILOCSensorUsage_SensorUseEnabled = 0, + eQMILOCSensorUsage_SensorUseDisabled = 1, +}; + +// Enum to describe QMI LOC Service Interaction Type +enum eQMILOCServiceInteractionType:UINT32 +{ + eQMILOCServiceInteractionType_OngoingNIIncomingMO = 1, +}; + +// Enum to describe QMI LOC Session State +enum eQMILOCSessionState:UINT32 +{ + eQMILOCSessionState_Started = 1, + eQMILOCSessionState_Finished = 2, +}; + +// Enum to describe QMI LOC Session Status +enum eQMILOCSessionStatus:UINT32 +{ + eQMILOCSessionStatus_Success = 0, + eQMILOCSessionStatus_InProgress = 1, + eQMILOCSessionStatus_GeneralFailure = 2, + eQMILOCSessionStatus_Timeout = 3, + eQMILOCSessionStatus_UserEnded = 4, + eQMILOCSessionStatus_BadParameter = 5, + eQMILOCSessionStatus_PhoneOffline = 6, + eQMILOCSessionStatus_EngineLocked = 7, +}; + +// Enum to describe QMI LOC Status +enum eQMILOCStatus:UINT32 +{ + eQMILOCStatus_Success = 0, + eQMILOCStatus_GeneralFailure = 1, + eQMILOCStatus_Unsupported = 2, + eQMILOCStatus_InvalidParameter = 3, + eQMILOCStatus_EngineBusy = 4, + eQMILOCStatus_PhoneOffline = 5, + eQMILOCStatus_Timeout = 6, +}; + +// Enum to describe QMI LOC System +enum eQMILOCSystem:UINT32 +{ + eQMILOCSystem_GlobalPositioningSystem = 1, + eQMILOCSystem_Galileo = 2, + eQMILOCSystem_SatelliteBasedAugmentationSystem = 3, + eQMILOCSystem_COMPASS = 4, + eQMILOCSystem_GLONASS = 5, +}; + +// Enum to describe QMI LOC Time Source +enum eQMILOCTimeSource:UINT32 +{ + eQMILOCTimeSource_Invalid = 0, + eQMILOCTimeSource_NetworkTimeTransfer = 1, + eQMILOCTimeSource_NetworkTimeTagging = 2, + eQMILOCTimeSource_ExternalInput = 3, + eQMILOCTimeSource_TOWDecode = 4, + eQMILOCTimeSource_TOWConfirmed = 5, + eQMILOCTimeSource_TOWAndWeekConfirmed = 6, + eQMILOCTimeSource_NavigationSolution = 7, + eQMILOCTimeSource_SolveForTime = 8, + eQMILOCTimeSource_GLOTOWDecode = 9, + eQMILOCTimeSource_Transform = 10, + eQMILOCTimeSource_WCDMASleepTimeTag = 11, + eQMILOCTimeSource_GSMSleepTimeTag = 12, +}; + +// Enum to describe QMI LOC Trigger Type +enum eQMILOCTriggerType:UINT32 +{ + eQMILOCTriggerType_SingleShot = 4294967295u, + eQMILOCTriggerType_Periodic = 0, + eQMILOCTriggerType_AreaEvent = 1, +}; + +// Enum to describe QMI LOC User Response +enum eQMILOCUserResponse:UINT32 +{ + eQMILOCUserResponse_Accept = 1, + eQMILOCUserResponse_Deny = 2, + eQMILOCUserResponse_NoResponse = 3, +}; + +// Enum to describe QMI LOC VX Version +enum eQMILOCVXVersion:UINT32 +{ + eQMILOCVXVersion_V1Only = 1, + eQMILOCVXVersion_V2Only = 2, +}; + +// Enum to describe QMI LOC WWAN Type +enum eQMILOCWWANType:UINT32 +{ + eQMILOCWWANType_Internet = 0, + eQMILOCWWANType_AGNSS = 1, + eQMILOCWWANType_AGNSSEmergency = 2, +}; + +// Enum to describe QMI LOC Wi-Fi Fix Error Code +enum eQMILOCWiFiFixErrorCode:UINT32 +{ + eQMILOCWiFiFixErrorCode_Success = 0, + eQMILOCWiFiFixErrorCode_WiFiNotAvailable = 1, + eQMILOCWiFiFixErrorCode_NoAccessPointsFound = 2, + eQMILOCWiFiFixErrorCode_Unauthorized = 3, + eQMILOCWiFiFixErrorCode_ServerUnavailable = 4, + eQMILOCWiFiFixErrorCode_LocationCannotBeDetermined = 5, + eQMILOCWiFiFixErrorCode_Unknown = 6, +}; + +// Enum to describe QMI LOC Wi-Fi Status +enum eQMILOCWiFiStatus:UINT32 +{ + eQMILOCWiFiStatus_Available = 1, + eQMILOCWiFiStatus_Unavailable = 2, +}; + +// Enum to describe QMI Mobile IP Modes +enum eQMIMobileIPModes:UINT8 +{ + eQMIMobileIPModes_MIPOffSimpleIPOnly = 0, + eQMIMobileIPModes_MIPPreferred = 1, + eQMIMobileIPModes_MIPOnly = 2, +}; + +// Enum to describe QMI NAS AN-AAA Authentication Status +enum eQMINASANAAAAuthenticationStatus:UINT8 +{ + eQMINASANAAAAuthenticationStatus_AuthenticationFailed = 0, + eQMINASANAAAAuthenticationStatus_AuthenticationSuccess = 1, + eQMINASANAAAAuthenticationStatus_NoAuthenticationRequested = 2, +}; + +// Enum to describe QMI NAS Acquisition Order +enum eQMINASAcquisitionOrder:UINT32 +{ + eQMINASAcquisitionOrder_Automatic = 0, + eQMINASAcquisitionOrder_GSMThenWCDMA = 1, + eQMINASAcquisitionOrder_WCDMAThenGSM = 2, +}; + +// Enum to describe QMI NAS Active Subscription +enum eQMINASActiveSubscription:UINT8 +{ + eQMINASActiveSubscription_NotActive = 0, + eQMINASActiveSubscription_Active = 1, +}; + +// Enum to describe QMI NAS Average Period +enum eQMINASAveragePeriod:UINT8 +{ + eQMINASAveragePeriod_AverageUsingDefaultConfiguration = 0, + eQMINASAveragePeriod_AverageOver1Second = 1, + eQMINASAveragePeriod_AverageOver2Second = 2, + eQMINASAveragePeriod_AverageOver3Second = 3, + eQMINASAveragePeriod_AverageOver4Second = 4, + eQMINASAveragePeriod_AverageOver5Second = 5, + eQMINASAveragePeriod_AverageOver6Second = 6, + eQMINASAveragePeriod_AverageOver7Second = 7, + eQMINASAveragePeriod_AverageOver8Second = 8, + eQMINASAveragePeriod_AverageOver9Second = 9, + eQMINASAveragePeriod_AverageOver10Second = 10, +}; + +// Enum to describe QMI NAS Avoid System Types +enum eQMINASAvoidSystemTypes:UINT32 +{ + eQMINASAvoidSystemTypes_AvoidIdleWhenUserZoneSelected = 0, + eQMINASAvoidSystemTypes_AvoidIdle = 1, + eQMINASAvoidSystemTypes_ClearAllAvoidSystemLists = 2, +}; + +// Enum to describe QMI NAS Band Classes +enum eQMINASBandClasses:UINT16 +{ + eQMINASBandClasses_CDMABandClass0 = 0, + eQMINASBandClasses_CDMABandClass1 = 1, + eQMINASBandClasses_CDMABandClass3 = 3, + eQMINASBandClasses_CDMABandClass4 = 4, + eQMINASBandClasses_CDMABandClass5 = 5, + eQMINASBandClasses_CDMABandClass6 = 6, + eQMINASBandClasses_CDMABandClass7 = 7, + eQMINASBandClasses_CDMABandClass8 = 8, + eQMINASBandClasses_CDMABandClass9 = 9, + eQMINASBandClasses_CDMABandClass10 = 10, + eQMINASBandClasses_CDMABandClass11 = 11, + eQMINASBandClasses_CDMABandClass12 = 12, + eQMINASBandClasses_CDMABandClass13 = 13, + eQMINASBandClasses_CDMABandClass14 = 14, + eQMINASBandClasses_CDMABandClass15 = 15, + eQMINASBandClasses_CDMABandClass16 = 16, + eQMINASBandClasses_CDMABandClass17 = 17, + eQMINASBandClasses_CDMABandClass18 = 18, + eQMINASBandClasses_CDMABandClass19 = 19, + eQMINASBandClasses_GSM450 = 40, + eQMINASBandClasses_GSM480 = 41, + eQMINASBandClasses_GSM750 = 42, + eQMINASBandClasses_GSM850 = 43, + eQMINASBandClasses_GSM900Extended = 44, + eQMINASBandClasses_GSM900Primary = 45, + eQMINASBandClasses_GSM900Railways = 46, + eQMINASBandClasses_GSM1800 = 47, + eQMINASBandClasses_GSM1900 = 48, + eQMINASBandClasses_WCDMA2100 = 80, + eQMINASBandClasses_WCDMAPCS1900 = 81, + eQMINASBandClasses_WCDMADCS1800 = 82, + eQMINASBandClasses_WCDMA1700US = 83, + eQMINASBandClasses_WCDMA850 = 84, + eQMINASBandClasses_WCDMA800 = 85, + eQMINASBandClasses_WCDMA2600 = 86, + eQMINASBandClasses_WCDMA900 = 87, + eQMINASBandClasses_WCDMA1700Japan = 88, + eQMINASBandClasses_WCDMA1500Japan = 90, + eQMINASBandClasses_WCDMA850Japan = 91, + eQMINASBandClasses_EUTRABand1 = 120, + eQMINASBandClasses_EUTRABand2 = 121, + eQMINASBandClasses_EUTRABand3 = 122, + eQMINASBandClasses_EUTRABand4 = 123, + eQMINASBandClasses_EUTRABand5 = 124, + eQMINASBandClasses_EUTRABand6 = 125, + eQMINASBandClasses_EUTRABand7 = 126, + eQMINASBandClasses_EUTRABand8 = 127, + eQMINASBandClasses_EUTRABand9 = 128, + eQMINASBandClasses_EUTRABand10 = 129, + eQMINASBandClasses_EUTRABand11 = 130, + eQMINASBandClasses_EUTRABand12 = 131, + eQMINASBandClasses_EUTRABand13 = 132, + eQMINASBandClasses_EUTRABand14 = 133, + eQMINASBandClasses_EUTRABand17 = 134, + eQMINASBandClasses_EUTRABand33 = 135, + eQMINASBandClasses_EUTRABand34 = 136, + eQMINASBandClasses_EUTRABand35 = 137, + eQMINASBandClasses_EUTRABand36 = 138, + eQMINASBandClasses_EUTRABand37 = 139, + eQMINASBandClasses_EUTRABand38 = 140, + eQMINASBandClasses_EUTRABand39 = 141, + eQMINASBandClasses_EUTRABand40 = 142, + eQMINASBandClasses_EUTRABand18 = 143, + eQMINASBandClasses_EUTRABand19 = 144, + eQMINASBandClasses_EUTRABand20 = 145, + eQMINASBandClasses_EUTRABand21 = 146, + eQMINASBandClasses_EUTRABand24 = 147, + eQMINASBandClasses_EUTRABand25 = 148, + eQMINASBandClasses_EUTRABand41 = 149, + eQMINASBandClasses_EUTRABand42 = 150, + eQMINASBandClasses_EUTRABand43 = 151, + eQMINASBandClasses_TDSCDMABandA = 200, + eQMINASBandClasses_TDSCDMABandB = 201, + eQMINASBandClasses_TDSCDMABandC = 202, + eQMINASBandClasses_TDSCDMABandD = 203, + eQMINASBandClasses_TDSCDMABandE = 204, + eQMINASBandClasses_TDSCDMABandF = 205, +}; + +// Enum to describe QMI NAS CDMA 1xEV-DO Active Protocol +enum eQMINASCDMA1xEVDOActiveProtocol:UINT8 +{ + eQMINASCDMA1xEVDOActiveProtocol_None = 0, + eQMINASCDMA1xEVDOActiveProtocol_CDMA1xEVDORel0 = 2, + eQMINASCDMA1xEVDOActiveProtocol_CDMA1xEVDORelA = 3, + eQMINASCDMA1xEVDOActiveProtocol_CDMA1xEVDORelB = 4, +}; + +// Enum to describe QMI NAS CDMA 1xEV-DO Hybrid Information +enum eQMINASCDMA1xEVDOHybridInformation:UINT8 +{ + eQMINASCDMA1xEVDOHybridInformation_SystemIsNotHybrid = 0, + eQMINASCDMA1xEVDOHybridInformation_SystemIsHybrid = 1, +}; + +// Enum to describe QMI NAS CDMA 1xEV-DO Personality +enum eQMINASCDMA1xEVDOPersonality:UINT8 +{ + eQMINASCDMA1xEVDOPersonality_Unknown = 0, + eQMINASCDMA1xEVDOPersonality_HRPD = 1, + eQMINASCDMA1xEVDOPersonality_EHRPD = 2, +}; + +// Enum to describe QMI NAS CDMA Pilot Types +enum eQMINASCDMAPilotTypes:UINT32 +{ + eQMINASCDMAPilotTypes_Active = 0, + eQMINASCDMAPilotTypes_Neighbor = 1, +}; + +// Enum to describe QMI NAS CS/PS Attach States +enum eQMINASCSPSAttachStates:UINT8 +{ + eQMINASCSPSAttachStates_UnknownNotApplicable = 0, + eQMINASCSPSAttachStates_Attached = 1, + eQMINASCSPSAttachStates_Detached = 2, +}; + +// Enum to describe QMI NAS Call Barring Status +enum eQMINASCallBarringStatus:UINT32 +{ + eQMINASCallBarringStatus_Unknown = 4294967295u, + eQMINASCallBarringStatus_NormalCallsOnly = 0, + eQMINASCallBarringStatus_EmergencyCallsOnly = 1, + eQMINASCallBarringStatus_NoCalls = 2, + eQMINASCallBarringStatus_AllCalls = 3, +}; + +// Enum to describe QMI NAS Call Types +enum eQMINASCallTypes:UINT32 +{ + eQMINASCallTypes_Voice = 0, + eQMINASCallTypes_SMS = 1, +}; + +// Enum to describe QMI NAS Cell Broadcast Caps +enum eQMINASCellBroadcastCaps:UINT32 +{ + eQMINASCellBroadcastCaps_Unknown = 0, + eQMINASCellBroadcastCaps_NotSupported = 1, + eQMINASCellBroadcastCaps_Supported = 2, +}; + +// Enum to describe QMI NAS Cell Broadcast Caps 2 +enum eQMINASCellBroadcastCaps2:UINT32 +{ + eQMINASCellBroadcastCaps2_Unknown = 0, + eQMINASCellBroadcastCaps2_NotSupported = 1, + eQMINASCellBroadcastCaps2_Supported = 2, +}; + +// Enum to describe QMI NAS Change Duration +enum eQMINASChangeDuration:UINT8 +{ + eQMINASChangeDuration_PowerCycle = 0, + eQMINASChangeDuration_Permanent = 1, +}; + +// Enum to describe QMI NAS Closed Subscriber Group Categories +enum eQMINASClosedSubscriberGroupCategories:UINT32 +{ + eQMINASClosedSubscriberGroupCategories_Unknown = 0, + eQMINASClosedSubscriberGroupCategories_Allowed = 1, + eQMINASClosedSubscriberGroupCategories_Operator = 2, +}; + +// Enum to describe QMI NAS Concurrent Service +enum eQMINASConcurrentService:UINT8 +{ + eQMINASConcurrentService_NotAvailable = 0, + eQMINASConcurrentService_Available = 1, +}; + +// Enum to describe QMI NAS Concurrent Service Supported +enum eQMINASConcurrentServiceSupported:UINT8 +{ + eQMINASConcurrentServiceSupported_NotSupported = 0, + eQMINASConcurrentServiceSupported_Supported = 1, +}; + +// Enum to describe QMI NAS DDTM Preferences +enum eQMINASDDTMPreferences:UINT8 +{ + eQMINASDDTMPreferences_Off = 0, + eQMINASDDTMPreferences_On = 1, + eQMINASDDTMPreferences_NoChange = 2, +}; + +// Enum to describe QMI NAS DTM Support +enum eQMINASDTMSupport:UINT8 +{ + eQMINASDTMSupport_NotAvailable = 0, + eQMINASDTMSupport_Available = 1, +}; + +// Enum to describe QMI NAS Data Service Capabilities 2 +enum eQMINASDataServiceCapabilities2:UINT8 +{ + eQMINASDataServiceCapabilities2_GPRS = 1, + eQMINASDataServiceCapabilities2_EGPRS = 2, + eQMINASDataServiceCapabilities2_HSDPA = 3, + eQMINASDataServiceCapabilities2_HSUPA = 4, + eQMINASDataServiceCapabilities2_WCDMA = 5, + eQMINASDataServiceCapabilities2_CDMA = 6, + eQMINASDataServiceCapabilities2_CDMA1xEVDORev0 = 7, + eQMINASDataServiceCapabilities2_CDMA1xEVDORevA = 8, + eQMINASDataServiceCapabilities2_GSM = 9, + eQMINASDataServiceCapabilities2_CDMA1xEVDORevB = 10, + eQMINASDataServiceCapabilities2_LTE = 11, + eQMINASDataServiceCapabilities2_HSDPAPlus = 12, + eQMINASDataServiceCapabilities2_DCHSDPAPlus = 13, +}; + +// Enum to describe QMI NAS Day Of Week +enum eQMINASDayOfWeek:UINT8 +{ + eQMINASDayOfWeek_Monday = 0, + eQMINASDayOfWeek_Tuesday = 1, + eQMINASDayOfWeek_Wednesday = 2, + eQMINASDayOfWeek_Thursday = 3, + eQMINASDayOfWeek_Friday = 4, + eQMINASDayOfWeek_Saturday = 5, + eQMINASDayOfWeek_Sunday = 6, +}; + +// Enum to describe QMI NAS Daylight Savings Adjustment +enum eQMINASDaylightSavingsAdjustment:UINT8 +{ + eQMINASDaylightSavingsAdjustment_NoAdjustment = 0, + eQMINASDaylightSavingsAdjustment_1HourAdjustment = 1, + eQMINASDaylightSavingsAdjustment_2HourAdjustment = 2, +}; + +// Enum to describe QMI NAS Dual Transfer Mode +enum eQMINASDualTransferMode:UINT8 +{ + eQMINASDualTransferMode_DTMNotSupported = 0, + eQMINASDualTransferMode_DTMSupported = 1, +}; + +// Enum to describe QMI NAS E-UTRA Status +enum eQMINASEUTRAStatus:UINT8 +{ + eQMINASEUTRAStatus_EUTRACellDetected = 0, + eQMINASEUTRAStatus_EUTRACellNotDetected = 1, + eQMINASEUTRAStatus_EUTRADetectionUnknown = 2, + eQMINASEUTRAStatus_EUTRADetectionUnsupported = 3, +}; + +// Enum to describe QMI NAS E911 States +enum eQMINASE911States:UINT32 +{ + eQMINASE911States_Enter = 0, + eQMINASE911States_ExitWithECB = 1, + eQMINASE911States_Exit = 2, + eQMINASE911States_EnterWithECB = 3, +}; + +// Enum to describe QMI NAS EGPRS Support +enum eQMINASEGPRSSupport:UINT8 +{ + eQMINASEGPRSSupport_NotAvailable = 0, + eQMINASEGPRSSupport_Available = 1, +}; + +// Enum to describe QMI NAS EV-DO Session Close Reasons +enum eQMINASEVDOSessionCloseReasons:UINT32 +{ + eQMINASEVDOSessionCloseReasons_ReacquiredNewNetwork = 0, + eQMINASEVDOSessionCloseReasons_UATIResponseTimeout = 1, + eQMINASEVDOSessionCloseReasons_KeepAliveTimerExpired = 2, + eQMINASEVDOSessionCloseReasons_InternalDeactivation = 3, + eQMINASEVDOSessionCloseReasons_ReceivedSessionCloseFromAN = 4, + eQMINASEVDOSessionCloseReasons_ConnectionOpenFailure = 5, + eQMINASEVDOSessionCloseReasons_ConfigurationRequestFailure = 6, + eQMINASEVDOSessionCloseReasons_ConfigurationResponseFailure = 7, + eQMINASEVDOSessionCloseReasons_ProtocolNegotiationFailure = 8, + eQMINASEVDOSessionCloseReasons_ANInitSetupTimerExpired = 9, + eQMINASEVDOSessionCloseReasons_ANInitConnectionClosed = 10, + eQMINASEVDOSessionCloseReasons_ConnectionDenyReceived = 11, + eQMINASEVDOSessionCloseReasons_SilentDeactivation = 12, + eQMINASEVDOSessionCloseReasons_NewESN = 13, + eQMINASEVDOSessionCloseReasons_ANGUAP = 14, + eQMINASEVDOSessionCloseReasons_InvalidPersonalityIndex = 15, + eQMINASEVDOSessionCloseReasons_UATINotMaintained = 16, + eQMINASEVDOSessionCloseReasons_NewNAI = 17, + eQMINASEVDOSessionCloseReasons_EHRPDCredentialsChanged = 18, +}; + +// Enum to describe QMI NAS Forbidden States +enum eQMINASForbiddenStates:UINT8 +{ + eQMINASForbiddenStates_Unknown = 0, + eQMINASForbiddenStates_Forbidden = 1, + eQMINASForbiddenStates_NotForbidden = 2, +}; + +// Enum to describe QMI NAS Force CDMA 1xEV-DO SCP +enum eQMINASForceCDMA1xEVDOSCP:UINT8 +{ + eQMINASForceCDMA1xEVDOSCP_CDMA1xEVDORev0Only = 0, + eQMINASForceCDMA1xEVDOSCP_CDMA1xEVDORevAWithMFPA = 1, + eQMINASForceCDMA1xEVDOSCP_CDMA1xEVDORevAWithMFPAAndEMPA = 2, + eQMINASForceCDMA1xEVDOSCP_CDMA1xEVDORevBWithMMPA = 3, + eQMINASForceCDMA1xEVDOSCP_CDMA1xEVDORevAWithEHRPD = 4, + eQMINASForceCDMA1xEVDOSCP_CDMA1xEVDORevBWithEHRPD = 5, +}; + +// Enum to describe QMI NAS High Speed Call Status +enum eQMINASHighSpeedCallStatus:UINT8 +{ + eQMINASHighSpeedCallStatus_HSDPAAndHSUPANotSupported = 0, + eQMINASHighSpeedCallStatus_HSDPASupported = 1, + eQMINASHighSpeedCallStatus_HSUPASupported = 2, + eQMINASHighSpeedCallStatus_HSDPAAndHSUPASupported = 3, + eQMINASHighSpeedCallStatus_HSDPAPlusSupported = 4, + eQMINASHighSpeedCallStatus_HSDPAPlusAndHSUPASupported = 5, + eQMINASHighSpeedCallStatus_DualCellHSDPAPlusSupported = 6, + eQMINASHighSpeedCallStatus_DualCellHSDPAPlusAndHSUPASupported = 7, + eQMINASHighSpeedCallStatus_DualCellHSDPAPlusAnd64QAMAndHSUPASupported = 8, + eQMINASHighSpeedCallStatus_DualCellHSDPAPlusAnd64QAMSupported = 9, +}; + +// Enum to describe QMI NAS In Use States +enum eQMINASInUseStates:UINT8 +{ + eQMINASInUseStates_Unknown = 0, + eQMINASInUseStates_CurrentServing = 1, + eQMINASInUseStates_Available = 2, +}; + +// Enum to describe QMI NAS LTE Signal Rates +enum eQMINASLTESignalRates:UINT8 +{ + eQMINASLTESignalRates_Default = 0, + eQMINASLTESignalRates_EverySecond = 1, + eQMINASLTESignalRates_Every2Seconds = 2, + eQMINASLTESignalRates_Every3Seconds = 3, + eQMINASLTESignalRates_Every4Seconds = 4, + eQMINASLTESignalRates_Every5Seconds = 5, + eQMINASLTESignalRates_Every6Seconds = 6, + eQMINASLTESignalRates_Every7Seconds = 7, + eQMINASLTESignalRates_Every8Seconds = 8, + eQMINASLTESignalRates_Every9Seconds = 9, + eQMINASLTESignalRates_Every10Seconds = 10, +}; + +// Enum to describe QMI NAS Modem Usage Preferences +enum eQMINASModemUsagePreferences:UINT32 +{ + eQMINASModemUsagePreferences_VoiceCentric = 1, + eQMINASModemUsagePreferences_DataCentric = 2, +}; + +// Enum to describe QMI NAS Network Description Displays +enum eQMINASNetworkDescriptionDisplays:UINT8 +{ + eQMINASNetworkDescriptionDisplays_DoNotDisplay = 0, + eQMINASNetworkDescriptionDisplays_Display = 1, + eQMINASNetworkDescriptionDisplays_Unknown = 255, +}; + +// Enum to describe QMI NAS Network Description Encodings +enum eQMINASNetworkDescriptionEncodings:UINT8 +{ + eQMINASNetworkDescriptionEncodings_UnspecifiedOctet = 0, + eQMINASNetworkDescriptionEncodings_ExtendedProtocolMessage = 1, + eQMINASNetworkDescriptionEncodings_7BitASCII = 2, + eQMINASNetworkDescriptionEncodings_IA5 = 3, + eQMINASNetworkDescriptionEncodings_UNICODE = 4, + eQMINASNetworkDescriptionEncodings_ShiftJIS = 5, + eQMINASNetworkDescriptionEncodings_Korean = 6, + eQMINASNetworkDescriptionEncodings_LatinHebrew = 7, + eQMINASNetworkDescriptionEncodings_Latin = 8, + eQMINASNetworkDescriptionEncodings_GSM7Bit = 9, + eQMINASNetworkDescriptionEncodings_GSMDCS = 10, +}; + +// Enum to describe QMI NAS Network Scan Result +enum eQMINASNetworkScanResult:UINT32 +{ + eQMINASNetworkScanResult_Success = 0, + eQMINASNetworkScanResult_Abort = 1, + eQMINASNetworkScanResult_RadioLinkFailure = 2, +}; + +// Enum to describe QMI NAS Network Scan Types +enum eQMINASNetworkScanTypes:UINT32 +{ + eQMINASNetworkScanTypes_PLMN = 0, + eQMINASNetworkScanTypes_ClosedSubscriberGroup = 1, +}; + +// Enum to describe QMI NAS Network Selection +enum eQMINASNetworkSelection:INT8 +{ + eQMINASNetworkSelection_AutomaticRegistration = 0, + eQMINASNetworkSelection_ManualRegistration = 1, +}; + +// Enum to describe QMI NAS PLMN Name Country Initials +enum eQMINASPLMNNameCountryInitials:UINT8 +{ + eQMINASPLMNNameCountryInitials_DoNotAddCountryInitials = 0, + eQMINASPLMNNameCountryInitials_AddCountryInitials = 1, + eQMINASPLMNNameCountryInitials_Unspecified = 255, +}; + +// Enum to describe QMI NAS PLMN Name Encoding Schemes +enum eQMINASPLMNNameEncodingSchemes:UINT8 +{ + eQMINASPLMNNameEncodingSchemes_ASCII = 0, + eQMINASPLMNNameEncodingSchemes_UCS2LE = 1, +}; + +// Enum to describe QMI NAS PLMN Name Spare Bits +enum eQMINASPLMNNameSpareBits:UINT8 +{ + eQMINASPLMNNameSpareBits_Unknown = 0, + eQMINASPLMNNameSpareBits_Bit8 = 1, + eQMINASPLMNNameSpareBits_Bits78 = 2, + eQMINASPLMNNameSpareBits_Bits68 = 3, + eQMINASPLMNNameSpareBits_Bits58 = 4, + eQMINASPLMNNameSpareBits_Bits48 = 5, + eQMINASPLMNNameSpareBits_Bits38 = 6, + eQMINASPLMNNameSpareBits_Bits28 = 7, +}; + +// Enum to describe QMI NAS PRL Indicator +enum eQMINASPRLIndicator:UINT8 +{ + eQMINASPRLIndicator_SystemNotInPRL = 0, + eQMINASPRLIndicator_SystemIsInPRL = 1, +}; + +// Enum to describe QMI NAS PRL Preferences +enum eQMINASPRLPreferences:UINT16 +{ + eQMINASPRLPreferences_AcquireASideOnly = 1, + eQMINASPRLPreferences_AcquireBSideOnly = 2, + eQMINASPRLPreferences_AcquireAny = 16383, +}; + +// Enum to describe QMI NAS PS Attach Actions +enum eQMINASPSAttachActions:UINT8 +{ + eQMINASPSAttachActions_Attach = 1, + eQMINASPSAttachActions_Detach = 2, +}; + +// Enum to describe QMI NAS Preferred Data Bath +enum eQMINASPreferredDataBath:UINT8 +{ + eQMINASPreferredDataBath_NotPreferred = 0, + eQMINASPreferredDataBath_Preferred = 1, +}; + +// Enum to describe QMI NAS Preferred States +enum eQMINASPreferredStates:UINT8 +{ + eQMINASPreferredStates_Unknown = 0, + eQMINASPreferredStates_Preferred = 1, + eQMINASPreferredStates_NotPreferred = 2, +}; + +// Enum to describe QMI NAS RTRE Configuration +enum eQMINASRTREConfiguration:UINT8 +{ + eQMINASRTREConfiguration_RUIMOnly = 1, + eQMINASRTREConfiguration_InternalSettingsOnly = 2, + eQMINASRTREConfiguration_UseRUIMIfAvailable = 3, + eQMINASRTREConfiguration_GSMOn1X = 4, +}; + +// Enum to describe QMI NAS RX Level +enum eQMINASRXLevel:UINT16 +{ + eQMINASRXLevel_LessThan110dBm = 0, + eQMINASRXLevel_110dBmto109dBm = 1, + eQMINASRXLevel_109dBmto108dBm = 2, + eQMINASRXLevel_108dBmto107dBm = 3, + eQMINASRXLevel_107dBmto106dBm = 4, + eQMINASRXLevel_106dBmto105dBm = 5, + eQMINASRXLevel_105dBmto104dBm = 6, + eQMINASRXLevel_104dBmto103dBm = 7, + eQMINASRXLevel_103dBmto102dBm = 8, + eQMINASRXLevel_102dBmto101dBm = 9, + eQMINASRXLevel_101dBmto100dBm = 10, + eQMINASRXLevel_100dBmto99dBm = 11, + eQMINASRXLevel_99dBmto98dBm = 12, + eQMINASRXLevel_98dBmto97dBm = 13, + eQMINASRXLevel_97dBmto96dBm = 14, + eQMINASRXLevel_96dBmto95dBm = 15, + eQMINASRXLevel_95dBmto94dBm = 16, + eQMINASRXLevel_94dBmto93dBm = 17, + eQMINASRXLevel_93dBmto92dBm = 18, + eQMINASRXLevel_92dBmto91dBm = 19, + eQMINASRXLevel_91dBmto90dBm = 20, + eQMINASRXLevel_90dBmto89dBm = 21, + eQMINASRXLevel_89dBmto88dBm = 22, + eQMINASRXLevel_88dBmto87dBm = 23, + eQMINASRXLevel_87dBmto86dBm = 24, + eQMINASRXLevel_86dBmto85dBm = 25, + eQMINASRXLevel_85dBmto84dBm = 26, + eQMINASRXLevel_84dBmto83dBm = 27, + eQMINASRXLevel_83dBmto82dBm = 28, + eQMINASRXLevel_82dBmto81dBm = 29, + eQMINASRXLevel_81dBmto80dBm = 30, + eQMINASRXLevel_80dBmto79dBm = 31, + eQMINASRXLevel_79dBmto78dBm = 32, + eQMINASRXLevel_78dBmto77dBm = 33, + eQMINASRXLevel_77dBmto76dBm = 34, + eQMINASRXLevel_76dBmto75dBm = 35, + eQMINASRXLevel_75dBmto74dBm = 36, + eQMINASRXLevel_74dBmto73dBm = 37, + eQMINASRXLevel_73dBmto72dBm = 38, + eQMINASRXLevel_72dBmto71dBm = 39, + eQMINASRXLevel_71dBmto70dBm = 40, + eQMINASRXLevel_70dBmto69dBm = 41, + eQMINASRXLevel_69dBmto68dBm = 42, + eQMINASRXLevel_68dBmto67dBm = 43, + eQMINASRXLevel_67dBmto66dBm = 44, + eQMINASRXLevel_66dBmto65dBm = 45, + eQMINASRXLevel_65dBmto64dBm = 46, + eQMINASRXLevel_64dBmto63dBm = 47, + eQMINASRXLevel_63dBmto62dBm = 48, + eQMINASRXLevel_62dBmto61dBm = 49, + eQMINASRXLevel_61dBmto60dBm = 50, + eQMINASRXLevel_60dBmto59dBm = 51, + eQMINASRXLevel_59dBmto58dBm = 52, + eQMINASRXLevel_58dBmto57dBm = 53, + eQMINASRXLevel_57dBmto56dBm = 54, + eQMINASRXLevel_56dBmto55dBm = 55, + eQMINASRXLevel_55dBmto54dBm = 56, + eQMINASRXLevel_54dBmto53dBm = 57, + eQMINASRXLevel_53dBmto52dBm = 58, + eQMINASRXLevel_52dBmto51dBm = 59, + eQMINASRXLevel_51dBmto50dBm = 60, + eQMINASRXLevel_50dBmto49dBm = 61, + eQMINASRXLevel_49dBmto48dBm = 62, + eQMINASRXLevel_GreaterThan48dBm = 63, +}; + +// Enum to describe QMI NAS Radio Access Technologies +enum eQMINASRadioAccessTechnologies:UINT8 +{ + eQMINASRadioAccessTechnologies_GSM = 4, + eQMINASRadioAccessTechnologies_UMTS = 5, + eQMINASRadioAccessTechnologies_LTE = 8, + eQMINASRadioAccessTechnologies_TDSCDMA = 9, + eQMINASRadioAccessTechnologies_NoChange = 255, +}; + +// Enum to describe QMI NAS Radio Interfaces +enum eQMINASRadioInterfaces:UINT8 +{ + eQMINASRadioInterfaces_NoneNoService = 0, + eQMINASRadioInterfaces_CDMA20001x = 1, + eQMINASRadioInterfaces_CDMA2000HRPD = 2, + eQMINASRadioInterfaces_AMPS = 3, + eQMINASRadioInterfaces_GSM = 4, + eQMINASRadioInterfaces_UMTS = 5, + eQMINASRadioInterfaces_LTE = 8, + eQMINASRadioInterfaces_TDSCDMA = 9, +}; + +// Enum to describe QMI NAS Radio System Modes +enum eQMINASRadioSystemModes:UINT32 +{ + eQMINASRadioSystemModes_NoService = 0, + eQMINASRadioSystemModes_Acquiring = 1, + eQMINASRadioSystemModes_InService = 2, +}; + +// Enum to describe QMI NAS Register Actions +enum eQMINASRegisterActions:UINT8 +{ + eQMINASRegisterActions_Automatic = 1, + eQMINASRegisterActions_Manual = 2, +}; + +// Enum to describe QMI NAS Registered Networks +enum eQMINASRegisteredNetworks:UINT8 +{ + eQMINASRegisteredNetworks_Unknown = 0, + eQMINASRegisteredNetworks_3GPP2 = 1, + eQMINASRegisteredNetworks_3GPP = 2, +}; + +// Enum to describe QMI NAS Registration Domains +enum eQMINASRegistrationDomains:UINT32 +{ + eQMINASRegistrationDomains_NotApplicable = 0, + eQMINASRegistrationDomains_CSOnly = 1, + eQMINASRegistrationDomains_PSOnly = 2, + eQMINASRegistrationDomains_CSAndPS = 3, + eQMINASRegistrationDomains_LimitedService = 4, +}; + +// Enum to describe QMI NAS Registration Restrictions +enum eQMINASRegistrationRestrictions:UINT32 +{ + eQMINASRegistrationRestrictions_Unrestricted = 0, + eQMINASRegistrationRestrictions_CampedOnly = 1, + eQMINASRegistrationRestrictions_Limited = 2, +}; + +// Enum to describe QMI NAS Registration States +enum eQMINASRegistrationStates:UINT8 +{ + eQMINASRegistrationStates_NASNotRegistered = 0, + eQMINASRegistrationStates_NASRegistered = 1, + eQMINASRegistrationStates_NASNotRegisteredSearching = 2, + eQMINASRegistrationStates_NASRegistrationDenied = 3, + eQMINASRegistrationStates_RegistrationStateUnknown = 4, +}; + +// Enum to describe QMI NAS Report Rate +enum eQMINASReportRate:UINT8 +{ + eQMINASReportRate_ReportUsingDefaultConfig = 0, + eQMINASReportRate_ReportEvery1Second = 1, + eQMINASReportRate_ReportEvery2Second = 2, + eQMINASReportRate_ReportEvery3Second = 3, + eQMINASReportRate_ReportEvery4Second = 4, + eQMINASReportRate_ReportEvery5Second = 5, +}; + +// Enum to describe QMI NAS Revision +enum eQMINASRevision:UINT8 +{ + eQMINASRevision_JSTD088 = 1, + eQMINASRevision_IS95RevA = 3, + eQMINASRevision_IS95RevB = 4, + eQMINASRevision_IS2000 = 6, + eQMINASRevision_IS2000RelA = 7, + eQMINASRevision_IS2000RelB = 8, + eQMINASRevision_IS2000RelC = 9, + eQMINASRevision_IS2000RelCMI = 10, + eQMINASRevision_IS2000RelD = 11, +}; + +// Enum to describe QMI NAS Roam Status +enum eQMINASRoamStatus:UINT8 +{ + eQMINASRoamStatus_Off = 0, + eQMINASRoamStatus_On = 1, + eQMINASRoamStatus_Blinking = 2, + eQMINASRoamStatus_OutOfNeighborhood = 3, + eQMINASRoamStatus_OutOfBuilding = 4, + eQMINASRoamStatus_PreferredSystem = 5, + eQMINASRoamStatus_AvailableSystem = 6, + eQMINASRoamStatus_AlliancePartner = 7, + eQMINASRoamStatus_PremiumPartner = 8, + eQMINASRoamStatus_FullService = 9, + eQMINASRoamStatus_PartialService = 10, + eQMINASRoamStatus_BannerIsOn = 11, + eQMINASRoamStatus_BannerIsOff = 12, +}; + +// Enum to describe QMI NAS Roaming Indicators +enum eQMINASRoamingIndicators:UINT8 +{ + eQMINASRoamingIndicators_Roaming = 0, + eQMINASRoamingIndicators_Home = 1, + eQMINASRoamingIndicators_RoamingPartner = 2, +}; + +// Enum to describe QMI NAS Roaming Preferences +enum eQMINASRoamingPreferences:UINT8 +{ + eQMINASRoamingPreferences_Automatic = 0, + eQMINASRoamingPreferences_HomeOnly = 1, + eQMINASRoamingPreferences_RoamingOnly = 2, + eQMINASRoamingPreferences_HomeRoaming = 3, +}; + +// Enum to describe QMI NAS Roaming Preferences 2 +enum eQMINASRoamingPreferences2:UINT16 +{ + eQMINASRoamingPreferences2_AcquireWhenRoamingIndicatorOff = 1, + eQMINASRoamingPreferences2_AcquireWhenRoamingIndicatorNotOff = 2, + eQMINASRoamingPreferences2_AcquireWhenRoamingIndicatorNotFlashing = 3, + eQMINASRoamingPreferences2_AcquireAny = 255, +}; + +// Enum to describe QMI NAS Roaming States +enum eQMINASRoamingStates:UINT8 +{ + eQMINASRoamingStates_Unknown = 0, + eQMINASRoamingStates_Home = 1, + eQMINASRoamingStates_Roam = 2, +}; + +// Enum to describe QMI NAS SIM Reject States +enum eQMINASSIMRejectStates:UINT32 +{ + eQMINASSIMRejectStates_NotAvailable = 0, + eQMINASSIMRejectStates_Available = 1, + eQMINASSIMRejectStates_CSInvalid = 2, + eQMINASSIMRejectStates_PSInvalid = 3, + eQMINASSIMRejectStates_CSAndPSInvalid = 4, +}; + +// Enum to describe QMI NAS SINR Levels +enum eQMINASSINRLevels:UINT8 +{ + eQMINASSINRLevels_Negative9dB = 0, + eQMINASSINRLevels_Negative6dB = 1, + eQMINASSINRLevels_Negative45dB = 2, + eQMINASSINRLevels_Negative3dB = 3, + eQMINASSINRLevels_Negative2dB = 4, + eQMINASSINRLevels_1dB = 5, + eQMINASSINRLevels_3dB = 6, + eQMINASSINRLevels_6dB = 7, + eQMINASSINRLevels_9dB = 8, +}; + +// Enum to describe QMI NAS SMS Domains +enum eQMINASSMSDomains:UINT32 +{ + eQMINASSMSDomains_NoSMSSupport = 0, + eQMINASSMSDomains_SMSSupportedOverIMS = 1, + eQMINASSMSDomains_SMSSupportedOver1X = 2, + eQMINASSMSDomains_SMSSupportedOver3GPP = 3, +}; + +// Enum to describe QMI NAS Service Domain Prefs +enum eQMINASServiceDomainPrefs:UINT32 +{ + eQMINASServiceDomainPrefs_CircuitSwitched = 0, + eQMINASServiceDomainPrefs_PacketSwitched = 1, + eQMINASServiceDomainPrefs_CircuitPacketSwitched = 2, + eQMINASServiceDomainPrefs_PacketSwitchedAttach = 3, + eQMINASServiceDomainPrefs_PacketSwitchedDetach = 4, + eQMINASServiceDomainPrefs_PacketSwitchedDetachWithNoChange = 5, +}; + +// Enum to describe QMI NAS Service Domains +enum eQMINASServiceDomains:UINT8 +{ + eQMINASServiceDomains_NoService = 0, + eQMINASServiceDomains_CircuitSwitched = 1, +}; + +// Enum to describe QMI NAS Service Option Actions +enum eQMINASServiceOptionActions:UINT8 +{ + eQMINASServiceOptionActions_Add = 0, + eQMINASServiceOptionActions_Replace = 1, + eQMINASServiceOptionActions_Delete = 2, + eQMINASServiceOptionActions_NoChange = 3, +}; + +// Enum to describe QMI NAS Service Status +enum eQMINASServiceStatus:UINT8 +{ + eQMINASServiceStatus_NoService = 0, + eQMINASServiceStatus_LimitedService = 1, + eQMINASServiceStatus_ServiceAvailable = 2, + eQMINASServiceStatus_LimitedRegionalService = 3, + eQMINASServiceStatus_PowerSaveOrDeepSleep = 4, +}; + +// Enum to describe QMI NAS Standby Preference +enum eQMINASStandbyPreference:UINT8 +{ + eQMINASStandbyPreference_SingleStandby = 1, + eQMINASStandbyPreference_DualStandbyWithTuneAway = 2, + eQMINASStandbyPreference_DualStandbyWithoutTuneAway = 4, + eQMINASStandbyPreference_AutomaticModeWithTuneAway = 5, + eQMINASStandbyPreference_AutomaticModeWithoutTuneAway = 6, + eQMINASStandbyPreference_TripleStandby = 7, +}; + +// Enum to describe QMI NAS Subscription Type +enum eQMINASSubscriptionType:UINT8 +{ + eQMINASSubscriptionType_PrimarySubscription = 0, + eQMINASSubscriptionType_SecondarySubscription = 1, + eQMINASSubscriptionType_TertiarySubscription = 2, +}; + +// Enum to describe QMI NAS System Forbidden +enum eQMINASSystemForbidden:UINT8 +{ + eQMINASSystemForbidden_SystemIsNotForbidden = 0, + eQMINASSystemForbidden_SystemIsForbidden = 1, +}; + +// Enum to describe QMI NAS System Preferences +enum eQMINASSystemPreferences:UINT8 +{ + eQMINASSystemPreferences_Automatic = 0, + eQMINASSystemPreferences_AutomaticA = 1, + eQMINASSystemPreferences_AutomaticB = 2, +}; + +// Enum to describe QMI NAS System Service Capabilities +enum eQMINASSystemServiceCapabilities:UINT8 +{ + eQMINASSystemServiceCapabilities_NoService = 0, + eQMINASSystemServiceCapabilities_CircuitSwitchedOnly = 1, + eQMINASSystemServiceCapabilities_PacketSwitchedOnly = 2, + eQMINASSystemServiceCapabilities_CircuitSwitchedAndPacketSwitched = 3, + eQMINASSystemServiceCapabilities_Camped = 4, +}; + +// Enum to describe QMI NAS Tech Pref Durations +enum eQMINASTechPrefDurations:UINT8 +{ + eQMINASTechPrefDurations_Permanent = 0, + eQMINASTechPrefDurations_PowerCycle = 1, +}; + +// Enum to describe QMI NAS Tech Prefs +enum eQMINASTechPrefs:UINT8 +{ + eQMINASTechPrefs_Automatic = 0, + eQMINASTechPrefs_3GPP2 = 1, + eQMINASTechPrefs_3GPP = 2, + eQMINASTechPrefs_Invalid = 3, +}; + +// Enum to describe QMI NAS Tri-Status +enum eQMINASTriStatus:UINT32 +{ + eQMINASTriStatus_False = 0, + eQMINASTriStatus_True = 1, + eQMINASTriStatus_Unknown = 2, +}; + +// Enum to describe QMI NAS Voice Domains +enum eQMINASVoiceDomains:UINT32 +{ + eQMINASVoiceDomains_NoVoiceSupport = 0, + eQMINASVoiceDomains_VoiceSupportedOverIMS = 1, + eQMINASVoiceDomains_VoiceSupportedOver1X = 2, + eQMINASVoiceDomains_VoiceSupportedOver3GPP = 3, +}; + +// Enum to describe QMI NAS WCDMA RRC States +enum eQMINASWCDMARRCStates:UINT32 +{ + eQMINASWCDMARRCStates_Disconnected = 0, + eQMINASWCDMARRCStates_CellPCH = 1, + eQMINASWCDMARRCStates_URAPCH = 2, + eQMINASWCDMARRCStates_CellFACH = 3, + eQMINASWCDMARRCStates_CellDCH = 4, +}; + +// Enum to describe QMI OMA HFA Done States +enum eQMIOMAHFADoneStates:UINT8 +{ + eQMIOMAHFADoneStates_None = 0, + eQMIOMAHFADoneStates_Succeeded = 1, + eQMIOMAHFADoneStates_Failed = 2, +}; + +// Enum to describe QMI OMA Selections +enum eQMIOMASelections:UINT8 +{ + eQMIOMASelections_Reject = 0, + eQMIOMASelections_Accept = 1, +}; + +// Enum to describe QMI OMA Session Failure Reasons +enum eQMIOMASessionFailureReasons:UINT8 +{ + eQMIOMASessionFailureReasons_Unknown = 0, + eQMIOMASessionFailureReasons_NetworkUnavailable = 1, + eQMIOMASessionFailureReasons_ServerUnavailable = 2, + eQMIOMASessionFailureReasons_AuthenticationFailed = 3, + eQMIOMASessionFailureReasons_MaxRetryExceeded = 4, + eQMIOMASessionFailureReasons_SessionCancelled = 5, +}; + +// Enum to describe QMI OMA Session States +enum eQMIOMASessionStates:UINT8 +{ + eQMIOMASessionStates_CompleteInfoUpdated = 0, + eQMIOMASessionStates_CompleteInfoUnavailable = 1, + eQMIOMASessionStates_Failed = 2, + eQMIOMASessionStates_Retrying = 3, + eQMIOMASessionStates_Connecting = 4, + eQMIOMASessionStates_Connected = 5, + eQMIOMASessionStates_Authenticated = 6, + eQMIOMASessionStates_MDNDownloaded = 7, + eQMIOMASessionStates_MSIDDownloaded = 8, + eQMIOMASessionStates_PRLDownloaded = 9, + eQMIOMASessionStates_MIPProfileDownloaded = 10, +}; + +// Enum to describe QMI OMA Session Types +enum eQMIOMASessionTypes:UINT8 +{ + eQMIOMASessionTypes_ClientInitiatedDeviceConfigure = 0, + eQMIOMASessionTypes_ClientInitiatedPRLUpdate = 1, + eQMIOMASessionTypes_ClientInitiatedHandsFreeActivation = 2, + eQMIOMASessionTypes_DeviceInitiatedHandsFreeActivation = 3, + eQMIOMASessionTypes_NetworkInitiatedPRLUpdate = 4, + eQMIOMASessionTypes_NetworkInitiatedDeviceConfigure = 5, +}; + +// Enum to describe QMI PBM AAS Operations +enum eQMIPBMAASOperations:UINT8 +{ + eQMIPBMAASOperations_Add = 0, + eQMIPBMAASOperations_Modify = 1, + eQMIPBMAASOperations_Delete = 2, +}; + +// Enum to describe QMI PBM Field Types +enum eQMIPBMFieldTypes:UINT32 +{ + eQMIPBMFieldTypes_Email = 0, + eQMIPBMFieldTypes_AdditionalNumber = 1, + eQMIPBMFieldTypes_SecondName = 2, + eQMIPBMFieldTypes_Group = 3, +}; + +// Enum to describe QMI PBM Mapping Types +enum eQMIPBMMappingTypes:UINT32 +{ + eQMIPBMMappingTypes_Linear = 0, + eQMIPBMMappingTypes_Nonlinear = 1, +}; + +// Enum to describe QMI PBM Number Plans +enum eQMIPBMNumberPlans:UINT8 +{ + eQMIPBMNumberPlans_Unknown = 0, + eQMIPBMNumberPlans_ISDN = 1, + eQMIPBMNumberPlans_Data = 2, + eQMIPBMNumberPlans_Telex = 3, + eQMIPBMNumberPlans_National = 4, + eQMIPBMNumberPlans_Private = 5, +}; + +// Enum to describe QMI PBM Number Types +enum eQMIPBMNumberTypes:UINT8 +{ + eQMIPBMNumberTypes_Unknown = 0, + eQMIPBMNumberTypes_International = 1, + eQMIPBMNumberTypes_National = 2, + eQMIPBMNumberTypes_NetworkSpecific = 3, + eQMIPBMNumberTypes_DedicatedAccess = 4, +}; + +// Enum to describe QMI PBM Operations +enum eQMIPBMOperations:UINT8 +{ + eQMIPBMOperations_Add = 1, + eQMIPBMOperations_Modify = 2, + eQMIPBMOperations_Delete = 3, +}; + +// Enum to describe QMI PBM Phonebook Types +enum eQMIPBMPhonebookTypes:UINT16 +{ + eQMIPBMPhonebookTypes_AbbreviatedDialingNumber = 1, + eQMIPBMPhonebookTypes_FixedDialingNumber = 2, + eQMIPBMPhonebookTypes_MobileSubscriberIntegratedServicesDigitalNetwork = 4, + eQMIPBMPhonebookTypes_MailBoxDialingNumber = 8, + eQMIPBMPhonebookTypes_ServiceDialingNumber = 16, + eQMIPBMPhonebookTypes_BarredDialingNumber = 32, + eQMIPBMPhonebookTypes_LastNumberDialed = 64, + eQMIPBMPhonebookTypes_MailBoxNumber = 128, + eQMIPBMPhonebookTypes_GroupingInformationAlphaString = 256, + eQMIPBMPhonebookTypes_AdditionalNumberAlphaString = 512, +}; + +// Enum to describe QMI PBM Protection Methods +enum eQMIPBMProtectionMethods:UINT32 +{ + eQMIPBMProtectionMethods_AlwaysAllowed = 0, + eQMIPBMProtectionMethods_NeverAllowed = 1, + eQMIPBMProtectionMethods_AllowedOnAllPINsVerified = 2, + eQMIPBMProtectionMethods_AllowedOnAnyPINVerified = 3, + eQMIPBMProtectionMethods_AllowedOnOnePINVerified = 4, +}; + +// Enum to describe QMI PBM Refresh Status +enum eQMIPBMRefreshStatus:UINT8 +{ + eQMIPBMRefreshStatus_RefreshStart = 1, + eQMIPBMRefreshStatus_RefreshEnd = 2, +}; + +// Enum to describe QMI PBM Session Types +enum eQMIPBMSessionTypes:UINT8 +{ + eQMIPBMSessionTypes_GWPrimary = 0, + eQMIPBMSessionTypes_1xPrimary = 1, + eQMIPBMSessionTypes_GWSecondary = 2, + eQMIPBMSessionTypes_1xSecondary = 3, + eQMIPBMSessionTypes_NonProvisioningOnSlot1 = 4, + eQMIPBMSessionTypes_NonProvisioningOnSlot2 = 5, + eQMIPBMSessionTypes_GlobalPhonebookOnSlot1 = 6, + eQMIPBMSessionTypes_GlobalPhonebookOnSlot2 = 7, + eQMIPBMSessionTypes_GWTertiary = 8, + eQMIPBMSessionTypes_1xTertiary = 9, + eQMIPBMSessionTypes_GlobalPhonebookOnSlot3 = 10, +}; + +// Enum to describe QMI PBM States +enum eQMIPBMStates:UINT8 +{ + eQMIPBMStates_Ready = 0, + eQMIPBMStates_NotReady = 1, + eQMIPBMStates_NotAvailable = 2, + eQMIPBMStates_PINRestriction = 3, + eQMIPBMStates_PUKRestriction = 4, + eQMIPBMStates_Invalidated = 5, + eQMIPBMStates_Sync = 6, +}; + +// Enum to describe QMI PBM Subscription Types +enum eQMIPBMSubscriptionTypes:UINT8 +{ + eQMIPBMSubscriptionTypes_Primary = 0, + eQMIPBMSubscriptionTypes_Secondary = 1, + eQMIPBMSubscriptionTypes_Tertiary = 2, +}; + +// Enum to describe QMI PDC Configurations +enum eQMIPDCConfigurations:UINT32 +{ + eQMIPDCConfigurations_Platform = 0, + eQMIPDCConfigurations_Software = 1, +}; + +// Enum to describe QMI PDP Types +enum eQMIPDPTypes:UINT8 +{ + eQMIPDPTypes_PDPIPv4 = 0, + eQMIPDPTypes_PDPPPP = 1, + eQMIPDPTypes_PDPIPv6 = 2, + eQMIPDPTypes_PDPIPv4OrIPv6 = 3, +}; + +// Enum to describe QMI PDS APN Types +enum eQMIPDSAPNTypes:UINT32 +{ + eQMIPDSAPNTypes_EmergencySUPL = 0, + eQMIPDSAPNTypes_HomeSUPL = 1, +}; + +// Enum to describe QMI PDS Altitude Source +enum eQMIPDSAltitudeSource:UINT8 +{ + eQMIPDSAltitudeSource_Unknown = 0, + eQMIPDSAltitudeSource_GPS = 1, + eQMIPDSAltitudeSource_CellID = 2, + eQMIPDSAltitudeSource_EnhancedCellID = 3, + eQMIPDSAltitudeSource_WiFi = 4, + eQMIPDSAltitudeSource_Terrestrial = 5, + eQMIPDSAltitudeSource_TerrestrialHybrid = 6, + eQMIPDSAltitudeSource_AltitudeDatabase = 7, + eQMIPDSAltitudeSource_BarometricAltimeter = 8, + eQMIPDSAltitudeSource_Other = 9, +}; + +// Enum to describe QMI PDS Blanking Enable +enum eQMIPDSBlankingEnable:UINT8 +{ + eQMIPDSBlankingEnable_DisableBlanking = 0, + eQMIPDSBlankingEnable_EnableBlankingUnconditionally = 1, + eQMIPDSBlankingEnable_EnableBlankingConditionally = 2, + eQMIPDSBlankingEnable_SimulateIMDJamming = 3, +}; + +// Enum to describe QMI PDS COG Time Types +enum eQMIPDSCOGTimeTypes:UINT32 +{ + eQMIPDSCOGTimeTypes_UTCTime = 0, + eQMIPDSCOGTimeTypes_GPSTime = 1, +}; + +// Enum to describe QMI PDS Calendar Days +enum eQMIPDSCalendarDays:UINT8 +{ + eQMIPDSCalendarDays_Sunday = 0, + eQMIPDSCalendarDays_Monday = 1, + eQMIPDSCalendarDays_Tuesday = 2, + eQMIPDSCalendarDays_Wednesday = 3, + eQMIPDSCalendarDays_Thursday = 4, + eQMIPDSCalendarDays_Friday = 5, + eQMIPDSCalendarDays_Saturday = 6, +}; + +// Enum to describe QMI PDS Calendar Months +enum eQMIPDSCalendarMonths:UINT8 +{ + eQMIPDSCalendarMonths_January = 0, + eQMIPDSCalendarMonths_February = 1, + eQMIPDSCalendarMonths_March = 2, + eQMIPDSCalendarMonths_April = 3, + eQMIPDSCalendarMonths_May = 4, + eQMIPDSCalendarMonths_June = 5, + eQMIPDSCalendarMonths_July = 6, + eQMIPDSCalendarMonths_August = 7, + eQMIPDSCalendarMonths_September = 8, + eQMIPDSCalendarMonths_October = 9, + eQMIPDSCalendarMonths_November = 10, + eQMIPDSCalendarMonths_December = 11, +}; + +// Enum to describe QMI PDS Comm Event Protocols +enum eQMIPDSCommEventProtocols:UINT8 +{ + eQMIPDSCommEventProtocols_UMTSUserPlaneSUPL = 0, + eQMIPDSCommEventProtocols_1X = 1, + eQMIPDSCommEventProtocols_UMTSControlPlaneWCDMA = 2, + eQMIPDSCommEventProtocols_UMTSControlPlaneGSM = 3, + eQMIPDSCommEventProtocols_V1V2 = 4, + eQMIPDSCommEventProtocols_KDDI = 5, + eQMIPDSCommEventProtocols_XTRADataDownload = 6, + eQMIPDSCommEventProtocols_SNTPTimeDownload = 7, + eQMIPDSCommEventProtocols_1XControlPlane = 8, + eQMIPDSCommEventProtocols_Unknown = 255, +}; + +// Enum to describe QMI PDS Comm Event Types +enum eQMIPDSCommEventTypes:UINT8 +{ + eQMIPDSCommEventTypes_Begin = 0, + eQMIPDSCommEventTypes_Connected = 1, + eQMIPDSCommEventTypes_Failure = 2, + eQMIPDSCommEventTypes_Done = 3, + eQMIPDSCommEventTypes_OtherFailure = 4, +}; + +// Enum to describe QMI PDS Config +enum eQMIPDSConfig:UINT8 +{ + eQMIPDSConfig_PersistentDisabled = 0, + eQMIPDSConfig_PersistentEnabled = 1, + eQMIPDSConfig_NotPersistentDisabled = 240, + eQMIPDSConfig_NotPersistentEnabled = 241, +}; + +// Enum to describe QMI PDS Cradle Mount State +enum eQMIPDSCradleMountState:UINT8 +{ + eQMIPDSCradleMountState_NotMounted = 0, + eQMIPDSCradleMountState_Mounted = 1, + eQMIPDSCradleMountState_Unknown = 2, +}; + +// Enum to describe QMI PDS EFS File Operations +enum eQMIPDSEFSFileOperations:UINT8 +{ + eQMIPDSEFSFileOperations_Write = 0, + eQMIPDSEFSFileOperations_Delete = 1, +}; + +// Enum to describe QMI PDS Emergency Position Session Events +enum eQMIPDSEmergencyPositionSessionEvents:UINT32 +{ + eQMIPDSEmergencyPositionSessionEvents_EarlyStart = 0, + eQMIPDSEmergencyPositionSessionEvents_GSMNetworkInitiatedCP = 1, + eQMIPDSEmergencyPositionSessionEvents_WCDMANetworkInitiatedCP = 2, + eQMIPDSEmergencyPositionSessionEvents_WCDMANetworkInitiatedSUPL = 3, +}; + +// Enum to describe QMI PDS Emergency Protocol Configs +enum eQMIPDSEmergencyProtocolConfigs:UINT32 +{ + eQMIPDSEmergencyProtocolConfigs_UserControlPlaneProtocol = 0, + eQMIPDSEmergencyProtocolConfigs_SUPL20EmergencyServices = 1, +}; + +// Enum to describe QMI PDS Encryption Algorithm +enum eQMIPDSEncryptionAlgorithm:UINT8 +{ + eQMIPDSEncryptionAlgorithm_PDSMPDHashAlgorithmSHA1 = 0, + eQMIPDSEncryptionAlgorithm_PDSMPDHashAlgorithmMax = 1, + eQMIPDSEncryptionAlgorithm_PDSMPDHashAlgorithmNone = 255, +}; + +// Enum to describe QMI PDS Extended Position Failures +enum eQMIPDSExtendedPositionFailures:UINT32 +{ + eQMIPDSExtendedPositionFailures_NoService = 0, + eQMIPDSExtendedPositionFailures_NoConnection = 1, + eQMIPDSExtendedPositionFailures_ConnectionFailure = 2, + eQMIPDSExtendedPositionFailures_PDEReject = 3, + eQMIPDSExtendedPositionFailures_StaleBaseStationInfo = 4, + eQMIPDSExtendedPositionFailures_NormalSessionEnd = 5, + eQMIPDSExtendedPositionFailures_LocationServiceReset = 6, + eQMIPDSExtendedPositionFailures_PPMPostFixCalculationTimeout = 7, + eQMIPDSExtendedPositionFailures_PPMPreFixCalculationTimeout = 8, + eQMIPDSExtendedPositionFailures_IS801ServerTimeout = 9, + eQMIPDSExtendedPositionFailures_IS801PayloadError = 10, + eQMIPDSExtendedPositionFailures_VXLCSAgentAuthenticationFailure = 11, + eQMIPDSExtendedPositionFailures_PreferredFixMethodFailure = 12, +}; + +// Enum to describe QMI PDS External Power State +enum eQMIPDSExternalPowerState:UINT8 +{ + eQMIPDSExternalPowerState_NotConnected = 0, + eQMIPDSExternalPowerState_Connected = 1, + eQMIPDSExternalPowerState_Unknown = 2, +}; + +// Enum to describe QMI PDS Force Receiver Off +enum eQMIPDSForceReceiverOff:UINT8 +{ + eQMIPDSForceReceiverOff_Disable = 0, + eQMIPDSForceReceiverOff_Enable = 1, +}; + +// Enum to describe QMI PDS IMD Jamming Bands +enum eQMIPDSIMDJammingBands:UINT32 +{ + eQMIPDSIMDJammingBands_GPS = 0, + eQMIPDSIMDJammingBands_GLONASS = 1, +}; + +// Enum to describe QMI PDS IMD Jamming States +enum eQMIPDSIMDJammingStates:UINT8 +{ + eQMIPDSIMDJammingStates_Terminate = 0, + eQMIPDSIMDJammingStates_Initiate = 1, +}; + +// Enum to describe QMI PDS IS801 CP NI Reject Reasons +enum eQMIPDSIS801CPNIRejectReasons:UINT32 +{ + eQMIPDSIS801CPNIRejectReasons_DecodeError = 0, + eQMIPDSIS801CPNIRejectReasons_NoResources = 1, + eQMIPDSIS801CPNIRejectReasons_EngineLocked = 2, + eQMIPDSIS801CPNIRejectReasons_ResetInProgress = 3, + eQMIPDSIS801CPNIRejectReasons_MOSessionInProgress = 4, + eQMIPDSIS801CPNIRejectReasons_InternalError = 5, +}; + +// Enum to describe QMI PDS Inject Time Types +enum eQMIPDSInjectTimeTypes:UINT32 +{ + eQMIPDSInjectTimeTypes_UTCTime = 0, + eQMIPDSInjectTimeTypes_GPSTime = 1, +}; + +// Enum to describe QMI PDS Injected Position Sources +enum eQMIPDSInjectedPositionSources:UINT8 +{ + eQMIPDSInjectedPositionSources_Unknown = 0, + eQMIPDSInjectedPositionSources_GPS = 1, + eQMIPDSInjectedPositionSources_CellID = 2, + eQMIPDSInjectedPositionSources_EnhancedCellID = 3, + eQMIPDSInjectedPositionSources_WiFi = 4, + eQMIPDSInjectedPositionSources_Terrestial = 5, + eQMIPDSInjectedPositionSources_TerrestialHybrid = 6, + eQMIPDSInjectedPositionSources_Other = 7, +}; + +// Enum to describe QMI PDS Mediums +enum eQMIPDSMediums:UINT8 +{ + eQMIPDSMediums_WWAN = 0, +}; + +// Enum to describe QMI PDS Method States +enum eQMIPDSMethodStates:UINT8 +{ + eQMIPDSMethodStates_Disabled = 0, + eQMIPDSMethodStates_Enabled = 1, + eQMIPDSMethodStates_NotSupported = 255, +}; + +// Enum to describe QMI PDS Motion Modes +enum eQMIPDSMotionModes:UINT8 +{ + eQMIPDSMotionModes_Unknown = 0, + eQMIPDSMotionModes_Pedestrian = 1, + eQMIPDSMotionModes_Vehicle = 2, +}; + +// Enum to describe QMI PDS Motion States +enum eQMIPDSMotionStates:UINT8 +{ + eQMIPDSMotionStates_Unknown = 0, + eQMIPDSMotionStates_Stationary = 1, + eQMIPDSMotionStates_InMotion = 2, +}; + +// Enum to describe QMI PDS Motion Submodes +enum eQMIPDSMotionSubmodes:UINT8 +{ + eQMIPDSMotionSubmodes_Unknown = 0, + eQMIPDSMotionSubmodes_Walking = 1, + eQMIPDSMotionSubmodes_Running = 2, +}; + +// Enum to describe QMI PDS NMEA Reporting Options +enum eQMIPDSNMEAReportingOptions:UINT8 +{ + eQMIPDSNMEAReportingOptions_1HzFromTimeRequestedUntilFinalPositionDetermination = 0, + eQMIPDSNMEAReportingOptions_FinalPositionDeterminationOnly = 1, +}; + +// Enum to describe QMI PDS NMEA Sentence Operating Modes +enum eQMIPDSNMEASentenceOperatingModes:UINT8 +{ + eQMIPDSNMEASentenceOperatingModes_Standalone = 0, + eQMIPDSNMEASentenceOperatingModes_MSBased = 1, + eQMIPDSNMEASentenceOperatingModes_MSAssisted = 2, + eQMIPDSNMEASentenceOperatingModes_Unknown = 255, +}; + +// Enum to describe QMI PDS Network Mode +enum eQMIPDSNetworkMode:UINT8 +{ + eQMIPDSNetworkMode_UMTS = 0, + eQMIPDSNetworkMode_CDMA = 1, +}; + +// Enum to describe QMI PDS ODP States +enum eQMIPDSODPStates:UINT8 +{ + eQMIPDSODPStates_Disables = 0, + eQMIPDSODPStates_EnabledLowPowerMode = 1, + eQMIPDSODPStates_EnabledReadyMode = 2, +}; + +// Enum to describe QMI PDS Operation Types +enum eQMIPDSOperationTypes:UINT8 +{ + eQMIPDSOperationTypes_Standalone = 0, + eQMIPDSOperationTypes_MSBased = 1, + eQMIPDSOperationTypes_MSAssisted = 2, +}; + +// Enum to describe QMI PDS Output Devices +enum eQMIPDSOutputDevices:UINT8 +{ + eQMIPDSOutputDevices_NoneDisabled = 0, + eQMIPDSOutputDevices_USB = 1, + eQMIPDSOutputDevices_UART1 = 2, + eQMIPDSOutputDevices_UART2 = 3, + eQMIPDSOutputDevices_SharedMemory = 4, +}; + +// Enum to describe QMI PDS PDN Types +enum eQMIPDSPDNTypes:UINT32 +{ + eQMIPDSPDNTypes_IPv4 = 0, + eQMIPDSPDNTypes_IPv6 = 1, + eQMIPDSPDNTypes_IPv4AndIPv6 = 2, +}; + +// Enum to describe QMI PDS Privacy Modes +enum eQMIPDSPrivacyModes:UINT8 +{ + eQMIPDSPrivacyModes_NoNotifyVerify = 0, + eQMIPDSPrivacyModes_Notify = 1, + eQMIPDSPrivacyModes_NotifyVerifyAllowNoResponse = 2, + eQMIPDSPrivacyModes_NotifyVerifyRequireResponse = 3, + eQMIPDSPrivacyModes_PrivacyOverride = 4, +}; + +// Enum to describe QMI PDS Reliability Indicator +enum eQMIPDSReliabilityIndicator:UINT8 +{ + eQMIPDSReliabilityIndicator_NotSet = 0, + eQMIPDSReliabilityIndicator_VeryLow = 1, + eQMIPDSReliabilityIndicator_Low = 2, + eQMIPDSReliabilityIndicator_Medium = 3, + eQMIPDSReliabilityIndicator_High = 4, +}; + +// Enum to describe QMI PDS Report Security Challenge +enum eQMIPDSReportSecurityChallenge:UINT8 +{ + eQMIPDSReportSecurityChallenge_Disable = 0, + eQMIPDSReportSecurityChallenge_Enable = 1, +}; + +// Enum to describe QMI PDS Reporting State +enum eQMIPDSReportingState:UINT8 +{ + eQMIPDSReportingState_StopReporting = 0, + eQMIPDSReportingState_StartReporting = 1, +}; + +// Enum to describe QMI PDS Reset Reasons +enum eQMIPDSResetReasons:UINT32 +{ + eQMIPDSResetReasons_PositionEngine = 0, + eQMIPDSResetReasons_GNSSBackgroundSCan = 1, + eQMIPDSResetReasons_InjectClockInconsistency = 2, + eQMIPDSResetReasons_GPSSubframeMisalignment = 3, + eQMIPDSResetReasons_DecodedTimeInconsistency = 4, + eQMIPDSResetReasons_CodeConsistencyError = 5, + eQMIPDSResetReasons_SoftResetFromINTMSError = 6, + eQMIPDSResetReasons_SoftResetFromRFFailure = 7, + eQMIPDSResetReasons_ChannelControllerSoftError = 8, + eQMIPDSResetReasons_ChannelControllerHardError = 9, +}; + +// Enum to describe QMI PDS Reset States +enum eQMIPDSResetStates:UINT32 +{ + eQMIPDSResetStates_InProgress = 0, + eQMIPDSResetStates_Completed = 1, + eQMIPDSResetStates_UnableToInitialize = 2, + eQMIPDSResetStates_E911CallInProgress = 3, +}; + +// Enum to describe QMI PDS SBAS States +enum eQMIPDSSBASStates:UINT8 +{ + eQMIPDSSBASStates_Disabled = 0, + eQMIPDSSBASStates_Enabled = 1, + eQMIPDSSBASStates_Unknown = 255, +}; + +// Enum to describe QMI PDS SPI State +enum eQMIPDSSPIState:UINT8 +{ + eQMIPDSSPIState_DeviceIsNonstationary = 0, + eQMIPDSSPIState_DeviceIsStationary = 1, +}; + +// Enum to describe QMI PDS SUPL Data Coding Schemes +enum eQMIPDSSUPLDataCodingSchemes:UINT8 +{ + eQMIPDSSUPLDataCodingSchemes_UTF8 = 0, + eQMIPDSSUPLDataCodingSchemes_UCS2 = 1, + eQMIPDSSUPLDataCodingSchemes_GSM = 2, + eQMIPDSSUPLDataCodingSchemes_Unknown = 255, +}; + +// Enum to describe QMI PDS SUPL Hash Algorithms +enum eQMIPDSSUPLHashAlgorithms:UINT32 +{ + eQMIPDSSUPLHashAlgorithms_SHA1 = 0, + eQMIPDSSUPLHashAlgorithms_SHA256 = 1, +}; + +// Enum to describe QMI PDS SUPL ID/Name Data Coding Schemes +enum eQMIPDSSUPLIDNameDataCodingSchemes:UINT8 +{ + eQMIPDSSUPLIDNameDataCodingSchemes_LogicalName = 0, + eQMIPDSSUPLIDNameDataCodingSchemes_EmailAddress = 1, + eQMIPDSSUPLIDNameDataCodingSchemes_MSISDN = 2, + eQMIPDSSUPLIDNameDataCodingSchemes_URL = 3, + eQMIPDSSUPLIDNameDataCodingSchemes_SIPURL = 4, + eQMIPDSSUPLIDNameDataCodingSchemes_MIN = 5, + eQMIPDSSUPLIDNameDataCodingSchemes_MDN = 6, + eQMIPDSSUPLIDNameDataCodingSchemes_Unknown = 255, +}; + +// Enum to describe QMI PDS SUPL INIT Sources +enum eQMIPDSSUPLINITSources:UINT32 +{ + eQMIPDSSUPLINITSources_1XSMS = 0, + eQMIPDSSUPLINITSources_GSMSMS = 1, + eQMIPDSSUPLINITSources_WAPPush = 2, + eQMIPDSSUPLINITSources_UDP = 3, +}; + +// Enum to describe QMI PDS SUPL Modes +enum eQMIPDSSUPLModes:UINT8 +{ + eQMIPDSSUPLModes_MSAssisted = 0, + eQMIPDSSUPLModes_MSBased = 1, + eQMIPDSSUPLModes_MSAssistedPreferred = 2, + eQMIPDSSUPLModes_MSBasedPreferred = 3, + eQMIPDSSUPLModes_Standalone = 4, + eQMIPDSSUPLModes_AFLT = 5, + eQMIPDSSUPLModes_ECID = 6, + eQMIPDSSUPLModes_EOTD = 7, + eQMIPDSSUPLModes_OTDOA = 8, + eQMIPDSSUPLModes_NoPosition = 9, +}; + +// Enum to describe QMI PDS SUPL Session End Status +enum eQMIPDSSUPLSessionEndStatus:UINT32 +{ + eQMIPDSSUPLSessionEndStatus_Success = 0, + eQMIPDSSUPLSessionEndStatus_Failure = 1, +}; + +// Enum to describe QMI PDS SUPL TLS Versions +enum eQMIPDSSUPLTLSVersions:UINT32 +{ + eQMIPDSSUPLTLSVersions_10 = 0, + eQMIPDSSUPLTLSVersions_11 = 1, +}; + +// Enum to describe QMI PDS SUPL Trigger Types +enum eQMIPDSSUPLTriggerTypes:UINT32 +{ + eQMIPDSSUPLTriggerTypes_SingleShot = 4294967295u, + eQMIPDSSUPLTriggerTypes_Periodic = 0, + eQMIPDSSUPLTriggerTypes_AreaEvent = 1, +}; + +// Enum to describe QMI PDS SUPL Versions +enum eQMIPDSSUPLVersions:UINT32 +{ + eQMIPDSSUPLVersions_100 = 1, + eQMIPDSSUPLVersions_200 = 2, + eQMIPDSSUPLVersions_Unsupported = 3, +}; + +// Enum to describe QMI PDS SV Almanac Status +enum eQMIPDSSVAlmanacStatus:UINT8 +{ + eQMIPDSSVAlmanacStatus_Unavailable = 0, + eQMIPDSSVAlmanacStatus_Available = 1, +}; + +// Enum to describe QMI PDS SV Ephemeris Status +enum eQMIPDSSVEphemerisStatus:UINT8 +{ + eQMIPDSSVEphemerisStatus_Unavailable = 0, + eQMIPDSSVEphemerisStatus_Available = 1, +}; + +// Enum to describe QMI PDS SV Health Status +enum eQMIPDSSVHealthStatus:UINT8 +{ + eQMIPDSSVHealthStatus_Unhealthy = 0, + eQMIPDSSVHealthStatus_Healthy = 1, +}; + +// Enum to describe QMI PDS SV Processing Status +enum eQMIPDSSVProcessingStatus:UINT8 +{ + eQMIPDSSVProcessingStatus_Idle = 1, + eQMIPDSSVProcessingStatus_Search = 2, + eQMIPDSSVProcessingStatus_SearchVerify = 3, + eQMIPDSSVProcessingStatus_BitEdge = 4, + eQMIPDSSVProcessingStatus_Track = 5, +}; + +// Enum to describe QMI PDS SV Systems +enum eQMIPDSSVSystems:UINT8 +{ + eQMIPDSSVSystems_GPS = 1, + eQMIPDSSVSystems_Galileo = 2, + eQMIPDSSVSystems_SBAS = 3, + eQMIPDSSVSystems_Compass = 4, + eQMIPDSSVSystems_Glonass = 5, +}; + +// Enum to describe QMI PDS Server Options +enum eQMIPDSServerOptions:UINT8 +{ + eQMIPDSServerOptions_Default = 0, +}; + +// Enum to describe QMI PDS Session Control Types +enum eQMIPDSSessionControlTypes:UINT8 +{ + eQMIPDSSessionControlTypes_Automatic = 0, +}; + +// Enum to describe QMI PDS Session Status +enum eQMIPDSSessionStatus:UINT8 +{ + eQMIPDSSessionStatus_Success = 0, + eQMIPDSSessionStatus_InProgress = 1, + eQMIPDSSessionStatus_GeneralFailure = 2, + eQMIPDSSessionStatus_Timeout = 3, + eQMIPDSSessionStatus_UserEnded = 4, + eQMIPDSSessionStatus_BadParameter = 5, + eQMIPDSSessionStatus_PhoneOffline = 6, + eQMIPDSSessionStatus_EngineLocked = 7, + eQMIPDSSessionStatus_E911SessionInProgress = 8, +}; + +// Enum to describe QMI PDS Session Types +enum eQMIPDSSessionTypes:UINT8 +{ + eQMIPDSSessionTypes_New = 0, +}; + +// Enum to describe QMI PDS Source Linkage +enum eQMIPDSSourceLinkage:UINT8 +{ + eQMIPDSSourceLinkage_NotSpecified = 0, + eQMIPDSSourceLinkage_FullyInterDependent = 1, + eQMIPDSSourceLinkage_AltitudeDependsOnLatitudeAndLongitude = 2, + eQMIPDSSourceLinkage_FullyIndependent = 3, +}; + +// Enum to describe QMI PDS Stop Reason +enum eQMIPDSStopReason:UINT8 +{ + eQMIPDSStopReason_UserTerminated = 0, + eQMIPDSStopReason_Other = 1, +}; + +// Enum to describe QMI PDS Streaming Status +enum eQMIPDSStreamingStatus:UINT8 +{ + eQMIPDSStreamingStatus_NotReadyForStreaming = 0, + eQMIPDSStreamingStatus_ReadyForStreaming = 1, +}; + +// Enum to describe QMI PDS Suspend Reason +enum eQMIPDSSuspendReason:UINT8 +{ + eQMIPDSSuspendReason_OoS = 0, + eQMIPDSSuspendReason_LPM = 1, + eQMIPDSSuspendReason_Other = 2, +}; + +// Enum to describe QMI PDS Time Bases +enum eQMIPDSTimeBases:UINT8 +{ + eQMIPDSTimeBases_GPS = 0, + eQMIPDSTimeBases_UTC = 1, +}; + +// Enum to describe QMI PDS Time Source +enum eQMIPDSTimeSource:UINT8 +{ + eQMIPDSTimeSource_Invalid = 0, + eQMIPDSTimeSource_NetworkTimeTransfer = 1, + eQMIPDSTimeSource_NetworkTimeTagging = 2, + eQMIPDSTimeSource_ExternalInput = 3, + eQMIPDSTimeSource_TOWDecode = 4, + eQMIPDSTimeSource_TOWConfirmed = 5, + eQMIPDSTimeSource_TOWAndWeekConfirmed = 6, + eQMIPDSTimeSource_TimeAlignment = 7, + eQMIPDSTimeSource_NavSolution = 8, + eQMIPDSTimeSource_SolveForTime = 9, +}; + +// Enum to describe QMI PDS Time Type +enum eQMIPDSTimeType:UINT8 +{ + eQMIPDSTimeType_UTCTime = 0, + eQMIPDSTimeType_GPSTime = 1, + eQMIPDSTimeType_Age = 2, +}; + +// Enum to describe QMI PDS Tracking Session States +enum eQMIPDSTrackingSessionStates:UINT8 +{ + eQMIPDSTrackingSessionStates_Unknown = 0, + eQMIPDSTrackingSessionStates_Inactive = 1, + eQMIPDSTrackingSessionStates_Active = 2, +}; + +// Enum to describe QMI PDS UMTS CP Data Coding Schemes +enum eQMIPDSUMTSCPDataCodingSchemes:UINT8 +{ + eQMIPDSUMTSCPDataCodingSchemes_German = 0, + eQMIPDSUMTSCPDataCodingSchemes_English = 1, + eQMIPDSUMTSCPDataCodingSchemes_Italian = 2, + eQMIPDSUMTSCPDataCodingSchemes_French = 3, + eQMIPDSUMTSCPDataCodingSchemes_Spanish = 4, + eQMIPDSUMTSCPDataCodingSchemes_Dutch = 5, + eQMIPDSUMTSCPDataCodingSchemes_Swedish = 6, + eQMIPDSUMTSCPDataCodingSchemes_Danish = 7, + eQMIPDSUMTSCPDataCodingSchemes_Portuguese = 8, + eQMIPDSUMTSCPDataCodingSchemes_Finnish = 9, + eQMIPDSUMTSCPDataCodingSchemes_Norwegian = 10, + eQMIPDSUMTSCPDataCodingSchemes_Greek = 11, + eQMIPDSUMTSCPDataCodingSchemes_Turkish = 12, + eQMIPDSUMTSCPDataCodingSchemes_Hungarian = 13, + eQMIPDSUMTSCPDataCodingSchemes_Polish = 14, + eQMIPDSUMTSCPDataCodingSchemes_Unknown = 255, +}; + +// Enum to describe QMI PDS UMTS CP Location Types +enum eQMIPDSUMTSCPLocationTypes:UINT8 +{ + eQMIPDSUMTSCPLocationTypes_Current = 0, + eQMIPDSUMTSCPLocationTypes_CurrentOrLastKnown = 1, + eQMIPDSUMTSCPLocationTypes_Initial = 2, +}; + +// Enum to describe QMI PDS Uncertainty Coverage +enum eQMIPDSUncertaintyCoverage:UINT8 +{ + eQMIPDSUncertaintyCoverage_NotSpecified = 0, + eQMIPDSUncertaintyCoverage_PointUncertainty = 1, + eQMIPDSUncertaintyCoverage_FullyUncertainty = 2, +}; + +// Enum to describe QMI PDS VX Data Coding Schemes +enum eQMIPDSVXDataCodingSchemes:UINT8 +{ + eQMIPDSVXDataCodingSchemes_Octet = 0, + eQMIPDSVXDataCodingSchemes_EXNProtocolMessage = 1, + eQMIPDSVXDataCodingSchemes_ASCII = 2, + eQMIPDSVXDataCodingSchemes_IA5 = 3, + eQMIPDSVXDataCodingSchemes_Unicode = 4, + eQMIPDSVXDataCodingSchemes_ShiftJIS = 5, + eQMIPDSVXDataCodingSchemes_Korean = 6, + eQMIPDSVXDataCodingSchemes_LatinHebrew = 7, + eQMIPDSVXDataCodingSchemes_Latin = 8, + eQMIPDSVXDataCodingSchemes_GSM = 9, +}; + +// Enum to describe QMI PDS VX Modes +enum eQMIPDSVXModes:UINT8 +{ + eQMIPDSVXModes_MSAssisted = 0, + eQMIPDSVXModes_MSBased = 1, + eQMIPDSVXModes_MSAssistedPreferred = 2, + eQMIPDSVXModes_MSBasedPreferred = 3, +}; + +// Enum to describe QMI PDS WWAN Network Preferences +enum eQMIPDSWWANNetworkPreferences:UINT8 +{ + eQMIPDSWWANNetworkPreferences_AnyAvailable = 0, + eQMIPDSWWANNetworkPreferences_HomeOnly = 1, + eQMIPDSWWANNetworkPreferences_RoamOnly = 2, +}; + +// Enum to describe QMI PDS Wi-Fi Request Types +enum eQMIPDSWiFiRequestTypes:UINT8 +{ + eQMIPDSWiFiRequestTypes_StartPeriodicFixesHighFrequency = 0, + eQMIPDSWiFiRequestTypes_StartPeriodicFixesKeepWarm = 1, + eQMIPDSWiFiRequestTypes_StopPeriodicFixes = 2, + eQMIPDSWiFiRequestTypes_Suspend = 4, +}; + +// Enum to describe QMI Profile Types +enum eQMIProfileTypes:UINT8 +{ + eQMIProfileTypes_3GPP = 0, + eQMIProfileTypes_3GPP2 = 1, +}; + +// Enum to describe QMI QCMAP Call End Reasons +enum eQMIQCMAPCallEndReasons:UINT32 +{ + eQMIQCMAPCallEndReasons_Unknown = 0, + eQMIQCMAPCallEndReasons_Unspecified = 1, + eQMIQCMAPCallEndReasons_ClientEnd = 2, + eQMIQCMAPCallEndReasons_NoService = 3, + eQMIQCMAPCallEndReasons_Fade = 4, + eQMIQCMAPCallEndReasons_ReleaseNormal = 5, + eQMIQCMAPCallEndReasons_AccInProgress = 6, + eQMIQCMAPCallEndReasons_AccFailed = 7, + eQMIQCMAPCallEndReasons_RedirectOrHandoff = 8, + eQMIQCMAPCallEndReasons_CloseInProgress = 9, + eQMIQCMAPCallEndReasons_AuthenticationFailed = 10, + eQMIQCMAPCallEndReasons_InternalError = 11, + eQMIQCMAPCallEndReasons_CDMALock = 500, + eQMIQCMAPCallEndReasons_Intercept = 501, + eQMIQCMAPCallEndReasons_Reorder = 502, + eQMIQCMAPCallEndReasons_ReleaseServiceOptionRejected = 503, + eQMIQCMAPCallEndReasons_IncomingCall = 504, + eQMIQCMAPCallEndReasons_AlertStop = 505, + eQMIQCMAPCallEndReasons_Activation = 506, + eQMIQCMAPCallEndReasons_MaxAccessProbe = 507, + eQMIQCMAPCallEndReasons_CCSNotSupportedByBS = 508, + eQMIQCMAPCallEndReasons_NoResponseFromBS = 509, + eQMIQCMAPCallEndReasons_RejectedByBS = 510, + eQMIQCMAPCallEndReasons_Incompatible = 511, + eQMIQCMAPCallEndReasons_AlreadyInTC = 512, + eQMIQCMAPCallEndReasons_UserCallOrigDuringGPS = 513, + eQMIQCMAPCallEndReasons_UserCallOrigDuringSMS = 514, + eQMIQCMAPCallEndReasons_NoCDMAService = 515, + eQMIQCMAPCallEndReasons_ConfFailed = 1000, + eQMIQCMAPCallEndReasons_IncomingRejected = 1001, + eQMIQCMAPCallEndReasons_NoGWService = 1002, + eQMIQCMAPCallEndReasons_NetworkEnd = 1003, + eQMIQCMAPCallEndReasons_LLCOrSNDCPFailure = 1004, + eQMIQCMAPCallEndReasons_InsufficientResources = 1005, + eQMIQCMAPCallEndReasons_ServiceOptionOutOfOrder = 1006, + eQMIQCMAPCallEndReasons_NSAPIAlreadyUsed = 1007, + eQMIQCMAPCallEndReasons_RegularPDPContextDeactivation = 1008, + eQMIQCMAPCallEndReasons_NetworkFailure = 1009, + eQMIQCMAPCallEndReasons_ReactivationRequested = 1010, + eQMIQCMAPCallEndReasons_ProtocolError = 1011, + eQMIQCMAPCallEndReasons_OperatorDeterminedBarring = 1012, + eQMIQCMAPCallEndReasons_UnknownOrMissingAPN = 1013, + eQMIQCMAPCallEndReasons_UnknownPDPAddressOrPDPType = 1014, + eQMIQCMAPCallEndReasons_ActivationRejectedByGGSN = 1015, + eQMIQCMAPCallEndReasons_ActivationRejectedUnspecified = 1016, + eQMIQCMAPCallEndReasons_ServiceOptionNotSupported = 1017, + eQMIQCMAPCallEndReasons_RequestedServiceOptionNotSubscribed = 1018, + eQMIQCMAPCallEndReasons_QoSNotAccepted = 1019, + eQMIQCMAPCallEndReasons_SemanticErrorInTheTFTOperation = 1020, + eQMIQCMAPCallEndReasons_SyntacticalErrorInTheTFTOperation = 1021, + eQMIQCMAPCallEndReasons_UnknownPDPContext = 1022, + eQMIQCMAPCallEndReasons_SemanticErrorsInPacketFilters = 1023, + eQMIQCMAPCallEndReasons_SyntacticalErrorsInPacketFilters = 1024, + eQMIQCMAPCallEndReasons_PDPContextWithoutTFTAlreadyActivated = 1025, + eQMIQCMAPCallEndReasons_InvalidTransactionIdentifierValue = 1026, + eQMIQCMAPCallEndReasons_SemanticallyIncorrectMessage = 1027, + eQMIQCMAPCallEndReasons_InvalidMandatoryInformation = 1028, + eQMIQCMAPCallEndReasons_MessageTypeNonExistent = 1029, + eQMIQCMAPCallEndReasons_MessageNotCompatibleWithState = 1030, + eQMIQCMAPCallEndReasons_InformationElementNonexistent = 1031, + eQMIQCMAPCallEndReasons_ConditionalInformationElementError = 1032, + eQMIQCMAPCallEndReasons_MessageNotCompatibleWithProtocolState = 1033, + eQMIQCMAPCallEndReasons_APNRestrictionValueIncompatibleWithActivePDPContext = 1034, + eQMIQCMAPCallEndReasons_NoGPRSContextPresent = 1035, + eQMIQCMAPCallEndReasons_RequestedFeatureNotSupported = 1036, + eQMIQCMAPCallEndReasons_CDGenOrBusy = 1500, + eQMIQCMAPCallEndReasons_CDBillOrAuth = 1501, + eQMIQCMAPCallEndReasons_ChangeHDR = 1502, + eQMIQCMAPCallEndReasons_ExitHDR = 1503, + eQMIQCMAPCallEndReasons_HDRNoSession = 1504, + eQMIQCMAPCallEndReasons_HDROrigDuringGPSFix = 1505, + eQMIQCMAPCallEndReasons_HDRCSTimeout = 1506, + eQMIQCMAPCallEndReasons_HDRReleasedByCM = 1507, +}; + +// Enum to describe QMI QCMAP IP Families +enum eQMIQCMAPIPFamilies:UINT32 +{ + eQMIQCMAPIPFamilies_IPv4 = 4, + eQMIQCMAPIPFamilies_IPv6 = 6, +}; + +// Enum to describe QMI QCMAP NAT Types +enum eQMIQCMAPNATTypes:UINT32 +{ + eQMIQCMAPNATTypes_Symmetric = 0, + eQMIQCMAPNATTypes_PortRestrictedCode = 1, +}; + +// Enum to describe QMI QCMAP Next Header Protocols +enum eQMIQCMAPNextHeaderProtocols:UINT32 +{ + eQMIQCMAPNextHeaderProtocols_TCP = 1, + eQMIQCMAPNextHeaderProtocols_UDP = 2, + eQMIQCMAPNextHeaderProtocols_ICMPv4 = 3, + eQMIQCMAPNextHeaderProtocols_ICMPv6 = 4, + eQMIQCMAPNextHeaderProtocols_ESP = 5, + eQMIQCMAPNextHeaderProtocols_TCPUDP = 6, +}; + +// Enum to describe QMI QCMAP Packet Service Status +enum eQMIQCMAPPacketServiceStatus:UINT32 +{ + eQMIQCMAPPacketServiceStatus_Connecting = 1, + eQMIQCMAPPacketServiceStatus_Connected = 2, + eQMIQCMAPPacketServiceStatus_Disconnecting = 3, + eQMIQCMAPPacketServiceStatus_Disconnected = 4, +}; + +// Enum to describe QMI QCMAP Verbose Call End Reasons +enum eQMIQCMAPVerboseCallEndReasons:UINT32 +{ + eQMIQCMAPVerboseCallEndReasons_Unspecified = 0, + eQMIQCMAPVerboseCallEndReasons_MIPFAUnspecified = 65600, + eQMIQCMAPVerboseCallEndReasons_MIPFAAdministrativelyProhibited = 65601, + eQMIQCMAPVerboseCallEndReasons_MIPFAInsufficientResources = 65602, + eQMIQCMAPVerboseCallEndReasons_MIPFAMobileNodeAuthenticationFailure = 65603, + eQMIQCMAPVerboseCallEndReasons_MIPFAHAAuthenticationFailure = 65604, + eQMIQCMAPVerboseCallEndReasons_MIPFARequestedLifetimeTooLong = 65605, + eQMIQCMAPVerboseCallEndReasons_MIPFAMalformedRequest = 65606, + eQMIQCMAPVerboseCallEndReasons_MIPFAMalformedReply = 65607, + eQMIQCMAPVerboseCallEndReasons_MIPFAEncapsulationUnavailable = 65608, + eQMIQCMAPVerboseCallEndReasons_MIPFAVJHCUnavailable = 65609, + eQMIQCMAPVerboseCallEndReasons_MIPFAReverseTunnelUnavailable = 65610, + eQMIQCMAPVerboseCallEndReasons_MIPFAReverseTunnelIsMandatoryAndTBitIsNotSet = 65611, + eQMIQCMAPVerboseCallEndReasons_MIPFADeliveryStyleNotSupported = 65615, + eQMIQCMAPVerboseCallEndReasons_MIPFAMissingNAI = 65633, + eQMIQCMAPVerboseCallEndReasons_MIPFAMissingHA = 65634, + eQMIQCMAPVerboseCallEndReasons_MIPFAMissingHomeAddress = 65635, + eQMIQCMAPVerboseCallEndReasons_MIPFAUnknownChallenge = 65640, + eQMIQCMAPVerboseCallEndReasons_MIPFAMissingChallenge = 65641, + eQMIQCMAPVerboseCallEndReasons_MIPFAStaleChallenge = 65642, + eQMIQCMAPVerboseCallEndReasons_MIPHAReasonUnspecified = 65664, + eQMIQCMAPVerboseCallEndReasons_MIPHAAdministrativelyProhibited = 65665, + eQMIQCMAPVerboseCallEndReasons_MIPHAInsufficientResources = 65666, + eQMIQCMAPVerboseCallEndReasons_MIPHAMobileNodeAuthenticationFailure = 65667, + eQMIQCMAPVerboseCallEndReasons_MIPHAFAAuthenticationFailure = 65668, + eQMIQCMAPVerboseCallEndReasons_MIPHARegistrationIDMismatch = 65669, + eQMIQCMAPVerboseCallEndReasons_MIPHAMalformedRequest = 65670, + eQMIQCMAPVerboseCallEndReasons_MIPHAUnknownHAAddress = 65672, + eQMIQCMAPVerboseCallEndReasons_MIPHAReverseTunnelUnavailable = 65673, + eQMIQCMAPVerboseCallEndReasons_MIPHAReverseTunnelIsMandatoryAndTBitIsNotSet = 65674, + eQMIQCMAPVerboseCallEndReasons_MIPHAEncapsulationUnavailable = 65675, + eQMIQCMAPVerboseCallEndReasons_Unknown = 131071, + eQMIQCMAPVerboseCallEndReasons_Internal = 131273, + eQMIQCMAPVerboseCallEndReasons_CallEnded = 131274, + eQMIQCMAPVerboseCallEndReasons_InternalUnknownCauseCode = 131275, + eQMIQCMAPVerboseCallEndReasons_UnknownCauseCode = 131276, + eQMIQCMAPVerboseCallEndReasons_CloseInProgress = 131277, + eQMIQCMAPVerboseCallEndReasons_NWInitiatedTermination = 131278, + eQMIQCMAPVerboseCallEndReasons_AppPreempted = 131279, + eQMIQCMAPVerboseCallEndReasons_CMCDMALock = 197108, + eQMIQCMAPVerboseCallEndReasons_CMIntercept = 197109, + eQMIQCMAPVerboseCallEndReasons_CMReorder = 197110, + eQMIQCMAPVerboseCallEndReasons_CMReleaseServiceOptionReject = 197111, + eQMIQCMAPVerboseCallEndReasons_CMIncomingCall = 197112, + eQMIQCMAPVerboseCallEndReasons_CMAlertStop = 197113, + eQMIQCMAPVerboseCallEndReasons_CMActivation = 197114, + eQMIQCMAPVerboseCallEndReasons_CMMaxAccessProbe = 197115, + eQMIQCMAPVerboseCallEndReasons_CMCCSNotSupportedByBS = 197116, + eQMIQCMAPVerboseCallEndReasons_CMNoResponseFromBS = 197117, + eQMIQCMAPVerboseCallEndReasons_CMRejectedByBS = 197118, + eQMIQCMAPVerboseCallEndReasons_CMIncompatible = 197119, + eQMIQCMAPVerboseCallEndReasons_CMAlreadyInTC = 197120, + eQMIQCMAPVerboseCallEndReasons_CMUserCallOrigDuringGPS = 197121, + eQMIQCMAPVerboseCallEndReasons_CMUserCallOrigDuringSMS = 197122, + eQMIQCMAPVerboseCallEndReasons_CMNoCDMAService = 197123, + eQMIQCMAPVerboseCallEndReasons_CMRetryOrder = 197127, + eQMIQCMAPVerboseCallEndReasons_CMConfFailed = 197608, + eQMIQCMAPVerboseCallEndReasons_CMIncomingRejected = 197609, + eQMIQCMAPVerboseCallEndReasons_CMNoGWService = 197616, + eQMIQCMAPVerboseCallEndReasons_CMNoGPRSContext = 197617, + eQMIQCMAPVerboseCallEndReasons_CMIllegalMS = 197618, + eQMIQCMAPVerboseCallEndReasons_CMIllegalME = 197619, + eQMIQCMAPVerboseCallEndReasons_CMGPRSServicesAndNonGPRSServiceNotAllowed = 197620, + eQMIQCMAPVerboseCallEndReasons_CMGPRSServicesNotAllowed = 197621, + eQMIQCMAPVerboseCallEndReasons_CMMSIdentityCannotBeDerivedByTheNetwork = 197622, + eQMIQCMAPVerboseCallEndReasons_CMImplicitlyDetached = 197623, + eQMIQCMAPVerboseCallEndReasons_CMPLMNNotAllowed = 197624, + eQMIQCMAPVerboseCallEndReasons_CMLANotAllowed = 197625, + eQMIQCMAPVerboseCallEndReasons_CMGPRSServicesNotAllowedInThisPLMN = 197626, + eQMIQCMAPVerboseCallEndReasons_CMPDPDuplicate = 197627, + eQMIQCMAPVerboseCallEndReasons_CMUERATChange = 197628, + eQMIQCMAPVerboseCallEndReasons_CMCongestion = 197629, + eQMIQCMAPVerboseCallEndReasons_CMNoPDPContextActivated = 197630, + eQMIQCMAPVerboseCallEndReasons_CMAccessClassDSACRejection = 197631, + eQMIQCMAPVerboseCallEndReasons_CMCDGenOrBusy = 198108, + eQMIQCMAPVerboseCallEndReasons_CMCDBillOrAuth = 198109, + eQMIQCMAPVerboseCallEndReasons_CMChangeHDR = 198110, + eQMIQCMAPVerboseCallEndReasons_CMExitHDR = 198111, + eQMIQCMAPVerboseCallEndReasons_CMHDRNoSession = 198112, + eQMIQCMAPVerboseCallEndReasons_CMHDROrigDuringGPSFix = 198113, + eQMIQCMAPVerboseCallEndReasons_CMHDRCSTimeout = 198114, + eQMIQCMAPVerboseCallEndReasons_CMHDRReleasedByCM = 198115, + eQMIQCMAPVerboseCallEndReasons_CMNoHybridHDRService = 198118, + eQMIQCMAPVerboseCallEndReasons_CMClientEnd = 198608, + eQMIQCMAPVerboseCallEndReasons_CMNoService = 198609, + eQMIQCMAPVerboseCallEndReasons_CMFade = 198610, + eQMIQCMAPVerboseCallEndReasons_CMNormalRelease = 198611, + eQMIQCMAPVerboseCallEndReasons_CMAccessInProgress = 198612, + eQMIQCMAPVerboseCallEndReasons_CMAccessFail = 198613, + eQMIQCMAPVerboseCallEndReasons_CMRedirectOrHandoff = 198614, + eQMIQCMAPVerboseCallEndReasons_3GPPOperatorDeterminedBarring = 393224, + eQMIQCMAPVerboseCallEndReasons_3GPPLLCSNDCPFailure = 393241, + eQMIQCMAPVerboseCallEndReasons_3GPPInsufficientResources = 393242, + eQMIQCMAPVerboseCallEndReasons_3GPPUnknownAPN = 393243, + eQMIQCMAPVerboseCallEndReasons_3GPPUnknownPDP = 393244, + eQMIQCMAPVerboseCallEndReasons_3GPPAuthenticationFailed = 393245, + eQMIQCMAPVerboseCallEndReasons_3GPPGGSNReject = 393246, + eQMIQCMAPVerboseCallEndReasons_3GPPActivationReject = 393247, + eQMIQCMAPVerboseCallEndReasons_3GPPOptionNotSupported = 393248, + eQMIQCMAPVerboseCallEndReasons_3GPPOptionUnsubscribed = 393249, + eQMIQCMAPVerboseCallEndReasons_3GPPOptionTemporarilyOOO = 393250, + eQMIQCMAPVerboseCallEndReasons_3GPPNSAPIAlreadyUsed = 393251, + eQMIQCMAPVerboseCallEndReasons_3GPPRegularDeactivation = 393252, + eQMIQCMAPVerboseCallEndReasons_3GPPQoSNotAccepted = 393253, + eQMIQCMAPVerboseCallEndReasons_3GPPNetworkFailure = 393254, + eQMIQCMAPVerboseCallEndReasons_3GPPUMTSReactivationRequest = 393255, + eQMIQCMAPVerboseCallEndReasons_3GPPFeatureNotSupported = 393256, + eQMIQCMAPVerboseCallEndReasons_3GPPTFTSemanticError = 393257, + eQMIQCMAPVerboseCallEndReasons_3GPPTFTSyntaxError = 393258, + eQMIQCMAPVerboseCallEndReasons_3GPPUnknownPDPContext = 393259, + eQMIQCMAPVerboseCallEndReasons_3GPPFilterSemanticError = 393260, + eQMIQCMAPVerboseCallEndReasons_3GPPFilterSyntaxError = 393261, + eQMIQCMAPVerboseCallEndReasons_3GPPPDPWithoutActiveTFT = 393262, + eQMIQCMAPVerboseCallEndReasons_3GPPInvalidTransactionID = 393297, + eQMIQCMAPVerboseCallEndReasons_3GPPMessageIncorrectSemantic = 393311, + eQMIQCMAPVerboseCallEndReasons_3GPPInvalidMandatoryID = 393312, + eQMIQCMAPVerboseCallEndReasons_3GPPMessageTypeUnsupported = 393313, + eQMIQCMAPVerboseCallEndReasons_3GPPMessageTypeNoncompatibleState = 393314, + eQMIQCMAPVerboseCallEndReasons_3GPPUnknownInfoElement = 393315, + eQMIQCMAPVerboseCallEndReasons_3GPPConditionalInfoElementError = 393316, + eQMIQCMAPVerboseCallEndReasons_3GPPMessageAndProtocolStateUncompatible = 393317, + eQMIQCMAPVerboseCallEndReasons_3GPPProtocolError = 393327, + eQMIQCMAPVerboseCallEndReasons_3GPPAPNTypeConflict = 393328, + eQMIQCMAPVerboseCallEndReasons_PPPTimeout = 458753, + eQMIQCMAPVerboseCallEndReasons_PPPAuthenticationFailed = 458754, + eQMIQCMAPVerboseCallEndReasons_PPPOptionMismatch = 458755, + eQMIQCMAPVerboseCallEndReasons_PPPPAPFailure = 458783, + eQMIQCMAPVerboseCallEndReasons_PPPCHAPFailure = 458784, + eQMIQCMAPVerboseCallEndReasons_PPPUnknown = 524287, + eQMIQCMAPVerboseCallEndReasons_EHRPDSubsLimitedToV4 = 524289, + eQMIQCMAPVerboseCallEndReasons_EHRPDSubsLimitedToV6 = 524290, + eQMIQCMAPVerboseCallEndReasons_EHRPDVSNCPTimeout = 524292, + eQMIQCMAPVerboseCallEndReasons_EHRPDVSNCPFailure = 524293, + eQMIQCMAPVerboseCallEndReasons_EHRPDVSNCP3GPP2IGeneralError = 524294, + eQMIQCMAPVerboseCallEndReasons_EHRPDVSNCP3GPP2IUnauthAPN = 524295, + eQMIQCMAPVerboseCallEndReasons_EHRPDVSNCP3GPP2IPDNLimit = 524296, + eQMIQCMAPVerboseCallEndReasons_EHRPDVSNCP3GPP2INoPDNGW = 524297, + eQMIQCMAPVerboseCallEndReasons_EHRPDVSNCP3GPP2IPDNGWUnreach = 524298, + eQMIQCMAPVerboseCallEndReasons_EHRPDVSNCP3GPP2IPDNGWRejected = 524299, + eQMIQCMAPVerboseCallEndReasons_EHRPDVSNCP3GPP2IInsufficientParam = 524300, + eQMIQCMAPVerboseCallEndReasons_EHRPDVSNCP3GPP2IResourceUnavailable = 524301, + eQMIQCMAPVerboseCallEndReasons_EHRPDVSNCP3GPP2IAdminProhibited = 524302, + eQMIQCMAPVerboseCallEndReasons_EHRPDVSNCP3GPP2IPDNIDInUse = 524303, + eQMIQCMAPVerboseCallEndReasons_EHRPDVSNCP3GPP2ISubscriberLimitation = 524304, + eQMIQCMAPVerboseCallEndReasons_EHRPDVSNCP3GPP2IPDNExistsForAPN = 524305, + eQMIQCMAPVerboseCallEndReasons_PrefixUnavailable = 589825, +}; + +// Enum to describe QMI QoS Delivery Orders +enum eQMIQoSDeliveryOrders:UINT8 +{ + eQMIQoSDeliveryOrders_Subscribe = 0, + eQMIQoSDeliveryOrders_DeliveryOrderOn = 1, + eQMIQoSDeliveryOrders_DeliveryOrderOff = 2, +}; + +// Enum to describe QMI Results +enum eQMIResults:UINT16 +{ + eQMIResults_Success = 0, + eQMIResults_Failure = 1, +}; + +// Enum to describe QMI SDU Error Ratios +enum eQMISDUErrorRatios:UINT8 +{ + eQMISDUErrorRatios_Subscribe = 0, + eQMISDUErrorRatios_1X102 = 1, + eQMISDUErrorRatios_7X103 = 2, + eQMISDUErrorRatios_1X103 = 3, + eQMISDUErrorRatios_1X104 = 4, + eQMISDUErrorRatios_1X105 = 5, + eQMISDUErrorRatios_1X106 = 6, + eQMISDUErrorRatios_1X101 = 7, +}; + +// Enum to describe QMI SDU Residual Bit Error Ratios +enum eQMISDUResidualBitErrorRatios:UINT8 +{ + eQMISDUResidualBitErrorRatios_Subscribe = 0, + eQMISDUResidualBitErrorRatios_5X102 = 1, + eQMISDUResidualBitErrorRatios_1X102 = 2, + eQMISDUResidualBitErrorRatios_5X103 = 3, + eQMISDUResidualBitErrorRatios_4X103 = 4, + eQMISDUResidualBitErrorRatios_1X103 = 5, + eQMISDUResidualBitErrorRatios_1X104 = 6, + eQMISDUResidualBitErrorRatios_1X105 = 7, + eQMISDUResidualBitErrorRatios_1X106 = 8, + eQMISDUResidualBitErrorRatios_6X108 = 9, +}; + +// Enum to describe QMI Traffic Classes +enum eQMITrafficClasses:UINT8 +{ + eQMITrafficClasses_Subscribed = 0, + eQMITrafficClasses_Conversational = 1, + eQMITrafficClasses_Streaming = 2, + eQMITrafficClasses_Interactive = 3, + eQMITrafficClasses_Background = 4, +}; + +// Enum to describe QMI UIM ACL Status +enum eQMIUIMACLStatus:UINT8 +{ + eQMIUIMACLStatus_ACLNotAvailable = 0, + eQMIUIMACLStatus_ACLAvailableAndDisabled = 1, + eQMIUIMACLStatus_ACLAvailableAndEnabled = 2, +}; + +// Enum to describe QMI UIM APDU Response Status +enum eQMIUIMAPDUResponseStatus:UINT8 +{ + eQMIUIMAPDUResponseStatus_ReturnIntermediateProcedureBytes = 0, + eQMIUIMAPDUResponseStatus_ReturnFinalResultAndStatusWords = 1, +}; + +// Enum to describe QMI UIM Application States +enum eQMIUIMApplicationStates:UINT8 +{ + eQMIUIMApplicationStates_Unknown = 0, + eQMIUIMApplicationStates_Detected = 1, + eQMIUIMApplicationStates_PIN1OrUPINIsRequired = 2, + eQMIUIMApplicationStates_PUK1OrPUKForUPINIsRequired = 3, + eQMIUIMApplicationStates_PersonalizationStateMustBeChecked = 4, + eQMIUIMApplicationStates_PIN1IsBlocked = 5, + eQMIUIMApplicationStates_Illegal = 6, + eQMIUIMApplicationStates_Ready = 7, +}; + +// Enum to describe QMI UIM Application Types +enum eQMIUIMApplicationTypes:UINT8 +{ + eQMIUIMApplicationTypes_Unknown = 0, + eQMIUIMApplicationTypes_SIMCard = 1, + eQMIUIMApplicationTypes_USIMApplication = 2, + eQMIUIMApplicationTypes_RUIMCard = 3, + eQMIUIMApplicationTypes_CSIMApplication = 4, + eQMIUIMApplicationTypes_ISIMApplication = 5, +}; + +// Enum to describe QMI UIM Authentication Contexts +enum eQMIUIMAuthenticationContexts:UINT8 +{ + eQMIUIMAuthenticationContexts_GSMAlgorithm = 0, + eQMIUIMAuthenticationContexts_CAVEAlgorithm = 1, + eQMIUIMAuthenticationContexts_GSMSecurity = 2, + eQMIUIMAuthenticationContexts_3GSecurity = 3, + eQMIUIMAuthenticationContexts_VGCSVBSSecurity = 4, + eQMIUIMAuthenticationContexts_GBASecurityBootstrappingMode = 5, + eQMIUIMAuthenticationContexts_GBASecurityNAFDerivationMode = 6, + eQMIUIMAuthenticationContexts_MBMSSecurityMSKUpdateMode = 7, + eQMIUIMAuthenticationContexts_MBMSSecurityMTKGenerationMode = 8, + eQMIUIMAuthenticationContexts_MBMSSecurityMSKDeletionMode = 9, + eQMIUIMAuthenticationContexts_MBMSSecurityMUKDeletionMode = 10, + eQMIUIMAuthenticationContexts_IMSAKASecurity = 11, + eQMIUIMAuthenticationContexts_HTTPDigestSecurity = 12, + eQMIUIMAuthenticationContexts_ComputeIPCHAP = 13, + eQMIUIMAuthenticationContexts_ComputeIPMNHA = 14, + eQMIUIMAuthenticationContexts_ComputeIPMIPRRQ = 15, + eQMIUIMAuthenticationContexts_ComputeIPMNAAA = 16, + eQMIUIMAuthenticationContexts_ComputeIPHRPD = 17, +}; + +// Enum to describe QMI UIM CK/Session Operations +enum eQMIUIMCKSessionOperations:UINT8 +{ + eQMIUIMCKSessionOperations_Deactivate = 0, + eQMIUIMCKSessionOperations_Activate = 1, +}; + +// Enum to describe QMI UIM Card Error Codes +enum eQMIUIMCardErrorCodes:UINT8 +{ + eQMIUIMCardErrorCodes_Unknown = 0, + eQMIUIMCardErrorCodes_PowerDown = 1, + eQMIUIMCardErrorCodes_PollError = 2, + eQMIUIMCardErrorCodes_NoATRReceived = 3, + eQMIUIMCardErrorCodes_VoltMismatch = 4, + eQMIUIMCardErrorCodes_ParityError = 5, + eQMIUIMCardErrorCodes_UnknownPossiblyRemoved = 6, + eQMIUIMCardErrorCodes_TechnicalProblems = 7, +}; + +// Enum to describe QMI UIM Card States +enum eQMIUIMCardStates:UINT8 +{ + eQMIUIMCardStates_Absent = 0, + eQMIUIMCardStates_Present = 1, + eQMIUIMCardStates_Error = 2, + eQMIUIMCardStates_Unknown = 3, +}; + +// Enum to describe QMI UIM Connect Operations +enum eQMIUIMConnectOperations:UINT8 +{ + eQMIUIMConnectOperations_Disconnect = 0, + eQMIUIMConnectOperations_Connect = 1, + eQMIUIMConnectOperations_CheckStatus = 2, +}; + +// Enum to describe QMI UIM Disonnect Modes +enum eQMIUIMDisonnectModes:UINT8 +{ + eQMIUIMDisonnectModes_ImmediateDisconnect = 0, + eQMIUIMDisonnectModes_GracefulShutdown = 1, +}; + +// Enum to describe QMI UIM FDN Status Values +enum eQMIUIMFDNStatusValues:UINT8 +{ + eQMIUIMFDNStatusValues_NotAvailable = 0, + eQMIUIMFDNStatusValues_AvailableButDisabled = 1, + eQMIUIMFDNStatusValues_AvailableAndEnabled = 2, +}; + +// Enum to describe QMI UIM File Control Information +enum eQMIUIMFileControlInformation:UINT8 +{ + eQMIUIMFileControlInformation_NoData = 0, + eQMIUIMFileControlInformation_FCP = 1, + eQMIUIMFileControlInformation_FCI = 2, + eQMIUIMFileControlInformation_FCIWithInterfaces = 3, + eQMIUIMFileControlInformation_FMD = 4, +}; + +// Enum to describe QMI UIM File Types +enum eQMIUIMFileTypes:UINT8 +{ + eQMIUIMFileTypes_Transparent = 0, + eQMIUIMFileTypes_Cyclic = 1, + eQMIUIMFileTypes_LinearFixed = 2, + eQMIUIMFileTypes_DedicatedFile = 3, + eQMIUIMFileTypes_MasterFile = 4, +}; + +// Enum to describe QMI UIM Files Status +enum eQMIUIMFilesStatus:UINT32 +{ + eQMIUIMFilesStatus_Deactivated = 0, + eQMIUIMFilesStatus_Activated = 1, +}; + +// Enum to describe QMI UIM Hidden Key Status Values +enum eQMIUIMHiddenKeyStatusValues:UINT8 +{ + eQMIUIMHiddenKeyStatusValues_NotSupported = 0, + eQMIUIMHiddenKeyStatusValues_EnabledAndNotVerified = 1, + eQMIUIMHiddenKeyStatusValues_EnabledAndVerified = 2, + eQMIUIMHiddenKeyStatusValues_Disabled = 3, +}; + +// Enum to describe QMI UIM Hot-Swap +enum eQMIUIMHotSwap:UINT8 +{ + eQMIUIMHotSwap_HotSwapNotSupported = 0, + eQMIUIMHotSwap_HotSwapIsSupportedButStatusOfSwitchNotSupported = 1, + eQMIUIMHotSwap_SwitchIndicatesThatCardIsPresent = 2, + eQMIUIMHotSwap_SwichIndicatesThatCardIsNotPresent = 3, +}; + +// Enum to describe QMI UIM Key Reference ID +enum eQMIUIMKeyReferenceID:UINT8 +{ + eQMIUIMKeyReferenceID_PINApplication1 = 1, + eQMIUIMKeyReferenceID_PINApplication2 = 2, + eQMIUIMKeyReferenceID_PINApplication3 = 3, + eQMIUIMKeyReferenceID_PINApplication4 = 4, + eQMIUIMKeyReferenceID_PINApplication5 = 5, + eQMIUIMKeyReferenceID_PINApplication6 = 6, + eQMIUIMKeyReferenceID_PINApplication7 = 7, + eQMIUIMKeyReferenceID_PINApplication8 = 8, +}; + +// Enum to describe QMI UIM PIN IDs +enum eQMIUIMPINIDs:UINT8 +{ + eQMIUIMPINIDs_PIN1 = 1, + eQMIUIMPINIDs_PIN2 = 2, + eQMIUIMPINIDs_UniversalPIN = 3, + eQMIUIMPINIDs_HiddenKey = 4, +}; + +// Enum to describe QMI UIM PIN Operations +enum eQMIUIMPINOperations:UINT8 +{ + eQMIUIMPINOperations_Disable = 0, + eQMIUIMPINOperations_Enable = 1, +}; + +// Enum to describe QMI UIM PIN States +enum eQMIUIMPINStates:UINT8 +{ + eQMIUIMPINStates_Unknown = 0, + eQMIUIMPINStates_EnabledAndNotVerified = 1, + eQMIUIMPINStates_EnabledAndVerified = 2, + eQMIUIMPINStates_Disabled = 3, + eQMIUIMPINStates_Blocked = 4, + eQMIUIMPINStates_PermanentlyBlocked = 5, +}; + +// Enum to describe QMI UIM Personalization Features +enum eQMIUIMPersonalizationFeatures:UINT8 +{ + eQMIUIMPersonalizationFeatures_GWNetwork = 0, + eQMIUIMPersonalizationFeatures_GWNetworkSubset = 1, + eQMIUIMPersonalizationFeatures_GWServiceProvider = 2, + eQMIUIMPersonalizationFeatures_GWCorporate = 3, + eQMIUIMPersonalizationFeatures_GWUIM = 4, + eQMIUIMPersonalizationFeatures_1XNetworkType1 = 5, + eQMIUIMPersonalizationFeatures_1XNetworkType2 = 6, + eQMIUIMPersonalizationFeatures_1XHRPD = 7, + eQMIUIMPersonalizationFeatures_1XServiceProvider = 8, + eQMIUIMPersonalizationFeatures_1XCorporate = 9, + eQMIUIMPersonalizationFeatures_1XRUIM = 10, + eQMIUIMPersonalizationFeatures_Unknown = 11, +}; + +// Enum to describe QMI UIM Personalization States +enum eQMIUIMPersonalizationStates:UINT8 +{ + eQMIUIMPersonalizationStates_Unknown = 0, + eQMIUIMPersonalizationStates_PersonalizationOperationIsInProgress = 1, + eQMIUIMPersonalizationStates_Ready = 2, + eQMIUIMPersonalizationStates_PersonalizationCodeIsRequired = 3, + eQMIUIMPersonalizationStates_PUKForPersonalizationCodeIsRequired = 4, + eQMIUIMPersonalizationStates_PermanentlyBlocked = 5, +}; + +// Enum to describe QMI UIM Refresh Modes +enum eQMIUIMRefreshModes:UINT8 +{ + eQMIUIMRefreshModes_Reset = 0, + eQMIUIMRefreshModes_Init = 1, + eQMIUIMRefreshModes_InitAndFCN = 2, + eQMIUIMRefreshModes_FCN = 3, + eQMIUIMRefreshModes_InitAndFullFCN = 4, + eQMIUIMRefreshModes_ApplicationReset = 5, + eQMIUIMRefreshModes_3GSessionReset = 6, +}; + +// Enum to describe QMI UIM Refresh Stages +enum eQMIUIMRefreshStages:UINT8 +{ + eQMIUIMRefreshStages_WaitingForOK = 0, + eQMIUIMRefreshStages_Start = 1, + eQMIUIMRefreshStages_EndWithSuccess = 2, + eQMIUIMRefreshStages_EndWithFailure = 3, +}; + +// Enum to describe QMI UIM Register Flags +enum eQMIUIMRegisterFlags:UINT8 +{ + eQMIUIMRegisterFlags_Deregister = 0, + eQMIUIMRegisterFlags_Register = 1, +}; + +// Enum to describe QMI UIM SAP Connection Conditions +enum eQMIUIMSAPConnectionConditions:UINT8 +{ + eQMIUIMSAPConnectionConditions_BlockOnActiveVoiceOrDataCall = 0, + eQMIUIMSAPConnectionConditions_BlockOnActiveDataCall = 1, + eQMIUIMSAPConnectionConditions_BlockOnActiveVoiceCall = 2, + eQMIUIMSAPConnectionConditions_Allow = 3, +}; + +// Enum to describe QMI UIM SAP Requests +enum eQMIUIMSAPRequests:UINT8 +{ + eQMIUIMSAPRequests_RetrieveATR = 0, + eQMIUIMSAPRequests_SendAPDU = 1, + eQMIUIMSAPRequests_PowerOffSIM = 2, + eQMIUIMSAPRequests_PowerOnSIM = 3, + eQMIUIMSAPRequests_ResetSIM = 4, + eQMIUIMSAPRequests_RetrieveCardReaderStatus = 5, +}; + +// Enum to describe QMI UIM SAP States +enum eQMIUIMSAPStates:UINT8 +{ + eQMIUIMSAPStates_NotEnabled = 0, + eQMIUIMSAPStates_Connecting = 1, + eQMIUIMSAPStates_ConnectedSuccessfully = 2, + eQMIUIMSAPStates_ConnectionError = 3, + eQMIUIMSAPStates_Disconnecting = 4, + eQMIUIMSAPStates_DisconnectedSuccessfully = 5, +}; + +// Enum to describe QMI UIM Security Attributes +enum eQMIUIMSecurityAttributes:UINT8 +{ + eQMIUIMSecurityAttributes_Always = 0, + eQMIUIMSecurityAttributes_Never = 1, + eQMIUIMSecurityAttributes_ANDCondition = 2, + eQMIUIMSecurityAttributes_ORCondition = 3, + eQMIUIMSecurityAttributes_SingleCondition = 4, +}; + +// Enum to describe QMI UIM Session Types +enum eQMIUIMSessionTypes:UINT8 +{ + eQMIUIMSessionTypes_PrimaryGWProvisioning = 0, + eQMIUIMSessionTypes_Primary1XProvisioning = 1, + eQMIUIMSessionTypes_SecondaryGWProvisioning = 2, + eQMIUIMSessionTypes_Secondary1XProvisioning = 3, + eQMIUIMSessionTypes_NonprovisioningOnSlot1 = 4, + eQMIUIMSessionTypes_NonprovisioningOnSlot2 = 5, + eQMIUIMSessionTypes_CardOnSlot1 = 6, + eQMIUIMSessionTypes_CardOnSlot2 = 7, + eQMIUIMSessionTypes_LogicalChannelOnSlot1 = 8, + eQMIUIMSessionTypes_LogicalChannelOnSlot2 = 9, + eQMIUIMSessionTypes_TertiaryGWProvisioning = 10, + eQMIUIMSessionTypes_Tertiary1XProvisioning = 11, + eQMIUIMSessionTypes_QuarternaryGWProvisioning = 12, + eQMIUIMSessionTypes_Quarternary1XProvisioning = 13, + eQMIUIMSessionTypes_QuinaryGWProvisioning = 14, + eQMIUIMSessionTypes_Quinary1XProvisioning = 15, + eQMIUIMSessionTypes_NonprovisioningOnSlot3 = 16, + eQMIUIMSessionTypes_NonprovisioningOnSlot4 = 17, + eQMIUIMSessionTypes_NonprovisioningOnSlot5 = 18, + eQMIUIMSessionTypes_CardOnSlot3 = 19, + eQMIUIMSessionTypes_CardOnSlot4 = 20, + eQMIUIMSessionTypes_CardOnSlot5 = 21, + eQMIUIMSessionTypes_LogicalChannelOnSlot3 = 22, + eQMIUIMSessionTypes_LogicalChannelOnSlot4 = 23, + eQMIUIMSessionTypes_LogicalChannelOnSlot5 = 24, +}; + +// Enum to describe QMI UIM Slots +enum eQMIUIMSlots:UINT8 +{ + eQMIUIMSlots_Slot1 = 1, + eQMIUIMSlots_Slot2 = 2, + eQMIUIMSlots_Slot3 = 3, + eQMIUIMSlots_Slot4 = 4, + eQMIUIMSlots_Slot5 = 5, +}; + +// Enum to describe QMI Voice ALS Line Indicators +enum eQMIVoiceALSLineIndicators:UINT8 +{ + eQMIVoiceALSLineIndicators_Line1 = 0, + eQMIVoiceALSLineIndicators_Line2 = 1, +}; + +// Enum to describe QMI Voice ALS Lines +enum eQMIVoiceALSLines:UINT8 +{ + eQMIVoiceALSLines_Line1 = 0, + eQMIVoiceALSLines_Line2 = 1, +}; + +// Enum to describe QMI Voice Alerting Patterns +enum eQMIVoiceAlertingPatterns:UINT32 +{ + eQMIVoiceAlertingPatterns_Pattern1 = 0, + eQMIVoiceAlertingPatterns_Pattern2 = 1, + eQMIVoiceAlertingPatterns_Pattern3 = 2, + eQMIVoiceAlertingPatterns_Pattern4 = 3, + eQMIVoiceAlertingPatterns_Pattern5 = 4, + eQMIVoiceAlertingPatterns_Pattern6 = 5, + eQMIVoiceAlertingPatterns_Pattern7 = 6, + eQMIVoiceAlertingPatterns_Pattern8 = 7, + eQMIVoiceAlertingPatterns_Pattern9 = 8, +}; + +// Enum to describe QMI Voice Alerting Types +enum eQMIVoiceAlertingTypes:UINT8 +{ + eQMIVoiceAlertingTypes_Local = 0, + eQMIVoiceAlertingTypes_Remote = 1, +}; + +// Enum to describe QMI Voice CLIR Causes +enum eQMIVoiceCLIRCauses:UINT8 +{ + eQMIVoiceCLIRCauses_None = 0, + eQMIVoiceCLIRCauses_RejectedByUser = 1, + eQMIVoiceCLIRCauses_InteractionWithOtherServices = 2, + eQMIVoiceCLIRCauses_CoinLine = 3, + eQMIVoiceCLIRCauses_ServiceUnavailable = 4, + eQMIVoiceCLIRCauses_Reserved = 5, +}; + +// Enum to describe QMI Voice CLIR Types +enum eQMIVoiceCLIRTypes:UINT8 +{ + eQMIVoiceCLIRTypes_Supression = 1, + eQMIVoiceCLIRTypes_Invocation = 2, +}; + +// Enum to describe QMI Voice Call Control Alpha Codes +enum eQMIVoiceCallControlAlphaCodes:UINT32 +{ + eQMIVoiceCallControlAlphaCodes_NotPresent = 0, + eQMIVoiceCallControlAlphaCodes_Present = 1, + eQMIVoiceCallControlAlphaCodes_ZeroLength = 2, +}; + +// Enum to describe QMI Voice Call Control Result Types +enum eQMIVoiceCallControlResultTypes:UINT8 +{ + eQMIVoiceCallControlResultTypes_Voice = 0, + eQMIVoiceCallControlResultTypes_SupplementaryService = 1, + eQMIVoiceCallControlResultTypes_USSD = 2, +}; + +// Enum to describe QMI Voice Call Control Results +enum eQMIVoiceCallControlResults:UINT32 +{ + eQMIVoiceCallControlResults_AllowedWithoutModification = 0, + eQMIVoiceCallControlResults_NotAllowed = 1, + eQMIVoiceCallControlResults_AllowedWithModification = 2, + eQMIVoiceCallControlResults_AllowedModifiedToVoice = 3, + eQMIVoiceCallControlResults_AllowedModifiedToSS = 4, + eQMIVoiceCallControlResults_AllowedModifiedToUSSD = 5, +}; + +// Enum to describe QMI Voice Call Directions +enum eQMIVoiceCallDirections:UINT8 +{ + eQMIVoiceCallDirections_MobileOriginated = 1, + eQMIVoiceCallDirections_MobileTerminated = 2, +}; + +// Enum to describe QMI Voice Call Modes +enum eQMIVoiceCallModes:UINT8 +{ + eQMIVoiceCallModes_NoService = 0, + eQMIVoiceCallModes_CDMA = 1, + eQMIVoiceCallModes_GSM = 2, + eQMIVoiceCallModes_UMTS = 3, + eQMIVoiceCallModes_LTE = 4, + eQMIVoiceCallModes_TDSCDMA = 5, + eQMIVoiceCallModes_Unknown = 6, + eQMIVoiceCallModes_WLAN = 7, +}; + +// Enum to describe QMI Voice Call States +enum eQMIVoiceCallStates:UINT8 +{ + eQMIVoiceCallStates_Origination = 1, + eQMIVoiceCallStates_Incoming = 2, + eQMIVoiceCallStates_Conversation = 3, + eQMIVoiceCallStates_InProgress = 4, + eQMIVoiceCallStates_Alerting = 5, + eQMIVoiceCallStates_Hold = 6, + eQMIVoiceCallStates_Waiting = 7, + eQMIVoiceCallStates_Disconnecting = 8, + eQMIVoiceCallStates_End = 9, + eQMIVoiceCallStates_Setup = 10, +}; + +// Enum to describe QMI Voice Call Types +enum eQMIVoiceCallTypes:UINT8 +{ + eQMIVoiceCallTypes_VoiceAutomaticSelection = 0, + eQMIVoiceCallTypes_Forced = 1, + eQMIVoiceCallTypes_VoiceOverIP = 2, + eQMIVoiceCallTypes_VideoOverIP = 3, + eQMIVoiceCallTypes_Videoshare = 4, + eQMIVoiceCallTypes_TestCall = 5, + eQMIVoiceCallTypes_OTAPA = 6, + eQMIVoiceCallTypes_StandardOTASP = 7, + eQMIVoiceCallTypes_NonStandardOTASP = 8, + eQMIVoiceCallTypes_Emergency = 9, + eQMIVoiceCallTypes_SupplementaryService = 10, + eQMIVoiceCallTypes_EmergencyVoIP = 11, + eQMIVoiceCallTypes_ECall = 12, +}; + +// Enum to describe QMI Voice DTMF Events +enum eQMIVoiceDTMFEvents:UINT8 +{ + eQMIVoiceDTMFEvents_SendDTMFBurst = 0, + eQMIVoiceDTMFEvents_StartSendingContinuousDTMFTone = 1, + eQMIVoiceDTMFEvents_StopSendingContinuousDTMFTone = 3, + eQMIVoiceDTMFEvents_ReceiveDTMFBurst = 4, + eQMIVoiceDTMFEvents_StartReceivingContinuousDTMFTone = 6, + eQMIVoiceDTMFEvents_StopReceivingContinuousDTMFTone = 7, +}; + +// Enum to describe QMI Voice DTMF Privacy Levels +enum eQMIVoiceDTMFPrivacyLevels:UINT8 +{ + eQMIVoiceDTMFPrivacyLevels_Standard = 0, + eQMIVoiceDTMFPrivacyLevels_Enhanced = 1, +}; + +// Enum to describe QMI Voice Domains +enum eQMIVoiceDomains:UINT8 +{ + eQMIVoiceDomains_CSOnly = 0, + eQMIVoiceDomains_PSOnly = 1, + eQMIVoiceDomains_CSThenPS = 2, + eQMIVoiceDomains_PSThenCS = 3, +}; + +// Enum to describe QMI Voice ECT Call States +enum eQMIVoiceECTCallStates:UINT8 +{ + eQMIVoiceECTCallStates_None = 0, + eQMIVoiceECTCallStates_Alerting = 1, + eQMIVoiceECTCallStates_Active = 2, +}; + +// Enum to describe QMI Voice ECall Variants +enum eQMIVoiceECallVariants:UINT32 +{ + eQMIVoiceECallVariants_Test = 1, + eQMIVoiceECallVariants_Emergency = 2, + eQMIVoiceECallVariants_Reconfig = 3, +}; + +// Enum to describe QMI Voice End Reasons +enum eQMIVoiceEndReasons:UINT16 +{ + eQMIVoiceEndReasons_Offline = 0, + eQMIVoiceEndReasons_CDMALocked = 20, + eQMIVoiceEndReasons_NoService = 21, + eQMIVoiceEndReasons_Fade = 22, + eQMIVoiceEndReasons_Intercept = 23, + eQMIVoiceEndReasons_Reorder = 24, + eQMIVoiceEndReasons_NormalRelease = 25, + eQMIVoiceEndReasons_SORejectRelease = 26, + eQMIVoiceEndReasons_IncomingCall = 27, + eQMIVoiceEndReasons_AlertStop = 28, + eQMIVoiceEndReasons_ClientEnd = 29, + eQMIVoiceEndReasons_Activation = 30, + eQMIVoiceEndReasons_MCAbort = 31, + eQMIVoiceEndReasons_MaxAccessProbes = 32, + eQMIVoiceEndReasons_PersistentTestFailure = 33, + eQMIVoiceEndReasons_RUIMNotPresent = 34, + eQMIVoiceEndReasons_InProgressAccessAttempt = 35, + eQMIVoiceEndReasons_AccessFailure = 36, + eQMIVoiceEndReasons_RetryOrderReceived = 37, + eQMIVoiceEndReasons_ConcurrentServiceNotSupported = 38, + eQMIVoiceEndReasons_NoBaseStationResponse = 39, + eQMIVoiceEndReasons_BaseStationReject = 40, + eQMIVoiceEndReasons_IncompatibleConcurrentServices = 41, + eQMIVoiceEndReasons_AccessBlocked = 42, + eQMIVoiceEndReasons_AlreadyinTC = 43, + eQMIVoiceEndReasons_EmergencyFlashed = 44, + eQMIVoiceEndReasons_GPSCallEnding = 45, + eQMIVoiceEndReasons_SMSCallEnding = 46, + eQMIVoiceEndReasons_DataCallEnding = 47, + eQMIVoiceEndReasons_RedirectionOrHandoff = 48, + eQMIVoiceEndReasons_AllAccessBlocked = 49, + eQMIVoiceEndReasons_OTASPSPCError = 50, + eQMIVoiceEndReasons_MaxIS707BAccessProbes = 51, + eQMIVoiceEndReasons_BaseStationRejectOrder = 52, + eQMIVoiceEndReasons_BaseStationRetryOrder = 53, + eQMIVoiceEndReasons_TimerT42Expired = 54, + eQMIVoiceEndReasons_TimerT40Expired = 55, + eQMIVoiceEndReasons_ServiceInitializationFailure = 56, + eQMIVoiceEndReasons_TimerT50MExpired = 57, + eQMIVoiceEndReasons_TimerT51MExpired = 58, + eQMIVoiceEndReasons_ACKTimeoutDueTo12Retransmissions = 59, + eQMIVoiceEndReasons_BadForwardLinkOrTimerT5MExpired = 60, + eQMIVoiceEndReasons_TransceiverResourceManagerRequestFailed = 61, + eQMIVoiceEndReasons_TimerT41Expired = 62, + eQMIVoiceEndReasons_IncomingCallRejected = 102, + eQMIVoiceEndReasons_SetupIndicationRejected = 103, + eQMIVoiceEndReasons_NetworkEndedCall = 104, + eQMIVoiceEndReasons_NoFunds = 105, + eQMIVoiceEndReasons_NoGWSErvice = 106, + eQMIVoiceEndReasons_NoCDMAService = 107, + eQMIVoiceEndReasons_NoFullService = 108, + eQMIVoiceEndReasons_MaxPSCalls = 109, + eQMIVoiceEndReasons_SUPSUknownSubscriber = 110, + eQMIVoiceEndReasons_SUPSIllegalSubscriber = 111, + eQMIVoiceEndReasons_SUPSBearerServiceNotProvisioned = 112, + eQMIVoiceEndReasons_SUPSTeleserviceNotProvisioned = 113, + eQMIVoiceEndReasons_SUPSIllegalEquipment = 114, + eQMIVoiceEndReasons_SUPSCallBarred = 115, + eQMIVoiceEndReasons_SUPSIllegalSSOperation = 116, + eQMIVoiceEndReasons_SUPSSSErrorStatus = 117, + eQMIVoiceEndReasons_SUPSSSNotAvailable = 118, + eQMIVoiceEndReasons_SUPSSSSubscriptionViolation = 119, + eQMIVoiceEndReasons_SUPSSSIncompatibility = 120, + eQMIVoiceEndReasons_SUPSFacilityNotSupported = 121, + eQMIVoiceEndReasons_SUPSAbscentSubscriber = 122, + eQMIVoiceEndReasons_SUPSShortTermDenial = 123, + eQMIVoiceEndReasons_SUPSLongTermDenial = 124, + eQMIVoiceEndReasons_SUPSSystemFailure = 125, + eQMIVoiceEndReasons_SUPSDataMissing = 126, + eQMIVoiceEndReasons_SUPSUnexpectedDataValue = 127, + eQMIVoiceEndReasons_SUPSPasswordRegistrationFailure = 128, + eQMIVoiceEndReasons_SUPSNegativePasswordCheck = 129, + eQMIVoiceEndReasons_SUPSPasswordAttemptsViolation = 130, + eQMIVoiceEndReasons_SUPSPositionMethodFailure = 131, + eQMIVoiceEndReasons_SUPSUnknownAlphabet = 132, + eQMIVoiceEndReasons_SUPSUSSDBusy = 133, + eQMIVoiceEndReasons_SUPSRejectedByUser = 134, + eQMIVoiceEndReasons_SUPSRejectedByNetwork = 135, + eQMIVoiceEndReasons_SUPSDelectiontoServedSubscriber = 136, + eQMIVoiceEndReasons_SUPSSpecialServiceCode = 137, + eQMIVoiceEndReasons_SUPSInvalidDeflectedToNumber = 138, + eQMIVoiceEndReasons_SUPSMultipartyParticipantsExceeded = 139, + eQMIVoiceEndReasons_SUPSResourcesNotAvailable = 140, + eQMIVoiceEndReasons_CCUnassignedNumber = 141, + eQMIVoiceEndReasons_CCNoRouteToDestination = 142, + eQMIVoiceEndReasons_CCChannelUnacceptable = 143, + eQMIVoiceEndReasons_CCOperatorDeterminedBarring = 144, + eQMIVoiceEndReasons_CCNormalCallClearing = 145, + eQMIVoiceEndReasons_CCUserBusy = 146, + eQMIVoiceEndReasons_CCNoUserResponding = 147, + eQMIVoiceEndReasons_CCUserAlertingNoAnsewer = 148, + eQMIVoiceEndReasons_CCCallRejected = 149, + eQMIVoiceEndReasons_CCNumberChanged = 150, + eQMIVoiceEndReasons_CCPreemption = 151, + eQMIVoiceEndReasons_CCDestinationOutOfOrder = 152, + eQMIVoiceEndReasons_CCInvalidNumber = 153, + eQMIVoiceEndReasons_CCFacilityRejected = 154, + eQMIVoiceEndReasons_CCResponseToStatusEnquiry = 155, + eQMIVoiceEndReasons_CCNormalUnspecified = 156, + eQMIVoiceEndReasons_CCNoCircuitOrChannelAvailable = 157, + eQMIVoiceEndReasons_CCNetworkOutOfOrder = 158, + eQMIVoiceEndReasons_CCTemporaryFailure = 159, + eQMIVoiceEndReasons_CCSwitchingEquipmentCongestion = 160, + eQMIVoiceEndReasons_CCAccessInformationDiscarded = 161, + eQMIVoiceEndReasons_CCRequestedCircuitOrChannelNotAvailable = 162, + eQMIVoiceEndReasons_CCResourcesUnavailable = 163, + eQMIVoiceEndReasons_CCQOSUnavailable = 164, + eQMIVoiceEndReasons_CCRequestedFacilityNotSubscribed = 165, + eQMIVoiceEndReasons_CCIncomingCallsBarredWithinCUG = 166, + eQMIVoiceEndReasons_CCBearerCapabilityNotAuthorized = 167, + eQMIVoiceEndReasons_CCBearerCapabilityUnavailable = 168, + eQMIVoiceEndReasons_CCServiceOptionNotAvailable = 169, + eQMIVoiceEndReasons_CCACMLimitExceeded = 170, + eQMIVoiceEndReasons_CCBearerServiceNotImplemented = 171, + eQMIVoiceEndReasons_CCRequestedFacilityNotAvailable = 172, + eQMIVoiceEndReasons_CCOnlyDigitalInformationBearerAvailable = 173, + eQMIVoiceEndReasons_CCServiceOrOptionNotImplemented = 174, + eQMIVoiceEndReasons_CCInvalidTransactionIdentifier = 175, + eQMIVoiceEndReasons_CCUserNotMemberOfCUG = 176, + eQMIVoiceEndReasons_CCIncompatibleDestination = 177, + eQMIVoiceEndReasons_CCInvalidTransitNWSelection = 178, + eQMIVoiceEndReasons_CCSemanticallyIncorrectMessage = 179, + eQMIVoiceEndReasons_CCInvalidMandatoryInformation = 180, + eQMIVoiceEndReasons_CCMessageTypeNotImplemented = 181, + eQMIVoiceEndReasons_CCMessageTypeNotCompatible = 182, + eQMIVoiceEndReasons_CCInformationElementNonexistent = 183, + eQMIVoiceEndReasons_CCConditionalInformationElementError = 184, + eQMIVoiceEndReasons_CCMessageNotCompatible = 185, + eQMIVoiceEndReasons_CCRecoveryOnTimerExpired = 186, + eQMIVoiceEndReasons_CCProtocolErrorUnspecified = 187, + eQMIVoiceEndReasons_CCInternetworkingUnspecified = 188, + eQMIVoiceEndReasons_CCOutgoingCallsBarredWithinCUG = 189, + eQMIVoiceEndReasons_CCNoCUGSelection = 190, + eQMIVoiceEndReasons_CCUnknownCUGIndex = 191, + eQMIVoiceEndReasons_CCIncompatibleCUGIndex = 192, + eQMIVoiceEndReasons_CCCUGCallFailureunspecified = 193, + eQMIVoiceEndReasons_CCCLIRNotSubscribed = 194, + eQMIVoiceEndReasons_CCCCBSPossible = 195, + eQMIVoiceEndReasons_CCCCBSNotPossible = 196, + eQMIVoiceEndReasons_MMGMMIMSIUnknwonInHLR = 197, + eQMIVoiceEndReasons_MMGMMIllegalMS = 198, + eQMIVoiceEndReasons_MMGMMIMSIUnknownInVLR = 199, + eQMIVoiceEndReasons_MMGMMIMEINotAccepted = 200, + eQMIVoiceEndReasons_MMGMMIllegalME = 201, + eQMIVoiceEndReasons_MMGMMPLMNNotAllowed = 202, + eQMIVoiceEndReasons_MMGMMLocationAreaNotAllowed = 203, + eQMIVoiceEndReasons_MMGMMRoamingNotAllowedInThisLocationArea = 204, + eQMIVoiceEndReasons_MMGMMNoSuitableCellsInLocationArea = 205, + eQMIVoiceEndReasons_MMGMMNetworkFailure = 206, + eQMIVoiceEndReasons_MMGMMMACFailure = 207, + eQMIVoiceEndReasons_MMGMMSynchFailure = 208, + eQMIVoiceEndReasons_MMGMMNetworkCongestion = 209, + eQMIVoiceEndReasons_MMGMMGSMAuthenticationUnacceptable = 210, + eQMIVoiceEndReasons_MMGMMServiceNotSubscribed = 211, + eQMIVoiceEndReasons_MMGMMServiceTemporarilyOutOfOrder = 212, + eQMIVoiceEndReasons_MMGMMCallCannotBeIdentified = 213, + eQMIVoiceEndReasons_MMGMMIncorrectSemanticsInMessage = 214, + eQMIVoiceEndReasons_MMGMMMadatoryInformationInvalid = 215, + eQMIVoiceEndReasons_MMGMMAccessStratumFailure = 216, + eQMIVoiceEndReasons_MMGMMInvalidSIM = 217, + eQMIVoiceEndReasons_MMGMMWrongState = 218, + eQMIVoiceEndReasons_MMGMMAcessClassBloacked = 219, + eQMIVoiceEndReasons_MMGMMNoResources = 220, + eQMIVoiceEndReasons_MMGMMInvalidUserData = 221, + eQMIVoiceEndReasons_MMRejectTimerT3230Expired = 222, + eQMIVoiceEndReasons_MMRejectNoCellAvailable = 223, + eQMIVoiceEndReasons_MMRejectAbortMessageReceived = 224, + eQMIVoiceEndReasons_MMRejectRadioLinkLost = 225, + eQMIVoiceEndReasons_CNMRejectTimerT303Expired = 226, + eQMIVoiceEndReasons_CNMRejectCNMMMReleaseIsPending = 227, + eQMIVoiceEndReasons_AccessStratumRRReleaseIndication = 228, + eQMIVoiceEndReasons_AccessStratumRandomAccessFailure = 229, + eQMIVoiceEndReasons_AccessStratumRRCReleaseIndication = 230, + eQMIVoiceEndReasons_AccessStratumCloseSessionIndication = 231, + eQMIVoiceEndReasons_AccessStratumOpenSessionFailure = 232, + eQMIVoiceEndReasons_AccessStratumLowLevelFailure = 233, + eQMIVoiceEndReasons_AccessStratumRedialNotAllowed = 234, + eQMIVoiceEndReasons_AccessStratumImmediateRetry = 235, + eQMIVoiceEndReasons_AccessStratumAbortRadioUnavailable = 236, + eQMIVoiceEndReasons_OTARejectSONotSupported = 237, + eQMIVoiceEndReasons_IPBadRequestWaitingForInvite = 300, + eQMIVoiceEndReasons_IPBadRequestWaitingForReinvite = 301, + eQMIVoiceEndReasons_IPCalledPartyDoesNotExist = 302, + eQMIVoiceEndReasons_IPUnsupportedMediaType = 303, + eQMIVoiceEndReasons_IPTemporarilyUnavailable = 304, + eQMIVoiceEndReasons_IPNoNetworkReponseTimeout = 305, + eQMIVoiceEndReasons_IPUnableToPutCallOnHold = 306, + eQMIVoiceEndReasons_IPMovedToEHRPD = 307, + eQMIVoiceEndReasons_IPUpgradeOrDowngradeRejected = 308, + eQMIVoiceEndReasons_IPCallForbidden = 309, + eQMIVoiceEndReasons_IPGenericTimeout = 310, + eQMIVoiceEndReasons_IPUpgradeOrDowngradeFailed = 311, + eQMIVoiceEndReasons_IPUpgradeOrDowngradeCancelled = 312, + eQMIVoiceEndReasons_IPSSACBarring = 313, + eQMIVoiceEndReasons_IPThermalEmergency = 314, + eQMIVoiceEndReasons_IP1xCSFBSoftFailure = 315, + eQMIVoiceEndReasons_IP1xCSFBHardFailure = 316, +}; + +// Enum to describe QMI Voice Even Odd Indicators +enum eQMIVoiceEvenOddIndicators:UINT8 +{ + eQMIVoiceEvenOddIndicators_EvenNumber = 0, + eQMIVoiceEvenOddIndicators_OddNumber = 1, +}; + +// Enum to describe QMI Voice Extended Service Class +enum eQMIVoiceExtendedServiceClass +{ + eQMIVoiceExtendedServiceClass_Voice = 1, + eQMIVoiceExtendedServiceClass_Data = 2, + eQMIVoiceExtendedServiceClass_Fax = 4, + eQMIVoiceExtendedServiceClass_AllTeleservicesExceptSMS = 5, + eQMIVoiceExtendedServiceClass_SMS = 8, + eQMIVoiceExtendedServiceClass_AllTeleservicesData = 12, + eQMIVoiceExtendedServiceClass_AllTeleservices = 13, + eQMIVoiceExtendedServiceClass_SynchronousData = 16, + eQMIVoiceExtendedServiceClass_AllPositionDeterminationServiceData = 17, + eQMIVoiceExtendedServiceClass_AsynchronousData = 32, + eQMIVoiceExtendedServiceClass_AllSynchronousAsynchronousData = 48, + eQMIVoiceExtendedServiceClass_PacketData = 64, + eQMIVoiceExtendedServiceClass_AllSynchronousData = 80, + eQMIVoiceExtendedServiceClass_PacketAssemblerDisassemblerData = 128, + eQMIVoiceExtendedServiceClass_AllAsynchronousData = 160, + eQMIVoiceExtendedServiceClass_PLMNSpecificAllTeleservices = 53248, + eQMIVoiceExtendedServiceClass_PLMNSpecificTeleservices1 = 53504, + eQMIVoiceExtendedServiceClass_PLMNSpecificTeleservices2 = 53760, + eQMIVoiceExtendedServiceClass_PLMNSpecificTeleservices3 = 54016, + eQMIVoiceExtendedServiceClass_PLMNSpecificTeleservices4 = 54272, + eQMIVoiceExtendedServiceClass_PLMNSpecificTeleservices5 = 54528, + eQMIVoiceExtendedServiceClass_PLMNSpecificTeleservices6 = 54784, + eQMIVoiceExtendedServiceClass_PLMNSpecificTeleservices7 = 55040, + eQMIVoiceExtendedServiceClass_PLMNSpecificTeleservices8 = 55296, + eQMIVoiceExtendedServiceClass_PLMNSpecificTeleservices9 = 55552, + eQMIVoiceExtendedServiceClass_PLMNSpecificTeleservices10 = 55808, + eQMIVoiceExtendedServiceClass_PLMNSpecificTeleservices11 = 56064, + eQMIVoiceExtendedServiceClass_PLMNSpecificTeleservices12 = 56320, + eQMIVoiceExtendedServiceClass_PLMNSpecificTeleservices13 = 56576, + eQMIVoiceExtendedServiceClass_PLMNSpecificTeleservices14 = 56832, + eQMIVoiceExtendedServiceClass_PLMNSpecificTeleservices15 = 57088, +}; + +// Enum to describe QMI Voice Flash Types +enum eQMIVoiceFlashTypes:UINT8 +{ + eQMIVoiceFlashTypes_Simple = 0, + eQMIVoiceFlashTypes_ActivateAnswerHold = 1, + eQMIVoiceFlashTypes_DeactivateAnswerHold = 2, +}; + +// Enum to describe QMI Voice Handover States +enum eQMIVoiceHandoverStates:UINT32 +{ + eQMIVoiceHandoverStates_Start = 1, + eQMIVoiceHandoverStates_Fail = 2, + eQMIVoiceHandoverStates_Complete = 3, + eQMIVoiceHandoverStates_Cancel = 4, +}; + +// Enum to describe QMI Voice Interdigit Intervals +enum eQMIVoiceInterdigitIntervals:UINT8 +{ + eQMIVoiceInterdigitIntervals_60ms = 0, + eQMIVoiceInterdigitIntervals_100ms = 1, + eQMIVoiceInterdigitIntervals_150ms = 2, + eQMIVoiceInterdigitIntervals_200ms = 3, +}; + +// Enum to describe QMI Voice NSS Releases +enum eQMIVoiceNSSReleases:UINT8 +{ + eQMIVoiceNSSReleases_Finished = 1, +}; + +// Enum to describe QMI Voice Network Mode +enum eQMIVoiceNetworkMode:UINT32 +{ + eQMIVoiceNetworkMode_None = 0, + eQMIVoiceNetworkMode_GSM = 1, + eQMIVoiceNetworkMode_WCDMA = 2, + eQMIVoiceNetworkMode_CDMA = 3, + eQMIVoiceNetworkMode_LTE = 4, + eQMIVoiceNetworkMode_TDSCDMA = 5, +}; + +// Enum to describe QMI Voice Number Plans +enum eQMIVoiceNumberPlans:UINT8 +{ + eQMIVoiceNumberPlans_Unknown = 0, + eQMIVoiceNumberPlans_ISDN = 1, + eQMIVoiceNumberPlans_Data = 3, + eQMIVoiceNumberPlans_Telex = 4, + eQMIVoiceNumberPlans_National = 8, + eQMIVoiceNumberPlans_Private = 9, + eQMIVoiceNumberPlans_ReservedCTS = 11, + eQMIVoiceNumberPlans_ReservedExtension = 15, +}; + +// Enum to describe QMI Voice Number Types +enum eQMIVoiceNumberTypes:UINT8 +{ + eQMIVoiceNumberTypes_Unknown = 0, + eQMIVoiceNumberTypes_International = 1, + eQMIVoiceNumberTypes_National = 2, + eQMIVoiceNumberTypes_NetworkSpecific = 3, + eQMIVoiceNumberTypes_Subscriber = 4, + eQMIVoiceNumberTypes_Reserved = 5, + eQMIVoiceNumberTypes_Abbreviated = 6, + eQMIVoiceNumberTypes_ReservedExtension = 7, +}; + +// Enum to describe QMI Voice OTASP Stati +enum eQMIVoiceOTASPStati:UINT8 +{ + eQMIVoiceOTASPStati_Unlocked = 0, + eQMIVoiceOTASPStati_RetriesExceeded = 1, + eQMIVoiceOTASPStati_AKeyExchanged = 2, + eQMIVoiceOTASPStati_SSDUpdated = 3, + eQMIVoiceOTASPStati_NAMDownloaded = 4, + eQMIVoiceOTASPStati_MDNDownloaded = 5, + eQMIVoiceOTASPStati_IMSIDownloaded = 6, + eQMIVoiceOTASPStati_PRLDownloaded = 7, + eQMIVoiceOTASPStati_Committed = 8, + eQMIVoiceOTASPStati_OTAPAStarted = 9, + eQMIVoiceOTASPStati_OTAPAStopped = 10, + eQMIVoiceOTASPStati_OTAPAAborted = 11, + eQMIVoiceOTASPStati_OTAPACommitted = 12, +}; + +// Enum to describe QMI Voice Presentation Indicators +enum eQMIVoicePresentationIndicators:UINT8 +{ + eQMIVoicePresentationIndicators_Allowed = 0, + eQMIVoicePresentationIndicators_Restricted = 1, + eQMIVoicePresentationIndicators_Unavailable = 2, + eQMIVoicePresentationIndicators_NameRestricted = 3, + eQMIVoicePresentationIndicators_PayPhone = 4, +}; + +// Enum to describe QMI Voice Presentation Indicators 32-Bit +enum eQMIVoicePresentationIndicators32Bit:UINT32 +{ + eQMIVoicePresentationIndicators32Bit_Allowed = 0, + eQMIVoicePresentationIndicators32Bit_Restricted = 1, +}; + +// Enum to describe QMI Voice Privacy Levels +enum eQMIVoicePrivacyLevels:UINT8 +{ + eQMIVoicePrivacyLevels_Standard = 0, + eQMIVoicePrivacyLevels_Enhanced = 1, +}; + +// Enum to describe QMI Voice Provisioning States +enum eQMIVoiceProvisioningStates:UINT8 +{ + eQMIVoiceProvisioningStates_NotProvisioned = 0, + eQMIVoiceProvisioningStates_ProvisionedPermanent = 1, + eQMIVoiceProvisioningStates_PresentationRestricted = 2, + eQMIVoiceProvisioningStates_PresentationAllowed = 3, +}; + +// Enum to describe QMI Voice Pulse Widths +enum eQMIVoicePulseWidths:UINT8 +{ + eQMIVoicePulseWidths_95ms = 0, + eQMIVoicePulseWidths_150ms = 1, + eQMIVoicePulseWidths_200ms = 2, + eQMIVoicePulseWidths_250ms = 3, + eQMIVoicePulseWidths_300ms = 4, + eQMIVoicePulseWidths_350ms = 5, + eQMIVoicePulseWidths_SMSTXSpecial = 6, +}; + +// Enum to describe QMI Voice Screening Indicators +enum eQMIVoiceScreeningIndicators:UINT8 +{ + eQMIVoiceScreeningIndicators_UserNotScreened = 0, + eQMIVoiceScreeningIndicators_UserPassedVerification = 1, + eQMIVoiceScreeningIndicators_UserFailedVerification = 2, + eQMIVoiceScreeningIndicators_ProvidedNetwork = 3, +}; + +// Enum to describe QMI Voice Service Options +enum eQMIVoiceServiceOptions:UINT16 +{ + eQMIVoiceServiceOptions_Any = 0, + eQMIVoiceServiceOptions_IS96A = 1, + eQMIVoiceServiceOptions_EVRC = 3, + eQMIVoiceServiceOptions_IS73313K = 17, + eQMIVoiceServiceOptions_SelectableModeVocoder = 56, + eQMIVoiceServiceOptions_4GVNarrowBand = 68, + eQMIVoiceServiceOptions_4GVWideBand = 70, + eQMIVoiceServiceOptions_13K = 32768, + eQMIVoiceServiceOptions_IS96 = 32769, + eQMIVoiceServiceOptions_WVRC = 32803, +}; + +// Enum to describe QMI Voice Service Types +enum eQMIVoiceServiceTypes:UINT32 +{ + eQMIVoiceServiceTypes_Automatic = 1, + eQMIVoiceServiceTypes_GSM = 2, + eQMIVoiceServiceTypes_WCDMA = 3, + eQMIVoiceServiceTypes_CDMAAutomatic = 4, + eQMIVoiceServiceTypes_GSMOrWCDMA = 5, + eQMIVoiceServiceTypes_LTE = 6, + eQMIVoiceServiceTypes_TDSCDMA = 7, + eQMIVoiceServiceTypes_GSMOrWCDMAOrTDSCDMA = 8, + eQMIVoiceServiceTypes_CSOnly = 9, +}; + +// Enum to describe QMI Voice Speech Codec Type +enum eQMIVoiceSpeechCodecType:UINT32 +{ + eQMIVoiceSpeechCodecType_None = 0, + eQMIVoiceSpeechCodecType_QCELP13K = 1, + eQMIVoiceSpeechCodecType_EVRC = 2, + eQMIVoiceSpeechCodecType_EVRCB = 3, + eQMIVoiceSpeechCodecType_EVRCWideband = 4, + eQMIVoiceSpeechCodecType_EVRCNarrowbandWideband = 5, + eQMIVoiceSpeechCodecType_AMRNarrowband = 6, + eQMIVoiceSpeechCodecType_AMRWideband = 7, + eQMIVoiceSpeechCodecType_GSMEnhancedFullRate = 8, + eQMIVoiceSpeechCodecType_GSMFullRate = 9, + eQMIVoiceSpeechCodecType_GSMHalfRate = 10, +}; + +// Enum to describe QMI Voice Subaddress Types +enum eQMIVoiceSubaddressTypes:UINT8 +{ + eQMIVoiceSubaddressTypes_NSAP = 0, + eQMIVoiceSubaddressTypes_User = 1, +}; + +// Enum to describe QMI Voice Subscription Types +enum eQMIVoiceSubscriptionTypes:UINT8 +{ + eQMIVoiceSubscriptionTypes_Primary = 0, + eQMIVoiceSubscriptionTypes_Secondary = 1, + eQMIVoiceSubscriptionTypes_Tertiary = 2, +}; + +// Enum to describe QMI Voice Supplementary Notification Types +enum eQMIVoiceSupplementaryNotificationTypes:UINT8 +{ + eQMIVoiceSupplementaryNotificationTypes_OutgoingCallIsForwarded = 1, + eQMIVoiceSupplementaryNotificationTypes_OutgoingCallIsWaiting = 2, + eQMIVoiceSupplementaryNotificationTypes_OutgoingCUGCall = 3, + eQMIVoiceSupplementaryNotificationTypes_OutgoingCallsBarred = 4, + eQMIVoiceSupplementaryNotificationTypes_OutgoingCallIsDeflected = 5, + eQMIVoiceSupplementaryNotificationTypes_IncomingCUGCall = 6, + eQMIVoiceSupplementaryNotificationTypes_IncomingCallsBarred = 7, + eQMIVoiceSupplementaryNotificationTypes_IncomingForwardedCall = 8, + eQMIVoiceSupplementaryNotificationTypes_IncomingDeflectedCall = 9, + eQMIVoiceSupplementaryNotificationTypes_IncomingCallIsForwarded = 10, + eQMIVoiceSupplementaryNotificationTypes_UnconditionalCallForwardingActive = 11, + eQMIVoiceSupplementaryNotificationTypes_ConditionalCallForwardingActive = 12, + eQMIVoiceSupplementaryNotificationTypes_CLIRSuppressionRejected = 13, + eQMIVoiceSupplementaryNotificationTypes_CallIsOnHold = 14, + eQMIVoiceSupplementaryNotificationTypes_CallIsRetrieved = 15, + eQMIVoiceSupplementaryNotificationTypes_CallIsInConference = 16, + eQMIVoiceSupplementaryNotificationTypes_CallIsECTWhileAnotherCallIsAlerting = 17, + eQMIVoiceSupplementaryNotificationTypes_CallIsECTWhileAnotherCallIsActive = 18, +}; + +// Enum to describe QMI Voice Supplementary Service Call Types +enum eQMIVoiceSupplementaryServiceCallTypes:UINT8 +{ + eQMIVoiceSupplementaryServiceCallTypes_ReleaseHeldOrWaiting = 1, + eQMIVoiceSupplementaryServiceCallTypes_ReleaseActiveAcceptHeldOrWaiting = 2, + eQMIVoiceSupplementaryServiceCallTypes_HoldActiveAcceptHeldOrWaiting = 3, + eQMIVoiceSupplementaryServiceCallTypes_HoldAllExceptSpecifiedCall = 4, + eQMIVoiceSupplementaryServiceCallTypes_MakeConferenceCall = 5, + eQMIVoiceSupplementaryServiceCallTypes_ExplicitCallTransfer = 6, + eQMIVoiceSupplementaryServiceCallTypes_CCBSActivation = 7, + eQMIVoiceSupplementaryServiceCallTypes_EndAllCalls = 8, + eQMIVoiceSupplementaryServiceCallTypes_ReleaseSpecifiedCall = 9, + eQMIVoiceSupplementaryServiceCallTypes_AllActiveCallsOnLocalHold = 10, + eQMIVoiceSupplementaryServiceCallTypes_RetrieveLocallyHeldCalls = 11, +}; + +// Enum to describe QMI Voice Supplementary Service Codes +enum eQMIVoiceSupplementaryServiceCodes:UINT32 +{ + eQMIVoiceSupplementaryServiceCodes_ForwardUnconditional = 1, + eQMIVoiceSupplementaryServiceCodes_ForwardMobileBusy = 2, + eQMIVoiceSupplementaryServiceCodes_ForwardNoReply = 3, + eQMIVoiceSupplementaryServiceCodes_ForwardUnreachable = 4, + eQMIVoiceSupplementaryServiceCodes_ForwardAllForwarding = 5, + eQMIVoiceSupplementaryServiceCodes_ForwardAllConditional = 6, +}; + +// Enum to describe QMI Voice Supplementary Service Reasons +enum eQMIVoiceSupplementaryServiceReasons:UINT8 +{ + eQMIVoiceSupplementaryServiceReasons_ForwardUnconditional = 1, + eQMIVoiceSupplementaryServiceReasons_ForwardMobileBusy = 2, + eQMIVoiceSupplementaryServiceReasons_ForwardNoReply = 3, + eQMIVoiceSupplementaryServiceReasons_ForwardUnreachable = 4, + eQMIVoiceSupplementaryServiceReasons_ForwardAllForwarding = 5, + eQMIVoiceSupplementaryServiceReasons_ForwardAllConditional = 6, + eQMIVoiceSupplementaryServiceReasons_BarrAllOutgoing = 7, + eQMIVoiceSupplementaryServiceReasons_BarrOutgoingInt = 8, + eQMIVoiceSupplementaryServiceReasons_BarrOutgoingIntExtToHome = 9, + eQMIVoiceSupplementaryServiceReasons_BarrAllIncoming = 10, + eQMIVoiceSupplementaryServiceReasons_BarrIncomingRoaming = 11, + eQMIVoiceSupplementaryServiceReasons_BarrAllBarring = 12, + eQMIVoiceSupplementaryServiceReasons_BarrAllOutgoingBarring = 13, + eQMIVoiceSupplementaryServiceReasons_BarrAllIncomingBarring = 14, + eQMIVoiceSupplementaryServiceReasons_CallWaiting = 15, + eQMIVoiceSupplementaryServiceReasons_CLIR = 16, + eQMIVoiceSupplementaryServiceReasons_CLIP = 17, +}; + +// Enum to describe QMI Voice Supplementary Service Requests +enum eQMIVoiceSupplementaryServiceRequests:UINT8 +{ + eQMIVoiceSupplementaryServiceRequests_Activate = 1, + eQMIVoiceSupplementaryServiceRequests_Deactivate = 2, + eQMIVoiceSupplementaryServiceRequests_Register = 3, + eQMIVoiceSupplementaryServiceRequests_Erase = 4, + eQMIVoiceSupplementaryServiceRequests_Interrogate = 5, + eQMIVoiceSupplementaryServiceRequests_RegisterPassword = 6, + eQMIVoiceSupplementaryServiceRequests_USSD = 7, +}; + +// Enum to describe QMI Voice Supplementary Service Types +enum eQMIVoiceSupplementaryServiceTypes:UINT8 +{ + eQMIVoiceSupplementaryServiceTypes_Activate = 0, + eQMIVoiceSupplementaryServiceTypes_Deactivate = 1, + eQMIVoiceSupplementaryServiceTypes_Register = 2, + eQMIVoiceSupplementaryServiceTypes_Erase = 3, +}; + +// Enum to describe QMI Voice Switch Value +enum eQMIVoiceSwitchValue:UINT8 +{ + eQMIVoiceSwitchValue_NotAllowed = 0, + eQMIVoiceSwitchValue_Allowed = 1, +}; + +// Enum to describe QMI Voice TTY Modes +enum eQMIVoiceTTYModes:UINT8 +{ + eQMIVoiceTTYModes_Full = 0, + eQMIVoiceTTYModes_VoiceCarryOver = 1, + eQMIVoiceTTYModes_HearingCarryOver = 2, + eQMIVoiceTTYModes_Off = 3, +}; + +// Enum to describe QMI Voice USSD Alpha Coding Schemes +enum eQMIVoiceUSSDAlphaCodingSchemes:UINT8 +{ + eQMIVoiceUSSDAlphaCodingSchemes_GSM = 1, + eQMIVoiceUSSDAlphaCodingSchemes_UCS2 = 2, +}; + +// Enum to describe QMI Voice USSD Data Coding Schemes +enum eQMIVoiceUSSDDataCodingSchemes:UINT8 +{ + eQMIVoiceUSSDDataCodingSchemes_ASCII = 1, + eQMIVoiceUSSDDataCodingSchemes_8Bit = 2, + eQMIVoiceUSSDDataCodingSchemes_UCS2 = 3, +}; + +// Enum to describe QMI Voice USSD Notifcation Types +enum eQMIVoiceUSSDNotifcationTypes:UINT8 +{ + eQMIVoiceUSSDNotifcationTypes_NoActionRequired = 1, + eQMIVoiceUSSDNotifcationTypes_ActionIsRequired = 2, +}; + +// Enum to describe QMI Voice UUS Data Coding Schemes +enum eQMIVoiceUUSDataCodingSchemes:UINT8 +{ + eQMIVoiceUUSDataCodingSchemes_USP = 1, + eQMIVoiceUUSDataCodingSchemes_OHLP = 2, + eQMIVoiceUUSDataCodingSchemes_X244 = 3, + eQMIVoiceUUSDataCodingSchemes_SMCF = 4, + eQMIVoiceUUSDataCodingSchemes_IA5 = 5, + eQMIVoiceUUSDataCodingSchemes_RV12RD = 6, + eQMIVoiceUUSDataCodingSchemes_Q931UNCCM = 7, +}; + +// Enum to describe QMI Voice UUS Types +enum eQMIVoiceUUSTypes:UINT8 +{ + eQMIVoiceUUSTypes_Data = 0, + eQMIVoiceUUSTypes_Type1Implicit = 1, + eQMIVoiceUUSTypes_Type1Required = 2, + eQMIVoiceUUSTypes_Type1NotRequired = 3, + eQMIVoiceUUSTypes_Type2Required = 4, + eQMIVoiceUUSTypes_Type2NotRequired = 5, + eQMIVoiceUUSTypes_Type3Required = 6, + eQMIVoiceUUSTypes_Type3NotRequired = 7, +}; + +// Enum to describe QMI Voice Videoshare Variants +enum eQMIVoiceVideoshareVariants:UINT32 +{ + eQMIVoiceVideoshareVariants_RCSe = 0, + eQMIVoiceVideoshareVariants_RCSv5 = 1, +}; + +// Enum to describe QMI Voice VoIP SUPS Call Types +enum eQMIVoiceVoIPSUPSCallTypes:UINT8 +{ + eQMIVoiceVoIPSUPSCallTypes_ReleaseHeldOrWaiting = 1, + eQMIVoiceVoIPSUPSCallTypes_ReleaseActiveAcceptHeldOrWaiting = 2, + eQMIVoiceVoIPSUPSCallTypes_HoldActiveAcceptHeldOrWaiting = 3, + eQMIVoiceVoIPSUPSCallTypes_MakeConferenceCall = 4, + eQMIVoiceVoIPSUPSCallTypes_EndAllExistingCalls = 5, + eQMIVoiceVoIPSUPSCallTypes_UpgradeDowngradeExistingVTIP = 6, + eQMIVoiceVoIPSUPSCallTypes_AcceptCallUpgradeExistingIP = 7, + eQMIVoiceVoIPSUPSCallTypes_RejectCallUpgradeExistingIP = 8, + eQMIVoiceVoIPSUPSCallTypes_ReleasePartyFromConference = 9, +}; + +// Enum to describe QMI WDA Data Aggregation Protocols +enum eQMIWDADataAggregationProtocols:UINT32 +{ + eQMIWDADataAggregationProtocols_TLP = 1, + eQMIWDADataAggregationProtocols_NCM = 2, + eQMIWDADataAggregationProtocols_MBIM = 3, + eQMIWDADataAggregationProtocols_RNDIS = 4, + eQMIWDADataAggregationProtocols_QMAP = 5, +}; + +// Enum to describe QMI WDA Link Protocols +enum eQMIWDALinkProtocols:UINT32 +{ + eQMIWDALinkProtocols_Ethernet = 1, + eQMIWDALinkProtocols_IP = 2, +}; + +// Enum to describe QMI WDS 3GPP Call End Reasons +enum eQMIWDS3GPPCallEndReasons:UINT16 +{ + eQMIWDS3GPPCallEndReasons_OperatorDeterminedBarring = 8, + eQMIWDS3GPPCallEndReasons_LLCSNDCPFailure = 25, + eQMIWDS3GPPCallEndReasons_InsufficientResources = 26, + eQMIWDS3GPPCallEndReasons_UnknownAPN = 27, + eQMIWDS3GPPCallEndReasons_UnknownPDP = 28, + eQMIWDS3GPPCallEndReasons_AuthenticationFailed = 29, + eQMIWDS3GPPCallEndReasons_GGSNReject = 30, + eQMIWDS3GPPCallEndReasons_ActivationReject = 31, + eQMIWDS3GPPCallEndReasons_OptionNotSupported = 32, + eQMIWDS3GPPCallEndReasons_OptionUnsubscribed = 33, + eQMIWDS3GPPCallEndReasons_OptionTemporarilyOOO = 34, + eQMIWDS3GPPCallEndReasons_NSAPIAlreadyUsed = 35, + eQMIWDS3GPPCallEndReasons_RegularDeactivation = 36, + eQMIWDS3GPPCallEndReasons_QoSNotAccepted = 37, + eQMIWDS3GPPCallEndReasons_NetworkFailure = 38, + eQMIWDS3GPPCallEndReasons_UMTSReactivationRequest = 39, + eQMIWDS3GPPCallEndReasons_FeatureNotSupported = 40, + eQMIWDS3GPPCallEndReasons_TFTSemanticError = 41, + eQMIWDS3GPPCallEndReasons_TFTSyntaxError = 42, + eQMIWDS3GPPCallEndReasons_UnknownPDPContext = 43, + eQMIWDS3GPPCallEndReasons_FilterSemanticError = 44, + eQMIWDS3GPPCallEndReasons_FilterSyntaxError = 45, + eQMIWDS3GPPCallEndReasons_PDPWithoutActiveTFT = 46, + eQMIWDS3GPPCallEndReasons_IPv4OnlyAllowed = 50, + eQMIWDS3GPPCallEndReasons_IPv6OnlyAllowed = 51, + eQMIWDS3GPPCallEndReasons_SingleAddressBearerOnly = 52, + eQMIWDS3GPPCallEndReasons_ESMInfoNotReceived = 53, + eQMIWDS3GPPCallEndReasons_NoPDNConnection = 54, + eQMIWDS3GPPCallEndReasons_MultipleConnectionsNotAllowed = 55, + eQMIWDS3GPPCallEndReasons_InvalidTransactionID = 81, + eQMIWDS3GPPCallEndReasons_MessageIncorrectSemantic = 95, + eQMIWDS3GPPCallEndReasons_InvalidMandatoryID = 96, + eQMIWDS3GPPCallEndReasons_MessageTypeUnsupported = 97, + eQMIWDS3GPPCallEndReasons_MessageTypeNoncompatibleState = 98, + eQMIWDS3GPPCallEndReasons_UnknownInfoElement = 99, + eQMIWDS3GPPCallEndReasons_ConditionalInfoElementError = 100, + eQMIWDS3GPPCallEndReasons_MessageAndProtocolStateUncompatible = 101, + eQMIWDS3GPPCallEndReasons_ProtocolError = 111, + eQMIWDS3GPPCallEndReasons_APNTypeConflict = 112, +}; + +// Enum to describe QMI WDS 3GPP2 RAT Types +enum eQMIWDS3GPP2RATTypes:UINT8 +{ + eQMIWDS3GPP2RATTypes_HRPD = 1, + eQMIWDS3GPP2RATTypes_EHRPD = 2, + eQMIWDS3GPP2RATTypes_HRPDEHRPD = 3, +}; + +// Enum to describe QMI WDS Address Allocation Preference +enum eQMIWDSAddressAllocationPreference:UINT8 +{ + eQMIWDSAddressAllocationPreference_NASSignaling = 0, + eQMIWDSAddressAllocationPreference_DHCP = 1, +}; + +// Enum to describe QMI WDS Address Families +enum eQMIWDSAddressFamilies:UINT32 +{ + eQMIWDSAddressFamilies_Unknown = 0, + eQMIWDSAddressFamilies_IPv4 = 4, + eQMIWDSAddressFamilies_IPv6 = 6, +}; + +// Enum to describe QMI WDS Application Type +enum eQMIWDSApplicationType:UINT32 +{ + eQMIWDSApplicationType_DefaultApplicationType = 0, + eQMIWDSApplicationType_LBSApplicationType = 32, + eQMIWDSApplicationType_TetheredApplicationType = 64, +}; + +// Enum to describe QMI WDS Authentication Protocol +enum eQMIWDSAuthenticationProtocol:UINT8 +{ + eQMIWDSAuthenticationProtocol_None = 0, + eQMIWDSAuthenticationProtocol_PAP = 1, + eQMIWDSAuthenticationProtocol_CHAP = 2, + eQMIWDSAuthenticationProtocol_PAPOrCHAP = 3, +}; + +// Enum to describe QMI WDS Autoconnect Roam Settings +enum eQMIWDSAutoconnectRoamSettings:UINT8 +{ + eQMIWDSAutoconnectRoamSettings_Always = 0, + eQMIWDSAutoconnectRoamSettings_HomeOnly = 1, +}; + +// Enum to describe QMI WDS Autoconnect Settings +enum eQMIWDSAutoconnectSettings:UINT8 +{ + eQMIWDSAutoconnectSettings_Disabled = 0, + eQMIWDSAutoconnectSettings_Enabled = 1, + eQMIWDSAutoconnectSettings_Paused = 2, +}; + +// Enum to describe QMI WDS CDMA Networks +enum eQMIWDSCDMANetworks:UINT8 +{ + eQMIWDSCDMANetworks_NoService = 0, + eQMIWDSCDMANetworks_CDMA = 2, + eQMIWDSCDMANetworks_CDMA1xEVDO = 4, +}; + +// Enum to describe QMI WDS CDMA Service Options +enum eQMIWDSCDMAServiceOptions:UINT16 +{ + eQMIWDSCDMAServiceOptions_IS657 = 7, + eQMIWDSCDMAServiceOptions_IS657OverRateSet2 = 15, + eQMIWDSCDMAServiceOptions_IS707AWithRateSet1 = 22, + eQMIWDSCDMAServiceOptions_IS707AWithRateSet2 = 25, + eQMIWDSCDMAServiceOptions_CDMA2000PacketService = 33, + eQMIWDSCDMAServiceOptions_IS707 = 4103, + eQMIWDSCDMAServiceOptions_QCProprietaryRateSet2 = 32800, + eQMIWDSCDMAServiceOptions_NullServiceOption = 65535, +}; + +// Enum to describe QMI WDS Call End Reason Types +enum eQMIWDSCallEndReasonTypes:UINT16 +{ + eQMIWDSCallEndReasonTypes_Unspecified = 0, + eQMIWDSCallEndReasonTypes_MobileIP = 1, + eQMIWDSCallEndReasonTypes_Internal = 2, + eQMIWDSCallEndReasonTypes_CallManagerDefined = 3, + eQMIWDSCallEndReasonTypes_3GPPSpecificationDefined = 6, + eQMIWDSCallEndReasonTypes_PPP = 7, + eQMIWDSCallEndReasonTypes_EHRPD = 8, + eQMIWDSCallEndReasonTypes_IPv6 = 9, +}; + +// Enum to describe QMI WDS Call Manager Call End Reasons +enum eQMIWDSCallManagerCallEndReasons:UINT16 +{ + eQMIWDSCallManagerCallEndReasons_CDMALock = 500, + eQMIWDSCallManagerCallEndReasons_Intercept = 501, + eQMIWDSCallManagerCallEndReasons_Reorder = 502, + eQMIWDSCallManagerCallEndReasons_ReleaseServiceOptionReject = 503, + eQMIWDSCallManagerCallEndReasons_IncomingCall = 504, + eQMIWDSCallManagerCallEndReasons_AlertStop = 505, + eQMIWDSCallManagerCallEndReasons_Activation = 506, + eQMIWDSCallManagerCallEndReasons_MaxAccessProbe = 507, + eQMIWDSCallManagerCallEndReasons_CCSNotSupportedByBS = 508, + eQMIWDSCallManagerCallEndReasons_NoResponseFromBS = 509, + eQMIWDSCallManagerCallEndReasons_RejectedByBS = 510, + eQMIWDSCallManagerCallEndReasons_Incompatible = 511, + eQMIWDSCallManagerCallEndReasons_AlreadyInTC = 512, + eQMIWDSCallManagerCallEndReasons_UserCallOrigDuringGPS = 513, + eQMIWDSCallManagerCallEndReasons_UserCallOrigDuringSMS = 514, + eQMIWDSCallManagerCallEndReasons_NoCDMAService = 515, + eQMIWDSCallManagerCallEndReasons_RetryOrder = 519, + eQMIWDSCallManagerCallEndReasons_AccessBlock = 520, + eQMIWDSCallManagerCallEndReasons_AccessBlockAll = 521, + eQMIWDSCallManagerCallEndReasons_IS707BMaxAccess = 522, + eQMIWDSCallManagerCallEndReasons_ThermalEmergency = 523, + eQMIWDSCallManagerCallEndReasons_CallOriginationThrottled = 524, + eQMIWDSCallManagerCallEndReasons_ConfFailed = 1000, + eQMIWDSCallManagerCallEndReasons_IncomingRejected = 1001, + eQMIWDSCallManagerCallEndReasons_NoGWService = 1002, + eQMIWDSCallManagerCallEndReasons_NoGPRSContext = 1003, + eQMIWDSCallManagerCallEndReasons_IllegalMS = 1004, + eQMIWDSCallManagerCallEndReasons_IllegalME = 1005, + eQMIWDSCallManagerCallEndReasons_GPRSServicesAndNonGPRSServiceNotAllowed = 1006, + eQMIWDSCallManagerCallEndReasons_GPRSServicesNotAllowed = 1007, + eQMIWDSCallManagerCallEndReasons_MSIdentityCannotBeDerivedByTheNetwork = 1008, + eQMIWDSCallManagerCallEndReasons_ImplicitlyDetached = 1009, + eQMIWDSCallManagerCallEndReasons_PLMNNotAllowed = 1010, + eQMIWDSCallManagerCallEndReasons_LANotAllowed = 1011, + eQMIWDSCallManagerCallEndReasons_GPRSServicesNotAllowedInThisPLMN = 1012, + eQMIWDSCallManagerCallEndReasons_PDPDuplicate = 1013, + eQMIWDSCallManagerCallEndReasons_UERATChange = 1014, + eQMIWDSCallManagerCallEndReasons_Congestion = 1015, + eQMIWDSCallManagerCallEndReasons_NoPDPContextActivated = 1016, + eQMIWDSCallManagerCallEndReasons_AccessClassDSACRejection = 1017, + eQMIWDSCallManagerCallEndReasons_CDGenOrBusy = 1500, + eQMIWDSCallManagerCallEndReasons_CDBillOrAuth = 1501, + eQMIWDSCallManagerCallEndReasons_ChangeHDR = 1502, + eQMIWDSCallManagerCallEndReasons_ExitHDR = 1503, + eQMIWDSCallManagerCallEndReasons_HDRNoSession = 1504, + eQMIWDSCallManagerCallEndReasons_HDROrigDuringGPSFix = 1505, + eQMIWDSCallManagerCallEndReasons_HDRCSTimeout = 1506, + eQMIWDSCallManagerCallEndReasons_HDRReleasedByCM = 1507, + eQMIWDSCallManagerCallEndReasons_NoHybridHDRService = 1510, + eQMIWDSCallManagerCallEndReasons_ClientEnd = 2000, + eQMIWDSCallManagerCallEndReasons_NoService = 2001, + eQMIWDSCallManagerCallEndReasons_Fade = 2002, + eQMIWDSCallManagerCallEndReasons_NormalRelease = 2003, + eQMIWDSCallManagerCallEndReasons_AccessInProgress = 2004, + eQMIWDSCallManagerCallEndReasons_AccessFail = 2005, + eQMIWDSCallManagerCallEndReasons_RedirectOrHandoff = 2006, + eQMIWDSCallManagerCallEndReasons_Offline = 2500, + eQMIWDSCallManagerCallEndReasons_EmergencyMode = 2501, + eQMIWDSCallManagerCallEndReasons_PhoneInUse = 2502, + eQMIWDSCallManagerCallEndReasons_InvalidMode = 2503, + eQMIWDSCallManagerCallEndReasons_InvalidSIMState = 2504, + eQMIWDSCallManagerCallEndReasons_NoCollocHDR = 2505, + eQMIWDSCallManagerCallEndReasons_CallControlRejected = 2506, +}; + +// Enum to describe QMI WDS Call Types +enum eQMIWDSCallTypes:UINT8 +{ + eQMIWDSCallTypes_Laptop = 0, + eQMIWDSCallTypes_Embedded = 1, +}; + +// Enum to describe QMI WDS DUN Control Events +enum eQMIWDSDUNControlEvents:UINT8 +{ + eQMIWDSDUNControlEvents_DUNCall = 1, + eQMIWDSDUNControlEvents_Entitlement = 2, + eQMIWDSDUNControlEvents_SilentRedial = 3, +}; + +// Enum to describe QMI WDS DUN Control Preferences +enum eQMIWDSDUNControlPreferences:UINT8 +{ + eQMIWDSDUNControlPreferences_RelinquishDUNControl = 0, + eQMIWDSDUNControlPreferences_ExerciseDUNConrol = 1, +}; + +// Enum to describe QMI WDS Data Bearer Technologies +enum eQMIWDSDataBearerTechnologies:UINT32 +{ + eQMIWDSDataBearerTechnologies_3GPP = 0, + eQMIWDSDataBearerTechnologies_3GPP2 = 1, +}; + +// Enum to describe QMI WDS Data Call Status +enum eQMIWDSDataCallStatus:UINT8 +{ + eQMIWDSDataCallStatus_Unknown = 0, + eQMIWDSDataCallStatus_Activated = 1, + eQMIWDSDataCallStatus_Terminated = 2, +}; + +// Enum to describe QMI WDS Data Call Types +enum eQMIWDSDataCallTypes:UINT8 +{ + eQMIWDSDataCallTypes_Unknown = 0, + eQMIWDSDataCallTypes_Embedded = 1, + eQMIWDSDataCallTypes_Tethered = 2, + eQMIWDSDataCallTypes_ModemEmbedded = 3, +}; + +// Enum to describe QMI WDS Data Mode +enum eQMIWDSDataMode:UINT8 +{ + eQMIWDSDataMode_CDMAOrHDR = 0, + eQMIWDSDataMode_CDMAOnly = 1, + eQMIWDSDataMode_HDROnly = 2, +}; + +// Enum to describe QMI WDS Data Rate +enum eQMIWDSDataRate:UINT8 +{ + eQMIWDSDataRate_LowSO15Only = 0, + eQMIWDSDataRate_MediumSO33PlusLowRSCH = 1, + eQMIWDSDataRate_HighSO33PlusHighRSCH = 2, +}; + +// Enum to describe QMI WDS Data System Network Types +enum eQMIWDSDataSystemNetworkTypes:UINT8 +{ + eQMIWDSDataSystemNetworkTypes_3GPP = 0, + eQMIWDSDataSystemNetworkTypes_3GPP2 = 1, +}; + +// Enum to describe QMI WDS Data Systems +enum eQMIWDSDataSystems:UINT32 +{ + eQMIWDSDataSystems_Unknown = 0, + eQMIWDSDataSystems_CDMA1x = 1, + eQMIWDSDataSystems_CDMA1xEVDO = 2, + eQMIWDSDataSystems_GPRS = 3, + eQMIWDSDataSystems_WCDMA = 4, + eQMIWDSDataSystems_LTE = 5, + eQMIWDSDataSystems_TDSCDMA = 6, +}; + +// Enum to describe QMI WDS EHRPD Call End Reason +enum eQMIWDSEHRPDCallEndReason:UINT16 +{ + eQMIWDSEHRPDCallEndReason_SubsLimitedToV4 = 1, + eQMIWDSEHRPDCallEndReason_SubsLimitedToV6 = 2, + eQMIWDSEHRPDCallEndReason_VSNCPTimeout = 4, + eQMIWDSEHRPDCallEndReason_VSNCPFailure = 5, + eQMIWDSEHRPDCallEndReason_VSNCP3GPP2IGeneralError = 6, + eQMIWDSEHRPDCallEndReason_VSNCP3GPP2IUnauthAPN = 7, + eQMIWDSEHRPDCallEndReason_VSNCP3GPP2IPDNLimit = 8, + eQMIWDSEHRPDCallEndReason_VSNCP3GPP2INoPDNGW = 9, + eQMIWDSEHRPDCallEndReason_VSNCP3GPP2IPDNGWUnreach = 10, + eQMIWDSEHRPDCallEndReason_VSNCP3GPP2IPDNGWRejected = 11, + eQMIWDSEHRPDCallEndReason_VSNCP3GPP2IInsufficientParam = 12, + eQMIWDSEHRPDCallEndReason_VSNCP3GPP2IResourceUnavailable = 13, + eQMIWDSEHRPDCallEndReason_VSNCP3GPP2IAdminProhibited = 14, + eQMIWDSEHRPDCallEndReason_VSNCP3GPP2IPDNIDInUse = 15, + eQMIWDSEHRPDCallEndReason_VSNCP3GPP2ISubscriberLimitation = 16, + eQMIWDSEHRPDCallEndReason_VSNCP3GPP2IPDNExistsForAPN = 17, +}; + +// Enum to describe QMI WDS EMBMS Error Codes +enum eQMIWDSEMBMSErrorCodes:UINT16 +{ + eQMIWDSEMBMSErrorCodes_NotSupported = 108, + eQMIWDSEMBMSErrorCodes_ActivationInProgress = 111, + eQMIWDSEMBMSErrorCodes_Invalid = 124, + eQMIWDSEMBMSErrorCodes_DeactivationInProgress = 203, +}; + +// Enum to describe QMI WDS EMBMS List Types +enum eQMIWDSEMBMSListTypes:UINT8 +{ + eQMIWDSEMBMSListTypes_Active = 0, + eQMIWDSEMBMSListTypes_Available = 1, + eQMIWDSEMBMSListTypes_OOSWarning = 2, +}; + +// Enum to describe QMI WDS EMBMS Operation Status +enum eQMIWDSEMBMSOperationStatus:UINT32 +{ + eQMIWDSEMBMSOperationStatus_Success = 0, + eQMIWDSEMBMSOperationStatus_RadioConfigFailure = 65536, + eQMIWDSEMBMSOperationStatus_ChannelUnavailable = 65537, + eQMIWDSEMBMSOperationStatus_EMBMBSNotEnabled = 65538, + eQMIWDSEMBMSOperationStatus_OutOfCoverage = 65539, + eQMIWDSEMBMSOperationStatus_Unknown = 65540, + eQMIWDSEMBMSOperationStatus_NotAllowed = 65541, + eQMIWDSEMBMSOperationStatus_MissingControlInfo = 65542, + eQMIWDSEMBMSOperationStatus_MissingTMGI = 65543, + eQMIWDSEMBMSOperationStatus_MulticastOOS = 65544, + eQMIWDSEMBMSOperationStatus_UnicastOOS = 65545, + eQMIWDSEMBMSOperationStatus_CampedOnOtherFrequency = 65546, +}; + +// Enum to describe QMI WDS Extended Error Code +enum eQMIWDSExtendedErrorCode:UINT16 +{ + eQMIWDSExtendedErrorCode_Failure = 1, + eQMIWDSExtendedErrorCode_InvalidHandle = 2, + eQMIWDSExtendedErrorCode_InvalidOperation = 3, + eQMIWDSExtendedErrorCode_InvalidProfileType = 4, + eQMIWDSExtendedErrorCode_InvalidProfileNumber = 5, + eQMIWDSExtendedErrorCode_InvalidIdentifier = 6, + eQMIWDSExtendedErrorCode_InvalidArgument = 7, + eQMIWDSExtendedErrorCode_NotInitialized = 8, + eQMIWDSExtendedErrorCode_InvalidLength = 9, + eQMIWDSExtendedErrorCode_ListEnd = 10, + eQMIWDSExtendedErrorCode_InvalidSubscriptionID = 11, + eQMIWDSExtendedErrorCode_InvalidProfileFamily = 12, + eQMIWDSExtendedErrorCode_3GPPInvalidProfileFamily = 4097, + eQMIWDSExtendedErrorCode_3GPPAccessError = 4098, + eQMIWDSExtendedErrorCode_3GPPContextNotDefined = 4099, + eQMIWDSExtendedErrorCode_3GPPValidFlagNotSet = 4100, + eQMIWDSExtendedErrorCode_3GPPReadOnlyFlagSet = 4101, + eQMIWDSExtendedErrorCode_3GPPErrorMaxProfileNumber = 4102, + eQMIWDSExtendedErrorCode_3GPP2ErrorInvalidIdentifierForProfile = 4353, + eQMIWDSExtendedErrorCode_3GPP2ErrorProfileLimitReached = 4354, +}; + +// Enum to describe QMI WDS Extended Tech Prefs +enum eQMIWDSExtendedTechPrefs:UINT16 +{ + eQMIWDSExtendedTechPrefs_CDMA = 32769, + eQMIWDSExtendedTechPrefs_UMTS = 32772, + eQMIWDSExtendedTechPrefs_EPC = 34944, + eQMIWDSExtendedTechPrefs_EMBMS = 34946, + eQMIWDSExtendedTechPrefs_ModemLinkLocal = 34952, +}; + +// Enum to describe QMI WDS Handoff Info Types +enum eQMIWDSHandoffInfoTypes:UINT32 +{ + eQMIWDSHandoffInfoTypes_Initialization = 0, + eQMIWDSHandoffInfoTypes_Success = 1, + eQMIWDSHandoffInfoTypes_Failure = 2, +}; + +// Enum to describe QMI WDS IP Families +enum eQMIWDSIPFamilies:UINT8 +{ + eQMIWDSIPFamilies_IPv4 = 4, + eQMIWDSIPFamilies_IPv6 = 6, + eQMIWDSIPFamilies_Unspecified = 8, +}; + +// Enum to describe QMI WDS IP Support Types +enum eQMIWDSIPSupportTypes:UINT8 +{ + eQMIWDSIPSupportTypes_IPv4 = 0, + eQMIWDSIPSupportTypes_IPv6 = 1, + eQMIWDSIPSupportTypes_IPv4AndIPv6 = 2, +}; + +// Enum to describe QMI WDS IP Version +enum eQMIWDSIPVersion:UINT8 +{ + eQMIWDSIPVersion_IPv4 = 4, + eQMIWDSIPVersion_IPv6 = 6, +}; + +// Enum to describe QMI WDS IPSec Crypto Algorithms +enum eQMIWDSIPSecCryptoAlgorithms:UINT32 +{ + eQMIWDSIPSecCryptoAlgorithms_NullKeyExchange = 0, + eQMIWDSIPSecCryptoAlgorithms_GenericModuloExponentiation = 1, + eQMIWDSIPSecCryptoAlgorithms_DiffieHellmanKeyExchange = 2, + eQMIWDSIPSecCryptoAlgorithms_RSAEncryptionKeyExchange = 3, + eQMIWDSIPSecCryptoAlgorithms_NullHash = 4, + eQMIWDSIPSecCryptoAlgorithms_SHA1 = 5, + eQMIWDSIPSecCryptoAlgorithms_SHA256 = 6, + eQMIWDSIPSecCryptoAlgorithms_MD5 = 7, + eQMIWDSIPSecCryptoAlgorithms_NullCipher = 8, + eQMIWDSIPSecCryptoAlgorithms_DES = 9, + eQMIWDSIPSecCryptoAlgorithms_3DES = 10, + eQMIWDSIPSecCryptoAlgorithms_ARC4 = 11, + eQMIWDSIPSecCryptoAlgorithms_AES128 = 12, + eQMIWDSIPSecCryptoAlgorithms_C2 = 13, + eQMIWDSIPSecCryptoAlgorithms_AES128CMAC = 14, + eQMIWDSIPSecCryptoAlgorithms_UEA2SNOW3G = 15, + eQMIWDSIPSecCryptoAlgorithms_UIA2SNOW3G = 16, + eQMIWDSIPSecCryptoAlgorithms_UEA3ZUC = 17, + eQMIWDSIPSecCryptoAlgorithms_UIA3ZUC = 18, +}; + +// Enum to describe QMI WDS IPSec SA Encapsulation Modes +enum eQMIWDSIPSecSAEncapsulationModes:UINT32 +{ + eQMIWDSIPSecSAEncapsulationModes_Undefined = 0, + eQMIWDSIPSecSAEncapsulationModes_Tunnel = 1, + eQMIWDSIPSecSAEncapsulationModes_Transport = 2, +}; + +// Enum to describe QMI WDS IPSec SA Protocols +enum eQMIWDSIPSecSAProtocols:UINT32 +{ + eQMIWDSIPSecSAProtocols_Undefined = 0, + eQMIWDSIPSecSAProtocols_ISAKMP = 1, + eQMIWDSIPSecSAProtocols_AuthenticationHeader = 2, + eQMIWDSIPSecSAProtocols_EncapsulatingSecurityPayload = 3, +}; + +// Enum to describe QMI WDS IPv6 Call End Reason +enum eQMIWDSIPv6CallEndReason:UINT16 +{ + eQMIWDSIPv6CallEndReason_PrefixUnavailable = 1, + eQMIWDSIPv6CallEndReason_IPv6HRPDDisabled = 2, +}; + +// Enum to describe QMI WDS Internal Call End Reasons +enum eQMIWDSInternalCallEndReasons:UINT16 +{ + eQMIWDSInternalCallEndReasons_Internal = 201, + eQMIWDSInternalCallEndReasons_CallEnded = 202, + eQMIWDSInternalCallEndReasons_InternalUnknownCauseCode = 203, + eQMIWDSInternalCallEndReasons_UnknownCauseCode = 204, + eQMIWDSInternalCallEndReasons_CloseInProgress = 205, + eQMIWDSInternalCallEndReasons_NWInitiatedTermination = 206, + eQMIWDSInternalCallEndReasons_AppPreempted = 207, + eQMIWDSInternalCallEndReasons_PDNIPv4CallDisallowed = 208, + eQMIWDSInternalCallEndReasons_PDNIPv4CallThrottled = 209, + eQMIWDSInternalCallEndReasons_PDNIPv6CallDisallowed = 210, + eQMIWDSInternalCallEndReasons_ModemRestart = 212, + eQMIWDSInternalCallEndReasons_PDPPPPNotSupported = 213, + eQMIWDSInternalCallEndReasons_UnpreferredRAT = 214, + eQMIWDSInternalCallEndReasons_PhysicalLinkCloseInProgress = 215, + eQMIWDSInternalCallEndReasons_APNPendingHandover = 216, + eQMIWDSInternalCallEndReasons_ProfileBearerIncompatible = 217, + eQMIWDSInternalCallEndReasons_MMGDSICardEvent = 218, + eQMIWDSInternalCallEndReasons_LPMOrPowerDown = 219, + eQMIWDSInternalCallEndReasons_APNDisabled = 220, + eQMIWDSInternalCallEndReasons_MPITExpired = 221, + eQMIWDSInternalCallEndReasons_IPv6AddressTransferFailed = 222, + eQMIWDSInternalCallEndReasons_TRATSwapFailed = 223, +}; + +// Enum to describe QMI WDS LTE Attach Types +enum eQMIWDSLTEAttachTypes:UINT32 +{ + eQMIWDSLTEAttachTypes_Initial = 0, + eQMIWDSLTEAttachTypes_Handoff = 1, +}; + +// Enum to describe QMI WDS LTE IP Types +enum eQMIWDSLTEIPTypes:UINT8 +{ + eQMIWDSLTEIPTypes_IPv4 = 0, + eQMIWDSLTEIPTypes_IPv6 = 1, + eQMIWDSLTEIPTypes_IPv4OrIPv6 = 2, +}; + +// Enum to describe QMI WDS Mobile IP Call End Reasons +enum eQMIWDSMobileIPCallEndReasons:UINT16 +{ + eQMIWDSMobileIPCallEndReasons_FAUnspecified = 64, + eQMIWDSMobileIPCallEndReasons_FAAdministrativelyProhibited = 65, + eQMIWDSMobileIPCallEndReasons_FAInsufficientResources = 66, + eQMIWDSMobileIPCallEndReasons_FAMobileNodeAuthenticationFailure = 67, + eQMIWDSMobileIPCallEndReasons_FAHAAuthenticationFailure = 68, + eQMIWDSMobileIPCallEndReasons_FARequestedLifetimeTooLong = 69, + eQMIWDSMobileIPCallEndReasons_FAMalformedRequest = 70, + eQMIWDSMobileIPCallEndReasons_FAMalformedReply = 71, + eQMIWDSMobileIPCallEndReasons_FAEncapsulationUnavailable = 72, + eQMIWDSMobileIPCallEndReasons_FAVJHCUnavailable = 73, + eQMIWDSMobileIPCallEndReasons_FAReverseTunnelUnavailable = 74, + eQMIWDSMobileIPCallEndReasons_FAReverseTunnelIsMandatoryAndTBitIsNotSet = 75, + eQMIWDSMobileIPCallEndReasons_FADeliveryStyleNotSupported = 79, + eQMIWDSMobileIPCallEndReasons_FAMissingNAI = 97, + eQMIWDSMobileIPCallEndReasons_FAMissingHA = 98, + eQMIWDSMobileIPCallEndReasons_FAMissingHomeAddress = 99, + eQMIWDSMobileIPCallEndReasons_FAUnknownChallenge = 104, + eQMIWDSMobileIPCallEndReasons_FAMissingChallenge = 105, + eQMIWDSMobileIPCallEndReasons_FAStaleChallenge = 106, + eQMIWDSMobileIPCallEndReasons_HAReasonUnspecified = 128, + eQMIWDSMobileIPCallEndReasons_HAAdministrativelyProhibited = 129, + eQMIWDSMobileIPCallEndReasons_HAInsufficientResources = 130, + eQMIWDSMobileIPCallEndReasons_HAMobileNodeAuthenticationFailure = 131, + eQMIWDSMobileIPCallEndReasons_HAFAAuthenticationFailure = 132, + eQMIWDSMobileIPCallEndReasons_HARegistrationIDMismatch = 133, + eQMIWDSMobileIPCallEndReasons_HAMalformedRequest = 134, + eQMIWDSMobileIPCallEndReasons_HAUnknownHAAddress = 136, + eQMIWDSMobileIPCallEndReasons_HAReverseTunnelUnavailable = 137, + eQMIWDSMobileIPCallEndReasons_HAReverseTunnelIsMandatoryAndTBitIsNotSet = 138, + eQMIWDSMobileIPCallEndReasons_HAEncapsulationUnavailable = 139, + eQMIWDSMobileIPCallEndReasons_Unknown = 65535, +}; + +// Enum to describe QMI WDS Network Types +enum eQMIWDSNetworkTypes:UINT8 +{ + eQMIWDSNetworkTypes_Unknown = 0, + eQMIWDSNetworkTypes_CDMA = 1, + eQMIWDSNetworkTypes_UMTS = 2, +}; + +// Enum to describe QMI WDS Next Header Protocols +enum eQMIWDSNextHeaderProtocols:UINT32 +{ + eQMIWDSNextHeaderProtocols_TCP = 1, + eQMIWDSNextHeaderProtocols_UDP = 2, + eQMIWDSNextHeaderProtocols_TCPUDP = 3, +}; + +// Enum to describe QMI WDS OOS Warning Reasons +enum eQMIWDSOOSWarningReasons:UINT32 +{ + eQMIWDSOOSWarningReasons_UnicastOOS = 0, + eQMIWDSOOSWarningReasons_MulticastOOS = 1, + eQMIWDSOOSWarningReasons_Cleared = 2, +}; + +// Enum to describe QMI WDS PDN Type +enum eQMIWDSPDNType:UINT8 +{ + eQMIWDSPDNType_IPv4PDNType = 0, + eQMIWDSPDNType_IPv6PDNType = 1, + eQMIWDSPDNType_IPv4orIPv6PDNType = 2, + eQMIWDSPDNType_UnspecifiedPDNType = 3, +}; + +// Enum to describe QMI WDS PDP Access Control Flag +enum eQMIWDSPDPAccessControlFlag:UINT8 +{ + eQMIWDSPDPAccessControlFlag_PDPAccessControlNone = 0, + eQMIWDSPDPAccessControlFlag_PDPAccessControlReject = 1, + eQMIWDSPDPAccessControlFlag_PDPAccessControlPermission = 2, +}; + +// Enum to describe QMI WDS PDP Data Compression Type +enum eQMIWDSPDPDataCompressionType:UINT8 +{ + eQMIWDSPDPDataCompressionType_Off = 0, + eQMIWDSPDPDataCompressionType_ManufacturerPreferred = 1, + eQMIWDSPDPDataCompressionType_V42BIS = 2, + eQMIWDSPDPDataCompressionType_V44 = 3, +}; + +// Enum to describe QMI WDS PDP Header Compression Type +enum eQMIWDSPDPHeaderCompressionType:UINT8 +{ + eQMIWDSPDPHeaderCompressionType_Off = 0, + eQMIWDSPDPHeaderCompressionType_ManufacturerPreferred = 1, + eQMIWDSPDPHeaderCompressionType_RFC1144 = 2, + eQMIWDSPDPHeaderCompressionType_RFC2507 = 3, + eQMIWDSPDPHeaderCompressionType_RFC3095 = 4, +}; + +// Enum to describe QMI WDS PPP Call End Reason +enum eQMIWDSPPPCallEndReason:UINT16 +{ + eQMIWDSPPPCallEndReason_Timeout = 1, + eQMIWDSPPPCallEndReason_AuthenticationFailed = 2, + eQMIWDSPPPCallEndReason_OptionMismatch = 3, + eQMIWDSPPPCallEndReason_PAPFailure = 31, + eQMIWDSPPPCallEndReason_CHAPFailure = 32, + eQMIWDSPPPCallEndReason_Unknown = 65535, +}; + +// Enum to describe QMI WDS Profile Family +enum eQMIWDSProfileFamily:UINT8 +{ + eQMIWDSProfileFamily_Embedded = 0, + eQMIWDSProfileFamily_TetheredSocketsFamily = 1, +}; + +// Enum to describe QMI WDS Profile Param ID +enum eQMIWDSProfileParamID:UINT32 +{ + eQMIWDSProfileParamID_UMTSRequestedQoS = 23, + eQMIWDSProfileParamID_UMTSMinimumQoS = 24, + eQMIWDSProfileParamID_GPRSRequestedQoS = 25, + eQMIWDSProfileParamID_GPRSMinimumQoS = 26, + eQMIWDSProfileParamID_TFTFilterID1 = 50, + eQMIWDSProfileParamID_TFTFilterID2 = 51, +}; + +// Enum to describe QMI WDS QoS Class Identifier +enum eQMIWDSQoSClassIdentifier:UINT8 +{ + eQMIWDSQoSClassIdentifier_NetworkAssignQCI = 0, + eQMIWDSQoSClassIdentifier_GuaranteedBitrate1 = 1, + eQMIWDSQoSClassIdentifier_GuaranteedBitrate2 = 2, + eQMIWDSQoSClassIdentifier_GuaranteedBitrate3 = 3, + eQMIWDSQoSClassIdentifier_GuaranteedBitrate4 = 4, + eQMIWDSQoSClassIdentifier_NonGuaranteedBitrate5 = 5, + eQMIWDSQoSClassIdentifier_NonGuaranteedBitrate6 = 6, + eQMIWDSQoSClassIdentifier_NonGuaranteedBitrate7 = 7, + eQMIWDSQoSClassIdentifier_NonGuaranteedBitrate8 = 8, +}; + +// Enum to describe QMI WDS Radio Access Technologies +enum eQMIWDSRadioAccessTechnologies:UINT32 +{ + eQMIWDSRadioAccessTechnologies_NullBearer = 0, + eQMIWDSRadioAccessTechnologies_3GPPWCDMA = 1, + eQMIWDSRadioAccessTechnologies_3GPPGERAN = 2, + eQMIWDSRadioAccessTechnologies_3GPPLTE = 3, + eQMIWDSRadioAccessTechnologies_3GPPTDSCDMA = 4, + eQMIWDSRadioAccessTechnologies_3GPPWLAN = 5, + eQMIWDSRadioAccessTechnologies_3GPPMaximum = 100, + eQMIWDSRadioAccessTechnologies_3GPP21x = 101, + eQMIWDSRadioAccessTechnologies_3GPP2HRPD = 102, + eQMIWDSRadioAccessTechnologies_3GPP2EHRPD = 103, + eQMIWDSRadioAccessTechnologies_3GPP2WLAN = 104, + eQMIWDSRadioAccessTechnologies_3GPP2Maximum = 200, +}; + +// Enum to describe QMI WDS Reverse IP Connection Status +enum eQMIWDSReverseIPConnectionStatus:UINT32 +{ + eQMIWDSReverseIPConnectionStatus_Disconnected = 0, + eQMIWDSReverseIPConnectionStatus_Connected = 1, +}; + +// Enum to describe QMI WDS Reverse IP Technology Names +enum eQMIWDSReverseIPTechnologyNames:UINT32 +{ + eQMIWDSReverseIPTechnologyNames_WLANLocalBreakout = 32818, + eQMIWDSReverseIPTechnologyNames_IWLANS2B = 32819, +}; + +// Enum to describe QMI WDS Reverse IP Transport Filter Types +enum eQMIWDSReverseIPTransportFilterTypes:UINT32 +{ + eQMIWDSReverseIPTransportFilterTypes_ESPSPI = 0, +}; + +// Enum to describe QMI WDS SIP/MIP Call Types +enum eQMIWDSSIPMIPCallTypes:UINT8 +{ + eQMIWDSSIPMIPCallTypes_NotUp = 0, + eQMIWDSSIPMIPCallTypes_SIPUp = 1, + eQMIWDSSIPMIPCallTypes_MIPUp = 2, +}; + +// Enum to describe QMI WDS Slot Cycle Set Results +enum eQMIWDSSlotCycleSetResults:UINT8 +{ + eQMIWDSSlotCycleSetResults_Succcess = 0, + eQMIWDSSlotCycleSetResults_FailureRequestRejected = 1, + eQMIWDSSlotCycleSetResults_FailureRequestFailedTX = 2, + eQMIWDSSlotCycleSetResults_FailureNotSupported = 3, + eQMIWDSSlotCycleSetResults_FailureNoNetwork = 4, +}; + +// Enum to describe QMI WDS Tethered Call Types +enum eQMIWDSTetheredCallTypes:UINT8 +{ + eQMIWDSTetheredCallTypes_NonTethered = 0, + eQMIWDSTetheredCallTypes_RmNet = 1, + eQMIWDSTetheredCallTypes_DUN = 2, +}; + +// Enum to describe QMI WMS ACK Failure Cause +enum eQMIWMSACKFailureCause:UINT8 +{ + eQMIWMSACKFailureCause_NoNetworkResponse = 0, + eQMIWMSACKFailureCause_NetworkReleasedLink = 1, + eQMIWMSACKFailureCause_NotSent = 2, +}; + +// Enum to describe QMI WMS CDMA Service Options +enum eQMIWMSCDMAServiceOptions:UINT8 +{ + eQMIWMSCDMAServiceOptions_Automatic = 0, + eQMIWMSCDMAServiceOptions_SO6 = 6, + eQMIWMSCDMAServiceOptions_SO14 = 14, +}; + +// Enum to describe QMI WMS Call Control Types +enum eQMIWMSCallControlTypes:UINT32 +{ + eQMIWMSCallControlTypes_Disallow = 0, + eQMIWMSCallControlTypes_Allow = 1, + eQMIWMSCallControlTypes_AllowButModified = 2, +}; + +// Enum to describe QMI WMS Cause Codes +enum eQMIWMSCauseCodes:UINT16 +{ + eQMIWMSCauseCodes_AddressVacant = 0, + eQMIWMSCauseCodes_AddressTranslation = 1, + eQMIWMSCauseCodes_NetworkResourceShortage = 2, + eQMIWMSCauseCodes_NetworkFailure = 3, + eQMIWMSCauseCodes_InvalidTeleserviceID = 4, + eQMIWMSCauseCodes_NetworkOther = 5, + eQMIWMSCauseCodes_NoPageResponse = 32, + eQMIWMSCauseCodes_DestinationBusy = 33, + eQMIWMSCauseCodes_DestinationNoACK = 34, + eQMIWMSCauseCodes_DestinationResourceShortage = 35, + eQMIWMSCauseCodes_DeliveryPostponed = 36, + eQMIWMSCauseCodes_DestinationOutOfService = 37, + eQMIWMSCauseCodes_DestinationNotAtAddress = 38, + eQMIWMSCauseCodes_DestinationOther = 39, + eQMIWMSCauseCodes_RadioResourceShortage = 64, + eQMIWMSCauseCodes_RadioIncompatibility = 65, + eQMIWMSCauseCodes_RadioOther = 66, + eQMIWMSCauseCodes_Encoding = 96, + eQMIWMSCauseCodes_SMSOriginationDenied = 97, + eQMIWMSCauseCodes_SMSDestinationDenied = 98, + eQMIWMSCauseCodes_SupplementarySErviceNotSupported = 99, + eQMIWMSCauseCodes_SMSNotSupported = 100, + eQMIWMSCauseCodes_MissingExpectedParameter = 101, + eQMIWMSCauseCodes_MissingMandatoryParameter = 102, + eQMIWMSCauseCodes_UnrecognizedParameterValue = 103, + eQMIWMSCauseCodes_UnexpectedParameterValue = 104, + eQMIWMSCauseCodes_UserDataSizeError = 105, + eQMIWMSCauseCodes_GeneralOther = 106, +}; + +// Enum to describe QMI WMS Delivery Failures +enum eQMIWMSDeliveryFailures:UINT8 +{ + eQMIWMSDeliveryFailures_BlockedByCallControl = 0, +}; + +// Enum to describe QMI WMS Error Classes +enum eQMIWMSErrorClasses:UINT8 +{ + eQMIWMSErrorClasses_Temporary = 0, + eQMIWMSErrorClasses_Permanent = 1, +}; + +// Enum to describe QMI WMS Error Classes 2 +enum eQMIWMSErrorClasses2:UINT8 +{ + eQMIWMSErrorClasses2_Temporary = 2, + eQMIWMSErrorClasses2_Permanent = 3, +}; + +// Enum to describe QMI WMS GSM/WCDMA Domains +enum eQMIWMSGSMWCDMADomains:UINT8 +{ + eQMIWMSGSMWCDMADomains_CSPreferred = 0, + eQMIWMSGSMWCDMADomains_PSPreferred = 1, + eQMIWMSGSMWCDMADomains_CSOnly = 2, + eQMIWMSGSMWCDMADomains_PSOnly = 3, +}; + +// Enum to describe QMI WMS LTE Domains +enum eQMIWMSLTEDomains:UINT8 +{ + eQMIWMSLTEDomains_None = 0, + eQMIWMSLTEDomains_IMS = 1, +}; + +// Enum to describe QMI WMS Language +enum eQMIWMSLanguage:UINT16 +{ + eQMIWMSLanguage_Unknown = 0, + eQMIWMSLanguage_English = 1, + eQMIWMSLanguage_French = 2, + eQMIWMSLanguage_Spanish = 3, + eQMIWMSLanguage_Japanese = 4, + eQMIWMSLanguage_Korean = 5, + eQMIWMSLanguage_Chinese = 6, + eQMIWMSLanguage_Hebrew = 7, +}; + +// Enum to describe QMI WMS Message Classes +enum eQMIWMSMessageClasses:UINT8 +{ + eQMIWMSMessageClasses_Class0 = 0, + eQMIWMSMessageClasses_Class1 = 1, + eQMIWMSMessageClasses_Class2 = 2, + eQMIWMSMessageClasses_Class3 = 3, + eQMIWMSMessageClasses_ClassNone = 4, + eQMIWMSMessageClasses_ClassCDMA = 5, +}; + +// Enum to describe QMI WMS Message Delivery Failure Type +enum eQMIWMSMessageDeliveryFailureType:UINT8 +{ + eQMIWMSMessageDeliveryFailureType_Temporary = 0, + eQMIWMSMessageDeliveryFailureType_Permanent = 1, +}; + +// Enum to describe QMI WMS Message Formats +enum eQMIWMSMessageFormats:UINT8 +{ + eQMIWMSMessageFormats_CDMA = 0, + eQMIWMSMessageFormats_AnalogCLIUnsupported = 1, + eQMIWMSMessageFormats_AnalogVoiceMailUnsupported = 2, + eQMIWMSMessageFormats_AnalogWMSUnsupported = 3, + eQMIWMSMessageFormats_AnalogAWIWMSUnsupported = 4, + eQMIWMSMessageFormats_MWIUnsupported = 5, + eQMIWMSMessageFormats_GSMWCDMAPP = 6, + eQMIWMSMessageFormats_GSMWCDMABC = 7, + eQMIWMSMessageFormats_MWI = 8, +}; + +// Enum to describe QMI WMS Message Protocols +enum eQMIWMSMessageProtocols:UINT8 +{ + eQMIWMSMessageProtocols_CDMA = 0, + eQMIWMSMessageProtocols_GSMWCDMAUnsupported = 1, +}; + +// Enum to describe QMI WMS Message Tags +enum eQMIWMSMessageTags:UINT8 +{ + eQMIWMSMessageTags_MTRead = 0, + eQMIWMSMessageTags_MTNotRead = 1, + eQMIWMSMessageTags_MOSend = 2, + eQMIWMSMessageTags_MONotSent = 3, +}; + +// Enum to describe QMI WMS Message Types +enum eQMIWMSMessageTypes:UINT8 +{ + eQMIWMSMessageTypes_PointToPoint = 0, + eQMIWMSMessageTypes_Broadcast = 1, +}; + +// Enum to describe QMI WMS Network Registration Status +enum eQMIWMSNetworkRegistrationStatus:UINT8 +{ + eQMIWMSNetworkRegistrationStatus_NoService = 0, + eQMIWMSNetworkRegistrationStatus_InProgress = 1, + eQMIWMSNetworkRegistrationStatus_Failed = 2, + eQMIWMSNetworkRegistrationStatus_LimitedService = 3, + eQMIWMSNetworkRegistrationStatus_FullService = 4, +}; + +// Enum to describe QMI WMS Notification Type +enum eQMIWMSNotificationType:UINT8 +{ + eQMIWMSNotificationType_Primary = 0, + eQMIWMSNotificationType_SecondaryGSM = 1, + eQMIWMSNotificationType_SecondaryUMTS = 2, +}; + +// Enum to describe QMI WMS Protocol Identifier Data +enum eQMIWMSProtocolIdentifierData:UINT8 +{ + eQMIWMSProtocolIdentifierData_Default = 0, + eQMIWMSProtocolIdentifierData_Implicit = 32, + eQMIWMSProtocolIdentifierData_Telex = 33, + eQMIWMSProtocolIdentifierData_G3Fax = 34, + eQMIWMSProtocolIdentifierData_G4Fax = 35, + eQMIWMSProtocolIdentifierData_VoicePhone = 36, + eQMIWMSProtocolIdentifierData_Ermes = 37, + eQMIWMSProtocolIdentifierData_NATPaging = 38, + eQMIWMSProtocolIdentifierData_Videotex = 39, + eQMIWMSProtocolIdentifierData_TeltexUnspecified = 40, + eQMIWMSProtocolIdentifierData_TeltexPSPDN = 41, + eQMIWMSProtocolIdentifierData_TeltexCSPDN = 42, + eQMIWMSProtocolIdentifierData_TeltexPSTN = 43, + eQMIWMSProtocolIdentifierData_TeltexISDN = 44, + eQMIWMSProtocolIdentifierData_UCI = 45, + eQMIWMSProtocolIdentifierData_MessageHandling = 48, + eQMIWMSProtocolIdentifierData_X400 = 49, + eQMIWMSProtocolIdentifierData_InternetEMail = 50, + eQMIWMSProtocolIdentifierData_SCSpecific1 = 56, + eQMIWMSProtocolIdentifierData_SCSpecific2 = 57, + eQMIWMSProtocolIdentifierData_SCSpecific3 = 58, + eQMIWMSProtocolIdentifierData_SCSpecific4 = 59, + eQMIWMSProtocolIdentifierData_SCSpecific5 = 60, + eQMIWMSProtocolIdentifierData_SCSpecific6 = 61, + eQMIWMSProtocolIdentifierData_SCSpecific7 = 62, + eQMIWMSProtocolIdentifierData_GSMUMTS = 63, + eQMIWMSProtocolIdentifierData_SMType0 = 64, + eQMIWMSProtocolIdentifierData_ReplaceSM1 = 65, + eQMIWMSProtocolIdentifierData_ReplaceSM2 = 66, + eQMIWMSProtocolIdentifierData_ReplaceSM3 = 67, + eQMIWMSProtocolIdentifierData_ReplaceSM4 = 68, + eQMIWMSProtocolIdentifierData_ReplaceSM5 = 69, + eQMIWMSProtocolIdentifierData_ReplaceSM6 = 70, + eQMIWMSProtocolIdentifierData_ReplaceSM7 = 71, + eQMIWMSProtocolIdentifierData_ReturnCall = 95, + eQMIWMSProtocolIdentifierData_ANSI136RData = 124, + eQMIWMSProtocolIdentifierData_MEDataDownload = 125, + eQMIWMSProtocolIdentifierData_MEDepersonalizationShortMessage = 126, + eQMIWMSProtocolIdentifierData_SIMDataDownload = 127, +}; + +// Enum to describe QMI WMS RP Cause Codes +enum eQMIWMSRPCauseCodes:UINT16 +{ + eQMIWMSRPCauseCodes_UnassignedNumber = 1, + eQMIWMSRPCauseCodes_OperatorDeterminedBarring = 8, + eQMIWMSRPCauseCodes_CallBarred = 10, + eQMIWMSRPCauseCodes_Reserved = 11, + eQMIWMSRPCauseCodes_ShortMessageTransferRejected = 21, + eQMIWMSRPCauseCodes_MemoryCapacityExceeded = 22, + eQMIWMSRPCauseCodes_DestinationOutOfOrder = 27, + eQMIWMSRPCauseCodes_UnidentifiedSubscriber = 28, + eQMIWMSRPCauseCodes_FacilityRejected = 29, + eQMIWMSRPCauseCodes_UnknownSubscriber = 30, + eQMIWMSRPCauseCodes_NetworkOutOfOrder = 38, + eQMIWMSRPCauseCodes_TemporaryFailure = 41, + eQMIWMSRPCauseCodes_Congestion = 42, + eQMIWMSRPCauseCodes_UnspecifiedResourcesUnavailable = 47, + eQMIWMSRPCauseCodes_RequestedFacilityNotSubscribed = 50, + eQMIWMSRPCauseCodes_RequestedFacilityNotImplemented = 69, + eQMIWMSRPCauseCodes_InvalidShortMessageTransferValue = 81, + eQMIWMSRPCauseCodes_SemanticallyIncorrectMessage = 95, + eQMIWMSRPCauseCodes_InvalidManadatoryInfo = 96, + eQMIWMSRPCauseCodes_MessageTypeNotImplemented = 97, + eQMIWMSRPCauseCodes_MessageNotCompatibleWithSMS = 98, + eQMIWMSRPCauseCodes_InfoElementNotImplemented = 99, + eQMIWMSRPCauseCodes_UnspecifiedProtocolError = 111, + eQMIWMSRPCauseCodes_UnspecifiedInterworking = 127, +}; + +// Enum to describe QMI WMS Receipt Actions +enum eQMIWMSReceiptActions:UINT8 +{ + eQMIWMSReceiptActions_Discard = 0, + eQMIWMSReceiptActions_StoreAndNotify = 1, + eQMIWMSReceiptActions_TransferOnly = 2, + eQMIWMSReceiptActions_TransfterAndAcknowledge = 3, +}; + +// Enum to describe QMI WMS Route Values +enum eQMIWMSRouteValues:UINT8 +{ + eQMIWMSRouteValues_Discard = 0, + eQMIWMSRouteValues_StoreAndNotify = 1, + eQMIWMSRouteValues_TransferOnly = 2, + eQMIWMSRouteValues_TransferAndAcknowledge = 3, + eQMIWMSRouteValues_Unknown = 255, +}; + +// Enum to describe QMI WMS SMS Call Status +enum eQMIWMSSMSCallStatus:UINT8 +{ + eQMIWMSSMSCallStatus_Incoming = 0, + eQMIWMSSMSCallStatus_Connected = 1, + eQMIWMSSMSCallStatus_Aborted = 2, + eQMIWMSSMSCallStatus_Disconnected = 3, + eQMIWMSSMSCallStatus_Connecting = 4, +}; + +// Enum to describe QMI WMS SMS Message Mode +enum eQMIWMSSMSMessageMode:UINT8 +{ + eQMIWMSSMSMessageMode_GSMWCDMA = 1, +}; + +// Enum to describe QMI WMS Service Categories +enum eQMIWMSServiceCategories:UINT16 +{ + eQMIWMSServiceCategories_Unknown = 0, + eQMIWMSServiceCategories_EmergencyBroadcast = 1, + eQMIWMSServiceCategories_Administrative = 2, + eQMIWMSServiceCategories_Maintenance = 3, + eQMIWMSServiceCategories_GeneralNewsLocal = 4, + eQMIWMSServiceCategories_GeneralNewsRegional = 5, + eQMIWMSServiceCategories_GeneralNewsNational = 6, + eQMIWMSServiceCategories_GeneralNewsInternational = 7, + eQMIWMSServiceCategories_BusinessNewsLocal = 8, + eQMIWMSServiceCategories_BusinessNewsRegional = 9, + eQMIWMSServiceCategories_BusinessNewsNational = 10, + eQMIWMSServiceCategories_BusinessNewsInternational = 11, + eQMIWMSServiceCategories_SportsNewsLocal = 12, + eQMIWMSServiceCategories_SportsNewsRegional = 13, + eQMIWMSServiceCategories_SportsNewsNational = 14, + eQMIWMSServiceCategories_SportsNewsInternational = 15, + eQMIWMSServiceCategories_EntertainmentNewsLocal = 16, + eQMIWMSServiceCategories_EntertainmentNewsRegional = 17, + eQMIWMSServiceCategories_EntertainmentNewsNational = 18, + eQMIWMSServiceCategories_EntertainmentNewsInternational = 19, + eQMIWMSServiceCategories_LocalWeather = 20, + eQMIWMSServiceCategories_AreaTrafficReports = 21, + eQMIWMSServiceCategories_LocalAirplaneFlightSchedules = 22, + eQMIWMSServiceCategories_Restaurants = 23, + eQMIWMSServiceCategories_Lodgings = 24, + eQMIWMSServiceCategories_RetailDirectory = 25, + eQMIWMSServiceCategories_Advertisements = 26, + eQMIWMSServiceCategories_StockQuotes = 27, + eQMIWMSServiceCategories_EmploymentOpportunities = 28, + eQMIWMSServiceCategories_MedicalHealthHospitals = 29, + eQMIWMSServiceCategories_TechnologyNews = 30, + eQMIWMSServiceCategories_Multicategory = 31, + eQMIWMSServiceCategories_CardApplicationToolkitProtocolTeleservice = 32, + eQMIWMSServiceCategories_PresidentialLevelAlert = 4096, + eQMIWMSServiceCategories_ExtremeThreattoLifeandProperty = 4097, + eQMIWMSServiceCategories_SevereThreattoLifeandProperty = 4098, + eQMIWMSServiceCategories_AMBERChildAbductionEmergency = 4099, + eQMIWMSServiceCategories_CMASTestMessage = 4100, +}; + +// Enum to describe QMI WMS Service Ready Status +enum eQMIWMSServiceReadyStatus:UINT32 +{ + eQMIWMSServiceReadyStatus_SMSServiceNotReady = 0, + eQMIWMSServiceReadyStatus_3GPPSMSServiceReady = 1, + eQMIWMSServiceReadyStatus_3GPP2SMSServiceReady = 2, + eQMIWMSServiceReadyStatus_3GPPAnd3GPP2SMSServicesReady = 3, +}; + +// Enum to describe QMI WMS Storage Types +enum eQMIWMSStorageTypes:UINT8 +{ + eQMIWMSStorageTypes_UIM = 0, + eQMIWMSStorageTypes_NV = 1, + eQMIWMSStorageTypes_Unknown = 255, +}; + +// Enum to describe QMI WMS Subscription Type +enum eQMIWMSSubscriptionType:UINT8 +{ + eQMIWMSSubscriptionType_PrimarySubscription = 0, + eQMIWMSSubscriptionType_SecondarySubscription = 1, + eQMIWMSSubscriptionType_TertiarySubscription = 2, +}; + +// Enum to describe QMI WMS TP Cause Codes +enum eQMIWMSTPCauseCodes:UINT8 +{ + eQMIWMSTPCauseCodes_TelematicInterworkingNotSupported = 128, + eQMIWMSTPCauseCodes_ShortMessageType0NotSupported = 129, + eQMIWMSTPCauseCodes_CannotReplaceShortMessage = 130, + eQMIWMSTPCauseCodes_UnspecifiedPIDError = 143, + eQMIWMSTPCauseCodes_DataCodingSchemeNotSupported = 144, + eQMIWMSTPCauseCodes_MessageClassNotSupported = 145, + eQMIWMSTPCauseCodes_UnspecifiedDCSError = 159, + eQMIWMSTPCauseCodes_CommandCannotBeActioned = 160, + eQMIWMSTPCauseCodes_CommandUnsupported = 161, + eQMIWMSTPCauseCodes_UnspecifiedCommandError = 175, + eQMIWMSTPCauseCodes_TPDUNotSupported = 176, + eQMIWMSTPCauseCodes_SCBusy = 192, + eQMIWMSTPCauseCodes_NoSCSubscription = 193, + eQMIWMSTPCauseCodes_SCSystemFailure = 194, + eQMIWMSTPCauseCodes_InvalidSMEAddress = 195, + eQMIWMSTPCauseCodes_DestinationSMEBarred = 196, + eQMIWMSTPCauseCodes_SMRejectedOrDuplicate = 197, + eQMIWMSTPCauseCodes_VPFNotSupported = 198, + eQMIWMSTPCauseCodes_VPNotSupported = 199, + eQMIWMSTPCauseCodes_SIMSMSStorageFull = 208, + eQMIWMSTPCauseCodes_NoSIMSMSStorageCapability = 209, + eQMIWMSTPCauseCodes_ErrorInMS = 210, + eQMIWMSTPCauseCodes_MemoryCapacityExceeded = 211, + eQMIWMSTPCauseCodes_SIMApplicationToolkitBusy = 212, + eQMIWMSTPCauseCodes_SIMDataDownloadError = 213, + eQMIWMSTPCauseCodes_UnspecifiedError = 255, +}; + +// Enum to describe QMI WMS Transport Capability +enum eQMIWMSTransportCapability:UINT8 +{ + eQMIWMSTransportCapability_CDMA = 0, + eQMIWMSTransportCapability_GW = 1, +}; + +// Enum to describe QMI WMS Transport Type +enum eQMIWMSTransportType:UINT8 +{ + eQMIWMSTransportType_IMS = 0, +}; + +// Enum to describe QMI WMS Waiting Message Type +enum eQMIWMSWaitingMessageType:UINT8 +{ + eQMIWMSWaitingMessageType_Voicemail = 0, + eQMIWMSWaitingMessageType_Fax = 1, + eQMIWMSWaitingMessageType_Email = 2, + eQMIWMSWaitingMessageType_Other = 3, + eQMIWMSWaitingMessageType_Videomail = 4, +}; + diff --git a/gobi-api/GobiAPI_2013-07-31-1347/GobiConnectionMgmt/GobiConnectionMgmtAPIStructs.h b/gobi-api/GobiAPI_2013-07-31-1347/GobiConnectionMgmt/GobiConnectionMgmtAPIStructs.h new file mode 100644 index 0000000..cde5b16 --- /dev/null +++ b/gobi-api/GobiAPI_2013-07-31-1347/GobiConnectionMgmt/GobiConnectionMgmtAPIStructs.h @@ -0,0 +1,33556 @@ +/*=========================================================================== +FILE: + GobiConnectionMgmtAPIStructs.h + +DESCRIPTION: + Declaration of the Gobi API structures + +Copyright (c) 2013, The Linux Foundation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +==========================================================================*/ + +//--------------------------------------------------------------------------- +// Pragmas +//--------------------------------------------------------------------------- +#pragma once + +//--------------------------------------------------------------------------- +// Include Files +//--------------------------------------------------------------------------- +#include "GobiConnectionMgmtAPIEnums.h" + +#pragma pack( push, 1 ) + +//--------------------------------------------------------------------------- +// Definitions +//--------------------------------------------------------------------------- + +// Structure to represent a QMUX header +struct sQMUXHeader +{ + // mIF is always 1 + BYTE mIF; + + // mLength is full size of QMUX message NOT including mIF + WORD mLength; + + // Flags are always 0 for clients + BYTE mFlags; + + eQMIService mServiceType; + BYTE mClientID; +}; + +// Structure to represent a QMI Control Raw Transaction Header +struct sQMIControlRawTransactionHeader +{ + BYTE mResponse :1; + BYTE mIndication :1; + BYTE mReserved :6; + BYTE mTransactionID; +}; + +// Structure to represent a QMI Service Raw Transaction Header +struct sQMIServiceRawTransactionHeader +{ + BYTE mCompound :1; + BYTE mResponse :1; + BYTE mIndication :1; + BYTE mReserved :5; + WORD mTransactionID; +}; + +// Structure to represetn a QMI Raw Message Header +struct sQMIRawMessageHeader +{ + WORD mMessageID; + WORD mLength; + + // This array must be the size specified by mLength + // BYTE mTLV[1]; +}; + +// Structure to represent a QMUX message +struct sQMUXMessage +{ + sQMUXHeader mQMUXHeader; + + // Either a sQMUXControlRawTransactionHeader or + // sQMIServiceRawTransactionHeader should go here + + sQMIRawMessageHeader mQMIRawMessageHeader; +}; + +// Structure to represent a QMI (control/service) content +struct sQMIRawContentHeader +{ + BYTE mTypeID; + WORD mLength; + + // This array must be the size specified by mLength + // BYTE mValue[1]; +}; + +// Structure to describe request TLV 0x01 for QMI CTL Get Client ID +struct sQMICTLGetClientID_ServiceType +{ + eQMIService mQMIService; +}; + +// Structure to describe response TLV 0x01 for QMI CTL Get Client ID +struct sQMICTLGetClientID_AssignedClientID +{ + eQMIService mQMIService; + BYTE mClientID; +}; + +// Structure to describe TLV 0x02, the Result Code +// It is common for all Responses +struct sResultCode +{ + eQMIResults mQMIResult; + eQMIErrors mQMIError; +}; + +// Structure to describe TLV 0x01 for 'Abort' messages (0x0001/2) shared +// across QMI WDS and NAS services +struct sAbortRequest_TransactionID +{ + UINT16 mTransactionID; +}; + +// Structure to describe TLV 0x10 for 'Get Supported Messages Response' +// message (0x001E) shared across most QMI services +struct sGetSupportedMessagesResponse_Messages +{ + UINT16 mSupportedMessagesLength; + + // This array must be the size specified by mSupportedMessagesLength + // where each bit of each UINT8 represents a single message ID + // UINT8 mSupportedMessages[1]; +}; + +// Structure to describe TLV 0x01 for 'Get Supported Fields Request' +// message (0x001F) shared across most QMI services +struct sGetSupportedFieldsRequest_MessageID +{ + UINT16 mMessageID; +}; + +// Structure to describe TLVs 0x10/11/12 for 'Get Supported Fields Response' +// message (0x001F) shared across most QMI services +struct sGetSupportedFieldsResponse_Fields +{ + UINT8 mSupportedFieldsLength; + + // This array must be the size specified by mSupportedFieldsLength + // where each bit of each UINT8 represents a single TLV ID + // UINT8 mSupportedFields[1]; +}; + +// Structure to describe TLV 0x01 for QMI LOC, the status +// It is common for QMI LOC indications above 0x0032 +struct sLOCIndication_Status +{ + eQMILOCStatus mStatus; +}; + +// Structure to describe request TLV 0x10 for WDSSetEventReport() +struct sWDSSetEventReportRequest_ChannelRateIndicator +{ + INT8 mReportChannelRate; +}; + +// Structure to describe request TLV 0x11 for WDSSetEventReport() +struct sWDSSetEventReportRequest_TransferStatisticsIndicator +{ + UINT8 mTransferStatisticsIntervalSeconds; + bool mReportTXPacketSuccesses:1; + bool mReportRXPacketSuccesses:1; + bool mReportTXPacketErrors:1; + bool mReportRXPacketErrors:1; + bool mReportTXOverflows:1; + bool mReportRXOverflows:1; + bool mTXByteTotal:1; + bool mRXByteTotal:1; + bool mTXPacketsDropped:1; + bool mRXPacketsDropped:1; + + // Padding out 22 bits + UINT8 mReserved1:6; + UINT8 mReserved2[2]; +}; + +// Structure to describe request TLV 0x12 for WDSSetEventReport() +struct sWDSSetEventReportRequest_DataBearerTechnologyIndicator +{ + INT8 mReportDataBearerTechnology; +}; + +// Structure to describe request TLV 0x13 for WDSSetEventReport() +struct sWDSSetEventReportRequest_DormancyStatusIndicator +{ + INT8 mReportDormancyStatus; +}; + +// Structure to describe request TLV 0x14 for WDSSetEventReport() +struct sWDSSetEventReportRequest_MIPStatusIndicator +{ + INT8 mReportMIPStatus; +}; + +// Structure to describe request TLV 0x15 for WDSSetEventReport() +struct sWDSSetEventReportRequest_CurrentDataBearerTechnologyIndicator +{ + INT8 mReportDataBearerTechnology; +}; + +// Structure to describe request TLV 0x17 for WDSSetEventReport() +struct sWDSSetEventReportRequest_DataCallStatusIndicator +{ + INT8 mReportDataCallStatus; +}; + +// Structure to describe request TLV 0x18 for WDSSetEventReport() +struct sWDSSetEventReportRequest_PreferredDataSystemIndicator +{ + INT8 mReportPreferredDataSystem; +}; + +// Structure to describe request TLV 0x19 for WDSSetEventReport() +struct sWDSSetEventReportRequest_EVDOPMChangeIndicator +{ + INT8 mReportEVDOPageMonitorPeriodChange; +}; + +// Structure to describe request TLV 0x1A for WDSSetEventReport() +struct sWDSSetEventReportRequest_DataSystemsIndicator +{ + INT8 mReportDataSystems; +}; + +// Structure to describe request TLV 0x1B for WDSSetEventReport() +struct sWDSSetEventReportRequest_UplinkFlowControlIndicator +{ + INT8 mReportUplinkFlowControl; +}; + +// Structure to describe request TLV 0x1C for WDSSetEventReport() +struct sWDSSetEventReportRequest_LimitedDataSystemStatusIndicator +{ + INT8 mReportLimitedDataSystemStatus; +}; + +// Structure to describe request TLV 0x1D for WDSSetEventReport() +struct sWDSSetEventReportRequest_PDNFilterRemovalsIndicator +{ + INT8 mReportPDNFilterRemovals; +}; + +// Structure to describe request TLV 0x1E for WDSSetEventReport() +struct sWDSSetEventReportRequest_ExtendedDataBearerTechnologyIndicator +{ + INT8 mReportExtendedDataBearerTechnology; +}; + +// Structure to describe indication TLV 0x10 for WDS EventReport +struct sWDSEventReportIndication_TXPacketSuccesses +{ + UINT32 mTXPacketSuccesses; +}; + +// Structure to describe indication TLV 0x11 for WDS EventReport +struct sWDSEventReportIndication_RXPacketSuccesses +{ + UINT32 mRXPacketSuccesses; +}; + +// Structure to describe indication TLV 0x12 for WDS EventReport +struct sWDSEventReportIndication_TXPacketErrors +{ + UINT32 mTXPacketErrors; +}; + +// Structure to describe indication TLV 0x13 for WDS EventReport +struct sWDSEventReportIndication_RXPacketErrors +{ + UINT32 mRXPacketErrors; +}; + +// Structure to describe indication TLV 0x14 for WDS EventReport +struct sWDSEventReportIndication_TXOverflows +{ + UINT32 mTXOverflows; +}; + +// Structure to describe indication TLV 0x15 for WDS EventReport +struct sWDSEventReportIndication_RXOverflows +{ + UINT32 mRXOverflows; +}; + +// Structure to describe indication TLV 0x16 for WDS EventReport +struct sWDSEventReportIndication_ChannelRates +{ + UINT32 mChannelTXRatebps; + UINT32 mChannelRXRatebps; +}; + +// Structure to describe indication TLV 0x17 for WDS EventReport +struct sWDSEventReportIndication_DataBearerTechnology +{ + eQMIDataBearerTechnologies mDataBearerTechnology; +}; + +// Structure to describe indication TLV 0x18 for WDS EventReport +struct sWDSEventReportIndication_DormancyStatus +{ + eQMIDormancyStatus mDormancyStatus; +}; + +// Structure to describe indication TLV 0x19 for WDS EventReport +struct sWDSEventReportIndication_TXBytes +{ + UINT64 mTXByteTotal; +}; + +// Structure to describe indication TLV 0x1A for WDS EventReport +struct sWDSEventReportIndication_RXBytes +{ + UINT64 mRXByteTotal; +}; + +// Structure to describe indication TLV 0x1B for WDS EventReport +struct sWDSEventReportIndication_MIPStatus +{ + UINT8 mMIPStatus; +}; + +// Structure to describe indication TLV 0x1D for WDS EventReport +struct sWDSEventReportIndication_CurrentDataBearerTechnology +{ + eQMIWDSNetworkTypes mNetworkType; + + // The following union is based on the value of mNetworkType + union uValOfNetworkType + { + // If the value of mNetworkType == 1 + struct sNetworkTypeIs1 + { + bool mCDMA1x:1; + bool mCDMA1xEvDORev0:1; + bool mCDMA1xEvDORevA:1; + bool mCDMA1xEvDORevB:1; + bool mCDMAEHRPD:1; + bool mCDMAFMC:1; + + // Padding out 25 bits + UINT8 mReserved1:2; + UINT8 mReserved2[2]; + UINT8 mReserved3:7; + + bool mNullBearer:1; + + // The following union is for handing both mCDMA1x and mCDMA1xEvDORev(0, A, B) + union uValOfCDMA1x_or_CDMA1xEvDORevX + { + // If the value of mCDMA1x == 1 + struct sCDMA1xIs1 + { + bool mCDMA1xIS95:1; + bool mCDMA1xIS2000:1; + bool mCDMA1xIS2000RelA:1; + + // Padding out 29 bits + UINT8 mReserved4:5; + UINT8 mReserved5[3]; + }; + + sCDMA1xIs1 mCDMA1xIs1; + + // If the value of mCDMA1xEvDORev0 == 1 + struct sCDMA1xEvDORev0Is1 + { + bool mCDMA1xEvDORev0DPA:1; + + // Padding out 31 bits + UINT8 mReserved6:7; + UINT8 mReserved7[3]; + }; + + sCDMA1xEvDORev0Is1 mCDMA1xEvDORev0Is1; + + // If the value of mCDMA1xEvDORevA == 1 + struct sCDMA1xEvDORevAIs1 + { + bool mCDMA1xEvDORevADPA:1; + bool mCDMA1xEvDORevAMFPA:1; + bool mCDMA1xEvDORevAEMPA:1; + bool mCDMA1xEvDORevAEMPAEHRPD:1; + + // Padding out 28 bits + UINT8 mReserved8:4; + UINT8 mReserved9[3]; + }; + + sCDMA1xEvDORevAIs1 mCDMA1xEvDORevAIs1; + + // If the value of mCDMA1xEvDORevB == 1 + struct sCDMA1xEvDORevBIs1 + { + bool mCDMA1xEvDORevBDPA:1; + bool mCDMA1xEvDORevBMFPA:1; + bool mCDMA1xEvDORevBEMPA:1; + bool mCDMA1xEvDORevBEMPAEHRPD:1; + bool mCDMA1xEvDORevBMMPA:1; + bool mCDMA1xEvDORevBMMPAEHRPD:1; + + // Padding out 26 bits + UINT8 mReserved10:2; + UINT8 mReserved11[3]; + }; + + sCDMA1xEvDORevBIs1 mCDMA1xEvDORevBIs1; + + // Padding out 32 bits + UINT8 mReserved12[4]; + }; + + uValOfCDMA1x_or_CDMA1xEvDORevX mValOfCDMA1x_or_CDMA1xEvDORevX; + }; + + sNetworkTypeIs1 mNetworkTypeIs1; + + // If the value of mNetworkType == 2 + struct sNetworkTypeIs2 + { + bool mWCDMA:1; + bool mGPRS:1; + bool mHSDPA:1; + bool mHSUPA:1; + bool mEDGE:1; + bool mLTE:1; + bool mHSDPAPlus:1; + bool mDualCellHSDPAPlus:1; + bool m64QAM:1; + bool mTDSCDMA:1; + + // Padding out 21 bits + UINT8 mReserved13:6; + UINT8 mReserved14; + UINT8 mReserved15:7; + + bool mNullBearer:1; + }; + + sNetworkTypeIs2 mNetworkTypeIs2; + + // Padding out 64 bits + UINT8 mReserved16[8]; + }; + + uValOfNetworkType mValOfNetworkType; +}; + +// Structure to describe indication TLV 0x1F for WDS EventReport +struct sWDSEventReportIndication_DataCallStatus +{ + eQMIWDSDataCallStatus mDataCallStatus; +}; + +// Structure to describe indication TLV 0x20 for WDS EventReport +struct sWDSEventReportIndication_PreferredDataSystem +{ + eQMIWDSDataSystems mPreferredDataSystem; +}; + +// Structure to describe indication TLV 0x22 for WDS EventReport +struct sWDSEventReportIndication_DataCallType +{ + eQMIWDSDataCallTypes mDataCallType; + eQMIWDSTetheredCallTypes mTetheredCallType; +}; + +// Structure to describe indication TLV 0x23 for WDS EventReport +struct sWDSEventReportIndication_EVDOPageMonitorPeriodChange +{ + UINT8 mEVDOPageMonitorPeriodChange; + INT8 mEVDOForceLongSleep; +}; + +// Structure to describe indication TLV 0x24 for WDS EventReport +struct sWDSEventReportIndication_DataSystems +{ + eQMIWDSDataSystemNetworkTypes mPreferredNetworkType; + UINT8 mNetworkCount; + + struct sNetwork + { + eQMIWDSDataSystemNetworkTypes mNetworkType; + + // The following union is based on the value of mNetworkType + union uValOfNetworkType + { + // If the value of mNetworkType == 0 + struct sNetworkTypeIs0 + { + bool mWCDMA:1; + bool mGPRS:1; + bool mHSDPA:1; + bool mHSUPA:1; + bool mEDGE:1; + bool mLTE:1; + bool mHSDPAPlus:1; + bool mDualCellHSDPAPlus:1; + bool m64QAM:1; + bool mTDSCDMA:1; + + // Padding out 21 bits + UINT8 mReserved1:6; + UINT8 mReserved2; + UINT8 mReserved3:7; + + bool mNULLBearer:1; + }; + + sNetworkTypeIs0 mNetworkTypeIs0; + + // If the value of mNetworkType == 1 + struct sNetworkTypeIs1 + { + bool mCDMA1x:1; + bool mCDMA1xEvDORev0:1; + bool mCDMA1xEvDORevA:1; + bool mCDMA1xEvDORevB:1; + bool mCDMAEHRPD:1; + bool mCDMAFMC:1; + + // Padding out 25 bits + UINT8 mReserved4:2; + UINT8 mReserved5[2]; + UINT8 mReserved6:7; + + bool mNULLBearer:1; + + // The following union is for handing all mCDMA1x types + union uValOfCDMA1xTypes + { + // If the value of mCDMA1x == 1 + struct sCDMA1xIs1 + { + bool mCDMA1xIS95:1; + bool mCDMA1xIS2000:1; + bool mCDMA1xIS2000RelA:1; + + // Padding out 29 bits + UINT8 mReserved7:5; + UINT8 mReserved8[3]; + }; + + sCDMA1xIs1 mCDMA1xIs1; + + // If the value of mCDMA1xEvDORev0 == 1 + struct sCDMA1xEvDORev0Is1 + { + bool mCDMA1xEvDORev0DPA:1; + + // Padding out 31 bits + UINT8 mReserved9:7; + UINT8 mReserved10[3]; + }; + + sCDMA1xEvDORev0Is1 mCDMA1xEvDORev0Is1; + + // If the value of mCDMA1xEvDORevA == 1 + struct sCDMA1xEvDORevAIs1 + { + bool mCDMA1xEvDORevADPA:1; + bool mCDMA1xEvDORevAMFPA:1; + bool mCDMA1xEvDORevAEMPA:1; + bool mCDMA1xEvDORevAEMPAEHRPD:1; + + // Padding out 28 bits + UINT8 mReserved11:4; + UINT8 mReserved12[3]; + }; + + sCDMA1xEvDORevAIs1 mCDMA1xEvDORevAIs1; + + // If the value of mCDMA1xEvDORevB == 1 + struct sCDMA1xEvDORevBIs1 + { + bool mCDMA1xEvDORevBDPA:1; + bool mCDMA1xEvDORevBMFPA:1; + bool mCDMA1xEvDORevBEMPA:1; + bool mCDMA1xEvDORevBEMPAEHRPD:1; + bool mCDMA1xEvDORevBMMPA:1; + bool mCDMA1xEvDORevBMMPAEHRPD:1; + + // Padding out 26 bits + UINT8 mReserved13:2; + UINT8 mReserved14[3]; + }; + + sCDMA1xEvDORevBIs1 mCDMA1xEvDORevBIs1; + + // Padding out 32 bits + UINT8 mReserved15[4]; + }; + + uValOfCDMA1xTypes mValOfCDMA1xTypes; + }; + + sNetworkTypeIs1 mNetworkTypeIs1; + + // Padding out 64 bits + UINT8 mReserved16[8]; + }; + + uValOfNetworkType mValOfNetworkType; + }; + + // This array must be the size specified by mNetworkCount + // sNetwork mNetworks[1]; +}; + +// Structure to describe indication TLV 0x25 for WDS EventReport +struct sWDSEventReportIndication_TXPacketsDropped +{ + UINT32 mTXPacketsDropped; +}; + +// Structure to describe indication TLV 0x26 for WDS EventReport +struct sWDSEventReportIndication_RXPacketsDropped +{ + UINT32 mRXPacketsDropped; +}; + +// Structure to describe indication TLV 0x27 for WDS EventReport +struct sWDSEventReportIndication_UplinkFlowControl +{ + INT8 mUplinkFlowControlEnabled; +}; + +// Structure to describe indication TLV 0x28 for WDS EventReport +struct sWDSEventReportIndication_DataCallAddressFamily +{ + eQMIWDSAddressFamilies mAddressFamily; +}; + +// Structure to describe indication TLV 0x29 for WDS EventReport +struct sWDSEventReportIndication_PDNFiltersRemoved +{ + UINT8 mPDNFilterHandleCount; + + // This array must be the size specified by mPDNFilterHandleCount + // UINT32 mPDNFilterHandle[1]; +}; + +// Structure to describe indication TLV 0x2A for WDS EventReport +struct sWDSEventReportIndication_ExtendedDataBearerTechnology +{ + eQMIWDSDataBearerTechnologies mDataBearerTechnology; + eQMIWDSRadioAccessTechnologies mRadioAccessTechnology; + bool mWCDMA:1; + bool mHSDPA:1; + bool mHSUPA:1; + bool mHSDPAPlus:1; + bool mDualCellHSDPAPlus:1; + bool m64QAM:1; + bool mHSPA:1; + bool mGPRS:1; + bool mEDGE:1; + bool mGSM:1; + bool mS2B:1; + bool mLTELimitedService:1; + bool mLTEFDD:1; + bool mLTETDD:1; + + // Padding out 11 bits + UINT8 mReserved1:2; + UINT8 mReserved2; + UINT8 mReserved3:1; + + bool m1xIS95:1; + bool m1xIS2000:1; + bool m1xIS2000RelA:1; + bool mHDRRev0DPA:1; + bool mHDRRevADPA:1; + bool mHDRRevBDPA:1; + bool mHDRRevAMPA:1; + bool mHDRRevBMPA:1; + bool mHDRRevAEMPA:1; + bool mHDRRevBEMPA:1; + bool mHDRRevBMMPA:1; + bool mHDREVDOFMC:1; + + // Padding out 27 bits + UINT8 mReserved4:3; + UINT8 mReserved5[3]; +}; + +// Structure to describe request TLV 0x10 for WDSSetIndication() +struct sWDSSetIndicationRequest_TMGIList +{ + INT8 mReportEMBMSTMGIList; +}; + +// Structure to describe request TLV 0x11 for WDSSetIndication() +struct sWDSSetIndicationRequest_PacketService +{ + INT8 mSuppressPacketServiceIndication; +}; + +// Structure to describe request TLV 0x12 for WDSSetIndication() +struct sWDSSetIndicationRequest_ExtendedIP +{ + INT8 mReportExtendedIPConfigChange; +}; + +// Structure to describe request TLV 0x13 for WDSSetIndication() +struct sWDSSetIndicationRequest_LTEAttachPDNList +{ + INT8 mReportLTEAttachPDNListChange; +}; + +// Structure to describe request TLV 0x14 for WDSSetIndication() +struct sWDSSetIndicationRequest_ReverseIPTransportFilter +{ + INT8 mReportReverseIPTransportFilterSetup; +}; + +// Structure to describe request TLV 0x15 for WDSSetIndication() +struct sWDSSetIndicationRequest_HandoffInfo +{ + INT8 mReportHandoffInformation; +}; + +// Structure to describe request TLV 0x10 for WDSStartNetworkInterface() +struct sWDSStartNetworkInterfaceRequest_PrimaryDNS +{ + UINT8 mIPV4Address[4]; +}; + +// Structure to describe request TLV 0x11 for WDSStartNetworkInterface() +struct sWDSStartNetworkInterfaceRequest_SecondaryDNS +{ + UINT8 mIPV4Address[4]; +}; + +// Structure to describe request TLV 0x12 for WDSStartNetworkInterface() +struct sWDSStartNetworkInterfaceRequest_PrimaryNBNS +{ + UINT8 mIPV4Address[4]; +}; + +// Structure to describe request TLV 0x13 for WDSStartNetworkInterface() +struct sWDSStartNetworkInterfaceRequest_SecondaryNBNS +{ + UINT8 mIPV4Address[4]; +}; + +// Structure to describe request TLV 0x14 for WDSStartNetworkInterface() +struct sWDSStartNetworkInterfaceRequest_ContextAPNName +{ + // String is variable length, but must be size of the container + // char mAPNName[1]; +}; + +// Structure to describe request TLV 0x15 for WDSStartNetworkInterface() +struct sWDSStartNetworkInterfaceRequest_IPAddress +{ + UINT8 mIPV4Address[4]; +}; + +// Structure to describe request TLV 0x16 for WDSStartNetworkInterface() +struct sWDSStartNetworkInterfaceRequest_Authentication +{ + bool mEnablePAP:1; + bool mEnableCHAP:1; + + // Padding out 6 bits + UINT8 mReserved1:6; +}; + +// Structure to describe request TLV 0x17 for WDSStartNetworkInterface() +struct sWDSStartNetworkInterfaceRequest_Username +{ + // String is variable length, but must be size of the container + // char mUsername[1]; +}; + +// Structure to describe request TLV 0x18 for WDSStartNetworkInterface() +struct sWDSStartNetworkInterfaceRequest_Password +{ + // String is variable length, but must be size of the container + // char mPassword[1]; +}; + +// Structure to describe request TLV 0x19 for WDSStartNetworkInterface() +struct sWDSStartNetworkInterfaceRequest_IPFamily +{ + eQMIWDSIPFamilies mIPFamily; +}; + +// Structure to describe request TLV 0x30 for WDSStartNetworkInterface() +struct sWDSStartNetworkInterfaceRequest_TechnologyPreference +{ + bool mEnable3GPP:1; + bool mEnable3GPP2:1; + + // Padding out 6 bits + UINT8 mReserved1:6; +}; + +// Structure to describe request TLV 0x31 for WDSStartNetworkInterface() +struct sWDSStartNetworkInterfaceRequest_3GPPProfileIdentifier +{ + UINT8 mProfileIndex; +}; + +// Structure to describe request TLV 0x32 for WDSStartNetworkInterface() +struct sWDSStartNetworkInterfaceRequest_3GPP2ProfileIdentifier +{ + UINT8 mProfileIndex; +}; + +// Structure to describe request TLV 0x33 for WDSStartNetworkInterface() +struct sWDSStartNetworkInterfaceRequest_Autoconnect +{ + eQMIWDSAutoconnectSettings mAutoconnectSetting; +}; + +// Structure to describe request TLV 0x34 for WDSStartNetworkInterface() +struct sWDSStartNetworkInterfaceRequest_ExtendedTechnologyPreference +{ + eQMIWDSExtendedTechPrefs mExtendedTechnologyPreference; +}; + +// Structure to describe request TLV 0x35 for WDSStartNetworkInterface() +struct sWDSStartNetworkInterfaceRequest_CallType +{ + eQMIWDSCallTypes mCallType; +}; + +// Structure to describe request TLV 0x36 for WDSStartNetworkInterface() +struct sWDSStartNetworkInterfaceRequest_HandoffContext +{ + UINT8 mIPV4Address[4]; + UINT16 mIPv6Address[8]; + eQMIWDSIPSupportTypes mBearerIPType; +}; + +// Structure to describe request TLV 0x37 for WDSStartNetworkInterface() +struct sWDSStartNetworkInterfaceRequest_IPStreamID +{ + UINT8 mIPStreamID; +}; + +// Structure to describe response TLV 0x01 for WDSStartNetworkInterface() +struct sWDSStartNetworkInterfaceResponse_PacketDataHandle +{ + UINT32 mPacketDataHandle; +}; + +// Structure to describe response TLV 0x10 for WDSStartNetworkInterface() +struct sWDSStartNetworkInterfaceResponse_CallEndReason +{ + eQMICallEndReasons mCallEnd; +}; + +// Structure to describe response TLV 0x11 for WDSStartNetworkInterface() +struct sWDSStartNetworkInterfaceResponse_VerboseCallEndReason +{ + eQMIWDSCallEndReasonTypes mCallEndReasonType; + + // The following union is based on the value of mCallEndReasonType + union uValOfCallEndReasonType + { + // Always present + UINT16 mCallEndReasonValue; + + // If the value of mCallEndReasonType == 1 + struct sCallEndReasonTypeIs1 + { + eQMIWDSMobileIPCallEndReasons mMobileIPCallEndReason; + }; + + sCallEndReasonTypeIs1 mCallEndReasonTypeIs1; + + // If the value of mCallEndReasonType == 2 + struct sCallEndReasonTypeIs2 + { + eQMIWDSInternalCallEndReasons mInternalCallEndReason; + }; + + sCallEndReasonTypeIs2 mCallEndReasonTypeIs2; + + // If the value of mCallEndReasonType == 3 + struct sCallEndReasonTypeIs3 + { + eQMIWDSCallManagerCallEndReasons mCallManagerCallEndReason; + }; + + sCallEndReasonTypeIs3 mCallEndReasonTypeIs3; + + // If the value of mCallEndReasonType == 6 + struct sCallEndReasonTypeIs6 + { + eQMIWDS3GPPCallEndReasons m3GPPCallEndReason; + }; + + sCallEndReasonTypeIs6 mCallEndReasonTypeIs6; + + // If the value of mCallEndReasonType == 7 + struct sCallEndReasonTypeIs7 + { + eQMIWDSPPPCallEndReason mPPPCallEndReason; + }; + + sCallEndReasonTypeIs7 mCallEndReasonTypeIs7; + + // If the value of mCallEndReasonType == 8 + struct sCallEndReasonTypeIs8 + { + eQMIWDSEHRPDCallEndReason mEHRPDCallEndReason; + }; + + sCallEndReasonTypeIs8 mCallEndReasonTypeIs8; + + // If the value of mCallEndReasonType == 9 + struct sCallEndReasonTypeIs9 + { + eQMIWDSIPv6CallEndReason mIPv6CallEndReason; + }; + + sCallEndReasonTypeIs9 mCallEndReasonTypeIs9; + + // Padding out 16 bits + UINT8 mReserved1[2]; + }; + + uValOfCallEndReasonType mValOfCallEndReasonType; +}; + +// Structure to describe request TLV 0x01 for WDSStopNetworkInterface() +struct sWDSStopNetworkInterfaceRequest_PacketDataHandle +{ + UINT32 mPacketDataHandle; +}; + +// Structure to describe request TLV 0x10 for WDSStopNetworkInterface() +struct sWDSStopNetworkInterfaceRequest_Autoconnect +{ + INT8 mAutoconnectOff; +}; + +// Structure to describe response TLV 0x01 for WDSGetPacketServiceStatus() +struct sWDSGetPacketServiceStatusResponse_Status +{ + eQMIConnectionStatus mConnectionStatus; +}; + +// Structure to describe indication TLV 0x01 for WDS PacketServiceStatusReport +struct sWDSPacketServiceStatusReportIndication_Status +{ + eQMIConnectionStatus mConnectionStatus; + INT8 mReconfigureRequired; +}; + +// Structure to describe indication TLV 0x10 for WDS PacketServiceStatusReport +struct sWDSPacketServiceStatusReportIndication_CallEndReason +{ + eQMICallEndReasons mCallEnd; +}; + +// Structure to describe indication TLV 0x11 for WDS PacketServiceStatusReport +struct sWDSPacketServiceStatusReportIndication_VerboseCallEndReason +{ + eQMIWDSCallEndReasonTypes mCallEndReasonType; + + // The following union is based on the value of mCallEndReasonType + union uValOfCallEndReasonType + { + // Always present + UINT16 mCallEndReasonValue; + + // If the value of mCallEndReasonType == 1 + struct sCallEndReasonTypeIs1 + { + eQMIWDSMobileIPCallEndReasons mMobileIPCallEndReason; + }; + + sCallEndReasonTypeIs1 mCallEndReasonTypeIs1; + + // If the value of mCallEndReasonType == 2 + struct sCallEndReasonTypeIs2 + { + eQMIWDSInternalCallEndReasons mInternalCallEndReason; + }; + + sCallEndReasonTypeIs2 mCallEndReasonTypeIs2; + + // If the value of mCallEndReasonType == 3 + struct sCallEndReasonTypeIs3 + { + eQMIWDSCallManagerCallEndReasons mCallManagerCallEndReason; + }; + + sCallEndReasonTypeIs3 mCallEndReasonTypeIs3; + + // If the value of mCallEndReasonType == 6 + struct sCallEndReasonTypeIs6 + { + eQMIWDS3GPPCallEndReasons m3GPPCallEndReason; + }; + + sCallEndReasonTypeIs6 mCallEndReasonTypeIs6; + + // If the value of mCallEndReasonType == 7 + struct sCallEndReasonTypeIs7 + { + eQMIWDSPPPCallEndReason mPPPCallEndReason; + }; + + sCallEndReasonTypeIs7 mCallEndReasonTypeIs7; + + // If the value of mCallEndReasonType == 8 + struct sCallEndReasonTypeIs8 + { + eQMIWDSEHRPDCallEndReason mEHRPDCallEndReason; + }; + + sCallEndReasonTypeIs8 mCallEndReasonTypeIs8; + + // If the value of mCallEndReasonType == 9 + struct sCallEndReasonTypeIs9 + { + eQMIWDSIPv6CallEndReason mIPv6CallEndReason; + }; + + sCallEndReasonTypeIs9 mCallEndReasonTypeIs9; + + // Padding out 16 bits + UINT8 mReserved1[2]; + }; + + uValOfCallEndReasonType mValOfCallEndReasonType; +}; + +// Structure to describe indication TLV 0x12 for WDS PacketServiceStatusReport +struct sWDSPacketServiceStatusReportIndication_IPFamily +{ + eQMIWDSIPFamilies mIPFamily; +}; + +// Structure to describe indication TLV 0x13 for WDS PacketServiceStatusReport +struct sWDSPacketServiceStatusReportIndication_ExtendedTechnology +{ + eQMIWDSExtendedTechPrefs mExtendedTechnology; +}; + +// Structure to describe response TLV 0x01 for WDSGetChannelRates() +struct sWDSGetChannelRatesResponse_ChannelRates +{ + UINT32 mChannelTXRatebps; + UINT32 mChannelRXRatebps; + UINT32 mMaxChannelTXRatebps; + UINT32 mMaxChannelRXRatebps; +}; + +// Structure to describe request TLV 0x01 for WDSGetPacketStatistics() +struct sWDSGetPacketStatisticsRequest_PacketStatsMask +{ + bool mReportTXPacketSuccesses:1; + bool mReportRXPacketSuccesses:1; + bool mReportTXPacketErrors:1; + bool mReportRXPacketErrors:1; + bool mReportTXOverflows:1; + bool mReportRXOverflows:1; + bool mTXByteTotal:1; + bool mRXByteTotal:1; + bool mTXPacketsDropped:1; + bool mRXPacketsDropped:1; + + // Padding out 22 bits + UINT8 mReserved1:6; + UINT8 mReserved2[2]; +}; + +// Structure to describe response TLV 0x10 for WDSGetPacketStatistics() +struct sWDSGetPacketStatisticsResponse_TXPacketSuccesses +{ + UINT32 mTXPacketSuccesses; +}; + +// Structure to describe response TLV 0x11 for WDSGetPacketStatistics() +struct sWDSGetPacketStatisticsResponse_RXPacketSuccesses +{ + UINT32 mRXPacketSuccesses; +}; + +// Structure to describe response TLV 0x12 for WDSGetPacketStatistics() +struct sWDSGetPacketStatisticsResponse_TXPacketErrors +{ + UINT32 mTXPacketErrors; +}; + +// Structure to describe response TLV 0x13 for WDSGetPacketStatistics() +struct sWDSGetPacketStatisticsResponse_RXPacketErrors +{ + UINT32 mRXPacketErrors; +}; + +// Structure to describe response TLV 0x14 for WDSGetPacketStatistics() +struct sWDSGetPacketStatisticsResponse_TXOverflows +{ + UINT32 mTXOverflows; +}; + +// Structure to describe response TLV 0x15 for WDSGetPacketStatistics() +struct sWDSGetPacketStatisticsResponse_RXOverflows +{ + UINT32 mRXOverflows; +}; + +// Structure to describe response TLV 0x19 for WDSGetPacketStatistics() +struct sWDSGetPacketStatisticsResponse_TXBytes +{ + UINT64 mTXByteTotal; +}; + +// Structure to describe response TLV 0x1A for WDSGetPacketStatistics() +struct sWDSGetPacketStatisticsResponse_RXBytes +{ + UINT64 mRXByteTotal; +}; + +// Structure to describe response TLV 0x1B for WDSGetPacketStatistics() +struct sWDSGetPacketStatisticsResponse_PreviousTXBytes +{ + UINT64 mPreviousCallTXByteTotal; +}; + +// Structure to describe response TLV 0x1C for WDSGetPacketStatistics() +struct sWDSGetPacketStatisticsResponse_PreviousRXBytes +{ + UINT64 mPreviousCallRXByteTotal; +}; + +// Structure to describe response TLV 0x1D for WDSGetPacketStatistics() +struct sWDSGetPacketStatisticsResponse_TXPacketsDropped +{ + UINT32 mTXPacketsDropped; +}; + +// Structure to describe response TLV 0x1E for WDSGetPacketStatistics() +struct sWDSGetPacketStatisticsResponse_RXPacketsDropped +{ + UINT32 mRXPacketsDropped; +}; + +// Structure to describe request TLV 0x01 for WDSCreateProfile() +struct sWDSCreateProfileRequest_ProfileType +{ + eQMIProfileTypes mProfileType; +}; + +// Structure to describe request TLV 0x10 for WDSCreateProfile() +struct sWDSCreateProfileRequest_ProfileName +{ + // String is variable length, but must be size of the container + // char mProfileName[1]; +}; + +// Structure to describe request TLV 0x11 for WDSCreateProfile() +struct sWDSCreateProfileRequest_PDPType +{ + eQMIPDPTypes mPDPType; +}; + +// Structure to describe request TLV 0x12 for WDSCreateProfile() +struct sWDSCreateProfileRequest_PDPHeaderCompressionType +{ + eQMIWDSPDPHeaderCompressionType mPDPHeaderCompressionType; +}; + +// Structure to describe request TLV 0x13 for WDSCreateProfile() +struct sWDSCreateProfileRequest_PDPDataCompressionType +{ + eQMIWDSPDPDataCompressionType mPDPDataCompressionType; +}; + +// Structure to describe request TLV 0x14 for WDSCreateProfile() +struct sWDSCreateProfileRequest_APNName +{ + // String is variable length, but must be size of the container + // char mAPNName[1]; +}; + +// Structure to describe request TLV 0x15 for WDSCreateProfile() +struct sWDSCreateProfileRequest_PrimaryDNS +{ + UINT8 mIPV4Address[4]; +}; + +// Structure to describe request TLV 0x16 for WDSCreateProfile() +struct sWDSCreateProfileRequest_SecondaryDNS +{ + UINT8 mIPV4Address[4]; +}; + +// Structure to describe request TLV 0x17 for WDSCreateProfile() +struct sWDSCreateProfileRequest_UMTSRequestedQoS +{ + eQMITrafficClasses mTrafficClass; + UINT32 mMaxUplinkBitrate; + UINT32 mMaxDownlinkBitrate; + UINT32 mGuaranteedUplinkBitrate; + UINT32 mGuaranteedDownlinkBitrate; + eQMIQoSDeliveryOrders mQoSDeliveryOrder; + UINT32 mMaxSDUSize; + eQMISDUErrorRatios mSDUErrorRatio; + eQMISDUResidualBitErrorRatios mSDUResidualBitErrorRatio; + eQMIErroneousSDUDeliveries mErroneousSDUDelivery; + UINT32 mTransferDelay; + UINT32 mTrafficHandlingPriority; +}; + +// Structure to describe request TLV 0x18 for WDSCreateProfile() +struct sWDSCreateProfileRequest_UMTSMinimumQoS +{ + eQMITrafficClasses mTrafficClass; + UINT32 mMaxUplinkBitrate; + UINT32 mMaxDownlinkBitrate; + UINT32 mGuaranteedUplinkBitrate; + UINT32 mGuaranteedDownlinkBitrate; + eQMIQoSDeliveryOrders mQoSDeliveryOrder; + UINT32 mMaxSDUSize; + eQMISDUErrorRatios mSDUErrorRatio; + eQMISDUResidualBitErrorRatios mSDUResidualBitErrorRatio; + eQMIErroneousSDUDeliveries mErroneousSDUDelivery; + UINT32 mTransferDelay; + UINT32 mTrafficHandlingPriority; +}; + +// Structure to describe request TLV 0x19 for WDSCreateProfile() +struct sWDSCreateProfileRequest_GPRSRequestedQoS +{ + UINT32 mPrecedenceClass; + UINT32 mDelayClass; + UINT32 mReliabilityClass; + UINT32 mPeakThroughputClass; + UINT32 mMeanThroughputClass; +}; + +// Structure to describe request TLV 0x1A for WDSCreateProfile() +struct sWDSCreateProfileRequest_GPRSMinimumQoS +{ + UINT32 mPrecedenceClass; + UINT32 mDelayClass; + UINT32 mReliabilityClass; + UINT32 mPeakThroughputClass; + UINT32 mMeanThroughputClass; +}; + +// Structure to describe request TLV 0x1B for WDSCreateProfile() +struct sWDSCreateProfileRequest_Username +{ + // String is variable length, but must be size of the container + // char mUsername[1]; +}; + +// Structure to describe request TLV 0x1C for WDSCreateProfile() +struct sWDSCreateProfileRequest_Password +{ + // String is variable length, but must be size of the container + // char mPassword[1]; +}; + +// Structure to describe request TLV 0x1D for WDSCreateProfile() +struct sWDSCreateProfileRequest_Authentication +{ + bool mEnablePAP:1; + bool mEnableCHAP:1; + + // Padding out 6 bits + UINT8 mReserved1:6; +}; + +// Structure to describe request TLV 0x1E for WDSCreateProfile() +struct sWDSCreateProfileRequest_IPAddress +{ + UINT8 mIPV4Address[4]; +}; + +// Structure to describe request TLV 0x1F for WDSCreateProfile() +struct sWDSCreateProfileRequest_PCSCF +{ + INT8 mPCSCFAddressUsingPCO; +}; + +// Structure to describe request TLV 0x20 for WDSCreateProfile() +struct sWDSCreateProfileRequest_PDPAccessControlFlag +{ + eQMIWDSPDPAccessControlFlag mPDPAccessControlFlag; +}; + +// Structure to describe request TLV 0x21 for WDSCreateProfile() +struct sWDSCreateProfileRequest_PCSCFAddressUsingDHCP +{ + INT8 mPCSCFAddressUsingDHCP; +}; + +// Structure to describe request TLV 0x22 for WDSCreateProfile() +struct sWDSCreateProfileRequest_IMCNFlag +{ + INT8 mIMCN; +}; + +// Structure to describe request TLV 0x23 for WDSCreateProfile() +struct sWDSCreateProfileRequest_TrafficFlowTemplateID1Parameters +{ + UINT8 mFilterID; + UINT8 mEvaluationID; + eQMIWDSIPVersion mIPVersion; + + // The following union is based on the value of mIPVersion + union uValOfIPVersion + { + // If the value of mIPVersion == 4 + struct sIPVersionIs4 + { + UINT8 mIPV4Address[4]; + }; + + sIPVersionIs4 mIPVersionIs4; + + // If the value of mIPVersion == 6 + struct sIPVersionIs6 + { + UINT16 mIPv6Address[8]; + }; + + sIPVersionIs6 mIPVersionIs6; + + // Padding out 128 bits + UINT8 mReserved1[16]; + }; + + uValOfIPVersion mValOfIPVersion; + + UINT8 mSourceIPMask; + UINT8 mNextHeader; + UINT16 mDestinationPortRangeStart; + UINT16 mDestinationPortRangeEnd; + UINT16 mSourcePortRangeStart; + UINT16 mSourcePortRangeEnd; + UINT32 mIPSECSecurityParameterIndex; + UINT16 mTOSMask; + UINT32 mFlowLabel; +}; + +// Structure to describe request TLV 0x24 for WDSCreateProfile() +struct sWDSCreateProfileRequest_TrafficFlowTemplateID2Parameters +{ + UINT8 mFilterID; + UINT8 mEvaluationID; + eQMIWDSIPVersion mIPVersion; + + // The following union is based on the value of mIPVersion + union uValOfIPVersion + { + // If the value of mIPVersion == 4 + struct sIPVersionIs4 + { + UINT8 mIPV4Address[4]; + }; + + sIPVersionIs4 mIPVersionIs4; + + // If the value of mIPVersion == 6 + struct sIPVersionIs6 + { + UINT16 mIPv6Address[8]; + }; + + sIPVersionIs6 mIPVersionIs6; + + // Padding out 128 bits + UINT8 mReserved1[16]; + }; + + uValOfIPVersion mValOfIPVersion; + + UINT8 mSourceIPMask; + UINT8 mNextHeader; + UINT16 mDestinationPortRangeStart; + UINT16 mDestinationPortRangeEnd; + UINT16 mSourcePortRangeStart; + UINT16 mSourcePortRangeEnd; + UINT32 mIPSECSecurityParameterIndex; + UINT16 mTOSMask; + UINT32 mFlowLabel; +}; + +// Structure to describe request TLV 0x25 for WDSCreateProfile() +struct sWDSCreateProfileRequest_PDPContextNumber +{ + UINT8 mPDPContextNumber; +}; + +// Structure to describe request TLV 0x26 for WDSCreateProfile() +struct sWDSCreateProfileRequest_PDPContextSecondaryFlag +{ + INT8 mPDPContextSecondaryFlag; +}; + +// Structure to describe request TLV 0x27 for WDSCreateProfile() +struct sWDSCreateProfileRequest_PDPContextPrimaryID +{ + UINT8 mPDPPrimaryID; +}; + +// Structure to describe request TLV 0x28 for WDSCreateProfile() +struct sWDSCreateProfileRequest_IPv6Address +{ + UINT16 mIPv6Address[8]; +}; + +// Structure to describe request TLV 0x29 for WDSCreateProfile() +struct sWDSCreateProfileRequest_RequestedQoS +{ + eQMITrafficClasses mTrafficClass; + UINT32 mMaxUplinkBitrate; + UINT32 mMaxDownlinkBitrate; + UINT32 mGuaranteedUplinkBitrate; + UINT32 mGuaranteedDownlinkBitrate; + eQMIQoSDeliveryOrders mQoSDeliveryOrder; + UINT32 mMaxSDUSize; + eQMISDUErrorRatios mSDUErrorRatio; + eQMISDUResidualBitErrorRatios mSDUResidualBitErrorRatio; + eQMIErroneousSDUDeliveries mErroneousSDUDelivery; + UINT32 mTransferDelay; + UINT32 mTrafficHandlingPriority; + INT8 mSignalingIndication; +}; + +// Structure to describe request TLV 0x2A for WDSCreateProfile() +struct sWDSCreateProfileRequest_MinimumQoS +{ + eQMITrafficClasses mTrafficClass; + UINT32 mMaxUplinkBitrate; + UINT32 mMaxDownlinkBitrate; + UINT32 mGuaranteedUplinkBitrate; + UINT32 mGuaranteedDownlinkBitrate; + eQMIQoSDeliveryOrders mQoSDeliveryOrder; + UINT32 mMaxSDUSize; + eQMISDUErrorRatios mSDUErrorRatio; + eQMISDUResidualBitErrorRatios mSDUResidualBitErrorRatio; + eQMIErroneousSDUDeliveries mErroneousSDUDelivery; + UINT32 mTransferDelay; + UINT32 mTrafficHandlingPriority; + INT8 mSignalingIndication; +}; + +// Structure to describe request TLV 0x2B for WDSCreateProfile() +struct sWDSCreateProfileRequest_PrimaryIPv6 +{ + UINT16 mIPv6Address[8]; +}; + +// Structure to describe request TLV 0x2C for WDSCreateProfile() +struct sWDSCreateProfileRequest_SecondaryIPv6 +{ + UINT16 mIPv6Address[8]; +}; + +// Structure to describe request TLV 0x2D for WDSCreateProfile() +struct sWDSCreateProfileRequest_AddressPreference +{ + eQMIWDSAddressAllocationPreference mAddressAllocationPreference; +}; + +// Structure to describe request TLV 0x2E for WDSCreateProfile() +struct sWDSCreateProfileRequest_LTEQoSParameters +{ + eQMIWDSQoSClassIdentifier mQoSClassIdentifier; + UINT32 mGuaranteedDownlinkBitrate; + UINT32 mMaxDownlinkBitrate; + UINT32 mGuaranteedUplinkBitrate; + UINT32 mMaxUplinkBitrate; +}; + +// Structure to describe request TLV 0x2F for WDSCreateProfile() +struct sWDSCreateProfileRequest_APNDisabled +{ + INT8 mAPNDisabled; +}; + +// Structure to describe request TLV 0x30 for WDSCreateProfile() +struct sWDSCreateProfileRequest_PDNInactivityTimer +{ + UINT32 mPDNInactivityTimerSeconds; +}; + +// Structure to describe request TLV 0x31 for WDSCreateProfile() +struct sWDSCreateProfileRequest_APNClass +{ + UINT8 mAPNClass; +}; + +// Structure to describe request TLV 0x35 for WDSCreateProfile() +struct sWDSCreateProfileRequest_APNBearer +{ + bool mGSM:1; + bool mWCDMA:1; + bool mLTE:1; + + // Padding out 60 bits + UINT8 mReserved1:5; + UINT8 mReserved2[6]; + UINT8 mReserved3:7; + + bool mAny:1; +}; + +// Structure to describe request TLV 0x36 for WDSCreateProfile() +struct sWDSCreateProfileRequest_SupportEmergencyCalls +{ + INT8 mSupportEmergencyCalls; +}; + +// Structure to describe request TLV 0x37 for WDSCreateProfile() +struct sWDSCreateProfileRequest_PCOContainerID +{ + UINT16 mPCOContainerID; +}; + +// Structure to describe request TLV 0x38 for WDSCreateProfile() +struct sWDSCreateProfileRequest_MCC +{ + UINT16 mMobileCountryCode; +}; + +// Structure to describe request TLV 0x39 for WDSCreateProfile() +struct sWDSCreateProfileRequest_MNC +{ + UINT16 mMobileNetworkCode; + INT8 mMNCIncludesPCSDigit; +}; + +// Structure to describe request TLV 0x8F for WDSCreateProfile() +struct sWDSCreateProfileRequest_ProfilePersistent +{ + INT8 mProfilePersistent; +}; + +// Structure to describe request TLV 0x90 for WDSCreateProfile() +struct sWDSCreateProfileRequest_NegotiateDNSServerPreference +{ + INT8 mNegotiateDNSServerPreference; +}; + +// Structure to describe request TLV 0x91 for WDSCreateProfile() +struct sWDSCreateProfileRequest_PPPSessionCloseTimerDO +{ + UINT32 mPPPSessionCloseTimerDOSeconds; +}; + +// Structure to describe request TLV 0x92 for WDSCreateProfile() +struct sWDSCreateProfileRequest_PPPSessionCloseTimer1X +{ + UINT32 mPPPSessionCloseTimer1XSeconds; +}; + +// Structure to describe request TLV 0x93 for WDSCreateProfile() +struct sWDSCreateProfileRequest_AllowLinger +{ + INT8 mAllowLinger; +}; + +// Structure to describe request TLV 0x94 for WDSCreateProfile() +struct sWDSCreateProfileRequest_LCPACKTimeout +{ + UINT16 mTimeoutMilliseconds; +}; + +// Structure to describe request TLV 0x95 for WDSCreateProfile() +struct sWDSCreateProfileRequest_IPCPACKTimeout +{ + UINT16 mTimeoutMilliseconds; +}; + +// Structure to describe request TLV 0x96 for WDSCreateProfile() +struct sWDSCreateProfileRequest_AuthenticationTimeout +{ + UINT16 mTimeoutMilliseconds; +}; + +// Structure to describe request TLV 0x97 for WDSCreateProfile() +struct sWDSCreateProfileRequest_LCPConfigRetryCount +{ + UINT8 mRetryCount; +}; + +// Structure to describe request TLV 0x98 for WDSCreateProfile() +struct sWDSCreateProfileRequest_IPCPConfigRetryCount +{ + UINT8 mRetryCount; +}; + +// Structure to describe request TLV 0x99 for WDSCreateProfile() +struct sWDSCreateProfileRequest_AuthenticationRetry +{ + UINT8 mRetryCount; +}; + +// Structure to describe request TLV 0x9A for WDSCreateProfile() +struct sWDSCreateProfileRequest_AuthenticationProtocol +{ + eQMIWDSAuthenticationProtocol mAuthenticationProtocol; +}; + +// Structure to describe request TLV 0x9B for WDSCreateProfile() +struct sWDSCreateProfileRequest_UserID +{ + // String is variable length, but must be size of the container + // char mUsername[1]; +}; + +// Structure to describe request TLV 0x9C for WDSCreateProfile() +struct sWDSCreateProfileRequest_AuthenticationPassword +{ + // String is variable length, but must be size of the container + // char mPassword[1]; +}; + +// Structure to describe request TLV 0x9D for WDSCreateProfile() +struct sWDSCreateProfileRequest_DataRate +{ + eQMIWDSDataRate mDataRate; +}; + +// Structure to describe request TLV 0x9E for WDSCreateProfile() +struct sWDSCreateProfileRequest_ApplicationType +{ + eQMIWDSApplicationType mApplicationType; +}; + +// Structure to describe request TLV 0x9F for WDSCreateProfile() +struct sWDSCreateProfileRequest_DataMode +{ + eQMIWDSDataMode mDataMode; +}; + +// Structure to describe request TLV 0xA0 for WDSCreateProfile() +struct sWDSCreateProfileRequest_ApplicationPriority +{ + UINT8 mApplicationPriority; +}; + +// Structure to describe request TLV 0xA1 for WDSCreateProfile() +struct sWDSCreateProfileRequest_APNString +{ + // String is variable length, but must be size of the container + // char mAPNName[1]; +}; + +// Structure to describe request TLV 0xA2 for WDSCreateProfile() +struct sWDSCreateProfileRequest_PDNType +{ + eQMIWDSPDNType mPDNType; +}; + +// Structure to describe request TLV 0xA3 for WDSCreateProfile() +struct sWDSCreateProfileRequest_PCSCFAddressNeeded +{ + INT8 mPCSCFAddressNeeded; +}; + +// Structure to describe request TLV 0xA4 for WDSCreateProfile() +struct sWDSCreateProfileRequest_PrimaryIPv4Address +{ + UINT8 mIPV4Address[4]; +}; + +// Structure to describe request TLV 0xA5 for WDSCreateProfile() +struct sWDSCreateProfileRequest_SecondaryIPv4Address +{ + UINT8 mIPV4Address[4]; +}; + +// Structure to describe request TLV 0xA6 for WDSCreateProfile() +struct sWDSCreateProfileRequest_PrimaryIPv6Address +{ + UINT16 mIPv6Address[8]; +}; + +// Structure to describe request TLV 0xA7 for WDSCreateProfile() +struct sWDSCreateProfileRequest_SecondaryIPv6Address +{ + UINT16 mIPv6Address[8]; +}; + +// Structure to describe request TLV 0xA8 for WDSCreateProfile() +struct sWDSCreateProfileRequest_RATType +{ + eQMIWDS3GPP2RATTypes mRATType; +}; + +// Structure to describe request TLV 0xA9 for WDSCreateProfile() +struct sWDSCreateProfileRequest_3GPP2APNEnabled +{ + INT8 mAPNEnabled; +}; + +// Structure to describe request TLV 0xAA for WDSCreateProfile() +struct sWDSCreateProfileRequest_3GPP2PDNInactivityTimer +{ + UINT32 mPDNInactivityTimerMinutes; +}; + +// Structure to describe request TLV 0xAB for WDSCreateProfile() +struct sWDSCreateProfileRequest_3GPP2APNClass +{ + UINT8 mAPNClass; +}; + +// Structure to describe request TLV 0xAD for WDSCreateProfile() +struct sWDSCreateProfileRequest_PDNAuthenticationProtocol +{ + eQMIWDSAuthenticationProtocol mAuthenticationProtocol; +}; + +// Structure to describe request TLV 0xAE for WDSCreateProfile() +struct sWDSCreateProfileRequest_PDNUserID +{ + // String is variable length, but must be size of the container + // char mUserID[1]; +}; + +// Structure to describe request TLV 0xAF for WDSCreateProfile() +struct sWDSCreateProfileRequest_PDNPassword +{ + // String is variable length, but must be size of the container + // char mPassword[1]; +}; + +// Structure to describe request TLV 0xB0 for WDSCreateProfile() +struct sWDSCreateProfileRequest_PDNLabel +{ + // String is variable length, but must be size of the container + // char mLabel[1]; +}; + +// Structure to describe request TLV 0xBD for WDSCreateProfile() +struct sWDSCreateProfileRequest_3GPP2PCOContainerID +{ + UINT16 mPCOContainerID; +}; + +// Structure to describe request TLV 0xBE for WDSCreateProfile() +struct sWDSCreateProfileRequest_3GPP2MCC +{ + UINT16 mMobileCountryCode; +}; + +// Structure to describe request TLV 0xBF for WDSCreateProfile() +struct sWDSCreateProfileRequest_3GPP2MNC +{ + UINT16 mMobileNetworkCode; + INT8 mMNCIncludesPCSDigit; +}; + +// Structure to describe request TLV 0xC0 for WDSCreateProfile() +struct sWDSCreateProfileRequest_PDNThrottlingTimer +{ + UINT32 mFailureTimerInSeconds; +}; + +// Structure to describe request TLV 0xC1 for WDSCreateProfile() +struct sWDSCreateProfileRequest_PDNDisallowTimer +{ + UINT32 mDisallowTimerInSeconds; +}; + +// Structure to describe response TLV 0x01 for WDSCreateProfile() +struct sWDSCreateProfileResponse_ProfileIdentifier +{ + eQMIProfileTypes mProfileType; + UINT8 mProfileIndex; +}; + +// Structure to describe response TLV 0xE0 for WDSCreateProfile() +struct sWDSCreateProfileResponse_ExtendedErrorCode +{ + eQMIWDSExtendedErrorCode mExtendedErrorCode; +}; + +// Structure to describe request TLV 0x01 for WDSModifyProfile() +struct sWDSModifyProfileRequest_ProfileIdentifier +{ + eQMIProfileTypes mProfileType; + UINT8 mProfileIndex; +}; + +// Structure to describe request TLV 0x10 for WDSModifyProfile() +struct sWDSModifyProfileRequest_ProfileName +{ + // String is variable length, but must be size of the container + // char mProfileName[1]; +}; + +// Structure to describe request TLV 0x11 for WDSModifyProfile() +struct sWDSModifyProfileRequest_PDPType +{ + eQMIPDPTypes mPDPType; +}; + +// Structure to describe request TLV 0x12 for WDSModifyProfile() +struct sWDSModifyProfileRequest_PDPHeaderCompressionType +{ + eQMIWDSPDPHeaderCompressionType mPDPHeaderCompressionType; +}; + +// Structure to describe request TLV 0x13 for WDSModifyProfile() +struct sWDSModifyProfileRequest_PDPDataCompressionType +{ + eQMIWDSPDPDataCompressionType mPDPDataCompressionType; +}; + +// Structure to describe request TLV 0x14 for WDSModifyProfile() +struct sWDSModifyProfileRequest_APNName +{ + // String is variable length, but must be size of the container + // char mAPNName[1]; +}; + +// Structure to describe request TLV 0x15 for WDSModifyProfile() +struct sWDSModifyProfileRequest_PrimaryDNS +{ + UINT8 mIPV4Address[4]; +}; + +// Structure to describe request TLV 0x16 for WDSModifyProfile() +struct sWDSModifyProfileRequest_SecondaryDNS +{ + UINT8 mIPV4Address[4]; +}; + +// Structure to describe request TLV 0x17 for WDSModifyProfile() +struct sWDSModifyProfileRequest_UMTSRequestedQoS +{ + eQMITrafficClasses mTrafficClass; + UINT32 mMaxUplinkBitrate; + UINT32 mMaxDownlinkBitrate; + UINT32 mGuaranteedUplinkBitrate; + UINT32 mGuaranteedDownlinkBitrate; + eQMIQoSDeliveryOrders mQoSDeliveryOrder; + UINT32 mMaxSDUSize; + eQMISDUErrorRatios mSDUErrorRatio; + eQMISDUResidualBitErrorRatios mSDUResidualBitErrorRatio; + eQMIErroneousSDUDeliveries mErroneousSDUDelivery; + UINT32 mTransferDelay; + UINT32 mTrafficHandlingPriority; +}; + +// Structure to describe request TLV 0x18 for WDSModifyProfile() +struct sWDSModifyProfileRequest_UMTSMinimumQoS +{ + eQMITrafficClasses mTrafficClass; + UINT32 mMaxUplinkBitrate; + UINT32 mMaxDownlinkBitrate; + UINT32 mGuaranteedUplinkBitrate; + UINT32 mGuaranteedDownlinkBitrate; + eQMIQoSDeliveryOrders mQoSDeliveryOrder; + UINT32 mMaxSDUSize; + eQMISDUErrorRatios mSDUErrorRatio; + eQMISDUResidualBitErrorRatios mSDUResidualBitErrorRatio; + eQMIErroneousSDUDeliveries mErroneousSDUDelivery; + UINT32 mTransferDelay; + UINT32 mTrafficHandlingPriority; +}; + +// Structure to describe request TLV 0x19 for WDSModifyProfile() +struct sWDSModifyProfileRequest_GPRSRequestedQoS +{ + UINT32 mPrecedenceClass; + UINT32 mDelayClass; + UINT32 mReliabilityClass; + UINT32 mPeakThroughputClass; + UINT32 mMeanThroughputClass; +}; + +// Structure to describe request TLV 0x1A for WDSModifyProfile() +struct sWDSModifyProfileRequest_GPRSMinimumQoS +{ + UINT32 mPrecedenceClass; + UINT32 mDelayClass; + UINT32 mReliabilityClass; + UINT32 mPeakThroughputClass; + UINT32 mMeanThroughputClass; +}; + +// Structure to describe request TLV 0x1B for WDSModifyProfile() +struct sWDSModifyProfileRequest_Username +{ + // String is variable length, but must be size of the container + // char mUsername[1]; +}; + +// Structure to describe request TLV 0x1C for WDSModifyProfile() +struct sWDSModifyProfileRequest_Password +{ + // String is variable length, but must be size of the container + // char mPassword[1]; +}; + +// Structure to describe request TLV 0x1D for WDSModifyProfile() +struct sWDSModifyProfileRequest_Authentication +{ + bool mEnablePAP:1; + bool mEnableCHAP:1; + + // Padding out 6 bits + UINT8 mReserved1:6; +}; + +// Structure to describe request TLV 0x1E for WDSModifyProfile() +struct sWDSModifyProfileRequest_IPAddress +{ + UINT8 mIPV4Address[4]; +}; + +// Structure to describe request TLV 0x1F for WDSModifyProfile() +struct sWDSModifyProfileRequest_PCSCF +{ + INT8 mPCSCFAddressUsingPCO; +}; + +// Structure to describe request TLV 0x20 for WDSModifyProfile() +struct sWDSModifyProfileRequest_PDPAccessControlFlag +{ + eQMIWDSPDPAccessControlFlag mPDPAccessControlFlag; +}; + +// Structure to describe request TLV 0x21 for WDSModifyProfile() +struct sWDSModifyProfileRequest_PCSCFAddressUsingDHCP +{ + INT8 mPCSCFAddressUsingDHCP; +}; + +// Structure to describe request TLV 0x22 for WDSModifyProfile() +struct sWDSModifyProfileRequest_IMCNFlag +{ + INT8 mIMCN; +}; + +// Structure to describe request TLV 0x23 for WDSModifyProfile() +struct sWDSModifyProfileRequest_TrafficFlowTemplateID1Parameters +{ + UINT8 mFilterID; + UINT8 mEvaluationID; + eQMIWDSIPVersion mIPVersion; + + // The following union is based on the value of mIPVersion + union uValOfIPVersion + { + // If the value of mIPVersion == 4 + struct sIPVersionIs4 + { + UINT8 mIPV4Address[4]; + }; + + sIPVersionIs4 mIPVersionIs4; + + // If the value of mIPVersion == 6 + struct sIPVersionIs6 + { + UINT16 mIPv6Address[8]; + }; + + sIPVersionIs6 mIPVersionIs6; + + // Padding out 128 bits + UINT8 mReserved1[16]; + }; + + uValOfIPVersion mValOfIPVersion; + + UINT8 mSourceIPMask; + UINT8 mNextHeader; + UINT16 mDestinationPortRangeStart; + UINT16 mDestinationPortRangeEnd; + UINT16 mSourcePortRangeStart; + UINT16 mSourcePortRangeEnd; + UINT32 mIPSECSecurityParameterIndex; + UINT16 mTOSMask; + UINT32 mFlowLabel; +}; + +// Structure to describe request TLV 0x24 for WDSModifyProfile() +struct sWDSModifyProfileRequest_TrafficFlowTemplateID2Parameters +{ + UINT8 mFilterID; + UINT8 mEvaluationID; + eQMIWDSIPVersion mIPVersion; + + // The following union is based on the value of mIPVersion + union uValOfIPVersion + { + // If the value of mIPVersion == 4 + struct sIPVersionIs4 + { + UINT8 mIPV4Address[4]; + }; + + sIPVersionIs4 mIPVersionIs4; + + // If the value of mIPVersion == 6 + struct sIPVersionIs6 + { + UINT16 mIPv6Address[8]; + }; + + sIPVersionIs6 mIPVersionIs6; + + // Padding out 128 bits + UINT8 mReserved1[16]; + }; + + uValOfIPVersion mValOfIPVersion; + + UINT8 mSourceIPMask; + UINT8 mNextHeader; + UINT16 mDestinationPortRangeStart; + UINT16 mDestinationPortRangeEnd; + UINT16 mSourcePortRangeStart; + UINT16 mSourcePortRangeEnd; + UINT32 mIPSECSecurityParameterIndex; + UINT16 mTOSMask; + UINT32 mFlowLabel; +}; + +// Structure to describe request TLV 0x25 for WDSModifyProfile() +struct sWDSModifyProfileRequest_PDPContextNumber +{ + UINT8 mPDPContextNumber; +}; + +// Structure to describe request TLV 0x26 for WDSModifyProfile() +struct sWDSModifyProfileRequest_PDPContextSecondaryFlag +{ + INT8 mPDPContextSecondaryFlag; +}; + +// Structure to describe request TLV 0x27 for WDSModifyProfile() +struct sWDSModifyProfileRequest_PDPContextPrimaryID +{ + UINT8 mPDPPrimaryID; +}; + +// Structure to describe request TLV 0x28 for WDSModifyProfile() +struct sWDSModifyProfileRequest_IPv6Address +{ + UINT16 mIPv6Address[8]; +}; + +// Structure to describe request TLV 0x29 for WDSModifyProfile() +struct sWDSModifyProfileRequest_RequestedQoS +{ + eQMITrafficClasses mTrafficClass; + UINT32 mMaxUplinkBitrate; + UINT32 mMaxDownlinkBitrate; + UINT32 mGuaranteedUplinkBitrate; + UINT32 mGuaranteedDownlinkBitrate; + eQMIQoSDeliveryOrders mQoSDeliveryOrder; + UINT32 mMaxSDUSize; + eQMISDUErrorRatios mSDUErrorRatio; + eQMISDUResidualBitErrorRatios mSDUResidualBitErrorRatio; + eQMIErroneousSDUDeliveries mErroneousSDUDelivery; + UINT32 mTransferDelay; + UINT32 mTrafficHandlingPriority; + INT8 mSignalingIndication; +}; + +// Structure to describe request TLV 0x2A for WDSModifyProfile() +struct sWDSModifyProfileRequest_MinimumQoS +{ + eQMITrafficClasses mTrafficClass; + UINT32 mMaxUplinkBitrate; + UINT32 mMaxDownlinkBitrate; + UINT32 mGuaranteedUplinkBitrate; + UINT32 mGuaranteedDownlinkBitrate; + eQMIQoSDeliveryOrders mQoSDeliveryOrder; + UINT32 mMaxSDUSize; + eQMISDUErrorRatios mSDUErrorRatio; + eQMISDUResidualBitErrorRatios mSDUResidualBitErrorRatio; + eQMIErroneousSDUDeliveries mErroneousSDUDelivery; + UINT32 mTransferDelay; + UINT32 mTrafficHandlingPriority; + INT8 mSignalingIndication; +}; + +// Structure to describe request TLV 0x2B for WDSModifyProfile() +struct sWDSModifyProfileRequest_PrimaryIPv6 +{ + UINT16 mIPv6Address[8]; +}; + +// Structure to describe request TLV 0x2C for WDSModifyProfile() +struct sWDSModifyProfileRequest_SecondaryIPv6 +{ + UINT16 mIPv6Address[8]; +}; + +// Structure to describe request TLV 0x2D for WDSModifyProfile() +struct sWDSModifyProfileRequest_AddressPreference +{ + eQMIWDSAddressAllocationPreference mAddressAllocationPreference; +}; + +// Structure to describe request TLV 0x2E for WDSModifyProfile() +struct sWDSModifyProfileRequest_LTEQoSParameters +{ + eQMIWDSQoSClassIdentifier mQoSClassIdentifier; + UINT32 mGuaranteedDownlinkBitrate; + UINT32 mMaxDownlinkBitrate; + UINT32 mGuaranteedUplinkBitrate; + UINT32 mMaxUplinkBitrate; +}; + +// Structure to describe request TLV 0x2F for WDSModifyProfile() +struct sWDSModifyProfileRequest_APNDisabled +{ + INT8 mAPNDisabled; +}; + +// Structure to describe request TLV 0x30 for WDSModifyProfile() +struct sWDSModifyProfileRequest_PDNInactivityTimer +{ + UINT32 mPDNInactivityTimerSeconds; +}; + +// Structure to describe request TLV 0x31 for WDSModifyProfile() +struct sWDSModifyProfileRequest_APNClass +{ + UINT8 mAPNClass; +}; + +// Structure to describe request TLV 0x35 for WDSModifyProfile() +struct sWDSModifyProfileRequest_APNBearer +{ + bool mGSM:1; + bool mWCDMA:1; + bool mLTE:1; + + // Padding out 60 bits + UINT8 mReserved1:5; + UINT8 mReserved2[6]; + UINT8 mReserved3:7; + + bool mAny:1; +}; + +// Structure to describe request TLV 0x36 for WDSModifyProfile() +struct sWDSModifyProfileRequest_SupportEmergencyCalls +{ + INT8 mSupportEmergencyCalls; +}; + +// Structure to describe request TLV 0x37 for WDSModifyProfile() +struct sWDSModifyProfileRequest_PCOContainerID +{ + UINT16 mPCOContainerID; +}; + +// Structure to describe request TLV 0x38 for WDSModifyProfile() +struct sWDSModifyProfileRequest_MCC +{ + UINT16 mMobileCountryCode; +}; + +// Structure to describe request TLV 0x39 for WDSModifyProfile() +struct sWDSModifyProfileRequest_MNC +{ + UINT16 mMobileNetworkCode; + INT8 mMNCIncludesPCSDigit; +}; + +// Structure to describe request TLV 0x90 for WDSModifyProfile() +struct sWDSModifyProfileRequest_NegotiateDNSServerPrefrence +{ + INT8 mNegotiateDNSServerPreference; +}; + +// Structure to describe request TLV 0x91 for WDSModifyProfile() +struct sWDSModifyProfileRequest_PPPSessionCloseTimerDO +{ + UINT32 mPPPSessionCloseTimerDOSeconds; +}; + +// Structure to describe request TLV 0x92 for WDSModifyProfile() +struct sWDSModifyProfileRequest_PPPSessionCloseTimer1X +{ + UINT32 mPPPSessionCloseTimer1XSeconds; +}; + +// Structure to describe request TLV 0x93 for WDSModifyProfile() +struct sWDSModifyProfileRequest_AllowLinger +{ + INT8 mAllowLinger; +}; + +// Structure to describe request TLV 0x94 for WDSModifyProfile() +struct sWDSModifyProfileRequest_LCPACKTimeout +{ + UINT16 mTimeoutMilliseconds; +}; + +// Structure to describe request TLV 0x95 for WDSModifyProfile() +struct sWDSModifyProfileRequest_IPCPACKTimeout +{ + UINT16 mTimeoutMilliseconds; +}; + +// Structure to describe request TLV 0x96 for WDSModifyProfile() +struct sWDSModifyProfileRequest_AuthenticationTimeout +{ + UINT16 mTimeoutMilliseconds; +}; + +// Structure to describe request TLV 0x97 for WDSModifyProfile() +struct sWDSModifyProfileRequest_LCPConfigRetryCount +{ + UINT8 mRetryCount; +}; + +// Structure to describe request TLV 0x98 for WDSModifyProfile() +struct sWDSModifyProfileRequest_IPCPConfigRetryCount +{ + UINT8 mRetryCount; +}; + +// Structure to describe request TLV 0x99 for WDSModifyProfile() +struct sWDSModifyProfileRequest_AuthenticationRetry +{ + UINT8 mRetryCount; +}; + +// Structure to describe request TLV 0x9A for WDSModifyProfile() +struct sWDSModifyProfileRequest_AuthenticationProtocol +{ + eQMIWDSAuthenticationProtocol mAuthenticationProtocol; +}; + +// Structure to describe request TLV 0x9B for WDSModifyProfile() +struct sWDSModifyProfileRequest_UserID +{ + // String is variable length, but must be size of the container + // char mUsername[1]; +}; + +// Structure to describe request TLV 0x9C for WDSModifyProfile() +struct sWDSModifyProfileRequest_AuthenticationPassword +{ + // String is variable length, but must be size of the container + // char mPassword[1]; +}; + +// Structure to describe request TLV 0x9D for WDSModifyProfile() +struct sWDSModifyProfileRequest_DataRate +{ + eQMIWDSDataRate mDataRate; +}; + +// Structure to describe request TLV 0x9E for WDSModifyProfile() +struct sWDSModifyProfileRequest_ApplicationType +{ + eQMIWDSApplicationType mApplicationType; +}; + +// Structure to describe request TLV 0x9F for WDSModifyProfile() +struct sWDSModifyProfileRequest_DataMode +{ + eQMIWDSDataMode mDataMode; +}; + +// Structure to describe request TLV 0xA0 for WDSModifyProfile() +struct sWDSModifyProfileRequest_ApplicationPriority +{ + UINT8 mApplicationPriority; +}; + +// Structure to describe request TLV 0xA1 for WDSModifyProfile() +struct sWDSModifyProfileRequest_APNString +{ + // String is variable length, but must be size of the container + // char mAPNName[1]; +}; + +// Structure to describe request TLV 0xA2 for WDSModifyProfile() +struct sWDSModifyProfileRequest_PDNType +{ + eQMIWDSPDNType mPDNType; +}; + +// Structure to describe request TLV 0xA3 for WDSModifyProfile() +struct sWDSModifyProfileRequest_PCSCFAddressNeeded +{ + INT8 mPCSCFAddressNeeded; +}; + +// Structure to describe request TLV 0xA4 for WDSModifyProfile() +struct sWDSModifyProfileRequest_PrimaryIPv4Address +{ + UINT8 mIPV4Address[4]; +}; + +// Structure to describe request TLV 0xA5 for WDSModifyProfile() +struct sWDSModifyProfileRequest_SecondaryIPv4Address +{ + UINT8 mIPV4Address[4]; +}; + +// Structure to describe request TLV 0xA6 for WDSModifyProfile() +struct sWDSModifyProfileRequest_PrimaryIPv6Address +{ + UINT16 mIPv6Address[8]; +}; + +// Structure to describe request TLV 0xA7 for WDSModifyProfile() +struct sWDSModifyProfileRequest_SecondaryIPv6Address +{ + UINT16 mIPv6Address[8]; +}; + +// Structure to describe request TLV 0xA8 for WDSModifyProfile() +struct sWDSModifyProfileRequest_RATType +{ + eQMIWDS3GPP2RATTypes mRATType; +}; + +// Structure to describe request TLV 0xA9 for WDSModifyProfile() +struct sWDSModifyProfileRequest_3GPP2APNEnabled +{ + INT8 mAPNEnabled; +}; + +// Structure to describe request TLV 0xAA for WDSModifyProfile() +struct sWDSModifyProfileRequest_3GPP2PDNInactivityTimer +{ + UINT32 mPDNInactivityTimerMinutes; +}; + +// Structure to describe request TLV 0xAB for WDSModifyProfile() +struct sWDSModifyProfileRequest_3GPP2APNClass +{ + UINT8 mAPNClass; +}; + +// Structure to describe request TLV 0xAD for WDSModifyProfile() +struct sWDSModifyProfileRequest_PDNAuthenticationProtocol +{ + eQMIWDSAuthenticationProtocol mAuthenticationProtocol; +}; + +// Structure to describe request TLV 0xAE for WDSModifyProfile() +struct sWDSModifyProfileRequest_PDNUserID +{ + // String is variable length, but must be size of the container + // char mUserID[1]; +}; + +// Structure to describe request TLV 0xAF for WDSModifyProfile() +struct sWDSModifyProfileRequest_PDNPassword +{ + // String is variable length, but must be size of the container + // char mPassword[1]; +}; + +// Structure to describe request TLV 0xB0 for WDSModifyProfile() +struct sWDSModifyProfileRequest_PDNLabel +{ + // String is variable length, but must be size of the container + // char mLabel[1]; +}; + +// Structure to describe request TLV 0xBD for WDSModifyProfile() +struct sWDSModifyProfileRequest_3GPP2PCOContainerID +{ + UINT16 mPCOContainerID; +}; + +// Structure to describe request TLV 0xBE for WDSModifyProfile() +struct sWDSModifyProfileRequest_3GPP2MCC +{ + UINT16 mMobileCountryCode; +}; + +// Structure to describe request TLV 0xBF for WDSModifyProfile() +struct sWDSModifyProfileRequest_3GPP2MNC +{ + UINT16 mMobileNetworkCode; + INT8 mMNCIncludesPCSDigit; +}; + +// Structure to describe request TLV 0xC0 for WDSModifyProfile() +struct sWDSModifyProfileRequest_PDNThrottlingTimer +{ + UINT32 mFailureTimerInSeconds; +}; + +// Structure to describe request TLV 0xC1 for WDSModifyProfile() +struct sWDSModifyProfileRequest_PDNDisallowTimer +{ + UINT32 mDisallowTimerInSeconds; +}; + +// Structure to describe response TLV 0xE0 for WDSModifyProfile() +struct sWDSModifyProfileResponse_ExtendedErrorCode +{ + eQMIWDSExtendedErrorCode mExtendedErrorCode; +}; + +// Structure to describe request TLV 0x01 for WDSDeleteProfile() +struct sWDSDeleteProfileRequest_ProfileIdentifier +{ + eQMIProfileTypes mProfileType; + UINT8 mProfileIndex; +}; + +// Structure to describe response TLV 0xE0 for WDSDeleteProfile() +struct sWDSDeleteProfileResponse_ExtendedErrorCode +{ + eQMIWDSExtendedErrorCode mExtendedErrorCode; +}; + +// Structure to describe request TLV 0x10 for WDSGetProfileList() +struct sWDSGetProfileListRequest_ProfileName +{ + // String is variable length, but must be size of the container + // char mProfileName[1]; +}; + +// Structure to describe request TLV 0x11 for WDSGetProfileList() +struct sWDSGetProfileListRequest_PDPType +{ + eQMIPDPTypes mPDPType; +}; + +// Structure to describe request TLV 0x12 for WDSGetProfileList() +struct sWDSGetProfileListRequest_PDPHeaderCompressionType +{ + eQMIWDSPDPHeaderCompressionType mPDPHeaderCompressionType; +}; + +// Structure to describe request TLV 0x13 for WDSGetProfileList() +struct sWDSGetProfileListRequest_PDPDataCompressionType +{ + eQMIWDSPDPDataCompressionType mPDPDataCompressionType; +}; + +// Structure to describe request TLV 0x14 for WDSGetProfileList() +struct sWDSGetProfileListRequest_APNName +{ + // String is variable length, but must be size of the container + // char mAPNName[1]; +}; + +// Structure to describe request TLV 0x15 for WDSGetProfileList() +struct sWDSGetProfileListRequest_PrimaryDNS +{ + UINT8 mIPV4Address[4]; +}; + +// Structure to describe request TLV 0x16 for WDSGetProfileList() +struct sWDSGetProfileListRequest_SecondaryDNS +{ + UINT8 mIPV4Address[4]; +}; + +// Structure to describe request TLV 0x17 for WDSGetProfileList() +struct sWDSGetProfileListRequest_UMTSRequestedQoS +{ + eQMITrafficClasses mTrafficClass; + UINT32 mMaxUplinkBitrate; + UINT32 mMaxDownlinkBitrate; + UINT32 mGuaranteedUplinkBitrate; + UINT32 mGuaranteedDownlinkBitrate; + eQMIQoSDeliveryOrders mQoSDeliveryOrder; + UINT32 mMaxSDUSize; + eQMISDUErrorRatios mSDUErrorRatio; + eQMISDUResidualBitErrorRatios mSDUResidualBitErrorRatio; + eQMIErroneousSDUDeliveries mErroneousSDUDelivery; + UINT32 mTransferDelay; + UINT32 mTrafficHandlingPriority; +}; + +// Structure to describe request TLV 0x18 for WDSGetProfileList() +struct sWDSGetProfileListRequest_UMTSMinimumQoS +{ + eQMITrafficClasses mTrafficClass; + UINT32 mMaxUplinkBitrate; + UINT32 mMaxDownlinkBitrate; + UINT32 mGuaranteedUplinkBitrate; + UINT32 mGuaranteedDownlinkBitrate; + eQMIQoSDeliveryOrders mQoSDeliveryOrder; + UINT32 mMaxSDUSize; + eQMISDUErrorRatios mSDUErrorRatio; + eQMISDUResidualBitErrorRatios mSDUResidualBitErrorRatio; + eQMIErroneousSDUDeliveries mErroneousSDUDelivery; + UINT32 mTransferDelay; + UINT32 mTrafficHandlingPriority; +}; + +// Structure to describe request TLV 0x19 for WDSGetProfileList() +struct sWDSGetProfileListRequest_GPRSRequestedQoS +{ + UINT32 mPrecedenceClass; + UINT32 mDelayClass; + UINT32 mReliabilityClass; + UINT32 mPeakThroughputClass; + UINT32 mMeanThroughputClass; +}; + +// Structure to describe request TLV 0x1A for WDSGetProfileList() +struct sWDSGetProfileListRequest_GPRSMinimumQoS +{ + UINT32 mPrecedenceClass; + UINT32 mDelayClass; + UINT32 mReliabilityClass; + UINT32 mPeakThroughputClass; + UINT32 mMeanThroughputClass; +}; + +// Structure to describe request TLV 0x1B for WDSGetProfileList() +struct sWDSGetProfileListRequest_Username +{ + // String is variable length, but must be size of the container + // char mUsername[1]; +}; + +// Structure to describe request TLV 0x1C for WDSGetProfileList() +struct sWDSGetProfileListRequest_Password +{ + // String is variable length, but must be size of the container + // char mPassword[1]; +}; + +// Structure to describe request TLV 0x1D for WDSGetProfileList() +struct sWDSGetProfileListRequest_Authentication +{ + bool mEnablePAP:1; + bool mEnableCHAP:1; + + // Padding out 6 bits + UINT8 mReserved1:6; +}; + +// Structure to describe request TLV 0x1E for WDSGetProfileList() +struct sWDSGetProfileListRequest_IPAddress +{ + UINT8 mIPV4Address[4]; +}; + +// Structure to describe request TLV 0x1F for WDSGetProfileList() +struct sWDSGetProfileListRequest_PCSCF +{ + INT8 mPCSCFAddressUsingPCO; +}; + +// Structure to describe request TLV 0x20 for WDSGetProfileList() +struct sWDSGetProfileListRequest_PDPAccessControlFlag +{ + eQMIWDSPDPAccessControlFlag mPDPAccessControlFlag; +}; + +// Structure to describe request TLV 0x21 for WDSGetProfileList() +struct sWDSGetProfileListRequest_PCSCFAddressUsingDHCP +{ + INT8 mPCSCFAddressUsingDHCP; +}; + +// Structure to describe request TLV 0x22 for WDSGetProfileList() +struct sWDSGetProfileListRequest_IMCNFlag +{ + INT8 mIMCN; +}; + +// Structure to describe request TLV 0x23 for WDSGetProfileList() +struct sWDSGetProfileListRequest_TrafficFlowTemplateID1Parameters +{ + UINT8 mFilterID; + UINT8 mEvaluationID; + eQMIWDSIPVersion mIPVersion; + + // The following union is based on the value of mIPVersion + union uValOfIPVersion + { + // If the value of mIPVersion == 4 + struct sIPVersionIs4 + { + UINT8 mIPV4Address[4]; + }; + + sIPVersionIs4 mIPVersionIs4; + + // If the value of mIPVersion == 6 + struct sIPVersionIs6 + { + UINT16 mIPv6Address[8]; + }; + + sIPVersionIs6 mIPVersionIs6; + + // Padding out 128 bits + UINT8 mReserved1[16]; + }; + + uValOfIPVersion mValOfIPVersion; + + UINT8 mSourceIPMask; + UINT8 mNextHeader; + UINT16 mDestinationPortRangeStart; + UINT16 mDestinationPortRangeEnd; + UINT16 mSourcePortRangeStart; + UINT16 mSourcePortRangeEnd; + UINT32 mIPSECSecurityParameterIndex; + UINT16 mTOSMask; + UINT32 mFlowLabel; +}; + +// Structure to describe request TLV 0x24 for WDSGetProfileList() +struct sWDSGetProfileListRequest_TrafficFlowTemplateID2Parameters +{ + UINT8 mFilterID; + UINT8 mEvaluationID; + eQMIWDSIPVersion mIPVersion; + + // The following union is based on the value of mIPVersion + union uValOfIPVersion + { + // If the value of mIPVersion == 4 + struct sIPVersionIs4 + { + UINT8 mIPV4Address[4]; + }; + + sIPVersionIs4 mIPVersionIs4; + + // If the value of mIPVersion == 6 + struct sIPVersionIs6 + { + UINT16 mIPv6Address[8]; + }; + + sIPVersionIs6 mIPVersionIs6; + + // Padding out 128 bits + UINT8 mReserved1[16]; + }; + + uValOfIPVersion mValOfIPVersion; + + UINT8 mSourceIPMask; + UINT8 mNextHeader; + UINT16 mDestinationPortRangeStart; + UINT16 mDestinationPortRangeEnd; + UINT16 mSourcePortRangeStart; + UINT16 mSourcePortRangeEnd; + UINT32 mIPSECSecurityParameterIndex; + UINT16 mTOSMask; + UINT32 mFlowLabel; +}; + +// Structure to describe request TLV 0x25 for WDSGetProfileList() +struct sWDSGetProfileListRequest_PDPContextNumber +{ + UINT8 mPDPContextNumber; +}; + +// Structure to describe request TLV 0x26 for WDSGetProfileList() +struct sWDSGetProfileListRequest_PDPContextSecondaryFlag +{ + INT8 mPDPContextSecondaryFlag; +}; + +// Structure to describe request TLV 0x27 for WDSGetProfileList() +struct sWDSGetProfileListRequest_PDPContextPrimaryID +{ + UINT8 mPDPPrimaryID; +}; + +// Structure to describe request TLV 0x28 for WDSGetProfileList() +struct sWDSGetProfileListRequest_IPv6Address +{ + UINT16 mIPv6Address[8]; +}; + +// Structure to describe request TLV 0x29 for WDSGetProfileList() +struct sWDSGetProfileListRequest_RequestedQoS +{ + eQMITrafficClasses mTrafficClass; + UINT32 mMaxUplinkBitrate; + UINT32 mMaxDownlinkBitrate; + UINT32 mGuaranteedUplinkBitrate; + UINT32 mGuaranteedDownlinkBitrate; + eQMIQoSDeliveryOrders mQoSDeliveryOrder; + UINT32 mMaxSDUSize; + eQMISDUErrorRatios mSDUErrorRatio; + eQMISDUResidualBitErrorRatios mSDUResidualBitErrorRatio; + eQMIErroneousSDUDeliveries mErroneousSDUDelivery; + UINT32 mTransferDelay; + UINT32 mTrafficHandlingPriority; + INT8 mSignalingIndication; +}; + +// Structure to describe request TLV 0x2A for WDSGetProfileList() +struct sWDSGetProfileListRequest_MinimumQoS +{ + eQMITrafficClasses mTrafficClass; + UINT32 mMaxUplinkBitrate; + UINT32 mMaxDownlinkBitrate; + UINT32 mGuaranteedUplinkBitrate; + UINT32 mGuaranteedDownlinkBitrate; + eQMIQoSDeliveryOrders mQoSDeliveryOrder; + UINT32 mMaxSDUSize; + eQMISDUErrorRatios mSDUErrorRatio; + eQMISDUResidualBitErrorRatios mSDUResidualBitErrorRatio; + eQMIErroneousSDUDeliveries mErroneousSDUDelivery; + UINT32 mTransferDelay; + UINT32 mTrafficHandlingPriority; + INT8 mSignalingIndication; +}; + +// Structure to describe request TLV 0x2B for WDSGetProfileList() +struct sWDSGetProfileListRequest_PrimaryIPv6 +{ + UINT16 mIPv6Address[8]; +}; + +// Structure to describe request TLV 0x2C for WDSGetProfileList() +struct sWDSGetProfileListRequest_SecondaryIPv6 +{ + UINT16 mIPv6Address[8]; +}; + +// Structure to describe request TLV 0x2D for WDSGetProfileList() +struct sWDSGetProfileListRequest_AddressPreference +{ + eQMIWDSAddressAllocationPreference mAddressAllocationPreference; +}; + +// Structure to describe request TLV 0x2E for WDSGetProfileList() +struct sWDSGetProfileListRequest_LTEQoSParameters +{ + eQMIWDSQoSClassIdentifier mQoSClassIdentifier; + UINT32 mGuaranteedDownlinkBitrate; + UINT32 mMaxDownlinkBitrate; + UINT32 mGuaranteedUplinkBitrate; + UINT32 mMaxUplinkBitrate; +}; + +// Structure to describe request TLV 0x90 for WDSGetProfileList() +struct sWDSGetProfileListRequest_NegotiateDNSServerPreferences +{ + INT8 mNegotiateDNSServerPreference; +}; + +// Structure to describe request TLV 0x91 for WDSGetProfileList() +struct sWDSGetProfileListRequest_PPPSessionCloseTimerDO +{ + UINT32 mPPPSessionCloseTimerDOSeconds; +}; + +// Structure to describe request TLV 0x92 for WDSGetProfileList() +struct sWDSGetProfileListRequest_PPPSessionCloseTimer1X +{ + UINT32 mPPPSessionCloseTimer1XSeconds; +}; + +// Structure to describe request TLV 0x93 for WDSGetProfileList() +struct sWDSGetProfileListRequest_AllowLinger +{ + INT8 mAllowLinger; +}; + +// Structure to describe request TLV 0x94 for WDSGetProfileList() +struct sWDSGetProfileListRequest_LCPACKTimeout +{ + UINT16 mTimeoutMilliseconds; +}; + +// Structure to describe request TLV 0x95 for WDSGetProfileList() +struct sWDSGetProfileListRequest_IPCPACKTimeout +{ + UINT16 mTimeoutMilliseconds; +}; + +// Structure to describe request TLV 0x96 for WDSGetProfileList() +struct sWDSGetProfileListRequest_AuthenticationTimeout +{ + UINT16 mTimeoutMilliseconds; +}; + +// Structure to describe request TLV 0x97 for WDSGetProfileList() +struct sWDSGetProfileListRequest_LCPConfigRetryCount +{ + UINT8 mRetryCount; +}; + +// Structure to describe request TLV 0x98 for WDSGetProfileList() +struct sWDSGetProfileListRequest_IPCPConfigRetryCount +{ + UINT8 mRetryCount; +}; + +// Structure to describe request TLV 0x99 for WDSGetProfileList() +struct sWDSGetProfileListRequest_AuthenticationRetry +{ + UINT8 mRetryCount; +}; + +// Structure to describe request TLV 0x9A for WDSGetProfileList() +struct sWDSGetProfileListRequest_AuthenticationProtocol +{ + eQMIWDSAuthenticationProtocol mAuthenticationProtocol; +}; + +// Structure to describe request TLV 0x9B for WDSGetProfileList() +struct sWDSGetProfileListRequest_UserID +{ + // String is variable length, but must be size of the container + // char mUsername[1]; +}; + +// Structure to describe request TLV 0x9C for WDSGetProfileList() +struct sWDSGetProfileListRequest_AuthenticationPassword +{ + // String is variable length, but must be size of the container + // char mPassword[1]; +}; + +// Structure to describe request TLV 0x9D for WDSGetProfileList() +struct sWDSGetProfileListRequest_DataRate +{ + eQMIWDSDataRate mDataRate; +}; + +// Structure to describe request TLV 0x9E for WDSGetProfileList() +struct sWDSGetProfileListRequest_ApplicationType +{ + eQMIWDSApplicationType mApplicationType; +}; + +// Structure to describe request TLV 0x9F for WDSGetProfileList() +struct sWDSGetProfileListRequest_DataMode +{ + eQMIWDSDataMode mDataMode; +}; + +// Structure to describe request TLV 0xA0 for WDSGetProfileList() +struct sWDSGetProfileListRequest_ApplicationPriority +{ + UINT8 mApplicationPriority; +}; + +// Structure to describe request TLV 0xA1 for WDSGetProfileList() +struct sWDSGetProfileListRequest_APNString +{ + // String is variable length, but must be size of the container + // char mAPNName[1]; +}; + +// Structure to describe request TLV 0xA2 for WDSGetProfileList() +struct sWDSGetProfileListRequest_PDNType +{ + eQMIWDSPDNType mPDNType; +}; + +// Structure to describe request TLV 0xA3 for WDSGetProfileList() +struct sWDSGetProfileListRequest_PCSCFAddressNeeded +{ + INT8 mPCSCFAddressNeeded; +}; + +// Structure to describe request TLV 0xA4 for WDSGetProfileList() +struct sWDSGetProfileListRequest_PrimaryIPv4Address +{ + UINT8 mIPV4Address[4]; +}; + +// Structure to describe request TLV 0xA5 for WDSGetProfileList() +struct sWDSGetProfileListRequest_SecondaryIPv4Address +{ + UINT8 mIPV4Address[4]; +}; + +// Structure to describe request TLV 0xA6 for WDSGetProfileList() +struct sWDSGetProfileListRequest_PrimaryIPv6Address +{ + UINT16 mIPv6Address[8]; +}; + +// Structure to describe request TLV 0xA7 for WDSGetProfileList() +struct sWDSGetProfileListRequest_SecondaryIPv6Address +{ + UINT16 mIPv6Address[8]; +}; + +// Structure to describe response TLV 0x01 for WDSGetProfileList() +struct sWDSGetProfileListResponse_ProfileList +{ + UINT8 mNumberOfProfiles; + + struct sProfile + { + eQMIProfileTypes mProfileType; + UINT8 mProfileIndex; + UINT8 mProfileNameLength; + + // This array must be the size specified by mProfileNameLength + // char mProfileName[1]; + }; + + // This array must be the size specified by mNumberOfProfiles + // sProfile mProfiles[1]; +}; + +// Structure to describe response TLV 0xE0 for WDSGetProfileList() +struct sWDSGetProfileListResponse_ExtendedErrorCode +{ + eQMIWDSExtendedErrorCode mExtendedErrorCode; +}; + +// Structure to describe request TLV 0x01 for WDSGetProfileSettings() +struct sWDSGetProfileSettingsRequest_ProfileIdentifier +{ + eQMIProfileTypes mProfileType; + UINT8 mProfileIndex; +}; + +// Structure to describe response TLV 0x10 for WDSGetProfileSettings() +struct sWDSGetProfileSettingsResponse_ProfileName +{ + // String is variable length, but must be size of the container + // char mProfileName[1]; +}; + +// Structure to describe response TLV 0x11 for WDSGetProfileSettings() +struct sWDSGetProfileSettingsResponse_PDPType +{ + eQMIPDPTypes mPDPType; +}; + +// Structure to describe response TLV 0x12 for WDSGetProfileSettings() +struct sWDSGetProfileSettingsResponse_PDPHeaderCompressionType +{ + eQMIWDSPDPHeaderCompressionType mPDPHeaderCompressionType; +}; + +// Structure to describe response TLV 0x13 for WDSGetProfileSettings() +struct sWDSGetProfileSettingsResponse_PDPDataCompressionType +{ + eQMIWDSPDPDataCompressionType mPDPDataCompressionType; +}; + +// Structure to describe response TLV 0x14 for WDSGetProfileSettings() +struct sWDSGetProfileSettingsResponse_APNName +{ + // String is variable length, but must be size of the container + // char mAPNName[1]; +}; + +// Structure to describe response TLV 0x15 for WDSGetProfileSettings() +struct sWDSGetProfileSettingsResponse_PrimaryDNS +{ + UINT8 mIPV4Address[4]; +}; + +// Structure to describe response TLV 0x16 for WDSGetProfileSettings() +struct sWDSGetProfileSettingsResponse_SecondaryDNS +{ + UINT8 mIPV4Address[4]; +}; + +// Structure to describe response TLV 0x17 for WDSGetProfileSettings() +struct sWDSGetProfileSettingsResponse_UMTSRequestedQoS +{ + eQMITrafficClasses mTrafficClass; + UINT32 mMaxUplinkBitrate; + UINT32 mMaxDownlinkBitrate; + UINT32 mGuaranteedUplinkBitrate; + UINT32 mGuaranteedDownlinkBitrate; + eQMIQoSDeliveryOrders mQoSDeliveryOrder; + UINT32 mMaxSDUSize; + eQMISDUErrorRatios mSDUErrorRatio; + eQMISDUResidualBitErrorRatios mSDUResidualBitErrorRatio; + eQMIErroneousSDUDeliveries mErroneousSDUDelivery; + UINT32 mTransferDelay; + UINT32 mTrafficHandlingPriority; +}; + +// Structure to describe response TLV 0x18 for WDSGetProfileSettings() +struct sWDSGetProfileSettingsResponse_UMTSMinimumQoS +{ + eQMITrafficClasses mTrafficClass; + UINT32 mMaxUplinkBitrate; + UINT32 mMaxDownlinkBitrate; + UINT32 mGuaranteedUplinkBitrate; + UINT32 mGuaranteedDownlinkBitrate; + eQMIQoSDeliveryOrders mQoSDeliveryOrder; + UINT32 mMaxSDUSize; + eQMISDUErrorRatios mSDUErrorRatio; + eQMISDUResidualBitErrorRatios mSDUResidualBitErrorRatio; + eQMIErroneousSDUDeliveries mErroneousSDUDelivery; + UINT32 mTransferDelay; + UINT32 mTrafficHandlingPriority; +}; + +// Structure to describe response TLV 0x19 for WDSGetProfileSettings() +struct sWDSGetProfileSettingsResponse_GPRSRequestedQoS +{ + UINT32 mPrecedenceClass; + UINT32 mDelayClass; + UINT32 mReliabilityClass; + UINT32 mPeakThroughputClass; + UINT32 mMeanThroughputClass; +}; + +// Structure to describe response TLV 0x1A for WDSGetProfileSettings() +struct sWDSGetProfileSettingsResponse_GPRSMinimumQoS +{ + UINT32 mPrecedenceClass; + UINT32 mDelayClass; + UINT32 mReliabilityClass; + UINT32 mPeakThroughputClass; + UINT32 mMeanThroughputClass; +}; + +// Structure to describe response TLV 0x1B for WDSGetProfileSettings() +struct sWDSGetProfileSettingsResponse_Username +{ + // String is variable length, but must be size of the container + // char mUsername[1]; +}; + +// Structure to describe response TLV 0x1D for WDSGetProfileSettings() +struct sWDSGetProfileSettingsResponse_Authentication +{ + bool mEnablePAP:1; + bool mEnableCHAP:1; + + // Padding out 6 bits + UINT8 mReserved1:6; +}; + +// Structure to describe response TLV 0x1E for WDSGetProfileSettings() +struct sWDSGetProfileSettingsResponse_IPAddress +{ + UINT8 mIPV4Address[4]; +}; + +// Structure to describe response TLV 0x1F for WDSGetProfileSettings() +struct sWDSGetProfileSettingsResponse_PCSCF +{ + INT8 mPCSCFAddressUsingPCO; +}; + +// Structure to describe response TLV 0x20 for WDSGetProfileSettings() +struct sWDSGetProfileSettingsResponse_PDPAccessControlFlag +{ + eQMIWDSPDPAccessControlFlag mPDPAccessControlFlag; +}; + +// Structure to describe response TLV 0x21 for WDSGetProfileSettings() +struct sWDSGetProfileSettingsResponse_PCSCFAddressUsingDHCP +{ + INT8 mPCSCFAddressUsingDHCP; +}; + +// Structure to describe response TLV 0x22 for WDSGetProfileSettings() +struct sWDSGetProfileSettingsResponse_IMCMFlag +{ + INT8 mIMCN; +}; + +// Structure to describe response TLV 0x23 for WDSGetProfileSettings() +struct sWDSGetProfileSettingsResponse_TrafficFlowTemplateID1Parameters +{ + UINT8 mFilterID; + UINT8 mEvaluationID; + eQMIWDSIPVersion mIPVersion; + + // The following union is based on the value of mIPVersion + union uValOfIPVersion + { + // If the value of mIPVersion == 4 + struct sIPVersionIs4 + { + UINT8 mIPV4Address[4]; + }; + + sIPVersionIs4 mIPVersionIs4; + + // If the value of mIPVersion == 6 + struct sIPVersionIs6 + { + UINT16 mIPv6Address[8]; + }; + + sIPVersionIs6 mIPVersionIs6; + + // Padding out 128 bits + UINT8 mReserved1[16]; + }; + + uValOfIPVersion mValOfIPVersion; + + UINT8 mSourceIPMask; + UINT8 mNextHeader; + UINT16 mDestinationPortRangeStart; + UINT16 mDestinationPortRangeEnd; + UINT16 mSourcePortRangeStart; + UINT16 mSourcePortRangeEnd; + UINT32 mIPSECSecurityParameterIndex; + UINT16 mTOSMask; + UINT32 mFlowLabel; +}; + +// Structure to describe response TLV 0x24 for WDSGetProfileSettings() +struct sWDSGetProfileSettingsResponse_TrafficFlowTemplateID2Parameters +{ + UINT8 mFilterID; + UINT8 mEvaluationID; + eQMIWDSIPVersion mIPVersion; + + // The following union is based on the value of mIPVersion + union uValOfIPVersion + { + // If the value of mIPVersion == 4 + struct sIPVersionIs4 + { + UINT8 mIPV4Address[4]; + }; + + sIPVersionIs4 mIPVersionIs4; + + // If the value of mIPVersion == 6 + struct sIPVersionIs6 + { + UINT16 mIPv6Address[8]; + }; + + sIPVersionIs6 mIPVersionIs6; + + // Padding out 128 bits + UINT8 mReserved1[16]; + }; + + uValOfIPVersion mValOfIPVersion; + + UINT8 mSourceIPMask; + UINT8 mNextHeader; + UINT16 mDestinationPortRangeStart; + UINT16 mDestinationPortRangeEnd; + UINT16 mSourcePortRangeStart; + UINT16 mSourcePortRangeEnd; + UINT32 mIPSECSecurityParameterIndex; + UINT16 mTOSMask; + UINT32 mFlowLabel; +}; + +// Structure to describe response TLV 0x25 for WDSGetProfileSettings() +struct sWDSGetProfileSettingsResponse_PDPContextNumber +{ + UINT8 mPDPContextNumber; +}; + +// Structure to describe response TLV 0x26 for WDSGetProfileSettings() +struct sWDSGetProfileSettingsResponse_PDPContextSecondaryFlag +{ + INT8 mPDPContextSecondaryFlag; +}; + +// Structure to describe response TLV 0x27 for WDSGetProfileSettings() +struct sWDSGetProfileSettingsResponse_PDPContextPrimaryID +{ + UINT8 mPDPPrimaryID; +}; + +// Structure to describe response TLV 0x28 for WDSGetProfileSettings() +struct sWDSGetProfileSettingsResponse_IPv6Address +{ + UINT16 mIPv6Address[8]; +}; + +// Structure to describe response TLV 0x29 for WDSGetProfileSettings() +struct sWDSGetProfileSettingsResponse_RequestedQoS +{ + eQMITrafficClasses mTrafficClass; + UINT32 mMaxUplinkBitrate; + UINT32 mMaxDownlinkBitrate; + UINT32 mGuaranteedUplinkBitrate; + UINT32 mGuaranteedDownlinkBitrate; + eQMIQoSDeliveryOrders mQoSDeliveryOrder; + UINT32 mMaxSDUSize; + eQMISDUErrorRatios mSDUErrorRatio; + eQMISDUResidualBitErrorRatios mSDUResidualBitErrorRatio; + eQMIErroneousSDUDeliveries mErroneousSDUDelivery; + UINT32 mTransferDelay; + UINT32 mTrafficHandlingPriority; + INT8 mSignalingIndication; +}; + +// Structure to describe response TLV 0x2A for WDSGetProfileSettings() +struct sWDSGetProfileSettingsResponse_MinimumQoS +{ + eQMITrafficClasses mTrafficClass; + UINT32 mMaxUplinkBitrate; + UINT32 mMaxDownlinkBitrate; + UINT32 mGuaranteedUplinkBitrate; + UINT32 mGuaranteedDownlinkBitrate; + eQMIQoSDeliveryOrders mQoSDeliveryOrder; + UINT32 mMaxSDUSize; + eQMISDUErrorRatios mSDUErrorRatio; + eQMISDUResidualBitErrorRatios mSDUResidualBitErrorRatio; + eQMIErroneousSDUDeliveries mErroneousSDUDelivery; + UINT32 mTransferDelay; + UINT32 mTrafficHandlingPriority; + INT8 mSignalingIndication; +}; + +// Structure to describe response TLV 0x2B for WDSGetProfileSettings() +struct sWDSGetProfileSettingsResponse_PrimaryIPv6 +{ + UINT16 mIPv6Address[8]; +}; + +// Structure to describe response TLV 0x2C for WDSGetProfileSettings() +struct sWDSGetProfileSettingsResponse_SecondaryIPv6 +{ + UINT16 mIPv6Address[8]; +}; + +// Structure to describe response TLV 0x2D for WDSGetProfileSettings() +struct sWDSGetProfileSettingsResponse_AddressPreference +{ + eQMIWDSAddressAllocationPreference mAddressAllocationPreference; +}; + +// Structure to describe response TLV 0x2E for WDSGetProfileSettings() +struct sWDSGetProfileSettingsResponse_LTEQoSParameters +{ + eQMIWDSQoSClassIdentifier mQoSClassIdentifier; + UINT32 mGuaranteedDownlinkBitrate; + UINT32 mMaxDownlinkBitrate; + UINT32 mGuaranteedUplinkBitrate; + UINT32 mMaxUplinkBitrate; +}; + +// Structure to describe response TLV 0x2F for WDSGetProfileSettings() +struct sWDSGetProfileSettingsResponse_APNDisabled +{ + INT8 mAPNDisabled; +}; + +// Structure to describe response TLV 0x30 for WDSGetProfileSettings() +struct sWDSGetProfileSettingsResponse_PDNInactivityTimer +{ + UINT32 mPDNInactivityTimerSeconds; +}; + +// Structure to describe response TLV 0x31 for WDSGetProfileSettings() +struct sWDSGetProfileSettingsResponse_APNClass +{ + UINT8 mAPNClass; +}; + +// Structure to describe response TLV 0x35 for WDSGetProfileSettings() +struct sWDSGetProfileSettingsResponse_APNBearer +{ + bool mGSM:1; + bool mWCDMA:1; + bool mLTE:1; + + // Padding out 60 bits + UINT8 mReserved1:5; + UINT8 mReserved2[6]; + UINT8 mReserved3:7; + + bool mAny:1; +}; + +// Structure to describe response TLV 0x36 for WDSGetProfileSettings() +struct sWDSGetProfileSettingsResponse_SupportEmergencyCalls +{ + INT8 mSupportEmergencyCalls; +}; + +// Structure to describe response TLV 0x37 for WDSGetProfile() +struct sWDSGetProfileResponse_PCOContainerID +{ + UINT16 mPCOContainerID; +}; + +// Structure to describe response TLV 0x38 for WDSGetProfile() +struct sWDSGetProfileResponse_MCC +{ + UINT16 mMobileCountryCode; +}; + +// Structure to describe response TLV 0x39 for WDSGetProfile() +struct sWDSGetProfileResponse_MNC +{ + UINT16 mMobileNetworkCode; + INT8 mMNCIncludesPCSDigit; +}; + +// Structure to describe response TLV 0x90 for WDSGetProfileSettings() +struct sWDSGetProfileSettingsResponse_NegotiateDNSServerPreference +{ + INT8 mNegotiateDNSServerPreference; +}; + +// Structure to describe response TLV 0x91 for WDSGetProfileSettings() +struct sWDSGetProfileSettingsResponse_PPPSessionCloseTimerDO +{ + UINT32 mPPPSessionCloseTimerDOSeconds; +}; + +// Structure to describe response TLV 0x92 for WDSGetProfileSettings() +struct sWDSGetProfileSettingsResponse_PPPSessionCloseTimer1X +{ + UINT32 mPPPSessionCloseTimer1XSeconds; +}; + +// Structure to describe response TLV 0x93 for WDSGetProfileSettings() +struct sWDSGetProfileSettingsResponse_AllowLinger +{ + INT8 mAllowLinger; +}; + +// Structure to describe response TLV 0x94 for WDSGetProfileSettings() +struct sWDSGetProfileSettingsResponse_LCPACKTimeout +{ + UINT16 mTimeoutMilliseconds; +}; + +// Structure to describe response TLV 0x95 for WDSGetProfileSettings() +struct sWDSGetProfileSettingsResponse_IPCPACKTimeout +{ + UINT16 mTimeoutMilliseconds; +}; + +// Structure to describe response TLV 0x96 for WDSGetProfileSettings() +struct sWDSGetProfileSettingsResponse_AuthenticationTimeout +{ + UINT16 mTimeoutMilliseconds; +}; + +// Structure to describe response TLV 0x97 for WDSGetProfileSettings() +struct sWDSGetProfileSettingsResponse_LCPConfigRetryCount +{ + UINT8 mRetryCount; +}; + +// Structure to describe response TLV 0x98 for WDSGetProfileSettings() +struct sWDSGetProfileSettingsResponse_IPCPConfigRetryCount +{ + UINT8 mRetryCount; +}; + +// Structure to describe response TLV 0x99 for WDSGetProfileSettings() +struct sWDSGetProfileSettingsResponse_AuthenticationRetry +{ + UINT8 mRetryCount; +}; + +// Structure to describe response TLV 0x9A for WDSGetProfileSettings() +struct sWDSGetProfileSettingsResponse_AuthenticationProtocol +{ + eQMIWDSAuthenticationProtocol mAuthenticationProtocol; +}; + +// Structure to describe response TLV 0x9B for WDSGetProfileSettings() +struct sWDSGetProfileSettingsResponse_UserID +{ + // String is variable length, but must be size of the container + // char mUsername[1]; +}; + +// Structure to describe response TLV 0x9C for WDSGetProfileSettings() +struct sWDSGetProfileSettingsResponse_AuthenticationPassword +{ + // String is variable length, but must be size of the container + // char mPassword[1]; +}; + +// Structure to describe response TLV 0x9D for WDSGetProfileSettings() +struct sWDSGetProfileSettingsResponse_DataRate +{ + eQMIWDSDataRate mDataRate; +}; + +// Structure to describe response TLV 0x9E for WDSGetProfileSettings() +struct sWDSGetProfileSettingsResponse_ApplicationType +{ + eQMIWDSApplicationType mApplicationType; +}; + +// Structure to describe response TLV 0x9F for WDSGetProfileSettings() +struct sWDSGetProfileSettingsResponse_DataMode +{ + eQMIWDSDataMode mDataMode; +}; + +// Structure to describe response TLV 0xA0 for WDSGetProfileSettings() +struct sWDSGetProfileSettingsResponse_ApplicationPriority +{ + UINT8 mApplicationPriority; +}; + +// Structure to describe response TLV 0xA1 for WDSGetProfileSettings() +struct sWDSGetProfileSettingsResponse_APNString +{ + // String is variable length, but must be size of the container + // char mAPNName[1]; +}; + +// Structure to describe response TLV 0xA2 for WDSGetProfileSettings() +struct sWDSGetProfileSettingsResponse_PDNType +{ + eQMIWDSPDNType mPDNType; +}; + +// Structure to describe response TLV 0xA3 for WDSGetProfileSettings() +struct sWDSGetProfileSettingsResponse_PCSCFAddressNeeded +{ + INT8 mPCSCFAddressNeeded; +}; + +// Structure to describe response TLV 0xA4 for WDSGetProfileSettings() +struct sWDSGetProfileSettingsResponse_PrimaryIPv4Address +{ + UINT8 mIPV4Address[4]; +}; + +// Structure to describe response TLV 0xA5 for WDSGetProfileSettings() +struct sWDSGetProfileSettingsResponse_SecondaryIPv4Address +{ + UINT8 mIPV4Address[4]; +}; + +// Structure to describe response TLV 0xA6 for WDSGetProfileSettings() +struct sWDSGetProfileSettingsResponse_PrimaryIPv6Address +{ + UINT16 mIPv6Address[8]; +}; + +// Structure to describe response TLV 0xA7 for WDSGetProfileSettings() +struct sWDSGetProfileSettingsResponse_SecondaryIPv6Address +{ + UINT16 mIPv6Address[8]; +}; + +// Structure to describe response TLV 0xA8 for WDSGetProfileSettings() +struct sWDSGetProfileSettingsResponse_RATType +{ + eQMIWDS3GPP2RATTypes mRATType; +}; + +// Structure to describe response TLV 0xA9 for WDSGetProfileSettings() +struct sWDSGetProfileSettingsResponse_3GPP2APNEnabled +{ + INT8 mAPNEnabled; +}; + +// Structure to describe response TLV 0xAA for WDSGetProfileSettings() +struct sWDSGetProfileSettingsResponse_3GPP2PDNInactivityTimer +{ + UINT32 mPDNInactivityTimerMinutes; +}; + +// Structure to describe response TLV 0xAB for WDSGetProfileSettings() +struct sWDSGetProfileSettingsResponse_3GPP2APNClass +{ + UINT8 mAPNClass; +}; + +// Structure to describe response TLV 0xAD for WDSGetProfileSettings() +struct sWDSGetProfileSettingsResponse_PDNAuthenticationProtocol +{ + eQMIWDSAuthenticationProtocol mAuthenticationProtocol; +}; + +// Structure to describe response TLV 0xAE for WDSGetProfileSettings() +struct sWDSGetProfileSettingsResponse_PDNUserID +{ + // String is variable length, but must be size of the container + // char mUserID[1]; +}; + +// Structure to describe response TLV 0xAF for WDSGetProfileSettings() +struct sWDSGetProfileSettingsResponse_PDNPassword +{ + // String is variable length, but must be size of the container + // char mPassword[1]; +}; + +// Structure to describe response TLV 0xB0 for WDSGetProfileSettings() +struct sWDSGetProfileSettingsResponse_PDNLabel +{ + // String is variable length, but must be size of the container + // char mLabel[1]; +}; + +// Structure to describe response TLV 0xBD for WDSGetProfile() +struct sWDSGetProfileResponse_3GPP2PCOContainerID +{ + UINT16 mPCOContainerID; +}; + +// Structure to describe response TLV 0xBE for WDSGetProfile() +struct sWDSGetProfileResponse_3GPP2MCC +{ + UINT16 mMobileCountryCode; +}; + +// Structure to describe response TLV 0xBF for WDSGetProfile() +struct sWDSGetProfileResponse_3GPP2MNC +{ + UINT16 mMobileNetworkCode; + INT8 mMNCIncludesPCSDigit; +}; + +// Structure to describe response TLV 0xC0 for WDSGetProfile() +struct sWDSGetProfileResponse_PDNThrottlingTimer +{ + UINT32 mFailureTimerInSeconds; +}; + +// Structure to describe response TLV 0xC1 for WDSGetProfile() +struct sWDSGetProfileResponse_PDNDisallowTimer +{ + UINT32 mDisallowTimerInSeconds; +}; + +// Structure to describe response TLV 0xE0 for WDSGetProfileSettings() +struct sWDSGetProfileSettingsResponse_ExtendedErrorCode +{ + eQMIWDSExtendedErrorCode mExtendedErrorCode; +}; + +// Structure to describe request TLV 0x01 for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsRequest_ProfileType +{ + eQMIProfileTypes mProfileType; +}; + +// Structure to describe response TLV 0x10 for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_ProfileName +{ + // String is variable length, but must be size of the container + // char mProfileName[1]; +}; + +// Structure to describe response TLV 0x11 for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_PDPType +{ + eQMIPDPTypes mPDPType; +}; + +// Structure to describe response TLV 0x12 for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_PDPHeaderCompressionType +{ + eQMIWDSPDPHeaderCompressionType mPDPHeaderCompressionType; +}; + +// Structure to describe response TLV 0x13 for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_PDPDataCompressionType +{ + eQMIWDSPDPDataCompressionType mPDPDataCompressionType; +}; + +// Structure to describe response TLV 0x14 for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_APNName +{ + // String is variable length, but must be size of the container + // char mAPNName[1]; +}; + +// Structure to describe response TLV 0x15 for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_PrimaryDNS +{ + UINT8 mIPV4Address[4]; +}; + +// Structure to describe response TLV 0x16 for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_SecondaryDNS +{ + UINT8 mIPV4Address[4]; +}; + +// Structure to describe response TLV 0x17 for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_UMTSRequestedQoS +{ + eQMITrafficClasses mTrafficClass; + UINT32 mMaxUplinkBitrate; + UINT32 mMaxDownlinkBitrate; + UINT32 mGuaranteedUplinkBitrate; + UINT32 mGuaranteedDownlinkBitrate; + eQMIQoSDeliveryOrders mQoSDeliveryOrder; + UINT32 mMaxSDUSize; + eQMISDUErrorRatios mSDUErrorRatio; + eQMISDUResidualBitErrorRatios mSDUResidualBitErrorRatio; + eQMIErroneousSDUDeliveries mErroneousSDUDelivery; + UINT32 mTransferDelay; + UINT32 mTrafficHandlingPriority; +}; + +// Structure to describe response TLV 0x18 for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_UMTSMinimumQoS +{ + eQMITrafficClasses mTrafficClass; + UINT32 mMaxUplinkBitrate; + UINT32 mMaxDownlinkBitrate; + UINT32 mGuaranteedUplinkBitrate; + UINT32 mGuaranteedDownlinkBitrate; + eQMIQoSDeliveryOrders mQoSDeliveryOrder; + UINT32 mMaxSDUSize; + eQMISDUErrorRatios mSDUErrorRatio; + eQMISDUResidualBitErrorRatios mSDUResidualBitErrorRatio; + eQMIErroneousSDUDeliveries mErroneousSDUDelivery; + UINT32 mTransferDelay; + UINT32 mTrafficHandlingPriority; +}; + +// Structure to describe response TLV 0x19 for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_GPRSRequestedQoS +{ + UINT32 mPrecedenceClass; + UINT32 mDelayClass; + UINT32 mReliabilityClass; + UINT32 mPeakThroughputClass; + UINT32 mMeanThroughputClass; +}; + +// Structure to describe response TLV 0x1A for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_GPRSMinimumQoS +{ + UINT32 mPrecedenceClass; + UINT32 mDelayClass; + UINT32 mReliabilityClass; + UINT32 mPeakThroughputClass; + UINT32 mMeanThroughputClass; +}; + +// Structure to describe response TLV 0x1B for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_Username +{ + // String is variable length, but must be size of the container + // char mUsername[1]; +}; + +// Structure to describe response TLV 0x1C for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_Password +{ + // String is variable length, but must be size of the container + // char mPassword[1]; +}; + +// Structure to describe response TLV 0x1D for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_Authentication +{ + bool mEnablePAP:1; + bool mEnableCHAP:1; + + // Padding out 6 bits + UINT8 mReserved1:6; +}; + +// Structure to describe response TLV 0x1E for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_IPAddress +{ + UINT8 mIPV4Address[4]; +}; + +// Structure to describe response TLV 0x1F for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_PCSCF +{ + INT8 mPCSCFAddressUsingPCO; +}; + +// Structure to describe response TLV 0x20 for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_PDPAccessControlFlag +{ + eQMIWDSPDPAccessControlFlag mPDPAccessControlFlag; +}; + +// Structure to describe response TLV 0x21 for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_PCSCFAddressUsingDHCP +{ + INT8 mPCSCFAddressUsingDHCP; +}; + +// Structure to describe response TLV 0x22 for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_IMCNFlag +{ + INT8 mIMCN; +}; + +// Structure to describe response TLV 0x23 for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_TrafficFlowTemplateID1Parameters +{ + UINT8 mFilterID; + UINT8 mEvaluationID; + eQMIWDSIPVersion mIPVersion; + + // The following union is based on the value of mIPVersion + union uValOfIPVersion + { + // If the value of mIPVersion == 4 + struct sIPVersionIs4 + { + UINT8 mIPV4Address[4]; + }; + + sIPVersionIs4 mIPVersionIs4; + + // If the value of mIPVersion == 6 + struct sIPVersionIs6 + { + UINT16 mIPv6Address[8]; + }; + + sIPVersionIs6 mIPVersionIs6; + + // Padding out 128 bits + UINT8 mReserved1[16]; + }; + + uValOfIPVersion mValOfIPVersion; + + UINT8 mSourceIPMask; + UINT8 mNextHeader; + UINT16 mDestinationPortRangeStart; + UINT16 mDestinationPortRangeEnd; + UINT16 mSourcePortRangeStart; + UINT16 mSourcePortRangeEnd; + UINT32 mIPSECSecurityParameterIndex; + UINT16 mTOSMask; + UINT32 mFlowLabel; +}; + +// Structure to describe response TLV 0x24 for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_TrafficFlowTemplateID2Parameters +{ + UINT8 mFilterID; + UINT8 mEvaluationID; + eQMIWDSIPVersion mIPVersion; + + // The following union is based on the value of mIPVersion + union uValOfIPVersion + { + // If the value of mIPVersion == 4 + struct sIPVersionIs4 + { + UINT8 mIPV4Address[4]; + }; + + sIPVersionIs4 mIPVersionIs4; + + // If the value of mIPVersion == 6 + struct sIPVersionIs6 + { + UINT16 mIPv6Address[8]; + }; + + sIPVersionIs6 mIPVersionIs6; + + // Padding out 128 bits + UINT8 mReserved1[16]; + }; + + uValOfIPVersion mValOfIPVersion; + + UINT8 mSourceIPMask; + UINT8 mNextHeader; + UINT16 mDestinationPortRangeStart; + UINT16 mDestinationPortRangeEnd; + UINT16 mSourcePortRangeStart; + UINT16 mSourcePortRangeEnd; + UINT32 mIPSECSecurityParameterIndex; + UINT16 mTOSMask; + UINT32 mFlowLabel; +}; + +// Structure to describe response TLV 0x25 for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_PDPContextNumber +{ + UINT8 mPDPContextNumber; +}; + +// Structure to describe response TLV 0x26 for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_PDPContextSecondaryFlag +{ + INT8 mPDPContextSecondaryFlag; +}; + +// Structure to describe response TLV 0x27 for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_PDPContextPrimaryID +{ + UINT8 mPDPPrimaryID; +}; + +// Structure to describe response TLV 0x28 for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_IPv6Address +{ + UINT16 mIPv6Address[8]; +}; + +// Structure to describe response TLV 0x29 for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_RequestedQoS +{ + eQMITrafficClasses mTrafficClass; + UINT32 mMaxUplinkBitrate; + UINT32 mMaxDownlinkBitrate; + UINT32 mGuaranteedUplinkBitrate; + UINT32 mGuaranteedDownlinkBitrate; + eQMIQoSDeliveryOrders mQoSDeliveryOrder; + UINT32 mMaxSDUSize; + eQMISDUErrorRatios mSDUErrorRatio; + eQMISDUResidualBitErrorRatios mSDUResidualBitErrorRatio; + eQMIErroneousSDUDeliveries mErroneousSDUDelivery; + UINT32 mTransferDelay; + UINT32 mTrafficHandlingPriority; + INT8 mSignalingIndication; +}; + +// Structure to describe response TLV 0x2A for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_MinimumQoS +{ + eQMITrafficClasses mTrafficClass; + UINT32 mMaxUplinkBitrate; + UINT32 mMaxDownlinkBitrate; + UINT32 mGuaranteedUplinkBitrate; + UINT32 mGuaranteedDownlinkBitrate; + eQMIQoSDeliveryOrders mQoSDeliveryOrder; + UINT32 mMaxSDUSize; + eQMISDUErrorRatios mSDUErrorRatio; + eQMISDUResidualBitErrorRatios mSDUResidualBitErrorRatio; + eQMIErroneousSDUDeliveries mErroneousSDUDelivery; + UINT32 mTransferDelay; + UINT32 mTrafficHandlingPriority; + INT8 mSignalingIndication; +}; + +// Structure to describe response TLV 0x2B for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_PrimaryIPv6 +{ + UINT16 mIPv6Address[8]; +}; + +// Structure to describe response TLV 0x2C for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_SecondaryIPv6 +{ + UINT16 mIPv6Address[8]; +}; + +// Structure to describe response TLV 0x2D for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_AddressPreference +{ + eQMIWDSAddressAllocationPreference mAddressAllocationPreference; +}; + +// Structure to describe response TLV 0x2E for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_LTEQoSParameters +{ + eQMIWDSQoSClassIdentifier mQoSClassIdentifier; + UINT32 mGuaranteedDownlinkBitrate; + UINT32 mMaxDownlinkBitrate; + UINT32 mGuaranteedUplinkBitrate; + UINT32 mMaxUplinkBitrate; +}; + +// Structure to describe response TLV 0x2F for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_APNDisabled +{ + INT8 mAPNDisabled; +}; + +// Structure to describe response TLV 0x30 for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_PDNInactivityTimer +{ + UINT32 mPDNInactivityTimerSeconds; +}; + +// Structure to describe response TLV 0x31 for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_APNClass +{ + UINT8 mAPNClass; +}; + +// Structure to describe response TLV 0x35 for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_APNBearer +{ + bool mGSM:1; + bool mWCDMA:1; + bool mLTE:1; + + // Padding out 60 bits + UINT8 mReserved1:5; + UINT8 mReserved2[6]; + UINT8 mReserved3:7; + + bool mAny:1; +}; + +// Structure to describe response TLV 0x36 for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_SupportEmergencyCalls +{ + INT8 mSupportEmergencyCalls; +}; + +// Structure to describe response TLV 0x37 for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_PCOContainerID +{ + UINT16 mPCOContainerID; +}; + +// Structure to describe response TLV 0x38 for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_MCC +{ + UINT16 mMobileCountryCode; +}; + +// Structure to describe response TLV 0x39 for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_MNC +{ + UINT16 mMobileNetworkCode; + INT8 mMNCIncludesPCSDigit; +}; + +// Structure to describe response TLV 0x90 for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_NegotiateDNSServerPreferences +{ + INT8 mNegotiateDNSServerPreference; +}; + +// Structure to describe response TLV 0x91 for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_PPPSessionCloseTimerDO +{ + UINT32 mPPPSessionCloseTimerDOSeconds; +}; + +// Structure to describe response TLV 0x92 for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_PPPSessionCloseTimer1X +{ + UINT32 mPPPSessionCloseTimer1XSeconds; +}; + +// Structure to describe response TLV 0x93 for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_AllowLinger +{ + INT8 mAllowLinger; +}; + +// Structure to describe response TLV 0x94 for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_LCPACKTimeout +{ + UINT16 mTimeoutMilliseconds; +}; + +// Structure to describe response TLV 0x95 for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_IPCPACKTimeout +{ + UINT16 mTimeoutMilliseconds; +}; + +// Structure to describe response TLV 0x96 for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_AuthenticationTimeout +{ + UINT16 mTimeoutMilliseconds; +}; + +// Structure to describe response TLV 0x97 for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_LCPConfigRetryCount +{ + UINT8 mRetryCount; +}; + +// Structure to describe response TLV 0x98 for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_IPCPConfigRetryCount +{ + UINT8 mRetryCount; +}; + +// Structure to describe response TLV 0x99 for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_AuthenticationRetry +{ + UINT8 mRetryCount; +}; + +// Structure to describe response TLV 0x9A for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_AuthenticationProtocol +{ + eQMIWDSAuthenticationProtocol mAuthenticationProtocol; +}; + +// Structure to describe response TLV 0x9B for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_UserID +{ + // String is variable length, but must be size of the container + // char mUsername[1]; +}; + +// Structure to describe response TLV 0x9C for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_AuthenticationPassword +{ + // String is variable length, but must be size of the container + // char mPassword[1]; +}; + +// Structure to describe response TLV 0x9D for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_DataRate +{ + eQMIWDSDataRate mDataRate; +}; + +// Structure to describe response TLV 0x9E for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_ApplicationType +{ + eQMIWDSApplicationType mApplicationType; +}; + +// Structure to describe response TLV 0x9F for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_DataMode +{ + eQMIWDSDataMode mDataMode; +}; + +// Structure to describe response TLV 0xA0 for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_ApplicationPriority +{ + UINT8 mApplicationPriority; +}; + +// Structure to describe response TLV 0xA1 for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_APNString +{ + // String is variable length, but must be size of the container + // char mAPNName[1]; +}; + +// Structure to describe response TLV 0xA2 for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_PDNType +{ + eQMIWDSPDNType mPDNType; +}; + +// Structure to describe response TLV 0xA3 for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_PCSCFAddressNeeded +{ + INT8 mPCSCFAddressNeeded; +}; + +// Structure to describe response TLV 0xA4 for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_PrimaryIPv4Address +{ + UINT8 mIPV4Address[4]; +}; + +// Structure to describe response TLV 0xA5 for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_SecondaryIPv4Address +{ + UINT8 mIPV4Address[4]; +}; + +// Structure to describe response TLV 0xA6 for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_PrimaryIPv6Address +{ + UINT16 mIPv6Address[8]; +}; + +// Structure to describe response TLV 0xA7 for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_SecondaryIPv6Address +{ + UINT16 mIPv6Address[8]; +}; + +// Structure to describe response TLV 0xA8 for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_RATType +{ + eQMIWDS3GPP2RATTypes mRATType; +}; + +// Structure to describe response TLV 0xA9 for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_3GPP2APNEnabled +{ + INT8 mAPNEnabled; +}; + +// Structure to describe response TLV 0xAA for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_3GPP2PDNInactivityTimer +{ + UINT32 mPDNInactivityTimerMinutes; +}; + +// Structure to describe response TLV 0xAB for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_3GPP2APNClass +{ + UINT8 mAPNClass; +}; + +// Structure to describe response TLV 0xAD for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_PDNAuthenticationProtocol +{ + eQMIWDSAuthenticationProtocol mAuthenticationProtocol; +}; + +// Structure to describe response TLV 0xAE for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_PDNUserID +{ + // String is variable length, but must be size of the container + // char mUserID[1]; +}; + +// Structure to describe response TLV 0xAF for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_PDNPassword +{ + // String is variable length, but must be size of the container + // char mPassword[1]; +}; + +// Structure to describe response TLV 0xB0 for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_PDNLabel +{ + // String is variable length, but must be size of the container + // char mLabel[1]; +}; + +// Structure to describe response TLV 0xBD for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_3GPP2PCOContainerID +{ + UINT16 mPCOContainerID; +}; + +// Structure to describe response TLV 0xBE for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_3GPP2MCC +{ + UINT16 mMobileCountryCode; +}; + +// Structure to describe response TLV 0xBF for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_3GPP2MNC +{ + UINT16 mMobileNetworkCode; + INT8 mMNCIncludesPCSDigit; +}; + +// Structure to describe response TLV 0xC0 for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_PDNThrottlingTimer +{ + UINT32 mFailureTimerInSeconds; +}; + +// Structure to describe response TLV 0xC1 for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_PDNDisallowTimer +{ + UINT32 mDisallowTimerInSeconds; +}; + +// Structure to describe response TLV 0xE0 for WDSGetDefaultSettings() +struct sWDSGetDefaultSettingsResponse_ExtendedErrorCode +{ + eQMIWDSExtendedErrorCode mExtendedErrorCode; +}; + +// Structure to describe request TLV 0x10 for WDSGetCurrentSettings() +struct sWDSGetCurrentSettingsRequest_RequestedSettings +{ + bool mProfileID:1; + bool mProfileName:1; + bool mPDPType:1; + bool mAPNName:1; + bool mDNSAddress:1; + bool mGrantedQoS:1; + bool mUsername:1; + bool mAuthenticationProtocol:1; + bool mIPAddress:1; + bool mGatewayInfo:1; + bool mPCSCFAddress:1; + bool mPCSCFServerAddressList:1; + bool mPCSCFDomainNameList:1; + bool mMTU:1; + bool mDomainNameList:1; + bool mIPFamily:1; + bool mIMCNFlag:1; + bool mExtendedTechnology:1; + bool mOperatorReservedPCO:1; + + // Padding out 13 bits + UINT8 mReserved1:5; + UINT8 mReserved2; +}; + +// Structure to describe response TLV 0x10 for WDSGetCurrentSettings() +struct sWDSGetCurrentSettingsResponse_ProfileName +{ + // String is variable length, but must be size of the container + // char mProfileName[1]; +}; + +// Structure to describe response TLV 0x11 for WDSGetCurrentSettings() +struct sWDSGetCurrentSettingsResponse_PDPType +{ + eQMIPDPTypes mPDPType; +}; + +// Structure to describe response TLV 0x14 for WDSGetCurrentSettings() +struct sWDSGetCurrentSettingsResponse_APNName +{ + // String is variable length, but must be size of the container + // char mAPNName[1]; +}; + +// Structure to describe response TLV 0x15 for WDSGetCurrentSettings() +struct sWDSGetCurrentSettingsResponse_PrimaryDNS +{ + UINT8 mIPV4Address[4]; +}; + +// Structure to describe response TLV 0x16 for WDSGetCurrentSettings() +struct sWDSGetCurrentSettingsResponse_SecondaryDNS +{ + UINT8 mIPV4Address[4]; +}; + +// Structure to describe response TLV 0x17 for WDSGetCurrentSettings() +struct sWDSGetCurrentSettingsResponse_UMTSGrantedQoS +{ + eQMITrafficClasses mTrafficClass; + UINT32 mMaxUplinkBitrate; + UINT32 mMaxDownlinkBitrate; + UINT32 mGuaranteedUplinkBitrate; + UINT32 mGuaranteedDownlinkBitrate; + eQMIQoSDeliveryOrders mQoSDeliveryOrder; + UINT32 mMaxSDUSize; + eQMISDUErrorRatios mSDUErrorRatio; + eQMISDUResidualBitErrorRatios mSDUResidualBitErrorRatio; + eQMIErroneousSDUDeliveries mErroneousSDUDelivery; + UINT32 mTransferDelay; + UINT32 mTrafficHandlingPriority; +}; + +// Structure to describe response TLV 0x19 for WDSGetCurrentSettings() +struct sWDSGetCurrentSettingsResponse_GPRSGrantedQoS +{ + UINT32 mPrecedenceClass; + UINT32 mDelayClass; + UINT32 mReliabilityClass; + UINT32 mPeakThroughputClass; + UINT32 mMeanThroughputClass; +}; + +// Structure to describe response TLV 0x1B for WDSGetCurrentSettings() +struct sWDSGetCurrentSettingsResponse_Username +{ + // String is variable length, but must be size of the container + // char mUsername[1]; +}; + +// Structure to describe response TLV 0x1D for WDSGetCurrentSettings() +struct sWDSGetCurrentSettingsResponse_Authentication +{ + bool mEnablePAP:1; + bool mEnableCHAP:1; + + // Padding out 6 bits + UINT8 mReserved1:6; +}; + +// Structure to describe response TLV 0x1E for WDSGetCurrentSettings() +struct sWDSGetCurrentSettingsResponse_IPAddress +{ + UINT8 mIPV4Address[4]; +}; + +// Structure to describe response TLV 0x1F for WDSGetCurrentSettings() +struct sWDSGetCurrentSettingsResponse_ProfileID +{ + eQMIProfileTypes mProfileType; + UINT8 mProfileIndex; +}; + +// Structure to describe response TLV 0x20 for WDSGetCurrentSettings() +struct sWDSGetCurrentSettingsResponse_GatewayAddress +{ + UINT8 mIPV4Address[4]; +}; + +// Structure to describe response TLV 0x21 for WDSGetCurrentSettings() +struct sWDSGetCurrentSettingsResponse_GatewaySubnetMask +{ + UINT8 mIPV4Address[4]; +}; + +// Structure to describe response TLV 0x22 for WDSGetCurrentSettings() +struct sWDSGetCurrentSettingsResponse_PCSCF +{ + INT8 mPCSCFAddressUsingPCO; +}; + +// Structure to describe response TLV 0x23 for WDSGetCurrentSettings() +struct sWDSGetCurrentSettingsResponse_PCSCFServerAddressList +{ + UINT8 mNumberOfInstances; + + struct sInstance + { + UINT8 mIPV4Address[4]; + }; + + // This array must be the size specified by mNumberOfInstances + // sInstance mInstances[1]; +}; + +// Structure to describe response TLV 0x24 for WDSGetCurrentSettings() +struct sWDSGetCurrentSettingsResponse_PCSCFDomainNameList +{ + UINT8 mNumberOfInstances; + + struct sInstance + { + UINT16 mFQDNLength; + + // This array must be the size specified by mFQDNLength + // char mFQDN[1]; + }; + + // This array must be the size specified by mNumberOfInstances + // sInstance mInstances[1]; +}; + +// Structure to describe response TLV 0x25 for WDSGetCurrentSettings() +struct sWDSGetCurrentSettingsResponse_IPv6Address +{ + UINT16 mIPv6Address[8]; + UINT8 mIPPrefixLength; +}; + +// Structure to describe response TLV 0x26 for WDSGetCurrentSettings() +struct sWDSGetCurrentSettingsResponse_IPv6GatewayAddress +{ + UINT16 mIPv6Address[8]; + UINT8 mIPPrefixLength; +}; + +// Structure to describe response TLV 0x27 for WDSGetCurrentSettings() +struct sWDSGetCurrentSettingsResponse_PrimaryIPv6DNS +{ + UINT16 mIPv6Address[8]; +}; + +// Structure to describe response TLV 0x28 for WDSGetCurrentSettings() +struct sWDSGetCurrentSettingsResponse_SecondaryIPv6DNS +{ + UINT16 mIPv6Address[8]; +}; + +// Structure to describe response TLV 0x29 for WDSGetCurrentSettings() +struct sWDSGetCurrentSettingsResponse_MTU +{ + UINT32 mMTU; +}; + +// Structure to describe response TLV 0x2A for WDSGetCurrentSettings() +struct sWDSGetCurrentSettingsResponse_DomainNameList +{ + UINT8 mNumberOfInstances; + + struct sInstance + { + UINT16 mDomainNameLength; + + // This array must be the size specified by mDomainNameLength + // char mDomainName[1]; + }; + + // This array must be the size specified by mNumberOfInstances + // sInstance mInstances[1]; +}; + +// Structure to describe response TLV 0x2B for WDSGetCurrentSettings() +struct sWDSGetCurrentSettingsResponse_IPFamily +{ + eQMIWDSIPFamilies mIPFamily; +}; + +// Structure to describe response TLV 0x2C for WDSGetCurrentSettings() +struct sWDSGetCurrentSettingsResponse_IMCNFlag +{ + INT8 mIMCN; +}; + +// Structure to describe response TLV 0x2D for WDSGetCurrentSettings() +struct sWDSGetCurrentSettingsResponse_ExtendedTechnology +{ + eQMIWDSExtendedTechPrefs mExtendedTechnologyPreference; +}; + +// Structure to describe response TLV 0x2E for WDSGetCurrentSettings() +struct sWDSGetCurrentSettingsResponse_PCSCFIPv6AddressList +{ + UINT8 mNumberOfAddresses; + + struct sAddress + { + UINT16 mIPv6Address[8]; + }; + + // This array must be the size specified by mNumberOfAddresses + // sAddress mAddresses[1]; +}; + +// Structure to describe response TLV 0x2F for WDSGetCurrentSettings() +struct sWDSGetCurrentSettingsResponse_OperatorReservedProtocolInfo1 +{ + UINT16 mMobileCountryCode; + UINT16 mMobileNetworkCode; + INT8 mMNCIncludesPCSDigit; + UINT8 mApplicationSpecificInfoLength; + + // This array must be the size specified by mApplicationSpecificInfoLength + // UINT8 mApplicationSpecificInfo[1]; +}; + +struct sWDSGetCurrentSettingsResponse_OperatorReservedProtocolInfo2 +{ + UINT16 mPCOContainerID; +}; + +struct sWDSGetCurrentSettingsResponse_OperatorReservedProtocolInfo +{ + sWDSGetCurrentSettingsResponse_OperatorReservedProtocolInfo1 mWDSGetCurrentSettingsResponse_OperatorReservedProtocolInfo1; + sWDSGetCurrentSettingsResponse_OperatorReservedProtocolInfo2 mWDSGetCurrentSettingsResponse_OperatorReservedProtocolInfo2; +}; + +// Structure to describe request TLV 0x01 for WDSSetMIPMode() +struct sWDSSetMIPModeRequest_MobileIPMode +{ + eQMIMobileIPModes mMIPMode; +}; + +// Structure to describe response TLV 0x01 for WDSGetMIPMode() +struct sWDSGetMIPModeResponse_MobileIPMode +{ + eQMIMobileIPModes mMIPMode; +}; + +// Structure to describe response TLV 0x01 for WDSGetDormancy() +struct sWDSGetDormancyResponse_DormancyStatus +{ + eQMIDormancyStatus mDormancyStatus; +}; + +// Structure to describe response TLV 0x01 for WDSGetAutoconnectSetting() +struct sWDSGetAutoconnectSettingResponse_Autoconnect +{ + eQMIWDSAutoconnectSettings mAutoconnectSetting; +}; + +// Structure to describe response TLV 0x10 for WDSGetAutoconnectSetting() +struct sWDSGetAutoconnectSettingResponse_Roam +{ + eQMIWDSAutoconnectRoamSettings mAutoconnectRoamSetting; +}; + +// Structure to describe response TLV 0x01 for WDSGetDataSessionDuration() +struct sWDSGetDataSessionDurationResponse_Duration +{ + UINT64 mDataSessionDuration; +}; + +// Structure to describe response TLV 0x10 for WDSGetDataSessionDuration() +struct sWDSGetDataSessionDurationResponse_PreviousDuration +{ + UINT64 mPreviousDataSessionDuration; +}; + +// Structure to describe response TLV 0x11 for WDSGetDataSessionDuration() +struct sWDSGetDataSessionDurationResponse_ActiveDuration +{ + UINT64 mDataSessionActiveDuration; +}; + +// Structure to describe response TLV 0x12 for WDSGetDataSessionDuration() +struct sWDSGetDataSessionDurationResponse_PreviousActiveDuration +{ + UINT64 mPreviousDataSessionActiveDuration; +}; + +// Structure to describe response TLV 0x01 for WDSGetModemStatus() +struct sWDSGetModemStatusResponse_Status +{ + eQMIConnectionStatus mConnectionStatus; + UINT64 mDataSessionDuration; +}; + +// Structure to describe response TLV 0x10 for WDSGetModemStatus() +struct sWDSGetModemStatusResponse_CallEndReason +{ + eQMICallEndReasons mCallEnd; +}; + +// Structure to describe indication TLV 0x01 for WDS ModemStatusReport +struct sWDSModemStatusReportIndication_Status +{ + eQMIConnectionStatus mConnectionStatus; +}; + +// Structure to describe indication TLV 0x10 for WDS ModemStatusReport +struct sWDSModemStatusReportIndication_CallEndReason +{ + eQMICallEndReasons mCallEnd; +}; + +// Structure to describe response TLV 0x01 for WDSGetDataBearerTechnology() +struct sWDSGetDataBearerTechnologyResponse_Technology +{ + eQMIDataBearerTechnologies mDataBearerTechnology; +}; + +// Structure to describe response TLV 0x10 for WDSGetDataBearerTechnology() +struct sWDSGetDataBearerTechnologyResponse_LastCallTechnology +{ + eQMIDataBearerTechnologies mDataBearerTechnology; +}; + +// Structure to describe request TLV 0x01 for WDSGetModemInfo() +struct sWDSGetModemInfoRequest_RequestedStatus +{ + bool mConnectionStatus:1; + bool mLastCallEndReason:1; + bool mRXTXByteTotals:1; + bool mDormancyStatus:1; + bool mDataBearerTechnology:1; + bool mChannelRates:1; + bool mDuration:1; + + // Padding out 25 bits + UINT8 mReserved1:1; + UINT8 mReserved2[3]; +}; + +// Structure to describe request TLV 0x10 for WDSGetModemInfo() +struct sWDSGetModemInfoRequest_ConnectionStatusIndicator +{ + INT8 mReportConnectionStatus; +}; + +// Structure to describe request TLV 0x11 for WDSGetModemInfo() +struct sWDSGetModemInfoRequest_TransferStatisticsIndicator +{ + UINT8 mTransferStatisticsIntervalSeconds; + + // Padding out 6 bits + UINT8 mReserved1:6; + + bool mTXByteTotal:1; + bool mRXByteTotal:1; + + // Padding out 24 bits + UINT8 mReserved2[3]; +}; + +// Structure to describe request TLV 0x12 for WDSGetModemInfo() +struct sWDSGetModemInfoRequest_DormancyStatusIndicator +{ + INT8 mReportDormancyStatus; +}; + +// Structure to describe request TLV 0x13 for WDSGetModemInfo() +struct sWDSGetModemInfoRequest_DataBearerTechnologyIndicator +{ + INT8 mReportDataBearerTechnology; +}; + +// Structure to describe request TLV 0x14 for WDSGetModemInfo() +struct sWDSGetModemInfoRequest_ChannelRateIndicator +{ + INT8 mReportChannelRate; +}; + +// Structure to describe response TLV 0x10 for WDSGetModemInfo() +struct sWDSGetModemInfoResponse_Status +{ + eQMIConnectionStatus mConnectionStatus; + UINT64 mDataSessionDuration; +}; + +// Structure to describe response TLV 0x11 for WDSGetModemInfo() +struct sWDSGetModemInfoResponse_CallEndReason +{ + eQMICallEndReasons mCallEnd; +}; + +// Structure to describe response TLV 0x12 for WDSGetModemInfo() +struct sWDSGetModemInfoResponse_TXBytes +{ + UINT64 mTXByteTotal; +}; + +// Structure to describe response TLV 0x13 for WDSGetModemInfo() +struct sWDSGetModemInfoResponse_RXBytes +{ + UINT64 mRXByteTotal; +}; + +// Structure to describe response TLV 0x14 for WDSGetModemInfo() +struct sWDSGetModemInfoResponse_DormancyStatus +{ + eQMIDormancyStatus mDormancyStatus; +}; + +// Structure to describe response TLV 0x15 for WDSGetModemInfo() +struct sWDSGetModemInfoResponse_Technology +{ + eQMIDataBearerTechnologies mDataBearerTechnology; +}; + +// Structure to describe response TLV 0x16 for WDSGetModemInfo() +struct sWDSGetModemInfoResponse_Rates +{ + UINT32 mChannelTXRatebps; + UINT32 mChannelRXRatebps; + UINT32 mMaxChannelTXRatebps; + UINT32 mMaxChannelRXRatebps; +}; + +// Structure to describe response TLV 0x17 for WDSGetModemInfo() +struct sWDSGetModemInfoResponse_PreviousTXBytes +{ + UINT64 mPreviousCallTXByteTotal; +}; + +// Structure to describe response TLV 0x18 for WDSGetModemInfo() +struct sWDSGetModemInfoResponse_PreviousRXBytes +{ + UINT64 mPreviousCallRXByteTotal; +}; + +// Structure to describe response TLV 0x19 for WDSGetModemInfo() +struct sWDSGetModemInfoResponse_ActiveDuration +{ + UINT64 mDataSessionActiveDuration; +}; + +// Structure to describe response TLV 0x20 for WDSGetModemInfo() +struct sWDSGetModemInfoResponse_LastCallTechnology +{ + eQMIDataBearerTechnologies mDataBearerTechnology; +}; + +// Structure to describe indication TLV 0x10 for WDS ModemInfoReport +struct sWDSModemInfoReportIndication_Status +{ + eQMIConnectionStatus mConnectionStatus; +}; + +// Structure to describe indication TLV 0x11 for WDS ModemInfoReport +struct sWDSModemInfoReportIndication_CallEndReason +{ + eQMICallEndReasons mCallEnd; +}; + +// Structure to describe indication TLV 0x12 for WDS ModemInfoReport +struct sWDSModemInfoReportIndication_TXBytes +{ + UINT64 mTXByteTotal; +}; + +// Structure to describe indication TLV 0x13 for WDS ModemInfoReport +struct sWDSModemInfoReportIndication_RXBytes +{ + UINT64 mRXByteTotal; +}; + +// Structure to describe indication TLV 0x14 for WDS ModemInfoReport +struct sWDSModemInfoReportIndication_DormancyStatus +{ + eQMIDormancyStatus mDormancyStatus; +}; + +// Structure to describe indication TLV 0x15 for WDS ModemInfoReport +struct sWDSModemInfoReportIndication_Technology +{ + eQMIDataBearerTechnologies mDataBearerTechnology; +}; + +// Structure to describe indication TLV 0x16 for WDS ModemInfoReport +struct sWDSModemInfoReportIndication_Rates +{ + UINT32 mChannelTXRatebps; + UINT32 mChannelRXRatebps; +}; + +// Structure to describe response TLV 0x01 for WDSGetActiveMIPProfile() +struct sWDSGetActiveMIPProfileResponse_Index +{ + UINT8 mProfileIndex; +}; + +// Structure to describe request TLV 0x01 for WDSSetActiveMIPProfile() +struct sWDSSetActiveMIPProfileRequest_Index +{ + char mSPC[6]; + UINT8 mProfileIndex; +}; + +// Structure to describe request TLV 0x01 for WDSGetMIPProfile() +struct sWDSGetMIPProfileRequest_Index +{ + UINT8 mProfileIndex; +}; + +// Structure to describe response TLV 0x10 for WDSGetMIPProfile() +struct sWDSGetMIPProfileResponse_State +{ + INT8 mEnabled; +}; + +// Structure to describe response TLV 0x11 for WDSGetMIPProfile() +struct sWDSGetMIPProfileResponse_HomeAddress +{ + UINT8 mIPV4Address[4]; +}; + +// Structure to describe response TLV 0x12 for WDSGetMIPProfile() +struct sWDSGetMIPProfileResponse_PrimaryHomeAgentAddress +{ + UINT8 mIPV4Address[4]; +}; + +// Structure to describe response TLV 0x13 for WDSGetMIPProfile() +struct sWDSGetMIPProfileResponse_SecondaryHomeAgentAddress +{ + UINT8 mIPV4Address[4]; +}; + +// Structure to describe response TLV 0x14 for WDSGetMIPProfile() +struct sWDSGetMIPProfileResponse_ReverseTunneling +{ + INT8 mReverseTunneling; +}; + +// Structure to describe response TLV 0x15 for WDSGetMIPProfile() +struct sWDSGetMIPProfileResponse_NAI +{ + // String is variable length, but must be size of the container + // char mNAI[1]; +}; + +// Structure to describe response TLV 0x16 for WDSGetMIPProfile() +struct sWDSGetMIPProfileResponse_HASPI +{ + UINT32 mHASPI; +}; + +// Structure to describe response TLV 0x17 for WDSGetMIPProfile() +struct sWDSGetMIPProfileResponse_AAASPI +{ + UINT32 mAAASPI; +}; + +// Structure to describe response TLV 0x1A for WDSGetMIPProfile() +struct sWDSGetMIPProfileResponse_HAState +{ + eQMIHAAAAKeyStates mKeyState; +}; + +// Structure to describe response TLV 0x1B for WDSGetMIPProfile() +struct sWDSGetMIPProfileResponse_AAAState +{ + eQMIHAAAAKeyStates mKeyState; +}; + +// Structure to describe request TLV 0x01 for WDSSetMIPProfile() +struct sWDSSetMIPProfileRequest_Index +{ + char mSPC[6]; + UINT8 mProfileIndex; +}; + +// Structure to describe request TLV 0x10 for WDSSetMIPProfile() +struct sWDSSetMIPProfileRequest_State +{ + INT8 mEnabled; +}; + +// Structure to describe request TLV 0x11 for WDSSetMIPProfile() +struct sWDSSetMIPProfileRequest_HomeAddress +{ + UINT8 mIPV4Address[4]; +}; + +// Structure to describe request TLV 0x12 for WDSSetMIPProfile() +struct sWDSSetMIPProfileRequest_PrimaryHomeAgentAddress +{ + UINT8 mIPV4Address[4]; +}; + +// Structure to describe request TLV 0x13 for WDSSetMIPProfile() +struct sWDSSetMIPProfileRequest_SecondaryHomeAgentAddress +{ + UINT8 mIPV4Address[4]; +}; + +// Structure to describe request TLV 0x14 for WDSSetMIPProfile() +struct sWDSSetMIPProfileRequest_ReverseTunneling +{ + INT8 mReverseTunneling; +}; + +// Structure to describe request TLV 0x15 for WDSSetMIPProfile() +struct sWDSSetMIPProfileRequest_NAI +{ + // String is variable length, but must be size of the container + // char mNAI[1]; +}; + +// Structure to describe request TLV 0x16 for WDSSetMIPProfile() +struct sWDSSetMIPProfileRequest_HASPI +{ + UINT32 mHASPI; +}; + +// Structure to describe request TLV 0x17 for WDSSetMIPProfile() +struct sWDSSetMIPProfileRequeste_AAASPI +{ + UINT32 mAAASPI; +}; + +// Structure to describe request TLV 0x18 for WDSSetMIPProfile() +struct sWDSSetMIPProfileRequest_MNHA +{ + // String is variable length, but must be size of the container + // char mMNHAKey[1]; +}; + +// Structure to describe request TLV 0x19 for WDSSetMIPProfile() +struct sWDSSetMIPProfileRequest_MNAAA +{ + // String is variable length, but must be size of the container + // char mMNAAAKey[1]; +}; + +// Structure to describe response TLV 0x10 for WDSGetMIPParameters() +struct sWDSGetMIPParametersResponse_MobileIPMode +{ + eQMIMobileIPModes mMIPMode; +}; + +// Structure to describe response TLV 0x11 for WDSGetMIPParameters() +struct sWDSGetMIPParametersResponse_RetryAttemptLimit +{ + UINT8 mRetryAttemptLimit; +}; + +// Structure to describe response TLV 0x12 for WDSGetMIPParameters() +struct sWDSGetMIPParametersResponse_RetryAttemptInterval +{ + UINT8 mRetryAttemptInterval; +}; + +// Structure to describe response TLV 0x13 for WDSGetMIPParameters() +struct sWDSGetMIPParametersResponse_ReRegistrationPeriod +{ + UINT8 mReRegistrationPeriod; +}; + +// Structure to describe response TLV 0x14 for WDSGetMIPParameters() +struct sWDSGetMIPParametersResponse_ReRegistrationOnlyWithTraffic +{ + INT8 mReRegistrationOnlyWithTraffic; +}; + +// Structure to describe response TLV 0x15 for WDSGetMIPParameters() +struct sWDSGetMIPParametersResponse_MNHAAuthenticatorCalculator +{ + INT8 mMNHAAuthenticatorCalculator; +}; + +// Structure to describe response TLV 0x16 for WDSGetMIPParameters() +struct sWDSGetMIPParametersResponse_MNHARFC2002BISAuthentication +{ + INT8 mMNHARFC2002BISAuthentication; +}; + +// Structure to describe request TLV 0x01 for WDSSetMIPParameters() +struct sWDSSetMIPParametersRequest_SPC +{ + char mSPC[6]; +}; + +// Structure to describe request TLV 0x10 for WDSSetMIPParameters() +struct sWDSSetMIPParametersRequest_MobileIPMode +{ + eQMIMobileIPModes mMIPMode; +}; + +// Structure to describe request TLV 0x11 for WDSSetMIPParameters() +struct sWDSSetMIPParametersRequest_RetryAttemptLimit +{ + UINT8 mRetryAttemptLimit; +}; + +// Structure to describe request TLV 0x12 for WDSSetMIPParameters() +struct sWDSSetMIPParametersRequest_RetryAttemptInterval +{ + UINT8 mRetryAttemptInterval; +}; + +// Structure to describe request TLV 0x13 for WDSSetMIPParameters() +struct sWDSSetMIPParametersRequest_ReRegistrationPeriod +{ + UINT8 mReRegistrationPeriod; +}; + +// Structure to describe request TLV 0x14 for WDSSetMIPParameters() +struct sWDSSetMIPParametersRequest_ReRegistrationOnlyWithTraffic +{ + INT8 mReRegistrationOnlyWithTraffic; +}; + +// Structure to describe request TLV 0x15 for WDSSetMIPParameters() +struct sWDSSetMIPParametersRequest_MNHAAuthenticatorCalculator +{ + INT8 mMNHAAuthenticatorCalculator; +}; + +// Structure to describe request TLV 0x16 for WDSSetMIPParameters() +struct sWDSSetMIPParametersRequest_MNHARFC2002BISAuthentication +{ + INT8 mMNHARFC2002BISAuthentication; +}; + +// Structure to describe response TLV 0x01 for WDSGetLastMIPStatus() +struct sWDSGetLastMIPStatusResponse_Status +{ + UINT8 mLastMIPStatus; +}; + +// Structure to describe response TLV 0x01 for WDSGetANAAAAuthenticationStatus() +struct sWDSGetANAAAAuthenticationStatusResponse_Status +{ + INT8 mANAAAAuthenticated; +}; + +// Structure to describe response TLV 0x01 for WDSGetCurrentDataBearerTechnology() +struct sWDSGetCurrentDataBearerTechnologyResponse_Technology +{ + eQMIWDSNetworkTypes mNetworkType; + + // The following union is based on the value of mNetworkType + union uValOfNetworkType + { + // If the value of mNetworkType == 1 + struct sNetworkTypeIs1 + { + bool mCDMA1x:1; + bool mCDMA1xEvDORev0:1; + bool mCDMA1xEvDORevA:1; + bool mCDMA1xEvDORevB:1; + bool mCDMAEHRPD:1; + bool mCDMAFMC:1; + + // Padding out 25 bits + UINT8 mReserved1:2; + UINT8 mReserved2[2]; + UINT8 mReserved3:7; + + bool mNullBearer:1; + + // The following union is for handing both mCDMA1x and mCDMA1xEvDORev(0, A, B) + union uValOfCDMA1x_or_CDMA1xEvDORevX + { + // If the value of mCDMA1x == 1 + struct sCDMA1xIs1 + { + bool mCDMA1xIS95:1; + bool mCDMA1xIS2000:1; + bool mCDMA1xIS2000RelA:1; + + // Padding out 29 bits + UINT8 mReserved4:5; + UINT8 mReserved5[3]; + }; + + sCDMA1xIs1 mCDMA1xIs1; + + // If the value of mCDMA1xEvDORev0 == 1 + struct sCDMA1xEvDORev0Is1 + { + bool mCDMA1xEvDORev0DPA:1; + + // Padding out 31 bits + UINT8 mReserved6:7; + UINT8 mReserved7[3]; + }; + + sCDMA1xEvDORev0Is1 mCDMA1xEvDORev0Is1; + + // If the value of mCDMA1xEvDORevA == 1 + struct sCDMA1xEvDORevAIs1 + { + bool mCDMA1xEvDORevADPA:1; + bool mCDMA1xEvDORevAMFPA:1; + bool mCDMA1xEvDORevAEMPA:1; + bool mCDMA1xEvDORevAEMPAEHRPD:1; + + // Padding out 28 bits + UINT8 mReserved8:4; + UINT8 mReserved9[3]; + }; + + sCDMA1xEvDORevAIs1 mCDMA1xEvDORevAIs1; + + // If the value of mCDMA1xEvDORevB == 1 + struct sCDMA1xEvDORevBIs1 + { + bool mCDMA1xEvDORevBDPA:1; + bool mCDMA1xEvDORevBMFPA:1; + bool mCDMA1xEvDORevBEMPA:1; + bool mCDMA1xEvDORevBEMPAEHRPD:1; + bool mCDMA1xEvDORevBMMPA:1; + bool mCDMA1xEvDORevBMMPAEHRPD:1; + + // Padding out 26 bits + UINT8 mReserved10:2; + UINT8 mReserved11[3]; + }; + + sCDMA1xEvDORevBIs1 mCDMA1xEvDORevBIs1; + + // Padding out 32 bits + UINT8 mReserved12[4]; + }; + + uValOfCDMA1x_or_CDMA1xEvDORevX mValOfCDMA1x_or_CDMA1xEvDORevX; + }; + + sNetworkTypeIs1 mNetworkTypeIs1; + + // If the value of mNetworkType == 2 + struct sNetworkTypeIs2 + { + bool mWCDMA:1; + bool mGPRS:1; + bool mHSDPA:1; + bool mHSUPA:1; + bool mEDGE:1; + bool mLTE:1; + bool mHSDPAPlus:1; + bool mDualCellHSDPAPlus:1; + bool m64QAM:1; + bool mTDSCDMA:1; + + // Padding out 21 bits + UINT8 mReserved13:6; + UINT8 mReserved14; + UINT8 mReserved15:7; + + bool mNullBearer:1; + }; + + sNetworkTypeIs2 mNetworkTypeIs2; + + // Padding out 64 bits + UINT8 mReserved16[8]; + }; + + uValOfNetworkType mValOfNetworkType; +}; + +// Structure to describe response TLV 0x10 for WDSGetCurrentDataBearerTechnology() +struct sWDSGetCurrentDataBearerTechnologyResponse_LastCallTechnology +{ + eQMIWDSNetworkTypes mNetworkType; + + // The following union is based on the value of mNetworkType + union uValOfNetworkType + { + // If the value of mNetworkType == 1 + struct sNetworkTypeIs1 + { + bool mCDMA1x:1; + bool mCDMA1xEvDORev0:1; + bool mCDMA1xEvDORevA:1; + bool mCDMA1xEvDORevB:1; + bool mCDMAEHRPD:1; + bool mCDMAFMC:1; + + // Padding out 25 bits + UINT8 mReserved1:2; + UINT8 mReserved2[2]; + UINT8 mReserved3:7; + + bool mNullBearer:1; + + // The following union is for handing both mCDMA1x and mCDMA1xEvDORev(0, A, B) + union uValOfCDMA1x_or_CDMA1xEvDORevX + { + // If the value of mCDMA1x == 1 + struct sCDMA1xIs1 + { + bool mCDMA1xIS95:1; + bool mCDMA1xIS2000:1; + bool mCDMA1xIS2000RelA:1; + + // Padding out 29 bits + UINT8 mReserved4:5; + UINT8 mReserved5[3]; + }; + + sCDMA1xIs1 mCDMA1xIs1; + + // If the value of mCDMA1xEvDORev0 == 1 + struct sCDMA1xEvDORev0Is1 + { + bool mCDMA1xEvDORev0DPA:1; + + // Padding out 31 bits + UINT8 mReserved6:7; + UINT8 mReserved7[3]; + }; + + sCDMA1xEvDORev0Is1 mCDMA1xEvDORev0Is1; + + // If the value of mCDMA1xEvDORevA == 1 + struct sCDMA1xEvDORevAIs1 + { + bool mCDMA1xEvDORevADPA:1; + bool mCDMA1xEvDORevAMFPA:1; + bool mCDMA1xEvDORevAEMPA:1; + bool mCDMA1xEvDORevAEMPAEHRPD:1; + + // Padding out 28 bits + UINT8 mReserved8:4; + UINT8 mReserved9[3]; + }; + + sCDMA1xEvDORevAIs1 mCDMA1xEvDORevAIs1; + + // If the value of mCDMA1xEvDORevB == 1 + struct sCDMA1xEvDORevBIs1 + { + bool mCDMA1xEvDORevBDPA:1; + bool mCDMA1xEvDORevBMFPA:1; + bool mCDMA1xEvDORevBEMPA:1; + bool mCDMA1xEvDORevBEMPAEHRPD:1; + bool mCDMA1xEvDORevBMMPA:1; + bool mCDMA1xEvDORevBMMPAEHRPD:1; + + // Padding out 26 bits + UINT8 mReserved10:2; + UINT8 mReserved11[3]; + }; + + sCDMA1xEvDORevBIs1 mCDMA1xEvDORevBIs1; + + // Padding out 32 bits + UINT8 mReserved12[4]; + }; + + uValOfCDMA1x_or_CDMA1xEvDORevX mValOfCDMA1x_or_CDMA1xEvDORevX; + }; + + sNetworkTypeIs1 mNetworkTypeIs1; + + // If the value of mNetworkType == 2 + struct sNetworkTypeIs2 + { + bool mWCDMA:1; + bool mGPRS:1; + bool mHSDPA:1; + bool mHSUPA:1; + bool mEDGE:1; + bool mLTE:1; + bool mHSDPAPlus:1; + bool mDualCellHSDPAPlus:1; + bool m64QAM:1; + bool mTDSCDMA:1; + + // Padding out 21 bits + UINT8 mReserved13:6; + UINT8 mReserved14; + UINT8 mReserved15:7; + + bool mNullBearer:1; + }; + + sNetworkTypeIs2 mNetworkTypeIs2; + + // Padding out 64 bits + UINT8 mReserved16[8]; + }; + + uValOfNetworkType mValOfNetworkType; +}; + +// Structure to describe request TLV 0x10 for WDSGetCallList() +struct sWDSGetCallListRequest_ListType +{ + eQMICallHistoryTypes mCallListType; +}; + +// Structure to describe response TLV 0x10 for WDSGetCallList() +struct sWDSGetCallListResponse_FullList +{ + UINT16 mCallRecords; + + struct sRecord + { + UINT16 mID; + eQMICallTypes mType; + eQMIDataBearerTechnologies mDataBearer; + UINT64 mTimestamp; + UINT8 mIPV4Address[4]; + UINT64 mTotalDuration; + UINT64 mActiveDuration; + UINT64 mRXByteTotal; + UINT64 mTXByteTotal; + eQMICallEndReasons mCallEnd; + UINT8 mPhoneNumberLength; + + // This array must be the size specified by mPhoneNumberLength + // char mPhoneNumber[1]; + }; + + // This array must be the size specified by mCallRecords + // sRecord mRecords[1]; +}; + +// Structure to describe response TLV 0x11 for WDSGetCallList() +struct sWDSGetCallListResponse_IDList +{ + UINT16 mCallRecords; + + struct sRecord + { + UINT16 mID; + }; + + // This array must be the size specified by mCallRecords + // sRecord mRecords[1]; +}; + +// Structure to describe request TLV 0x01 for WDSGetCallRecord() +struct sWDSGetCallRecordRequest_RecordID +{ + UINT16 mID; +}; + +// Structure to describe response TLV 0x01 for WDSGetCallRecord() +struct sWDSGetCallRecordResponse_Record +{ + UINT16 mID; + eQMICallTypes mType; + eQMIDataBearerTechnologies mDataBearer; + UINT64 mTimestamp; + UINT8 mIPV4Address[4]; + UINT64 mTotalDuration; + UINT64 mActiveDuration; + UINT64 mRXByteTotal; + UINT64 mTXByteTotal; + eQMICallEndReasons mCallEnd; + UINT8 mPhoneNumberLength; + + // This array must be the size specified by mPhoneNumberLength + // char mPhoneNumber[1]; +}; + +// Structure to describe response TLV 0x01 for WDSGetCallListMaxSize() +struct sWDSGetCallListMaxSizeResponse_Maximum +{ + UINT16 mCallListMaxSize; +}; + +// Structure to describe request TLV 0x01 for WDSGetDefaultProfileNumber() +struct sWDSGetDefaultProfileNumberRequest_ProfileType +{ + eQMIProfileTypes mProfileType; + eQMIWDSProfileFamily mProfileFamily; +}; + +// Structure to describe response TLV 0x01 for WDSGetDefaultProfileNumber() +struct sWDSGetDefaultProfileNumberResponse_ProfileNumber +{ + UINT8 mProfileIndex; +}; + +// Structure to describe response TLV 0xE0 for WDSGetDefaultProfileNumber() +struct sWDSGetDefaultProfileNumberResponse_ExtendedErrorCode +{ + eQMIWDSExtendedErrorCode mExtendedErrorCode; +}; + +// Structure to describe request TLV 0x01 for WDSSetDefaultProfileNumber() +struct sWDSSetDefaultProfileNumberRequest_ProfileIdentifier +{ + eQMIProfileTypes mProfileType; + eQMIWDSProfileFamily mProfileFamily; + UINT8 mProfileIndex; +}; + +// Structure to describe response TLV 0xE0 for WDSSetDefaultProfileNumber() +struct sWDSSetDefaultProfileNumberResponse_ExtendedErrorCode +{ + eQMIWDSExtendedErrorCode mExtendedErrorCode; +}; + +// Structure to describe request TLV 0x01 for WDSResetProfile() +struct sWDSResetProfileRequest_ProfileIdentifier +{ + eQMIProfileTypes mProfileType; + UINT8 mProfileIndex; +}; + +// Structure to describe response TLV 0xE0 for WDSResetProfile() +struct sWDSResetProfileResponse_ExtendedErrorCode +{ + eQMIWDSExtendedErrorCode mExtendedErrorCode; +}; + +// Structure to describe request TLV 0x01 for WDSResetProfileParamToInvalid() +struct sWDSResetProfileParamToInvalidRequest_ProfileParam +{ + eQMIProfileTypes mProfileType; + UINT8 mProfileIndex; + eQMIWDSProfileParamID mProfileParamID; +}; + +// Structure to describe response TLV 0xE0 for WDSResetProfileParamToInvalid() +struct sWDSResetProfileParamToInvalidResponse_ExtendedErrorCode +{ + eQMIWDSExtendedErrorCode mExtendedErrorCode; +}; + +// Structure to describe request TLV 0x01 for WDSSetIPFamilyPreference() +struct sWDSSetIPFamilyPreferenceRequest_IPFamilyPreference +{ + eQMIWDSIPFamilies mIPFamily; +}; + +// Structure to describe request TLV 0x01 for WDSSetFMCTunnelParameters() +struct sWDSSetFMCTunnelParametersRequest_Parameters +{ + UINT32 mStreamID; + INT8 mNATIsPresent; + UINT16 mPortID; +}; + +// Structure to describe request TLV 0x10 for WDSSetFMCTunnelParameters() +struct sWDSSetFMCTunnelParametersRequest_IPv4Address +{ + UINT8 mIPV4Address[4]; +}; + +// Structure to describe request TLV 0x11 for WDSSetFMCTunnelParameters() +struct sWDSSetFMCTunnelParametersRequest_IPv6Address +{ + UINT16 mIPv6Address[8]; +}; + +// Structure to describe response TLV 0x10 for WDSGetFMCTunnelParameters() +struct sWDSGetFMCTunnelParametersResponse_Parameters +{ + UINT32 mStreamID; + INT8 mNATIsPresent; + UINT16 mPortID; +}; + +// Structure to describe response TLV 0x11 for WDSGetFMCTunnelParameters() +struct sWDSGetFMCTunnelParametersResponse_IPv4Address +{ + UINT8 mIPV4Address[4]; +}; + +// Structure to describe response TLV 0x12 for WDSGetFMCTunnelParameters() +struct sWDSGetFMCTunnelParametersResponse_IPv6Address +{ + UINT16 mIPv6Address[8]; +}; + +// Structure to describe request TLV 0x01 for WDSSetAutoconnectSetting() +struct sWDSSetAutoconnectSettingRequest_Autoconnect +{ + eQMIWDSAutoconnectSettings mAutoconnectSetting; +}; + +// Structure to describe request TLV 0x10 for WDSSetAutoconnectSetting() +struct sWDSSetAutoconnectSettingRequest_Roam +{ + eQMIWDSAutoconnectRoamSettings mAutoconnectRoamSetting; +}; + +// Structure to describe response TLV 0x10 for WDSGetDNSSetting() +struct sWDSGetDNSSettingResponse_PrimaryDNS +{ + UINT8 mIPV4Address[4]; +}; + +// Structure to describe response TLV 0x11 for WDSGetDNSSetting() +struct sWDSGetDNSSettingResponse_SecondaryDNS +{ + UINT8 mIPV4Address[4]; +}; + +// Structure to describe response TLV 0x12 for WDSGetDNSSetting() +struct sWDSGetDNSSettingResponse_PrimaryIPv6DNS +{ + UINT16 mIPv6Address[8]; +}; + +// Structure to describe response TLV 0x13 for WDSGetDNSSetting() +struct sWDSGetDNSSettingResponse_SecondaryIPv6DNS +{ + UINT16 mIPv6Address[8]; +}; + +// Structure to describe request TLV 0x10 for WDSSetDNSSetting() +struct sWDSSetDNSSettingRequest_PrimaryDNS +{ + UINT8 mIPV4Address[4]; +}; + +// Structure to describe request TLV 0x11 for WDSSetDNSSetting() +struct sWDSSetDNSSettingRequest_SecondaryDNS +{ + UINT8 mIPV4Address[4]; +}; + +// Structure to describe request TLV 0x12 for WDSSetDNSSetting() +struct sWDSSetDNSSettingRequest_PrimaryIPv6DNS +{ + UINT16 mIPv6Address[8]; +}; + +// Structure to describe request TLV 0x13 for WDSSetDNSSetting() +struct sWDSSetDNSSettingRequest_SecondaryIPv6DNS +{ + UINT16 mIPv6Address[8]; +}; + +// Structure to describe response TLV 0x01 for WDSGetCDMAPreDormancySettings() +struct sWDSGetCDMAPreDormancySettingsResponse_Settings +{ + eQMIWDSCDMAServiceOptions mServiceOption; + eQMIWDSCDMANetworks mDataSessionNetwork; +}; + +// Structure to describe request TLV 0x01 for WDSSetCAMTimer() +struct sWDSSetCAMTimerRequest_Timer +{ + UINT32 mCAMTimerSeconds; +}; + +// Structure to describe response TLV 0x01 for WDSGetCAMTimer() +struct sWDSGetCAMTimerResponse_Timer +{ + UINT32 mCAMTimerSeconds; +}; + +// Structure to describe request TLV 0x01 for WDSSetSCRM() +struct sWDSSetSCRMRequest_SCRM +{ + INT8 mSCRMEnabled; +}; + +// Structure to describe response TLV 0x01 for WDSGetSCRM() +struct sWDSGetSCRMResponse_SCRM +{ + INT8 mSCRMEnabled; +}; + +// Structure to describe request TLV 0x01 for WDSSetRDUD() +struct sWDSSetRDUDRequest_RDUD +{ + INT8 mRDUDEnabled; +}; + +// Structure to describe response TLV 0x01 for WDSGetRDUD() +struct sWDSGetRDUDResponse_RDUD +{ + INT8 mRDUDEnabled; +}; + +// Structure to describe response TLV 0x01 for WDSGetSIPMIPCallType() +struct sWDSGetSIPMIPCallTypeResponse_CallType +{ + eQMIWDSSIPMIPCallTypes mCallType; +}; + +// Structure to describe request TLV 0x01 for WDSSetEVDOPageMonitorPeriod() +struct sWDSSetEVDOPageMonitorPeriodRequest_Period +{ + UINT8 mPageMonitorPeriod; +}; + +// Structure to describe indication TLV 0x01 for WDS EVDOPageMonitorPeriodIndication +struct sWDSEVDOPageMonitorPeriodIndication_Result +{ + eQMIWDSSlotCycleSetResults mSlotCycleSetResult; +}; + +// Structure to describe request TLV 0x01 for WDSSetEVDOLongSleep() +struct sWDSSetEVDOLongSleepRequest_Setting +{ + INT8 mForceLongSleep; +}; + +// Structure to describe response TLV 0x01 for WDSGetEVDOPageMonitorPeriod() +struct sWDSGetEVDOPageMonitorPeriodResponse_Details +{ + UINT8 mPageMonitorPeriod; + INT8 mForceLongSleep; +}; + +// Structure to describe response TLV 0x01 for WDSGetCallThrottleInfo() +struct sWDSGetCallThrottleInfoResponse_Details +{ + UINT32 mEVDOThrottledDelaySeconds; + UINT32 mCDMAThrottledDelaySeconds; +}; + +// Structure to describe request TLV 0x01 for WDSGetNSAPI() +struct sWDSGetNSAPIRequest_APN +{ + // String is variable length, but must be size of the container + // char mAPNName[1]; +}; + +// Structure to describe response TLV 0x01 for WDSGetNSAPI() +struct sWDSGetNSAPIResponse_NSAPI +{ + UINT8 mNSAPICount; + + // This array must be the size specified by mNSAPICount + // UINT8 mNSAPI[1]; +}; + +// Structure to describe request TLV 0x01 for WDSSetDUNCallControlPreference() +struct sWDSSetDUNCallControlPreferenceRequest_Preference +{ + eQMIWDSDUNControlPreferences mDUNControl; +}; + +// Structure to describe request TLV 0x10 for WDSSetDUNCallControlPreference() +struct sWDSSetDUNCallControlPreferenceRequest_AllowDUN +{ + INT8 mAllowDUNCalls; +}; + +// Structure to describe response TLV 0x01 for WDSGetDUNCallControlInfo() +struct sWDSGetDUNCallControlInfoResponse_Status +{ + INT8 mDUNControlEnabled; +}; + +// Structure to describe response TLV 0x10 for WDSGetDUNCallControlInfo() +struct sWDSGetDUNCallControlInfoResponse_AllowDUN +{ + INT8 mAllowDUNCalls; +}; + +// Structure to describe response TLV 0x11 for WDSGetDUNCallControlInfo() +struct sWDSGetDUNCallControlInfoResponse_CurrentClient +{ + INT8 mSetByCurrentClient; +}; + +// Structure to describe response TLV 0x12 for WDSGetDUNCallControlInfo() +struct sWDSGetDUNCallControlInfoResponse_ReportMask +{ + bool mSendDUNCallNotifications:1; + bool mSendEntitlementNotifications:1; + bool mSendSilentRedailNotifications:1; + + // Padding out 5 bits + UINT8 mReserved1:5; +}; + +// Structure to describe request TLV 0x01 for WDSSetDUNCallControlEventReport() +struct sWDSSetDUNCallControlEventReportRequest_CallNotifications +{ + INT8 mEnableDUNCallNotifications; +}; + +// Structure to describe request TLV 0x10 for WDSSetDUNCallControlEventReport() +struct sWDSSetDUNCallControlEventReportRequest_EntitlementNotifications +{ + INT8 mEnableEntitlementNotifications; +}; + +// Structure to describe request TLV 0x11 for WDSSetDUNCallControlEventReport() +struct sWDSSetDUNCallControlEventReportRequest_RedialNotifications +{ + INT8 mEnableSilentRedailNotifications; +}; + +// Structure to describe response TLV 0x01 for WDSSetDUNCallControlEventReport() +struct sWDSSetDUNCallControlEventReportResponse_ReportMask +{ + bool mSendDUNCallNotifications:1; + bool mSendEntitlementNotifications:1; + bool mSendSilentRedailNotifications:1; + + // Padding out 5 bits + UINT8 mReserved1:5; +}; + +// Structure to describe indication TLV 0x01 for WDS DUNCallControlEventReport +struct sWDSDUNCallControlEventReportIndication_Event +{ + eQMIWDSDUNControlEvents mDUNControlEvent; +}; + +// Structure to describe indication TLV 0x10 for WDS DUNCallControlEventReport +struct sWDSDUNCallControlEventReportIndication_CallNotification +{ + INT8 mDUNCallAllowed; +}; + +// Structure to describe indication TLV 0x11 for WDS DUNCallControlEventReport +struct sWDSDUNCallControlEventReportIndication_CallID +{ + UINT8 mDUNCallID; +}; + +// Structure to describe indication TLV 0x12 for WDS DUNCallControlEventReport +struct sWDSDUNCallControlEventReportIndication_PreviousFailureReason +{ + eQMIWDSCallEndReasonTypes mCallEndReasonType; + + // The following union is based on the value of mCallEndReasonType + union uValOfCallEndReasonType + { + // Always present + UINT16 mCallEndReasonValue; + + // If the value of mCallEndReasonType == 1 + struct sCallEndReasonTypeIs1 + { + eQMIWDSMobileIPCallEndReasons mMobileIPCallEndReason; + }; + + sCallEndReasonTypeIs1 mCallEndReasonTypeIs1; + + // If the value of mCallEndReasonType == 2 + struct sCallEndReasonTypeIs2 + { + eQMIWDSInternalCallEndReasons mInternalCallEndReason; + }; + + sCallEndReasonTypeIs2 mCallEndReasonTypeIs2; + + // If the value of mCallEndReasonType == 3 + struct sCallEndReasonTypeIs3 + { + eQMIWDSCallManagerCallEndReasons mCallManagerCallEndReason; + }; + + sCallEndReasonTypeIs3 mCallEndReasonTypeIs3; + + // If the value of mCallEndReasonType == 6 + struct sCallEndReasonTypeIs6 + { + eQMIWDS3GPPCallEndReasons m3GPPCallEndReason; + }; + + sCallEndReasonTypeIs6 mCallEndReasonTypeIs6; + + // If the value of mCallEndReasonType == 7 + struct sCallEndReasonTypeIs7 + { + eQMIWDSPPPCallEndReason mPPPCallEndReason; + }; + + sCallEndReasonTypeIs7 mCallEndReasonTypeIs7; + + // If the value of mCallEndReasonType == 8 + struct sCallEndReasonTypeIs8 + { + eQMIWDSEHRPDCallEndReason mEHRPDCallEndReason; + }; + + sCallEndReasonTypeIs8 mCallEndReasonTypeIs8; + + // If the value of mCallEndReasonType == 9 + struct sCallEndReasonTypeIs9 + { + eQMIWDSIPv6CallEndReason mIPv6CallEndReason; + }; + + sCallEndReasonTypeIs9 mCallEndReasonTypeIs9; + + // Padding out 16 bits + UINT8 mReserved1[2]; + }; + + uValOfCallEndReasonType mValOfCallEndReasonType; +}; + +// Structure to describe request TLV 0x01 for WDSPendingDUNCallControl() +struct sWDSPendingDUNCallControlRequest_Action +{ + INT8 mDUNCallAllowed; +}; + +// Structure to describe request TLV 0x02 for WDSPendingDUNCallControl() +struct sWDSPendingDUNCallControlRequest_CallID +{ + UINT8 mDUNCallID; +}; + +// Structure to describe request TLV 0x01 for WDSEMBMSTMGIActivate() +struct sWDSEMBMSTMGIActivateRequest_TMGI +{ + UINT8 mTMGI[6]; + INT8 mSessionIDValid; + UINT8 mSessionID; +}; + +// Structure to describe request TLV 0x10 for WDSEMBMSTMGIActivate() +struct sWDSEMBMSTMGIActivateRequest_TransactionID +{ + INT16 mTransactionID; +}; + +// Structure to describe request TLV 0x11 for WDSEMBMSTMGIActivate() +struct sWDSEMBMSTMGIActivateRequest_PreemptPriority +{ + UINT32 mPreemptPriority; +}; + +// Structure to describe request TLV 0x12 for WDSEMBMSTMGIActivate() +struct sWDSEMBMSTMGIActivateRequest_EARFCNList +{ + UINT8 mEARFCNCount; + + // This array must be the size specified by mEARFCNCount + // UINT16 mEARFCN[1]; +}; + +// Structure to describe response TLV 0x10 for WDSEMBMSTMGIActivate() +struct sWDSEMBMSTMGIActivateResponse_ExtendedError +{ + eQMIWDSEMBMSErrorCodes mExtendedEMBMSErrorCode; +}; + +// Structure to describe indication TLV 0x01 for WDS EMBMSTMGIActivateIndication +struct sWDSEMBMSTMGIActivateIndication_Status +{ + eQMIWDSEMBMSOperationStatus mTMGIOperationStatus; +}; + +// Structure to describe indication TLV 0x02 for WDS EMBMSTMGIActivateIndication +struct sWDSEMBMSTMGIActivateIndication_TMGI +{ + UINT8 mTMGI[6]; + INT8 mSessionIDValid; + UINT8 mSessionID; +}; + +// Structure to describe indication TLV 0x10 for WDS EMBMSTMGIActivateIndication +struct sWDSEMBMSTMGIActivateIndication_TransactionID +{ + INT16 mTransactionID; +}; + +// Structure to describe request TLV 0x01 for WDSEMBMSTMGIDeactivate() +struct sWDSEMBMSTMGIDeactivateRequest_TMGI +{ + UINT8 mTMGI[6]; + INT8 mSessionIDValid; + UINT8 mSessionID; +}; + +// Structure to describe request TLV 0x10 for WDSEMBMSTMGIDeactivate() +struct sWDSEMBMSTMGIDeactivateRequest_TransactionID +{ + INT16 mTransactionID; +}; + +// Structure to describe response TLV 0x10 for WDSEMBMSTMGIDeactivate() +struct sWDSEMBMSTMGIDeactivateResponse_ExtendedError +{ + eQMIWDSEMBMSErrorCodes mExtendedEMBMSErrorCode; +}; + +// Structure to describe indication TLV 0x01 for WDS EMBMSTMGIDectivateIndication +struct sWDSEMBMSTMGIDectivateIndication_Status +{ + eQMIWDSEMBMSOperationStatus mTMGIOperationStatus; +}; + +// Structure to describe indication TLV 0x02 for WDS EMBMSTMGIDectivateIndication +struct sWDSEMBMSTMGIDectivateIndication_TMGI +{ + UINT8 mTMGI[6]; + INT8 mSessionIDValid; + UINT8 mSessionID; +}; + +// Structure to describe indication TLV 0x10 for WDS EMBMSTMGIDectivateIndication +struct sWDSEMBMSTMGIDectivateIndication_TransactionID +{ + INT16 mTransactionID; +}; + +// Structure to describe request TLV 0x01 for WDSEMBMSTMGIListQuery() +struct sWDSEMBMSTMGIListQueryRequest_Type +{ + eQMIWDSEMBMSListTypes mTMGIListType; +}; + +// Structure to describe request TLV 0x10 for WDSEMBMSTMGIListQuery() +struct sWDSEMBMSTMGIListQueryRequest_TransactionID +{ + INT16 mTransactionID; +}; + +// Structure to describe response TLV 0x10 for WDSEMBMSTMGIListQuery() +struct sWDSEMBMSTMGIListQueryResponse_List +{ + eQMIWDSEMBMSListTypes mTMGIListType; + UINT8 mTMGIListCount; + + struct sEntry + { + UINT8 mTMGI[6]; + INT8 mSessionIDValid; + UINT8 mSessionID; + }; + + // This array must be the size specified by mTMGIListCount + // sEntry mEntrys[1]; +}; + +// Structure to describe response TLV 0x11 for WDSEMBMSTMGIListQuery() +struct sWDSEMBMSTMGIListQueryResponse_OOS +{ + eQMIWDSOOSWarningReasons mOOSWarningReason; +}; + +// Structure to describe indication TLV 0x10 for WDS EMBMSTMGIListIndication +struct sWDSEMBMSTMGIListIndication_List +{ + eQMIWDSEMBMSListTypes mTMGIListType; + UINT8 mTMGIListCount; + + struct sEntry + { + UINT8 mTMGI[6]; + INT8 mSessionIDValid; + UINT8 mSessionID; + }; + + // This array must be the size specified by mTMGIListCount + // sEntry mEntrys[1]; +}; + +// Structure to describe indication TLV 0x11 for WDS EMBMSTMGIListIndication +struct sWDSEMBMSTMGIListIndication_OOS +{ + eQMIWDSOOSWarningReasons mOOSWarningReason; +}; + +// Structure to describe indication TLV 0x12 for WDS EMBMSTMGIListIndication +struct sWDSEMBMSTMGIListIndication_TransactionID +{ + INT16 mTransactionID; +}; + +// Structure to describe response TLV 0x10 for WDSGetPreferredDataSystem() +struct sWDSGetPreferredDataSystemResponse_PreferredDataSystem +{ + eQMIWDSDataSystems mPreferredDataSystem; +}; + +// Structure to describe response TLV 0x10 for WDSGetLastDataCallStatus() +struct sWDSGetLastDataCallStatusResponse_DataCallStatus +{ + eQMIWDSDataCallStatus mDataCallStatus; +}; + +// Structure to describe response TLV 0x11 for WDSGetLastDataCallStatus() +struct sWDSGetLastDataCallStatusResponse_DataCallType +{ + eQMIWDSDataCallTypes mDataCallType; + eQMIWDSTetheredCallTypes mTetheredCallType; +}; + +// Structure to describe response TLV 0x12 for WDSGetLastDataCallStatus() +struct sWDSGetLastDataCallStatusResponse_DataCallAddressFamily +{ + eQMIWDSAddressFamilies mAddressFamily; +}; + +// Structure to describe response TLV 0x10 for WDSGetCurrentDataSystems() +struct sWDSGetCurrentDataSystemsResponse_Systems +{ + eQMIWDSDataSystemNetworkTypes mPreferredNetworkType; + UINT8 mNetworkCount; + + struct sNetwork + { + eQMIWDSDataSystemNetworkTypes mNetworkType; + + // The following union is based on the value of mNetworkType + union uValOfNetworkType + { + // If the value of mNetworkType == 0 + struct sNetworkTypeIs0 + { + bool mWCDMA:1; + bool mGPRS:1; + bool mHSDPA:1; + bool mHSUPA:1; + bool mEDGE:1; + bool mLTE:1; + bool mHSDPAPlus:1; + bool mDualCellHSDPAPlus:1; + bool m64QAM:1; + bool mTDSCDMA:1; + + // Padding out 21 bits + UINT8 mReserved1:6; + UINT8 mReserved2; + UINT8 mReserved3:7; + + bool mNULLBearer:1; + }; + + sNetworkTypeIs0 mNetworkTypeIs0; + + // If the value of mNetworkType == 1 + struct sNetworkTypeIs1 + { + bool mCDMA1x:1; + bool mCDMA1xEvDORev0:1; + bool mCDMA1xEvDORevA:1; + bool mCDMA1xEvDORevB:1; + bool mCDMAEHRPD:1; + bool mCDMAFMC:1; + + // Padding out 25 bits + UINT8 mReserved4:2; + UINT8 mReserved5[2]; + UINT8 mReserved6:7; + + bool mNULLBearer:1; + + // The following union is for handing all mCDMA1x types + union uValOfCDMA1xTypes + { + // If the value of mCDMA1x == 1 + struct sCDMA1xIs1 + { + bool mCDMA1xIS95:1; + bool mCDMA1xIS2000:1; + bool mCDMA1xIS2000RelA:1; + + // Padding out 29 bits + UINT8 mReserved7:5; + UINT8 mReserved8[3]; + }; + + sCDMA1xIs1 mCDMA1xIs1; + + // If the value of mCDMA1xEvDORev0 == 1 + struct sCDMA1xEvDORev0Is1 + { + bool mCDMA1xEvDORev0DPA:1; + + // Padding out 31 bits + UINT8 mReserved9:7; + UINT8 mReserved10[3]; + }; + + sCDMA1xEvDORev0Is1 mCDMA1xEvDORev0Is1; + + // If the value of mCDMA1xEvDORevA == 1 + struct sCDMA1xEvDORevAIs1 + { + bool mCDMA1xEvDORevADPA:1; + bool mCDMA1xEvDORevAMFPA:1; + bool mCDMA1xEvDORevAEMPA:1; + bool mCDMA1xEvDORevAEMPAEHRPD:1; + + // Padding out 28 bits + UINT8 mReserved11:4; + UINT8 mReserved12[3]; + }; + + sCDMA1xEvDORevAIs1 mCDMA1xEvDORevAIs1; + + // If the value of mCDMA1xEvDORevB == 1 + struct sCDMA1xEvDORevBIs1 + { + bool mCDMA1xEvDORevBDPA:1; + bool mCDMA1xEvDORevBMFPA:1; + bool mCDMA1xEvDORevBEMPA:1; + bool mCDMA1xEvDORevBEMPAEHRPD:1; + bool mCDMA1xEvDORevBMMPA:1; + bool mCDMA1xEvDORevBMMPAEHRPD:1; + + // Padding out 26 bits + UINT8 mReserved13:2; + UINT8 mReserved14[3]; + }; + + sCDMA1xEvDORevBIs1 mCDMA1xEvDORevBIs1; + + // Padding out 32 bits + UINT8 mReserved15[4]; + }; + + uValOfCDMA1xTypes mValOfCDMA1xTypes; + }; + + sNetworkTypeIs1 mNetworkTypeIs1; + + // Padding out 64 bits + UINT8 mReserved16[8]; + }; + + uValOfNetworkType mValOfNetworkType; + }; + + // This array must be the size specified by mNetworkCount + // sNetwork mNetworks[1]; +}; + +// Structure to describe request TLV 0x01 for WDSGetPDNThrottleInfo() +struct sWDSGetPDNThrottleInfoRequest_Type +{ + eQMIWDSDataSystemNetworkTypes mTechnologyType; +}; + +// Structure to describe response TLV 0x10 for WDSGetPDNThrottleInfo() +struct sWDSGetPDNThrottleInfoResponse_Info +{ + UINT8 mThrottleInfoCount; + + struct sInfo + { + INT8 mIPv4Throttled; + INT8 mIPv6Throttled; + UINT32 mIPv4ThrottleTimeLeftInMilliseconds; + UINT32 mIPv6ThrottleTimeLeftInMilliseconds; + UINT8 mAPNNameLength; + + // This array must be the size specified by mAPNNameLength + // char mAPNName[1]; + }; + + // This array must be the size specified by mThrottleInfoCount + // sInfo mInfos[1]; +}; + +// Structure to describe response TLV 0x10 for WDSGetLTEAttachParameters() +struct sWDSGetLTEAttachParametersResponse_APNString +{ + // String is variable length, but must be size of the container + // char mAPNName[1]; +}; + +// Structure to describe response TLV 0x11 for WDSGetLTEAttachParameters() +struct sWDSGetLTEAttachParametersResponse_IPSupport +{ + eQMIWDSLTEIPTypes mIPType; +}; + +// Structure to describe response TLV 0x12 for WDSGetLTEAttachParameters() +struct sWDSGetLTEAttachParametersResponse_OTAAttach +{ + INT8 mOTAAttachPerformed; +}; + +// Structure to describe response TLV 0x10 for WDSGetFlowControlStatus() +struct sWDSGetFlowControlStatusResponse_UplinkFlowControl +{ + INT8 mUplinkFlowControlEnabled; +}; + +// Structure to describe request TLV 0x01 for WDSEMBMSTMGISwitch() +struct sWDSEMBMSTMGISwitchRequest_TMGIToActivate +{ + UINT8 mTMGI[6]; + INT8 mSessionIDValid; + UINT8 mSessionID; +}; + +// Structure to describe request TLV 0x02 for WDSEMBMSTMGISwitch() +struct sWDSEMBMSTMGISwitchRequest_TMGIToDeactivate +{ + UINT8 mTMGI[6]; + INT8 mSessionIDValid; + UINT8 mSessionID; +}; + +// Structure to describe request TLV 0x10 for WDSEMBMSTMGISwitch() +struct sWDSEMBMSTMGISwitchRequest_TransactionID +{ + INT16 mTransactionID; +}; + +// Structure to describe request TLV 0x11 for WDSEMBMSTMGISwitch() +struct sWDSEMBMSTMGISwitchRequest_PreemptPriority +{ + UINT32 mPreemptPriority; +}; + +// Structure to describe request TLV 0x12 for WDSEMBMSTMGISwitch() +struct sWDSEMBMSTMGISwitchRequest_EARFCNList +{ + UINT8 mEARFCNCount; + + // This array must be the size specified by mEARFCNCount + // UINT16 mEARFCN[1]; +}; + +// Structure to describe response TLV 0x10 for WDSEMBMSTMGISwitch() +struct sWDSEMBMSTMGISwitchResponse_ExtendedError +{ + eQMIWDSEMBMSErrorCodes mExtendedEMBMSErrorCode; +}; + +// Structure to describe indication TLV 0x01 for WDS EMBMSTMGISwitchIndication +struct sWDSEMBMSTMGISwitchIndication_ActivationStatus +{ + eQMIWDSEMBMSOperationStatus mTMGIOperationStatus; +}; + +// Structure to describe indication TLV 0x02 for WDS EMBMSTMGISwitchIndication +struct sWDSEMBMSTMGISwitchIndication_ActivationTMGI +{ + UINT8 mTMGI[6]; + INT8 mSessionIDValid; + UINT8 mSessionID; +}; + +// Structure to describe indication TLV 0x03 for WDS EMBMSTMGISwitchIndication +struct sWDSEMBMSTMGISwitchIndication_DeactivationStatus +{ + eQMIWDSEMBMSOperationStatus mTMGIOperationStatus; +}; + +// Structure to describe indication TLV 0x04 for WDS EMBMSTMGISwitchIndication +struct sWDSEMBMSTMGISwitchIndication_DeactivationTMGI +{ + UINT8 mTMGI[6]; + INT8 mSessionIDValid; + UINT8 mSessionID; +}; + +// Structure to describe indication TLV 0x10 for WDS EMBMSTMGISwitchIndication +struct sWDSEMBMSTMGISwitchIndication_TransactionID +{ + INT16 mTransactionID; +}; + +// Structure to describe request TLV 0x01 for WDSBindDataPort() +struct sWDSBindDataPortRequest_DataPort +{ + UINT16 mDataPort; +}; + +// Structure to describe request TLV 0x01 for WDSSetPDNFilter() +struct sWDSSetPDNFilterRequest_IPFamily +{ + eQMIWDSIPFamilies mIPFamily; +}; + +// Structure to describe request TLV 0x02 for WDSSetPDNFilter() +struct sWDSSetPDNFilterRequest_NetworkPolicy +{ + bool mEnable3GPP:1; + bool mEnable3GPP2:1; + + // Padding out 6 bits + UINT8 mReserved1:6; + + UINT8 m3GPP2ProfileIndex; + UINT8 m3GPPProfileIndex; +}; + +// Structure to describe request TLV 0x10 for WDSSetPDNFilter() +struct sWDSSetPDNFilterRequest_NextHeaderPolicy +{ + eQMIWDSNextHeaderProtocols mNextHeaderProtocol; +}; + +// Structure to describe request TLV 0x11 for WDSSetPDNFilter() +struct sWDSSetPDNFilterRequest_ProtocolSource +{ + UINT16 mPortRangeStart; + UINT16 mPortRange; +}; + +// Structure to describe response TLV 0x10 for WDSSetPDNFilter() +struct sWDSSetPDNFilterResponse_Handle +{ + UINT32 mPDNFilterHandle; +}; + +// Structure to describe request TLV 0x01 for WDSRemovePDNFilter() +struct sWDSRemovePDNFilterRequest_Handle +{ + UINT32 mPDNFilterHandle; +}; + +// Structure to describe indication TLV 0x10 for WDS ExtendedIPConfigIndication +struct sWDSExtendedIPConfigIndication_ChangedIPConfig +{ + // Padding out 10 bits + UINT8 mReserved1; + UINT8 mReserved2:2; + + bool mPCSCFAddressUsingPCO:1; + + // Padding out 21 bits + UINT8 mReserved3:5; + UINT8 mReserved4[2]; +}; + +// Structure to describe request TLV 0x01 for WDSReverseIPTransportConnectionIndication() +struct sWDSReverseIPTransportConnectionIndicationRequest_Registration +{ + INT8 mRegisterForIndication; +}; + +// Structure to describe indication TLV 0x01 for WDS ReverseIPTransportConnectionIndication +struct sWDSReverseIPTransportConnectionIndication_Status +{ + eQMIWDSReverseIPConnectionStatus mConnectionStatus; +}; + +// Structure to describe indication TLV 0x02 for WDS ReverseIPTransportConnectionIndication +struct sWDSReverseIPTransportConnectionIndication_TransactionID +{ + UINT32 mTransactionID; +}; + +// Structure to describe indication TLV 0x10 for WDS ReverseIPTransportConnectionIndication +struct sWDSReverseIPTransportConnectionIndication_TechnologyName +{ + eQMIWDSReverseIPTechnologyNames mTechnologyName; +}; + +// Structure to describe indication TLV 0x11 for WDS ReverseIPTransportConnectionIndication +struct sWDSReverseIPTransportConnectionIndication_Shared +{ + INT8 mIsShared; +}; + +// Structure to describe indication TLV 0x12 for WDS ReverseIPTransportConnectionIndication +struct sWDSReverseIPTransportConnectionIndication_IPv4Address +{ + UINT8 mIPV4Address[4]; +}; + +// Structure to describe indication TLV 0x13 for WDS ReverseIPTransportConnectionIndication +struct sWDSReverseIPTransportConnectionIndication_IPv4Subnet +{ + UINT8 mIPV4Address[4]; +}; + +// Structure to describe indication TLV 0x14 for WDS ReverseIPTransportConnectionIndication +struct sWDSReverseIPTransportConnectionIndication_IPv6Address +{ + UINT16 mIPv6Address[8]; + UINT8 mIPPrefixLength; +}; + +// Structure to describe response TLV 0x10 for WDSGetIPSecStaticSAConfig() +struct sWDSGetIPSecStaticSAConfigResponse_SecurityParameterIndexRX +{ + INT8 mSecurityParameterIndex; +}; + +// Structure to describe response TLV 0x11 for WDSGetIPSecStaticSAConfig() +struct sWDSGetIPSecStaticSAConfigResponse_SecurityParameterIndexTX +{ + INT8 mSecurityParameterIndex; +}; + +// Structure to describe response TLV 0x12 for WDSGetIPSecStaticSAConfig() +struct sWDSGetIPSecStaticSAConfigResponse_IPSecSAProtocol +{ + eQMIWDSIPSecSAProtocols mIPSecSAProtocol; +}; + +// Structure to describe response TLV 0x13 for WDSGetIPSecStaticSAConfig() +struct sWDSGetIPSecStaticSAConfigResponse_EncapsulationMode +{ + eQMIWDSIPSecSAEncapsulationModes mIPSecSAProtocol; +}; + +// Structure to describe response TLV 0x14 for WDSGetIPSecStaticSAConfig() +struct sWDSGetIPSecStaticSAConfigResponse_DestinationAddress +{ + eQMIWDSAddressFamilies mAddressFamily; + UINT8 mIPAddressLength; + + // This array must be the size specified by mIPAddressLength + // UINT8 mIPAddress[1]; +}; + +// Structure to describe response TLV 0x15 for WDSGetIPSecStaticSAConfig() +struct sWDSGetIPSecStaticSAConfigResponse_LocalAddress +{ + eQMIWDSAddressFamilies mAddressFamily; + UINT8 mIPAddressLength; + + // This array must be the size specified by mIPAddressLength + // UINT8 mIPAddress[1]; +}; + +// Structure to describe response TLV 0x16 for WDSGetIPSecStaticSAConfig() +struct sWDSGetIPSecStaticSAConfigResponse_HashAlgorithm +{ + eQMIWDSIPSecCryptoAlgorithms mAlgorithm; +}; + +// Structure to describe response TLV 0x17 for WDSGetIPSecStaticSAConfig() +struct sWDSGetIPSecStaticSAConfigResponse_HashKeyRX +{ + UINT8 mKeyLength; + + // This array must be the size specified by mKeyLength + // UINT8 mKeyAddress[1]; +}; + +// Structure to describe response TLV 0x18 for WDSGetIPSecStaticSAConfig() +struct sWDSGetIPSecStaticSAConfigResponse_HashKeyTX +{ + UINT8 mKeyLength; + + // This array must be the size specified by mKeyLength + // UINT8 mKeyAddress[1]; +}; + +// Structure to describe response TLV 0x19 for WDSGetIPSecStaticSAConfig() +struct sWDSGetIPSecStaticSAConfigResponse_CryptographyAlgorithm +{ + eQMIWDSIPSecCryptoAlgorithms mAlgorithm; +}; + +// Structure to describe response TLV 0x1A for WDSGetIPSecStaticSAConfig() +struct sWDSGetIPSecStaticSAConfigResponse_CryptographyKeyRX +{ + UINT8 mKeyLength; + + // This array must be the size specified by mKeyLength + // UINT8 mKeyAddress[1]; +}; + +// Structure to describe response TLV 0x1B for WDSGetIPSecStaticSAConfig() +struct sWDSGetIPSecStaticSAConfigResponse_CryptographyKeyTX +{ + UINT8 mKeyLength; + + // This array must be the size specified by mKeyLength + // UINT8 mKeyAddress[1]; +}; + +// Structure to describe response TLV 0x1C for WDSGetIPSecStaticSAConfig() +struct sWDSGetIPSecStaticSAConfigResponse_InitializationVector +{ + UINT8 mInitializationVectorLength; + + // This array must be the size specified by mInitializationVectorLength + // UINT8 mInitializationVector[1]; +}; + +// Structure to describe response TLV 0x1D for WDSGetIPSecStaticSAConfig() +struct sWDSGetIPSecStaticSAConfigResponse_UDPEncapsulated +{ + INT8 mUDPEncapsulated; +}; + +// Structure to describe response TLV 0x1E for WDSGetIPSecStaticSAConfig() +struct sWDSGetIPSecStaticSAConfigResponse_NATLocalIPAddress +{ + eQMIWDSAddressFamilies mAddressFamily; + UINT8 mIPAddressLength; + + // This array must be the size specified by mIPAddressLength + // UINT8 mIPAddress[1]; +}; + +// Structure to describe response TLV 0x1F for WDSGetIPSecStaticSAConfig() +struct sWDSGetIPSecStaticSAConfigResponse_NATRemoteIPAddress +{ + eQMIWDSAddressFamilies mAddressFamily; + UINT8 mIPAddressLength; + + // This array must be the size specified by mIPAddressLength + // UINT8 mIPAddress[1]; +}; + +// Structure to describe response TLV 0x20 for WDSGetIPSecStaticSAConfig() +struct sWDSGetIPSecStaticSAConfigResponse_InternalIPv4Address +{ + UINT8 mAttributeCount; + + struct sAttribute + { + UINT8 mIPV4Address[4]; + }; + + // This array must be the size specified by mAttributeCount + // sAttribute mAttributes[1]; +}; + +// Structure to describe response TLV 0x21 for WDSGetIPSecStaticSAConfig() +struct sWDSGetIPSecStaticSAConfigResponse_InternalIPv4Netmask +{ + UINT8 mNetmask[4]; +}; + +// Structure to describe response TLV 0x22 for WDSGetIPSecStaticSAConfig() +struct sWDSGetIPSecStaticSAConfigResponse_InternalIPv4DNS +{ + UINT8 mAttributeCount; + + struct sAttribute + { + UINT8 mIPV4Address[4]; + }; + + // This array must be the size specified by mAttributeCount + // sAttribute mAttributes[1]; +}; + +// Structure to describe response TLV 0x23 for WDSGetIPSecStaticSAConfig() +struct sWDSGetIPSecStaticSAConfigResponse_InternalIPv4NBNS +{ + UINT8 mAttributeCount; + + struct sAttribute + { + UINT8 mIPV4Address[4]; + }; + + // This array must be the size specified by mAttributeCount + // sAttribute mAttributes[1]; +}; + +// Structure to describe response TLV 0x24 for WDSGetIPSecStaticSAConfig() +struct sWDSGetIPSecStaticSAConfigResponse_InternalAddressExpiry +{ + UINT32 mExpiry; +}; + +// Structure to describe response TLV 0x25 for WDSGetIPSecStaticSAConfig() +struct sWDSGetIPSecStaticSAConfigResponse_InternalIPv4DHCP +{ + UINT8 mAttributeCount; + + struct sAttribute + { + UINT8 mIPV4Address[4]; + }; + + // This array must be the size specified by mAttributeCount + // sAttribute mAttributes[1]; +}; + +// Structure to describe response TLV 0x26 for WDSGetIPSecStaticSAConfig() +struct sWDSGetIPSecStaticSAConfigResponse_ApplicationVersion +{ + UINT8 mApplicationVersionLength; + + // This array must be the size specified by mApplicationVersionLength + // char mApplicationVersion[1]; +}; + +// Structure to describe response TLV 0x27 for WDSGetIPSecStaticSAConfig() +struct sWDSGetIPSecStaticSAConfigResponse_InternalIPv6Address +{ + UINT8 mAttributeCount; + + struct sAttribute + { + UINT16 mIPv6Address[8]; + UINT8 mIPPrefixLength; + }; + + // This array must be the size specified by mAttributeCount + // sAttribute mAttributes[1]; +}; + +// Structure to describe response TLV 0x28 for WDSGetIPSecStaticSAConfig() +struct sWDSGetIPSecStaticSAConfigResponse_InternalIPv6DNS +{ + UINT8 mAttributeCount; + + struct sAttribute + { + UINT16 mIPv6Address[8]; + }; + + // This array must be the size specified by mAttributeCount + // sAttribute mAttributes[1]; +}; + +// Structure to describe response TLV 0x29 for WDSGetIPSecStaticSAConfig() +struct sWDSGetIPSecStaticSAConfigResponse_InternalIPv6NBNS +{ + UINT8 mAttributeCount; + + struct sAttribute + { + UINT16 mIPv6Address[8]; + }; + + // This array must be the size specified by mAttributeCount + // sAttribute mAttributes[1]; +}; + +// Structure to describe response TLV 0x2A for WDSGetIPSecStaticSAConfig() +struct sWDSGetIPSecStaticSAConfigResponse_InternalIPv6DHCP +{ + UINT8 mAttributeCount; + + struct sAttribute + { + UINT16 mIPv6Address[8]; + }; + + // This array must be the size specified by mAttributeCount + // sAttribute mAttributes[1]; +}; + +// Structure to describe response TLV 0x2B for WDSGetIPSecStaticSAConfig() +struct sWDSGetIPSecStaticSAConfigResponse_InternalIPv4Subnet +{ + UINT8 mAttributeCount; + + struct sAttribute + { + UINT8 mIPV4Address[4]; + }; + + // This array must be the size specified by mAttributeCount + // sAttribute mAttributes[1]; +}; + +// Structure to describe response TLV 0x2C for WDSGetIPSecStaticSAConfig() +struct sWDSGetIPSecStaticSAConfigResponse_SupportedAttributes +{ + UINT8 mSupportedAttributesLength; + + // This array must be the size specified by mSupportedAttributesLength + // char mSupportedAttributes[1]; +}; + +// Structure to describe response TLV 0x2D for WDSGetIPSecStaticSAConfig() +struct sWDSGetIPSecStaticSAConfigResponse_InternalIPv6Subnet +{ + UINT8 mAttributeCount; + + struct sAttribute + { + UINT16 mIPv6Address[8]; + UINT8 mIPPrefixLength; + }; + + // This array must be the size specified by mAttributeCount + // sAttribute mAttributes[1]; +}; + +// Structure to describe response TLV 0x2E for WDSGetIPSecStaticSAConfig() +struct sWDSGetIPSecStaticSAConfigResponse_InternalIPv4PCSCF +{ + UINT8 mAttributeCount; + + struct sAttribute + { + UINT8 mIPV4Address[4]; + }; + + // This array must be the size specified by mAttributeCount + // sAttribute mAttributes[1]; +}; + +// Structure to describe response TLV 0x2F for WDSGetIPSecStaticSAConfig() +struct sWDSGetIPSecStaticSAConfigResponse_InternalIPv6PCSCF +{ + UINT8 mAttributeCount; + + struct sAttribute + { + UINT16 mIPv6Address[8]; + UINT8 mIPPrefixLength; + }; + + // This array must be the size specified by mAttributeCount + // sAttribute mAttributes[1]; +}; + +// Structure to describe response TLV 0x30 for WDSGetIPSecStaticSAConfig() +struct sWDSGetIPSecStaticSAConfigResponse_3GPP2MIP4HA +{ + UINT8 mAttributeCount; + + struct sAttribute + { + UINT8 mIPV4Address[4]; + }; + + // This array must be the size specified by mAttributeCount + // sAttribute mAttributes[1]; +}; + +// Structure to describe response TLV 0x31 for WDSGetIPSecStaticSAConfig() +struct sWDSGetIPSecStaticSAConfigResponse_3GPP2MIP4HOA +{ + UINT8 mAttributeCount; + + struct sAttribute + { + UINT8 mIPV4Address[4]; + }; + + // This array must be the size specified by mAttributeCount + // sAttribute mAttributes[1]; +}; + +// Structure to describe response TLV 0x32 for WDSGetIPSecStaticSAConfig() +struct sWDSGetIPSecStaticSAConfigResponse_3GPP2MIP6HA +{ + UINT8 mAttributeCount; + + struct sAttribute + { + UINT16 mIPv6Address[8]; + UINT8 mIPPrefixLength; + }; + + // This array must be the size specified by mAttributeCount + // sAttribute mAttributes[1]; +}; + +// Structure to describe response TLV 0x33 for WDSGetIPSecStaticSAConfig() +struct sWDSGetIPSecStaticSAConfigResponse_3GPP2MIP6HOA +{ + UINT8 mAttributeCount; + + struct sAttribute + { + UINT16 mIPv6Address[8]; + UINT8 mIPPrefixLength; + }; + + // This array must be the size specified by mAttributeCount + // sAttribute mAttributes[1]; +}; + +// Structure to describe response TLV 0x34 for WDSGetIPSecStaticSAConfig() +struct sWDSGetIPSecStaticSAConfigResponse_TrafficSelectorList +{ + UINT8 mTrafficSelectorListCount; + + struct sTrafficSelector1 + { + UINT8 mProtocol; + UINT16 mStartPort; + UINT16 mEndPort; + eQMIWDSAddressFamilies mAddressFamily; + UINT8 mIPAddressLength; + + // This array must be the size specified by mIPAddressLength + // UINT8 mIPAddress[1]; + }; + + struct sTrafficSelector2 + { + eQMIWDSAddressFamilies mAddressFamily; + UINT8 mIPAddressLength; + + // This array must be the size specified by mIPAddressLength + // UINT8 mIPAddress[1]; + }; + + struct sTrafficSelector + { + sTrafficSelector1 mTrafficSelector1; + sTrafficSelector2 mTrafficSelector2; + }; + + // This array must be the size specified by mTrafficSelectorListCount + // sTrafficSelector mTrafficSelectors[1]; +}; + +// Structure to describe request TLV 0x01 for WDSReverseIPTransportConfigComplete() +struct sWDSReverseIPTransportConfigCompleteRequest_Result +{ + INT8 mConfigurationSuccess; +}; + +// Structure to describe request TLV 0x02 for WDSReverseIPTransportConfigComplete() +struct sWDSReverseIPTransportConfigCompleteRequest_TransactionID +{ + UINT32 mTransactionID; +}; + +// Structure to describe response TLV 0x10 for WDSGetExtendedDataBearerTechnology() +struct sWDSGetExtendedDataBearerTechnologyResponse_CurrentBearer +{ + eQMIWDSDataBearerTechnologies mDataBearerTechnology; + eQMIWDSRadioAccessTechnologies mRadioAccessTechnology; + bool mWCDMA:1; + bool mHSDPA:1; + bool mHSUPA:1; + bool mHSDPAPlus:1; + bool mDualCellHSDPAPlus:1; + bool m64QAM:1; + bool mHSPA:1; + bool mGPRS:1; + bool mEDGE:1; + bool mGSM:1; + bool mS2B:1; + bool mLTELimitedService:1; + bool mLTEFDD:1; + bool mLTETDD:1; + + // Padding out 11 bits + UINT8 mReserved1:2; + UINT8 mReserved2; + UINT8 mReserved3:1; + + bool m1xIS95:1; + bool m1xIS2000:1; + bool m1xIS2000RelA:1; + bool mHDRRev0DPA:1; + bool mHDRRevADPA:1; + bool mHDRRevBDPA:1; + bool mHDRRevAMPA:1; + bool mHDRRevBMPA:1; + bool mHDRRevAEMPA:1; + bool mHDRRevBEMPA:1; + bool mHDRRevBMMPA:1; + bool mHDREVDOFMC:1; + + // Padding out 27 bits + UINT8 mReserved4:3; + UINT8 mReserved5[3]; +}; + +// Structure to describe response TLV 0x11 for WDSGetExtendedDataBearerTechnology() +struct sWDSGetExtendedDataBearerTechnologyResponse_LastBearer +{ + eQMIWDSDataBearerTechnologies mDataBearerTechnology; + eQMIWDSRadioAccessTechnologies mRadioAccessTechnology; + bool mWCDMA:1; + bool mHSDPA:1; + bool mHSUPA:1; + bool mHSDPAPlus:1; + bool mDualCellHSDPAPlus:1; + bool m64QAM:1; + bool mHSPA:1; + bool mGPRS:1; + bool mEDGE:1; + bool mGSM:1; + bool mS2B:1; + bool mLTELimitedService:1; + bool mLTEFDD:1; + bool mLTETDD:1; + + // Padding out 11 bits + UINT8 mReserved1:2; + UINT8 mReserved2; + UINT8 mReserved3:1; + + bool m1xIS95:1; + bool m1xIS2000:1; + bool m1xIS2000RelA:1; + bool mHDRRev0DPA:1; + bool mHDRRevADPA:1; + bool mHDRRevBDPA:1; + bool mHDRRevAMPA:1; + bool mHDRRevBMPA:1; + bool mHDRRevAEMPA:1; + bool mHDRRevBEMPA:1; + bool mHDRRevBMMPA:1; + bool mHDREVDOFMC:1; + + // Padding out 27 bits + UINT8 mReserved4:3; + UINT8 mReserved5[3]; +}; + +// Structure to describe response TLV 0x10 for WDSGetLTEMaximumAttachPDNNumber() +struct sWDSGetLTEMaximumAttachPDNNumberResponse_Maximum +{ + UINT8 mMaximumAttachPDNNumber; +}; + +// Structure to describe request TLV 0x01 for WDSSetLTEAttachPDNList() +struct sWDSSetLTEAttachPDNListRequest_AttachPDNList +{ + UINT8 mAttachPDNListCount; + + // This array must be the size specified by mAttachPDNListCount + // UINT16 mAttachPDNProfileID[1]; +}; + +// Structure to describe response TLV 0x10 for WDSGetLTEAttachPDNList() +struct sWDSGetLTEAttachPDNListResponse_AttachPDNList +{ + UINT8 mAttachPDNListCount; + + // This array must be the size specified by mAttachPDNListCount + // UINT16 mAttachPDNProfileID[1]; +}; + +// Structure to describe indication TLV 0x10 for WDS LTEAttachPDNListIndication +struct sWDSLTEAttachPDNListIndication_AttachPDNList +{ + UINT8 mAttachPDNListCount; + + // This array must be the size specified by mAttachPDNListCount + // UINT16 mAttachPDNProfileID[1]; +}; + +// Structure to describe request TLV 0x01 for WDSSetLTEDataRetry() +struct sWDSSetLTEDataRetryRequest_LTEDataRetry +{ + INT8 mRetryLTEDataAttach; +}; + +// Structure to describe response TLV 0x10 for WDSGetLTEDataRetry() +struct sWDSGetLTEDataRetryResponse_LTEDataRetry +{ + INT8 mRetryLTEDataAttach; +}; + +// Structure to describe request TLV 0x01 for WDSSetLTEAttachType() +struct sWDSSetLTEAttachTypeRequest_LTEAttachType +{ + eQMIWDSLTEAttachTypes mLTEAttachType; +}; + +// Structure to describe response TLV 0x10 for WDSGetLTEAttachType() +struct sWDSGetLTEAttachTypeResponse_LTEAttachType +{ + eQMIWDSLTEAttachTypes mLTEAttachType; +}; + +// Structure to describe indication TLV 0x01 for WDS ReverseIPTransportFilterIndication +struct sWDSReverseIPTransportFilterIndication_FilterType +{ + eQMIWDSReverseIPTransportFilterTypes mReverseIPTransportFilterType; +}; + +// Structure to describe indication TLV 0x10 for WDS ReverseIPTransportFilterIndication +struct sWDSReverseIPTransportFilterIndication_SPI +{ + UINT32 mSecurityParameterIndex; +}; + +// Structure to describe indication TLV 0x01 for WDS HandoffInformationIndication +struct sWDSHandoffInformationIndication_FilterType +{ + eQMIWDSHandoffInfoTypes mHandoffInformation; +}; + +// Structure to describe request TLV 0x10 for DMSSetEventReport() +struct sDMSSetEventReportRequest_PowerState +{ + INT8 mReportPowerState; +}; + +// Structure to describe request TLV 0x11 for DMSSetEventReport() +struct sDMSSetEventReportRequest_BatteryLevel +{ + UINT8 mBatteryLevelLowerLimit; + UINT8 mBatteryLevelUpperLimit; +}; + +// Structure to describe request TLV 0x12 for DMSSetEventReport() +struct sDMSSetEventReportRequest_PINStatus +{ + INT8 mReportPINStatus; +}; + +// Structure to describe request TLV 0x13 for DMSSetEventReport() +struct sDMSSetEventReportRequest_ActivationState +{ + INT8 mReportActivationState; +}; + +// Structure to describe request TLV 0x14 for DMSSetEventReport() +struct sDMSSetEventReportRequest_OperatingMode +{ + INT8 mReportOperatingMode; +}; + +// Structure to describe request TLV 0x15 for DMSSetEventReport() +struct sDMSSetEventReportRequest_UIMState +{ + INT8 mReportUIMState; +}; + +// Structure to describe request TLV 0x16 for DMSSetEventReport() +struct sDMSSetEventReportRequest_WirelessDisableState +{ + INT8 mReportWirelessDisableState; +}; + +// Structure to describe request TLV 0x17 for DMSSetEventReport() +struct sDMSSetEventReportRequest_PRLInit +{ + INT8 mReportPRLInitialization; +}; + +// Structure to describe indication TLV 0x10 for DMS EventReport +struct sDMSEventReportIndication_PowerState +{ + eQMIDMSPowerSources mPowerSource:1; + bool mBatteryConnected:1; + bool mBatteryCharging:1; + bool mPowerFault:1; + + // Padding out 4 bits + UINT8 mReserved1:4; + + UINT8 mBatteryLevel; +}; + +// Structure to describe indication TLV 0x11 for DMS EventReport +struct sDMSEventReportIndication_PIN1State +{ + eQMIDMSPINStatus mPINStatus; + UINT8 mRemainingVerifyRetries; + UINT8 mRemainingUnblockRetries; +}; + +// Structure to describe indication TLV 0x12 for DMS EventReport +struct sDMSEventReportIndication_PIN2State +{ + eQMIDMSPINStatus mPINStatus; + UINT8 mRemainingVerifyRetries; + UINT8 mRemainingUnblockRetries; +}; + +// Structure to describe indication TLV 0x13 for DMS EventReport +struct sDMSEventReportIndication_ActivationState +{ + eQMIDMSActivationStates mActivationState; +}; + +// Structure to describe indication TLV 0x14 for DMS EventReport +struct sDMSEventReportIndication_OperatingMode +{ + eQMIDMSOperatingModes mOperatingMode; +}; + +// Structure to describe indication TLV 0x15 for DMS EventReport +struct sDMSEventReportIndication_UIMState +{ + eQMIDMSUIMStates mUIMState; +}; + +// Structure to describe indication TLV 0x16 for DMS EventReport +struct sDMSEventReportIndication_WirelessDisableState +{ + INT8 mWirelessDisableOn; +}; + +// Structure to describe indication TLV 0x17 for DMS EventReport +struct sDMSEventReportIndication_PRLInit +{ + INT8 mPRLLoaded; +}; + +// Structure to describe response TLV 0x01 for DMSGetDeviceCapabilities() +struct sDMSGetDeviceCapabilitiesResponse_Capabilities +{ + UINT32 mMaxTXRatebps; + UINT32 mMaxRXRatebps; + eQMIDMSDataServiceCapabilities1 mDataServiceCapability; + INT8 mSIMSupported; + UINT8 mRadioInterfaceCount; + + // This array must be the size specified by mRadioInterfaceCount + // eQMIDMSRadioInterfaces mRadioInterface[1]; +}; + +// Structure to describe response TLV 0x10 for DMSGetDeviceCapabilities() +struct sDMSGetDeviceCapabilitiesResponse_ServiceCapability +{ + eQMIDMSServiceCapabilities mServiceCapability; +}; + +// Structure to describe response TLV 0x11 for DMSGetDeviceCapabilities() +struct sDMSGetDeviceCapabilitiesResponse_VoiceCapability +{ + bool mGWCSFBCapable:1; + bool m1xCSFBCapable:1; + bool mVoLTECapable:1; + + // Padding out 61 bits + UINT8 mReserved1:5; + UINT8 mReserved2[7]; +}; + +// Structure to describe response TLV 0x12 for DMSGetDeviceCapabilities() +struct sDMSGetDeviceCapabilitiesResponse_VoiceAndDataCapability +{ + bool mSVLTE:1; + bool mSVDO:1; + + // Padding out 62 bits + UINT8 mReserved1:6; + UINT8 mReserved2[7]; +}; + +// Structure to describe response TLV 0x01 for DMSGetDeviceManfacturer() +struct sDMSGetDeviceManfacturerResponse_Manfacturer +{ + // String is variable length, but must be size of the container + // char mDeviceManfacturer[1]; +}; + +// Structure to describe response TLV 0x01 for DMSGetDeviceModel() +struct sDMSGetDeviceModelResponse_Model +{ + // String is variable length, but must be size of the container + // char mDeviceModelID[1]; +}; + +// Structure to describe response TLV 0x01 for DMSGetDeviceRevision() +struct sDMSGetDeviceRevisionResponse_Revision +{ + // String is variable length, but must be size of the container + // char mDeviceRevisionID[1]; +}; + +// Structure to describe response TLV 0x10 for DMSGetDeviceRevision() +struct sDMSGetDeviceRevisionResponse_BootCodeRevision +{ + // String is variable length, but must be size of the container + // char mBootCodeRevisionID[1]; +}; + +// Structure to describe response TLV 0x11 for DMSGetDeviceRevision() +struct sDMSGetDeviceRevisionResponse_UQCNRevision +{ + // String is variable length, but must be size of the container + // char mBootCodeRevisionID[1]; +}; + +// Structure to describe response TLV 0x01 for DMSGetDeviceVoiceNumber() +struct sDMSGetDeviceVoiceNumberResponse_VoiceNumber +{ + // String is variable length, but must be size of the container + // char mDeviceVoiceNumber[1]; +}; + +// Structure to describe response TLV 0x10 for DMSGetDeviceVoiceNumber() +struct sDMSGetDeviceVoiceNumberResponse_MobileIDNumber +{ + // String is variable length, but must be size of the container + // char mDeviceMobileIDNumber[1]; +}; + +// Structure to describe response TLV 0x11 for DMSGetDeviceVoiceNumber() +struct sDMSGetDeviceVoiceNumberResponse_IMSI +{ + // String is variable length, but must be size of the container + // char mIMSI[1]; +}; + +// Structure to describe response TLV 0x10 for DMSGetDeviceSerialNumbers() +struct sDMSGetDeviceSerialNumbersResponse_ESN +{ + // String is variable length, but must be size of the container + // char mESN[1]; +}; + +// Structure to describe response TLV 0x11 for DMSGetDeviceSerialNumbers() +struct sDMSGetDeviceSerialNumbersResponse_IMEI +{ + // String is variable length, but must be size of the container + // char mIMEI[1]; +}; + +// Structure to describe response TLV 0x12 for DMSGetDeviceSerialNumbers() +struct sDMSGetDeviceSerialNumbersResponse_MEID +{ + // String is variable length, but must be size of the container + // char mMEID[1]; +}; + +// Structure to describe response TLV 0x01 for DMSGetPowerState() +struct sDMSGetPowerStateResponse_PowerState +{ + eQMIDMSPowerSources mPowerSource:1; + bool mBatteryConnected:1; + bool mBatteryCharging:1; + bool mPowerFault:1; + + // Padding out 4 bits + UINT8 mReserved1:4; + + UINT8 mBatteryLevel; +}; + +// Structure to describe request TLV 0x01 for DMSUIMSetPINProtection() +struct sDMSUIMSetPINProtectionRequest_Info +{ + UINT8 mPINID; + UINT8 mPINEnabled; + UINT8 mPINLength; + + // This array must be the size specified by mPINLength + // char mPINValue[1]; +}; + +// Structure to describe response TLV 0x10 for DMSUIMSetPINProtection() +struct sDMSUIMSetPINProtectionResponse_RetryInfo +{ + UINT8 mRemainingVerifyRetries; + UINT8 mRemainingUnblockRetries; +}; + +// Structure to describe request TLV 0x01 for DMSUIMVerifyPIN() +struct sDMSUIMVerifyPINRequest_Info +{ + UINT8 mPINID; + UINT8 mPINLength; + + // This array must be the size specified by mPINLength + // char mPINValue[1]; +}; + +// Structure to describe response TLV 0x10 for DMSUIMVerifyPIN() +struct sDMSUIMVerifyPINResponse_RetryInfo +{ + UINT8 mRemainingVerifyRetries; + UINT8 mRemainingUnblockRetries; +}; + +// Structure to describe request TLV 0x01 for DMSUIMUnblockPIN() +struct sDMSUIMUnblockPINRequest_Info1 +{ + UINT8 mPINID; + UINT8 mPUKLength; + + // This array must be the size specified by mPUKLength + // char mPUKValue[1]; +}; + +struct sDMSUIMUnblockPINRequest_Info2 +{ + UINT8 mNewPINLength; + + // This array must be the size specified by mNewPINLength + // char mNewPINValue[1]; +}; + +struct sDMSUIMUnblockPINRequest_Info +{ + sDMSUIMUnblockPINRequest_Info1 mDMSUIMUnblockPINRequest_Info1; + sDMSUIMUnblockPINRequest_Info2 mDMSUIMUnblockPINRequest_Info2; +}; + +// Structure to describe response TLV 0x10 for DMSUIMUnblockPIN() +struct sDMSUIMUnblockPINResponse_RetryInfo +{ + UINT8 mRemainingVerifyRetries; + UINT8 mRemainingUnblockRetries; +}; + +// Structure to describe request TLV 0x01 for DMSUIMChangePIN() +struct sDMSUIMChangePINRequest_Info1 +{ + UINT8 mPINID; + UINT8 mOldPINLength; + + // This array must be the size specified by mOldPINLength + // char mOldPINValue[1]; +}; + +struct sDMSUIMChangePINRequest_Info2 +{ + UINT8 mNewPINLength; + + // This array must be the size specified by mNewPINLength + // char mNewPINValue[1]; +}; + +struct sDMSUIMChangePINRequest_Info +{ + sDMSUIMChangePINRequest_Info1 mDMSUIMChangePINRequest_Info1; + sDMSUIMChangePINRequest_Info2 mDMSUIMChangePINRequest_Info2; +}; + +// Structure to describe response TLV 0x10 for DMSUIMChangePIN() +struct sDMSUIMChangePINResponse_RetryInfo +{ + UINT8 mRemainingVerifyRetries; + UINT8 mRemainingUnblockRetries; +}; + +// Structure to describe response TLV 0x11 for DMSUIMGetPINStatus() +struct sDMSUIMGetPINStatusResponse_PIN1Status +{ + eQMIDMSPINStatus mPINStatus; + UINT8 mRemainingVerifyRetries; + UINT8 mRemainingUnblockRetries; +}; + +// Structure to describe response TLV 0x12 for DMSUIMGetPINStatus() +struct sDMSUIMGetPINStatusResponse_PIN2Status +{ + eQMIDMSPINStatus mPINStatus; + UINT8 mRemainingVerifyRetries; + UINT8 mRemainingUnblockRetries; +}; + +// Structure to describe response TLV 0x01 for DMSGetHardwareRevision() +struct sDMSGetHardwareRevisionResponse_HardwareRevision +{ + // String is variable length, but must be size of the container + // char mDeviceHardwareRevision[1]; +}; + +// Structure to describe response TLV 0x01 for DMSGetOperatingMode() +struct sDMSGetOperatingModeResponse_OperatingMode +{ + eQMIDMSOperatingModes mOperatingMode; +}; + +// Structure to describe response TLV 0x10 for DMSGetOperatingMode() +struct sDMSGetOperatingModeResponse_OfflineReason +{ + UINT8 mHostImageMismatch:1; + UINT8 mUQCNImageMismatch:1; + UINT8 mIncompatibleUQCN:1; + UINT8 mUQCNCopyIssue:1; + + // Padding out 12 bits + UINT8 mReserved1:4; + UINT8 mReserved2; +}; + +// Structure to describe response TLV 0x11 for DMSGetOperatingMode() +struct sDMSGetOperatingModeResponse_PlatformRestricted +{ + INT8 mPlatformRestricted; +}; + +// Structure to describe request TLV 0x01 for DMSSetOperatingMode() +struct sDMSSetOperatingModeRequest_OperatingMode +{ + eQMIDMSOperatingModes mOperatingMode; +}; + +// Structure to describe response TLV 0x01 for DMSGetTimestamp() +struct sDMSGetTimestampResponse_Timestamp +{ + UINT64 mTimestamp:48; + + // mSource is of type eQMIDMSTimestampSources + UINT64 mSource:16; +}; + +// Structure to describe response TLV 0x01 for DMSGetPRLVersion() +struct sDMSGetPRLVersionResponse_PRLVersion +{ + UINT16 mPRLVersion; +}; + +// Structure to describe response TLV 0x01 for DMSGetActivationState() +struct sDMSGetActivationStateResponse_ActivationState +{ + eQMIDMSActivationStates mActivationState; +}; + +// Structure to describe request TLV 0x01 for DMSActivateAutomatic() +struct sDMSActivateAutomaticRequest_ActivationCode +{ + UINT8 mCodeLength; + + // This array must be the size specified by mCodeLength + // char mCode[1]; +}; + +// Structure to describe request TLV 0x01 for DMSActivateManual() +struct sDMSActivateManualRequest_ActivationData1 +{ + char mSPC[6]; + UINT16 mSID; + UINT8 mMDNLength; + + // This array must be the size specified by mMDNLength + // char mMDN[1]; +}; + +struct sDMSActivateManualRequest_ActivationData2 +{ + UINT8 mMINLength; + + // This array must be the size specified by mMINLength + // char mMIN[1]; +}; + +struct sDMSActivateManualRequest_ActivationData +{ + sDMSActivateManualRequest_ActivationData1 mDMSActivateManualRequest_ActivationData1; + sDMSActivateManualRequest_ActivationData2 mDMSActivateManualRequest_ActivationData2; +}; + +// Structure to describe request TLV 0x10 for DMSActivateManual() +struct sDMSActivateManualRequest_PRLObsolete +{ + UINT16 mPRLLength; + + // This array must be the size specified by mPRLLength + // UINT8 mPRL[1]; +}; + +// Structure to describe request TLV 0x11 for DMSActivateManual() +struct sDMSActivateManualRequest_MNHAKey +{ + UINT8 mMNHALength; + + // This array must be the size specified by mMNHALength + // char mMNHA[1]; +}; + +// Structure to describe request TLV 0x12 for DMSActivateManual() +struct sDMSActivateManualRequest_MNAAAKey +{ + UINT8 mMNAAALength; + + // This array must be the size specified by mMNAAALength + // char mMNAAA[1]; +}; + +// Structure to describe request TLV 0x13 for DMSActivateManual() +struct sDMSActivateManualRequest_PRL +{ + UINT16 mPRLTotalLength; + UINT16 mPRLSegmentLength; + UINT8 mPRLSegmentID; + + // This array must be the size specified by mPRLSegmentLength + // UINT8 mPRL[1]; +}; + +// Structure to describe response TLV 0x01 for DMSGetLockState() +struct sDMSGetLockStateResponse_LockState +{ + eQMIDMSLockStates mLockState; +}; + +// Structure to describe request TLV 0x01 for DMSSetLockState() +struct sDMSSetLockStateRequest_LockState +{ + eQMIDMSLockStates mLockState; + char mLockCode[4]; +}; + +// Structure to describe request TLV 0x01 for DMSSetLockCode() +struct sDMSSetLockCodeRequest_LockCode +{ + char mCurrentLockCode[4]; + char mNewLockCode[4]; +}; + +// Structure to describe response TLV 0x01 for DMSReadUserData() +struct sDMSReadUserDataResponse_UserData +{ + UINT16 mDataLength; + + // This array must be the size specified by mDataLength + // UINT8 mData[1]; +}; + +// Structure to describe request TLV 0x01 for DMSWriteUserData() +struct sDMSWriteUserDataRequest_UserData +{ + UINT16 mDataLength; + + // This array must be the size specified by mDataLength + // UINT8 mData[1]; +}; + +// Structure to describe response TLV 0x01 for DMSReadERIData() +struct sDMSReadERIDataResponse_UserData +{ + UINT16 mDataLength; + + // This array must be the size specified by mDataLength + // UINT8 mData[1]; +}; + +// Structure to describe request TLV 0x01 for DMSResetFactoryDefaults() +struct sDMSResetFactoryDefaultsRequest_SPC +{ + char mSPC[6]; +}; + +// Structure to describe request TLV 0x01 for DMSValidateSPC() +struct sDMSValidateSPCRequest_SPC +{ + char mSPC[6]; +}; + +// Structure to describe response TLV 0x01 for DMSUIMGetICCID() +struct sDMSUIMGetICCIDResponse_ICCID +{ + // String is variable length, but must be size of the container + // char mICCID[1]; +}; + +// Structure to describe response TLV 0x01 for DMSUIMGetHostLockID() +struct sDMSUIMGetHostLockIDResponse_ID +{ + UINT32 mHostLockCode; +}; + +// Structure to describe request TLV 0x01 for DMSUIMGetControlKeyStatus() +struct sDMSUIMGetControlKeyStatusRequest_Facility +{ + eQMIDMSUIMFacility mFacility; +}; + +// Structure to describe response TLV 0x01 for DMSUIMGetControlKeyStatus() +struct sDMSUIMGetControlKeyStatusResponse_Status +{ + eQMIDMSUIMFacilityStates mFacilityState; + UINT8 mRemainingVerifyRetries; + UINT8 mRemainingUnblockRetries; +}; + +// Structure to describe response TLV 0x10 for DMSUIMGetControlKeyStatus() +struct sDMSUIMGetControlKeyStatusResponse_Blocking +{ + INT8 mOperationBlocking; +}; + +// Structure to describe request TLV 0x01 for DMSUIMSetControlKeyProtection() +struct sDMSUIMSetControlKeyProtectionRequest_Facility +{ + eQMIDMSUIMFacility mFacility; + eQMIDMSUIMFacilityStates mFacilityState; + UINT8 mControlKeyLength; + + // This array must be the size specified by mControlKeyLength + // char mControlKey[1]; +}; + +// Structure to describe response TLV 0x10 for DMSUIMSetControlKeyProtection() +struct sDMSUIMSetControlKeyProtectionResponse_Status +{ + UINT8 mRemainingVerifyRetries; +}; + +// Structure to describe request TLV 0x01 for DMSUIMUnblockControlKey() +struct sDMSUIMUnblockControlKeyRequest_Facility +{ + eQMIDMSUIMFacility mFacility; + UINT8 mControlKeyLength; + + // This array must be the size specified by mControlKeyLength + // char mControlKey[1]; +}; + +// Structure to describe response TLV 0x10 for DMSUIMUnblockControlKey() +struct sDMSUIMUnblockControlKeyResponse_Status +{ + UINT8 mRemainingUnblockRetries; +}; + +// Structure to describe response TLV 0x01 for DMSGetIMSI() +struct sDMSGetIMSIResponse_IMSI +{ + // String is variable length, but must be size of the container + // char mIMSI[1]; +}; + +// Structure to describe response TLV 0x01 for DMSGetUIMState() +struct sDMSGetUIMStateResponse_State +{ + eQMIDMSUIMStates mUIMState; +}; + +// Structure to describe response TLV 0x01 for DMSGetBandCapabilities() +struct sDMSGetBandCapabilitiesResponse_Bands +{ + bool mBandClass0ASystem:1; + bool mBandClass0BSystem:1; + bool mBandClass1:1; + bool mBandClass2:1; + bool mBandClass3ASystem:1; + bool mBandClass4:1; + bool mBandClass5:1; + bool mGSMDCS:1; + bool mGSMPrimary:1; + bool mGSMExtended:1; + bool mBandClass6:1; + bool mBandClass7:1; + bool mBandClass8:1; + bool mBandClass9:1; + bool mBandClass10:1; + bool mBandClass11:1; + bool mGSM450:1; + bool mGSM480:1; + bool mGSM750:1; + bool mGSM850:1; + bool mGSMRailways:1; + bool mGSMPCS:1; + bool mWCDMA2100I:1; + bool mWCDMAPCS1900:1; + bool mWCDMADCS1800:1; + bool mWCDMA1700US:1; + bool mWCDMA850:1; + bool mWCDMA800:1; + bool mBandClass12:1; + bool mBandClass14:1; + + // Padding out 1 bits + UINT8 mReserved1:1; + + bool mBandClass15:1; + + // Padding out 16 bits + UINT8 mReserved2[2]; + + bool mWCDMA2600:1; + bool mWCDMA900:1; + bool mWCDMA1700Japan:1; + + // Padding out 5 bits + UINT8 mReserved3:5; + + bool mBandClass16:1; + bool mBandClass17:1; + bool mBandClass18:1; + bool mBandClass19:1; + + // Padding out 4 bits + UINT8 mReserved4:4; +}; + +// Structure to describe response TLV 0x10 for DMSGetBandCapabilities() +struct sDMSGetBandCapabilitiesResponse_LTEBands +{ + bool mEUTRANBand1:1; + bool mEUTRANBand2:1; + bool mEUTRANBand3:1; + bool mEUTRANBand4:1; + bool mEUTRANBand5:1; + bool mEUTRANBand6:1; + bool mEUTRANBand7:1; + bool mEUTRANBand8:1; + bool mEUTRANBand9:1; + bool mEUTRANBand10:1; + bool mEUTRANBand11:1; + bool mEUTRANBand12:1; + bool mEUTRANBand13:1; + bool mEUTRANBand14:1; + + // Padding out 2 bits + UINT8 mReserved1:2; + + bool mEUTRANBand17:1; + bool mEUTRANBand18:1; + bool mEUTRANBand19:1; + bool mEUTRANBand20:1; + bool mEUTRANBand21:1; + + // Padding out 2 bits + UINT8 mReserved2:2; + + bool mEUTRANBand24:1; + bool mEUTRANBand25:1; + + // Padding out 7 bits + UINT8 mReserved3:7; + + bool mEUTRANBand33:1; + bool mEUTRANBand34:1; + bool mEUTRANBand35:1; + bool mEUTRANBand36:1; + bool mEUTRANBand37:1; + bool mEUTRANBand38:1; + bool mEUTRANBand39:1; + bool mEUTRANBand40:1; + bool mEUTRANBand41:1; + + // Padding out 23 bits + UINT8 mReserved4:7; + UINT8 mReserved5[2]; +}; + +// Structure to describe response TLV 0x11 for DMSGetBandCapabilities() +struct sDMSGetBandCapabilitiesResponse_TDSBands +{ + bool mTDSBandA:1; + bool mTDSBandB:1; + bool mTDSBandC:1; + bool mTDSBandD:1; + bool mTDSBandE:1; + bool mTDSBandF:1; + + // Padding out 58 bits + UINT8 mReserved1:2; + UINT8 mReserved2[7]; +}; + +// Structure to describe response TLV 0x01 for DMSGetFactorySerialNumber() +struct sDMSGetFactorySerialNumberResponse_ID +{ + // String is variable length, but must be size of the container + // char mFactorySerialNumber[1]; +}; + +// Structure to describe request TLV 0x01 for DMSSetDeviceTime() +struct sDMSSetDeviceTimeRequest_Time +{ + UINT64 mTimeInMilliseconds; +}; + +// Structure to describe request TLV 0x10 for DMSSetDeviceTime() +struct sDMSSetDeviceTimeRequest_Type +{ + eQMIDMSTimeReferences mTimeReference; +}; + +// Structure to describe response TLV 0x01 for DMSGetSoftwareVersion() +struct sDMSGetSoftwareVersionResponse_Version +{ + // String is variable length, but must be size of the container + // char mSoftwareVersion[1]; +}; + +// Structure to describe request TLV 0x01 for DMSSetSPC() +struct sDMSSetSPCRequest_CurrentSPC +{ + char mCurrentSPC[6]; +}; + +// Structure to describe request TLV 0x02 for DMSSetSPC() +struct sDMSSetSPCRequest_NewSPC +{ + char mNewSPC[6]; +}; + +// Structure to describe response TLV 0x10 for DMSGetCurrentPRLInfo() +struct sDMSGetCurrentPRLInfoResponse_Version +{ + UINT16 mPRLVersion; +}; + +// Structure to describe response TLV 0x11 for DMSGetCurrentPRLInfo() +struct sDMSGetCurrentPRLInfoResponse_Preference +{ + INT8 mPRLOnlyPreferenceSet; +}; + +// Structure to describe request TLV 0x01 for DMSBindSubscription() +struct sDMSBindSubscriptionRequest_Subscription +{ + eQMIDMSSubscriptions mSubscription; +}; + +// Structure to describe response TLV 0x10 for DMSGetSubscription() +struct sDMSGetSubscriptionResponse_Subscription +{ + eQMIDMSSubscriptions mSubscription; +}; + +// Structure to describe request TLV 0x10 for NASSetEventReport() +struct sNASSetEventReportRequest_SignalIndicator +{ + INT8 mReportSignalStrength; + UINT8 mNumberOfThresholds; + + // This array must be the size specified by mNumberOfThresholds + // INT8 mSignalStrengthThresholddBm[1]; +}; + +// Structure to describe request TLV 0x11 for NASSetEventReport() +struct sNASSetEventReportRequest_RFIndicator +{ + INT8 mReportRFInfo; +}; + +// Structure to describe request TLV 0x12 for NASSetEventReport() +struct sNASSetEventReportRequest_RegistrationRejectIndicator +{ + INT8 mReportLUReject; +}; + +// Structure to describe request TLV 0x13 for NASSetEventReport() +struct sNASSetEventReportRequest_RSSIIndicator +{ + INT8 mReportRSSI; + UINT8 mRSSIDelta; +}; + +// Structure to describe request TLV 0x14 for NASSetEventReport() +struct sNASSetEventReportRequest_ECIOIndicator +{ + INT8 mReportECIO; + UINT8 mECIODelta; +}; + +// Structure to describe request TLV 0x15 for NASSetEventReport() +struct sNASSetEventReportRequest_IOIndicator +{ + INT8 mReportIO; + UINT8 mIODelta; +}; + +// Structure to describe request TLV 0x16 for NASSetEventReport() +struct sNASSetEventReportRequest_SINRIndicator +{ + INT8 mReportSINR; + UINT8 mSINRDelta; +}; + +// Structure to describe request TLV 0x17 for NASSetEventReport() +struct sNASSetEventReportRequest_ErrorRateIndicator +{ + INT8 mReportErrorRate; +}; + +// Structure to describe request TLV 0x18 for NASSetEventReport() +struct sNASSetEventReportRequest_RSRQIndicator +{ + INT8 mReportRSRQ; + UINT8 mRSRQDelta; +}; + +// Structure to describe request TLV 0x19 for NASSetEventReport() +struct sNASSetEventReportRequest_ECIOThreshold +{ + INT8 mReportECIO; + UINT8 mThresholdCount; + + // This array must be the size specified by mThresholdCount + // INT16 mThreshold[1]; +}; + +// Structure to describe request TLV 0x1A for NASSetEventReport() +struct sNASSetEventReportRequest_SINRThreshold +{ + INT8 mReportSINR; + UINT8 mThresholdCount; + + // This array must be the size specified by mThresholdCount + // UINT8 mThreshold[1]; +}; + +// Structure to describe request TLV 0x1B for NASSetEventReport() +struct sNASSetEventReportRequest_LTESNRDelta +{ + INT8 mReportLTESNR; + UINT16 mLTESNRDelta; +}; + +// Structure to describe request TLV 0x1C for NASSetEventReport() +struct sNASSetEventReportRequest_LTERSPSDelta +{ + INT8 mReportLTERSRP; + UINT8 mLTERSRPDelta; +}; + +// Structure to describe indication TLV 0x10 for NAS EventReport +struct sNASEventReportIndication_SignalStrength +{ + INT8 mSignalStrengthdBm; + eQMINASRadioInterfaces mRadioInterface; +}; + +// Structure to describe indication TLV 0x11 for NAS EventReport +struct sNASEventReportIndication_RFInfo +{ + UINT8 mNumberOfInstances; + + struct sInstance + { + eQMINASRadioInterfaces mRadioInterface; + eQMINASBandClasses mActiveBandClass; + UINT16 mActiveChannel; + }; + + // This array must be the size specified by mNumberOfInstances + // sInstance mInstances[1]; +}; + +// Structure to describe indication TLV 0x12 for NAS EventReport +struct sNASEventReportIndication_RegistrationReject +{ + eQMINASServiceDomains mServiceDomain; + UINT16 mRejectCause; +}; + +// Structure to describe indication TLV 0x13 for NAS EventReport +struct sNASEventReportIndication_RSSI +{ + UINT8 mRSSIDelta; + eQMINASRadioInterfaces mRadioInterface; +}; + +// Structure to describe indication TLV 0x14 for NAS EventReport +struct sNASEventReportIndication_ECIO +{ + UINT8 mECIO; + eQMINASRadioInterfaces mRadioInterface; +}; + +// Structure to describe indication TLV 0x15 for NAS EventReport +struct sNASEventReportIndication_IO +{ + UINT32 mIO; +}; + +// Structure to describe indication TLV 0x16 for NAS EventReport +struct sNASEventReportIndication_SINR +{ + eQMINASSINRLevels mSINR; +}; + +// Structure to describe indication TLV 0x17 for NAS EventReport +struct sNASEventReportIndication_ErrorRate +{ + UINT16 mErrorRate; + eQMINASRadioInterfaces mRadioInterface; +}; + +// Structure to describe indication TLV 0x18 for NAS EventReport +struct sNASEventReportIndication_RSRQ +{ + INT8 mRSRQ; + eQMINASRadioInterfaces mRadioInterface; +}; + +// Structure to describe indication TLV 0x19 for NAS EventReport +struct sNASEventReportIndication_LTESNR +{ + INT16 mLTESNR; +}; + +// Structure to describe indication TLV 0x1A for NAS EventReport +struct sNASEventReportIndication_LTERSRP +{ + INT16 mLTERSRP; +}; + +// Structure to describe request TLV 0x10 for NASSetRegistrationEventReport() +struct sNASSetRegistrationEventReportRequest_SystemSelectIndicator +{ + INT8 mReportSystemSelect; +}; + +// Structure to describe request TLV 0x12 for NASSetRegistrationEventReport() +struct sNASSetRegistrationEventReportRequest_DDTMIndicator +{ + INT8 mReportDDTM; +}; + +// Structure to describe request TLV 0x13 for NASSetRegistrationEventReport() +struct sNASSetRegistrationEventReportRequest_ServingSystemIndicator +{ + INT8 mReportServingSystem; +}; + +// Structure to describe request TLV 0x14 for NASSetRegistrationEventReport() +struct sNASSetRegistrationEventReportRequest_DualStandbyIndicator +{ + INT8 mReportDualStandby; +}; + +// Structure to describe request TLV 0x15 for NASSetRegistrationEventReport() +struct sNASSetRegistrationEventReportRequest_SubscriptionInformationIndicator +{ + INT8 mReportSubscriptionInformation; +}; + +// Structure to describe request TLV 0x17 for NASSetRegistrationEventReport() +struct sNASSetRegistrationEventReportRequest_NetworkTimeIndicator +{ + INT8 mReportNetworkTime; +}; + +// Structure to describe request TLV 0x18 for NASSetRegistrationEventReport() +struct sNASSetRegistrationEventReportRequest_SystemInformationIndicator +{ + INT8 mReportSystemInformation; +}; + +// Structure to describe request TLV 0x19 for NASSetRegistrationEventReport() +struct sNASSetRegistrationEventReportRequest_SignalStrengthIndicator +{ + INT8 mReportSignalStrength; +}; + +// Structure to describe request TLV 0x1A for NASSetRegistrationEventReport() +struct sNASSetRegistrationEventReportRequest_ErrorRateIndicator +{ + INT8 mReportErrorRate; +}; + +// Structure to describe request TLV 0x1B for NASSetRegistrationEventReport() +struct sNASSetRegistrationEventReportRequest_NewEVDOUATIIndicator +{ + INT8 mReportNewEVDOUATI; +}; + +// Structure to describe request TLV 0x1C for NASSetRegistrationEventReport() +struct sNASSetRegistrationEventReportRequest_EVDOSessionIndicator +{ + INT8 mReportEVDOSessionClose; +}; + +// Structure to describe request TLV 0x1D for NASSetRegistrationEventReport() +struct sNASSetRegistrationEventReportRequest_ManagedRoamingIndicator +{ + INT8 mReportManagedRoaming; +}; + +// Structure to describe request TLV 0x1E for NASSetRegistrationEventReport() +struct sNASSetRegistrationEventReportRequest_CurrentPLMNName +{ + INT8 mReportCurrentPLMNName; +}; + +// Structure to describe request TLV 0x1F for NASSetRegistrationEventReport() +struct sNASSetRegistrationEventReportRequest_EMBMSStatus +{ + INT8 mReportEMBMSStatus; +}; + +// Structure to describe request TLV 0x20 for NASSetRegistrationEventReport() +struct sNASSetRegistrationEventReportRequest_RFBandInfo +{ + INT8 mReportRFBandInfo; +}; + +// Structure to describe request TLV 0x21 for NASSetRegistrationEventReport() +struct sNASSetRegistrationEventReportRequest_NetworkReject +{ + INT8 mNetworkRejectEnabled; + INT8 mSupressSytemInfoEnabled; +}; + +// Structure to describe request TLV 0x22 for NASSetRegistrationEventReport() +struct sNASSetRegistrationEventReportRequest_OperatorNameData +{ + INT8 mOperatorNameDataEnabled; +}; + +// Structure to describe request TLV 0x23 for NASSetRegistrationEventReport() +struct sNASSetRegistrationEventReportRequest_CSPPLMNModeBit +{ + INT8 mCSPPLMNModeBitEnabled; +}; + +// Structure to describe request TLV 0x24 for NASSetRegistrationEventReport() +struct sNASSetRegistrationEventReportRequest_RTREConfiguration +{ + INT8 mRTREConfigurationEnabled; +}; + +// Structure to describe request TLV 0x25 for NASSetRegistrationEventReport() +struct sNASSetRegistrationEventReportRequest_IMSPreference +{ + INT8 mIMSPreferenceEnabled; +}; + +// Structure to describe request TLV 0x26 for NASSetRegistrationEventReport() +struct sNASSetRegistrationEventReportRequest_E911State +{ + INT8 mE911StateReadyEnabled; +}; + +// Structure to describe request TLV 0x27 for NASSetRegistrationEventReport() +struct sNASSetRegistrationEventReportRequest_LTESIB16NetworkTime +{ + INT8 mLTESIB16NetworkTimeEnabled; +}; + +// Structure to describe request TLV 0x10 for NASGetSignalStrength() +struct sNASGetSignalStrengthRequest_RequestMask +{ + bool mQueryRSSI:1; + bool mQueryECIO:1; + bool mQueryIO:1; + bool mQuerySINR:1; + bool mQueryErrorRate:1; + bool mQueryRSRQ:1; + bool mQueryLTESNR:1; + bool mQueryLTERSRQ:1; + + // Padding out 8 bits + UINT8 mReserved1; +}; + +// Structure to describe response TLV 0x01 for NASGetSignalStrength() +struct sNASGetSignalStrengthResponse_SignalStrength +{ + INT8 mSignalStrengthdBm; + eQMINASRadioInterfaces mRadioInterface; +}; + +// Structure to describe response TLV 0x10 for NASGetSignalStrength() +struct sNASGetSignalStrengthResponse_SignalStrengthList +{ + UINT16 mNumberOfInfoInstances; + + struct sInfo + { + INT8 mSignalStrengthdBm; + eQMINASRadioInterfaces mRadioInterface; + }; + + // This array must be the size specified by mNumberOfInfoInstances + // sInfo mInfos[1]; +}; + +// Structure to describe response TLV 0x11 for NASGetSignalStrength() +struct sNASGetSignalStrengthResponse_RSSIList +{ + UINT16 mNumberOfMeasurements; + + struct sMeasurement + { + UINT8 mRSSIDelta; + eQMINASRadioInterfaces mRadioInterface; + }; + + // This array must be the size specified by mNumberOfMeasurements + // sMeasurement mMeasurements[1]; +}; + +// Structure to describe response TLV 0x12 for NASGetSignalStrength() +struct sNASGetSignalStrengthResponse_ECIOList +{ + UINT16 mNumberOfMeasurements; + + struct sMeasurement + { + UINT8 mECIO; + eQMINASRadioInterfaces mRadioInterface; + }; + + // This array must be the size specified by mNumberOfMeasurements + // sMeasurement mMeasurements[1]; +}; + +// Structure to describe response TLV 0x13 for NASGetSignalStrength() +struct sNASGetSignalStrengthResponse_IO +{ + UINT32 mIO; +}; + +// Structure to describe response TLV 0x14 for NASGetSignalStrength() +struct sNASGetSignalStrengthResponse_SINR +{ + eQMINASSINRLevels mSINR; +}; + +// Structure to describe response TLV 0x15 for NASGetSignalStrength() +struct sNASGetSignalStrengthResponse_ErrorRateList +{ + UINT16 mNumberOfMeasurements; + + struct sMeasurement + { + UINT16 mErrorRate; + eQMINASRadioInterfaces mRadioInterface; + }; + + // This array must be the size specified by mNumberOfMeasurements + // sMeasurement mMeasurements[1]; +}; + +// Structure to describe response TLV 0x16 for NASGetSignalStrength() +struct sNASGetSignalStrengthResponse_RSRQ +{ + INT8 mRSRQ; + eQMINASRadioInterfaces mRadioInterface; +}; + +// Structure to describe response TLV 0x17 for NASGetSignalStrength() +struct sNASGetSignalStrengthResponse_LTESNR +{ + INT16 mLTESNR; +}; + +// Structure to describe response TLV 0x18 for NASGetSignalStrength() +struct sNASGetSignalStrengthResponse_LTERSRQ +{ + INT16 mLTERSRP; +}; + +// Structure to describe request TLV 0x10 for NASPerformNetworkScan() +struct sNASPerformNetworkScanRequest_NetworkMask +{ + bool mGSM:1; + bool mUMTS:1; + bool mLTE:1; + bool mTDSCDMA:1; + + // Padding out 4 bits + UINT8 mReserved1:4; +}; + +// Structure to describe request TLV 0x11 for NASPerformNetworkScan() +struct sNASPerformNetworkScanRequest_ScanType +{ + eQMINASNetworkScanTypes mScanType; +}; + +// Structure to describe response TLV 0x10 for NASPerformNetworkScan() +struct sNASPerformNetworkScanResponse_NetworkInfo +{ + UINT16 mNumberOfInfoInstances; + + struct sNetworkInfo + { + UINT16 mMobileCountryCode; + UINT16 mMobileNetworkCode; + eQMINASInUseStates mInUseStatus:2; + eQMINASRoamingStates mRoamingStatus:2; + eQMINASForbiddenStates mForbiddenStatus:2; + eQMINASPreferredStates mPreferredStatus:2; + UINT8 mDescriptionLength; + + // This array must be the size specified by mDescriptionLength + // char mDescription[1]; + }; + + // This array must be the size specified by mNumberOfInfoInstances + // sNetworkInfo mNetworkInfos[1]; +}; + +// Structure to describe response TLV 0x11 for NASPerformNetworkScan() +struct sNASPerformNetworkScanResponse_NetworkRAT +{ + UINT16 mNumberOfInfoInstances; + + struct sInfo + { + UINT16 mMobileCountryCode; + UINT16 mMobileNetworkCode; + eQMINASRadioAccessTechnologies mRadioAccessTechnology; + }; + + // This array must be the size specified by mNumberOfInfoInstances + // sInfo mInfos[1]; +}; + +// Structure to describe response TLV 0x12 for NASPerformNetworkScan() +struct sNASPerformNetworkScanResponse_PCSInfo +{ + UINT16 mPCSInfoCount; + + struct sPCSInfo + { + UINT16 mMobileCountryCode; + UINT16 mMobileNetworkCode; + INT8 mMNCIncludesPCSDigit; + }; + + // This array must be the size specified by mPCSInfoCount + // sPCSInfo mPCSInfos[1]; +}; + +// Structure to describe response TLV 0x13 for NASPerformNetworkScan() +struct sNASPerformNetworkScanResponse_NetworkScanResult +{ + eQMINASNetworkScanResult mNetworkScanResult; +}; + +// Structure to describe response TLV 0x14 for NASPerformNetworkScan() +struct sNASPerformNetworkScanResponse_CSGInfo +{ + UINT8 mCSGInfoCount; + + struct sInfo + { + UINT16 mMobileCountryCode; + UINT16 mMobileNetworkCode; + eQMINASClosedSubscriberGroupCategories mCategory; + UINT8 mNameLength; + + // This array must be the size specified by mNameLength + // wchar_t mName[1]; + }; + + // This array must be the size specified by mCSGInfoCount + // sInfo mInfos[1]; +}; + +// Structure to describe request TLV 0x01 for NASInitiateNetworkRegister() +struct sNASInitiateNetworkRegisterRequest_Action +{ + eQMINASRegisterActions mRegisterAction; +}; + +// Structure to describe request TLV 0x10 for NASInitiateNetworkRegister() +struct sNASInitiateNetworkRegisterRequest_ManualInfo +{ + UINT16 mMobileCountryCode; + UINT16 mMobileNetworkCode; + eQMINASRadioAccessTechnologies mRadioAccessTechnology; +}; + +// Structure to describe request TLV 0x11 for NASInitiateNetworkRegister() +struct sNASInitiateNetworkRegisterRequest_ChangeDuration +{ + eQMINASChangeDuration mChangeDuration; +}; + +// Structure to describe request TLV 0x12 for NASInitiateNetworkRegister() +struct sNASInitiateNetworkRegisterRequest_PCSInfo +{ + INT8 mMNCIncludesPCSDigit; +}; + +// Structure to describe request TLV 0x10 for NASInitiateAttach() +struct sNASInitiateAttachRequest_Action +{ + eQMINASPSAttachActions mPSAttachAction; +}; + +// Structure to describe response TLV 0x01 for NASGetServingSystem() +struct sNASGetServingSystemResponse_ServingSystem +{ + eQMINASRegistrationStates mRegistrationState; + eQMINASCSPSAttachStates mCSAttachState; + eQMINASCSPSAttachStates mPSAttachState; + eQMINASRegisteredNetworks mRegisteredNetwork; + UINT8 mNumberOfRadioInterfacesInUse; + + // This array must be the size specified by mNumberOfRadioInterfacesInUse + // eQMINASRadioInterfaces mRadioInterface[1]; +}; + +// Structure to describe response TLV 0x10 for NASGetServingSystem() +struct sNASGetServingSystemResponse_RoamingIndicator +{ + eQMINASRoamingIndicators mRoamingIndicator; +}; + +// Structure to describe response TLV 0x11 for NASGetServingSystem() +struct sNASGetServingSystemResponse_DataServices +{ + UINT8 mNumberOfDataCapabilities; + + // This array must be the size specified by mNumberOfDataCapabilities + // eQMINASDataServiceCapabilities2 mDataCapability[1]; +}; + +// Structure to describe response TLV 0x12 for NASGetServingSystem() +struct sNASGetServingSystemResponse_CurrentPLMN +{ + UINT16 mMobileCountryCode; + UINT16 mMobileNetworkCode; + UINT8 mDescriptionLength; + + // This array must be the size specified by mDescriptionLength + // char mDescription[1]; +}; + +// Structure to describe response TLV 0x13 for NASGetServingSystem() +struct sNASGetServingSystemResponse_SystemID +{ + UINT16 mSystemID; + UINT16 mNetworkID; +}; + +// Structure to describe response TLV 0x14 for NASGetServingSystem() +struct sNASGetServingSystemResponse_BaseStation +{ + UINT16 mBaseStationID; + INT32 mLatitude; + INT32 mLongitude; +}; + +// Structure to describe response TLV 0x15 for NASGetServingSystem() +struct sNASGetServingSystemResponse_RoamingList +{ + UINT8 mNumberOfInstances; + + struct sInstance + { + eQMINASRadioInterfaces mRadioInterface; + eQMINASRoamingIndicators mRoamingIndicator; + }; + + // This array must be the size specified by mNumberOfInstances + // sInstance mInstances[1]; +}; + +// Structure to describe response TLV 0x16 for NASGetServingSystem() +struct sNASGetServingSystemResponse_DefaultRoaming +{ + eQMINASRoamingIndicators mRoamingIndicator; +}; + +// Structure to describe response TLV 0x17 for NASGetServingSystem() +struct sNASGetServingSystemResponse_3GPP2TimeZone +{ + UINT8 mLeapSeconds; + INT8 mLocalTimeOffset; + INT8 mDaylightSavingsInEffect; +}; + +// Structure to describe response TLV 0x18 for NASGetServingSystem() +struct sNASGetServingSystemResponse_ProtocolRevision +{ + eQMINASRevision mProtocolRevision; +}; + +// Structure to describe response TLV 0x1A for NASGetServingSystem() +struct sNASGetServingSystemResponse_3GPPTimeZone +{ + INT8 m3GPPTimeZone; +}; + +// Structure to describe response TLV 0x1B for NASGetServingSystem() +struct sNASGetServingSystemResponse_3GPPDaylightSavingsAdjustment +{ + eQMINASDaylightSavingsAdjustment mDaylightSavingsAdjustment; +}; + +// Structure to describe response TLV 0x1C for NASGetServingSystem() +struct sNASGetServingSystemResponse_3GPPLocationAreaCode +{ + UINT16 mLocationAreaCode; +}; + +// Structure to describe response TLV 0x1D for NASGetServingSystem() +struct sNASGetServingSystemResponse_3GPPCellID +{ + UINT32 mCellID; +}; + +// Structure to describe response TLV 0x1E for NASGetServingSystem() +struct sNASGetServingSystemResponse_3GPP2ConcurrentService +{ + eQMINASConcurrentService mConcurrentService; +}; + +// Structure to describe response TLV 0x1F for NASGetServingSystem() +struct sNASGetServingSystemResponse_3GPP2PRLIndicator +{ + eQMINASPRLIndicator mPRLIndicator; +}; + +// Structure to describe response TLV 0x20 for NASGetServingSystem() +struct sNASGetServingSystemResponse_DualTransferModeIndication +{ + eQMINASDualTransferMode mDualTransferMode; +}; + +// Structure to describe response TLV 0x21 for NASGetServingSystem() +struct sNASGetServingSystemResponse_DetailedServiceInformation +{ + eQMINASServiceStatus mServiceStatus; + eQMINASSystemServiceCapabilities mSystemServiceCapabilities; + eQMINASServiceStatus mCDMA1xEVDOServiceStatus; + eQMINASCDMA1xEVDOHybridInformation mCDMA1xEVDOHybridInformation; + eQMINASSystemForbidden mSystemForbidden; +}; + +// Structure to describe response TLV 0x22 for NASGetServingSystem() +struct sNASGetServingSystemResponse_CDMASystemInformation +{ + UINT16 mMobileCountryCode; + UINT8 mIMSI_11_12; +}; + +// Structure to describe response TLV 0x23 for NASGetServingSystem() +struct sNASGetServingSystemResponse_CDMA1xEVDOPersonality +{ + eQMINASCDMA1xEVDOPersonality mCDMA1xEVDOPersonality; +}; + +// Structure to describe response TLV 0x24 for NASGetServingSystem() +struct sNASGetServingSystemResponse_TrackingAreaCode +{ + UINT16 mTrackingAreaCode; +}; + +// Structure to describe response TLV 0x25 for NASGetServingSystem() +struct sNASGetServingSystemResponse_CallBarring +{ + eQMINASCallBarringStatus mCSCallBarringStatus; + eQMINASCallBarringStatus mPSCallBarringStatus; +}; + +// Structure to describe response TLV 0x26 for NASGetServingSystem() +struct sNASGetServingSystemResponse_UMTSPSC +{ + UINT16 mPrimaryScramblingCode; +}; + +// Structure to describe response TLV 0x27 for NASGetServingSystem() +struct sNASGetServingSystemResponse_PCSInfo +{ + UINT16 mMobileCountryCode; + UINT16 mMobileNetworkCode; + INT8 mMNCIncludesPCSDigit; +}; + +// Structure to describe response TLV 0x28 for NASGetServingSystem() +struct sNASGetServingSystemResponse_HSCallStatus +{ + eQMINASHighSpeedCallStatus mHighSpeedCallStatus; +}; + +// Structure to describe indication TLV 0x01 for NAS ServingSystemIndication +struct sNASServingSystemIndication_ServingSystem +{ + eQMINASRegistrationStates mRegistrationState; + eQMINASCSPSAttachStates mCSAttachState; + eQMINASCSPSAttachStates mPSAttachState; + eQMINASRegisteredNetworks mRegisteredNetwork; + UINT8 mNumberOfRadioInterfacesInUse; + + // This array must be the size specified by mNumberOfRadioInterfacesInUse + // eQMINASRadioInterfaces mRadioInterface[1]; +}; + +// Structure to describe indication TLV 0x10 for NAS ServingSystemIndication +struct sNASServingSystemIndication_RoamingIndicator +{ + eQMINASRoamingIndicators mRoamingIndicator; +}; + +// Structure to describe indication TLV 0x11 for NAS ServingSystemIndication +struct sNASServingSystemIndication_DataServices +{ + UINT8 mNumberOfDataCapabilities; + + // This array must be the size specified by mNumberOfDataCapabilities + // eQMINASDataServiceCapabilities2 mDataCapability[1]; +}; + +// Structure to describe indication TLV 0x12 for NAS ServingSystemIndication +struct sNASServingSystemIndication_CurrentPLMN +{ + UINT16 mMobileCountryCode; + UINT16 mMobileNetworkCode; + UINT8 mDescriptionLength; + + // This array must be the size specified by mDescriptionLength + // char mDescription[1]; +}; + +// Structure to describe indication TLV 0x13 for NAS ServingSystemIndication +struct sNASServingSystemIndication_SystemID +{ + UINT16 mSystemID; + UINT16 mNetworkID; +}; + +// Structure to describe indication TLV 0x14 for NAS ServingSystemIndication +struct sNASServingSystemIndication_BaseStation +{ + UINT16 mBaseStationID; + INT32 mLatitude; + INT32 mLongitude; +}; + +// Structure to describe indication TLV 0x15 for NAS ServingSystemIndication +struct sNASServingSystemIndication_RoamingList +{ + UINT8 mNumberOfInstances; + + struct sInstance + { + eQMINASRadioInterfaces mRadioInterface; + eQMINASRoamingIndicators mRoamingIndicator; + }; + + // This array must be the size specified by mNumberOfInstances + // sInstance mInstances[1]; +}; + +// Structure to describe indication TLV 0x16 for NAS ServingSystemIndication +struct sNASServingSystemIndication_DefaultRoaming +{ + eQMINASRoamingIndicators mRoamingIndicator; +}; + +// Structure to describe indication TLV 0x17 for NAS ServingSystemIndication +struct sNASServingSystemIndication_TimeZone +{ + UINT8 mLeapSeconds; + INT8 mLocalTimeOffset; + INT8 mDaylightSavingsInEffect; +}; + +// Structure to describe indication TLV 0x18 for NAS ServingSystemIndication +struct sNASServingSystemIndication_ProtocolRevision +{ + eQMINASRevision mProtocolRevision; +}; + +// Structure to describe indication TLV 0x19 for NAS ServingSystemIndication +struct sNASServingSystemIndication_PLMNChange +{ + INT8 mPLMNChanged; +}; + +// Structure to describe indication TLV 0x1A for NAS ServingSystemIndication +struct sNASServingSystemIndication_3GPPTimeZone +{ + INT8 m3GPPTimeZone; +}; + +// Structure to describe indication TLV 0x1B for NAS ServingSystemIndication +struct sNASServingSystemIndication_3GPPDaylightSavingAdjustment +{ + eQMINASDaylightSavingsAdjustment mDaylightSavingsAdjustment; +}; + +// Structure to describe indication TLV 0x1C for NAS ServingSystemIndication +struct sNASServingSystemIndication_3GPPUniversalTimeAndZone +{ + UINT16 mYear; + UINT8 mMonth; + UINT8 mDay; + UINT8 mHour; + UINT8 mMinute; + UINT8 mSecond; + INT8 mTimeZoneOffset; +}; + +// Structure to describe indication TLV 0x1D for NAS ServingSystemIndication +struct sNASServingSystemIndication_3GPPLocationAreaCode +{ + UINT16 mLocationAreaCode; +}; + +// Structure to describe indication TLV 0x1E for NAS ServingSystemIndication +struct sNASServingSystemIndication_3GPPCellID +{ + UINT32 mCellID; +}; + +// Structure to describe indication TLV 0x1F for NAS ServingSystemIndication +struct sNASServingSystemIndication_3GPP2ConcurrentService +{ + eQMINASConcurrentService mConcurrentService; +}; + +// Structure to describe indication TLV 0x20 for NAS ServingSystemIndication +struct sNASServingSystemIndication_3GPP2PRLIndicator +{ + eQMINASPRLIndicator mPRLIndicator; +}; + +// Structure to describe indication TLV 0x21 for NAS ServingSystemIndication +struct sNASServingSystemIndication_DualTransferModeIndication +{ + eQMINASDualTransferMode mDualTransferMode; +}; + +// Structure to describe indication TLV 0x22 for NAS ServingSystemIndication +struct sNASServingSystemIndication_DetailedServiceInformation +{ + eQMINASServiceStatus mServiceStatus; + eQMINASSystemServiceCapabilities mSystemServiceCapabilities; + eQMINASServiceStatus mCDMA1xEVDOServiceStatus; + eQMINASCDMA1xEVDOHybridInformation mCDMA1xEVDOHybridInformation; + eQMINASSystemForbidden mSystemForbidden; +}; + +// Structure to describe indication TLV 0x23 for NAS ServingSystemIndication +struct sNASServingSystemIndication_CDMASystemInformation +{ + UINT16 mMobileCountryCode; + UINT8 mIMSI_11_12; +}; + +// Structure to describe indication TLV 0x24 for NAS ServingSystemIndication +struct sNASServingSystemIndication_CDMA1xEVDOPersonality +{ + eQMINASCDMA1xEVDOPersonality mCDMA1xEVDOPersonality; +}; + +// Structure to describe indication TLV 0x25 for NAS ServingSystemIndication +struct sNASServingSystemIndication_TrackingAreaCode +{ + UINT16 mTrackingAreaCode; +}; + +// Structure to describe indication TLV 0x26 for NAS ServingSystemIndication +struct sNASServingSystemIndication_CallBarring +{ + eQMINASCallBarringStatus mCSCallBarringStatus; + eQMINASCallBarringStatus mPSCallBarringStatus; +}; + +// Structure to describe indication TLV 0x27 for NAS ServingSystemIndication +struct sNASServingSystemIndication_PLMNChangeStatus +{ + INT8 mNoPLMNChange; +}; + +// Structure to describe indication TLV 0x28 for NAS ServingSystemIndication +struct sNASServingSystemIndication_UMTSPSC +{ + UINT16 mPrimaryScramblingCode; +}; + +// Structure to describe indication TLV 0x29 for NAS ServingSystemIndication +struct sNASServingSystemIndication_PCSInfo +{ + UINT16 mMobileCountryCode; + UINT16 mMobileNetworkCode; + INT8 mMNCIncludesPCSDigit; +}; + +// Structure to describe indication TLV 0x2A for NAS ServingSystemIndication +struct sNASServingSystemIndication_HSCallStatus +{ + eQMINASHighSpeedCallStatus mHighSpeedCallStatus; +}; + +// Structure to describe response TLV 0x01 for NASGetHomeNetwork() +struct sNASGetHomeNetworkResponse_HomeNetwork +{ + UINT16 mMobileCountryCode; + UINT16 mMobileNetworkCode; + UINT8 mDescriptionLength; + + // This array must be the size specified by mDescriptionLength + // char mDescription[1]; +}; + +// Structure to describe response TLV 0x10 for NASGetHomeNetwork() +struct sNASGetHomeNetworkResponse_HomeIDs +{ + UINT16 mSystemID; + UINT16 mNetworkID; +}; + +// Structure to describe response TLV 0x11 for NASGetHomeNetwork() +struct sNASGetHomeNetworkResponse_ExtendedHomeNetwork +{ + UINT16 mMobileCountryCode; + UINT16 mMobileNetworkCode; + eQMINASNetworkDescriptionDisplays mDisplayNetworkDescription; + eQMINASNetworkDescriptionEncodings mNetworkDescriptionEncoding; + UINT8 mNetworkDescriptionLength; + + // This array must be the size specified by mNetworkDescriptionLength + // UINT8 mNetworkDescription[1]; +}; + +// Structure to describe response TLV 0x12 for NASGetHomeNetwork() +struct sNASGetHomeNetworkResponse_3GPPHomeNetworkMNC +{ + INT8 mHomeNetworkIs3GPP; + INT8 mMNCIncludesPCSDigit; +}; + +// Structure to describe response TLV 0x10 for NASGetPreferredNetworks() +struct sNASGetPreferredNetworksResponse_Networks +{ + UINT16 mNumberOfPreferredNetworks; + + struct sNetwork + { + UINT16 mMobileCountryCode; + UINT16 mMobileNetworkCode; + + // Padding out 6 bits + UINT8 mReserved1:6; + + bool mGSMCompact:1; + bool mGSM:1; + + // Padding out 6 bits + UINT8 mReserved2:6; + + bool mLTE:1; + bool mUMTS:1; + }; + + // This array must be the size specified by mNumberOfPreferredNetworks + // sNetwork mNetworks[1]; +}; + +// Structure to describe response TLV 0x11 for NASGetPreferredNetworks() +struct sNASGetPreferredNetworksResponse_StaticNetworks +{ + UINT16 mNumberOfPreferredNetworks; + + struct sNetwork + { + UINT16 mMobileCountryCode; + UINT16 mMobileNetworkCode; + + // Padding out 6 bits + UINT8 mReserved1:6; + + bool mGSMCompact:1; + bool mGSM:1; + + // Padding out 6 bits + UINT8 mReserved2:6; + + bool mLTE:1; + bool mUMTS:1; + }; + + // This array must be the size specified by mNumberOfPreferredNetworks + // sNetwork mNetworks[1]; +}; + +// Structure to describe response TLV 0x12 for NASGetPreferredNetworks() +struct sNASGetPreferredNetworksResponse_NetworksWithPCSDigitStatus +{ + UINT8 mNumberOfPreferredNetworks; + + struct sNetwork + { + UINT16 mMobileCountryCode; + UINT16 mMobileNetworkCode; + INT8 mMNCIncludesPCSDigit; + }; + + // This array must be the size specified by mNumberOfPreferredNetworks + // sNetwork mNetworks[1]; +}; + +// Structure to describe response TLV 0x13 for NASGetPreferredNetworks() +struct sNASGetPreferredNetworksResponse_StaticNetworksWithPCSDigitStatus +{ + UINT8 mNumberOfPreferredNetworks; + + struct sNetwork + { + UINT16 mMobileCountryCode; + UINT16 mMobileNetworkCode; + INT8 mMNCIncludesPCSDigit; + }; + + // This array must be the size specified by mNumberOfPreferredNetworks + // sNetwork mNetworks[1]; +}; + +// Structure to describe request TLV 0x10 for NASSetPreferredNetworks() +struct sNASSetPreferredNetworksRequest_Networks +{ + UINT16 mNumberOfPreferredNetworks; + + struct sNetwork + { + UINT16 mMobileCountryCode; + UINT16 mMobileNetworkCode; + + // Padding out 6 bits + UINT8 mReserved1:6; + + bool mGSMCompact:1; + bool mGSM:1; + + // Padding out 6 bits + UINT8 mReserved2:6; + + bool mLTE:1; + bool mUMTS:1; + }; + + // This array must be the size specified by mNumberOfPreferredNetworks + // sNetwork mNetworks[1]; +}; + +// Structure to describe request TLV 0x11 for NASSetPreferredNetworks() +struct sNASSetPreferredNetworksRequest_NetworksWithPCSDigitStatus +{ + UINT8 mNumberOfPreferredNetworks; + + struct sNetwork + { + UINT16 mMobileCountryCode; + UINT16 mMobileNetworkCode; + INT8 mMNCIncludesPCSDigit; + }; + + // This array must be the size specified by mNumberOfPreferredNetworks + // sNetwork mNetworks[1]; +}; + +// Structure to describe request TLV 0x12 for NASSetPreferredNetworks() +struct sNASSetPreferredNetworksRequest_Clear +{ + INT8 mClearPreferredNetworks; +}; + +// Structure to describe response TLV 0x10 for NASGetForbiddenNetworks() +struct sNASGetForbiddenNetworksResponse_Networks +{ + UINT16 mNumberOfForbiddenNetworks; + + struct sNetwork + { + UINT16 mMobileCountryCode; + UINT16 mMobileNetworkCode; + }; + + // This array must be the size specified by mNumberOfForbiddenNetworks + // sNetwork mNetworks[1]; +}; + +// Structure to describe request TLV 0x10 for NASSetForbiddenNetworks() +struct sNASSetForbiddenNetworksRequest_Networks +{ + UINT16 mNumberOfForbiddenNetworks; + + struct sNetwork + { + UINT16 mMobileCountryCode; + UINT16 mMobileNetworkCode; + }; + + // This array must be the size specified by mNumberOfForbiddenNetworks + // sNetwork mNetworks[1]; +}; + +// Structure to describe request TLV 0x01 for NASSetTechnologyPreference() +struct sNASSetTechnologyPreferenceRequest_Preference +{ + // mTechnology must be the first two bits of a UINT8 + // whose remaining bits are described in the optional + // structs following. + + // The following union is based on the value of mTechnology + union uValOfTechnology + { + // Always present + eQMINASTechPrefs mTechnology:2; + + // If the value of mTechnology == 1 + struct sTechnologyIs1 + { + // Padding out 2 bits + UINT8 mReserved1:2; + + UINT8 mAnalog:1; + UINT8 mDigital:1; + UINT8 mEVDO:1; + UINT8 mLTE:1; + + // Padding out 2 bits + UINT8 mReserved2:2; + }; + + sTechnologyIs1 mTechnologyIs1; + + // If the value of mTechnology == 2 + struct sTechnologyIs2 + { + // Padding out 2 bits + UINT8 mReserved3:2; + + UINT8 mGSM:1; + UINT8 mWCDMA:1; + UINT8 mEVDO:1; + UINT8 mLTE:1; + + // Padding out 2 bits + UINT8 mReserved4:2; + }; + + sTechnologyIs2 mTechnologyIs2; + + // Padding out 8 bits + UINT8 mReserved5; + }; + + uValOfTechnology mValOfTechnology; + + // Padding out 8 bits + UINT8 mReserved6; + + eQMINASTechPrefDurations mDuration; +}; + +// Structure to describe response TLV 0x01 for NASGetTechnologyPreference() +struct sNASGetTechnologyPreferenceResponse_ActivePreference +{ + // mTechnology must be the first two bits of a UINT8 + // whose remaining bits are described in the optional + // structs following. + + // The following union is based on the value of mTechnology + union uValOfTechnology + { + // Always present + eQMINASTechPrefs mTechnology:2; + + // If the value of mTechnology == 1 + struct sTechnologyIs1 + { + // Padding out 2 bits + UINT8 mReserved1:2; + + UINT8 mAnalog:1; + UINT8 mDigital:1; + UINT8 mEVDO:1; + UINT8 mLTE:1; + + // Padding out 2 bits + UINT8 mReserved2:2; + }; + + sTechnologyIs1 mTechnologyIs1; + + // If the value of mTechnology == 2 + struct sTechnologyIs2 + { + // Padding out 2 bits + UINT8 mReserved3:2; + + UINT8 mGSM:1; + UINT8 mWCDMA:1; + UINT8 mEVDO:1; + UINT8 mLTE:1; + + // Padding out 2 bits + UINT8 mReserved4:2; + }; + + sTechnologyIs2 mTechnologyIs2; + + // Padding out 8 bits + UINT8 mReserved5; + }; + + uValOfTechnology mValOfTechnology; + + // Padding out 8 bits + UINT8 mReserved6; + + eQMINASTechPrefDurations mDuration; +}; + +// Structure to describe response TLV 0x10 for NASGetTechnologyPreference() +struct sNASGetTechnologyPreferenceResponse_PersistentPreference +{ + // mTechnology must be the first two bits of a UINT8 + // whose remaining bits are described in the optional + // structs following. + + // The following union is based on the value of mTechnology + union uValOfTechnology + { + // Always present + eQMINASTechPrefs mTechnology:2; + + // If the value of mTechnology == 1 + struct sTechnologyIs1 + { + // Padding out 2 bits + UINT8 mReserved1:2; + + UINT8 mAnalog:1; + UINT8 mDigital:1; + UINT8 mEVDO:1; + UINT8 mLTE:1; + + // Padding out 2 bits + UINT8 mReserved2:2; + }; + + sTechnologyIs1 mTechnologyIs1; + + // If the value of mTechnology == 2 + struct sTechnologyIs2 + { + // Padding out 2 bits + UINT8 mReserved3:2; + + UINT8 mGSM:1; + UINT8 mWCDMA:1; + UINT8 mEVDO:1; + UINT8 mLTE:1; + + // Padding out 2 bits + UINT8 mReserved4:2; + }; + + sTechnologyIs2 mTechnologyIs2; + + // Padding out 8 bits + UINT8 mReserved5; + }; + + uValOfTechnology mValOfTechnology; + + // Padding out 8 bits + UINT8 mReserved6; +}; + +// Structure to describe response TLV 0x01 for NASGetACCOLC() +struct sNASGetACCOLCResponse_ACCOLC +{ + UINT8 mACCOLC; +}; + +// Structure to describe request TLV 0x01 for NASSetACCOLC() +struct sNASSetACCOLCRequest_ACCOLC +{ + char mSPC[6]; + UINT8 mACCOLC; +}; + +// Structure to describe indication TLV 0x01 for NAS GetSystemPreference +struct sNASGetSystemPreferenceIndication_Pref +{ + eQMINASSystemPreferences mSystemPreference; +}; + +// Structure to describe response TLV 0x11 for NASGetNetworkParameters() +struct sNASGetNetworkParametersResponse_SCI +{ + UINT8 mSlotCycleIndex; +}; + +// Structure to describe response TLV 0x12 for NASGetNetworkParameters() +struct sNASGetNetworkParametersResponse_SCM +{ + UINT8 mStationClassMark; +}; + +// Structure to describe response TLV 0x13 for NASGetNetworkParameters() +struct sNASGetNetworkParametersResponse_Registration +{ + INT8 mRegisterOnHomeSystem; + INT8 mRegisterOnForeignSystem; + INT8 mRegisterOnForeignNetwork; +}; + +// Structure to describe response TLV 0x14 for NASGetNetworkParameters() +struct sNASGetNetworkParametersResponse_CDMA1xEVDORevision +{ + INT8 mForceCDMA1xEVDORev0; +}; + +// Structure to describe response TLV 0x15 for NASGetNetworkParameters() +struct sNASGetNetworkParametersResponse_CDMA1xEVDOSCPCustom +{ + INT8 mCDMA1xEVDOSCPCustomConfig; + bool mSubtype2PhysicalLayer:1; + bool mEnhancedCCMAC:1; + bool mEnhancedACMAC:1; + bool mEnhancedFTCMAC:1; + bool mSubtype3RTCMAC:1; + bool mSubtype1RTCMAC:1; + bool mEnhancedIdle:1; + bool mGenericMultimodeCapableDiscPort:1; + + // Padding out 24 bits + UINT8 mReserved1[3]; + + bool mGenericBroadcast:1; + + // Padding out 31 bits + UINT8 mReserved2:7; + UINT8 mReserved3[3]; + + bool mSNMultiflowPacketApplication:1; + bool mSNEnhancedMultiflowPacketApplication:1; + + // Padding out 30 bits + UINT8 mReserved4:6; + UINT8 mReserved5[3]; +}; + +// Structure to describe response TLV 0x16 for NASGetNetworkParameters() +struct sNASGetNetworkParametersResponse_Roaming +{ + eQMINASRoamingPreferences mRoamPreference; +}; + +// Structure to describe response TLV 0x17 for NASGetNetworkParameters() +struct sNASGetNetworkParametersResponse_ForceCDMA1xEVDOSCP +{ + eQMINASForceCDMA1xEVDOSCP mForceCDMA1xEVDOSCP; +}; + +// Structure to describe request TLV 0x10 for NASSetNetworkParameters() +struct sNASSetNetworkParametersRequest_SPC +{ + char mSPC[6]; +}; + +// Structure to describe request TLV 0x14 for NASSetNetworkParameters() +struct sNASSetNetworkParametersRequest_CDMA1xEVDORevision +{ + INT8 mForceCDMA1xEVDORev0; +}; + +// Structure to describe request TLV 0x15 for NASSetNetworkParameters() +struct sNASSetNetworkParametersRequest_CDMA1xEVDOSCPCustom +{ + INT8 mCDMA1xEVDOSCPCustomConfig; + bool mSubtype2PhysicalLayer:1; + bool mEnhancedCCMAC:1; + bool mEnhancedACMAC:1; + bool mEnhancedFTCMAC:1; + bool mSubtype3RTCMAC:1; + bool mSubtype1RTCMAC:1; + bool mEnhancedIdle:1; + bool mGenericMultimodeCapableDiscPort:1; + + // Padding out 24 bits + UINT8 mReserved1[3]; + + bool mGenericBroadcast:1; + + // Padding out 31 bits + UINT8 mReserved2:7; + UINT8 mReserved3[3]; + + bool mSNMultiflowPacketApplication:1; + bool mSNEnhancedMultiflowPacketApplication:1; + + // Padding out 30 bits + UINT8 mReserved4:6; + UINT8 mReserved5[3]; +}; + +// Structure to describe request TLV 0x16 for NASSetNetworkParameters() +struct sNASSetNetworkParametersRequest_Roaming +{ + eQMINASRoamingPreferences mRoamPreference; +}; + +// Structure to describe response TLV 0x01 for NASGetRFInfo() +struct sNASGetRFInfoResponse_RFInfo +{ + UINT8 mNumberOfInstances; + + struct sInstance + { + eQMINASRadioInterfaces mRadioInterface; + eQMINASBandClasses mActiveBandClass; + UINT16 mActiveChannel; + }; + + // This array must be the size specified by mNumberOfInstances + // sInstance mInstances[1]; +}; + +// Structure to describe response TLV 0x01 for NASGetANAAAAuthenticationStatus() +struct sNASGetANAAAAuthenticationStatusResponse_Status +{ + eQMINASANAAAAuthenticationStatus mANAAAAuthenticationStatus; +}; + +// Structure to describe request TLV 0x10 for NASSetSystemSelectionPref() +struct sNASSetSystemSelectionPrefRequest_EmergencyMode +{ + INT8 mEmergencyModeOn; +}; + +// Structure to describe request TLV 0x11 for NASSetSystemSelectionPref() +struct sNASSetSystemSelectionPrefRequest_Mode +{ + bool mCDMA1x:1; + bool mCDMA1xEVDO:1; + bool mGSM:1; + bool mUMTS:1; + bool mLTE:1; + bool mTDSCDMA:1; + + // Padding out 10 bits + UINT8 mReserved1:2; + UINT8 mReserved2; +}; + +// Structure to describe request TLV 0x12 for NASSetSystemSelectionPref() +struct sNASSetSystemSelectionPrefRequest_Band +{ + bool mBandClass0ASystem:1; + bool mBandClass0BSystem:1; + bool mBandClass1:1; + bool mBandClass2:1; + bool mBandClass3ASystem:1; + bool mBandClass4:1; + bool mBandClass5:1; + bool mGSMDCS:1; + bool mGSMPrimary:1; + bool mGSMExtended:1; + bool mBandClass6:1; + bool mBandClass7:1; + bool mBandClass8:1; + bool mBandClass9:1; + bool mBandClass10:1; + bool mBandClass11:1; + bool mGSM450:1; + bool mGSM480:1; + bool mGSM750:1; + bool mGSM850:1; + bool mGSMRailways:1; + bool mGSMPCS:1; + bool mWCDMA2100I:1; + bool mWCDMAPCS1900:1; + bool mWCDMADCS1800:1; + bool mWCDMA1700US:1; + bool mWCDMA850:1; + bool mWCDMA800:1; + bool mBandClass12:1; + bool mBandClass14:1; + + // Padding out 1 bits + UINT8 mReserved1:1; + + bool mBandClass15:1; + + // Padding out 16 bits + UINT8 mReserved2[2]; + + bool mWCDMA2600:1; + bool mWCDMA900:1; + bool mWCDMA1700Japan:1; + + // Padding out 5 bits + UINT8 mReserved3:5; + + bool mBandClass16:1; + bool mBandClass17:1; + bool mBandClass18:1; + bool mBandClass19:1; + + // Padding out 4 bits + UINT8 mReserved4:4; +}; + +// Structure to describe request TLV 0x13 for NASSetSystemSelectionPref() +struct sNASSetSystemSelectionPrefRequest_PRL +{ + eQMINASPRLPreferences mPRLPreference; +}; + +// Structure to describe request TLV 0x14 for NASSetSystemSelectionPref() +struct sNASSetSystemSelectionPrefRequest_Roaming +{ + eQMINASRoamingPreferences2 mRoamingPreference; +}; + +// Structure to describe request TLV 0x15 for NASSetSystemSelectionPref() +struct sNASSetSystemSelectionPrefRequest_LTEBand +{ + bool mEUTRABand1:1; + bool mEUTRABand2:1; + bool mEUTRABand3:1; + bool mEUTRABand4:1; + bool mEUTRABand5:1; + bool mEUTRABand6:1; + bool mEUTRABand7:1; + bool mEUTRABand8:1; + bool mEUTRABand9:1; + bool mEUTRABand10:1; + bool mEUTRABand11:1; + bool mEUTRABand12:1; + bool mEUTRABand13:1; + bool mEUTRABand14:1; + + // Padding out 2 bits + UINT8 mReserved1:2; + + bool mEUTRABand17:1; + bool mEUTRABand18:1; + bool mEUTRABand19:1; + bool mEUTRABand20:1; + bool mEUTRABand21:1; + + // Padding out 2 bits + UINT8 mReserved2:2; + + bool mEUTRABand24:1; + bool mEUTRABand25:1; + + // Padding out 7 bits + UINT8 mReserved3:7; + + bool mEUTRABand33:1; + bool mEUTRABand34:1; + bool mEUTRABand35:1; + bool mEUTRABand36:1; + bool mEUTRABand37:1; + bool mEUTRABand38:1; + bool mEUTRABand39:1; + bool mEUTRABand40:1; + bool mEUTRABand41:1; + bool mEUTRABand42:1; + bool mEUTRABand43:1; + + // Padding out 21 bits + UINT8 mReserved4:5; + UINT8 mReserved5[2]; +}; + +// Structure to describe request TLV 0x16 for NASSetSystemSelectionPref() +struct sNASSetSystemSelectionPrefRequest_NetworkSelection +{ + eQMINASNetworkSelection mNetworkSelection; + UINT16 mMobileCountryCode; + UINT16 mMobileNetworkCode; +}; + +// Structure to describe request TLV 0x17 for NASSetSystemSelectionPref() +struct sNASSetSystemSelectionPrefRequest_ChangeDuration +{ + eQMINASChangeDuration mChangeDuration; +}; + +// Structure to describe request TLV 0x18 for NASSetSystemSelectionPref() +struct sNASSetSystemSelectionPrefRequest_ServiceDomain +{ + eQMINASServiceDomainPrefs mServiceDomainPreference; +}; + +// Structure to describe request TLV 0x19 for NASSetSystemSelectionPref() +struct sNASSetSystemSelectionPrefRequest_GWAcquisitionOrder +{ + eQMINASAcquisitionOrder mAcquisitionOrderPreference; +}; + +// Structure to describe request TLV 0x1A for NASSetSystemSelectionPref() +struct sNASSetSystemSelectionPrefRequest_PCSInfo +{ + INT8 mMNCIncludesPCSDigit; +}; + +// Structure to describe request TLV 0x1B for NASSetSystemSelectionPref() +struct sNASSetSystemSelectionPrefRequest_Domain +{ + eQMINASServiceDomainPrefs mServiceDomainPreference; +}; + +// Structure to describe request TLV 0x1C for NASSetSystemSelectionPref() +struct sNASSetSystemSelectionPrefRequest_Acquisition +{ + eQMINASAcquisitionOrder mAcquisitionOrderPreference; +}; + +// Structure to describe request TLV 0x1D for NASSetSystemSelectionPref() +struct sNASSetSystemSelectionPrefRequest_TDSCDMABand +{ + bool mTDSCDMABandA:1; + bool mTDSCDMABandB:1; + bool mTDSCDMABandC:1; + bool mTDSCDMABandD:1; + bool mTDSCDMABandE:1; + bool mTDSCDMABandF:1; + + // Padding out 58 bits + UINT8 mReserved1:2; + UINT8 mReserved2[7]; +}; + +// Structure to describe request TLV 0x1E for NASSetSystemSelectionPref() +struct sNASSetSystemSelectionPrefRequest_AcquisitionOrder +{ + UINT8 mNumberOfRadioInterfaces; + + // This array must be the size specified by mNumberOfRadioInterfaces + // eQMINASRadioInterfaces mRadioInterface[1]; +}; + +// Structure to describe request TLV 0x1F for NASSetSystemSelectionPref() +struct sNASSetSystemSelectionPrefRequest_RegistrationRestriction +{ + eQMINASRegistrationRestrictions mRegistrationRestriction; +}; + +// Structure to describe request TLV 0x20 for NASSetSystemSelectionPref() +struct sNASSetSystemSelectionPrefRequest_CSGID +{ + UINT16 mMobileCountryCode; + UINT16 mMobileNetworkCode; + INT8 mMNCIncludesPCSDigit; + UINT32 mCSGID; + eQMINASRadioAccessTechnologies mRadioAccessTechnology; +}; + +// Structure to describe request TLV 0x21 for NASSetSystemSelectionPref() +struct sNASSetSystemSelectionPrefRequest_ModemUsagePreference +{ + eQMINASModemUsagePreferences mModemUsagePreference; +}; + +// Structure to describe request TLV 0x22 for NASSetSystemSelectionPref() +struct sNASSetSystemSelectionPrefRequest_RadioInterface +{ + eQMINASRadioInterfaces mRadioInterface; +}; + +// Structure to describe response TLV 0x10 for NASGetSystemSelectionPref() +struct sNASGetSystemSelectionPrefResponse_EmergencyMode +{ + INT8 mEmergencyModeOn; +}; + +// Structure to describe response TLV 0x11 for NASGetSystemSelectionPref() +struct sNASGetSystemSelectionPrefResponse_Mode +{ + bool mCDMA1x:1; + bool mCDMA1xEVDO:1; + bool mGSM:1; + bool mUMTS:1; + bool mLTE:1; + bool mTDSCDMA:1; + + // Padding out 10 bits + UINT8 mReserved1:2; + UINT8 mReserved2; +}; + +// Structure to describe response TLV 0x12 for NASGetSystemSelectionPref() +struct sNASGetSystemSelectionPrefResponse_Band +{ + bool mBandClass0ASystem:1; + bool mBandClass0BSystem:1; + bool mBandClass1:1; + bool mBandClass2:1; + bool mBandClass3ASystem:1; + bool mBandClass4:1; + bool mBandClass5:1; + bool mGSMDCS:1; + bool mGSMPrimary:1; + bool mGSMExtended:1; + bool mBandClass6:1; + bool mBandClass7:1; + bool mBandClass8:1; + bool mBandClass9:1; + bool mBandClass10:1; + bool mBandClass11:1; + bool mGSM450:1; + bool mGSM480:1; + bool mGSM750:1; + bool mGSM850:1; + bool mGSMRailways:1; + bool mGSMPCS:1; + bool mWCDMA2100I:1; + bool mWCDMAPCS1900:1; + bool mWCDMADCS1800:1; + bool mWCDMA1700US:1; + bool mWCDMA850:1; + bool mWCDMA800:1; + bool mBandClass12:1; + bool mBandClass14:1; + + // Padding out 1 bits + UINT8 mReserved1:1; + + bool mBandClass15:1; + + // Padding out 16 bits + UINT8 mReserved2[2]; + + bool mWCDMA2600:1; + bool mWCDMA900:1; + bool mWCDMA1700Japan:1; + + // Padding out 5 bits + UINT8 mReserved3:5; + + bool mBandClass16:1; + bool mBandClass17:1; + bool mBandClass18:1; + bool mBandClass19:1; + + // Padding out 4 bits + UINT8 mReserved4:4; +}; + +// Structure to describe response TLV 0x13 for NASGetSystemSelectionPref() +struct sNASGetSystemSelectionPrefResponse_PRL +{ + eQMINASPRLPreferences mPRLPreference; +}; + +// Structure to describe response TLV 0x14 for NASGetSystemSelectionPref() +struct sNASGetSystemSelectionPrefResponse_Roaming +{ + eQMINASRoamingPreferences2 mRoamingPreference; +}; + +// Structure to describe response TLV 0x15 for NASGetSystemSelectionPref() +struct sNASGetSystemSelectionPrefResponse_LTEBand +{ + bool mEUTRABand1:1; + bool mEUTRABand2:1; + bool mEUTRABand3:1; + bool mEUTRABand4:1; + bool mEUTRABand5:1; + bool mEUTRABand6:1; + bool mEUTRABand7:1; + bool mEUTRABand8:1; + bool mEUTRABand9:1; + bool mEUTRABand10:1; + bool mEUTRABand11:1; + bool mEUTRABand12:1; + bool mEUTRABand13:1; + bool mEUTRABand14:1; + + // Padding out 2 bits + UINT8 mReserved1:2; + + bool mEUTRABand17:1; + bool mEUTRABand18:1; + bool mEUTRABand19:1; + bool mEUTRABand20:1; + bool mEUTRABand21:1; + + // Padding out 2 bits + UINT8 mReserved2:2; + + bool mEUTRABand24:1; + bool mEUTRABand25:1; + + // Padding out 7 bits + UINT8 mReserved3:7; + + bool mEUTRABand33:1; + bool mEUTRABand34:1; + bool mEUTRABand35:1; + bool mEUTRABand36:1; + bool mEUTRABand37:1; + bool mEUTRABand38:1; + bool mEUTRABand39:1; + bool mEUTRABand40:1; + bool mEUTRABand41:1; + bool mEUTRABand42:1; + bool mEUTRABand43:1; + + // Padding out 21 bits + UINT8 mReserved4:5; + UINT8 mReserved5[2]; +}; + +// Structure to describe response TLV 0x16 for NASGetSystemSelectionPref() +struct sNASGetSystemSelectionPrefResponse_NetworkSelection +{ + eQMINASNetworkSelection mNetworkSelection; +}; + +// Structure to describe response TLV 0x18 for NASGetSystemSelectionPref() +struct sNASGetSystemSelectionPrefResponse_Domain +{ + eQMINASServiceDomainPrefs mServiceDomainPreference; +}; + +// Structure to describe response TLV 0x19 for NASGetSystemSelectionPref() +struct sNASGetSystemSelectionPrefResponse_Acquisition +{ + eQMINASAcquisitionOrder mAcquisitionOrderPreference; +}; + +// Structure to describe response TLV 0x1A for NASGetSystemSelectionPref() +struct sNASGetSystemSelectionPrefResponse_TDSCDMABand +{ + bool mTDSCDMABandA:1; + bool mTDSCDMABandB:1; + bool mTDSCDMABandC:1; + bool mTDSCDMABandD:1; + bool mTDSCDMABandE:1; + bool mTDSCDMABandF:1; + + // Padding out 58 bits + UINT8 mReserved1:2; + UINT8 mReserved2[7]; +}; + +// Structure to describe response TLV 0x1B for NASGetSystemSelectionPref() +struct sNASGetSystemSelectionPrefResponse_ManualPLMN +{ + UINT16 mMobileCountryCode; + UINT16 mMobileNetworkCode; + INT8 mMNCIncludesPCSDigit; +}; + +// Structure to describe response TLV 0x1C for NASGetSystemSelectionPref() +struct sNASGetSystemSelectionPrefResponse_AcquisitionOrder +{ + UINT8 mNumberOfRadioInterfaces; + + // This array must be the size specified by mNumberOfRadioInterfaces + // eQMINASRadioInterfaces mRadioInterface[1]; +}; + +// Structure to describe response TLV 0x1D for NASGetSystemSelectionPref() +struct sNASGetSystemSelectionPrefResponse_RegistrationRestriction +{ + eQMINASRegistrationRestrictions mRegistrationRestriction; +}; + +// Structure to describe response TLV 0x1E for NASGetSystemSelectionPref() +struct sNASGetSystemSelectionPrefResponse_CSGID +{ + UINT16 mMobileCountryCode; + UINT16 mMobileNetworkCode; + INT8 mMNCIncludesPCSDigit; + UINT32 mCSGID; + eQMINASRadioAccessTechnologies mRadioAccessTechnology; +}; + +// Structure to describe response TLV 0x1F for NASGetSystemSelectionPref() +struct sNASGetSystemSelectionPrefResponse_ModemUsagePreference +{ + eQMINASModemUsagePreferences mModemUsagePreference; +}; + +// Structure to describe indication TLV 0x10 for NAS SystemSelectionPrefIndication +struct sNASSystemSelectionPrefIndication_EmergencyMode +{ + INT8 mEmergencyModeOn; +}; + +// Structure to describe indication TLV 0x11 for NAS SystemSelectionPrefIndication +struct sNASSystemSelectionPrefIndication_Mode +{ + bool mCDMA1x:1; + bool mCDMA1xEVDO:1; + bool mGSM:1; + bool mUMTS:1; + bool mLTE:1; + bool mTDSCDMA:1; + + // Padding out 10 bits + UINT8 mReserved1:2; + UINT8 mReserved2; +}; + +// Structure to describe indication TLV 0x12 for NAS SystemSelectionPrefIndication +struct sNASSystemSelectionPrefIndication_Band +{ + bool mBandClass0ASystem:1; + bool mBandClass0BSystem:1; + bool mBandClass1:1; + bool mBandClass2:1; + bool mBandClass3ASystem:1; + bool mBandClass4:1; + bool mBandClass5:1; + bool mGSMDCS:1; + bool mGSMPrimary:1; + bool mGSMExtended:1; + bool mBandClass6:1; + bool mBandClass7:1; + bool mBandClass8:1; + bool mBandClass9:1; + bool mBandClass10:1; + bool mBandClass11:1; + bool mGSM450:1; + bool mGSM480:1; + bool mGSM750:1; + bool mGSM850:1; + bool mGSMRailways:1; + bool mGSMPCS:1; + bool mWCDMA2100I:1; + bool mWCDMAPCS1900:1; + bool mWCDMADCS1800:1; + bool mWCDMA1700US:1; + bool mWCDMA850:1; + bool mWCDMA800:1; + bool mBandClass12:1; + bool mBandClass14:1; + + // Padding out 1 bits + UINT8 mReserved1:1; + + bool mBandClass15:1; + + // Padding out 16 bits + UINT8 mReserved2[2]; + + bool mWCDMA2600:1; + bool mWCDMA900:1; + bool mWCDMA1700Japan:1; + + // Padding out 5 bits + UINT8 mReserved3:5; + + bool mBandClass16:1; + bool mBandClass17:1; + bool mBandClass18:1; + bool mBandClass19:1; + + // Padding out 4 bits + UINT8 mReserved4:4; +}; + +// Structure to describe indication TLV 0x13 for NAS SystemSelectionPrefIndication +struct sNASSystemSelectionPrefIndication_PRL +{ + eQMINASPRLPreferences mPRLPreference; +}; + +// Structure to describe indication TLV 0x14 for NAS SystemSelectionPrefIndication +struct sNASSystemSelectionPrefIndication_Roaming +{ + eQMINASRoamingPreferences2 mRoamingPreference; +}; + +// Structure to describe indication TLV 0x15 for NAS SystemSelectionPrefIndication +struct sNASSystemSelectionPrefIndication_LTEBand +{ + bool mEUTRABand1:1; + bool mEUTRABand2:1; + bool mEUTRABand3:1; + bool mEUTRABand4:1; + bool mEUTRABand5:1; + bool mEUTRABand6:1; + bool mEUTRABand7:1; + bool mEUTRABand8:1; + bool mEUTRABand9:1; + bool mEUTRABand10:1; + bool mEUTRABand11:1; + bool mEUTRABand12:1; + bool mEUTRABand13:1; + bool mEUTRABand14:1; + + // Padding out 2 bits + UINT8 mReserved1:2; + + bool mEUTRABand17:1; + bool mEUTRABand18:1; + bool mEUTRABand19:1; + bool mEUTRABand20:1; + bool mEUTRABand21:1; + + // Padding out 2 bits + UINT8 mReserved2:2; + + bool mEUTRABand24:1; + bool mEUTRABand25:1; + + // Padding out 7 bits + UINT8 mReserved3:7; + + bool mEUTRABand33:1; + bool mEUTRABand34:1; + bool mEUTRABand35:1; + bool mEUTRABand36:1; + bool mEUTRABand37:1; + bool mEUTRABand38:1; + bool mEUTRABand39:1; + bool mEUTRABand40:1; + bool mEUTRABand41:1; + bool mEUTRABand42:1; + bool mEUTRABand43:1; + + // Padding out 21 bits + UINT8 mReserved4:5; + UINT8 mReserved5[2]; +}; + +// Structure to describe indication TLV 0x16 for NAS SystemSelectionPrefIndication +struct sNASSystemSelectionPrefIndication_NetworkSelection +{ + eQMINASNetworkSelection mNetworkSelection; +}; + +// Structure to describe indication TLV 0x18 for NAS SystemSelectionPrefIndication +struct sNASSystemSelectionPrefIndication_Domain +{ + eQMINASServiceDomainPrefs mServiceDomainPreference; +}; + +// Structure to describe indication TLV 0x19 for NAS SystemSelectionPrefIndication +struct sNASSystemSelectionPrefIndication_Acquisition +{ + eQMINASAcquisitionOrder mAcquisitionOrderPreference; +}; + +// Structure to describe indication TLV 0x1A for NAS SystemSelectionPrefIndication +struct sNASSystemSelectionPrefIndication_TDSCDMABand +{ + bool mTDSCDMABandA:1; + bool mTDSCDMABandB:1; + bool mTDSCDMABandC:1; + bool mTDSCDMABandD:1; + bool mTDSCDMABandE:1; + bool mTDSCDMABandF:1; + + // Padding out 58 bits + UINT8 mReserved1:2; + UINT8 mReserved2[7]; +}; + +// Structure to describe indication TLV 0x1B for NAS SystemSelectionPrefIndication +struct sNASSystemSelectionPrefIndication_ManualPLMN +{ + UINT16 mMobileCountryCode; + UINT16 mMobileNetworkCode; + INT8 mMNCIncludesPCSDigit; +}; + +// Structure to describe indication TLV 0x1C for NAS SystemSelectionPrefIndication +struct sNASSystemSelectionPrefIndication_AcquisitionOrder +{ + UINT8 mNumberOfRadioInterfaces; + + // This array must be the size specified by mNumberOfRadioInterfaces + // eQMINASRadioInterfaces mRadioInterface[1]; +}; + +// Structure to describe indication TLV 0x1D for NAS SystemSelectionPrefIndication +struct sNASSystemSelectionPrefIndication_RegistrationRestriction +{ + eQMINASRegistrationRestrictions mRegistrationRestriction; +}; + +// Structure to describe indication TLV 0x1E for NAS SystemSelectionPrefIndication +struct sNASSystemSelectionPrefIndication_CSGID +{ + UINT16 mMobileCountryCode; + UINT16 mMobileNetworkCode; + INT8 mMNCIncludesPCSDigit; + UINT32 mCSGID; + eQMINASRadioAccessTechnologies mRadioAccessTechnology; +}; + +// Structure to describe indication TLV 0x1F for NAS SystemSelectionPrefIndication +struct sNASSystemSelectionPrefIndication_ModemUsagePreference +{ + eQMINASModemUsagePreferences mModemUsagePreference; +}; + +// Structure to describe request TLV 0x01 for NASSetDDTMPreference() +struct sNASSetDDTMPreferenceRequest_DDTM +{ + eQMINASDDTMPreferences mDDTMPreference; + bool mSuppressL2ACK:1; + bool mSuppress1xRegistrations:1; + bool mIgnoreServiceOptionPages:1; + bool mBlockMobileOriginatedSMSAndDBM:1; + + // Padding out 12 bits + UINT8 mReserved1:4; + UINT8 mReserved2; + + eQMINASServiceOptionActions mServiceOptionAction; + UINT8 mNumberOfInstances; + + // This array must be the size specified by mNumberOfInstances + // UINT16 mServiceOption[1]; +}; + +// Structure to describe response TLV 0x01 for NASGetDDTMPreference() +struct sNASGetDDTMPreferenceResponse_DDTM +{ + eQMINASDDTMPreferences mDDTMPreference; + bool mSuppressL2ACK:1; + bool mSuppress1xRegistrations:1; + bool mIgnoreServiceOptionPages:1; + bool mBlockMobileOriginatedSMSAndDBM:1; + + // Padding out 12 bits + UINT8 mReserved1:4; + UINT8 mReserved2; + + eQMINASServiceOptionActions mServiceOptionAction; + UINT8 mNumberOfInstances; + + // This array must be the size specified by mNumberOfInstances + // UINT16 mServiceOption[1]; +}; + +// Structure to describe indication TLV 0x01 for NAS DDTMPreferenceIndication +struct sNASDDTMPreferenceIndication_DDTM +{ + eQMINASDDTMPreferences mDDTMPreference; + bool mSuppressL2ACK:1; + bool mSuppress1xRegistrations:1; + bool mIgnoreServiceOptionPages:1; + bool mBlockMobileOriginatedSMSAndDBM:1; + + // Padding out 12 bits + UINT8 mReserved1:4; + UINT8 mReserved2; + + eQMINASServiceOptionActions mServiceOptionAction; + UINT8 mNumberOfInstances; + + // This array must be the size specified by mNumberOfInstances + // UINT16 mServiceOption[1]; +}; + +// Structure to describe response TLV 0x10 for NASGetOperatorNameData() +struct sNASGetOperatorNameDataResponse_ServiceProviderName +{ + UINT8 mDisplayCondition; + UINT8 mSPNLength; + + // This array must be the size specified by mSPNLength + // UINT8 mSPN[1]; +}; + +// Structure to describe response TLV 0x11 for NASGetOperatorNameData() +struct sNASGetOperatorNameDataResponse_OperatorPLMNList +{ + UINT16 mPLMNListLength; + + struct sPLNM + { + char mMobileCountryCode[3]; + char mMobileNetworkCode[3]; + UINT16 mLocationAreaCode1; + UINT16 mLocationAreaCode2; + UINT8 mPLMNNameRecordIdentifier; + }; + + // This array must be the size specified by mPLMNListLength + // sPLNM mPLNMs[1]; +}; + +// Structure to describe response TLV 0x12 for NASGetOperatorNameData() +struct sNASGetOperatorNameDataResponse_PLMNName +{ + UINT8 mPLMNCount; + + struct sPLMNName1 + { + eQMINASPLMNNameEncodingSchemes mPLMNShortEncoding; + eQMINASPLMNNameCountryInitials mPLMNShortCountryInitials; + eQMINASPLMNNameSpareBits mPLMNLongBits; + eQMINASPLMNNameSpareBits mPLMNSpareBits; + UINT8 mPLMNLongLength; + + // This array must be the size specified by mPLMNLongLength + // UINT8 mPLMNLong[1]; + }; + + struct sPLMNName2 + { + UINT8 mPLMNShortLength; + + // This array must be the size specified by mPLMNShortLength + // UINT8 mPLMNShort[1]; + }; + + struct sPLMNName + { + sPLMNName1 mPLMNName1; + sPLMNName2 mPLMNName2; + }; + + // This array must be the size specified by mPLMNCount + // sPLMNName mPLMNNames[1]; +}; + +// Structure to describe response TLV 0x13 for NASGetOperatorNameData() +struct sNASGetOperatorNameDataResponse_OperatorStringName +{ + // String is variable length, but must be size of the container + // char mPLMNOperatorName[1]; +}; + +// Structure to describe response TLV 0x14 for NASGetOperatorNameData() +struct sNASGetOperatorNameDataResponse_NITZInformation1 +{ + eQMINASPLMNNameEncodingSchemes mPLMNShortEncoding; + eQMINASPLMNNameCountryInitials mPLMNShortCountryInitials; + eQMINASPLMNNameSpareBits mPLMNLongBits; + eQMINASPLMNNameSpareBits mPLMNSpareBits; + UINT8 mPLMNLongLength; + + // This array must be the size specified by mPLMNLongLength + // UINT8 mPLMNLong[1]; +}; + +struct sNASGetOperatorNameDataResponse_NITZInformation2 +{ + UINT8 mPLMNShortLength; + + // This array must be the size specified by mPLMNShortLength + // UINT8 mPLMNShort[1]; +}; + +struct sNASGetOperatorNameDataResponse_NITZInformation +{ + sNASGetOperatorNameDataResponse_NITZInformation1 mNASGetOperatorNameDataResponse_NITZInformation1; + sNASGetOperatorNameDataResponse_NITZInformation2 mNASGetOperatorNameDataResponse_NITZInformation2; +}; + +// Structure to describe indication TLV 0x10 for NAS OperatorNameDataIndication +struct sNASOperatorNameDataIndication_ServiceProviderName +{ + UINT8 mDisplayCondition; + UINT8 mSPNLength; + + // This array must be the size specified by mSPNLength + // UINT8 mSPN[1]; +}; + +// Structure to describe indication TLV 0x11 for NAS OperatorNameDataIndication +struct sNASOperatorNameDataIndication_OperatorPLMNList +{ + UINT16 mPLMNListLength; + + struct sPLNM + { + char mMobileCountryCode[3]; + char mMobileNetworkCode[3]; + UINT16 mLocationAreaCode1; + UINT16 mLocationAreaCode2; + UINT8 mPLMNNameRecordIdentifier; + }; + + // This array must be the size specified by mPLMNListLength + // sPLNM mPLNMs[1]; +}; + +// Structure to describe indication TLV 0x12 for NAS OperatorNameDataIndication +struct sNASOperatorNameDataIndication_PLMNName +{ + UINT8 mPLMNCount; + + struct sPLMNName1 + { + eQMINASPLMNNameEncodingSchemes mPLMNShortEncoding; + eQMINASPLMNNameCountryInitials mPLMNShortCountryInitials; + eQMINASPLMNNameSpareBits mPLMNLongBits; + eQMINASPLMNNameSpareBits mPLMNSpareBits; + UINT8 mPLMNLongLength; + + // This array must be the size specified by mPLMNLongLength + // UINT8 mPLMNLong[1]; + }; + + struct sPLMNName2 + { + UINT8 mPLMNShortLength; + + // This array must be the size specified by mPLMNShortLength + // UINT8 mPLMNShort[1]; + }; + + struct sPLMNName + { + sPLMNName1 mPLMNName1; + sPLMNName2 mPLMNName2; + }; + + // This array must be the size specified by mPLMNCount + // sPLMNName mPLMNNames[1]; +}; + +// Structure to describe indication TLV 0x13 for NAS OperatorNameDataIndication +struct sNASOperatorNameDataIndication_OperatorStringName +{ + // String is variable length, but must be size of the container + // char mPLMNOperatorName[1]; +}; + +// Structure to describe indication TLV 0x14 for NAS OperatorNameDataIndication +struct sNASOperatorNameDataIndication_NITZInformation1 +{ + eQMINASPLMNNameEncodingSchemes mPLMNShortEncoding; + eQMINASPLMNNameCountryInitials mPLMNShortCountryInitials; + eQMINASPLMNNameSpareBits mPLMNLongBits; + eQMINASPLMNNameSpareBits mPLMNSpareBits; + UINT8 mPLMNLongLength; + + // This array must be the size specified by mPLMNLongLength + // UINT8 mPLMNLong[1]; +}; + +struct sNASOperatorNameDataIndication_NITZInformation2 +{ + UINT8 mPLMNShortLength; + + // This array must be the size specified by mPLMNShortLength + // UINT8 mPLMNShort[1]; +}; + +struct sNASOperatorNameDataIndication_NITZInformation +{ + sNASOperatorNameDataIndication_NITZInformation1 mNASOperatorNameDataIndication_NITZInformation1; + sNASOperatorNameDataIndication_NITZInformation2 mNASOperatorNameDataIndication_NITZInformation2; +}; + +// Structure to describe response TLV 0x10 for NASGetCSPPLMNMode() +struct sNASGetCSPPLMNModeResponse_Mode +{ + INT8 mRestrictManualPLMNSelection; +}; + +// Structure to describe indication TLV 0x10 for NAS CSPPLMNModeIndication +struct sNASCSPPLMNModeIndication_Mode +{ + INT8 mRestrictManualPLMNSelection; +}; + +// Structure to describe request TLV 0x01 for NASUpdateAKEY() +struct sNASUpdateAKEYRequest_AKEY +{ + char mAKEY[26]; +}; + +// Structure to describe request TLV 0x01 for NASGet3GPP2SubscriptionInfo() +struct sNASGet3GPP2SubscriptionInfoRequest_NAMID +{ + UINT8 mNAMID; +}; + +// Structure to describe request TLV 0x10 for NASGet3GPP2SubscriptionInfo() +struct sNASGet3GPP2SubscriptionInfoRequest_InfoMask +{ + bool mNAMName:1; + bool mDirectoryNumber:1; + bool mHomeID:1; + bool mMINBasedIMSI:1; + bool mTrueIMSI:1; + bool mCDMAChannel:1; + bool mMobileDirectoryNumber:1; + + // Padding out 25 bits + UINT8 mReserved1:1; + UINT8 mReserved2[3]; +}; + +// Structure to describe response TLV 0x10 for NASGet3GPP2SubscriptionInfo() +struct sNASGet3GPP2SubscriptionInfoResponse_NAMName +{ + UINT8 mNAMNameLength; + + // This array must be the size specified by mNAMNameLength + // char mNAMName[1]; +}; + +// Structure to describe response TLV 0x11 for NASGet3GPP2SubscriptionInfo() +struct sNASGet3GPP2SubscriptionInfoResponse_DirectoryNumber +{ + UINT8 mDirectoryNumberLength; + + // This array must be the size specified by mDirectoryNumberLength + // char mDirectoryNumber[1]; +}; + +// Structure to describe response TLV 0x12 for NASGet3GPP2SubscriptionInfo() +struct sNASGet3GPP2SubscriptionInfoResponse_HomeID +{ + UINT8 mHomeIDCount; + + struct sHomeID + { + UINT16 mSystemID; + UINT16 mNetworkID; + }; + + // This array must be the size specified by mHomeIDCount + // sHomeID mHomeIDs[1]; +}; + +// Structure to describe response TLV 0x13 for NASGet3GPP2SubscriptionInfo() +struct sNASGet3GPP2SubscriptionInfoResponse_MINBasedIMSI +{ + char mMobileCountryCode[3]; + char mIMSI11_12[2]; + char mIMSIS1[7]; + char mIMSIS2[3]; + UINT8 mIMSIAddressNumber; +}; + +// Structure to describe response TLV 0x14 for NASGet3GPP2SubscriptionInfo() +struct sNASGet3GPP2SubscriptionInfoResponse_TrueIMSI +{ + char mMobileCountryCode[3]; + char mIMSI11_12[2]; + char mIMSIS1[7]; + char mIMSIS2[3]; + UINT8 mIMSIAddressNumber; +}; + +// Structure to describe response TLV 0x15 for NASGet3GPP2SubscriptionInfo() +struct sNASGet3GPP2SubscriptionInfoResponse_CDMAChannel +{ + UINT16 mAChannelForPrimaryCarrier; + UINT16 mBChannelForPrimaryCarrier; + UINT16 mAChannelForSecondaryCarrier; + UINT16 mBChannelForSecondaryCarrier; +}; + +// Structure to describe response TLV 0x16 for NASGet3GPP2SubscriptionInfo() +struct sNASGet3GPP2SubscriptionInfoResponse_MDN +{ + UINT8 mMobileDirectoryNumberLength; + + // This array must be the size specified by mMobileDirectoryNumberLength + // char mMobileDirectoryNumber[1]; +}; + +// Structure to describe request TLV 0x01 for NASSet3GPP2SubscriptionInfo() +struct sNASSet3GPP2SubscriptionInfoRequest_NAMID +{ + UINT8 mNAMID; +}; + +// Structure to describe request TLV 0x10 for NASSet3GPP2SubscriptionInfo() +struct sNASSet3GPP2SubscriptionInfoRequest_DirectoryNumber +{ + UINT8 mDirectoryNumberLength; + + // This array must be the size specified by mDirectoryNumberLength + // char mDirectoryNumber[1]; +}; + +// Structure to describe request TLV 0x11 for NASSet3GPP2SubscriptionInfo() +struct sNASSet3GPP2SubscriptionInfoRequest_HomeID +{ + UINT8 mHomeIDCount; + + struct sHomeID + { + UINT16 mSystemID; + UINT16 mNetworkID; + }; + + // This array must be the size specified by mHomeIDCount + // sHomeID mHomeIDs[1]; +}; + +// Structure to describe request TLV 0x12 for NASSet3GPP2SubscriptionInfo() +struct sNASSet3GPP2SubscriptionInfoRequest_MINBasedIMSI +{ + char mMobileCountryCode[3]; + char mIMSI11_12[2]; + char mIMSIS1[7]; + char mIMSIS2[3]; + UINT8 mIMSIAddressNumber; +}; + +// Structure to describe request TLV 0x13 for NASSet3GPP2SubscriptionInfo() +struct sNASSet3GPP2SubscriptionInfoRequest_TrueIMSI +{ + char mMobileCountryCode[3]; + char mIMSI11_12[2]; + char mIMSIS1[7]; + char mIMSIS2[3]; + UINT8 mIMSIAddressNumber; +}; + +// Structure to describe request TLV 0x14 for NASSet3GPP2SubscriptionInfo() +struct sNASSet3GPP2SubscriptionInfoRequest_CDMAChannel +{ + UINT16 mAChannelForPrimaryCarrier; + UINT16 mBChannelForPrimaryCarrier; + UINT16 mAChannelForSecondaryCarrier; + UINT16 mBChannelForSecondaryCarrier; +}; + +// Structure to describe request TLV 0x15 for NASSet3GPP2SubscriptionInfo() +struct sNASSet3GPP2SubscriptionInfoRequest_NAMName +{ + UINT8 mNAMNameLength; + + // This array must be the size specified by mNAMNameLength + // char mNAMName[1]; +}; + +// Structure to describe request TLV 0x16 for NASSet3GPP2SubscriptionInfo() +struct sNASSet3GPP2SubscriptionInfoRequest_MDN +{ + UINT8 mMobileDirectoryNumberLength; + + // This array must be the size specified by mMobileDirectoryNumberLength + // char mMobileDirectoryNumber[1]; +}; + +// Structure to describe request TLV 0x17 for NASSet3GPP2SubscriptionInfo() +struct sNASSet3GPP2SubscriptionInfoRequest_SPC +{ + char mSPC[6]; +}; + +// Structure to describe response TLV 0x10 for NASGetMobileCAIRevision() +struct sNASGetMobileCAIRevisionResponse_CAIRevision +{ + eQMINASRevision mCAIRevision; +}; + +// Structure to describe response TLV 0x10 for NASGetRTREConfig() +struct sNASGetRTREConfigResponse_CurrentRTREConfig +{ + eQMINASRTREConfiguration mRTREConfiguration; +}; + +// Structure to describe response TLV 0x11 for NASGetRTREConfig() +struct sNASGetRTREConfigResponse_RTREConfigPreference +{ + eQMINASRTREConfiguration mRTREConfiguration; +}; + +// Structure to describe request TLV 0x01 for NASSetRTREConfig() +struct sNASSetRTREConfigRequest_RTREConfig +{ + eQMINASRTREConfiguration mRTREConfiguration; +}; + +// Structure to describe request TLV 0x10 for NASSetRTREConfig() +struct sNASSetRTREConfigRequest_SPC +{ + char mSPC[6]; +}; + +// Structure to describe response TLV 0x10 for NASGetCellLocationInfo() +struct sNASGetCellLocationInfoResponse_GERANInfo +{ + UINT32 mCellID; + + // Bitfield arrays are not possible in c, unrolling the array + UINT8 mMobileCountryCode0:4; + UINT8 mMobileCountryCode1:4; + UINT8 mMobileCountryCode2:4; + + // Bitfield arrays are not possible in c, unrolling the array + UINT8 mMobileNetworkCode0:4; + UINT8 mMobileNetworkCode1:4; + UINT8 mMobileNetworkCode2:4; + + UINT16 mLocationAreaCode; + UINT16 mUTRAAbsoluteRFChannelNumber; + UINT8 mBCC:3; + UINT8 mNCC:3; + + // Padding out 2 bits + UINT8 mReserved1:2; + + UINT32 mTimingAdvance; + eQMINASRXLevel mRXLevel; + UINT8 mNMRCellCount; + + struct sNMRCell + { + UINT32 mCellID; + + // Bitfield arrays are not possible in c, unrolling the array + UINT8 mPLMNMobileCountryCode0:4; + UINT8 mPLMNMobileCountryCode1:4; + UINT8 mPLMNMobileCountryCode2:4; + + // Bitfield arrays are not possible in c, unrolling the array + UINT8 mPLMNMobileNetworkCode0:4; + UINT8 mPLMNMobileNetworkCode1:4; + UINT8 mPLMNMobileNetworkCode2:4; + + UINT16 mLocationAreaCode; + UINT16 mUTRAAbsoluteRFChannelNumber; + UINT8 mBaseStationIdentityCodeBCC:3; + UINT8 mBaseStationIdentityCodeNCC:3; + + // Padding out 2 bits + UINT8 mReserved2:2; + + eQMINASRXLevel mRXLevel; + }; + + // This array must be the size specified by mNMRCellCount + // sNMRCell mNMRCells[1]; +}; + +// Structure to describe response TLV 0x11 for NASGetCellLocationInfo() +struct sNASGetCellLocationInfoResponse_UMTSInfo1 +{ + UINT32 mCellID; + + // Bitfield arrays are not possible in c, unrolling the array + UINT8 mMobileCountryCode0:4; + UINT8 mMobileCountryCode1:4; + UINT8 mMobileCountryCode2:4; + + // Bitfield arrays are not possible in c, unrolling the array + UINT8 mMobileNetworkCode0:4; + UINT8 mMobileNetworkCode1:4; + UINT8 mMobileNetworkCode2:4; + + UINT16 mLocationAreaCode; + UINT16 mUTRAAbsoluteRFChannelNumber; + UINT16 mPrimaryScramblingCode; + INT16 mReceivedSignalCodePower; + UINT16 mECIO; + UINT8 mUTRAUMTSMonitoredCellCount; + + struct sUMTSMonitoredCell + { + UINT16 mUTRAAbsoluteRFChannelNumber; + UINT16 mPrimaryScramblingCode; + INT16 mReceivedSignalCodePower; + UINT16 mECIO; + }; + + // This array must be the size specified by mUTRAUMTSMonitoredCellCount + // sUMTSMonitoredCell mUMTSMonitoredCells[1]; +}; + +struct sNASGetCellLocationInfoResponse_UMTSInfo2 +{ + UINT8 mGERANNBRCellCount; + + struct sGERANNBRCell + { + UINT16 mAbsoluteRFChannelNumber; + UINT8 mNetworkColorCode; + UINT8 mBaseStationColorCode; + INT16 mRSSI; + }; + + // This array must be the size specified by mGERANNBRCellCount + // sGERANNBRCell mGERANNBRCells[1]; +}; + +struct sNASGetCellLocationInfoResponse_UMTSInfo +{ + sNASGetCellLocationInfoResponse_UMTSInfo1 mNASGetCellLocationInfoResponse_UMTSInfo1; + sNASGetCellLocationInfoResponse_UMTSInfo2 mNASGetCellLocationInfoResponse_UMTSInfo2; +}; + +// Structure to describe response TLV 0x12 for NASGetCellLocationInfo() +struct sNASGetCellLocationInfoResponse_CDMAInfo +{ + UINT16 mSystemID; + UINT16 mNetworkID; + UINT16 mBaseStationID; + UINT16 mReferencePN; + INT32 mLatitude; + INT32 mLongitude; +}; + +// Structure to describe response TLV 0x13 for NASGetCellLocationInfo() +struct sNASGetCellLocationInfoResponse_IntrafrequencyLTEInfo +{ + INT8 mUEInIdleMode; + + // Bitfield arrays are not possible in c, unrolling the array + UINT8 mMobileCountryCode0:4; + UINT8 mMobileCountryCode1:4; + UINT8 mMobileCountryCode2:4; + + // Bitfield arrays are not possible in c, unrolling the array + UINT8 mMobileNetworkCode0:4; + UINT8 mMobileNetworkCode1:4; + UINT8 mMobileNetworkCode2:4; + + UINT16 mTrackingAreaCode; + UINT32 mGlobalCellID; + UINT16 mEUTRAAbsoluteRFChannelNumber; + UINT16 mServingCellID; + UINT8 mCellReselectionPriority; + UINT8 mSNonIntraSearchThreshold; + UINT8 mServingCellLowThreshold; + UINT8 mSIntraSearchThreshold; + UINT8 mCellCount; + + struct sCell + { + UINT16 mPhysicalCellID; + INT16 mRSRQ; + INT16 mRSRP; + INT16 mRSSI; + INT16 mCellSelectionRXLevel; + }; + + // This array must be the size specified by mCellCount + // sCell mCells[1]; +}; + +// Structure to describe response TLV 0x14 for NASGetCellLocationInfo() +struct sNASGetCellLocationInfoResponse_InterfrequencyLTEInfo +{ + INT8 mUEInIdleMode; + UINT8 mFrequencyCount; + + struct sFrequency + { + UINT16 mEUTRAAbsoluteRFChannelNumber; + UINT8 mCellSelectionRXLevelLowThreshold; + UINT8 mCellSelectionRXLevelHighThreshold; + UINT8 mCellReselectionPriority; + UINT8 mCellCount; + + struct sCell + { + UINT16 mPhysicalCellID; + INT16 mRSRQ; + INT16 mRSRP; + INT16 mRSSI; + INT16 mCellSelectionRXLevel; + }; + + // This array must be the size specified by mCellCount + // sCell mCells[1]; + }; + + // This array must be the size specified by mFrequencyCount + // sFrequency mFrequencys[1]; +}; + +// Structure to describe response TLV 0x15 for NASGetCellLocationInfo() +struct sNASGetCellLocationInfoResponse_LTEInfoNeighboringGSM +{ + INT8 mUEInIdleMode; + UINT8 mFrequencyCount; + + struct sFrequency + { + UINT8 mCellReselectionPriority; + UINT8 mCellReselectionHighThreshold; + UINT8 mCellReselectionLowThreshold; + + // Bitfield arrays are not possible in c, unrolling the array + bool mNCCPermitted0:1; + bool mNCCPermitted1:1; + bool mNCCPermitted2:1; + bool mNCCPermitted3:1; + bool mNCCPermitted4:1; + bool mNCCPermitted5:1; + bool mNCCPermitted6:1; + bool mNCCPermitted7:1; + + UINT8 mCellCount; + + struct sCell + { + UINT16 mAbsoluteRFChannelNumber; + INT8 mBandIs1900; + INT8 mCellIDValid; + UINT8 mBCC:3; + UINT8 mNCC:3; + + // Padding out 2 bits + UINT8 mReserved1:2; + + INT16 mRSSI; + INT16 mCellSelectionRXLevel; + }; + + // This array must be the size specified by mCellCount + // sCell mCells[1]; + }; + + // This array must be the size specified by mFrequencyCount + // sFrequency mFrequencys[1]; +}; + +// Structure to describe response TLV 0x16 for NASGetCellLocationInfo() +struct sNASGetCellLocationInfoResponse_LTEInfoNeighboringWCDMA +{ + INT8 mUEInIdleMode; + UINT8 mFrequencyCount; + + struct sFrequency + { + UINT16 mUTRAAbsoluteRFChannelNumber; + UINT8 mCellReselectionPriority; + UINT8 mCellReselectionHighThreshold; + UINT8 mCellReselectionLowThreshold; + UINT8 mCellCount; + + struct sCell + { + UINT16 mPrimaryScramblingCode; + INT16 mCPICHRSCP; + INT16 mCPICHEcNo; + INT16 mCellSelectionRXLevel; + }; + + // This array must be the size specified by mCellCount + // sCell mCells[1]; + }; + + // This array must be the size specified by mFrequencyCount + // sFrequency mFrequencys[1]; +}; + +// Structure to describe response TLV 0x17 for NASGetCellLocationInfo() +struct sNASGetCellLocationInfoResponse_UMTSCellID +{ + UINT32 mCellID; +}; + +// Structure to describe response TLV 0x18 for NASGetCellLocationInfo() +struct sNASGetCellLocationInfoResponse_WCDMAInfoNeighboringLTE +{ + eQMINASWCDMARRCStates mWCDMARRCState; + UINT8 mNeighborCellCount; + + struct sNeighborCell + { + UINT16 mEUTRAAbsoluteRFChannelNumber; + UINT16 mPhysicalCellID; + float mRSRPdBm; + float mRSRQdB; + INT16 mCellSelectionRXLevel; + INT8 mCellIsTDD; + }; + + // This array must be the size specified by mNeighborCellCount + // sNeighborCell mNeighborCells[1]; +}; + +// Structure to describe response TLV 0x19 for NASGetCellLocationInfo() +struct sNASGetCellLocationInfoResponse_CDMARXInfo +{ + float mRX0AGC; + float mRX1AGC; +}; + +// Structure to describe response TLV 0x1A for NASGetCellLocationInfo() +struct sNASGetCellLocationInfoResponse_CDMA1xEVRXInfo +{ + float mRX0AGC; + float mRX1AGC; +}; + +// Structure to describe response TLV 0x1B for NASGetCellLocationInfo() +struct sNASGetCellLocationInfoResponse_GSMExtendedCellInfo +{ + UINT16 mUERangeFromBSInSteps; + UINT16 mBCCHAssignedChannel; +}; + +// Structure to describe response TLV 0x1C for NASGetCellLocationInfo() +struct sNASGetCellLocationInfoResponse_WCDMAExtendedCellInfo +{ + float mRXAGC; + float mTXAGC; + UINT16 mDownlinkBLERPercentage; +}; + +// Structure to describe response TLV 0x1D for NASGetCellLocationInfo() +struct sNASGetCellLocationInfoResponse_WCDMAGSMExtendedNeighborCell +{ + UINT8 mGSMNeighborCount; + + // This array must be the size specified by mGSMNeighborCount + // UINT16 mGSMNeighborBCCHAssignedChannel[1]; +}; + +// Structure to describe response TLV 0x1E for NASGetCellLocationInfo() +struct sNASGetCellLocationInfoResponse_LTETimingAdvance +{ + UINT32 mTimingAdvance; +}; + +// Structure to describe response TLV 0x1F for NASGetCellLocationInfo() +struct sNASGetCellLocationInfoResponse_WCDMAActiveSet +{ + UINT8 mActiveSetEntries; + + struct sActiveSetEntry + { + UINT16 mPrimaryScramblingCode; + UINT32 mCellID; + INT16 mReceivedSignalCodePower; + INT16 mECIO; + UINT16 mUTRAAbsoluteRFChannelNumber; + }; + + // This array must be the size specified by mActiveSetEntries + // sActiveSetEntry mActiveSetEntrys[1]; +}; + +// Structure to describe response TLV 0x20 for NASGetCellLocationInfo() +struct sNASGetCellLocationInfoResponse_WCDMAActiveSetReference +{ + UINT32 mCellID; + + // Bitfield arrays are not possible in c, unrolling the array + UINT8 mMobileCountryCode0:4; + UINT8 mMobileCountryCode1:4; + UINT8 mMobileCountryCode2:4; + + // Bitfield arrays are not possible in c, unrolling the array + UINT8 mMobileNetworkCode0:4; + UINT8 mMobileNetworkCode1:4; + UINT8 mMobileNetworkCode2:4; + + UINT16 mLocationAreaCode; + UINT16 mUTRAAbsoluteRFChannelNumber; + UINT16 mPrimaryScramblingCode; + UINT16 mRoutingAreaCode; +}; + +// Structure to describe request TLV 0x01 for NASGetPLMNName() +struct sNASGetPLMNNameRequest_PLMN +{ + UINT16 mMobileCountryCode; + UINT16 mMobileNetworkCode; +}; + +// Structure to describe request TLV 0x10 for NASGetPLMNName() +struct sNASGetPLMNNameRequest_SupressSIMError +{ + INT8 mSIMInitNotChecked; +}; + +// Structure to describe request TLV 0x11 for NASGetPLMNName() +struct sNASGetPLMNNameRequest_MNCPCSDigitIncludeStatus +{ + INT8 mMNCIncludesPCSDigit; +}; + +// Structure to describe request TLV 0x12 for NASGetPLMNName() +struct sNASGetPLMNNameRequest_AlwaysSendPLMNName +{ + INT8 mAlwaysSendPLMNName; +}; + +// Structure to describe request TLV 0x13 for NASGetPLMNName() +struct sNASGetPLMNNameRequest_UseStaticTableOnly +{ + INT8 mUseStaticTableOnly; +}; + +// Structure to describe request TLV 0x14 for NASGetPLMNName() +struct sNASGetPLMNNameRequest_CSGID +{ + UINT32 mCSGID; +}; + +// Structure to describe request TLV 0x15 for NASGetPLMNName() +struct sNASGetPLMNNameRequest_RAT +{ + eQMINASRadioAccessTechnologies mRadioAccessTechnology; +}; + +// Structure to describe response TLV 0x10 for NASGetPLMNName() +struct sNASGetPLMNNameResponse_Name1 +{ + eQMINASPLMNNameEncodingSchemes mSPNEncoding; + UINT8 mSPNLength; + + // This array must be the size specified by mSPNLength + // UINT8 mSPN[1]; +}; + +struct sNASGetPLMNNameResponse_Name2 +{ + eQMINASPLMNNameEncodingSchemes mPLMNShortEncoding; + eQMINASPLMNNameCountryInitials mPLMNShortCountryInitials; + eQMINASPLMNNameSpareBits mPLMNSpareBits; + UINT8 mPLMNShortLength; + + // This array must be the size specified by mPLMNShortLength + // UINT8 mPLMNShort[1]; +}; + +struct sNASGetPLMNNameResponse_Name3 +{ + eQMINASPLMNNameEncodingSchemes mPLMNLongEncoding; + eQMINASPLMNNameCountryInitials mPLMNLongCountryInitials; + eQMINASPLMNNameSpareBits mPLMNLongBits; + UINT8 mPLMNLongLength; + + // This array must be the size specified by mPLMNLongLength + // UINT8 mPLMNLong[1]; +}; + +struct sNASGetPLMNNameResponse_Name +{ + sNASGetPLMNNameResponse_Name1 mNASGetPLMNNameResponse_Name1; + sNASGetPLMNNameResponse_Name2 mNASGetPLMNNameResponse_Name2; + sNASGetPLMNNameResponse_Name3 mNASGetPLMNNameResponse_Name3; +}; + +// Structure to describe response TLV 0x11 for NASGetPLMNName() +struct sNASGetPLMNNameResponse_DisplayBitInfo +{ + eQMINASTriStatus mIsSPNSet; + eQMINASTriStatus mIsPLMNSet; +}; + +// Structure to describe response TLV 0x12 for NASGetPLMNName() +struct sNASGetPLMNNameResponse_NetworkInfo +{ + eQMINASTriStatus mIsHomeNetwork; +}; + +// Structure to describe request TLV 0x01 for NASBindSubscription() +struct sNASBindSubscriptionRequest_SubscriptionType +{ + eQMINASSubscriptionType mSubscriptionType; +}; + +// Structure to describe indication TLV 0x10 for NAS ManagedRoamingIndication +struct sNASManagedRoamingIndication_RadioInterface +{ + eQMINASRadioInterfaces mRadioInterface; +}; + +// Structure to describe indication TLV 0x10 for NAS DualStandbyPrefIndication +struct sNASDualStandbyPrefIndication_StandbyPreference +{ + eQMINASStandbyPreference mStandbyPreference; + eQMINASSubscriptionType mPrioritySubscription; + eQMINASSubscriptionType mActiveSubscription; + eQMINASSubscriptionType mDefaultDataSubscription; +}; + +// Structure to describe indication TLV 0x11 for NAS DualStandbyPrefIndication +struct sNASDualStandbyPrefIndication_VoiceSubscription +{ + eQMINASSubscriptionType mDefaultVoiceSubscription; +}; + +// Structure to describe indication TLV 0x10 for NAS SubscriptionInfoIndication +struct sNASSubscriptionInfoIndication_PrioritySubscriptionInfo +{ + eQMINASSubscriptionType mSubscriptionType; +}; + +// Structure to describe indication TLV 0x11 for NAS SubscriptionInfoIndication +struct sNASSubscriptionInfoIndication_ActiveSubscriptionInfo +{ + eQMINASActiveSubscription mActiveSubscription; +}; + +// Structure to describe indication TLV 0x12 for NAS SubscriptionInfoIndication +struct sNASSubscriptionInfoIndication_DefaultDataSubscriptionInfo +{ + INT8 mDefaultDataSubscription; +}; + +// Structure to describe indication TLV 0x13 for NAS SubscriptionInfoIndication +struct sNASSubscriptionInfoIndication_VoiceSystemID +{ + UINT32 mVoiceSystemID; +}; + +// Structure to describe response TLV 0x10 for NASGetModePref() +struct sNASGetModePrefResponse_ModePreferenceForIDX0 +{ + bool mCDMA1x:1; + bool mCDMA1xEVDO:1; + bool mGSM:1; + bool mUMTS:1; + bool mLTE:1; + bool mTDSCDMA:1; + + // Padding out 10 bits + UINT8 mReserved1:2; + UINT8 mReserved2; +}; + +// Structure to describe response TLV 0x11 for NASGetModePref() +struct sNASGetModePrefResponse_ModePreferenceForIDX1 +{ + bool mCDMA1x:1; + bool mCDMA1xEVDO:1; + bool mGSM:1; + bool mUMTS:1; + bool mLTE:1; + bool mTDSCDMA:1; + + // Padding out 10 bits + UINT8 mReserved1:2; + UINT8 mReserved2; +}; + +// Structure to describe response TLV 0x12 for NASGetModePref() +struct sNASGetModePrefResponse_ModePreferenceForIDX2 +{ + bool mCDMA1x:1; + bool mCDMA1xEVDO:1; + bool mGSM:1; + bool mUMTS:1; + bool mLTE:1; + bool mTDSCDMA:1; + + // Padding out 10 bits + UINT8 mReserved1:2; + UINT8 mReserved2; +}; + +// Structure to describe request TLV 0x10 for NASSetDualStandbyPreference() +struct sNASSetDualStandbyPreferenceRequest_StandbyPreference +{ + eQMINASStandbyPreference mStandbyPreference; +}; + +// Structure to describe request TLV 0x11 for NASSetDualStandbyPreference() +struct sNASSetDualStandbyPreferenceRequest_PrioritySubs +{ + eQMINASSubscriptionType mSubscriptionType; +}; + +// Structure to describe request TLV 0x12 for NASSetDualStandbyPreference() +struct sNASSetDualStandbyPreferenceRequest_DefaultDataSubs +{ + eQMINASSubscriptionType mSubscriptionType; +}; + +// Structure to describe request TLV 0x13 for NASSetDualStandbyPreference() +struct sNASSetDualStandbyPreferenceRequest_DefaultVoiceSubs +{ + eQMINASSubscriptionType mDefaultVoiceSubscription; +}; + +// Structure to describe indication TLV 0x01 for NAS NetworkTimeIndication +struct sNASNetworkTimeIndication_UniversalTime +{ + UINT16 mYear; + UINT8 mMonth; + UINT8 mDay; + UINT8 mHour; + UINT8 mMinute; + UINT8 mSecond; + eQMINASDayOfWeek mDayOfWeek; +}; + +// Structure to describe indication TLV 0x10 for NAS NetworkTimeIndication +struct sNASNetworkTimeIndication_TimeZone +{ + INT8 mTimeZoneOffset; +}; + +// Structure to describe indication TLV 0x11 for NAS NetworkTimeIndication +struct sNASNetworkTimeIndication_DaylightSavingAdjustment +{ + eQMINASDaylightSavingsAdjustment mDaylightSavingsAdjustment; +}; + +// Structure to describe indication TLV 0x12 for NAS NetworkTimeIndication +struct sNASNetworkTimeIndication_RadioInterface +{ + eQMINASRadioInterfaces mRadioInterface; +}; + +// Structure to describe response TLV 0x10 for NASGetSystemInfo() +struct sNASGetSystemInfoResponse_CDMAServiceStatusInfo +{ + eQMINASServiceStatus mServiceStatus; + eQMINASPreferredDataBath mPreferredDataPath; +}; + +// Structure to describe response TLV 0x11 for NASGetSystemInfo() +struct sNASGetSystemInfoResponse_CDMA1xEVDOServiceStatusInfo +{ + eQMINASServiceStatus mServiceStatus; + eQMINASPreferredDataBath mPreferredDataPath; +}; + +// Structure to describe response TLV 0x12 for NASGetSystemInfo() +struct sNASGetSystemInfoResponse_GSMServiceStatusInfo +{ + eQMINASServiceStatus mServiceStatus; + eQMINASServiceStatus mTrueServiceStatus; + eQMINASPreferredDataBath mPreferredDataPath; +}; + +// Structure to describe response TLV 0x13 for NASGetSystemInfo() +struct sNASGetSystemInfoResponse_WCDMAServiceStatusInfo +{ + eQMINASServiceStatus mServiceStatus; + eQMINASServiceStatus mTrueServiceStatus; + eQMINASPreferredDataBath mPreferredDataPath; +}; + +// Structure to describe response TLV 0x14 for NASGetSystemInfo() +struct sNASGetSystemInfoResponse_LTEServiceStatusInfo +{ + eQMINASServiceStatus mServiceStatus; + eQMINASServiceStatus mTrueServiceStatus; + eQMINASPreferredDataBath mPreferredDataPath; +}; + +// Structure to describe response TLV 0x15 for NASGetSystemInfo() +struct sNASGetSystemInfoResponse_CDMASystemInfo +{ + INT8 mServiceDomainValid; + eQMINASSystemServiceCapabilities mServiceDomain; + INT8 mServiceCapabilityValid; + eQMINASSystemServiceCapabilities mSystemServiceCapabilities; + INT8 mRoamStatusValid; + eQMINASRoamStatus mRoamStatus; + INT8 mSystemForbiddenValid; + eQMINASSystemForbidden mSystemForbidden; + INT8 mSystemPRLMatchValid; + eQMINASPRLIndicator mSystemPRLMatch; + INT8 mPRevInUseValid; + eQMINASRevision mProtocolRevisionInUse; + INT8 mBaseStationPRevValid; + eQMINASRevision mBaseStationProtocolRevision; + INT8 mConcurrentServiceSupportedValid; + eQMINASConcurrentServiceSupported mConcurrentServiceSupported; + INT8 mCDMASystemIDValid; + UINT16 mSystemID; + UINT16 mNetworkID; + INT8 mBaseStationInfoValid; + UINT16 mBaseStationID; + INT32 mLatitude; + INT32 mLongitude; + INT8 mPacketZoneValid; + UINT16 mPacketZone; + INT8 mNetworkIDValid; + char mMobileCountryCode[3]; + char mMobileNetworkCode[3]; +}; + +// Structure to describe response TLV 0x16 for NASGetSystemInfo() +struct sNASGetSystemInfoResponse_CDMA1xEVDOSystemInfo +{ + INT8 mServiceDomainValid; + eQMINASSystemServiceCapabilities mServiceDomain; + INT8 mServiceCapabilityValid; + eQMINASSystemServiceCapabilities mSystemServiceCapabilities; + INT8 mRoamStatusValid; + eQMINASRoamStatus mRoamStatus; + INT8 mSystemForbiddenValid; + eQMINASSystemForbidden mSystemForbidden; + INT8 mSystemPRLMatchValid; + eQMINASPRLIndicator mSystemPRLMatch; + INT8 mCDMA1xEVDOPersonalityValid; + eQMINASCDMA1xEVDOPersonality mCDMA1xEVDOPersonality; + INT8 mCDMA1xEVDOActiveProtocolValid; + eQMINASCDMA1xEVDOActiveProtocol mCDMA1xEVDOActiveProtocol; + INT8 mSectorIDValid; + UINT8 mSectorID[16]; +}; + +// Structure to describe response TLV 0x17 for NASGetSystemInfo() +struct sNASGetSystemInfoResponse_GSMSystemInfo +{ + INT8 mServiceDomainValid; + eQMINASSystemServiceCapabilities mServiceDomain; + INT8 mServiceCapabilityValid; + eQMINASSystemServiceCapabilities mSystemServiceCapabilities; + INT8 mRoamStatusValid; + eQMINASRoamStatus mRoamStatus; + INT8 mSystemForbiddenValid; + eQMINASSystemForbidden mSystemForbidden; + INT8 mLocationAreaCodeValid; + UINT16 mLocationAreaCode; + INT8 mCellIDValid; + UINT32 mCellID; + INT8 mRegistrationRejectInformationValid; + eQMINASSystemServiceCapabilities mRegistrationRejectServiceDomain; + UINT8 mRejectCause; + INT8 mNetworkIDValid; + char mMobileCountryCode[3]; + char mMobileNetworkCode[3]; + INT8 mEGPRSSupportValid; + eQMINASEGPRSSupport mEGPRSSupport; + INT8 mDTMSupportValid; + eQMINASDTMSupport mDTMSupport; +}; + +// Structure to describe response TLV 0x18 for NASGetSystemInfo() +struct sNASGetSystemInfoResponse_WCDMASystemInfo +{ + INT8 mServiceDomainValid; + eQMINASSystemServiceCapabilities mServiceDomain; + INT8 mServiceCapabilityValid; + eQMINASSystemServiceCapabilities mSystemServiceCapabilities; + INT8 mRoamStatusValid; + eQMINASRoamStatus mRoamStatus; + INT8 mSystemForbiddenValid; + eQMINASSystemForbidden mSystemForbidden; + INT8 mLocationAreaCodeValid; + UINT16 mLocationAreaCode; + INT8 mCellIDValid; + UINT32 mCellID; + INT8 mRegistrationRejectInformationValid; + eQMINASSystemServiceCapabilities mRegistrationRejectServiceDomain; + UINT8 mRejectCause; + INT8 mNetworkIDValid; + char mMobileCountryCode[3]; + char mMobileNetworkCode[3]; + INT8 mHighSpeedCallStatusValid; + eQMINASHighSpeedCallStatus mHighSpeedCallStatus; + INT8 mHighSpeedServiceIndicationValid; + eQMINASHighSpeedCallStatus mHighSpeedServiceIndication; + INT8 mPrimaryScramblingCodeValue; + UINT16 mPrimaryScramblingCode; +}; + +// Structure to describe response TLV 0x19 for NASGetSystemInfo() +struct sNASGetSystemInfoResponse_LTESystemInfo +{ + INT8 mServiceDomainValid; + eQMINASSystemServiceCapabilities mServiceDomain; + INT8 mServiceCapabilityValid; + eQMINASSystemServiceCapabilities mSystemServiceCapabilities; + INT8 mRoamStatusValid; + eQMINASRoamStatus mRoamStatus; + INT8 mSystemForbiddenValid; + eQMINASSystemForbidden mSystemForbidden; + INT8 mLocationAreaCodeValid; + UINT16 mLocationAreaCode; + INT8 mCellIDValid; + UINT32 mCellID; + INT8 mRegistrationRejectInformationValid; + eQMINASSystemServiceCapabilities mRegistrationRejectServiceDomain; + UINT8 mRejectCause; + INT8 mNetworkIDValid; + char mMobileCountryCode[3]; + char mMobileNetworkCode[3]; + INT8 mTrackingAreaCodeValid; + UINT16 mTrackingAreaCode; +}; + +// Structure to describe response TLV 0x1A for NASGetSystemInfo() +struct sNASGetSystemInfoResponse_MoreCDMASystemInfo +{ + UINT16 mGeoSystemIndex; + UINT16 mRegistrationPeriod; +}; + +// Structure to describe response TLV 0x1B for NASGetSystemInfo() +struct sNASGetSystemInfoResponse_MoreCDMA1xEVDOSystemInfo +{ + UINT16 mGeoSystemIndex; +}; + +// Structure to describe response TLV 0x1C for NASGetSystemInfo() +struct sNASGetSystemInfoResponse_MoreGSMSystemInfo +{ + UINT16 mGeoSystemIndex; + eQMINASCellBroadcastCaps mCellBroadcastCapability; +}; + +// Structure to describe response TLV 0x1D for NASGetSystemInfo() +struct sNASGetSystemInfoResponse_MoreWCDMASystemInfo +{ + UINT16 mGeoSystemIndex; + eQMINASCellBroadcastCaps mCellBroadcastCapability; +}; + +// Structure to describe response TLV 0x1E for NASGetSystemInfo() +struct sNASGetSystemInfoResponse_MoreLTESystemInfo +{ + UINT16 mGeoSystemIndex; +}; + +// Structure to describe response TLV 0x1F for NASGetSystemInfo() +struct sNASGetSystemInfoResponse_GSMCallBarring +{ + eQMINASCallBarringStatus mCSCallBarringStatus; + eQMINASCallBarringStatus mPSCallBarringStatus; +}; + +// Structure to describe response TLV 0x20 for NASGetSystemInfo() +struct sNASGetSystemInfoResponse_WCDMACallBarring +{ + eQMINASCallBarringStatus mCSCallBarringStatus; + eQMINASCallBarringStatus mPSCallBarringStatus; +}; + +// Structure to describe response TLV 0x21 for NASGetSystemInfo() +struct sNASGetSystemInfoResponse_LTEVoice +{ + INT8 mLTEVoiceSupported; +}; + +// Structure to describe response TLV 0x22 for NASGetSystemInfo() +struct sNASGetSystemInfoResponse_GSMCipher +{ + eQMINASServiceDomains mCipheringOnServiceDomain; +}; + +// Structure to describe response TLV 0x23 for NASGetSystemInfo() +struct sNASGetSystemInfoResponse_WCDMACipher +{ + eQMINASServiceDomains mCipheringOnServiceDomain; +}; + +// Structure to describe response TLV 0x24 for NASGetSystemInfo() +struct sNASGetSystemInfoResponse_TDSCDMAServiceStatusInfo +{ + eQMINASServiceStatus mServiceStatus; + eQMINASServiceStatus mTrueServiceStatus; + eQMINASPreferredDataBath mPreferredDataPath; +}; + +// Structure to describe response TLV 0x25 for NASGetSystemInfo() +struct sNASGetSystemInfoResponse_TDSCDMASystemInfo +{ + INT8 mServiceDomainValid; + eQMINASSystemServiceCapabilities mServiceDomain; + INT8 mServiceCapabilityValid; + eQMINASSystemServiceCapabilities mSystemServiceCapabilities; + INT8 mRoamStatusValid; + eQMINASRoamStatus mRoamStatus; + INT8 mSystemForbiddenValid; + eQMINASSystemForbidden mSystemForbidden; + INT8 mLocationAreaCodeValid; + UINT16 mLocationAreaCode; + INT8 mCellIDValid; + UINT32 mCellID; + INT8 mRegistrationRejectInformationValid; + eQMINASSystemServiceCapabilities mRegistrationRejectServiceDomain; + UINT8 mRejectCause; + INT8 mNetworkIDValid; + char mMobileCountryCode[3]; + char mMobileNetworkCode[3]; + INT8 mHighSpeedCallStatusValid; + eQMINASHighSpeedCallStatus mHighSpeedCallStatus; + INT8 mHighSpeedServiceIndicationValid; + eQMINASHighSpeedCallStatus mHighSpeedServiceIndication; + INT8 mCellParameterIDValid; + UINT16 mCellParameterID; + INT8 mCellBroadcastCapabilityValid; + eQMINASCellBroadcastCaps2 mCellBroadcastCapability; + INT8 mCSBarringStatusValid; + eQMINASCallBarringStatus mCSCallBarringStatus; + INT8 mPSBarringStatusValid; + eQMINASCallBarringStatus mPSCallBarringStatus; + INT8 mCipheringValid; + eQMINASServiceDomains mCipheringOnServiceDomain; +}; + +// Structure to describe response TLV 0x26 for NASGetSystemInfo() +struct sNASGetSystemInfoResponse_EMBMSCoverage +{ + INT8 mEMBMSSupported; +}; + +// Structure to describe response TLV 0x27 for NASGetSystemInfo() +struct sNASGetSystemInfoResponse_SIMRejectInfo +{ + eQMINASSIMRejectStates mSIMRejectInfo; +}; + +// Structure to describe response TLV 0x28 for NASGetSystemInfo() +struct sNASGetSystemInfoResponse_WCDMAEUTRADetection +{ + eQMINASEUTRAStatus mEUTRADetectionStatus; +}; + +// Structure to describe response TLV 0x29 for NASGetSystemInfo() +struct sNASGetSystemInfoResponse_LTEIMSVoice +{ + INT8 mIMSVoiceSupportAvailable; +}; + +// Structure to describe response TLV 0x2A for NASGetSystemInfo() +struct sNASGetSystemInfoResponse_LTEVoiceDomain +{ + eQMINASVoiceDomains mLTEVoiceDomain; +}; + +// Structure to describe response TLV 0x2B for NASGetSystemInfo() +struct sNASGetSystemInfoResponse_CDMARegZoneID +{ + UINT16 mCDMARegZoneID; +}; + +// Structure to describe response TLV 0x2C for NASGetSystemInfo() +struct sNASGetSystemInfoResponse_GSMRAC +{ + UINT8 mGSMRoutingAreaCode; +}; + +// Structure to describe response TLV 0x2D for NASGetSystemInfo() +struct sNASGetSystemInfoResponse_WCDMARAC +{ + UINT8 mWCDMARoutingAreaCode; +}; + +// Structure to describe response TLV 0x2E for NASGetSystemInfo() +struct sNASGetSystemInfoResponse_CDMAResolvedMCC +{ + UINT16 mCDMAMCCResolvedViaSIDLookup; +}; + +// Structure to describe response TLV 0x2F for NASGetSystemInfo() +struct sNASGetSystemInfoResponse_RegistrationRestriction +{ + eQMINASRegistrationRestrictions mRegistrationRestriction; +}; + +// Structure to describe response TLV 0x30 for NASGetSystemInfo() +struct sNASGetSystemInfoResponse_TDSCDMARegistrationDomain +{ + eQMINASRegistrationDomains mTDSCDMARegistrationDomain; +}; + +// Structure to describe response TLV 0x31 for NASGetSystemInfo() +struct sNASGetSystemInfoResponse_LTERegistrationDomain +{ + eQMINASRegistrationDomains mTDSCDMARegistrationDomain; +}; + +// Structure to describe response TLV 0x32 for NASGetSystemInfo() +struct sNASGetSystemInfoResponse_WCDMARegistrationDomain +{ + eQMINASRegistrationDomains mTDSCDMARegistrationDomain; +}; + +// Structure to describe response TLV 0x33 for NASGetSystemInfo() +struct sNASGetSystemInfoResponse_GSMRegistrationDomain +{ + eQMINASRegistrationDomains mTDSCDMARegistrationDomain; +}; + +// Structure to describe response TLV 0x34 for NASGetSystemInfo() +struct sNASGetSystemInfoResponse_EMBMSTraceID +{ + INT16 mEMBMSTraceID; +}; + +// Structure to describe response TLV 0x35 for NASGetSystemInfo() +struct sNASGetSystemInfoResponse_WCDMACSGInfo +{ + UINT32 mCSGID; + UINT8 mNameLength; + + // This array must be the size specified by mNameLength + // wchar_t mName[1]; +}; + +// Structure to describe response TLV 0x36 for NASGetSystemInfo() +struct sNASGetSystemInfoResponse_CDMA1xEVVoiceDomain +{ + eQMINASVoiceDomains mCDMA1xEVVoiceDomain; +}; + +// Structure to describe response TLV 0x37 for NASGetSystemInfo() +struct sNASGetSystemInfoResponse_CDMA1xEVSMSDomain +{ + eQMINASSMSDomains mCDMA1xEVSMSDomain; +}; + +// Structure to describe response TLV 0x38 for NASGetSystemInfo() +struct sNASGetSystemInfoResponse_LTESMSDomain +{ + eQMINASSMSDomains mLTESMSDomain; +}; + +// Structure to describe response TLV 0x39 for NASGetSystemInfo() +struct sNASGetSystemInfoResponse_LTEEmergencyBearer +{ + eQMINASTriStatus mLTEEmergencyBearerSupported; +}; + +// Structure to describe response TLV 0x3A for NASGetSystemInfo() +struct sNASGetSystemInfoResponse_GSMVoiceDomain +{ + eQMINASVoiceDomains mVoiceDomain; +}; + +// Structure to describe response TLV 0x3B for NASGetSystemInfo() +struct sNASGetSystemInfoResponse_GSMSMSDomain +{ + eQMINASSMSDomains mSMSDomain; +}; + +// Structure to describe response TLV 0x3C for NASGetSystemInfo() +struct sNASGetSystemInfoResponse_WCDMAVoiceDomain +{ + eQMINASVoiceDomains mVoiceDomain; +}; + +// Structure to describe response TLV 0x3D for NASGetSystemInfo() +struct sNASGetSystemInfoResponse_WCDMASMSDomain +{ + eQMINASSMSDomains mSMSDomain; +}; + +// Structure to describe response TLV 0x3E for NASGetSystemInfo() +struct sNASGetSystemInfoResponse_LTEEmergencyAccessBarred +{ + eQMINASTriStatus mLTEEmergencyAccessBarred; +}; + +// Structure to describe response TLV 0x3F for NASGetSystemInfo() +struct sNASGetSystemInfoResponse_CDMAVoiceDomain +{ + eQMINASVoiceDomains mVoiceDomain; +}; + +// Structure to describe response TLV 0x40 for NASGetSystemInfo() +struct sNASGetSystemInfoResponse_CDMASMSDomain +{ + eQMINASSMSDomains mSMSDomain; +}; + +// Structure to describe response TLV 0x41 for NASGetSystemInfo() +struct sNASGetSystemInfoResponse_TDSCDMAVoiceDomain +{ + eQMINASVoiceDomains mVoiceDomain; +}; + +// Structure to describe response TLV 0x42 for NASGetSystemInfo() +struct sNASGetSystemInfoResponse_TDSCDMASMSDomain +{ + eQMINASSMSDomains mSMSDomain; +}; + +// Structure to describe response TLV 0x43 for NASGetSystemInfo() +struct sNASGetSystemInfoResponse_LTECSGInfo +{ + UINT32 mCSGID; + UINT8 mNameLength; + + // This array must be the size specified by mNameLength + // wchar_t mName[1]; +}; + +// Structure to describe indication TLV 0x10 for NAS SystemInfoIndication +struct sNASSystemInfoIndication_CDMAServiceStatusInfo +{ + eQMINASServiceStatus mServiceStatus; + eQMINASPreferredDataBath mPreferredDataPath; +}; + +// Structure to describe indication TLV 0x11 for NAS SystemInfoIndication +struct sNASSystemInfoIndication_CDMA1xEVDOServiceStatusInfo +{ + eQMINASServiceStatus mServiceStatus; + eQMINASPreferredDataBath mPreferredDataPath; +}; + +// Structure to describe indication TLV 0x12 for NAS SystemInfoIndication +struct sNASSystemInfoIndication_GSMServiceStatusInfo +{ + eQMINASServiceStatus mServiceStatus; + eQMINASServiceStatus mTrueServiceStatus; + eQMINASPreferredDataBath mPreferredDataPath; +}; + +// Structure to describe indication TLV 0x13 for NAS SystemInfoIndication +struct sNASSystemInfoIndication_WCDMAServiceStatusInfo +{ + eQMINASServiceStatus mServiceStatus; + eQMINASServiceStatus mTrueServiceStatus; + eQMINASPreferredDataBath mPreferredDataPath; +}; + +// Structure to describe indication TLV 0x14 for NAS SystemInfoIndication +struct sNASSystemInfoIndication_LTEServiceStatusInfo +{ + eQMINASServiceStatus mServiceStatus; + eQMINASServiceStatus mTrueServiceStatus; + eQMINASPreferredDataBath mPreferredDataPath; +}; + +// Structure to describe indication TLV 0x15 for NAS SystemInfoIndication +struct sNASSystemInfoIndication_CDMASystemInfo +{ + INT8 mServiceDomainValid; + eQMINASSystemServiceCapabilities mServiceDomain; + INT8 mServiceCapabilityValid; + eQMINASSystemServiceCapabilities mSystemServiceCapabilities; + INT8 mRoamStatusValid; + eQMINASRoamStatus mRoamStatus; + INT8 mSystemForbiddenValid; + eQMINASSystemForbidden mSystemForbidden; + INT8 mSystemPRLMatchValid; + eQMINASPRLIndicator mSystemPRLMatch; + INT8 mPRevInUseValid; + eQMINASRevision mProtocolRevisionInUse; + INT8 mBaseStationPRevValid; + eQMINASRevision mBaseStationProtocolRevision; + INT8 mConcurrentServiceSupportedValid; + eQMINASConcurrentServiceSupported mConcurrentServiceSupported; + INT8 mCDMASystemIDValid; + UINT16 mSystemID; + UINT16 mNetworkID; + INT8 mBaseStationInfoValid; + UINT16 mBaseStationID; + INT32 mLatitude; + INT32 mLongitude; + INT8 mPacketZoneValid; + UINT16 mPacketZone; + INT8 mNetworkIDValid; + char mMobileCountryCode[3]; + char mMobileNetworkCode[3]; +}; + +// Structure to describe indication TLV 0x16 for NAS SystemInfoIndication +struct sNASSystemInfoIndication_CDMA1xEVDOSystemInfo +{ + INT8 mServiceDomainValid; + eQMINASSystemServiceCapabilities mServiceDomain; + INT8 mServiceCapabilityValid; + eQMINASSystemServiceCapabilities mSystemServiceCapabilities; + INT8 mRoamStatusValid; + eQMINASRoamStatus mRoamStatus; + INT8 mSystemForbiddenValid; + eQMINASSystemForbidden mSystemForbidden; + INT8 mSystemPRLMatchValid; + eQMINASPRLIndicator mSystemPRLMatch; + INT8 mCDMA1xEVDOPersonalityValid; + eQMINASCDMA1xEVDOPersonality mCDMA1xEVDOPersonality; + INT8 mCDMA1xEVDOActiveProtocolValid; + eQMINASCDMA1xEVDOActiveProtocol mCDMA1xEVDOActiveProtocol; + INT8 mSectorIDValid; + UINT8 mSectorID[16]; +}; + +// Structure to describe indication TLV 0x17 for NAS SystemInfoIndication +struct sNASSystemInfoIndication_GSMSystemInfo +{ + INT8 mServiceDomainValid; + eQMINASSystemServiceCapabilities mServiceDomain; + INT8 mServiceCapabilityValid; + eQMINASSystemServiceCapabilities mSystemServiceCapabilities; + INT8 mRoamStatusValid; + eQMINASRoamStatus mRoamStatus; + INT8 mSystemForbiddenValid; + eQMINASSystemForbidden mSystemForbidden; + INT8 mLocationAreaCodeValid; + UINT16 mLocationAreaCode; + INT8 mCellIDValid; + UINT32 mCellID; + INT8 mRegistrationRejectInformationValid; + eQMINASSystemServiceCapabilities mRegistrationRejectServiceDomain; + UINT8 mRejectCause; + INT8 mNetworkIDValid; + char mMobileCountryCode[3]; + char mMobileNetworkCode[3]; + INT8 mEGPRSSupportValid; + eQMINASEGPRSSupport mEGPRSSupport; + INT8 mDTMSupportValid; + eQMINASDTMSupport mDTMSupport; +}; + +// Structure to describe indication TLV 0x18 for NAS SystemInfoIndication +struct sNASSystemInfoIndication_WCDMASystemInfo +{ + INT8 mServiceDomainValid; + eQMINASSystemServiceCapabilities mServiceDomain; + INT8 mServiceCapabilityValid; + eQMINASSystemServiceCapabilities mSystemServiceCapabilities; + INT8 mRoamStatusValid; + eQMINASRoamStatus mRoamStatus; + INT8 mSystemForbiddenValid; + eQMINASSystemForbidden mSystemForbidden; + INT8 mLocationAreaCodeValid; + UINT16 mLocationAreaCode; + INT8 mCellIDValid; + UINT32 mCellID; + INT8 mRegistrationRejectInformationValid; + eQMINASSystemServiceCapabilities mRegistrationRejectServiceDomain; + UINT8 mRejectCause; + INT8 mNetworkIDValid; + char mMobileCountryCode[3]; + char mMobileNetworkCode[3]; + INT8 mHighSpeedCallStatusValid; + eQMINASHighSpeedCallStatus mHighSpeedCallStatus; + INT8 mHighSpeedServiceIndicationValid; + eQMINASHighSpeedCallStatus mHighSpeedServiceIndication; + INT8 mPrimaryScramblingCodeValue; + UINT16 mPrimaryScramblingCode; +}; + +// Structure to describe indication TLV 0x19 for NAS SystemInfoIndication +struct sNASSystemInfoIndication_LTESystemInfo +{ + INT8 mServiceDomainValid; + eQMINASSystemServiceCapabilities mServiceDomain; + INT8 mServiceCapabilityValid; + eQMINASSystemServiceCapabilities mSystemServiceCapabilities; + INT8 mRoamStatusValid; + eQMINASRoamStatus mRoamStatus; + INT8 mSystemForbiddenValid; + eQMINASSystemForbidden mSystemForbidden; + INT8 mLocationAreaCodeValid; + UINT16 mLocationAreaCode; + INT8 mCellIDValid; + UINT32 mCellID; + INT8 mRegistrationRejectInformationValid; + eQMINASSystemServiceCapabilities mRegistrationRejectServiceDomain; + UINT8 mRejectCause; + INT8 mNetworkIDValid; + char mMobileCountryCode[3]; + char mMobileNetworkCode[3]; + INT8 mTrackingAreaCodeValid; + UINT16 mTrackingAreaCode; +}; + +// Structure to describe indication TLV 0x1A for NAS SystemInfoIndication +struct sNASSystemInfoIndication_MoreCDMASystemInfo +{ + UINT16 mGeoSystemIndex; + UINT16 mRegistrationPeriod; +}; + +// Structure to describe indication TLV 0x1B for NAS SystemInfoIndication +struct sNASSystemInfoIndication_MoreCDMA1xEVDOSystemInfo +{ + UINT16 mGeoSystemIndex; +}; + +// Structure to describe indication TLV 0x1C for NAS SystemInfoIndication +struct sNASSystemInfoIndication_MoreGSMSystemInfo +{ + UINT16 mGeoSystemIndex; + eQMINASCellBroadcastCaps mCellBroadcastCapability; +}; + +// Structure to describe indication TLV 0x1D for NAS SystemInfoIndication +struct sNASSystemInfoIndication_MoreWCDMASystemInfo +{ + UINT16 mGeoSystemIndex; + eQMINASCellBroadcastCaps mCellBroadcastCapability; +}; + +// Structure to describe indication TLV 0x1E for NAS SystemInfoIndication +struct sNASSystemInfoIndication_MoreLTESystemInfo +{ + UINT16 mGeoSystemIndex; +}; + +// Structure to describe indication TLV 0x1F for NAS SystemInfoIndication +struct sNASSystemInfoIndication_GSMCallBarring +{ + eQMINASCallBarringStatus mCSCallBarringStatus; + eQMINASCallBarringStatus mPSCallBarringStatus; +}; + +// Structure to describe indication TLV 0x20 for NAS SystemInfoIndication +struct sNASSystemInfoIndication_WCDMACallBarring +{ + eQMINASCallBarringStatus mCSCallBarringStatus; + eQMINASCallBarringStatus mPSCallBarringStatus; +}; + +// Structure to describe indication TLV 0x21 for NAS SystemInfoIndication +struct sNASSystemInfoIndication_LTEVoice +{ + INT8 mLTEVoiceSupported; +}; + +// Structure to describe indication TLV 0x22 for NAS SystemInfoIndication +struct sNASSystemInfoIndication_GSMCipher +{ + eQMINASServiceDomains mCipheringOnServiceDomain; +}; + +// Structure to describe indication TLV 0x23 for NAS SystemInfoIndication +struct sNASSystemInfoIndication_WCDMACipher +{ + eQMINASServiceDomains mCipheringOnServiceDomain; +}; + +// Structure to describe indication TLV 0x24 for NAS SystemInfoIndication +struct sNASSystemInfoIndication_NoPLMNChange +{ + INT8 mNoPLMNChange; +}; + +// Structure to describe indication TLV 0x25 for NAS SystemInfoIndication +struct sNASSystemInfoIndication_TDSCDMAServiceStatusInfo +{ + eQMINASServiceStatus mServiceStatus; + eQMINASServiceStatus mTrueServiceStatus; + eQMINASPreferredDataBath mPreferredDataPath; +}; + +// Structure to describe indication TLV 0x26 for NAS SystemInfoIndication +struct sNASSystemInfoIndication_TDSCDMASystemInfo +{ + INT8 mServiceDomainValid; + eQMINASSystemServiceCapabilities mServiceDomain; + INT8 mServiceCapabilityValid; + eQMINASSystemServiceCapabilities mSystemServiceCapabilities; + INT8 mRoamStatusValid; + eQMINASRoamStatus mRoamStatus; + INT8 mSystemForbiddenValid; + eQMINASSystemForbidden mSystemForbidden; + INT8 mLocationAreaCodeValid; + UINT16 mLocationAreaCode; + INT8 mCellIDValid; + UINT32 mCellID; + INT8 mRegistrationRejectInformationValid; + eQMINASSystemServiceCapabilities mRegistrationRejectServiceDomain; + UINT8 mRejectCause; + INT8 mNetworkIDValid; + char mMobileCountryCode[3]; + char mMobileNetworkCode[3]; + INT8 mHighSpeedCallStatusValid; + eQMINASHighSpeedCallStatus mHighSpeedCallStatus; + INT8 mHighSpeedServiceIndicationValid; + eQMINASHighSpeedCallStatus mHighSpeedServiceIndication; + INT8 mCellParameterIDValid; + UINT16 mCellParameterID; + INT8 mCellBroadcastCapabilityValid; + eQMINASCellBroadcastCaps2 mCellBroadcastCapability; + INT8 mCSBarringStatusValid; + eQMINASCallBarringStatus mCSCallBarringStatus; + INT8 mPSBarringStatusValid; + eQMINASCallBarringStatus mPSCallBarringStatus; + INT8 mCipheringValid; + eQMINASServiceDomains mCipheringOnServiceDomain; +}; + +// Structure to describe indication TLV 0x27 for NAS SystemInfoIndication +struct sNASSystemInfoIndication_EMBMSCoverage +{ + INT8 mEMBMSSupported; +}; + +// Structure to describe indication TLV 0x28 for NAS SystemInfoIndication +struct sNASSystemInfoIndication_SIMRejectInfo +{ + eQMINASSIMRejectStates mSIMRejectInfo; +}; + +// Structure to describe indication TLV 0x29 for NAS SystemInfoIndication +struct sNASSystemInfoIndication_WCDMAEUTRADetection +{ + eQMINASEUTRAStatus mEUTRADetectionStatus; +}; + +// Structure to describe indication TLV 0x2A for NAS SystemInfoIndication +struct sNASSystemInfoIndication_LTEIMSVoice +{ + INT8 mIMSVoiceSupportAvailable; +}; + +// Structure to describe indication TLV 0x2B for NAS SystemInfoIndication +struct sNASSystemInfoIndication_LTEVoiceDomain +{ + eQMINASVoiceDomains mLTEVoiceDomain; +}; + +// Structure to describe indication TLV 0x2C for NAS SystemInfoIndication +struct sNASSystemInfoIndication_CDMARegZoneID +{ + UINT16 mCDMARegZoneID; +}; + +// Structure to describe indication TLV 0x2D for NAS SystemInfoIndication +struct sNASSystemInfoIndication_GSMRAC +{ + UINT8 mGSMRoutingAreaCode; +}; + +// Structure to describe indication TLV 0x2E for NAS SystemInfoIndication +struct sNASSystemInfoIndication_WCDMARAC +{ + UINT8 mWCDMARoutingAreaCode; +}; + +// Structure to describe indication TLV 0x2F for NAS SystemInfoIndication +struct sNASSystemInfoIndication_CDMAResolvedMCC +{ + UINT16 mCDMAMCCResolvedViaSIDLookup; +}; + +// Structure to describe indication TLV 0x30 for NAS SystemInfoIndication +struct sNASSystemInfoIndication_RegistrationRestriction +{ + eQMINASRegistrationRestrictions mRegistrationRestriction; +}; + +// Structure to describe indication TLV 0x31 for NAS SystemInfoIndication +struct sNASSystemInfoIndication_TDSCDMARegistrationDomain +{ + eQMINASRegistrationDomains mTDSCDMARegistrationDomain; +}; + +// Structure to describe indication TLV 0x32 for NAS SystemInfoIndication +struct sNASSystemInfoIndication_LTERegistrationDomain +{ + eQMINASRegistrationDomains mTDSCDMARegistrationDomain; +}; + +// Structure to describe indication TLV 0x33 for NAS SystemInfoIndication +struct sNASSystemInfoIndication_WCDMARegistrationDomain +{ + eQMINASRegistrationDomains mTDSCDMARegistrationDomain; +}; + +// Structure to describe indication TLV 0x34 for NAS SystemInfoIndication +struct sNASSystemInfoIndication_GSMRegistrationDomain +{ + eQMINASRegistrationDomains mTDSCDMARegistrationDomain; +}; + +// Structure to describe indication TLV 0x35 for NAS SystemInfoIndication +struct sNASSystemInfoIndication_EMBMSTraceID +{ + INT16 mEMBMSTraceID; +}; + +// Structure to describe indication TLV 0x36 for NAS SystemInfoIndication +struct sNASSystemInfoIndication_WCDMACSGInfo +{ + UINT32 mCSGID; + UINT8 mNameLength; + + // This array must be the size specified by mNameLength + // wchar_t mName[1]; +}; + +// Structure to describe indication TLV 0x37 for NAS SystemInfoIndication +struct sNASSystemInfoIndication_CDMA1xEVVoiceDomain +{ + eQMINASVoiceDomains mCDMA1xEVVoiceDomain; +}; + +// Structure to describe indication TLV 0x38 for NAS SystemInfoIndication +struct sNASSystemInfoIndication_CDMA1xEVSMSDomain +{ + eQMINASSMSDomains mCDMA1xEVSMSDomain; +}; + +// Structure to describe indication TLV 0x39 for NAS SystemInfoIndication +struct sNASSystemInfoIndication_LTESMSDomain +{ + eQMINASSMSDomains mLTESMSDomain; +}; + +// Structure to describe indication TLV 0x3A for NAS SystemInfoIndication +struct sNASSystemInfoIndication_LTEEmergencyBearer +{ + eQMINASTriStatus mLTEEmergencyBearerSupported; +}; + +// Structure to describe indication TLV 0x3B for NAS SystemInfoIndication +struct sNASSystemInfoIndication_GSMVoiceDomain +{ + eQMINASVoiceDomains mVoiceDomain; +}; + +// Structure to describe indication TLV 0x3C for NAS SystemInfoIndication +struct sNASSystemInfoIndication_GSMSMSDomain +{ + eQMINASSMSDomains mSMSDomain; +}; + +// Structure to describe indication TLV 0x3D for NAS SystemInfoIndication +struct sNASSystemInfoIndication_WCDMAVoiceDomain +{ + eQMINASVoiceDomains mVoiceDomain; +}; + +// Structure to describe indication TLV 0x3E for NAS SystemInfoIndication +struct sNASSystemInfoIndication_WCDMASMSDomain +{ + eQMINASSMSDomains mSMSDomain; +}; + +// Structure to describe indication TLV 0x3F for NAS SystemInfoIndication +struct sNASSystemInfoIndication_LTEEmergencyAccessBarred +{ + eQMINASTriStatus mLTEEmergencyAccessBarred; +}; + +// Structure to describe indication TLV 0x40 for NAS SystemInfoIndication +struct sNASSystemInfoIndication_CDMAVoiceDomain +{ + eQMINASVoiceDomains mVoiceDomain; +}; + +// Structure to describe indication TLV 0x41 for NAS SystemInfoIndication +struct sNASSystemInfoIndication_CDMASMSDomain +{ + eQMINASSMSDomains mSMSDomain; +}; + +// Structure to describe indication TLV 0x42 for NAS SystemInfoIndication +struct sNASSystemInfoIndication_TDSCDMAVoiceDomain +{ + eQMINASVoiceDomains mVoiceDomain; +}; + +// Structure to describe indication TLV 0x43 for NAS SystemInfoIndication +struct sNASSystemInfoIndication_TDSCDMASMSDomain +{ + eQMINASSMSDomains mSMSDomain; +}; + +// Structure to describe indication TLV 0x44 for NAS SystemInfoIndication +struct sNASSystemInfoIndication_LTECSGInfo +{ + UINT32 mCSGID; + UINT8 mNameLength; + + // This array must be the size specified by mNameLength + // wchar_t mName[1]; +}; + +// Structure to describe response TLV 0x10 for NASGetSignalInfo() +struct sNASGetSignalInfoResponse_CDMASignalInfo +{ + INT8 mRSSI; + UINT16 mECIO; +}; + +// Structure to describe response TLV 0x11 for NASGetSignalInfo() +struct sNASGetSignalInfoResponse_CDMA1xEVDOSignalInfo +{ + INT8 mRSSI; + UINT16 mECIO; + eQMINASSINRLevels mSINR; + UINT32 mIO; +}; + +// Structure to describe response TLV 0x12 for NASGetSignalInfo() +struct sNASGetSignalInfoResponse_GSMSignalInfo +{ + INT8 mRSSI; +}; + +// Structure to describe response TLV 0x13 for NASGetSignalInfo() +struct sNASGetSignalInfoResponse_WCDMASignalInfo +{ + INT8 mRSSI; + UINT16 mECIO; +}; + +// Structure to describe response TLV 0x14 for NASGetSignalInfo() +struct sNASGetSignalInfoResponse_LTESignalInfo +{ + INT8 mRSSI; + INT8 mRSRQ; + INT16 mRSRP; + INT16 mSNR; +}; + +// Structure to describe response TLV 0x15 for NASGetSignalInfo() +struct sNASGetSignalInfoResponse_TDSCDMASignalInfo +{ + INT8 mPCCPCHRSCP; +}; + +// Structure to describe response TLV 0x16 for NASGetSignalInfo() +struct sNASGetSignalInfoResponse_TDSCDMASignalInfoEx +{ + float mRSSIdBm; + float mRSCPdBm; + float mECIOdB; + float mSINRdB; +}; + +// Structure to describe request TLV 0x10 for NASConfigureSignalInfo() +struct sNASConfigureSignalInfoRequest_RSSIThresholdList +{ + UINT8 mThresholdCount; + + // This array must be the size specified by mThresholdCount + // INT8 mThreshold[1]; +}; + +// Structure to describe request TLV 0x11 for NASConfigureSignalInfo() +struct sNASConfigureSignalInfoRequest_ECIOThresholdList +{ + UINT8 mThresholdCount; + + // This array must be the size specified by mThresholdCount + // INT16 mThreshold[1]; +}; + +// Structure to describe request TLV 0x12 for NASConfigureSignalInfo() +struct sNASConfigureSignalInfoRequest_CDMA1xEVDOSINRThresholdList +{ + UINT8 mThresholdCount; + + // This array must be the size specified by mThresholdCount + // UINT8 mThreshold[1]; +}; + +// Structure to describe request TLV 0x13 for NASConfigureSignalInfo() +struct sNASConfigureSignalInfoRequest_LTESINRThresholdList +{ + UINT8 mThresholdCount; + + // This array must be the size specified by mThresholdCount + // INT8 mThreshold[1]; +}; + +// Structure to describe request TLV 0x14 for NASConfigureSignalInfo() +struct sNASConfigureSignalInfoRequest_IOThresholdList +{ + UINT8 mThresholdCount; + + // This array must be the size specified by mThresholdCount + // INT32 mThreshold[1]; +}; + +// Structure to describe request TLV 0x15 for NASConfigureSignalInfo() +struct sNASConfigureSignalInfoRequest_RSRQThresholdList +{ + UINT8 mThresholdCount; + + // This array must be the size specified by mThresholdCount + // INT8 mThreshold[1]; +}; + +// Structure to describe request TLV 0x16 for NASConfigureSignalInfo() +struct sNASConfigureSignalInfoRequest_RSRPThresholdList +{ + UINT8 mThresholdCount; + + // This array must be the size specified by mThresholdCount + // INT16 mThreshold[1]; +}; + +// Structure to describe request TLV 0x17 for NASConfigureSignalInfo() +struct sNASConfigureSignalInfoRequest_LTEConfig +{ + eQMINASLTESignalRates mLTESignalCheckRate; + eQMINASLTESignalRates mLTESignalAveragingRate; +}; + +// Structure to describe request TLV 0x18 for NASConfigureSignalInfo() +struct sNASConfigureSignalInfoRequest_RSCPThresholdList +{ + UINT8 mThresholdCount; + + // This array must be the size specified by mThresholdCount + // INT8 mRSCPThreshold[1]; +}; + +// Structure to describe request TLV 0x19 for NASConfigureSignalInfo() +struct sNASConfigureSignalInfoRequest_TDSCDMASINRThresholdList +{ + UINT8 mSINRThresholdCount; + + // This array must be the size specified by mSINRThresholdCount + // float mSINRThresholddB[1]; +}; + +// Structure to describe indication TLV 0x10 for NAS SignalInfoIndication +struct sNASSignalInfoIndication_CDMASignalInfo +{ + INT8 mRSSI; + UINT16 mECIO; +}; + +// Structure to describe indication TLV 0x11 for NAS SignalInfoIndication +struct sNASSignalInfoIndication_CDMA1xEVDOSignalInfo +{ + INT8 mRSSI; + UINT16 mECIO; + eQMINASSINRLevels mSINR; + UINT32 mIO; +}; + +// Structure to describe indication TLV 0x12 for NAS SignalInfoIndication +struct sNASSignalInfoIndication_GSMSignalInfo +{ + INT8 mRSSI; +}; + +// Structure to describe indication TLV 0x13 for NAS SignalInfoIndication +struct sNASSignalInfoIndication_WCDMASignalInfo +{ + INT8 mRSSI; + UINT16 mECIO; +}; + +// Structure to describe indication TLV 0x14 for NAS SignalInfoIndication +struct sNASSignalInfoIndication_LTESignalInfo +{ + INT8 mRSSI; + INT8 mRSRQ; + INT16 mRSRP; + INT16 mSNR; +}; + +// Structure to describe indication TLV 0x15 for NAS SignalInfoIndication +struct sNASSignalInfoIndication_TDSCDMASignalInfo +{ + INT8 mPCCPCHRSCP; +}; + +// Structure to describe indication TLV 0x16 for NAS SignalInfoIndication +struct sNASSignalInfoIndication_TDSCDMASignalInfoEx +{ + float mRSSIdBm; + float mRSCPdBm; + float mECIOdB; + float mSINRdB; +}; + +// Structure to describe response TLV 0x10 for NASGetErrorRate() +struct sNASGetErrorRateResponse_CDMAFrameErrorRate +{ + UINT16 mErrorRate; +}; + +// Structure to describe response TLV 0x11 for NASGetErrorRate() +struct sNASGetErrorRateResponse_CDMA1xEVDOPacketErrorRate +{ + UINT16 mErrorRate; +}; + +// Structure to describe response TLV 0x12 for NASGetErrorRate() +struct sNASGetErrorRateResponse_GSMBitErrorRate +{ + UINT8 mErrorRate; +}; + +// Structure to describe response TLV 0x13 for NASGetErrorRate() +struct sNASGetErrorRateResponse_WCDMABlockErrorRate +{ + UINT8 mErrorRate; +}; + +// Structure to describe response TLV 0x14 for NASGetErrorRate() +struct sNASGetErrorRateResponse_TDSCDMABlockErrorRate +{ + UINT8 mErrorRate; +}; + +// Structure to describe indication TLV 0x10 for NAS ErrorRateIndication +struct sNASErrorRateIndication_CDMAFrameErrorRate +{ + UINT16 mErrorRate; +}; + +// Structure to describe indication TLV 0x11 for NAS ErrorRateIndication +struct sNASErrorRateIndication_CDMA1xEVDOPacketErrorRate +{ + UINT16 mErrorRate; +}; + +// Structure to describe indication TLV 0x12 for NAS ErrorRateIndication +struct sNASErrorRateIndication_GSMBitErrorRate +{ + UINT8 mErrorRate; +}; + +// Structure to describe indication TLV 0x13 for NAS ErrorRateIndication +struct sNASErrorRateIndication_WCDMAFrameErrorRate +{ + UINT8 mErrorRate; +}; + +// Structure to describe indication TLV 0x14 for NAS ErrorRateIndication +struct sNASErrorRateIndication_TDSCDMABlockErrorRate +{ + UINT8 mErrorRate; +}; + +// Structure to describe indication TLV 0x01 for NAS EVDOSessionCloseIndication +struct sNASEVDOSessionCloseIndication_Reason +{ + eQMINASEVDOSessionCloseReasons mSessionCloseReason; +}; + +// Structure to describe indication TLV 0x01 for NAS EVDOUATIUpdateIndication +struct sNASEVDOUATIUpdateIndication_UATI +{ + UINT8 mUATI[16]; +}; + +// Structure to describe request TLV 0x01 for NASGetEVDOProtocolSubtype() +struct sNASGetEVDOProtocolSubtypeRequest_Protocol +{ + UINT32 mEVDOProtocol; +}; + +// Structure to describe response TLV 0x10 for NASGetEVDOProtocolSubtype() +struct sNASGetEVDOProtocolSubtypeResponse_Subtype +{ + UINT16 mEVDOProtocolSubtype; +}; + +// Structure to describe response TLV 0x10 for NASGetEVDOColorCode() +struct sNASGetEVDOColorCodeResponse_Value +{ + UINT8 mEVDOColorCode; +}; + +// Structure to describe response TLV 0x10 for NASGetAcquisitionSystemMode() +struct sNASGetAcquisitionSystemModeResponse_CDMA +{ + eQMINASRadioSystemModes mRadioSystemMode; +}; + +// Structure to describe response TLV 0x11 for NASGetAcquisitionSystemMode() +struct sNASGetAcquisitionSystemModeResponse_CDMA1xEVDO +{ + eQMINASRadioSystemModes mRadioSystemMode; +}; + +// Structure to describe response TLV 0x12 for NASGetAcquisitionSystemMode() +struct sNASGetAcquisitionSystemModeResponse_GSM +{ + eQMINASRadioSystemModes mRadioSystemMode; +}; + +// Structure to describe response TLV 0x13 for NASGetAcquisitionSystemMode() +struct sNASGetAcquisitionSystemModeResponse_UMTS +{ + eQMINASRadioSystemModes mRadioSystemMode; +}; + +// Structure to describe response TLV 0x14 for NASGetAcquisitionSystemMode() +struct sNASGetAcquisitionSystemModeResponse_LTE +{ + eQMINASRadioSystemModes mRadioSystemMode; +}; + +// Structure to describe response TLV 0x15 for NASGetAcquisitionSystemMode() +struct sNASGetAcquisitionSystemModeResponse_TDSCDMA +{ + eQMINASRadioSystemModes mRadioSystemMode; +}; + +// Structure to describe request TLV 0x01 for NASSetRXDiversity() +struct sNASSetRXDiversityRequest_Diversity +{ + eQMINASRadioInterfaces mRadioInterface; + bool mEnableRXChain0:1; + bool mEnableRXChain1:1; + + // Padding out 6 bits + UINT8 mReserved1:6; +}; + +// Structure to describe response TLV 0x10 for NASGetRXTXInfo() +struct sNASGetRXTXInfoResponse_RX0Info +{ + INT8 mRadioTuned; + INT32 mRXPower; + INT32 mEcIo; + INT32 mRSCP; + INT32 mRSRP; + INT32 mPhase; +}; + +// Structure to describe response TLV 0x11 for NASGetRXTXInfo() +struct sNASGetRXTXInfoResponse_RX1Info +{ + INT8 mRadioTuned; + INT32 mRXPower; + INT32 mEcIo; + INT32 mRSCP; + INT32 mRSRP; + INT32 mPhase; +}; + +// Structure to describe response TLV 0x12 for NASGetRXTXInfo() +struct sNASGetRXTXInfoResponse_TXInfo +{ + INT8 mInTraffic; + INT32 mTXPower; +}; + +// Structure to describe request TLV 0x01 for NASUpdateAKEYExtended() +struct sNASUpdateAKEYExtendedRequest_AKEY +{ + char mSPC[6]; + char mAKEY[26]; +}; + +// Structure to describe response TLV 0x10 for NASGetDualStandbyPreference() +struct sNASGetDualStandbyPreferenceResponse_StandbyPreference +{ + eQMINASStandbyPreference mStandbyPreference; +}; + +// Structure to describe response TLV 0x11 for NASGetDualStandbyPreference() +struct sNASGetDualStandbyPreferenceResponse_PrioritySubs +{ + eQMINASSubscriptionType mSubscriptionType; +}; + +// Structure to describe response TLV 0x12 for NASGetDualStandbyPreference() +struct sNASGetDualStandbyPreferenceResponse_ActiveSubs +{ + eQMINASSubscriptionType mSubscriptionType; +}; + +// Structure to describe response TLV 0x13 for NASGetDualStandbyPreference() +struct sNASGetDualStandbyPreferenceResponse_DefaultDataSubs +{ + eQMINASSubscriptionType mSubscriptionType; +}; + +// Structure to describe response TLV 0x14 for NASGetDualStandbyPreference() +struct sNASGetDualStandbyPreferenceResponse_DefaultVoiceSubs +{ + eQMINASSubscriptionType mSubscriptionType; +}; + +// Structure to describe request TLV 0x01 for NASBlockLTEPLMN() +struct sNASBlockLTEPLMNRequest_PLMN +{ + UINT16 mMobileCountryCode; + UINT16 mMobileNetworkCode; + INT8 mMNCIncludesPCSDigit; +}; + +// Structure to describe request TLV 0x10 for NASBlockLTEPLMN() +struct sNASBlockLTEPLMNRequest_AbsoluteTime +{ + UINT32 mBlockingIntervalInMilliseconds; +}; + +// Structure to describe request TLV 0x11 for NASBlockLTEPLMN() +struct sNASBlockLTEPLMNRequest_T3204Multiplier +{ + UINT32 mBlockingIntervalAsT3204Multiplier; +}; + +// Structure to describe request TLV 0x01 for NASUnblockLTEPLMN() +struct sNASUnblockLTEPLMNRequest_PLMN +{ + UINT16 mMobileCountryCode; + UINT16 mMobileNetworkCode; + INT8 mMNCIncludesPCSDigit; +}; + +// Structure to describe indication TLV 0x10 for NAS CurrentPLMNNameIndication +struct sNASCurrentPLMNNameIndication_PLMN +{ + UINT16 mMobileCountryCode; + UINT16 mMobileNetworkCode; + INT8 mMNCIncludesPCSDigit; +}; + +// Structure to describe indication TLV 0x11 for NAS CurrentPLMNNameIndication +struct sNASCurrentPLMNNameIndication_SPN +{ + eQMINASPLMNNameEncodingSchemes mSPNEncoding; + UINT8 mSPNLength; + + // This array must be the size specified by mSPNLength + // UINT8 mSPN[1]; +}; + +// Structure to describe indication TLV 0x12 for NAS CurrentPLMNNameIndication +struct sNASCurrentPLMNNameIndication_ShortName +{ + eQMINASPLMNNameEncodingSchemes mPLMNShortEncoding; + eQMINASPLMNNameCountryInitials mPLMNShortCountryInitials; + eQMINASPLMNNameSpareBits mPLMNSpareBits; + UINT8 mPLMNShortLength; + + // This array must be the size specified by mPLMNShortLength + // UINT8 mPLMNShort[1]; +}; + +// Structure to describe indication TLV 0x13 for NAS CurrentPLMNNameIndication +struct sNASCurrentPLMNNameIndication_LongName +{ + eQMINASPLMNNameEncodingSchemes mPLMNLongEncoding; + eQMINASPLMNNameCountryInitials mPLMNLongCountryInitials; + eQMINASPLMNNameSpareBits mPLMNLongBits; + UINT8 mPLMNLongLength; + + // This array must be the size specified by mPLMNLongLength + // UINT8 mPLMNLong[1]; +}; + +// Structure to describe indication TLV 0x14 for NAS CurrentPLMNNameIndication +struct sNASCurrentPLMNNameIndication_CSGID +{ + UINT32 mCSGID; +}; + +// Structure to describe indication TLV 0x15 for NAS CurrentPLMNNameIndication +struct sNASCurrentPLMNNameIndication_DisplayBitInfo +{ + eQMINASTriStatus mIsSPNSet; + eQMINASTriStatus mIsPLMNSet; +}; + +// Structure to describe indication TLV 0x16 for NAS CurrentPLMNNameIndication +struct sNASCurrentPLMNNameIndication_NetworkInfo +{ + eQMINASTriStatus mIsHomeNetwork; +}; + +// Structure to describe request TLV 0x01 for NASConfigureEMBMS() +struct sNASConfigureEMBMSRequest_Config +{ + INT8 mEMBMSEnabled; +}; + +// Structure to describe request TLV 0x10 for NASConfigureEMBMS() +struct sNASConfigureEMBMSRequest_TraceID +{ + INT16 mEMBMSTraceID; +}; + +// Structure to describe response TLV 0x10 for NASConfigureEMBMS() +struct sNASConfigureEMBMSResponse_TraceID +{ + INT16 mEMBMSTraceID; +}; + +// Structure to describe response TLV 0x10 for NASGetEMBMSStatus() +struct sNASGetEMBMSStatusResponse_Status +{ + INT8 mEMBMSEnabled; +}; + +// Structure to describe response TLV 0x11 for NASGetEMBMSStatus() +struct sNASGetEMBMSStatusResponse_TraceID +{ + INT16 mEMBMSTraceID; +}; + +// Structure to describe indication TLV 0x01 for NAS EMBMSStatusIndication +struct sNASEMBMSStatusIndication_Status +{ + INT8 mEMBMSEnabled; +}; + +// Structure to describe indication TLV 0x10 for NAS EMBMSStatusIndication +struct sNASEMBMSStatusIndication_TraceID +{ + INT16 mEMBMSTraceID; +}; + +// Structure to describe response TLV 0x10 for NASGetCDMAPositionInfo() +struct sNASGetCDMAPositionInfoResponse_Info +{ + INT8 mUEInIdleMode; + UINT8 mBaseStationCount; + + struct sBaseStation + { + eQMINASCDMAPilotTypes mPilotType; + UINT16 mSystemID; + UINT16 mNetworkID; + UINT16 mBaseStationID; + UINT16 mPilotPN; + UINT16 mPilotStrength; + INT32 mLatitude; + INT32 mLongitude; + UINT64 mGPSTimeInMilliseconds; + }; + + // This array must be the size specified by mBaseStationCount + // sBaseStation mBaseStations[1]; +}; + +// Structure to describe indication TLV 0x01 for NAS RFBandInfoIndication +struct sNASRFBandInfoIndication_BandInfo +{ + eQMINASRadioInterfaces mRadioInterface; + eQMINASBandClasses mActiveBandClass; + UINT16 mActiveChannel; +}; + +// Structure to describe indication TLV 0x01 for NAS NetworkRejectIndication +struct sNASNetworkRejectIndication_RadioInterface +{ + eQMINASRadioInterfaces mRadioInterface; +}; + +// Structure to describe indication TLV 0x02 for NAS NetworkRejectIndication +struct sNASNetworkRejectIndication_ServiceDomain +{ + eQMINASSystemServiceCapabilities mRegistrationRejectServiceDomain; +}; + +// Structure to describe indication TLV 0x03 for NAS NetworkRejectIndication +struct sNASNetworkRejectIndication_RejectCause +{ + UINT8 mRejectCause; +}; + +// Structure to describe indication TLV 0x10 for NAS NetworkRejectIndication +struct sNASNetworkRejectIndication_PLMN +{ + UINT16 mMobileCountryCode; + UINT16 mMobileNetworkCode; + INT8 mMNCIncludesPCSDigit; +}; + +// Structure to describe indication TLV 0x11 for NAS NetworkRejectIndication +struct sNASNetworkRejectIndication_CSGID +{ + UINT32 mCSGID; +}; + +// Structure to describe response TLV 0x10 for NASGetManagedRoamingConfig() +struct sNASGetManagedRoamingConfigResponse_Config +{ + INT8 mManagedRoamingSupported; +}; + +// Structure to describe indication TLV 0x10 for NAS RTREConfigurationIndication +struct sNASRTREConfigurationIndication_CurrentConfig +{ + eQMINASRTREConfiguration mRTREConfiguration; +}; + +// Structure to describe indication TLV 0x11 for NAS RTREConfigurationIndication +struct sNASRTREConfigurationIndication_ConfigPreference +{ + eQMINASRTREConfiguration mRTREPreference; +}; + +// Structure to describe response TLV 0x10 for NASGetCentralizedEONSSupport() +struct sNASGetCentralizedEONSSupportResponse_Status +{ + INT8 mCentralizedEONSSupported; +}; + +// Structure to describe request TLV 0x10 for NASConfigureSignalInfo2() +struct sNASConfigureSignalInfo2Request_CDMARSSIThresholdList +{ + UINT8 mThresholdCount; + + // This array must be the size specified by mThresholdCount + // INT16 mThreshold[1]; +}; + +// Structure to describe request TLV 0x11 for NASConfigureSignalInfo2() +struct sNASConfigureSignalInfo2Request_CDMARSSIDelta +{ + UINT16 mDelta; +}; + +// Structure to describe request TLV 0x12 for NASConfigureSignalInfo2() +struct sNASConfigureSignalInfo2Request_CDMAECIOThresholdList +{ + UINT8 mThresholdCount; + + // This array must be the size specified by mThresholdCount + // INT16 mThreshold[1]; +}; + +// Structure to describe request TLV 0x13 for NASConfigureSignalInfo2() +struct sNASConfigureSignalInfo2Request_CDMAECIODelta +{ + UINT16 mDelta; +}; + +// Structure to describe request TLV 0x14 for NASConfigureSignalInfo2() +struct sNASConfigureSignalInfo2Request_HDRRSSIThresholdList +{ + UINT8 mThresholdCount; + + // This array must be the size specified by mThresholdCount + // INT16 mThreshold[1]; +}; + +// Structure to describe request TLV 0x15 for NASConfigureSignalInfo2() +struct sNASConfigureSignalInfo2Request_HDRRSSIDelta +{ + UINT16 mDelta; +}; + +// Structure to describe request TLV 0x16 for NASConfigureSignalInfo2() +struct sNASConfigureSignalInfo2Request_HDRECIOThresholdList +{ + UINT8 mThresholdCount; + + // This array must be the size specified by mThresholdCount + // INT16 mThreshold[1]; +}; + +// Structure to describe request TLV 0x17 for NASConfigureSignalInfo2() +struct sNASConfigureSignalInfo2Request_HDRECIODelta +{ + UINT16 mDelta; +}; + +// Structure to describe request TLV 0x18 for NASConfigureSignalInfo2() +struct sNASConfigureSignalInfo2Request_HDRSINRThresholdList +{ + UINT8 mSINRThresholdCount; + + // This array must be the size specified by mSINRThresholdCount + // eQMINASSINRLevels mSINRThreshold[1]; +}; + +// Structure to describe request TLV 0x19 for NASConfigureSignalInfo2() +struct sNASConfigureSignalInfo2Request_HDRSINRDelta +{ + UINT16 mDelta; +}; + +// Structure to describe request TLV 0x1A for NASConfigureSignalInfo2() +struct sNASConfigureSignalInfo2Request_HDRIOThreshold +{ + UINT8 mThresholdCount; + + // This array must be the size specified by mThresholdCount + // INT16 mThreshold[1]; +}; + +// Structure to describe request TLV 0x1B for NASConfigureSignalInfo2() +struct sNASConfigureSignalInfo2Request_HDRIODelta +{ + UINT16 mDelta; +}; + +// Structure to describe request TLV 0x1C for NASConfigureSignalInfo2() +struct sNASConfigureSignalInfo2Request_GSMRSSIThresholdList +{ + UINT8 mThresholdCount; + + // This array must be the size specified by mThresholdCount + // INT16 mThreshold[1]; +}; + +// Structure to describe request TLV 0x1D for NASConfigureSignalInfo2() +struct sNASConfigureSignalInfo2Request_GSMRSSIDelta +{ + UINT16 mDelta; +}; + +// Structure to describe request TLV 0x1E for NASConfigureSignalInfo2() +struct sNASConfigureSignalInfo2Request_WCDMARSSIThresholdList +{ + UINT8 mThresholdCount; + + // This array must be the size specified by mThresholdCount + // INT16 mThreshold[1]; +}; + +// Structure to describe request TLV 0x1F for NASConfigureSignalInfo2() +struct sNASConfigureSignalInfo2Request_WCDMARSSIDelta +{ + UINT16 mDelta; +}; + +// Structure to describe request TLV 0x20 for NASConfigureSignalInfo2() +struct sNASConfigureSignalInfo2Request_WCDMAECIOThresholdList +{ + UINT8 mThresholdCount; + + // This array must be the size specified by mThresholdCount + // INT16 mThreshold[1]; +}; + +// Structure to describe request TLV 0x21 for NASConfigureSignalInfo2() +struct sNASConfigureSignalInfo2Request_WCDMAECIODelta +{ + UINT16 mDelta; +}; + +// Structure to describe request TLV 0x22 for NASConfigureSignalInfo2() +struct sNASConfigureSignalInfo2Request_LTERSSIThresholdList +{ + UINT8 mThresholdCount; + + // This array must be the size specified by mThresholdCount + // INT16 mThreshold[1]; +}; + +// Structure to describe request TLV 0x23 for NASConfigureSignalInfo2() +struct sNASConfigureSignalInfo2Request_LTERSSIDelta +{ + UINT16 mDelta; +}; + +// Structure to describe request TLV 0x24 for NASConfigureSignalInfo2() +struct sNASConfigureSignalInfo2Request_LTESNRThresholdList +{ + UINT8 mThresholdCount; + + // This array must be the size specified by mThresholdCount + // INT16 mThreshold[1]; +}; + +// Structure to describe request TLV 0x25 for NASConfigureSignalInfo2() +struct sNASConfigureSignalInfo2Request_LTESNRDelta +{ + UINT16 mDelta; +}; + +// Structure to describe request TLV 0x26 for NASConfigureSignalInfo2() +struct sNASConfigureSignalInfo2Request_LTERSRQThresholdList +{ + UINT8 mThresholdCount; + + // This array must be the size specified by mThresholdCount + // INT16 mThreshold[1]; +}; + +// Structure to describe request TLV 0x27 for NASConfigureSignalInfo2() +struct sNASConfigureSignalInfo2Request_LTERSRQDelta +{ + UINT16 mDelta; +}; + +// Structure to describe request TLV 0x28 for NASConfigureSignalInfo2() +struct sNASConfigureSignalInfo2Request_LTERSRPThresholdList +{ + UINT8 mThresholdCount; + + // This array must be the size specified by mThresholdCount + // INT16 mThreshold[1]; +}; + +// Structure to describe request TLV 0x29 for NASConfigureSignalInfo2() +struct sNASConfigureSignalInfo2Request_LTERSRPDelta +{ + UINT16 mDelta; +}; + +// Structure to describe request TLV 0x2A for NASConfigureSignalInfo2() +struct sNASConfigureSignalInfo2Request_LTESignalReportConfig +{ + eQMINASReportRate mReportRate; + eQMINASAveragePeriod mAveragePeriod; +}; + +// Structure to describe request TLV 0x2B for NASConfigureSignalInfo2() +struct sNASConfigureSignalInfo2Request_TDSCDMARSCPThresholdList +{ + UINT8 mThresholdCount; + + // This array must be the size specified by mThresholdCount + // INT16 mThreshold[1]; +}; + +// Structure to describe request TLV 0x2C for NASConfigureSignalInfo2() +struct sNASConfigureSignalInfo2Request_TDSCDMARSCPDelta +{ + UINT16 mDelta; +}; + +// Structure to describe request TLV 0x2D for NASConfigureSignalInfo2() +struct sNASConfigureSignalInfo2Request_TDSCDMARSSIThresholdList +{ + UINT8 mThresholdCount; + + // This array must be the size specified by mThresholdCount + // float mRSSIThresholddBm[1]; +}; + +// Structure to describe request TLV 0x2E for NASConfigureSignalInfo2() +struct sNASConfigureSignalInfo2Request_TDSCDMARSSIDelta +{ + float mRSSIDeltadBm; +}; + +// Structure to describe request TLV 0x2F for NASConfigureSignalInfo2() +struct sNASConfigureSignalInfo2Request_TDSCDMAECIOThresholdList +{ + UINT8 mThresholdCount; + + // This array must be the size specified by mThresholdCount + // float mECIOThresholddB[1]; +}; + +// Structure to describe request TLV 0x30 for NASConfigureSignalInfo2() +struct sNASConfigureSignalInfo2Request_TDSCDMAECIODelta +{ + float mECIODeltadB; +}; + +// Structure to describe request TLV 0x31 for NASConfigureSignalInfo2() +struct sNASConfigureSignalInfo2Request_TDSCDMASINRThresholdList +{ + UINT8 mSINRThresholdCount; + + // This array must be the size specified by mSINRThresholdCount + // float mSINRThresholddB[1]; +}; + +// Structure to describe request TLV 0x32 for NASConfigureSignalInfo2() +struct sNASConfigureSignalInfo2Request_TDSCDMASINRDelta +{ + float mSINRDeltadB; +}; + +// Structure to describe response TLV 0x10 for NASGetTDSCDMACellInfo() +struct sNASGetTDSCDMACellInfoResponse_CellInfo +{ + // Bitfield arrays are not possible in c, unrolling the array + UINT8 mMobileCountryCode0:4; + UINT8 mMobileCountryCode1:4; + UINT8 mMobileCountryCode2:4; + + // Bitfield arrays are not possible in c, unrolling the array + UINT8 mMobileNetworkCode0:4; + UINT8 mMobileNetworkCode1:4; + UINT8 mMobileNetworkCode2:4; + + INT8 mMNCIncludesPCSDigit; + UINT16 mLocationAreaCode; + UINT16 mAbsoluteRFChannelNumber; + UINT32 mCellID; + UINT8 mCellParameterID; + UINT8 mPathLossdB; + float mTimingAdvanceSeconds; + float mRSCPdBm; +}; + +// Structure to describe response TLV 0x11 for NASGetTDSCDMACellInfo() +struct sNASGetTDSCDMACellInfoResponse_NeighborCellInfo +{ + UINT8 mNeighborCellCount; + + struct sNeighborCell + { + UINT16 mAbsoluteRFChannelNumber; + UINT8 mCellParameterID; + float mRSCPdBm; + }; + + // This array must be the size specified by mNeighborCellCount + // sNeighborCell mNeighborCells[1]; +}; + +// Structure to describe request TLV 0x01 for NASSetHPLMNIRATSearchTimer() +struct sNASSetHPLMNIRATSearchTimerRequest_Timer +{ + UINT16 mTDSCDMASearchTimer; +}; + +// Structure to describe request TLV 0x10 for NASGetEMBMSSignalQuality() +struct sNASGetEMBMSSignalQualityRequest_TraceID +{ + INT16 mEMBMSTraceID; +}; + +// Structure to describe response TLV 0x10 for NASGetEMBMSSignalQuality() +struct sNASGetEMBMSSignalQualityResponse_TraceID +{ + INT16 mEMBMSTraceID; +}; + +// Structure to describe response TLV 0x11 for NASGetEMBMSSignalQuality() +struct sNASGetEMBMSSignalQualityResponse_SignalQuality +{ + UINT8 mSignalCount; + + struct sSignal + { + UINT8 mMBSFNAreaID; + INT8 mAverageSNR; + INT8 mSignalLevel; + }; + + // This array must be the size specified by mSignalCount + // sSignal mSignals[1]; +}; + +// Structure to describe request TLV 0x01 for NASLimitSystemInfoIndications() +struct sNASLimitSystemInfoIndicationsRequest_Limits +{ + bool mLimitByServerStatus:1; + bool mLimitByServerDomain:1; + bool mLimitByPLMNID:1; + bool mLimitBySIDAndNID:1; + bool mLimitByRoamStatus:1; + + // Padding out 59 bits + UINT8 mReserved1:3; + UINT8 mReserved2[7]; +}; + +// Structure to describe response TLV 0x01 for NASGetSystemInfoIndicationLimits() +struct sNASGetSystemInfoIndicationLimitsResponse_Limits +{ + bool mLimitByServerStatus:1; + bool mLimitByServerDomain:1; + bool mLimitByPLMNID:1; + bool mLimitBySIDAndNID:1; + bool mLimitByRoamStatus:1; + + // Padding out 59 bits + UINT8 mReserved1:3; + UINT8 mReserved2[7]; +}; + +// Structure to describe request TLV 0x01 for NASUpdateIMSStatus() +struct sNASUpdateIMSStatusRequest_RadioInterface +{ + eQMINASRadioInterfaces mRadioInterface; +}; + +// Structure to describe request TLV 0x02 for NASUpdateIMSStatus() +struct sNASUpdateIMSStatusRequest_IMSRegistrationState +{ + UINT8 mRegistrationStates; + + struct sRegistrationState + { + eQMINASCallTypes mCallType; + INT8 mIsRegistered; + }; + + // This array must be the size specified by mRegistrationStates + // sRegistrationState mRegistrationStates[1]; +}; + +// Structure to describe response TLV 0x10 for NASGetIMSPreference() +struct sNASGetIMSPreferenceResponse_IMSPreferenceInfo +{ + eQMINASRadioInterfaces mRadioInterface; + bool mVoice:1; + bool mSMS:1; + + // Padding out 62 bits + UINT8 mReserved1:6; + UINT8 mReserved2[7]; +}; + +// Structure to describe indication TLV 0x01 for NAS IMSPreferenceIndication +struct sNASIMSPreferenceIndication_IMSPreferenceInfo +{ + eQMINASRadioInterfaces mRadioInterface; + bool mVoice:1; + bool mSMS:1; + + // Padding out 62 bits + UINT8 mReserved1:6; + UINT8 mReserved2[7]; +}; + +// Structure to describe request TLV 0x01 for NASConfigurePLMNNameIndication() +struct sNASConfigurePLMNNameIndicationRequest_ReportAllNames +{ + INT8 mReportAllAvailableNames; +}; + +// Structure to describe request TLV 0x01 for NASCDMAAvoidSystem() +struct sNASCDMAAvoidSystemRequest_AvoidSystemInfo +{ + eQMINASAvoidSystemTypes mAvoidType; +}; + +// Structure to describe response TLV 0x10 for NASGetCDMAAvoidSystemList() +struct sNASGetCDMAAvoidSystemListResponse_AvoidedSystemList +{ + UINT8 mAvoidedSystemCount; + + struct sAvoidedSystem + { + UINT16 mSystemID; + UINT16 mNetworkID; + UINT16 mMobileCountryCode; + UINT16 mMobileNetworkCode; + }; + + // This array must be the size specified by mAvoidedSystemCount + // sAvoidedSystem mAvoidedSystems[1]; +}; + +// Structure to describe request TLV 0x01 for NASSetHPLMNSearchTimer() +struct sNASSetHPLMNSearchTimerRequest_HPLMNSearchTimer +{ + UINT32 mHPLMNSearchTimerInMinutes; +}; + +// Structure to describe response TLV 0x10 for NASGetHPLMNSearchTimer() +struct sNASGetHPLMNSearchTimerResponse_HPLMNSearchTimer +{ + UINT32 mHPLMNSearchTimerInMinutes; +}; + +// Structure to describe request TLV 0x01 for NASSetE911State() +struct sNASSetE911StateRequest_E911State +{ + eQMINASE911States mE911State; +}; + +// Structure to describe response TLV 0x10 for NASGetSubscriptionInfo() +struct sNASGetSubscriptionInfoResponse_PriorityInfo +{ + INT8 mIsPrioritySubscription; +}; + +// Structure to describe response TLV 0x11 for NASGetSubscriptionInfo() +struct sNASGetSubscriptionInfoResponse_ActiveInfo +{ + INT8 mIsSubscriptionActive; +}; + +// Structure to describe response TLV 0x12 for NASGetSubscriptionInfo() +struct sNASGetSubscriptionInfoResponse_DefaultDataInfo +{ + INT8 mIsDefaultDataSubscription; +}; + +// Structure to describe response TLV 0x13 for NASGetSubscriptionInfo() +struct sNASGetSubscriptionInfoResponse_VoiceSystemID +{ + UINT32 mVoiceSystemID; +}; + +// Structure to describe response TLV 0x10 for NASGetNetworkTime() +struct sNASGetNetworkTimeResponse_3GPP2Time +{ + UINT16 mYear; + UINT8 mMonth; + UINT8 mDay; + UINT8 mHour; + UINT8 mMinute; + UINT8 mSecond; + eQMINASDayOfWeek mDayOfWeek; + INT8 mTimeZoneOffset; + eQMINASDaylightSavingsAdjustment mDaylightSavingsAdjustment; + eQMINASRadioInterfaces mRadioInterface; +}; + +// Structure to describe response TLV 0x11 for NASGetNetworkTime() +struct sNASGetNetworkTimeResponse_3GPPTime +{ + UINT16 mYear; + UINT8 mMonth; + UINT8 mDay; + UINT8 mHour; + UINT8 mMinute; + UINT8 mSecond; + eQMINASDayOfWeek mDayOfWeek; + INT8 mTimeZoneOffset; + eQMINASDaylightSavingsAdjustment mDaylightSavingsAdjustment; + eQMINASRadioInterfaces mRadioInterface; +}; + +// Structure to describe response TLV 0x10 for NASGetLTESIB16NetworkTime() +struct sNASGetLTESIB16NetworkTimeResponse_LTESIB16Status +{ + eQMINASTriStatus mLTESIB16Acquired; +}; + +// Structure to describe response TLV 0x11 for NASGetLTESIB16NetworkTime() +struct sNASGetLTESIB16NetworkTimeResponse_UniversalTime +{ + UINT16 mYear; + UINT8 mMonth; + UINT8 mDay; + UINT8 mHour; + UINT8 mMinute; + UINT8 mSecond; + eQMINASDayOfWeek mDayOfWeek; +}; + +// Structure to describe response TLV 0x12 for NASGetLTESIB16NetworkTime() +struct sNASGetLTESIB16NetworkTimeResponse_AbsoluteTime +{ + UINT64 mAbsoluteTime; +}; + +// Structure to describe response TLV 0x13 for NASGetLTESIB16NetworkTime() +struct sNASGetLTESIB16NetworkTimeResponse_LeapSecond +{ + INT8 mLeapSeconds; +}; + +// Structure to describe response TLV 0x14 for NASGetLTESIB16NetworkTime() +struct sNASGetLTESIB16NetworkTimeResponse_TimeZone +{ + INT8 mTimeZoneOffset; +}; + +// Structure to describe response TLV 0x15 for NASGetLTESIB16NetworkTime() +struct sNASGetLTESIB16NetworkTimeResponse_DaylightSavings +{ + eQMINASDaylightSavingsAdjustment mDaylightSavingsAdjustment; +}; + +// Structure to describe indication TLV 0x10 for NAS LTESIB16NetworkTimeIndication +struct sNASLTESIB16NetworkTimeIndication_LTESIB16Status +{ + eQMINASTriStatus mLTESIB16Acquired; +}; + +// Structure to describe indication TLV 0x11 for NAS LTESIB16NetworkTimeIndication +struct sNASLTESIB16NetworkTimeIndication_UniversalTime +{ + UINT16 mYear; + UINT8 mMonth; + UINT8 mDay; + UINT8 mHour; + UINT8 mMinute; + UINT8 mSecond; + eQMINASDayOfWeek mDayOfWeek; +}; + +// Structure to describe indication TLV 0x12 for NAS LTESIB16NetworkTimeIndication +struct sNASLTESIB16NetworkTimeIndication_AbsoluteTime +{ + UINT64 mAbsoluteTime; +}; + +// Structure to describe indication TLV 0x13 for NAS LTESIB16NetworkTimeIndication +struct sNASLTESIB16NetworkTimeIndication_LeapSecond +{ + INT8 mLeapSeconds; +}; + +// Structure to describe indication TLV 0x14 for NAS LTESIB16NetworkTimeIndication +struct sNASLTESIB16NetworkTimeIndication_TimeZone +{ + INT8 mTimeZoneOffset; +}; + +// Structure to describe indication TLV 0x15 for NAS LTESIB16NetworkTimeIndication +struct sNASLTESIB16NetworkTimeIndication_DaylightSavings +{ + eQMINASDaylightSavingsAdjustment mDaylightSavingsAdjustment; +}; + +// Structure to describe request TLV 0x10 for WMSSetEventReport() +struct sWMSSetEventReportRequest_NewMTMessageIndicator +{ + INT8 mReportNewMTMessages; +}; + +// Structure to describe request TLV 0x11 for WMSSetEventReport() +struct sWMSSetEventReportRequest_MOSMSCallControlInfo +{ + INT8 mReportMOSMSCallControl; +}; + +// Structure to describe request TLV 0x12 for WMSSetEventReport() +struct sWMSSetEventReportRequest_MWIMessageIndicator +{ + INT8 mReportNewMWIMessages; +}; + +// Structure to describe indication TLV 0x10 for WMS EventReport +struct sWMSEventReportIndication_ReceivedMTMessage +{ + eQMIWMSStorageTypes mStorageType; + UINT32 mStorageIndex; +}; + +// Structure to describe indication TLV 0x11 for WMS EventReport +struct sWMSEventReportIndication_TransferRouteMTMessage +{ + INT8 mACKRequired; + UINT32 mTransactionID; + eQMIWMSMessageFormats mMessageFormat; + UINT16 mRawMessageLength; + + // This array must be the size specified by mRawMessageLength + // UINT8 mRawMessage[1]; +}; + +// Structure to describe indication TLV 0x12 for WMS EventReport +struct sWMSEventReportIndication_MessageMode +{ + eQMIWMSMessageProtocols mMode; +}; + +// Structure to describe indication TLV 0x13 for WMS EventReport +struct sWMSEventReportIndication_ReceivedETWSMessage +{ + eQMIWMSNotificationType mNotificationType; + UINT16 mRawMessageLength; + + // This array must be the size specified by mRawMessageLength + // UINT8 mRawMessage[1]; +}; + +// Structure to describe indication TLV 0x14 for WMS EventReport +struct sWMSEventReportIndication_ReceivedETWSPLMNInfo +{ + UINT16 mMobileCountryCode; + UINT16 mMobileNetworkCode; +}; + +// Structure to describe indication TLV 0x15 for WMS EventReport +struct sWMSEventReportIndication_ReceivedSMSCAddress +{ + UINT8 mSMSCAddressLength; + + // This array must be the size specified by mSMSCAddressLength + // char mSMSCAddress[1]; +}; + +// Structure to describe indication TLV 0x16 for WMS EventReport +struct sWMSEventReportIndication_SMSOnIMS +{ + INT8 mMessageReceivedFromIMS; +}; + +// Structure to describe indication TLV 0x17 for WMS EventReport +struct sWMSEventReportIndication_CallControlInfo +{ + eQMIWMSCallControlTypes mMOCallControlType; + UINT8 mAlphaIDLength; + + // This array must be the size specified by mAlphaIDLength + // UINT8 mAlphaID[1]; +}; + +// Structure to describe request TLV 0x01 for WMSRawSend() +struct sWMSRawSendRequest_MessageData +{ + eQMIWMSMessageFormats mMessageFormat; + UINT16 mRawMessageLength; + + // This array must be the size specified by mRawMessageLength + // UINT8 mRawMessage[1]; +}; + +// Structure to describe request TLV 0x10 for WMSRawSend() +struct sWMSRawSendRequest_ForceOnDC +{ + INT8 mForceSendOnDC; + eQMIWMSCDMAServiceOptions mServiceOption; +}; + +// Structure to describe request TLV 0x11 for WMSRawSend() +struct sWMSRawSendRequest_FollowOnDC +{ + INT8 mDoNotDisconnectDC; +}; + +// Structure to describe request TLV 0x12 for WMSRawSend() +struct sWMSRawSendRequest_LinkControl +{ + UINT8 mLinkTimerInSeconds; +}; + +// Structure to describe request TLV 0x13 for WMSRawSend() +struct sWMSRawSendRequest_SMSOnIMS +{ + INT8 mMessageToBeSentOnIMS; +}; + +// Structure to describe request TLV 0x14 for WMSRawSend() +struct sWMSRawSendRequest_RetryMessage +{ + INT8 mMessageIsARetry; +}; + +// Structure to describe request TLV 0x15 for WMSRawSend() +struct sWMSRawSendRequest_RetryMessageID +{ + UINT32 mMessageRetryID; +}; + +// Structure to describe request TLV 0x16 for WMSRawSend() +struct sWMSRawSendRequest_LinkControlEnabling +{ + INT8 mAlwaysEnableLinkControl; +}; + +// Structure to describe response TLV 0x01 for WMSRawSend() +struct sWMSRawSendResponse_MessageID +{ + UINT16 mMessageID; +}; + +// Structure to describe response TLV 0x10 for WMSRawSend() +struct sWMSRawSendResponse_CauseCode +{ + eQMIWMSCauseCodes mCauseCode; +}; + +// Structure to describe response TLV 0x11 for WMSRawSend() +struct sWMSRawSendResponse_ErrorClass +{ + eQMIWMSErrorClasses mErrorClass; +}; + +// Structure to describe response TLV 0x12 for WMSRawSend() +struct sWMSRawSendResponse_CauseInfo +{ + eQMIWMSRPCauseCodes mGSMWCDMARPCause; + eQMIWMSTPCauseCodes mGSMWCDMATPCause; +}; + +// Structure to describe response TLV 0x13 for WMSRawSend() +struct sWMSRawSendResponse_MessageDeliveryFailureType +{ + eQMIWMSMessageDeliveryFailureType mMessageDeliveryFailureType; +}; + +// Structure to describe response TLV 0x14 for WMSRawSend() +struct sWMSRawSendResponse_MessageDeliveryFailureCause +{ + eQMIWMSDeliveryFailures mDeliveryFailureCause; +}; + +// Structure to describe response TLV 0x15 for WMSRawSend() +struct sWMSRawSendResponse_CallControlModifiedInfo +{ + UINT8 mAlphaIDLength; + + // This array must be the size specified by mAlphaIDLength + // UINT8 mAlphaID[1]; +}; + +// Structure to describe request TLV 0x01 for WMSRawWrite() +struct sWMSRawWriteRequest_MessageData +{ + eQMIWMSStorageTypes mStorageType; + eQMIWMSMessageFormats mMessageFormat; + UINT16 mRawMessageLength; + + // This array must be the size specified by mRawMessageLength + // UINT8 mRawMessage[1]; +}; + +// Structure to describe request TLV 0x10 for WMSRawWrite() +struct sWMSRawWriteRequest_MessageTag +{ + eQMIWMSMessageTags mMessageTag; +}; + +// Structure to describe response TLV 0x01 for WMSRawWrite() +struct sWMSRawWriteResponse_MessageIndex +{ + UINT32 mStorageIndex; +}; + +// Structure to describe request TLV 0x01 for WMSRawRead() +struct sWMSRawReadRequest_MessageIndex +{ + eQMIWMSStorageTypes mStorageType; + UINT32 mStorageIndex; +}; + +// Structure to describe request TLV 0x10 for WMSRawRead() +struct sWMSRawReadRequest_MessageMode +{ + eQMIWMSMessageProtocols mMode; +}; + +// Structure to describe request TLV 0x11 for WMSRawRead() +struct sWMSRawReadRequest_SMSOnIMS +{ + INT8 mMessageToBeReadFromIMS; +}; + +// Structure to describe response TLV 0x01 for WMSRawRead() +struct sWMSRawReadResponse_MessageData +{ + eQMIWMSMessageTags mMessageTag; + eQMIWMSMessageFormats mMessageFormat; + UINT16 mRawMessageLength; + + // This array must be the size specified by mRawMessageLength + // UINT8 mRawMessage[1]; +}; + +// Structure to describe request TLV 0x01 for WMSModifyTag() +struct sWMSModifyTagRequest_MessageTag +{ + eQMIWMSStorageTypes mStorageType; + UINT32 mStorageIndex; + eQMIWMSMessageTags mMessageTag; +}; + +// Structure to describe request TLV 0x10 for WMSModifyTag() +struct sWMSModifyTagRequest_MessageMode +{ + eQMIWMSMessageProtocols mMode; +}; + +// Structure to describe request TLV 0x01 for WMSDelete() +struct sWMSDeleteRequest_MemoryStorage +{ + eQMIWMSStorageTypes mStorageType; +}; + +// Structure to describe request TLV 0x10 for WMSDelete() +struct sWMSDeleteRequest_MessageIndex +{ + UINT32 mStorageIndex; +}; + +// Structure to describe request TLV 0x11 for WMSDelete() +struct sWMSDeleteRequest_MessageTag +{ + eQMIWMSMessageTags mMessageTag; +}; + +// Structure to describe request TLV 0x12 for WMSDelete() +struct sWMSDeleteRequest_MessageMode +{ + eQMIWMSMessageProtocols mMode; +}; + +// Structure to describe response TLV 0x01 for WMSGetMessageProtocol() +struct sWMSGetMessageProtocolResponse_MessageProtocol +{ + eQMIWMSMessageProtocols mMode; +}; + +// Structure to describe request TLV 0x01 for WMSListMessages() +struct sWMSListMessagesRequest_MemoryStorage +{ + eQMIWMSStorageTypes mStorageType; +}; + +// Structure to describe request TLV 0x10 for WMSListMessages() +struct sWMSListMessagesRequest_MessageTag +{ + eQMIWMSMessageTags mMessageTag; +}; + +// Structure to describe request TLV 0x11 for WMSListMessages() +struct sWMSListMessagesRequest_MessageMode +{ + eQMIWMSMessageProtocols mMode; +}; + +// Structure to describe response TLV 0x01 for WMSListMessages() +struct sWMSListMessagesResponse_MessageList +{ + UINT32 mNumberOfMessages; + + struct sMessage + { + UINT32 mStorageIndex; + eQMIWMSMessageTags mMessageTag; + }; + + // This array must be the size specified by mNumberOfMessages + // sMessage mMessages[1]; +}; + +// Structure to describe request TLV 0x01 for WMSSetRoutes() +struct sWMSSetRoutesRequest_RouteList +{ + UINT16 mNumberOfRoutes; + + struct sRoute + { + eQMIWMSMessageTypes mMessageType; + eQMIWMSMessageClasses mMessageClass; + eQMIWMSStorageTypes mStorageType; + eQMIWMSReceiptActions mReceiptAction; + }; + + // This array must be the size specified by mNumberOfRoutes + // sRoute mRoutes[1]; +}; + +// Structure to describe request TLV 0x10 for WMSSetRoutes() +struct sWMSSetRoutesRequest_TransferStatusReport +{ + INT8 mTransferStatusReports; +}; + +// Structure to describe response TLV 0x01 for WMSGetRoutes() +struct sWMSGetRoutesResponse_RouteList +{ + UINT16 mNumberOfRoutes; + + struct sRoute + { + eQMIWMSMessageTypes mMessageType; + eQMIWMSMessageClasses mMessageClass; + eQMIWMSStorageTypes mStorageType; + eQMIWMSRouteValues mRouteValue; + }; + + // This array must be the size specified by mNumberOfRoutes + // sRoute mRoutes[1]; +}; + +// Structure to describe response TLV 0x10 for WMSGetRoutes() +struct sWMSGetRoutesResponse_TransferStatusReport +{ + INT8 mTransferStatusReports; +}; + +// Structure to describe response TLV 0x01 for WMSGetSMSCAddress() +struct sWMSGetSMSCAddressResponse_Address +{ + char mSMSCAddressType[3]; + UINT8 mSMSCAddressLength; + + // This array must be the size specified by mSMSCAddressLength + // char mSMSCAddress[1]; +}; + +// Structure to describe request TLV 0x01 for WMSSetSMSCAddress() +struct sWMSSetSMSCAddressRequest_Address +{ + // String is variable length, but must be size of the container + // char mSMSCAddress[1]; +}; + +// Structure to describe request TLV 0x10 for WMSSetSMSCAddress() +struct sWMSSetSMSCAddressRequest_AddressType +{ + // String is variable length, but must be size of the container + // char mSMSCAddressType[1]; +}; + +// Structure to describe request TLV 0x01 for WMSGetStorageMaxSize() +struct sWMSGetStorageMaxSizeRequest_MemoryStorage +{ + eQMIWMSStorageTypes mStorageType; +}; + +// Structure to describe request TLV 0x10 for WMSGetStorageMaxSize() +struct sWMSGetStorageMaxSizeRequest_MessageMode +{ + eQMIWMSMessageProtocols mMode; +}; + +// Structure to describe response TLV 0x01 for WMSGetStorageMaxSize() +struct sWMSGetStorageMaxSizeResponse_MaxSize +{ + UINT32 mMaxStorageSizeInMessages; +}; + +// Structure to describe response TLV 0x10 for WMSGetStorageMaxSize() +struct sWMSGetStorageMaxSizeResponse_AvailableSize +{ + UINT32 mFreeStorageSizeInMessages; +}; + +// Structure to describe request TLV 0x01 for WMSSendACK() +struct sWMSSendACKRequest_ACK +{ + UINT32 mTransactionID; + eQMIWMSMessageProtocols mMode; + INT8 mProcessedSuccessfully; +}; + +// Structure to describe request TLV 0x10 for WMSSendACK() +struct sWMSSendACKRequest_3GPP2FailureInfo +{ + eQMIWMSErrorClasses2 mErrorClass; + UINT8 mTransportLayerStatus; +}; + +// Structure to describe request TLV 0x11 for WMSSendACK() +struct sWMSSendACKRequest_3GPPFailureInfo +{ + // mGSMWCDMARPCause is of type eQMIWMSRPCauseCodes + UINT8 mGSMWCDMARPCause; + eQMIWMSTPCauseCodes mGSMWCDMATPCause; +}; + +// Structure to describe request TLV 0x12 for WMSSendACK() +struct sWMSSendACKRequest_SMSOnIMS +{ + INT8 mACKToBeSentOnIMS; +}; + +// Structure to describe response TLV 0x10 for WMSSendACK() +struct sWMSSendACKResponse_ACKFailureCause +{ + eQMIWMSACKFailureCause mACKFailureCause; +}; + +// Structure to describe request TLV 0x01 for WMSSetRetryPeriod() +struct sWMSSetRetryPeriodRequest_Period +{ + UINT32 mRetryPeriodInSeconds; +}; + +// Structure to describe request TLV 0x01 for WMSSetRetryInterval() +struct sWMSSetRetryIntervalRequest_Interval +{ + UINT32 mRetryIntervalInSeconds; +}; + +// Structure to describe request TLV 0x01 for WMSSetDCDisconnectTimer() +struct sWMSSetDCDisconnectTimerRequest_Timer +{ + UINT32 mDCDisconnectTimerInSeconds; +}; + +// Structure to describe request TLV 0x01 for WMSSetMemoryStatus() +struct sWMSSetMemoryStatusRequest_Status +{ + INT8 mMemoryIsAvailable; +}; + +// Structure to describe request TLV 0x01 for WMSSetBroadcastActivation() +struct sWMSSetBroadcastActivationRequest_BCInfo +{ + eQMIWMSMessageProtocols mMode; + INT8 mActivateBroadcast; +}; + +// Structure to describe request TLV 0x10 for WMSSetBroadcastActivation() +struct sWMSSetBroadcastActivationRequest_BCFiltering +{ + INT8 mNoBroadcastMessageFiltering; +}; + +// Structure to describe request TLV 0x01 for WMSSetBroadcastConfig() +struct sWMSSetBroadcastConfigRequest_Mode +{ + eQMIWMSMessageProtocols mMode; +}; + +// Structure to describe request TLV 0x10 for WMSSetBroadcastConfig() +struct sWMSSetBroadcastConfigRequest_3GPPInfo +{ + UINT16 mNumberOfInstances; + + struct sInstance + { + UINT16 mMessageIDStart; + UINT16 mMessageIDEnd; + INT8 mSelected; + }; + + // This array must be the size specified by mNumberOfInstances + // sInstance mInstances[1]; +}; + +// Structure to describe request TLV 0x11 for WMSSetBroadcastConfig() +struct sWMSSetBroadcastConfigRequest_3GPP2Info +{ + UINT16 mNumberOfInstances; + + struct sInstance + { + eQMIWMSServiceCategories mServiceCategory; + eQMIWMSLanguage mLanguage; + INT8 mSelected; + }; + + // This array must be the size specified by mNumberOfInstances + // sInstance mInstances[1]; +}; + +// Structure to describe request TLV 0x01 for WMSGetBroadcastConfig() +struct sWMSGetBroadcastConfigRequest_Mode +{ + eQMIWMSMessageProtocols mMode; +}; + +// Structure to describe response TLV 0x10 for WMSGetBroadcastConfig() +struct sWMSGetBroadcastConfigResponse_3GPPInfo +{ + INT8 mActivated; + UINT16 mNumberOfInstances; + + struct sInstance + { + UINT16 mMessageIDStart; + UINT16 mMessageIDEnd; + INT8 mSelected; + }; + + // This array must be the size specified by mNumberOfInstances + // sInstance mInstances[1]; +}; + +// Structure to describe response TLV 0x11 for WMSGetBroadcastConfig() +struct sWMSGetBroadcastConfigResponse_3GPP2Info +{ + INT8 mActivated; + UINT16 mNumberOfInstances; + + struct sInstance + { + eQMIWMSServiceCategories mServiceCategory; + eQMIWMSLanguage mLanguage; + INT8 mSelected; + }; + + // This array must be the size specified by mNumberOfInstances + // sInstance mInstances[1]; +}; + +// Structure to describe indication TLV 0x01 for WMS MemoryFullIndication +struct sWMSMemoryFullIndication_Info +{ + eQMIWMSStorageTypes mStorageType; + eQMIWMSMessageProtocols mMode; +}; + +// Structure to describe response TLV 0x01 for WMSGetDomainPreference() +struct sWMSGetDomainPreferenceResponse_Pref +{ + eQMIWMSGSMWCDMADomains mDomainPreference; +}; + +// Structure to describe request TLV 0x01 for WMSSetDomainPreference() +struct sWMSSetDomainPreferenceRequest_Pref +{ + eQMIWMSGSMWCDMADomains mDomainPreference; +}; + +// Structure to describe request TLV 0x01 for WMSSendFromMemoryStore() +struct sWMSSendFromMemoryStoreRequest_Info +{ + eQMIWMSStorageTypes mStorageType; + UINT32 mStorageIndex; + eQMIWMSMessageProtocols mMode; +}; + +// Structure to describe request TLV 0x10 for WMSSendFromMemoryStore() +struct sWMSSendFromMemoryStoreRequest_SMSOnIMS +{ + INT8 mMessageToBeSentOnIMS; +}; + +// Structure to describe response TLV 0x10 for WMSSendFromMemoryStore() +struct sWMSSendFromMemoryStoreResponse_MessageID +{ + UINT16 mMessageID; +}; + +// Structure to describe response TLV 0x11 for WMSSendFromMemoryStore() +struct sWMSSendFromMemoryStoreResponse_CauseCode +{ + eQMIWMSCauseCodes mCauseCode; +}; + +// Structure to describe response TLV 0x12 for WMSSendFromMemoryStore() +struct sWMSSendFromMemoryStoreResponse_ErrorClass +{ + eQMIWMSErrorClasses mErrorClass; +}; + +// Structure to describe response TLV 0x13 for WMSSendFromMemoryStore() +struct sWMSSendFromMemoryStoreResponse_CauseInfo +{ + eQMIWMSRPCauseCodes mGSMWCDMARPCause; + eQMIWMSTPCauseCodes mGSMWCDMATPCause; +}; + +// Structure to describe response TLV 0x14 for WMSSendFromMemoryStore() +struct sWMSSendFromMemoryStoreResponse_MessageDeliveryFailureType +{ + eQMIWMSMessageDeliveryFailureType mMessageDeliveryFailureType; +}; + +// Structure to describe response TLV 0x01 for WMSGetWaitingMessage() +struct sWMSGetWaitingMessageResponse_WaitingMessageInfo +{ + UINT8 mNumberOfWaitingMessages; + eQMIWMSWaitingMessageType mWaitingMessageType; + INT8 mActiveIndication; + UINT8 mMessageCount; +}; + +// Structure to describe indication TLV 0x01 for WMS WaitingMessageIndication +struct sWMSWaitingMessageIndication_WaitingMessageInfo +{ + UINT8 mNumberOfWaitingMessages; + eQMIWMSWaitingMessageType mWaitingMessageType; + INT8 mActiveIndication; + UINT8 mMessageCount; +}; + +// Structure to describe request TLV 0x01 for WMSSetPrimaryClient() +struct sWMSSetPrimaryClientRequest_PrimaryClientInfo +{ + INT8 mPrimaryClient; +}; + +// Structure to describe indication TLV 0x01 for WMS SMSCAddressIndication +struct sWMSSMSCAddressIndication_Address +{ + char mSMSCAddressType[3]; + UINT8 mSMSCAddressLength; + + // This array must be the size specified by mSMSCAddressLength + // char mSMSCAddress[1]; +}; + +// Structure to describe request TLV 0x10 for WMSIndicatorRegistration() +struct sWMSIndicatorRegistrationRequest_TransportLayerInfoEvents +{ + INT8 mTransportLayerInfoEvents; +}; + +// Structure to describe request TLV 0x11 for WMSIndicatorRegistration() +struct sWMSIndicatorRegistrationRequest_NetworkRegistrationInfoEvents +{ + INT8 mNetworkRegistrationInfoEvents; +}; + +// Structure to describe request TLV 0x12 for WMSIndicatorRegistration() +struct sWMSIndicatorRegistrationRequest_CallStatusInfoEvents +{ + INT8 mCallStatusInfoEvents; +}; + +// Structure to describe request TLV 0x13 for WMSIndicatorRegistration() +struct sWMSIndicatorRegistrationRequest_ServiceReadyEvents +{ + INT8 mServiceReadyEvents; +}; + +// Structure to describe request TLV 0x14 for WMSIndicatorRegistration() +struct sWMSIndicatorRegistrationRequest_BroadcastConfigEvents +{ + INT8 mBroadcastConfigEvents; +}; + +// Structure to describe response TLV 0x10 for WMSGetTransportInfoLayer() +struct sWMSGetTransportInfoLayerResponse_TransportLayerRegistrationInfo +{ + INT8 mRegistered; +}; + +// Structure to describe response TLV 0x11 for WMSGetTransportLayerInfo() +struct sWMSGetTransportLayerInfoResponse_TransportLayerInfo +{ + eQMIWMSTransportType mTransportType; + eQMIWMSTransportCapability mTransportCapability; +}; + +// Structure to describe indication TLV 0x01 for WMS TransportLayerInfoIndication +struct sWMSTransportLayerInfoIndication_TransportLayerRegInfo +{ + INT8 mRegistered; +}; + +// Structure to describe indication TLV 0x10 for WMS TransportLayerInfoIndication +struct sWMSTransportLayerInfoIndication_TransportLayerInfo +{ + eQMIWMSTransportType mTransportType; + eQMIWMSTransportCapability mTransportCapability; +}; + +// Structure to describe response TLV 0x10 for WMSGetNetworkRegistrationInfo() +struct sWMSGetNetworkRegistrationInfoResponse_NetworkRegistrationInfo +{ + eQMIWMSNetworkRegistrationStatus mNetworkRegistrationStatus; +}; + +// Structure to describe indication TLV 0x01 for WMS NetworkRegistrationInfoIndication +struct sWMSNetworkRegistrationInfoIndication_NetworkRegistrationInfo +{ + eQMIWMSNetworkRegistrationStatus mNetworkRegistrationStatus; +}; + +// Structure to describe request TLV 0x01 for WMSBindSubscription() +struct sWMSBindSubscriptionRequest_SubscriptionType +{ + eQMIWMSSubscriptionType mSubscriptionType; +}; + +// Structure to describe response TLV 0x10 for WMSGetIndicatorRegistration() +struct sWMSGetIndicatorRegistrationResponse_TransportLayerInfoEvents +{ + INT8 mTransportLayerInfoEvents; +}; + +// Structure to describe response TLV 0x11 for WMSGetIndicatorRegistration() +struct sWMSGetIndicatorRegistrationResponse_NetworkRegistrationInfoEvents +{ + INT8 mNetworkRegistrationInfoEvents; +}; + +// Structure to describe response TLV 0x12 for WMSGetIndicatorRegistration() +struct sWMSGetIndicatorRegistrationResponse_CallStatusInfoEvents +{ + INT8 mCallStatusInfoEvents; +}; + +// Structure to describe response TLV 0x13 for WMSGetIndicatorRegistration() +struct sWMSGetIndicatorRegistrationResponse_ServiceReadyEvents +{ + INT8 mServiceReadyEvents; +}; + +// Structure to describe response TLV 0x14 for WMSGetIndicatorRegistration() +struct sWMSGetIndicatorRegistrationResponse_BroadcastConfigEvents +{ + INT8 mBroadcastConfigEvents; +}; + +// Structure to describe request TLV 0x01 for WMSGetSMSParameters() +struct sWMSGetSMSParametersRequest_MessageMode +{ + eQMIWMSSMSMessageMode mSMSMessageMode; +}; + +// Structure to describe response TLV 0x10 for WMSGetSMSParameters() +struct sWMSGetSMSParametersResponse_DestinationAddress +{ + UINT8 mDestinationAddressLength; + + // This array must be the size specified by mDestinationAddressLength + // UINT8 mDestinationAddress[1]; +}; + +// Structure to describe response TLV 0x11 for WMSGetSMSParameters() +struct sWMSGetSMSParametersResponse_ProtocolIdentifierData +{ + eQMIWMSProtocolIdentifierData mProtocolIdentifierData; +}; + +// Structure to describe response TLV 0x12 for WMSGetSMSParameters() +struct sWMSGetSMSParametersResponse_DataCodingScheme +{ + UINT8 mDataCodingScheme; +}; + +// Structure to describe response TLV 0x13 for WMSGetSMSParameters() +struct sWMSGetSMSParametersResponse_ValidityPeriod +{ + UINT8 mValidityPeriod; +}; + +// Structure to describe request TLV 0x01 for WMSSetSMSParameters() +struct sWMSSetSMSParametersRequest_MessageMode +{ + eQMIWMSSMSMessageMode mSMSMessageMode; +}; + +// Structure to describe request TLV 0x10 for WMSSetSMSParameters() +struct sWMSSetSMSParametersRequest_DestinationAddress +{ + UINT8 mDestinationAddressLength; + + // This array must be the size specified by mDestinationAddressLength + // UINT8 mDestinationAddress[1]; +}; + +// Structure to describe request TLV 0x11 for WMSSetSMSParameters() +struct sWMSSetSMSParametersRequest_ProtocolIdentifierData +{ + eQMIWMSProtocolIdentifierData mProtocolIdentifierData; +}; + +// Structure to describe request TLV 0x12 for WMSSetSMSParameters() +struct sWMSSetSMSParametersRequest_DataCodingScheme +{ + UINT8 mDataCodingScheme; +}; + +// Structure to describe request TLV 0x13 for WMSSetSMSParameters() +struct sWMSSetSMSParametersRequest_ValidityPeriod +{ + UINT8 mValidityPeriod; +}; + +// Structure to describe indication TLV 0x01 for WMS CallStatusIndication +struct sWMSCallStatusIndication_SMSCallStatusInfo +{ + eQMIWMSSMSCallStatus mSMSCallStatus; +}; + +// Structure to describe response TLV 0x10 for WMSGetDomainPreferenceConfig() +struct sWMSGetDomainPreferenceConfigResponse_LTEDomain +{ + eQMIWMSLTEDomains mLTEDomainPreference; +}; + +// Structure to describe response TLV 0x11 for WMSGetDomainPreferenceConfig() +struct sWMSGetDomainPreferenceConfigResponse_GWDomain +{ + eQMIWMSGSMWCDMADomains mDomainPreference; +}; + +// Structure to describe response TLV 0x10 for WMSSetDomainPreferenceConfig() +struct sWMSSetDomainPreferenceConfigResponse_LTEDomain +{ + eQMIWMSLTEDomains mLTEDomainPreference; +}; + +// Structure to describe response TLV 0x11 for WMSSetDomainPreferenceConfig() +struct sWMSSetDomainPreferenceConfigResponse_GWDomain +{ + eQMIWMSGSMWCDMADomains mDomainPreference; +}; + +// Structure to describe response TLV 0x10 for WMSSetDomainPreferenceConfig() +struct sWMSSetDomainPreferenceConfigResponse_LTEOutcome +{ + UINT16 mLTEDomainPreferenceOutcome; +}; + +// Structure to describe response TLV 0x11 for WMSSetDomainPreferenceConfig() +struct sWMSSetDomainPreferenceConfigResponse_GWOutcome +{ + UINT16 mGWDomainPreferenceOutcome; +}; + +// Structure to describe response TLV 0x10 for WMSGetRetryPeriod() +struct sWMSGetRetryPeriodResponse_RetryPeriod +{ + UINT32 mRetryPeriodInSeconds; +}; + +// Structure to describe response TLV 0x10 for WMSGetRetryInterval() +struct sWMSGetRetryIntervalResponse_RetryInterval +{ + UINT32 mRetryIntervalInSeconds; +}; + +// Structure to describe response TLV 0x10 for WMSGetDCDisconnectTimer() +struct sWMSGetDCDisconnectTimerResponse_DCDisconnectTimer +{ + UINT32 mDCDisconnectTimerInSeconds; +}; + +// Structure to describe response TLV 0x10 for WMSGetMemoryStatus() +struct sWMSGetMemoryStatusResponse_MemoryStatus +{ + INT8 mMemoryIsAvailable; +}; + +// Structure to describe response TLV 0x10 for WMSGetPrimaryClient() +struct sWMSGetPrimaryClientResponse_PrimaryClientInfo +{ + INT8 mPrimaryClient; +}; + +// Structure to describe response TLV 0x10 for WMSGetSubscriptionBinding() +struct sWMSGetSubscriptionBindingResponse_SubscriptionType +{ + eQMIWMSSubscriptionType mSubscriptionType; +}; + +// Structure to describe request TLV 0x01 for WMSAsyncRawSend() +struct sWMSAsyncRawSendRequest_MessageData +{ + eQMIWMSMessageFormats mMessageFormat; + UINT16 mRawMessageLength; + + // This array must be the size specified by mRawMessageLength + // UINT8 mRawMessage[1]; +}; + +// Structure to describe request TLV 0x10 for WMSAsyncRawSend() +struct sWMSAsyncRawSendRequest_ForceOnDC +{ + INT8 mForceSendOnDC; + eQMIWMSCDMAServiceOptions mServiceOption; +}; + +// Structure to describe request TLV 0x11 for WMSAsyncRawSend() +struct sWMSAsyncRawSendRequest_FollowOnDC +{ + INT8 mDoNotDisconnectDC; +}; + +// Structure to describe request TLV 0x12 for WMSAsyncRawSend() +struct sWMSAsyncRawSendRequest_LinkControl +{ + UINT8 mLinkTimerInSeconds; +}; + +// Structure to describe request TLV 0x13 for WMSAsyncRawSend() +struct sWMSAsyncRawSendRequest_SMSOnIMS +{ + INT8 mMessageToBeSentOnIMS; +}; + +// Structure to describe request TLV 0x14 for WMSAsyncRawSend() +struct sWMSAsyncRawSendRequest_RetryMessage +{ + INT8 mMessageIsARetry; +}; + +// Structure to describe request TLV 0x15 for WMSAsyncRawSend() +struct sWMSAsyncRawSendRequest_RetryMessageID +{ + UINT32 mMessageRetryID; +}; + +// Structure to describe request TLV 0x16 for WMSAsyncRawSend() +struct sWMSAsyncRawSendRequest_UserData +{ + UINT32 mUserData; +}; + +// Structure to describe request TLV 0x17 for WMSAsyncRawSend() +struct sWMSAsyncRawSendRequest_LinkControlEnabling +{ + INT8 mAlwaysEnableLinkControl; +}; + +// Structure to describe indication TLV 0x01 for WMS AsyncRawSendIndication +struct sWMSAsyncRawSendIndication_Status +{ + eQMIErrors mQMIError; +}; + +// Structure to describe indication TLV 0x10 for WMS AsyncRawSendIndication +struct sWMSAsyncRawSendIndication_MessageID +{ + UINT16 mMessageID; +}; + +// Structure to describe indication TLV 0x11 for WMS AsyncRawSendIndication +struct sWMSAsyncRawSendIndication_CauseCode +{ + eQMIWMSCauseCodes mCauseCode; +}; + +// Structure to describe indication TLV 0x12 for WMS AsyncRawSendIndication +struct sWMSAsyncRawSendIndication_ErrorClass +{ + eQMIWMSErrorClasses mErrorClass; +}; + +// Structure to describe indication TLV 0x13 for WMS AsyncRawSendIndication +struct sWMSAsyncRawSendIndication_CauseInfo +{ + eQMIWMSRPCauseCodes mGSMWCDMARPCause; + eQMIWMSTPCauseCodes mGSMWCDMATPCause; +}; + +// Structure to describe indication TLV 0x14 for WMS AsyncRawSendIndication +struct sWMSAsyncRawSendIndication_MessageDeliveryFailureType +{ + eQMIWMSMessageDeliveryFailureType mMessageDeliveryFailureType; +}; + +// Structure to describe indication TLV 0x15 for WMS AsyncRawSendIndication +struct sWMSAsyncRawSendIndication_MessageDeliveryFailureCause +{ + eQMIWMSDeliveryFailures mDeliveryFailureCause; +}; + +// Structure to describe indication TLV 0x16 for WMS AsyncRawSendIndication +struct sWMSAsyncRawSendIndication_CallControlModifiedInfo +{ + UINT8 mAlphaIDLength; + + // This array must be the size specified by mAlphaIDLength + // UINT8 mAlphaID[1]; +}; + +// Structure to describe indication TLV 0x17 for WMS AsyncRawSendIndication +struct sWMSAsyncRawSendIndication_UserData +{ + UINT32 mUserData; +}; + +// Structure to describe request TLV 0x01 for WMSAsyncSendACK() +struct sWMSAsyncSendACKRequest_ACK +{ + UINT32 mTransactionID; + eQMIWMSMessageProtocols mMode; + INT8 mProcessedSuccessfully; +}; + +// Structure to describe request TLV 0x10 for WMSAysncSendACK() +struct sWMSAysncSendACKRequest_3GPP2FailureInfo +{ + eQMIWMSErrorClasses2 mErrorClass; + UINT8 mTransportLayerStatus; +}; + +// Structure to describe request TLV 0x11 for WMSAsyncSendACK() +struct sWMSAsyncSendACKRequest_3GPPFailureInfo +{ + // mGSMWCDMARPCause is of type eQMIWMSRPCauseCodes + UINT8 mGSMWCDMARPCause; + eQMIWMSTPCauseCodes mGSMWCDMATPCause; +}; + +// Structure to describe request TLV 0x12 for WMSAsyncSendACK() +struct sWMSAsyncSendACKRequest_SMSOnIMS +{ + INT8 mACKToBeSentOnIMS; +}; + +// Structure to describe request TLV 0x13 for WMSAsyncSendACK() +struct sWMSAsyncSendACKRequest_UserData +{ + UINT32 mUserData; +}; + +// Structure to describe indication TLV 0x01 for WMS AsyncSendACKIndication +struct sWMSAsyncSendACKIndication_Status +{ + eQMIErrors mQMIError; +}; + +// Structure to describe indication TLV 0x10 for WMS AsyncSendACKIndication +struct sWMSAsyncSendACKIndication_ACKFailureCause +{ + eQMIWMSACKFailureCause mACKFailureCause; +}; + +// Structure to describe indication TLV 0x11 for WMS AsyncSendACKIndication +struct sWMSAsyncSendACKIndication_UserData +{ + UINT32 mUserData; +}; + +// Structure to describe request TLV 0x01 for WMSAsyncSendFromMemoryStore() +struct sWMSAsyncSendFromMemoryStoreRequest_Info +{ + eQMIWMSStorageTypes mStorageType; + UINT32 mStorageIndex; + eQMIWMSMessageProtocols mMode; +}; + +// Structure to describe request TLV 0x10 for WMSAsyncSendFromMemoryStore() +struct sWMSAsyncSendFromMemoryStoreRequest_SMSOnIMS +{ + INT8 mMessageToBeSentOnIMS; +}; + +// Structure to describe request TLV 0x11 for WMSAsyncSendFromMemoryStore() +struct sWMSAsyncSendFromMemoryStoreRequest_UserData +{ + UINT32 mUserData; +}; + +// Structure to describe indication TLV 0x01 for WMS AsyncSendFromMemoryStoreIndication +struct sWMSAsyncSendFromMemoryStoreIndication_Status +{ + eQMIErrors mQMIError; +}; + +// Structure to describe indication TLV 0x10 for WMS AsyncSendFromMemoryStoreIndication +struct sWMSAsyncSendFromMemoryStoreIndication_MessageID +{ + UINT16 mMessageID; +}; + +// Structure to describe indication TLV 0x11 for WMS AsyncSendFromMemoryStoreIndication +struct sWMSAsyncSendFromMemoryStoreIndication_CauseCode +{ + eQMIWMSCauseCodes mCauseCode; +}; + +// Structure to describe indication TLV 0x12 for WMS AsyncSendFromMemoryStoreIndication +struct sWMSAsyncSendFromMemoryStoreIndication_ErrorClass +{ + eQMIWMSErrorClasses mErrorClass; +}; + +// Structure to describe indication TLV 0x13 for WMS AsyncSendFromMemoryStoreIndication +struct sWMSAsyncSendFromMemoryStoreIndication_CauseInfo +{ + eQMIWMSRPCauseCodes mGSMWCDMARPCause; + eQMIWMSTPCauseCodes mGSMWCDMATPCause; +}; + +// Structure to describe indication TLV 0x14 for WMS AsyncSendFromMemoryStoreIndication +struct sWMSAsyncSendFromMemoryStoreIndication_MessageDeliveryFailureType +{ + eQMIWMSMessageDeliveryFailureType mMessageDeliveryFailureType; +}; + +// Structure to describe indication TLV 0x15 for WMS AsyncSendFromMemoryStoreIndication +struct sWMSAsyncSendFromMemoryStoreIndication_MessageDeliveryFailureCause +{ + eQMIWMSDeliveryFailures mDeliveryFailureCause; +}; + +// Structure to describe indication TLV 0x16 for WMS AsyncSendFromMemoryStoreIndication +struct sWMSAsyncSendFromMemoryStoreIndication_CallControlModifiedInfo +{ + UINT8 mAlphaIDLength; + + // This array must be the size specified by mAlphaIDLength + // UINT8 mAlphaID[1]; +}; + +// Structure to describe indication TLV 0x17 for WMS AsyncSendFromMemoryStoreIndication +struct sWMSAsyncSendFromMemoryStoreIndication_UserData +{ + UINT32 mUserData; +}; + +// Structure to describe response TLV 0x10 for WMSGetServiceReadyStatus() +struct sWMSGetServiceReadyStatusResponse_ServiceReadyEvents +{ + INT8 mServiceReadyEvents; +}; + +// Structure to describe response TLV 0x11 for WMSGetServiceReadyStatus() +struct sWMSGetServiceReadyStatusResponse_ServiceReadyStatus +{ + eQMIWMSServiceReadyStatus mReadyStatus; +}; + +// Structure to describe indication TLV 0x01 for WMS ServiceReadyStatusIndication +struct sWMSServiceReadyStatusIndication_ServiceReadyStatus +{ + eQMIWMSServiceReadyStatus mReadyStatus; +}; + +// Structure to describe indication TLV 0x01 for WMS BroadcastConfigIndication +struct sWMSBroadcastConfigIndication_Mode +{ + eQMIWMSMessageProtocols mMode; +}; + +// Structure to describe indication TLV 0x10 for WMS BroadcastConfigIndication +struct sWMSBroadcastConfigIndication_3GPPInfo +{ + INT8 mActivated; + UINT16 mNumberOfInstances; + + struct sInstance + { + UINT16 mMessageIDStart; + UINT16 mMessageIDEnd; + INT8 mSelected; + }; + + // This array must be the size specified by mNumberOfInstances + // sInstance mInstances[1]; +}; + +// Structure to describe indication TLV 0x11 for WMS BroadcastConfigIndication +struct sWMSBroadcastConfigIndication_3GPP2Info +{ + INT8 mActivated; + UINT16 mNumberOfInstances; + + struct sInstance + { + eQMIWMSServiceCategories mServiceCategory; + eQMIWMSLanguage mLanguage; + INT8 mSelected; + }; + + // This array must be the size specified by mNumberOfInstances + // sInstance mInstances[1]; +}; + +// Structure to describe request TLV 0x01 for WMSSetWaitingMessage() +struct sWMSSetWaitingMessageRequest_WaitingMessageInfo +{ + UINT8 mNumberOfWaitingMessages; + eQMIWMSWaitingMessageType mWaitingMessageType; + INT8 mActiveIndication; + UINT8 mMessageCount; +}; + +// Structure to describe request TLV 0x10 for PDSSetEventReport() +struct sPDSSetEventReportRequest_NMEAIndicator +{ + INT8 mReportNMEASentences; +}; + +// Structure to describe request TLV 0x11 for PDSSetEventReport() +struct sPDSSetEventReportRequest_ModeIndicator +{ + INT8 mReportNMEASentencesPlusMode; +}; + +// Structure to describe request TLV 0x12 for PDSSetEventReport() +struct sPDSSetEventReportRequest_RawIndicator +{ + INT8 mReportRawPositionData; +}; + +// Structure to describe request TLV 0x13 for PDSSetEventReport() +struct sPDSSetEventReportRequest_XTRARequestIndicator +{ + INT8 mReportExternalXTRADataRequests; +}; + +// Structure to describe request TLV 0x14 for PDSSetEventReport() +struct sPDSSetEventReportRequest_TimeInjectionIndicator +{ + INT8 mReportExternalTimeInjections; +}; + +// Structure to describe request TLV 0x15 for PDSSetEventReport() +struct sPDSSetEventReportRequest_WiFiIndicator +{ + INT8 mReportExternalWiFiRequests; +}; + +// Structure to describe request TLV 0x16 for PDSSetEventReport() +struct sPDSSetEventReportRequest_SatelliteIndicator +{ + INT8 mReportSatelliteInfo; +}; + +// Structure to describe request TLV 0x17 for PDSSetEventReport() +struct sPDSSetEventReportRequest_VXNetworkIndicator +{ + INT8 mReportVXNetworkInitiatedPrompts; +}; + +// Structure to describe request TLV 0x18 for PDSSetEventReport() +struct sPDSSetEventReportRequest_SUPLNetworkIndicator +{ + INT8 mReportSUPLNetworkInitiatedPrompts; +}; + +// Structure to describe request TLV 0x19 for PDSSetEventReport() +struct sPDSSetEventReportRequest_UMTSCPNetworkIndicator +{ + INT8 mReportUMTSCPNetworkInitiatedPrompts; +}; + +// Structure to describe request TLV 0x1A for PDSSetEventReport() +struct sPDSSetEventReportRequest_PDSCommIndicator +{ + INT8 mReportPDSCommEvents; +}; + +// Structure to describe request TLV 0x1B for PDSSetEventReport() +struct sPDSSetEventReportRequest_AccelerometerDataIndicator +{ + INT8 mReportAccelerometerDataStatus; +}; + +// Structure to describe request TLV 0x1C for PDSSetEventReport() +struct sPDSSetEventReportRequest_GyroDataIndicator +{ + INT8 mReportGyroDataStatus; +}; + +// Structure to describe request TLV 0x1D for PDSSetEventReport() +struct sPDSSetEventReportRequest_TimeSyncIndication +{ + INT8 mReportTimeSyncRequest; +}; + +// Structure to describe request TLV 0x1E for PDSSetEventReport() +struct sPDSSetEventReportRequest_PositionReliablilityIndicator +{ + INT8 mReportPositionReliability; +}; + +// Structure to describe request TLV 0x1F for PDSSetEventReport() +struct sPDSSetEventReportRequest_SensorDataUsageIndicator +{ + INT8 mReportSensorDataUsage; +}; + +// Structure to describe request TLV 0x20 for PDSSetEventReport() +struct sPDSSetEventReportRequest_TimeSourceInformationIndicator +{ + INT8 mReportTimeSourceInformation; +}; + +// Structure to describe request TLV 0x21 for PDSSetEventReport() +struct sPDSSetEventReportRequest_HeadingUncertaintyIndicator +{ + INT8 mReportHeadingUncertaintyInformation; +}; + +// Structure to describe request TLV 0x22 for PDSSetEventReport() +struct sPDSSetEventReportRequest_NMEADebugStringIndicator +{ + INT8 mReportNMEADebugStrings; +}; + +// Structure to describe request TLV 0x23 for PDSSetEventReport() +struct sPDSSetEventReportRequest_ExternalXTRADataIndicator +{ + INT8 mReportExtendedXTRAData; +}; + +// Structure to describe request TLV 0x24 for PDSSetEventReport() +struct sPDSSetEventReportRequest_ServiceResetStatus +{ + INT8 mReportServiceResetStatus; +}; + +// Structure to describe request TLV 0x25 for PDSSetEventReport() +struct sPDSSetEventReportRequest_VehicleAccelerometerIndicator +{ + INT8 mReportVehicleAccelerometerReady; +}; + +// Structure to describe request TLV 0x26 for PDSSetEventReport() +struct sPDSSetEventReportRequest_VehicleAngularRateIndicator +{ + INT8 mReportVehicleAngularRateReady; +}; + +// Structure to describe request TLV 0x27 for PDSSetEventReport() +struct sPDSSetEventReportRequest_VehicleOdometryIndicator +{ + INT8 mReportVehicleOdometryReady; +}; + +// Structure to describe request TLV 0x28 for PDSSetEventReport() +struct sPDSSetEventReportRequest_SensorBiasEstimateIndicator +{ + INT8 mReportSensorBiasEstimate; +}; + +// Structure to describe request TLV 0x29 for PDSSetEventReport() +struct sPDSSetEventReportRequest_IS801CPNIRejectReasonIndicator +{ + INT8 mReportIS801CPNIRejectReason; +}; + +// Structure to describe request TLV 0x2A for PDSSetEventReport() +struct sPDSSetEventReportRequest_SUPLSessionEndStatusIndicator +{ + INT8 mReportSUPLSessionEndStatus; +}; + +// Structure to describe request TLV 0x2B for PDSSetEventReport() +struct sPDSSetEventReportRequest_EmergencyPositionSessionEventIndicator +{ + INT8 mReportEmergencyPositionSessionEvent; +}; + +// Structure to describe indication TLV 0x10 for PDS EventReport +struct sPDSEventReportIndication_NMEASentence +{ + // String is variable length, but must be size of the container + // char mNMEASentence[1]; +}; + +// Structure to describe indication TLV 0x11 for PDS EventReport +struct sPDSEventReportIndication_NMEASentencePlusMode +{ + eQMIPDSNMEASentenceOperatingModes mNMEASentenceOperatingMode; + UINT16 mNMEASentenceLength; + + // This array must be the size specified by mNMEASentenceLength + // char mNMEASentence[1]; +}; + +// Structure to describe indication TLV 0x12 for PDS EventReport +struct sPDSEventReportIndication_PositionSessionStatus +{ + eQMIPDSSessionStatus mSessionStatus; +}; + +// Structure to describe indication TLV 0x13 for PDS EventReport +struct sPDSEventReportIndication_ParsedPositionData +{ + bool mTimestampCalendarValid:1; + bool mTimestampUTCValid:1; + bool mLeapSecondsValid:1; + bool mTimeUncertaintyValid:1; + bool mLatitudeValid:1; + bool mLongitudeValid:1; + bool mEllipsoidAltitudeValid:1; + bool mMeanSeaLevelAltitudeValid:1; + bool mHorizontalSpeedValid:1; + bool mVerticalSpeedValid:1; + bool mHeadingValid:1; + bool mHorizontalUncertaintyCircularValid:1; + bool mHorizontalUncertaintyEllipseSemiMajorValid:1; + bool mHorizontalUncertaintyEllipseSemiMinorValid:1; + bool mHorizontalUncertaintyEllipseOrientAzimuthValid:1; + bool mVerticalUncertaintyValid:1; + bool mHorizontalVelocityUncertaintyValid:1; + bool mVerticalVelocityUncertaintyValid:1; + bool mHorizontalConfidenceValid:1; + bool mPositionDOPValid:1; + bool mHorizontalDOPValid:1; + bool mVerticalDOPValid:1; + bool mOperatingModeUsedValid:1; + + // Padding out 9 bits + UINT8 mReserved1:1; + UINT8 mReserved2; + + UINT16 mCalendarYear; + eQMIPDSCalendarMonths mCalendarMonth; + eQMIPDSCalendarDays mCalendarDay; + UINT8 mCalendarDayOfMonth; + UINT8 mCalendarHour; + UINT8 mCalendarMinute; + UINT8 mCalendarSecond; + UINT16 mCalendarMillisecond; + UINT8 mCalendarLeapSeconds; + UINT64 mUTCTimestamp; + UINT32 mUTCTimestampUncertainty; + double mLatitude; + double mLongitude; + float mEllipsoidAltitude; + float mMeanSeaLevelAltitude; + float mHorizontalSpeed; + float mVerticalSpeed; + float mHeading; + float mHorizontalUncertaintyCircular; + float mHorizontalUncertaintyEllipseSemiMajor; + float mHorizontalUncertaintyEllipseSemiMinor; + float mHorizontalUncertaintyEllipseOrientAzimuth; + float mVerticalUncertainty; + float mHorizontalVelocityUncertainty; + float mVerticalVelocityUncertainty; + UINT8 mHorizontalConfidence; + float mPositionDOP; + float mHorizontalDOP; + float mVerticalDOP; + eQMIPDSNMEASentenceOperatingModes mOperatingMode; +}; + +// Structure to describe indication TLV 0x14 for PDS EventReport +struct sPDSEventReportIndication_ExternalXTRARequest +{ + UINT16 mMaximumFileSize; + UINT8 mURLRecordCount; + + struct sURL + { + UINT8 mURLLength; + + // This array must be the size specified by mURLLength + // char mURL[1]; + }; + + // This array must be the size specified by mURLRecordCount + // sURL mURLs[1]; +}; + +// Structure to describe indication TLV 0x15 for PDS EventReport +struct sPDSEventReportIndication_ExternalTimeInjectionRequest +{ + UINT32 mDelayThresholdMilliseconds; + UINT8 mURLRecordCount; + + struct sURL + { + UINT8 mURLLength; + + // This array must be the size specified by mURLLength + // char mURL[1]; + }; + + // This array must be the size specified by mURLRecordCount + // sURL mURLs[1]; +}; + +// Structure to describe indication TLV 0x16 for PDS EventReport +struct sPDSEventReportIndication_ExternalWiFiPositionRequest +{ + eQMIPDSWiFiRequestTypes mWiFiRequestType; + UINT16 mWiFiRequestTimeBetweenFixesMilliseconds; +}; + +// Structure to describe indication TLV 0x17 for PDS EventReport +struct sPDSEventReportIndication_SatelliteInfo +{ + bool mIonoValid:1; + bool mSatelliteCountValid:1; + bool mSatelliteListValid:1; + + // Padding out 29 bits + UINT8 mReserved1:5; + UINT8 mReserved2[3]; + + INT8 mIonosphericCorrections; + UINT8 mSVRecordCount; + + struct sSV + { + bool mSystemValid:1; + bool mPRNValid:1; + bool mHealthStatusValid:1; + bool mProcessStatusValid:1; + bool mEphemerisStateValid:1; + bool mAlmanacStateValid:1; + bool mElevationValid:1; + bool mAzimuthValid:1; + bool mCN0Valid:1; + + // Padding out 23 bits + UINT8 mReserved3:7; + UINT8 mReserved4[2]; + + eQMIPDSSVSystems mSystem; + UINT8 mPRN; + eQMIPDSSVHealthStatus mHealthLevel; + eQMIPDSSVProcessingStatus mProcessingStatus; + eQMIPDSSVEphemerisStatus mEphemerisState; + eQMIPDSSVAlmanacStatus mAlmanacState; + INT32 mElevation; + UINT16 mAzimuth; + UINT16 mCN0; + }; + + // This array must be the size specified by mSVRecordCount + // sSV mSVs[1]; +}; + +// Structure to describe indication TLV 0x18 for PDS EventReport +struct sPDSEventReportIndication_VXNetworkInitiatedPrompt +{ + bool mPrivacyValid:1; + bool mQoSValid:1; + bool mCountValid:1; + bool mIntervalValid:1; + bool mModeValid:1; + bool mRequestorIDValid:1; + + // Padding out 26 bits + UINT8 mReserved1:2; + UINT8 mReserved2[3]; + + eQMIPDSPrivacyModes mPrivacy; + UINT8 mQoS; + UINT32 mPositionCount; + UINT32 mIntervalBetweenFixesSeconds; + eQMIPDSVXModes mMode; + eQMIPDSVXDataCodingSchemes mRequestorIDDCS; + UINT8 mRequestorIDLength; + + // This array must be the size specified by mRequestorIDLength + // UINT8 mRequestorID[1]; +}; + +// Structure to describe indication TLV 0x19 for PDS EventReport +struct sPDSEventReportIndication_SUPLNetworkInitiatedPrompt1 +{ + bool mPrivacyValid:1; + bool mINITHashValid:1; + bool mModeValid:1; + bool mSLPSessionIDValid:1; + bool mSLPServerIPv4AddressValid:1; + bool mSLPServerIPv6AddressValid:1; + bool mSLPServerURLAddressValid:1; + bool mDCSValid:1; + bool mRequestorIDValid:1; + bool mClientNameValid:1; + bool mQoPHorizontalAccuracyValid:1; + bool mQoPVerticalAccuracyValid:1; + bool mQoPMaxLocationAgeValid:1; + bool mQoPDelayValid:1; + + // Padding out 18 bits + UINT8 mReserved1:2; + UINT8 mReserved2[2]; + + eQMIPDSPrivacyModes mPrivacy; + UINT64 mINITHash; + eQMIPDSSUPLModes mMode; + UINT32 mSLPSessionID; + UINT32 mSLPServerIPv4Port; + UINT8 mSLPServerIPv4Address[4]; + UINT32 mSLPServerIPv6Port; + UINT8 mSLPServerIPv6Address[16]; + UINT8 mSLPServerURLLength; + + // This array must be the size specified by mSLPServerURLLength + // char mSLPServerURLAddress[1]; +}; + +struct sPDSEventReportIndication_SUPLNetworkInitiatedPrompt2 +{ + eQMIPDSSUPLDataCodingSchemes mRequestDCS; + eQMIPDSSUPLIDNameDataCodingSchemes mRequestorIDDCS; + UINT8 mRequestorIDLength; + + // This array must be the size specified by mRequestorIDLength + // UINT8 mRequestorID[1]; +}; + +struct sPDSEventReportIndication_SUPLNetworkInitiatedPrompt3 +{ + eQMIPDSSUPLIDNameDataCodingSchemes mClientNameDCS; + UINT8 mClientNameLength; + + // This array must be the size specified by mClientNameLength + // UINT8 mClientName[1]; +}; + +struct sPDSEventReportIndication_SUPLNetworkInitiatedPrompt4 +{ + UINT8 mQoPHorizontalAccuracy; + UINT8 mQoPVerticalAccuracy; + UINT8 mQoPMaxLocationAge; + UINT8 mQoPDelay; +}; + +struct sPDSEventReportIndication_SUPLNetworkInitiatedPrompt +{ + sPDSEventReportIndication_SUPLNetworkInitiatedPrompt1 mPDSEventReportIndication_SUPLNetworkInitiatedPrompt1; + sPDSEventReportIndication_SUPLNetworkInitiatedPrompt2 mPDSEventReportIndication_SUPLNetworkInitiatedPrompt2; + sPDSEventReportIndication_SUPLNetworkInitiatedPrompt3 mPDSEventReportIndication_SUPLNetworkInitiatedPrompt3; + sPDSEventReportIndication_SUPLNetworkInitiatedPrompt4 mPDSEventReportIndication_SUPLNetworkInitiatedPrompt4; +}; + +// Structure to describe indication TLV 0x1A for PDS EventReport +struct sPDSEventReportIndication_UMTSCPNetworkInitiatedPrompt1 +{ + bool mPrivacyValid:1; + bool mInvokeIDValid:1; + bool mNotificationTextValid:1; + bool mClientAddressValid:1; + bool mLocationTypeValid:1; + bool mRequestorIDValid:1; + bool mCodewordStringValid:1; + bool mServiceTypeIDValid:1; + + // Padding out 24 bits + UINT8 mReserved1[3]; + + eQMIPDSPrivacyModes mPrivacy; + UINT8 mInvokeID; + eQMIPDSUMTSCPDataCodingSchemes mNotificationTextDCS; + UINT8 mNotificationTextLength; + + // This array must be the size specified by mNotificationTextLength + // UINT8 mNotificationText[1]; +}; + +struct sPDSEventReportIndication_UMTSCPNetworkInitiatedPrompt2 +{ + UINT8 mClientAddressLength; + + // This array must be the size specified by mClientAddressLength + // char mClientAddress[1]; +}; + +struct sPDSEventReportIndication_UMTSCPNetworkInitiatedPrompt3 +{ + eQMIPDSUMTSCPLocationTypes mLocationType; + eQMIPDSUMTSCPDataCodingSchemes mRequestorIDDCS; + UINT8 mRequestorIDLength; + + // This array must be the size specified by mRequestorIDLength + // UINT8 mRequestorID[1]; +}; + +struct sPDSEventReportIndication_UMTSCPNetworkInitiatedPrompt4 +{ + eQMIPDSUMTSCPDataCodingSchemes mCodewordDCS; + UINT8 mCodewordLength; + + // This array must be the size specified by mCodewordLength + // UINT8 mCodeword[1]; +}; + +struct sPDSEventReportIndication_UMTSCPNetworkInitiatedPrompt5 +{ + UINT8 mServiceTypeID; +}; + +struct sPDSEventReportIndication_UMTSCPNetworkInitiatedPrompt +{ + sPDSEventReportIndication_UMTSCPNetworkInitiatedPrompt1 mPDSEventReportIndication_UMTSCPNetworkInitiatedPrompt1; + sPDSEventReportIndication_UMTSCPNetworkInitiatedPrompt2 mPDSEventReportIndication_UMTSCPNetworkInitiatedPrompt2; + sPDSEventReportIndication_UMTSCPNetworkInitiatedPrompt3 mPDSEventReportIndication_UMTSCPNetworkInitiatedPrompt3; + sPDSEventReportIndication_UMTSCPNetworkInitiatedPrompt4 mPDSEventReportIndication_UMTSCPNetworkInitiatedPrompt4; + sPDSEventReportIndication_UMTSCPNetworkInitiatedPrompt5 mPDSEventReportIndication_UMTSCPNetworkInitiatedPrompt5; +}; + +// Structure to describe indication TLV 0x1B for PDS EventReport +struct sPDSEventReportIndication_CommEvents +{ + eQMIPDSCommEventTypes mType; + eQMIPDSCommEventProtocols mProtocolDataType; +}; + +// Structure to describe indication TLV 0x1C for PDS EventReport +struct sPDSEventReportIndication_PositionSource +{ + bool mGPS:1; + bool mCellID:1; + bool mGlonass:1; + bool mNetwork:1; + bool mEPI:1; + + // Padding out 27 bits + UINT8 mReserved1:3; + UINT8 mReserved2[3]; +}; + +// Structure to describe indication TLV 0x1D for PDS EventReport +struct sPDSEventReportIndication_AccelerometerStreamingStatus +{ + eQMIPDSStreamingStatus mAccelerometerStreamingStatus; +}; + +// Structure to describe indication TLV 0x1E for PDS EventReport +struct sPDSEventReportIndication_GyroStreamingStatus +{ + eQMIPDSStreamingStatus mGyroStreamingStatus; +}; + +// Structure to describe indication TLV 0x1F for PDS EventReport +struct sPDSEventReportIndication_TimeSyncRequest +{ + UINT32 mReferenceCounter; +}; + +// Structure to describe indication TLV 0x20 for PDS EventReport +struct sPDSEventReportIndication_PositionReliabilityCounter +{ + eQMIPDSReliabilityIndicator mReliabilityIndicatorHorizontal; + eQMIPDSReliabilityIndicator mReliabilityIndicatorVertical; +}; + +// Structure to describe indication TLV 0x21 for PDS EventReport +struct sPDSEventReportIndication_SensorDataUsage +{ + bool mAccelerometer:1; + bool mGyro:1; + + // Padding out 14 bits + UINT8 mReserved1:6; + UINT8 mReserved2; + + bool mHeadingAidedWithSensorData:1; + bool mSpeedAidedWithSensorData:1; + bool mPositionAidedWithSensorData:1; + bool mVelocityAidedWithSensorData:1; + + // Padding out 12 bits + UINT8 mReserved3:4; + UINT8 mReserved4; +}; + +// Structure to describe indication TLV 0x22 for PDS EventReport +struct sPDSEventReportIndication_TimeSourceInformation +{ + INT8 mTimeValid; + eQMIPDSTimeSource mTimeSource; + UINT32 mTimeUncertaintyMilliseconds; + UINT16 mGPSWeekNumber; + UINT32 mGPSTimeOfWeekMilliseconds; + UINT32 mReserved1; + UINT32 mReserved2; + UINT32 mReserved3; + UINT32 mReserved4; + UINT32 mReserved5; +}; + +// Structure to describe indication TLV 0x23 for PDS EventReport +struct sPDSEventReportIndication_EncryptedPositionInformation +{ + eQMIPDSEncryptionAlgorithm mEncryptionAlgorithm; + UINT8 mEncryptionDataLength; + + // This array must be the size specified by mEncryptionDataLength + // UINT8 mEncryptionData[1]; +}; + +// Structure to describe indication TLV 0x24 for PDS EventReport +struct sPDSEventReportIndication_HeadingUncertaintyInformation +{ + float mHeadingUncertainty; + float mGNSSHeadingUncertainty; + UINT32 mReserved1; + UINT32 mReserved2; +}; + +// Structure to describe indication TLV 0x25 for PDS EventReport +struct sPDSEventReportIndication_ProprietaryNMEADebugSentences +{ + // String is variable length, but must be size of the container + // char mNMEADebug[1]; +}; + +// Structure to describe indication TLV 0x26 for PDS EventReport +struct sPDSEventReportIndication_ExtendedExternalXTRADatabaseRequest +{ + UINT32 mMaximumFileSize; + UINT8 mURLCount; + UINT8 mURLLength; + + // This array must be the size specified by mURLLength + // char mURL[1]; +}; + +// Structure to describe indication TLV 0x27 for PDS EventReport +struct sPDSEventReportIndication_ServiceResetStatus +{ + eQMIPDSResetStates mServiceResetStatus; +}; + +// Structure to describe indication TLV 0x28 for PDS EventReport +struct sPDSEventReportIndication_ExtendedPositionFailure +{ + eQMIPDSExtendedPositionFailures mPositionSessionFailure; +}; + +// Structure to describe indication TLV 0x29 for PDS EventReport +struct sPDSEventReportIndication_SUPLTriggerType +{ + eQMIPDSSUPLTriggerTypes mSUPLTriggerType; +}; + +// Structure to describe indication TLV 0x2A for PDS EventReport +struct sPDSEventReportIndication_ESPLURL +{ + UINT8 mEmergencySUPLLocationPlatformURLLength; + + // This array must be the size specified by mEmergencySUPLLocationPlatformURLLength + // char mEmergencySUPLLocationPlatformURL[1]; +}; + +// Structure to describe indication TLV 0x2B for PDS EventReport +struct sPDSEventReportIndication_SUPLINITSource +{ + eQMIPDSSUPLINITSources mSUPLINITSource; +}; + +// Structure to describe indication TLV 0x2C for PDS EventReport +struct sPDSEventReportIndication_VehicleAccelerometerStreamingStatus +{ + eQMIPDSStreamingStatus mVehicleAccelerometerStreamingStatus; +}; + +// Structure to describe indication TLV 0x2D for PDS EventReport +struct sPDSEventReportIndication_VehicleAngularRateStreamingStatus +{ + eQMIPDSStreamingStatus mVehicleAngularRateStreamingStatus; +}; + +// Structure to describe indication TLV 0x2E for PDS EventReport +struct sPDSEventReportIndication_VehicleOdometryStreamingStatus +{ + eQMIPDSStreamingStatus mVehicleOdometryStreamingStatus; +}; + +// Structure to describe indication TLV 0x2F for PDS EventReport +struct sPDSEventReportIndication_SensorBiasEstimate +{ + UINT16 mSequenceNumber; + bool mGyroscopeXAxisValid:1; + bool mGyroscopeYAxisValid:1; + bool mGyroscopeZAxisValid:1; + + // Padding out 61 bits + UINT8 mReserved1:5; + UINT8 mReserved2[7]; + + float mGyroscopeXAxisValue; + float mGyroscopeYAxisValue; + float mGyroscopeZAxisValue; + bool mAccelerometerXAxisValid:1; + bool mAccelerometerYAxisValid:1; + bool mAccelerometerZAxisValid:1; + + // Padding out 61 bits + UINT8 mReserved3:5; + UINT8 mReserved4[7]; + + float mAccelerometerXAxisValue; + float mAccelerometerYAxisValue; + float mAccelerometerZAxisValue; +}; + +// Structure to describe indication TLV 0x30 for PDS EventReport +struct sPDSEventReportIndication_IS801CPNIRejectReason +{ + eQMIPDSIS801CPNIRejectReasons mIS801CPNIRejectReason; +}; + +// Structure to describe indication TLV 0x31 for PDS EventReport +struct sPDSEventReportIndication_SUPLSessionEndStatus +{ + eQMIPDSSUPLSessionEndStatus mSUPLSessionEndStatus; +}; + +// Structure to describe indication TLV 0x32 for PDS EventReport +struct sPDSEventReportIndication_EmergencyPositionSessionEvent +{ + eQMIPDSEmergencyPositionSessionEvents mEmergencyPositionSessionEvent; +}; + +// Structure to describe response TLV 0x01 for PDSGetServiceState() +struct sPDSGetServiceStateResponse_State +{ + INT8 mServiceEnabled; + eQMIPDSTrackingSessionStates mTrackingSessionState; +}; + +// Structure to describe response TLV 0x10 for PDSGetServiceState() +struct sPDSGetServiceStateResponse_Capabilities +{ + bool mMobileOriginatedPositioningSessions:1; + bool mMobileTerminatedPositioningSessions:1; + + // Padding out 62 bits + UINT8 mReserved1:6; + UINT8 mReserved2[7]; +}; + +// Structure to describe indication TLV 0x01 for PDS ServiceStateIndication +struct sPDSServiceStateIndication_State +{ + INT8 mServiceEnabled; + eQMIPDSTrackingSessionStates mTrackingSessionState; +}; + +// Structure to describe indication TLV 0x10 for PDS ServiceStateIndication +struct sPDSServiceStateIndication_Capabilities +{ + bool mMobileOriginatedPositioningSessions:1; + bool mMobileTerminatedPositioningSessions:1; + + // Padding out 62 bits + UINT8 mReserved1:6; + UINT8 mReserved2[7]; +}; + +// Structure to describe request TLV 0x01 for PDSSetServiceState() +struct sPDSSetServiceStateRequest_State +{ + INT8 mServiceEnabled; +}; + +// Structure to describe request TLV 0x10 for PDSSetServiceState() +struct sPDSSetServiceStateRequest_CapabilitiesToEnable +{ + bool mMobileOriginatedPositioningSessions:1; + bool mMobileTerminatedPositioningSessions:1; + + // Padding out 62 bits + UINT8 mReserved1:6; + UINT8 mReserved2[7]; +}; + +// Structure to describe request TLV 0x01 for PDSStartTrackingSession() +struct sPDSStartTrackingSessionRequest_Session +{ + eQMIPDSSessionControlTypes mSessionControl; + eQMIPDSSessionTypes mSessionType; + eQMIPDSOperationTypes mSessionOperation; + eQMIPDSServerOptions mServerOption; + UINT8 mTimeoutSeconds; + UINT32 mSessionFixRequests; + UINT32 mFixRequestIntervalSeconds; + UINT32 mDesiredAccuracyMeters; +}; + +// Structure to describe response TLV 0x01 for PDSGetTrackingSessionInfo() +struct sPDSGetTrackingSessionInfoResponse_Info +{ + eQMIPDSSessionControlTypes mSessionControl; + eQMIPDSSessionTypes mSessionType; + eQMIPDSOperationTypes mSessionOperation; + eQMIPDSServerOptions mServerOption; + UINT8 mTimeoutSeconds; + UINT32 mSessionFixRequests; + UINT32 mFixRequestIntervalSeconds; + UINT32 mDesiredAccuracyMeters; +}; + +// Structure to describe response TLV 0x01 for PDSGetNMEAConfig() +struct sPDSGetNMEAConfigResponse_Config +{ + bool mGPGGANMEASentences:1; + bool mGPRMCNMEASentences:1; + bool mGPGSVNMEASentences:1; + bool mGPGSANMEASentences:1; + bool mGPVTGNMEASentences:1; + bool mGLGSVNMEASentences:1; + bool mGNGSANMEASentences:1; + bool mGNGNSNMEASentences:1; + eQMIPDSOutputDevices mOutputDevice; + eQMIPDSNMEAReportingOptions mNMEAReporting; +}; + +// Structure to describe response TLV 0x10 for PDSGetNMEAConfig() +struct sPDSGetNMEAConfigResponse_AdditionalConfig +{ + bool mPQXFI:1; + bool mPSTIS:1; + + // Padding out 14 bits + UINT8 mReserved1:6; + UINT8 mReserved2; +}; + +// Structure to describe response TLV 0x11 for PDSGetNMEAConfig() +struct sPDSGetNMEAConfigResponse_NonstandardConfig +{ + INT8 mEnableNonstandardSentences; +}; + +// Structure to describe request TLV 0x01 for PDSSetNMEAConfig() +struct sPDSSetNMEAConfigRequest_Config +{ + bool mGPGGANMEASentences:1; + bool mGPRMCNMEASentences:1; + bool mGPGSVNMEASentences:1; + bool mGPGSANMEASentences:1; + bool mGPVTGNMEASentences:1; + bool mGLGSVNMEASentences:1; + bool mGNGSANMEASentences:1; + bool mGNGNSNMEASentences:1; + eQMIPDSOutputDevices mOutputDevice; + eQMIPDSNMEAReportingOptions mNMEAReporting; +}; + +// Structure to describe request TLV 0x10 for PDSSetNMEAConfig() +struct sPDSSetNMEAConfigRequest_AdditionalConfig +{ + bool mPQXFI:1; + bool mPSTIS:1; + + // Padding out 14 bits + UINT8 mReserved1:6; + UINT8 mReserved2; +}; + +// Structure to describe response TLV 0x11 for PDSSetNMEAConfig() +struct sPDSSetNMEAConfigResponse_NonstandardConfig +{ + INT8 mEnableNonstandardSentences; +}; + +// Structure to describe request TLV 0x01 for PDSInjectTimeReference() +struct sPDSInjectTimeReferenceRequest_Time +{ + UINT64 mSystemTimeMilliseconds; + UINT16 mSystemDiscontinuties; +}; + +// Structure to describe response TLV 0x01 for PDSGetDefaults() +struct sPDSGetDefaultsResponse_Defaults +{ + eQMIPDSOperationTypes mSessionOperation; + UINT8 mTimeoutSeconds; + UINT32 mFixRequestIntervalSeconds; + UINT32 mDesiredAccuracyMeters; +}; + +// Structure to describe request TLV 0x01 for PDSSetDefaults() +struct sPDSSetDefaultsRequest_Defaults +{ + eQMIPDSOperationTypes mSessionOperation; + UINT8 mTimeoutSeconds; + UINT32 mFixRequestIntervalSeconds; + UINT32 mDesiredAccuracyMeters; +}; + +// Structure to describe response TLV 0x10 for PDSGetXTRAParameters() +struct sPDSGetXTRAParametersResponse_Automatic +{ + INT8 mAutomaticDownloadEnabled; + UINT16 mDownloadIntervalInHours; +}; + +// Structure to describe response TLV 0x11 for PDSGetXTRAParameters() +struct sPDSGetXTRAParametersResponse_Medium +{ + UINT8 mMediumPreferences; + + // This array must be the size specified by mMediumPreferences + // eQMIPDSMediums mMediumPreference[1]; +}; + +// Structure to describe response TLV 0x12 for PDSGetXTRAParameters() +struct sPDSGetXTRAParametersResponse_Network +{ + eQMIPDSWWANNetworkPreferences mWWANNetworkPreference; +}; + +// Structure to describe response TLV 0x13 for PDSGetXTRAParameters() +struct sPDSGetXTRAParametersResponse_Validity +{ + UINT16 mValidPeriodGPSStartWeek; + UINT16 mValidPeriodGPSStartWeekOffsetInMinutes; + UINT16 mValidPeriodDurationInHours; +}; + +// Structure to describe response TLV 0x14 for PDSGetXTRAParameters() +struct sPDSGetXTRAParametersResponse_Embedded +{ + INT8 mEmbeddedXTRADataClientEnabled; + INT8 mEmbeddedXTRATimeClientEnabled; +}; + +// Structure to describe request TLV 0x10 for PDSSetXTRAParameters() +struct sPDSSetXTRAParametersRequest_Automatic +{ + INT8 mAutomaticDownloadEnabled; + UINT16 mDownloadIntervalInHours; +}; + +// Structure to describe request TLV 0x11 for PDSSetXTRAParameters() +struct sPDSSetXTRAParametersRequest_Medium +{ + UINT8 mMediumPreferences; + + // This array must be the size specified by mMediumPreferences + // eQMIPDSMediums mMediumPreference[1]; +}; + +// Structure to describe request TLV 0x12 for PDSSetXTRAParameters() +struct sPDSSetXTRAParametersRequest_Network +{ + eQMIPDSWWANNetworkPreferences mWWANNetworkPreference; +}; + +// Structure to describe request TLV 0x14 for PDSSetXTRAParameters() +struct sPDSSetXTRAParametersRequest_Embedded +{ + INT8 mEmbeddedXTRADataClientEnabled; + INT8 mEmbeddedXTRATimeClientEnabled; +}; + +// Structure to describe request TLV 0x12 for PDSGetAGPSConfig() +struct sPDSGetAGPSConfigRequest_NetworkMode +{ + eQMIPDSNetworkMode mNetworkMode; +}; + +// Structure to describe response TLV 0x10 for PDSGetAGPSConfig() +struct sPDSGetAGPSConfigResponse_ServerAddress +{ + UINT8 mServerAddress[4]; + UINT32 mServerPort; +}; + +// Structure to describe response TLV 0x11 for PDSGetAGPSConfig() +struct sPDSGetAGPSConfigResponse_ServerURL +{ + UINT8 mURLLength; + + // This array must be the size specified by mURLLength + // char mURL[1]; +}; + +// Structure to describe request TLV 0x10 for PDSSetAGPSConfig() +struct sPDSSetAGPSConfigRequest_Server +{ + UINT8 mServerAddress[4]; + UINT32 mServerPort; +}; + +// Structure to describe request TLV 0x11 for PDSSetAGPSConfig() +struct sPDSSetAGPSConfigRequest_ServerURL +{ + UINT8 mURLLength; + + // This array must be the size specified by mURLLength + // char mURL[1]; +}; + +// Structure to describe request TLV 0x12 for PDSSetAGPSConfig() +struct sPDSSetAGPSConfigRequest_NetworkMode +{ + eQMIPDSNetworkMode mNetworkMode; +}; + +// Structure to describe response TLV 0x01 for PDSGetServiceAutoTrackingState() +struct sPDSGetServiceAutoTrackingStateResponse_State +{ + INT8 mAutoTrackingEnabled; +}; + +// Structure to describe request TLV 0x01 for PDSSetServiceAutoTrackingState() +struct sPDSSetServiceAutoTrackingStateRequest_State +{ + INT8 mAutoTrackingEnabled; +}; + +// Structure to describe response TLV 0x01 for PDSGetCOMPortAutoTrackingConfig() +struct sPDSGetCOMPortAutoTrackingConfigResponse_Config +{ + INT8 mAutoTrackingEnabled; +}; + +// Structure to describe request TLV 0x01 for PDSSetCOMPortAutoTrackingConfig() +struct sPDSSetCOMPortAutoTrackingConfigRequest_Config +{ + INT8 mAutoTrackingEnabled; +}; + +// Structure to describe request TLV 0x10 for PDSResetPDSData() +struct sPDSResetPDSDataRequest_GPSData +{ + bool mResetEPH:1; + bool mResetALM:1; + bool mResetPOS:1; + bool mResetTIME:1; + bool mResetIONO:1; + bool mResetUTC:1; + bool mResetHEALTH:1; + bool mResetSVDIR:1; + bool mResetSVSTEER:1; + bool mResetSADATA:1; + bool mResetRTI:1; + bool mResetALMCORR:1; + bool mResetFREQBIASEST:1; + + // Padding out 19 bits + UINT8 mReserved1:3; + UINT8 mReserved2[2]; +}; + +// Structure to describe request TLV 0x11 for PDSResetPDSData() +struct sPDSResetPDSDataRequest_CellData +{ + bool mResetPOS:1; + bool mResetLATESTGPSPOS:1; + bool mResetOTAPOS:1; + bool mResetEXTREFPOS:1; + bool mResetTIMETAG:1; + bool mResetCELLID:1; + bool mResetCACHEDCELLID:1; + bool mResetLASTSRVCELL:1; + bool mResetCURSRVCELL:1; + bool mResetNEIGHBORINFO:1; + + // Padding out 22 bits + UINT8 mReserved1:6; + UINT8 mReserved2[2]; +}; + +// Structure to describe request TLV 0x10 for PDSSinglePositionFix() +struct sPDSSinglePositionFixRequest_Mode +{ + eQMIPDSOperationTypes mSessionOperation; +}; + +// Structure to describe request TLV 0x11 for PDSSinglePositionFix() +struct sPDSSinglePositionFixRequest_Timeout +{ + UINT8 mTimeoutSeconds; +}; + +// Structure to describe request TLV 0x12 for PDSSinglePositionFix() +struct sPDSSinglePositionFixRequest_Accuracy +{ + UINT32 mDesiredAccuracyMeters; +}; + +// Structure to describe response TLV 0x01 for PDSGetServiceVersion() +struct sPDSGetServiceVersionResponse_Version +{ + UINT8 mServiceMajorVersion; + UINT8 mServiceMinorVersion; +}; + +// Structure to describe request TLV 0x01 for PDSInjectXTRAData() +struct sPDSInjectXTRADataRequest_Data +{ + UINT8 mSequenceNumber; + UINT16 mTotalLength; + UINT16 mSequenceLength; + + // This array must be the size specified by mSequenceLength + // UINT8 mData[1]; +}; + +// Structure to describe request TLV 0x10 for PDSInjectPositionData() +struct sPDSInjectPositionDataRequest_Timestamp +{ + UINT64 mUTCTimestamp; +}; + +// Structure to describe request TLV 0x11 for PDSInjectPositionData() +struct sPDSInjectPositionDataRequest_Latitude +{ + double mLatitude; +}; + +// Structure to describe request TLV 0x12 for PDSInjectPositionData() +struct sPDSInjectPositionDataRequest_Longitude +{ + double mLongitude; +}; + +// Structure to describe request TLV 0x13 for PDSInjectPositionData() +struct sPDSInjectPositionDataRequest_AltitudeEllipsoid +{ + float mEllipsoidAltitude; +}; + +// Structure to describe request TLV 0x14 for PDSInjectPositionData() +struct sPDSInjectPositionDataRequest_AltitudeSeaLevel +{ + float mMeanSeaLevelAltitude; +}; + +// Structure to describe request TLV 0x15 for PDSInjectPositionData() +struct sPDSInjectPositionDataRequest_HorizontalUncertainty +{ + float mHorizontalUncertaintyCircular; +}; + +// Structure to describe request TLV 0x16 for PDSInjectPositionData() +struct sPDSInjectPositionDataRequest_VerticalUncertainty +{ + float mVerticalUncertainty; +}; + +// Structure to describe request TLV 0x17 for PDSInjectPositionData() +struct sPDSInjectPositionDataRequest_HorizontalConfidence +{ + UINT8 mHorizontalConfidence; +}; + +// Structure to describe request TLV 0x18 for PDSInjectPositionData() +struct sPDSInjectPositionDataRequest_VerticalConfidence +{ + UINT8 mVerticalConfidence; +}; + +// Structure to describe request TLV 0x19 for PDSInjectPositionData() +struct sPDSInjectPositionDataRequest_Source +{ + eQMIPDSInjectedPositionSources mSource; +}; + +// Structure to describe request TLV 0x1A for PDSInjectPositionData() +struct sPDSInjectPositionDataRequest_TimeType +{ + eQMIPDSTimeType mTimeType; +}; + +// Structure to describe request TLV 0x1B for PDSInjectPositionData() +struct sPDSInjectPositionDataRequest_PositionReliability +{ + eQMIPDSReliabilityIndicator mReliabilityIndicatorHorizontal; + eQMIPDSReliabilityIndicator mReliabilityIndicatorVertical; +}; + +// Structure to describe request TLV 0x1C for PDSInjectPositionData() +struct sPDSInjectPositionDataRequest_AltitudeInformation +{ + eQMIPDSAltitudeSource mAltitudeSource; + eQMIPDSSourceLinkage mSourceLinkage; + eQMIPDSUncertaintyCoverage mUncertaintyCoverage; +}; + +// Structure to describe request TLV 0x10 for PDSInjectWiFiPositionData() +struct sPDSInjectWiFiPositionDataRequest_Time +{ + UINT32 mWiFiTimeCounterMilliseconds; +}; + +// Structure to describe request TLV 0x11 for PDSInjectWiFiPositionData() +struct sPDSInjectWiFiPositionDataRequest_Position +{ + INT32 mWiFiLatitude; + INT32 mWiFiLongitude; + UINT16 mHEPEInMeters; + UINT8 mAPCount; + UINT8 mErrorCode; +}; + +// Structure to describe request TLV 0x12 for PDSInjectWiFiPositionData() +struct sPDSInjectWiFiPositionDataRequest_APInfo +{ + UINT8 mAPCount; + + struct sAP + { + UINT8 mMACAddress[6]; + UINT32 mRSSI; + UINT16 mBeaconChannel; + bool mUsedForPosition:1; + bool mHiddenSSID:1; + bool mEncryptionOn:1; + bool mInfrastructureMode:1; + + // Padding out 4 bits + UINT8 mReserved1:4; + }; + + // This array must be the size specified by mAPCount + // sAP mAPs[1]; +}; + +// Structure to describe request TLV 0x13 for PDSInjectWiFiPositionData() +struct sPDSInjectWiFiPositionDataRequest_PositionReliability +{ + eQMIPDSReliabilityIndicator mReliabilityIndicatorHorizontal; +}; + +// Structure to describe response TLV 0x10 for PDSGetSBASConfig() +struct sPDSGetSBASConfigResponse_Config +{ + eQMIPDSSBASStates mState; +}; + +// Structure to describe request TLV 0x10 for PDSSetSBASConfig() +struct sPDSSetSBASConfigRequest_Config +{ + INT8 mEnableSBAS; +}; + +// Structure to describe request TLV 0x01 for PDSSendNetworkInitiatedResponse() +struct sPDSSendNetworkInitiatedResponseRequest_Action +{ + INT8 mAllowRequest; +}; + +// Structure to describe request TLV 0x10 for PDSSendNetworkInitiatedResponse() +struct sPDSSendNetworkInitiatedResponseRequest_VX +{ + bool mPrivacyValid:1; + bool mQoSValid:1; + bool mCountValid:1; + bool mIntervalValid:1; + bool mModeValid:1; + bool mRequestorIDValid:1; + + // Padding out 26 bits + UINT8 mReserved1:2; + UINT8 mReserved2[3]; + + eQMIPDSPrivacyModes mPrivacy; + UINT8 mQoS; + UINT32 mPositionCount; + UINT32 mIntervalBetweenFixesSeconds; + eQMIPDSVXModes mMode; + eQMIPDSVXDataCodingSchemes mRequestorIDDCS; + UINT8 mRequestorIDLength; + + // This array must be the size specified by mRequestorIDLength + // UINT8 mRequestorID[1]; +}; + +// Structure to describe request TLV 0x11 for PDSSendNetworkInitiatedResponse() +struct sPDSSendNetworkInitiatedResponseRequest_SUPL1 +{ + bool mPrivacyValid:1; + bool mINITHashValid:1; + bool mModeValid:1; + bool mSLPSessionIDValid:1; + bool mSLPServerIPv4AddressValid:1; + bool mSLPServerIPv6AddressValid:1; + bool mSLPServerURLAddressValid:1; + bool mDCSValid:1; + bool mRequestorIDValid:1; + bool mClientNameValid:1; + bool mQoPHorizontalAccuracyValid:1; + bool mQoPVerticalAccuracyValid:1; + bool mQoPMaxLocationAgeValid:1; + bool mQoPDelayValid:1; + + // Padding out 18 bits + UINT8 mReserved1:2; + UINT8 mReserved2[2]; + + eQMIPDSPrivacyModes mPrivacy; + UINT64 mINITHash; + eQMIPDSSUPLModes mMode; + UINT32 mSLPSessionID; + UINT32 mSLPServerIPv4Port; + UINT8 mSLPServerIPv4Address[4]; + UINT32 mSLPServerIPv6Port; + UINT8 mSLPServerIPv6Address[16]; + UINT8 mSLPServerURLLength; + + // This array must be the size specified by mSLPServerURLLength + // char mSLPServerURLAddress[1]; +}; + +struct sPDSSendNetworkInitiatedResponseRequest_SUPL2 +{ + eQMIPDSSUPLDataCodingSchemes mRequestDCS; + eQMIPDSSUPLIDNameDataCodingSchemes mRequestorIDDCS; + UINT8 mRequestorIDLength; + + // This array must be the size specified by mRequestorIDLength + // UINT8 mRequestorID[1]; +}; + +struct sPDSSendNetworkInitiatedResponseRequest_SUPL3 +{ + eQMIPDSSUPLIDNameDataCodingSchemes mClientNameDCS; + UINT8 mClientNameLength; + + // This array must be the size specified by mClientNameLength + // UINT8 mClientName[1]; +}; + +struct sPDSSendNetworkInitiatedResponseRequest_SUPL4 +{ + UINT8 mQoPHorizontalAccuracy; + UINT8 mQoPVerticalAccuracy; + UINT8 mQoPMaxLocationAge; + UINT8 mQoPDelay; +}; + +struct sPDSSendNetworkInitiatedResponseRequest_SUPL +{ + sPDSSendNetworkInitiatedResponseRequest_SUPL1 mPDSSendNetworkInitiatedResponseRequest_SUPL1; + sPDSSendNetworkInitiatedResponseRequest_SUPL2 mPDSSendNetworkInitiatedResponseRequest_SUPL2; + sPDSSendNetworkInitiatedResponseRequest_SUPL3 mPDSSendNetworkInitiatedResponseRequest_SUPL3; + sPDSSendNetworkInitiatedResponseRequest_SUPL4 mPDSSendNetworkInitiatedResponseRequest_SUPL4; +}; + +// Structure to describe request TLV 0x12 for PDSSendNetworkInitiatedResponse() +struct sPDSSendNetworkInitiatedResponseRequest_UMTSCP1 +{ + bool mPrivacyValid:1; + bool mInvokeIDValid:1; + bool mNotificationTextValid:1; + bool mClientAddressValid:1; + bool mLocationTypeValid:1; + bool mRequestorIDValid:1; + bool mCodewordStringValid:1; + bool mServiceTypeIDValid:1; + + // Padding out 24 bits + UINT8 mReserved1[3]; + + eQMIPDSPrivacyModes mPrivacy; + UINT8 mInvokeID; + eQMIPDSUMTSCPDataCodingSchemes mNotificationTextDCS; + UINT8 mNotificationTextLength; + + // This array must be the size specified by mNotificationTextLength + // UINT8 mNotificationText[1]; +}; + +struct sPDSSendNetworkInitiatedResponseRequest_UMTSCP2 +{ + UINT8 mClientAddressLength; + + // This array must be the size specified by mClientAddressLength + // char mClientAddress[1]; +}; + +struct sPDSSendNetworkInitiatedResponseRequest_UMTSCP3 +{ + eQMIPDSUMTSCPLocationTypes mLocationType; + eQMIPDSUMTSCPDataCodingSchemes mRequestorIDDCS; + UINT8 mRequestorIDLength; + + // This array must be the size specified by mRequestorIDLength + // UINT8 mRequestorID[1]; +}; + +struct sPDSSendNetworkInitiatedResponseRequest_UMTSCP4 +{ + eQMIPDSUMTSCPDataCodingSchemes mCodewordDCS; + UINT8 mCodewordLength; + + // This array must be the size specified by mCodewordLength + // UINT8 mCodeword[1]; +}; + +struct sPDSSendNetworkInitiatedResponseRequest_UMTSCP5 +{ + UINT8 mServiceTypeID; +}; + +struct sPDSSendNetworkInitiatedResponseRequest_UMTSCP +{ + sPDSSendNetworkInitiatedResponseRequest_UMTSCP1 mPDSSendNetworkInitiatedResponseRequest_UMTSCP1; + sPDSSendNetworkInitiatedResponseRequest_UMTSCP2 mPDSSendNetworkInitiatedResponseRequest_UMTSCP2; + sPDSSendNetworkInitiatedResponseRequest_UMTSCP3 mPDSSendNetworkInitiatedResponseRequest_UMTSCP3; + sPDSSendNetworkInitiatedResponseRequest_UMTSCP4 mPDSSendNetworkInitiatedResponseRequest_UMTSCP4; + sPDSSendNetworkInitiatedResponseRequest_UMTSCP5 mPDSSendNetworkInitiatedResponseRequest_UMTSCP5; +}; + +// Structure to describe request TLV 0x13 for PDSSendNetworkInitiatedResponse() +struct sPDSSendNetworkInitiatedResponseRequest_SUPLTriggerType +{ + eQMIPDSSUPLTriggerTypes mSUPLTriggerType; +}; + +// Structure to describe request TLV 0x14 for PDSSendNetworkInitiatedResponse() +struct sPDSSendNetworkInitiatedResponseRequest_ESPLURL +{ + UINT8 mEmergencySUPLLocationPlatformURLLength; + + // This array must be the size specified by mEmergencySUPLLocationPlatformURLLength + // char mEmergencySUPLLocationPlatformURL[1]; +}; + +// Structure to describe request TLV 0x01 for PDSInjectAbsoluteTime() +struct sPDSInjectAbsoluteTimeRequest_Time +{ + UINT64 mTimestampMilliseconds; + UINT32 mTimeUncertaintyMilliseconds; + eQMIPDSTimeBases mTimeBase; + INT8 mForceAcceptance; +}; + +// Structure to describe request TLV 0x01 for PDSInjectEFSData() +struct sPDSInjectEFSDataRequest_DateFile1 +{ + UINT8 mFilenameLength; + + // This array must be the size specified by mFilenameLength + // char mFilename[1]; +}; + +struct sPDSInjectEFSDataRequest_DateFile2 +{ + eQMIPDSEFSFileOperations mFileOperation; + UINT32 mDataLength; + UINT8 mPartNumber; + UINT8 mTotalParts; + + // This array must be the size specified by mDataLength + // UINT8 mData[1]; +}; + +struct sPDSInjectEFSDataRequest_DateFile +{ + sPDSInjectEFSDataRequest_DateFile1 mPDSInjectEFSDataRequest_DateFile1; + sPDSInjectEFSDataRequest_DateFile2 mPDSInjectEFSDataRequest_DateFile2; +}; + +// Structure to describe response TLV 0x10 for PDSGetDPOConfig() +struct sPDSGetDPOConfigResponse_Config +{ + INT8 mDataPowerOptimizationEnabled; +}; + +// Structure to describe request TLV 0x10 for PDSSetDPOConfig() +struct sPDSSetDPOConfigRequest_Config +{ + eQMIPDSConfig mConfiguration; +}; + +// Structure to describe response TLV 0x10 for PDSGetODPConfig() +struct sPDSGetODPConfigResponse_Config +{ + eQMIPDSODPStates mOnDemandPositioning; +}; + +// Structure to describe request TLV 0x10 for PDSSetODPConfig() +struct sPDSSetODPConfigRequest_Config +{ + eQMIPDSODPStates mOnDemandPositioning; +}; + +// Structure to describe response TLV 0x10 for PDSGetGPSState() +struct sPDSGetGPSStateResponse_State +{ + INT8 mEngineEnabled; + bool mPositionValid:1; + bool mAltitudeVerticalUncertaintyValid:1; + bool mTimeMillisecondsValid:1; + bool mTimeWeekNumberValid:1; + bool mTimeUncertaintyValid:1; + bool mIonoValid:1; + bool mGPSEphemerisValid:1; + bool mGPSAlmanacValid:1; + bool mGPSHealthValid:1; + bool mGPSVisibleSVsValid:1; + bool mGlonassEphemerisValid:1; + bool mGlonassAlmanacValid:1; + bool mGlonassHealthValid:1; + bool mGlonassVisibleSVsValid:1; + bool mSBASEphemerisValid:1; + bool mSBASAlmanacValid:1; + bool mSBASHealthValid:1; + bool mSBASVisibleSVsValid:1; + bool mXTRAInformationValid:1; + + // Padding out 5 bits + UINT8 mReserved1:5; + + double mLatitude; + double mLongitude; + float mHorizontalUncertaintyCircular; + float mEllipsoidAltitude; + float mVerticalUncertainty; + UINT32 mTimestampInTOWMilliseconds; + UINT16 mGPSWeekNumber; + UINT32 mTimeUncertaintyMilliseconds; + INT8 mIonoIsValid; + UINT32 mGPSEphemerisSVMask; + UINT32 mGPSAlmanacSVMask; + UINT32 mGPSHealthSVMask; + UINT32 mGPSVisibleSVMask; + UINT32 mGlonassEphemerisSVMask; + UINT32 mGlonassAlmanacSVMask; + UINT32 mGlonassHealthSVMask; + UINT32 mGlonassVisibleSVMask; + UINT32 mSBASEphemerisSVMask; + UINT32 mSBASAlmanacSVMask; + UINT32 mSBASHealthSVMask; + UINT32 mSBASVisibleSVMask; + UINT16 mXTRAGPSStartWeek; + UINT16 mXTRAGPSStartMinutes; + INT32 mElevation; +}; + +// Structure to describe request TLV 0x01 for PDSSetPPMEventReport() +struct sPDSSetPPMEventReportRequest_ReportPPMEvents +{ + INT8 mReportPPMEvents; +}; + +// Structure to describe request TLV 0x01 for PDSSetSPIStreamingReport() +struct sPDSSetSPIStreamingReportRequest_ReportEvents +{ + INT8 mReportSPIEvents; +}; + +// Structure to describe indication TLV 0x10 for PDS SetSPIStreamingReportIndication +struct sPDSSetSPIStreamingReportIndication_SPIStreamingRequest +{ + INT8 mStreamSPIStatus; +}; + +// Structure to describe request TLV 0x01 for PDSSetSPIStatus() +struct sPDSSetSPIStatusRequest_Status +{ + eQMIPDSSPIState mSPIState; + UINT8 mSPIConfidence; +}; + +// Structure to describe request TLV 0x01 for PDSSetPPMReportingState() +struct sPDSSetPPMReportingStateRequest_PPMReportingState +{ + eQMIPDSReportingState mReportingState; + UINT16 mReportingPeriodSeconds; +}; + +// Structure to describe indication TLV 0x10 for PDS SetPPMReportingStateIndication +struct sPDSSetPPMReportingStateIndication_PPMPageReport +{ + UINT32 mPageTimeMilliseconds; + UINT16 mPagePNOffset; + UINT8 mPageBandClass; + UINT16 mPageCDMAFrequency; + UINT16 mPageBaseID; + UINT16 mPageSystemID; + UINT16 mPageNetworkID; +}; + +// Structure to describe indication TLV 0x11 for PDS SetPPMReportingStateIndication +struct sPDSSetPPMReportingStateIndication_PPMMeasurementReport +{ + UINT32 mReferenceTimeMilliseconds; + UINT8 mReferenceBandClass; + UINT16 mReferenceCDMAFrequency; + UINT8 mReferenceTotalRXPower; + UINT16 mReferencePNOffset; + UINT8 mReferenceStrength; + UINT8 mReferenceRMSErrorPhase; + UINT8 mNumberOfPilots; + + struct sPilot + { + UINT16 mPilotPNOffset; + UINT8 mPilotStrength; + UINT8 mPilotRMSErrorPhase; + INT16 mPilotPhase; + }; + + // This array must be the size specified by mNumberOfPilots + // sPilot mPilots[1]; +}; + +// Structure to describe indication TLV 0x12 for PDS SetPPMReportingStateIndication +struct sPDSSetPPMReportingStateIndication_PPMSuspendReason +{ + eQMIPDSSuspendReason mSuspendReason; +}; + +// Structure to describe indication TLV 0x13 for PDS SetPPMReportingStateIndication +struct sPDSSetPPMReportingStateIndication_PPMStopReason +{ + eQMIPDSStopReason mStopReason; +}; + +// Structure to describe request TLV 0x01 for PDSForceReceiverOff() +struct sPDSForceReceiverOffRequest_ForceReceiverOff +{ + eQMIPDSForceReceiverOff mForceReceiverOff; +}; + +// Structure to describe response TLV 0x10 for PDSGetPositionMethodsState() +struct sPDSGetPositionMethodsStateResponse_XTRATime +{ + eQMIPDSMethodStates mMethodState; +}; + +// Structure to describe response TLV 0x11 for PDSGetPositionMethodsState() +struct sPDSGetPositionMethodsStateResponse_XTRAData +{ + eQMIPDSMethodStates mMethodState; +}; + +// Structure to describe response TLV 0x12 for PDSGetPositionMethodsState() +struct sPDSGetPositionMethodsStateResponse_WiFi +{ + eQMIPDSMethodStates mMethodState; +}; + +// Structure to describe request TLV 0x10 for PDSSetPositionMethodsState() +struct sPDSSetPositionMethodsStateRequest_XTRATime +{ + eQMIPDSMethodStates mMethodState; +}; + +// Structure to describe request TLV 0x11 for PDSSetPositionMethodsState() +struct sPDSSetPositionMethodsStateRequest_XTRAData +{ + eQMIPDSMethodStates mMethodState; +}; + +// Structure to describe request TLV 0x12 for PDSSetPositionMethodsState() +struct sPDSSetPositionMethodsStateRequest_WiFi +{ + eQMIPDSMethodStates mMethodState; +}; + +// Structure to describe request TLV 0x10 for PDSInjectSensorData() +struct sPDSInjectSensorDataRequest_3AxisAccelerometerData +{ + UINT32 mSensorTimeOfFirstSampleMilliseconds; + bool mSignReversalRequired:1; + + // Padding out 7 bits + UINT8 mReserved1:7; + + UINT8 mNumberOfSamples; + + struct sSample + { + UINT16 mSampleTimeOffsetMilliseconds; + float mXAxisSample; + float mYAxisSample; + float mZAxisSample; + }; + + // This array must be the size specified by mNumberOfSamples + // sSample mSamples[1]; +}; + +// Structure to describe request TLV 0x11 for PDSInjectSensorData() +struct sPDSInjectSensorDataRequest_3AxisGyroData +{ + UINT32 mSensorTimeOfFirstSampleMilliseconds; + bool mSignReversalRequired:1; + + // Padding out 7 bits + UINT8 mReserved1:7; + + UINT8 mNumberOfSamples; + + struct sSample + { + UINT16 mSampleTimeOffsetMilliseconds; + float mXAxisSample; + float mYAxisSample; + float mZAxisSample; + }; + + // This array must be the size specified by mNumberOfSamples + // sSample mSamples[1]; +}; + +// Structure to describe request TLV 0x12 for PDSInjectSensorData() +struct sPDSInjectSensorDataRequest_AccelerometerTemperatureSamples +{ + UINT32 mTimeOfFirstSample; + UINT8 mTemperatureSamplesCount; + + struct sSample + { + UINT16 mSampleTimeOffset; + float mTemperature; + }; + + // This array must be the size specified by mTemperatureSamplesCount + // sSample mSamples[1]; +}; + +// Structure to describe request TLV 0x13 for PDSInjectSensorData() +struct sPDSInjectSensorDataRequest_GyroTemperatureSamples +{ + UINT32 mTimeOfFirstSample; + UINT8 mTemperatureSamplesCount; + + struct sSample + { + UINT16 mSampleTimeOffset; + float mTemperature; + }; + + // This array must be the size specified by mTemperatureSamplesCount + // sSample mSamples[1]; +}; + +// Structure to describe response TLV 0x10 for PDSInjectSensorData() +struct sPDSInjectSensorDataResponse_AccelerometerSampleSetCount +{ + UINT8 mAccelerometerSampleSetCount; +}; + +// Structure to describe response TLV 0x11 for PDSInjectSensorData() +struct sPDSInjectSensorDataResponse_GyroSampleSetCount +{ + UINT8 mGyroSampleSetCount; +}; + +// Structure to describe response TLV 0x12 for PDSInjectSensorData() +struct sPDSInjectSensorDataResponse_AccelerometerTemperatureSamples +{ + UINT8 mProcessedTemperatureSamplesCount; +}; + +// Structure to describe response TLV 0x13 for PDSInjectSensorData() +struct sPDSInjectSensorDataResponse_GyroTemperatureSamples +{ + UINT8 mProcessedTemperatureSamplesCount; +}; + +// Structure to describe request TLV 0x01 for PDSInjectTimeSyncData() +struct sPDSInjectTimeSyncDataRequest_TimeTag +{ + UINT32 mReferenceCounter; + UINT32 mSensorProcessorRXTimeMilliseconds; + UINT32 mSensorProcessorTXTimeMilliseconds; +}; + +// Structure to describe response TLV 0x10 for PDSGetSensorConfig() +struct sPDSGetSensorConfigResponse_CradleMountState +{ + eQMIPDSCradleMountState mCradleMountState; + UINT8 mCradleMountStateConfidence; +}; + +// Structure to describe response TLV 0x11 for PDSGetSensorConfig() +struct sPDSGetSensorConfigResponse_ExternalPowerSupplyState +{ + eQMIPDSExternalPowerState mExternalPowerSupplyState; +}; + +// Structure to describe request TLV 0x10 for PDSSetSensorConfig() +struct sPDSSetSensorConfigRequest_CradleMountState +{ + eQMIPDSCradleMountState mCradleMountState; + UINT8 mCradleMountStateConfidence; +}; + +// Structure to describe request TLV 0x11 for PDSSetSensorConfig() +struct sPDSSetSensorConfigRequest_ExternalPowerState +{ + eQMIPDSExternalPowerState mExternalPowerSupplyState; +}; + +// Structure to describe response TLV 0x10 for PDSGetSensorNavigation() +struct sPDSGetSensorNavigationResponse_GyroDataVariance +{ + float mGyroDataVariance; +}; + +// Structure to describe response TLV 0x11 for PDSGetSensorNavigation() +struct sPDSGetSensorNavigationResponse_GyroBiasRandomWalk +{ + float mGyroBiasRandomWalk; +}; + +// Structure to describe response TLV 0x12 for PDSGetSensorNavigation() +struct sPDSGetSensorNavigationResponse_VirtualGyroGravityAveragingLength +{ + UINT32 mVirtualGyroGravityAveragingLengthMilliseconds; +}; + +// Structure to describe response TLV 0x13 for PDSGetSensorNavigation() +struct sPDSGetSensorNavigationResponse_HeadingFilterMode +{ + INT8 mHeadingFilterMode; +}; + +// Structure to describe response TLV 0x14 for PDSGetSensorNavigation() +struct sPDSGetSensorNavigationResponse_VelocityConstraintVariance +{ + float mVelocityConstraintVariance; +}; + +// Structure to describe response TLV 0x15 for PDSGetSensorNavigation() +struct sPDSGetSensorNavigationResponse_PositioningMethod +{ + bool mSuppressInjectedPosition:1; + bool mReportUsingInstantaneousInformation:1; + bool mDisablePersistentMemoryStorage:1; + + // Padding out 29 bits + UINT8 mReserved1:5; + UINT8 mReserved2[3]; +}; + +// Structure to describe response TLV 0x16 for PDSGetSensorNavigation() +struct sPDSGetSensorNavigationResponse_VelocityRWSD +{ + float mVelocityRandomWalkSpectralDensity; +}; + +// Structure to describe response TLV 0x17 for PDSGetSensorNavigation() +struct sPDSGetSensorNavigationResponse_AccelerationRWSD +{ + float mAccelerationRandomWalkSpectralDensity; +}; + +// Structure to describe response TLV 0x18 for PDSGetSensorNavigation() +struct sPDSGetSensorNavigationResponse_AngleRWSD +{ + float mAngleRandomWalkSpectralDensity; +}; + +// Structure to describe response TLV 0x19 for PDSGetSensorNavigation() +struct sPDSGetSensorNavigationResponse_RateRWSD +{ + float mRateRandomWalkSpectralDensity; +}; + +// Structure to describe response TLV 0x1A for PDSGetSensorNavigation() +struct sPDSGetSensorNavigationResponse_SensorAlgorithmConfig +{ + bool mDisableINSPositioningFilter:1; + + // Padding out 31 bits + UINT8 mReserved1:7; + UINT8 mReserved2[3]; +}; + +// Structure to describe response TLV 0x1B for PDSGetSensorNavigation() +struct sPDSGetSensorNavigationResponse_MaximumDeadReckoningTime +{ + UINT32 mMaximumDeadReckoningTimeSeconds; +}; + +// Structure to describe response TLV 0x1C for PDSGetSensorNavigation() +struct sPDSGetSensorNavigationResponse_INSFilterLowThreshold +{ + UINT8 mINSFilterCrossCheckSigmaLowThreshold; +}; + +// Structure to describe response TLV 0x1D for PDSGetSensorNavigation() +struct sPDSGetSensorNavigationResponse_INSFilterHighThreshold +{ + UINT8 mINSFilterCrossCheckSigmaHighThreshold; +}; + +// Structure to describe response TLV 0x1E for PDSGetSensorNavigation() +struct sPDSGetSensorNavigationResponse_VehicleDataUse +{ + bool mUseGyroscopeXAxis:1; + bool mUseGyroscopeYAxis:1; + bool mUseGyroscopeZAxis:1; + bool mUseAccelerometerXAxis:1; + bool mUseAccelerometerYAxis:1; + bool mUseAccelerometerZAxis:1; + bool mUseOdometry:1; + + // Padding out 57 bits + UINT8 mReserved1:1; + UINT8 mReserved2[7]; +}; + +// Structure to describe response TLV 0x1F for PDSGetSensorNavigation() +struct sPDSGetSensorNavigationResponse_VehicleVelocityRWSD +{ + float mVehicleVelocityRandomWalkSpectralDensity; +}; + +// Structure to describe response TLV 0x20 for PDSGetSensorNavigation() +struct sPDSGetSensorNavigationResponse_VehicleAccelerometerRWSD +{ + float mVehicleAccelerometerRandomWalkSpectralDensity; +}; + +// Structure to describe response TLV 0x21 for PDSGetSensorNavigation() +struct sPDSGetSensorNavigationResponse_VehicleAngleRWSD +{ + float mVehicleAngleRandomWalkSpectralDensity; +}; + +// Structure to describe response TLV 0x22 for PDSGetSensorNavigation() +struct sPDSGetSensorNavigationResponse_VehicleAngularRateRWSD +{ + float mVehicleAngularRateRandomWalkSpectralDensity; +}; + +// Structure to describe response TLV 0x23 for PDSGetSensorNavigation() +struct sPDSGetSensorNavigationResponse_VehicleOdometryScaleRWSD +{ + float mVehicleOdometryScaleRandomWalkSpectralDensity; +}; + +// Structure to describe response TLV 0x24 for PDSGetSensorNavigation() +struct sPDSGetSensorNavigationResponse_VehicleOdometryVariance +{ + float mVehicleOdometryVariance; +}; + +// Structure to describe request TLV 0x10 for PDSSetNavigationConfig() +struct sPDSSetNavigationConfigRequest_GyroDataVariance +{ + float mGyroDataVariance; +}; + +// Structure to describe request TLV 0x11 for PDSSetNavigationConfig() +struct sPDSSetNavigationConfigRequest_GyroBiasRandomWalk +{ + float mGyroBiasRandomWalk; +}; + +// Structure to describe request TLV 0x12 for PDSSetNavigationConfig() +struct sPDSSetNavigationConfigRequest_VirtualGyroCravityAveragingLength +{ + UINT32 mVirtualGyroGravityAveragingLengthMilliseconds; +}; + +// Structure to describe request TLV 0x13 for PDSSetNavigationConfig() +struct sPDSSetNavigationConfigRequest_HeadingFilterMode +{ + INT8 mHeadingFilterMode; +}; + +// Structure to describe request TLV 0x14 for PDSSetNavigationConfig() +struct sPDSSetNavigationConfigRequest_VelocityConstraintVariance +{ + float mVelocityConstraintVariance; +}; + +// Structure to describe request TLV 0x15 for PDSSetNavigationConfig() +struct sPDSSetNavigationConfigRequest_PositioningMethod +{ + bool mSuppressInjectedPosition:1; + bool mReportUsingInstantaneousInformation:1; + bool mDisablePersistentMemoryStorage:1; + + // Padding out 29 bits + UINT8 mReserved1:5; + UINT8 mReserved2[3]; +}; + +// Structure to describe request TLV 0x16 for PDSSetSensorNavigation() +struct sPDSSetSensorNavigationRequest_VelocityRWSD +{ + float mVelocityRandomWalkSpectralDensity; +}; + +// Structure to describe request TLV 0x17 for PDSSetSensorNavigation() +struct sPDSSetSensorNavigationRequest_AccelerationRWSD +{ + float mAccelerationRandomWalkSpectralDensity; +}; + +// Structure to describe request TLV 0x18 for PDSSetSensorNavigation() +struct sPDSSetSensorNavigationRequest_AngleRWSD +{ + float mAngleRandomWalkSpectralDensity; +}; + +// Structure to describe request TLV 0x19 for PDSSetSensorNavigation() +struct sPDSSetSensorNavigationRequest_RateRWSD +{ + float mRateRandomWalkSpectralDensity; +}; + +// Structure to describe request TLV 0x1A for PDSSetSensorNavigation() +struct sPDSSetSensorNavigationRequest_SensorAlgorithmConfig +{ + bool mDisableINSPositioningFilter:1; + + // Padding out 31 bits + UINT8 mReserved1:7; + UINT8 mReserved2[3]; +}; + +// Structure to describe request TLV 0x1B for PDSSetSensorNavigation() +struct sPDSSetSensorNavigationRequest_MaximumDeadReckoningTime +{ + UINT32 mMaximumDeadReckoningTimeSeconds; +}; + +// Structure to describe request TLV 0x1C for PDSSetSensorNavigation() +struct sPDSSetSensorNavigationRequest_INSFilterLowThreshold +{ + UINT8 mINSFilterCrossCheckSigmaLowThreshold; +}; + +// Structure to describe request TLV 0x1D for PDSSetSensorNavigation() +struct sPDSSetSensorNavigationRequest_INSFilterHighThreshold +{ + UINT8 mINSFilterCrossCheckSigmaHighThreshold; +}; + +// Structure to describe request TLV 0x1E for PDSSetSensorNavigation() +struct sPDSSetSensorNavigationRequest_VehicleDataUse +{ + bool mUseGyroscopeXAxis:1; + bool mUseGyroscopeYAxis:1; + bool mUseGyroscopeZAxis:1; + bool mUseAccelerometerXAxis:1; + bool mUseAccelerometerYAxis:1; + bool mUseAccelerometerZAxis:1; + bool mUseOdometry:1; + + // Padding out 57 bits + UINT8 mReserved1:1; + UINT8 mReserved2[7]; +}; + +// Structure to describe request TLV 0x1F for PDSSetSensorNavigation() +struct sPDSSetSensorNavigationRequest_VehicleVelocityRWSD +{ + float mVehicleVelocityRandomWalkSpectralDensity; +}; + +// Structure to describe request TLV 0x20 for PDSSetSensorNavigation() +struct sPDSSetSensorNavigationRequest_VehicleAccelerometerRWSD +{ + float mVehicleAccelerometerRandomWalkSpectralDensity; +}; + +// Structure to describe request TLV 0x21 for PDSSetSensorNavigation() +struct sPDSSetSensorNavigationRequest_VehicleAngleRWSD +{ + float mVehicleAngleRandomWalkSpectralDensity; +}; + +// Structure to describe request TLV 0x22 for PDSSetSensorNavigation() +struct sPDSSetSensorNavigationRequest_VehicleAngularRateRWSD +{ + float mVehicleAngularRateRandomWalkSpectralDensity; +}; + +// Structure to describe request TLV 0x23 for PDSSetSensorNavigation() +struct sPDSSetSensorNavigationRequest_VehicleOdometryScaleRWSD +{ + float mVehicleOdometryScaleRandomWalkSpectralDensity; +}; + +// Structure to describe request TLV 0x24 for PDSSetSensorNavigation() +struct sPDSSetSensorNavigationRequest_VehicleOdometryVariance +{ + float mVehicleOdometryVariance; +}; + +// Structure to describe request TLV 0x10 for PDSSetWLANBlanking() +struct sPDSSetWLANBlankingRequest_BlankingEnable +{ + eQMIPDSBlankingEnable mBlankingEnable; +}; + +// Structure to describe request TLV 0x11 for PDSSetWLANBlanking() +struct sPDSSetWLANBlankingRequest_ActiveChannels +{ + bool mChannel1:1; + bool mChannel2:1; + bool mChannel3:1; + bool mChannel4:1; + bool mChannel5:1; + bool mChannel6:1; + bool mChannel7:1; + bool mChannel8:1; + bool mChannel9:1; + bool mChannel10:1; + bool mChannel11:1; + bool mChannel12:1; + bool mChannel13:1; + bool mChannel14:1; + + // Padding out 18 bits + UINT8 mReserved1:2; + UINT8 mReserved2[2]; +}; + +// Structure to describe request TLV 0x12 for PDSSetWLANBlanking() +struct sPDSSetWLANBlankingRequest_BluetoothJamming +{ + INT8 mBluetoothJammingActive; +}; + +// Structure to describe request TLV 0x13 for PDSSetWLANBlanking() +struct sPDSSetWLANBlankingRequest_IMDJamming +{ + eQMIPDSIMDJammingStates mSimulateIMDJamming; +}; + +// Structure to describe request TLV 0x14 for PDSSetWLANBlanking() +struct sPDSSetWLANBlankingRequest_JammingBands +{ + eQMIPDSIMDJammingBands mBandstoJam; +}; + +// Structure to describe request TLV 0x10 for PDSSetSecurityChallengeReport() +struct sPDSSetSecurityChallengeReportRequest_EnableSecurity +{ + eQMIPDSReportSecurityChallenge mReportSecurityChallenge; +}; + +// Structure to describe indication TLV 0x10 for PDS SetSecurityChallengeReportIndication +struct sPDSSetSecurityChallengeReportIndication_EnableSecurity +{ + eQMIPDSEncryptionAlgorithm mEncryptionAlgorithm; + UINT8 mEncryptionDataID; + UINT8 mEncryptionDataLength; + + // This array must be the size specified by mEncryptionDataLength + // UINT8 mEncryptionData[1]; +}; + +// Structure to describe request TLV 0x10 for PDSSetSecurityChallenge() +struct sPDSSetSecurityChallengeRequest_SecureHashAlgorithm +{ + UINT8 mEncryptionDataID; + UINT8 mEncryptionDataLength; + + // This array must be the size specified by mEncryptionDataLength + // UINT8 mEncryptionData[1]; +}; + +// Structure to describe response TLV 0x10 for PDSGetSecurityEncryptionConfig() +struct sPDSGetSecurityEncryptionConfigResponse_SecureClientTimestamp +{ + eQMIPDSEncryptionAlgorithm mEncryptionAlgorithm; + UINT64 mEncryptionTimestampMilliseconds; + UINT8 mEncryptionDataLength; + + // This array must be the size specified by mEncryptionDataLength + // UINT8 mEncryptionData[1]; +}; + +// Structure to describe request TLV 0x10 for PDSSetSecurityUpdateRate() +struct sPDSSetSecurityUpdateRateRequest_EnableSecurity +{ + UINT8 mUpdateRate; +}; + +// Structure to describe request TLV 0x10 for PDSSetCellDatabaseControl() +struct sPDSSetCellDatabaseControlRequest_Control +{ + bool mPositionInfoStorage:1; + bool mTimeInfoStorage:1; + + // Padding out 30 bits + UINT8 mReserved1:6; + UINT8 mReserved2[3]; +}; + +// Structure to describe request TLV 0x01 for PDSInjectMotionData() +struct sPDSInjectMotionDataRequest_MotionData +{ + eQMIPDSMotionStates mMotionState; + eQMIPDSMotionModes mMotionMode; + eQMIPDSMotionSubmodes mMotionSubmode; + float mStateProbability; + UINT16 mMotionDataAgeMilliseconds; + UINT16 mMotionDataTimoutMilliseconds; +}; + +// Structure to describe request TLV 0x01 for PDSSetGNSSEngineErrorRecoveryReport() +struct sPDSSetGNSSEngineErrorRecoveryReportRequest_Indicator +{ + INT8 mReportGNSSEngineErrorRecovery; +}; + +// Structure to describe indication TLV 0x01 for PDS GNSSEngineErrorRecoveryReport +struct sPDSGNSSEngineErrorRecoveryReportIndication_Reason +{ + eQMIPDSResetReasons mResetReason; +}; + +// Structure to describe indication TLV 0x02 for PDS GNSSEngineErrorRecoveryReport +struct sPDSGNSSEngineErrorRecoveryReportIndication_DeletedData +{ + bool mClockInformation:1; + bool mPositionInformation:1; + bool mSVDirections:1; + bool mSVSteering:1; + + // Padding out 28 bits + UINT8 mReserved1:4; + UINT8 mReserved2[3]; +}; + +// Structure to describe indication TLV 0x10 for PDS GNSSEngineErrorRecoveryReport +struct sPDSGNSSEngineErrorRecoveryReportIndication_CurrentSystemTime +{ + UINT16 mGPSWeekNumber; + UINT32 mGPSTimeOfWeekMilliseconds; +}; + +// Structure to describe indication TLV 0x11 for PDS GNSSEngineErrorRecoveryReport +struct sPDSGNSSEngineErrorRecoveryReportIndication_ScanParameters +{ + eQMIPDSSVSystems mSystem; + UINT8 mPRN; + UINT16 mCN0; + UINT16 mSubMillisecondDifferenceMicroseconds; + INT16 mDopplerDifferenceHz; +}; + +// Structure to describe indication TLV 0x12 for PDS GNSSEngineErrorRecoveryReport +struct sPDSGNSSEngineErrorRecoveryReportIndication_ClockParameters +{ + eQMIPDSSVSystems mSystem; + eQMIPDSTimeSource mCurrentTimeSource; + eQMIPDSTimeSource mInjectedTimeSource; + UINT32 mTimeDifferenceMilliseconds; + UINT32 mTimeUncertaintyMicroseconds; +}; + +// Structure to describe indication TLV 0x13 for PDS GNSSEngineErrorRecoveryReport +struct sPDSGNSSEngineErrorRecoveryReportIndication_SubframeParameters +{ + UINT8 mPRN; + INT32 mGPSDataDemodulationINProgress; + UINT16 mObservedCycleSlips; + UINT16 mParityErrors; + UINT32 mGPSSubframeWordWithTimingError; +}; + +// Structure to describe indication TLV 0x14 for PDS GNSSEngineErrorRecoveryReport +struct sPDSGNSSEngineErrorRecoveryReportIndication_TimeParameters +{ + eQMIPDSSVSystems mSystem; + UINT8 mPRN; + UINT16 mGPSWeekNumber; + UINT32 mGPSTimeOfWeekMilliseconds; + UINT16 mGNSSNumberOfDays; + UINT32 mGNSSMilliseconds; + UINT32 mClockDifferenceMilliseconds; +}; + +// Structure to describe indication TLV 0x15 for PDS GNSSEngineErrorRecoveryReport +struct sPDSGNSSEngineErrorRecoveryReportIndication_MeasurementParameters +{ + eQMIPDSSVSystems mSystem; + UINT16 mGPSWeekNumber; + UINT32 mGPSTimeOfWeekMilliseconds; + UINT8 mObservedMeasurementInconsistencies; + UINT16 mObservationDuration; +}; + +// Structure to describe indication TLV 0x16 for PDS GNSSEngineErrorRecoveryReport +struct sPDSGNSSEngineErrorRecoveryReportIndication_RFParameters +{ + UINT32 mQualitySignalStrength; + UINT32 mResetSignalStrength; +}; + +// Structure to describe request TLV 0x10 for PDSInjectTestData() +struct sPDSInjectTestDataRequest_TimeUncertainty +{ + UINT32 mTimeUncertaintyMicroseconds; +}; + +// Structure to describe request TLV 0x11 for PDSInjectTestData() +struct sPDSInjectTestDataRequest_PositionUncertainty +{ + UINT32 mPositionUncertaintyCentimeters; +}; + +// Structure to describe request TLV 0x12 for PDSInjectTestData() +struct sPDSInjectTestDataRequest_TimeOffset +{ + UINT64 mTimeOffsetMicroseconds; +}; + +// Structure to describe request TLV 0x13 for PDSInjectTestData() +struct sPDSInjectTestDataRequest_PositionOffset +{ + UINT32 mPositionOffsetMeters; +}; + +// Structure to describe request TLV 0x01 for PDSSetGNSSRFConfig() +struct sPDSSetGNSSRFConfigRequest_PeakAntennaGain +{ + INT16 mPeakAntennaGain; +}; + +// Structure to describe request TLV 0x10 for PDSSetGNSSRFConfig() +struct sPDSSetGNSSRFConfigRequest_GPSRFLoss +{ + UINT16 mRFLoss; +}; + +// Structure to describe request TLV 0x11 for PDSSetGNSSRFConfig() +struct sPDSSetGNSSRFConfigRequest_GlonassRFLoss +{ + UINT16 mRFLossFrequency0; + UINT16 mRFLossFrequencyMinus7; + UINT16 mRFLossFrequencyPlus6; +}; + +// Structure to describe request TLV 0x01 for PDSInjectCourseOverGroundData() +struct sPDSInjectCourseOverGroundDataRequest_COGData +{ + eQMIPDSCOGTimeTypes mTimeType; + UINT64 mTimestampMilliseconds; + float mCourseOverGround; + float mCourseOverGroundUncertainty; + eQMIPDSReliabilityIndicator mCourseOverGroundReliability; +}; + +// Structure to describe request TLV 0x01 for PDSInjectSUPLCertificate() +struct sPDSInjectSUPLCertificateRequest_SUPLCertificateID +{ + UINT8 mSUPLCertificateID; +}; + +// Structure to describe request TLV 0x02 for PDSInjectSUPLCertificate() +struct sPDSInjectSUPLCertificateRequest_SUPLCertificateData +{ + UINT16 mSUPLCertificateDataLength; + + // This array must be the size specified by mSUPLCertificateDataLength + // UINT8 mSUPLCertificateData[1]; +}; + +// Structure to describe request TLV 0x01 for PDSDeleteSUPLCertificate() +struct sPDSDeleteSUPLCertificateRequest_SUPLCertificateID +{ + UINT8 mSUPLCertificateID; +}; + +// Structure to describe response TLV 0x10 for PDSGetIS801OverSUPLIndicator() +struct sPDSGetIS801OverSUPLIndicatorResponse_Indicator +{ + INT8 mIS801IsCarriedInsideSUPL; +}; + +// Structure to describe request TLV 0x01 for PDSSetIS801OverSUPLIndicator() +struct sPDSSetIS801OverSUPLIndicatorRequest_Indicator +{ + INT8 mIS801IsCarriedInsideSUPL; +}; + +// Structure to describe response TLV 0x10 for PDSGetSUPLHashAlgorithm() +struct sPDSGetSUPLHashAlgorithmResponse_Algorithm +{ + eQMIPDSSUPLHashAlgorithms mSUPLHashAlgorithm; +}; + +// Structure to describe request TLV 0x01 for PDSSetSUPLHashAlgorithm() +struct sPDSSetSUPLHashAlgorithmRequest_Algorithm +{ + eQMIPDSSUPLHashAlgorithms mSUPLHashAlgorithm; +}; + +// Structure to describe response TLV 0x10 for PDSGetSUPLMaximumVersion() +struct sPDSGetSUPLMaximumVersionResponse_MaxVersion +{ + eQMIPDSSUPLVersions mSUPLMaximumVersion; +}; + +// Structure to describe request TLV 0x01 for PDSSetSUPLMaximumVersion() +struct sPDSSetSUPLMaximumVersionRequest_MaxVersion +{ + eQMIPDSSUPLVersions mSUPLMaximumVersion; +}; + +// Structure to describe response TLV 0x10 for PDSGetSUPLSecurity() +struct sPDSGetSUPLSecurityResponse_Security +{ + INT32 mSUPLSecurityEnabled; +}; + +// Structure to describe request TLV 0x01 for PDSSetSUPLSecurity() +struct sPDSSetSUPLSecurityRequest_Security +{ + INT32 mSUPLSecurityEnabled; +}; + +// Structure to describe response TLV 0x10 for PDSGetSUPLTLSVersion() +struct sPDSGetSUPLTLSVersionResponse_TLSVersion +{ + eQMIPDSSUPLTLSVersions mSUPLTLSVersion; +}; + +// Structure to describe request TLV 0x01 for PDSSetSUPLTLSVersion() +struct sPDSSetSUPLTLSVersionRequest_TLSVersion +{ + eQMIPDSSUPLTLSVersions mSUPLTLSVersion; +}; + +// Structure to describe response TLV 0x10 for PDSGetAGNSSPositioningModes() +struct sPDSGetAGNSSPositioningModesResponse_Modes +{ + bool mUPMSBasedFor2GAnd3G:1; + bool mUPMSAssistedFor2GAnd3G:1; + bool mUPMSBasedFor4G:1; + bool mUPMSAssistedFor4G:1; + + // Padding out 28 bits + UINT8 mReserved1:4; + UINT8 mReserved2[3]; + + bool mCPMSBasedFor2G:1; + bool mCPMSAssistedFor2G:1; + bool mCPMSBasedFor3G:1; + bool mCPMSAssistedFor3G:1; + bool mCPMSBasedFor4G:1; + bool mCPMSAssistedFor4G:1; + + // Padding out 26 bits + UINT8 mReserved3:2; + UINT8 mReserved4[3]; + + bool mCommonStandalone:1; + + // Padding out 31 bits + UINT8 mReserved5:7; + UINT8 mReserved6[3]; + + INT8 mGSMUPNMRSupportEnabled; +}; + +// Structure to describe request TLV 0x01 for PDSSetAGNSSPositioningModes() +struct sPDSSetAGNSSPositioningModesRequest_Modes +{ + bool mUPMSBasedFor2GAnd3G:1; + bool mUPMSAssistedFor2GAnd3G:1; + bool mUPMSBasedFor4G:1; + bool mUPMSAssistedFor4G:1; + + // Padding out 28 bits + UINT8 mReserved1:4; + UINT8 mReserved2[3]; + + bool mCPMSBasedFor2G:1; + bool mCPMSAssistedFor2G:1; + bool mCPMSBasedFor3G:1; + bool mCPMSAssistedFor3G:1; + bool mCPMSBasedFor4G:1; + bool mCPMSAssistedFor4G:1; + + // Padding out 26 bits + UINT8 mReserved3:2; + UINT8 mReserved4[3]; + + bool mCommonStandalone:1; + + // Padding out 31 bits + UINT8 mReserved5:7; + UINT8 mReserved6[3]; + + INT8 mGSMUPNMRSupportEnabled; +}; + +// Structure to describe response TLV 0x10 for PDSGetEmergencyProtocolConfig() +struct sPDSGetEmergencyProtocolConfigResponse_Config +{ + eQMIPDSEmergencyProtocolConfigs mEmergencyProtocolConfig; +}; + +// Structure to describe request TLV 0x01 for PDSSetEmergencyProtocolConfig() +struct sPDSSetEmergencyProtocolConfigRequest_Config +{ + eQMIPDSEmergencyProtocolConfigs mEmergencyProtocolConfig; +}; + +// Structure to describe request TLV 0x01 for PDSGetAPNProfiles() +struct sPDSGetAPNProfilesRequest_APNType +{ + eQMIPDSAPNTypes mAPNType; +}; + +// Structure to describe response TLV 0x10 for PDSGetAPNProfiles() +struct sPDSGetAPNProfilesResponse_APNType +{ + eQMIPDSAPNTypes mAPNType; +}; + +// Structure to describe response TLV 0x11 for PDSGetAPNProfiles() +struct sPDSGetAPNProfilesResponse_WCDMAAPNInfo +{ + eQMIPDSPDNTypes mPDNType; + UINT8 mAPNNameLength; + + // This array must be the size specified by mAPNNameLength + // char mAPNName[1]; +}; + +// Structure to describe request TLV 0x01 for PDSSetAPNProfiles() +struct sPDSSetAPNProfilesRequest_APNType +{ + eQMIPDSAPNTypes mAPNType; +}; + +// Structure to describe request TLV 0x10 for PDSSetAPNProfiles() +struct sPDSSetAPNProfilesRequest_WCDMAAPNInfo +{ + eQMIPDSPDNTypes mPDNType; + UINT8 mAPNNameLength; + + // This array must be the size specified by mAPNNameLength + // char mAPNName[1]; +}; + +// Structure to describe response TLV 0x10 for PDSGetHomeSUPLAddress() +struct sPDSGetHomeSUPLAddressResponse_Address +{ + UINT8 mAddressLength; + + // This array must be the size specified by mAddressLength + // char mAddress[1]; +}; + +// Structure to describe request TLV 0x10 for PDSSetHomeSUPLAddress() +struct sPDSSetHomeSUPLAddressRequest_Address +{ + UINT8 mAddressLength; + + // This array must be the size specified by mAddressLength + // char mAddress[1]; +}; + +// Structure to describe request TLV 0x10 for PDSInjectVehicleSensorData() +struct sPDSInjectVehicleSensorDataRequest_AccelerometerData +{ + UINT32 mSensorSampleTimeBaseInMilliseconds; + bool mXAxisValid:1; + bool mYAxisValid:1; + bool mZAxisValid:1; + + // Padding out 61 bits + UINT8 mReserved1:5; + UINT8 mReserved2[7]; + + UINT8 mSensorDataCount; + + struct sSensorData + { + UINT32 mSampleTimeOffsetInMicroseconds; + UINT8 mAxisSampleCount; + + // This array must be the size specified by mAxisSampleCount + // float mAxisSample[1]; + }; + + // This array must be the size specified by mSensorDataCount + // sSensorData mSensorDatas[1]; +}; + +// Structure to describe request TLV 0x11 for PDSInjectVehicleSensorData() +struct sPDSInjectVehicleSensorDataRequest_AngularRotationData +{ + UINT32 mSensorSampleTimeBaseInMilliseconds; + bool mXAxisValid:1; + bool mYAxisValid:1; + bool mZAxisValid:1; + + // Padding out 61 bits + UINT8 mReserved1:5; + UINT8 mReserved2[7]; + + UINT8 mSensorDataCount; + + struct sSensorData + { + UINT32 mSampleTimeOffsetInMicroseconds; + UINT8 mAxisSampleCount; + + // This array must be the size specified by mAxisSampleCount + // float mAxisSample[1]; + }; + + // This array must be the size specified by mSensorDataCount + // sSensorData mSensorDatas[1]; +}; + +// Structure to describe request TLV 0x12 for PDSInjectVehicleSensorData() +struct sPDSInjectVehicleSensorDataRequest_OdometryData +{ + UINT32 mSensorSampleTimeBaseInMilliseconds; + bool mReverseMovement:1; + bool mAffectedByErrors:1; + bool mAbsoluteMeasurement:1; + + // Padding out 61 bits + UINT8 mReserved1:5; + UINT8 mReserved2[7]; + + bool mLeftAndRightAverageValid:1; + bool mLeftSideValid:1; + bool mRightSideValid:1; + + // Padding out 61 bits + UINT8 mReserved3:5; + UINT8 mReserved4[7]; + + UINT32 mDistanceTraveledBaseInMeters; + UINT8 mOdometryDataCount; + + struct sOdometryData + { + UINT32 mSampleTimeOffsetInMicroseconds; + UINT8 mDistanceTraveledCount; + + // This array must be the size specified by mDistanceTraveledCount + // UINT32 mDistanceTraveledInMillimeters[1]; + }; + + // This array must be the size specified by mOdometryDataCount + // sOdometryData mOdometryDatas[1]; +}; + +// Structure to describe request TLV 0x13 for PDSInjectVehicleSensorData() +struct sPDSInjectVehicleSensorDataRequest_ExternalTimeSyncInfo +{ + UINT32 mChangeInTimeScalesInMilliseconds; +}; + +// Structure to describe request TLV 0x01 for PDSInjectPedometerData() +struct sPDSInjectPedometerDataRequest_PedometerData +{ + eQMIPDSInjectTimeTypes mTimeType; + UINT64 mTimestampMilliseconds; + UINT32 mTimeIntervalInMilliseconds; + float mStepConfidence; + UINT32 mStepCount; + float mStepCountUncertainty; + float mStepRate; + float mStrideLength; + float mStrideLengthUncertainty; +}; + +// Structure to describe request TLV 0x10 for AUTHStartEAPSession() +struct sAUTHStartEAPSessionRequest_MethodMask +{ + bool mEAPSIM:1; + bool mEAPAKA:1; + + // Padding out 30 bits + UINT8 mReserved1:6; + UINT8 mReserved2[3]; +}; + +// Structure to describe request TLV 0x11 for AUTHStartEAPSession() +struct sAUTHStartEAPSessionRequest_UserID +{ + UINT8 mUserIDLength; + + // This array must be the size specified by mUserIDLength + // UINT8 mUserID[1]; +}; + +// Structure to describe request TLV 0x12 for AUTHStartEAPSession() +struct sAUTHStartEAPSessionRequest_MetaIdentity +{ + UINT8 mMetaIdentityLength; + + // This array must be the size specified by mMetaIdentityLength + // UINT8 mMetaIdentity[1]; +}; + +// Structure to describe request TLV 0x13 for AUTHStartEAPSession() +struct sAUTHStartEAPSessionRequest_SIMAKAAlgorithm +{ + eQMIAUTHSIMAKAAlgorithm mSIMAKAAlgorithm; +}; + +// Structure to describe request TLV 0x01 for AUTHSendEAPPacket() +struct sAUTHSendEAPPacketRequest_RequestPacket +{ + UINT8 mEAPRequestPacket[9999]; +}; + +// Structure to describe response TLV 0x01 for AUTHSendEAPPacket() +struct sAUTHSendEAPPacketResponse_ResponsePacket +{ + UINT8 mResponsePacket[9999]; +}; + +// Structure to describe indication TLV 0x01 for AUTH EAPSessionResultIndication +struct sAUTHEAPSessionResultIndication_Result +{ + eQMIAUTHEAPResult mResult; +}; + +// Structure to describe response TLV 0x01 for AUTHGetEAPSessionKeys() +struct sAUTHGetEAPSessionKeysResponse_SessionKeys +{ + UINT8 mSessionKeys[9999]; +}; + +// Structure to describe request TLV 0x01 for AUTHRunAKA() +struct sAUTHRunAKARequest_Version +{ + eQMIAUTHAKAVersion mAKAVersion; +}; + +// Structure to describe request TLV 0x10 for AUTHRunAKA() +struct sAUTHRunAKARequest_Parameters1 +{ + UINT8 mRandomChallengeLength; + + // This array must be the size specified by mRandomChallengeLength + // UINT8 mRandomChallenge[1]; +}; + +struct sAUTHRunAKARequest_Parameters2 +{ + UINT8 mAuthenticationTokenLength; + + // This array must be the size specified by mAuthenticationTokenLength + // UINT8 mAuthenticationToken[1]; +}; + +struct sAUTHRunAKARequest_Parameters +{ + sAUTHRunAKARequest_Parameters1 mAUTHRunAKARequest_Parameters1; + sAUTHRunAKARequest_Parameters2 mAUTHRunAKARequest_Parameters2; +}; + +// Structure to describe response TLV 0x01 for AUTHRunAKA() +struct sAUTHRunAKAResponse_Handle +{ + UINT32 mHandle; +}; + +// Structure to describe indication TLV 0x01 for AUTH AKAResultIndication +struct sAUTHAKAResultIndication_Result +{ + UINT32 mHandle; + eQMIAUTHAKAResult mResult; +}; + +// Structure to describe indication TLV 0x10 for AUTH AKAResultIndication +struct sAUTHAKAResultIndication_V1V2ResponseData1 +{ + UINT8 mDigestLength; + + // This array must be the size specified by mDigestLength + // UINT8 mDigest[1]; +}; + +struct sAUTHAKAResultIndication_V1V2ResponseData2 +{ + UINT8 mAKADataLength; + + // This array must be the size specified by mAKADataLength + // UINT8 mAKAData[1]; +}; + +struct sAUTHAKAResultIndication_V1V2ResponseData +{ + sAUTHAKAResultIndication_V1V2ResponseData1 mAUTHAKAResultIndication_V1V2ResponseData1; + sAUTHAKAResultIndication_V1V2ResponseData2 mAUTHAKAResultIndication_V1V2ResponseData2; +}; + +// Structure to describe request TLV 0x10 for VoiceIndicationRegistration() +struct sVoiceIndicationRegistrationRequest_DTMF +{ + INT8 mEnableEvents; +}; + +// Structure to describe request TLV 0x11 for VoiceIndicationRegistration() +struct sVoiceIndicationRegistrationRequest_VoicePrivacy +{ + INT8 mEnableEvents; +}; + +// Structure to describe request TLV 0x12 for VoiceIndicationRegistration() +struct sVoiceIndicationRegistrationRequest_SupplementaryService +{ + INT8 mEnableEvents; +}; + +// Structure to describe request TLV 0x13 for VoiceIndicationRegistration() +struct sVoiceIndicationRegistrationRequest_CallNotification +{ + INT8 mEnableEvents; +}; + +// Structure to describe request TLV 0x14 for VoiceIndicationRegistration() +struct sVoiceIndicationRegistrationRequest_Handover +{ + INT8 mEnableEvents; +}; + +// Structure to describe request TLV 0x15 for VoiceIndicationRegistration() +struct sVoiceIndicationRegistrationRequest_SpeechCodec +{ + INT8 mEnableEvents; +}; + +// Structure to describe request TLV 0x16 for VoiceIndicationRegistration() +struct sVoiceIndicationRegistrationRequest_USSDNotification +{ + INT8 mEnableEvents; +}; + +// Structure to describe request TLV 0x17 for VoiceIndicationRegistration() +struct sVoiceIndicationRegistrationRequest_Supplementary +{ + INT8 mEnableEvents; +}; + +// Structure to describe request TLV 0x18 for VoiceIndicationRegistration() +struct sVoiceIndicationRegistrationRequest_Modification +{ + INT8 mEnableEvents; +}; + +// Structure to describe request TLV 0x19 for VoiceIndicationRegistration() +struct sVoiceIndicationRegistrationRequest_UUS +{ + INT8 mEnableEvents; +}; + +// Structure to describe request TLV 0x1A for VoiceIndicationRegistration() +struct sVoiceIndicationRegistrationRequest_AOC +{ + INT8 mEnableEvents; +}; + +// Structure to describe request TLV 0x1B for VoiceIndicationRegistration() +struct sVoiceIndicationRegistrationRequest_Conference +{ + INT8 mEnableEvents; +}; + +// Structure to describe request TLV 0x1C for VoiceIndicationRegistration() +struct sVoiceIndicationRegistrationRequest_Burst +{ + INT8 mEnableEvents; +}; + +// Structure to describe request TLV 0x1D for VoiceIndicationRegistration() +struct sVoiceIndicationRegistrationRequest_PageMiss +{ + INT8 mEnableEvents; +}; + +// Structure to describe request TLV 0x1E for VoiceIndicationRegistration() +struct sVoiceIndicationRegistrationRequest_CallControlResultInfo +{ + INT8 mEnableEvents; +}; + +// Structure to describe request TLV 0x01 for VoiceCallOriginate() +struct sVoiceCallOriginateRequest_CallingNumber +{ + // String is variable length, but must be size of the container + // char mCallingNumber[1]; +}; + +// Structure to describe request TLV 0x10 for VoiceCallOriginate() +struct sVoiceCallOriginateRequest_CallType +{ + eQMIVoiceCallTypes mCallType; +}; + +// Structure to describe request TLV 0x11 for VoiceCallOriginate() +struct sVoiceCallOriginateRequest_CLIR +{ + eQMIVoiceCLIRTypes mCLIRType; +}; + +// Structure to describe request TLV 0x12 for VoiceCallOriginate() +struct sVoiceCallOriginateRequest_UUS +{ + eQMIVoiceUUSTypes mUUSType; + eQMIVoiceUUSDataCodingSchemes mUUSDCS; + UINT8 mUUSLength; + + // This array must be the size specified by mUUSLength + // UINT8 mUUSData[1]; +}; + +// Structure to describe request TLV 0x13 for VoiceCallOriginate() +struct sVoiceCallOriginateRequest_CUG +{ + UINT16 mCUGIndex; + INT8 mSuppressPreferentialCUG; + INT8 mSuppressOASubscription; +}; + +// Structure to describe request TLV 0x14 for VoiceCallOriginate() +struct sVoiceCallOriginateRequest_EmergencyCategory +{ + bool mPolice:1; + bool mAmbulance:1; + bool mFireBrigade:1; + bool mMarineGuard:1; + bool mMountainRescue:1; + bool mManualCall:1; + bool mAutomaticCall:1; + bool mReserved:1; +}; + +// Structure to describe request TLV 0x15 for VoiceCallOriginate() +struct sVoiceCallOriginateRequest_CalledPartySubaddress +{ + eQMIVoiceSubaddressTypes mSubaddressType; + eQMIVoiceEvenOddIndicators mAddressSignals; + UINT8 mSubaddressLength; + + // This array must be the size specified by mSubaddressLength + // UINT8 mSubaddress[1]; +}; + +// Structure to describe request TLV 0x16 for VoiceCallOriginate() +struct sVoiceCallOriginateRequest_ServiceType +{ + eQMIVoiceServiceTypes mServiceType; +}; + +// Structure to describe request TLV 0x17 for VoiceCallOriginate() +struct sVoiceCallOriginateRequest_SIPURIOverflow +{ + // String is variable length, but must be size of the container + // char mSIPURIOverflow[1]; +}; + +// Structure to describe request TLV 0x18 for VoiceCallOriginate() +struct sVoiceCallOriginateRequest_AudioAttribute +{ + bool mVoiceCallTX:1; + bool mVoiceCallRX:1; + + // Padding out 62 bits + UINT8 mReserved1:6; + UINT8 mReserved2[7]; +}; + +// Structure to describe request TLV 0x19 for VoiceCallOriginate() +struct sVoiceCallOriginateRequest_VideoAttribute +{ + bool mVoiceCallTX:1; + bool mVoiceCallRX:1; + + // Padding out 62 bits + UINT8 mReserved1:6; + UINT8 mReserved2[7]; +}; + +// Structure to describe request TLV 0x1A for VoiceCallOriginate() +struct sVoiceCallOriginateRequest_PresentationIndicator +{ + eQMIVoicePresentationIndicators32Bit mPresentationIndicator; +}; + +// Structure to describe request TLV 0x1B for VoiceCallOriginate() +struct sVoiceCallOriginateRequest_VideoshareCallAttributes +{ + eQMIVoiceVideoshareVariants mVideoshareVariant; + UINT16 mFileAttributesLength; + + // This array must be the size specified by mFileAttributesLength + // char mFileAttributes[1]; +}; + +// Structure to describe request TLV 0x1C for VoiceCallOriginate() +struct sVoiceCallOriginateRequest_ECallVariant +{ + eQMIVoiceECallVariants mECallVariant; +}; + +// Structure to describe request TLV 0x1D for VoiceCallOriginate() +struct sVoiceCallOriginateRequest_ConferenceURIList +{ + // String is variable length, but must be size of the container + // char mConferenceURIList[1]; +}; + +// Structure to describe response TLV 0x10 for VoiceCallOriginate() +struct sVoiceCallOriginateResponse_CallID +{ + UINT8 mCallID; +}; + +// Structure to describe response TLV 0x11 for VoiceCallOriginate() +struct sVoiceCallOriginateResponse_AlphaID +{ + eQMIVoiceUSSDAlphaCodingSchemes mAlphaDCS; + UINT8 mAlphaLength; + + // This array must be the size specified by mAlphaLength + // UINT8 mAlphaData[1]; +}; + +// Structure to describe response TLV 0x12 for VoiceCallOriginate() +struct sVoiceCallOriginateResponse_CallControl +{ + eQMIVoiceCallControlResultTypes mCallControlResult; +}; + +// Structure to describe response TLV 0x13 for VoiceCallOriginate() +struct sVoiceCallOriginateResponse_SupplementaryService +{ + eQMIVoiceSupplementaryServiceRequests mSupplementaryService; + eQMIVoiceSupplementaryServiceReasons mReason; +}; + +// Structure to describe response TLV 0x14 for VoiceCallOriginate() +struct sVoiceCallOriginateResponse_EndReason +{ + eQMIVoiceEndReasons mEndReason; +}; + +// Structure to describe request TLV 0x01 for VoiceCallEnd() +struct sVoiceCallEndRequest_CallID +{ + UINT8 mCallID; +}; + +// Structure to describe response TLV 0x10 for VoiceCallEnd() +struct sVoiceCallEndResponse_CallID +{ + UINT8 mCallID; +}; + +// Structure to describe request TLV 0x01 for VoiceCallAnswer() +struct sVoiceCallAnswerRequest_CallID +{ + UINT8 mCallID; +}; + +// Structure to describe request TLV 0x10 for VoiceCallAnswer() +struct sVoiceCallAnswerRequest_CallType +{ + eQMIVoiceCallTypes mCallType; +}; + +// Structure to describe request TLV 0x11 for VoiceCallAnswer() +struct sVoiceCallAnswerRequest_AudioAttribute +{ + bool mVoiceCallTX:1; + bool mVoiceCallRX:1; + + // Padding out 62 bits + UINT8 mReserved1:6; + UINT8 mReserved2[7]; +}; + +// Structure to describe request TLV 0x12 for VoiceCallAnswer() +struct sVoiceCallAnswerRequest_VideoAttribute +{ + bool mVoiceCallTX:1; + bool mVoiceCallRX:1; + + // Padding out 62 bits + UINT8 mReserved1:6; + UINT8 mReserved2[7]; +}; + +// Structure to describe request TLV 0x13 for VoiceCallAnswer() +struct sVoiceCallAnswerRequest_PresentationIndicator +{ + eQMIVoicePresentationIndicators32Bit mPresentationIndicator; +}; + +// Structure to describe request TLV 0x14 for VoiceCallAnswer() +struct sVoiceCallAnswerRequest_VideoshareFileAttributes +{ + // String is variable length, but must be size of the container + // char mFileAttributes[1]; +}; + +// Structure to describe request TLV 0x15 for VoiceCallAnswer() +struct sVoiceCallAnswerRequest_RejectCall +{ + INT8 mRejectCall; +}; + +// Structure to describe response TLV 0x10 for VoiceCallAnswer() +struct sVoiceCallAnswerResponse_CallID +{ + UINT8 mCallID; +}; + +// Structure to describe request TLV 0x01 for VoiceGetCallInfo() +struct sVoiceGetCallInfoRequest_CallID +{ + UINT8 mCallID; +}; + +// Structure to describe response TLV 0x10 for VoiceGetCallInfo() +struct sVoiceGetCallInfoResponse_CallInfo +{ + UINT8 mCallID; + eQMIVoiceCallStates mCallState; + eQMIVoiceCallTypes mCallType; + eQMIVoiceCallDirections mDirection; + eQMIVoiceCallModes mMode; +}; + +// Structure to describe response TLV 0x11 for VoiceGetCallInfo() +struct sVoiceGetCallInfoResponse_RemotePartyNumber +{ + eQMIVoicePresentationIndicators mPresentationIndicator; + UINT8 mNumberLength; + + // This array must be the size specified by mNumberLength + // char mNumber[1]; +}; + +// Structure to describe response TLV 0x12 for VoiceGetCallInfo() +struct sVoiceGetCallInfoResponse_ServiceOption +{ + UINT16 mServiceOption; +}; + +// Structure to describe response TLV 0x13 for VoiceGetCallInfo() +struct sVoiceGetCallInfoResponse_VoicePrivacy +{ + eQMIVoicePrivacyLevels mVoicePrivacy; +}; + +// Structure to describe response TLV 0x14 for VoiceGetCallInfo() +struct sVoiceGetCallInfoResponse_OTASPStatus +{ + eQMIVoiceOTASPStati mOTASPStatus; +}; + +// Structure to describe response TLV 0x15 for VoiceGetCallInfo() +struct sVoiceGetCallInfoResponse_RemotePartyName +{ + eQMIVoicePresentationIndicators mPresentationIndicator; + UINT8 mCodingScheme; + UINT8 mCallerNameLength; + + // This array must be the size specified by mCallerNameLength + // UINT8 mCallerName[1]; +}; + +// Structure to describe response TLV 0x16 for VoiceGetCallInfo() +struct sVoiceGetCallInfoResponse_UUS +{ + eQMIVoiceUUSTypes mUUSType; + eQMIVoiceUUSDataCodingSchemes mUUSDCS; + UINT8 mUUSLength; + + // This array must be the size specified by mUUSLength + // UINT8 mUUSData[1]; +}; + +// Structure to describe response TLV 0x17 for VoiceGetCallInfo() +struct sVoiceGetCallInfoResponse_AlertingType +{ + eQMIVoiceAlertingTypes mAlertingType; +}; + +// Structure to describe response TLV 0x18 for VoiceGetCallInfo() +struct sVoiceGetCallInfoResponse_AlphaID +{ + eQMIVoiceUSSDAlphaCodingSchemes mAlphaDCS; + UINT8 mAlphaLength; + + // This array must be the size specified by mAlphaLength + // UINT8 mAlphaData[1]; +}; + +// Structure to describe response TLV 0x19 for VoiceGetCallInfo() +struct sVoiceGetCallInfoResponse_ConnectedNumberInfo +{ + UINT8 mPresentationIndicator; + eQMIVoiceScreeningIndicators mScreeningIndicator; + eQMIVoiceNumberTypes mNumberType; + eQMIVoiceNumberPlans mNumberPlan; + UINT8 mNumberLength; + + // This array must be the size specified by mNumberLength + // char mNumber[1]; +}; + +// Structure to describe response TLV 0x1A for VoiceGetCallInfo() +struct sVoiceGetCallInfoResponse_DiagnosticInfo +{ + UINT8 mDiagnosticInfoLength; + + // This array must be the size specified by mDiagnosticInfoLength + // UINT8 mDiagnosticInfo[1]; +}; + +// Structure to describe response TLV 0x1B for VoiceGetCallInfo() +struct sVoiceGetCallInfoResponse_AlertingPattern +{ + eQMIVoiceAlertingPatterns mAlertingPattern; +}; + +// Structure to describe response TLV 0x1C for VoiceGetCallInfo() +struct sVoiceGetCallInfoResponse_AudioAttribute +{ + bool mVoiceCallTX:1; + bool mVoiceCallRX:1; + + // Padding out 62 bits + UINT8 mReserved1:6; + UINT8 mReserved2[7]; +}; + +// Structure to describe response TLV 0x1D for VoiceGetCallInfo() +struct sVoiceGetCallInfoResponse_VideoAttribute +{ + bool mVoiceCallTX:1; + bool mVoiceCallRX:1; + + // Padding out 62 bits + UINT8 mReserved1:6; + UINT8 mReserved2[7]; +}; + +// Structure to describe response TLV 0x1E for VoiceGetCallInfo() +struct sVoiceGetCallInfoResponse_VideoshareVariant +{ + eQMIVoiceVideoshareVariants mVideoshareVariant; +}; + +// Structure to describe response TLV 0x1F for VoiceGetCallInfo() +struct sVoiceGetCallInfoResponse_SIPURI +{ + // String is variable length, but must be size of the container + // char mSIPURI[1]; +}; + +// Structure to describe response TLV 0x20 for VoiceGetCallInfo() +struct sVoiceGetCallInfoResponse_SRVCCCall +{ + INT8 mSRVCCCall; +}; + +// Structure to describe indication TLV 0x10 for Voice OTASPIndication +struct sVoiceOTASPIndication_OTASPStatus +{ + UINT8 mCallID; + eQMIVoiceOTASPStati mOTASPStatus; +}; + +// Structure to describe indication TLV 0x01 for Voice InfoRecordIndication +struct sVoiceInfoRecordIndication_CallID +{ + UINT8 mCallID; +}; + +// Structure to describe indication TLV 0x10 for Voice InfoRecordIndication +struct sVoiceInfoRecordIndication_Signal +{ + UINT8 mSignalType; + UINT8 mAlertPitch; + UINT8 mSignal; +}; + +// Structure to describe indication TLV 0x11 for Voice InfoRecordIndication +struct sVoiceInfoRecordIndication_CallerID +{ + UINT8 mPresentationIndicator; + UINT8 mCallerIDLength; + + // This array must be the size specified by mCallerIDLength + // char mCallerID[1]; +}; + +// Structure to describe indication TLV 0x12 for Voice InfoRecordIndication +struct sVoiceInfoRecordIndication_Display +{ + // String is variable length, but must be size of the container + // char mDisplayBuffer[1]; +}; + +// Structure to describe indication TLV 0x13 for Voice InfoRecordIndication +struct sVoiceInfoRecordIndication_ExtendedDisplay +{ + UINT8 mExtendedDisplayBuffer[182]; +}; + +// Structure to describe indication TLV 0x14 for Voice InfoRecordIndication +struct sVoiceInfoRecordIndication_CallerName +{ + // String is variable length, but must be size of the container + // char mCallerName[1]; +}; + +// Structure to describe indication TLV 0x15 for Voice InfoRecordIndication +struct sVoiceInfoRecordIndication_CallWaiting +{ + INT8 mNewCallWaiting; +}; + +// Structure to describe indication TLV 0x16 for Voice InfoRecordIndication +struct sVoiceInfoRecordIndication_ConnectedNumberInfo +{ + UINT8 mPresentationIndicator; + eQMIVoiceScreeningIndicators mScreeningIndicator; + eQMIVoiceNumberTypes mNumberType; + eQMIVoiceNumberPlans mNumberPlan; + UINT8 mNumberLength; + + // This array must be the size specified by mNumberLength + // char mNumber[1]; +}; + +// Structure to describe indication TLV 0x17 for Voice InfoRecordIndication +struct sVoiceInfoRecordIndication_CallingPartyNumberInfo +{ + UINT8 mPresentationIndicator; + eQMIVoiceScreeningIndicators mScreeningIndicator; + eQMIVoiceNumberTypes mNumberType; + eQMIVoiceNumberPlans mNumberPlan; + UINT8 mNumberLength; + + // This array must be the size specified by mNumberLength + // char mNumber[1]; +}; + +// Structure to describe indication TLV 0x18 for Voice InfoRecordIndication +struct sVoiceInfoRecordIndication_CalledPartyNumberInfo +{ + UINT8 mPresentationIndicator; + eQMIVoiceScreeningIndicators mScreeningIndicator; + eQMIVoiceNumberTypes mNumberType; + eQMIVoiceNumberPlans mNumberPlan; + UINT8 mNumberLength; + + // This array must be the size specified by mNumberLength + // char mNumber[1]; +}; + +// Structure to describe indication TLV 0x19 for Voice InfoRecordIndication +struct sVoiceInfoRecordIndication_RedirectingNumberInfo +{ + UINT8 mPresentationIndicator; + eQMIVoiceScreeningIndicators mScreeningIndicator; + eQMIVoiceNumberTypes mNumberType; + eQMIVoiceNumberPlans mNumberPlan; + UINT8 mRedirectReason; + UINT8 mNumberLength; + + // This array must be the size specified by mNumberLength + // char mNumber[1]; +}; + +// Structure to describe indication TLV 0x1A for Voice InfoRecordIndication +struct sVoiceInfoRecordIndication_CLIRCause +{ + eQMIVoiceCLIRCauses mCLIRCause; +}; + +// Structure to describe indication TLV 0x1B for Voice InfoRecordIndication +struct sVoiceInfoRecordIndication_NSSAudio +{ + UINT8 mUpLink; + UINT8 mDownLink; +}; + +// Structure to describe indication TLV 0x1C for Voice InfoRecordIndication +struct sVoiceInfoRecordIndication_NSSRelease +{ + eQMIVoiceNSSReleases mNSSRelease; +}; + +// Structure to describe indication TLV 0x1D for Voice InfoRecordIndication +struct sVoiceInfoRecordIndication_LineControlInfo +{ + INT8 mPolarityIncluded; + INT8 mToggleMode; + INT8 mReversePolarity; + UINT8 mPowerDenialTime; +}; + +// Structure to describe indication TLV 0x1E for Voice InfoRecordIndication +struct sVoiceInfoRecordIndication_ExtendedDisplayInfo +{ + UINT8 mDisplayType; + UINT8 mExtendedDisplayInfoLength; + + // This array must be the size specified by mExtendedDisplayInfoLength + // UINT8 mExtendedDisplayInfo[1]; +}; + +// Structure to describe request TLV 0x01 for VoiceSendFlash() +struct sVoiceSendFlashRequest_CallID +{ + UINT8 mCallID; +}; + +// Structure to describe request TLV 0x10 for VoiceSendFlash() +struct sVoiceSendFlashRequest_Payload +{ + // String is variable length, but must be size of the container + // char mFlashPayload[1]; +}; + +// Structure to describe request TLV 0x11 for VoiceSendFlash() +struct sVoiceSendFlashRequest_Type +{ + eQMIVoiceFlashTypes mFlashType; +}; + +// Structure to describe response TLV 0x10 for VoiceSendFlash() +struct sVoiceSendFlashResponse_CallID +{ + UINT8 mCallID; +}; + +// Structure to describe request TLV 0x01 for VoiceBurstDTMF() +struct sVoiceBurstDTMFRequest_Info +{ + UINT8 mCallID; + UINT8 mDTMFBufferLength; + + // This array must be the size specified by mDTMFBufferLength + // char mDTMFBuffer[1]; +}; + +// Structure to describe request TLV 0x10 for VoiceBurstDTMF() +struct sVoiceBurstDTMFRequest_Lengths +{ + eQMIVoicePulseWidths mDTMFPulseWidth; + eQMIVoiceInterdigitIntervals mDTMFInterdigitInterval; +}; + +// Structure to describe request TLV 0x01 for VoiceStartContinuousDTMF() +struct sVoiceStartContinuousDTMFRequest_Info +{ + UINT8 mCallID; + char mDTMFDigit; +}; + +// Structure to describe response TLV 0x10 for VoiceStartContinuous() +struct sVoiceStartContinuousResponse_CallID +{ + UINT8 mCallID; +}; + +// Structure to describe request TLV 0x01 for VoiceStopContinuousDTMF() +struct sVoiceStopContinuousDTMFRequest_CallID +{ + UINT8 mCallID; +}; + +// Structure to describe response TLV 0x10 for VoiceStopContinuous() +struct sVoiceStopContinuousResponse_CallID +{ + UINT8 mCallID; +}; + +// Structure to describe indication TLV 0x01 for Voice DTMFIndication +struct sVoiceDTMFIndication_DTMFInfo +{ + UINT8 mCallID; + eQMIVoiceDTMFEvents mDTMFEvent; + UINT8 mDTMFBufferLength; + + // This array must be the size specified by mDTMFBufferLength + // char mDTMFBuffer[1]; +}; + +// Structure to describe indication TLV 0x10 for Voice DTMFIndication +struct sVoiceDTMFIndication_Lengths +{ + eQMIVoicePulseWidths mDTMFPulseWidth; + eQMIVoiceInterdigitIntervals mDTMFInterdigitInterval; +}; + +// Structure to describe request TLV 0x01 for VoiceSetPreferredPrivacy() +struct sVoiceSetPreferredPrivacyRequest_Preference +{ + eQMIVoiceDTMFPrivacyLevels mPrivacyLevel; +}; + +// Structure to describe indication TLV 0x01 for Voice PrivacyIndication +struct sVoicePrivacyIndication_DTMFInfo +{ + UINT8 mCallID; + eQMIVoiceDTMFPrivacyLevels mPrivacyLevel; +}; + +// Structure to describe indication TLV 0x01 for Voice AllCallStatusIndication +struct sVoiceAllCallStatusIndication_CallInfo +{ + UINT8 mCallInstanceCount; + + struct sInstance + { + UINT8 mCallID; + eQMIVoiceCallStates mCallState; + eQMIVoiceCallTypes mCallType; + eQMIVoiceCallDirections mDirection; + eQMIVoiceCallModes mMode; + INT8 mMultiparty; + eQMIVoiceALSLineIndicators mALSLineIndicator; + }; + + // This array must be the size specified by mCallInstanceCount + // sInstance mInstances[1]; +}; + +// Structure to describe indication TLV 0x10 for Voice AllCallStatusIndication +struct sVoiceAllCallStatusIndication_RemotePartyNumber +{ + UINT8 mCallInstanceCount; + + struct sInstance + { + UINT8 mCallID; + eQMIVoicePresentationIndicators mPresentationIndicator; + UINT8 mNumberLength; + + // This array must be the size specified by mNumberLength + // char mNumber[1]; + }; + + // This array must be the size specified by mCallInstanceCount + // sInstance mInstances[1]; +}; + +// Structure to describe indication TLV 0x11 for Voice AllCallStatusIndication +struct sVoiceAllCallStatusIndication_RemotePartyName +{ + UINT8 mCallInstanceCount; + + struct sInstance + { + UINT8 mCallID; + eQMIVoicePresentationIndicators mPresentationIndicator; + UINT8 mCodingScheme; + UINT8 mCallerNameLength; + + // This array must be the size specified by mCallerNameLength + // UINT8 mCallerName[1]; + }; + + // This array must be the size specified by mCallInstanceCount + // sInstance mInstances[1]; +}; + +// Structure to describe indication TLV 0x12 for Voice AllCallStatusIndication +struct sVoiceAllCallStatusIndication_AlertingType +{ + UINT8 mCallInstanceCount; + + struct sInstance + { + UINT8 mCallID; + eQMIVoiceAlertingTypes mAlertingType; + }; + + // This array must be the size specified by mCallInstanceCount + // sInstance mInstances[1]; +}; + +// Structure to describe indication TLV 0x13 for Voice AllCallStatusIndication +struct sVoiceAllCallStatusIndication_ServiceOption +{ + UINT8 mCallInstanceCount; + + struct sInstance + { + UINT8 mCallID; + UINT16 mServiceOption; + }; + + // This array must be the size specified by mCallInstanceCount + // sInstance mInstances[1]; +}; + +// Structure to describe indication TLV 0x14 for Voice AllCallStatusIndication +struct sVoiceAllCallStatusIndication_CallEndReason +{ + UINT8 mCallInstanceCount; + + struct sInstance + { + UINT8 mCallID; + eQMIVoiceEndReasons mEndReason; + }; + + // This array must be the size specified by mCallInstanceCount + // sInstance mInstances[1]; +}; + +// Structure to describe indication TLV 0x15 for Voice AllCallStatusIndication +struct sVoiceAllCallStatusIndication_AlphaID +{ + UINT8 mCallInstanceCount; + + struct sInstance + { + UINT8 mCallID; + eQMIVoiceUSSDAlphaCodingSchemes mAlphaDCS; + UINT8 mAlphaLength; + + // This array must be the size specified by mAlphaLength + // UINT8 mAlphaData[1]; + }; + + // This array must be the size specified by mCallInstanceCount + // sInstance mInstances[1]; +}; + +// Structure to describe indication TLV 0x16 for Voice AllCallStatusIndication +struct sVoiceAllCallStatusIndication_ConnectedNumberInfo +{ + UINT8 mCallInstanceCount; + + struct sInstance + { + UINT8 mCallID; + UINT8 mPresentationIndicator; + eQMIVoiceScreeningIndicators mScreeningIndicator; + eQMIVoiceNumberTypes mNumberType; + eQMIVoiceNumberPlans mNumberPlan; + UINT8 mNumberLength; + + // This array must be the size specified by mNumberLength + // char mNumber[1]; + }; + + // This array must be the size specified by mCallInstanceCount + // sInstance mInstances[1]; +}; + +// Structure to describe indication TLV 0x17 for Voice AllCallStatusIndication +struct sVoiceAllCallStatusIndication_DiagnosticInfo +{ + UINT8 mCallInstanceCount; + + struct sInstance + { + UINT8 mCallID; + UINT8 mDiagnosticInfoLength; + + // This array must be the size specified by mDiagnosticInfoLength + // UINT8 mDiagnosticInfo[1]; + }; + + // This array must be the size specified by mCallInstanceCount + // sInstance mInstances[1]; +}; + +// Structure to describe indication TLV 0x18 for Voice AllCallStatusIndication +struct sVoiceAllCallStatusIndication_CalledPartyNumberInfo +{ + UINT8 mCallInstanceCount; + + struct sInstance + { + UINT8 mCallID; + UINT8 mPresentationIndicator; + eQMIVoiceScreeningIndicators mScreeningIndicator; + eQMIVoiceNumberTypes mNumberType; + eQMIVoiceNumberPlans mNumberPlan; + UINT8 mNumberLength; + + // This array must be the size specified by mNumberLength + // char mNumber[1]; + }; + + // This array must be the size specified by mCallInstanceCount + // sInstance mInstances[1]; +}; + +// Structure to describe indication TLV 0x19 for Voice AllCallStatusIndication +struct sVoiceAllCallStatusIndication_RedirectingNumberInfo +{ + UINT8 mCallInstanceCount; + + struct sInstance + { + UINT8 mCallID; + UINT8 mPresentationIndicator; + eQMIVoiceScreeningIndicators mScreeningIndicator; + eQMIVoiceNumberTypes mNumberType; + eQMIVoiceNumberPlans mNumberPlan; + UINT8 mNumberLength; + + // This array must be the size specified by mNumberLength + // char mNumber[1]; + }; + + // This array must be the size specified by mCallInstanceCount + // sInstance mInstances[1]; +}; + +// Structure to describe indication TLV 0x1A for Voice AllCallStatusIndication +struct sVoiceAllCallStatusIndication_AlertingPattern +{ + UINT8 mCallInstanceCount; + + struct sInstance + { + UINT8 mCallID; + eQMIVoiceAlertingPatterns mAlertingPattern; + }; + + // This array must be the size specified by mCallInstanceCount + // sInstance mInstances[1]; +}; + +// Structure to describe indication TLV 0x1B for Voice AllCallStatusIndication +struct sVoiceAllCallStatusIndication_AudioAttributesArray +{ + UINT8 mAttributesCount; + + struct sAttributes + { + UINT8 mCallID; + bool mVoiceCallTX:1; + bool mVoiceCallRX:1; + + // Padding out 62 bits + UINT8 mReserved1:6; + UINT8 mReserved2[7]; + }; + + // This array must be the size specified by mAttributesCount + // sAttributes mAttributeses[1]; +}; + +// Structure to describe indication TLV 0x1C for Voice AllCallStatusIndication +struct sVoiceAllCallStatusIndication_VideoAttributesArray +{ + UINT8 mAttributesCount; + + struct sAttributes + { + UINT8 mCallID; + bool mVoiceCallTX:1; + bool mVoiceCallRX:1; + + // Padding out 62 bits + UINT8 mReserved1:6; + UINT8 mReserved2[7]; + }; + + // This array must be the size specified by mAttributesCount + // sAttributes mAttributeses[1]; +}; + +// Structure to describe indication TLV 0x1D for Voice AllCallStatusIndication +struct sVoiceAllCallStatusIndication_VideoshareVariant +{ + UINT8 mVideoshareVariantCount; + + struct sVariant + { + UINT8 mCallID; + eQMIVoiceVideoshareVariants mVideoshareVariant; + }; + + // This array must be the size specified by mVideoshareVariantCount + // sVariant mVariants[1]; +}; + +// Structure to describe indication TLV 0x1E for Voice AllCallStatusIndication +struct sVoiceAllCallStatusIndication_SIPURI +{ + UINT8 mSIPURICount; + + struct sSIP + { + UINT8 mCallID; + UINT8 mSIPURILength; + + // This array must be the size specified by mSIPURILength + // char mSIPURI[1]; + }; + + // This array must be the size specified by mSIPURICount + // sSIP mSIPs[1]; +}; + +// Structure to describe indication TLV 0x1F for Voice AllCallStatusIndication +struct sVoiceAllCallStatusIndication_SRVCC +{ + UINT8 mSRVCCCount; + + struct sSRVCC + { + UINT8 mCallID; + INT8 mSRVCCCall; + }; + + // This array must be the size specified by mSRVCCCount + // sSRVCC mSRVCCs[1]; +}; + +// Structure to describe indication TLV 0x20 for Voice AllCallStatusIndication +struct sVoiceAllCallStatusIndication_ParentCallInfo +{ + UINT8 mCallInstanceCount; + + struct sCall + { + UINT8 mCallID; + UINT8 mParentCallID; + INT8 mIsParentCallCleared; + }; + + // This array must be the size specified by mCallInstanceCount + // sCall mCalls[1]; +}; + +// Structure to describe response TLV 0x10 for VoiceGetAllCallInfo() +struct sVoiceGetAllCallInfoResponse_CallInfo +{ + UINT8 mCallInstanceCount; + + struct sInstance + { + UINT8 mCallID; + eQMIVoiceCallStates mCallState; + eQMIVoiceCallTypes mCallType; + eQMIVoiceCallDirections mDirection; + eQMIVoiceCallModes mMode; + INT8 mMultiparty; + eQMIVoiceALSLineIndicators mALSLineIndicator; + }; + + // This array must be the size specified by mCallInstanceCount + // sInstance mInstances[1]; +}; + +// Structure to describe response TLV 0x11 for VoiceGetAllCallInfo() +struct sVoiceGetAllCallInfoResponse_RemotePartyNumber +{ + UINT8 mCallInstanceCount; + + struct sInstance + { + UINT8 mCallID; + eQMIVoicePresentationIndicators mPresentationIndicator; + UINT8 mNumberLength; + + // This array must be the size specified by mNumberLength + // char mNumber[1]; + }; + + // This array must be the size specified by mCallInstanceCount + // sInstance mInstances[1]; +}; + +// Structure to describe response TLV 0x12 for VoiceGetAllCallInfo() +struct sVoiceGetAllCallInfoResponse_RemotePartyName +{ + UINT8 mCallInstanceCount; + + struct sInstance + { + UINT8 mCallID; + eQMIVoicePresentationIndicators mPresentationIndicator; + UINT8 mCodingScheme; + UINT8 mCallerNameLength; + + // This array must be the size specified by mCallerNameLength + // UINT8 mCallerName[1]; + }; + + // This array must be the size specified by mCallInstanceCount + // sInstance mInstances[1]; +}; + +// Structure to describe response TLV 0x13 for VoiceGetAllCallInfo() +struct sVoiceGetAllCallInfoResponse_AlertingType +{ + UINT8 mCallInstanceCount; + + struct sInstance + { + UINT8 mCallID; + eQMIVoiceAlertingTypes mAlertingType; + }; + + // This array must be the size specified by mCallInstanceCount + // sInstance mInstances[1]; +}; + +// Structure to describe response TLV 0x14 for VoiceGetAllCallInfo() +struct sVoiceGetAllCallInfoResponse_UUS +{ + UINT8 mCallInstanceCount; + + struct sInstance + { + UINT8 mCallID; + eQMIVoiceUUSTypes mUUSType; + eQMIVoiceUUSDataCodingSchemes mUUSDCS; + UINT8 mUUSLength; + + // This array must be the size specified by mUUSLength + // UINT8 mUUSData[1]; + }; + + // This array must be the size specified by mCallInstanceCount + // sInstance mInstances[1]; +}; + +// Structure to describe response TLV 0x15 for VoiceGetAllCallInfo() +struct sVoiceGetAllCallInfoResponse_ServiceOption +{ + UINT8 mCallInstanceCount; + + struct sInstance + { + UINT8 mCallID; + UINT16 mServiceOption; + }; + + // This array must be the size specified by mCallInstanceCount + // sInstance mInstances[1]; +}; + +// Structure to describe response TLV 0x16 for VoiceGetAllCallInfo() +struct sVoiceGetAllCallInfoResponse_OTASPStatus +{ + eQMIVoiceOTASPStati mOTASPStatus; +}; + +// Structure to describe response TLV 0x17 for VoiceGetAllCallInfo() +struct sVoiceGetAllCallInfoResponse_VoicePrivacy +{ + eQMIVoicePrivacyLevels mVoicePrivacy; +}; + +// Structure to describe response TLV 0x18 for VoiceGetAllCallInfo() +struct sVoiceGetAllCallInfoResponse_CallEndReason +{ + UINT8 mCallInstanceCount; + + struct sInstance + { + UINT8 mCallID; + eQMIVoiceEndReasons mEndReason; + }; + + // This array must be the size specified by mCallInstanceCount + // sInstance mInstances[1]; +}; + +// Structure to describe response TLV 0x19 for VoiceGetAllCallInfo() +struct sVoiceGetAllCallInfoResponse_AlphaID +{ + UINT8 mCallInstanceCount; + + struct sInstance + { + UINT8 mCallID; + eQMIVoiceUSSDAlphaCodingSchemes mAlphaDCS; + UINT8 mAlphaLength; + + // This array must be the size specified by mAlphaLength + // UINT8 mAlphaData[1]; + }; + + // This array must be the size specified by mCallInstanceCount + // sInstance mInstances[1]; +}; + +// Structure to describe response TLV 0x1A for VoiceGetAllCallInfo() +struct sVoiceGetAllCallInfoResponse_ConnectedNumberInfo +{ + UINT8 mCallInstanceCount; + + struct sInstance + { + UINT8 mCallID; + UINT8 mPresentationIndicator; + eQMIVoiceScreeningIndicators mScreeningIndicator; + eQMIVoiceNumberTypes mNumberType; + eQMIVoiceNumberPlans mNumberPlan; + UINT8 mNumberLength; + + // This array must be the size specified by mNumberLength + // char mNumber[1]; + }; + + // This array must be the size specified by mCallInstanceCount + // sInstance mInstances[1]; +}; + +// Structure to describe response TLV 0x1B for VoiceGetAllCallInfo() +struct sVoiceGetAllCallInfoResponse_DiagnosticInfo +{ + UINT8 mCallInstanceCount; + + struct sInstance + { + UINT8 mCallID; + UINT8 mDiagnosticInfoLength; + + // This array must be the size specified by mDiagnosticInfoLength + // UINT8 mDiagnosticInfo[1]; + }; + + // This array must be the size specified by mCallInstanceCount + // sInstance mInstances[1]; +}; + +// Structure to describe response TLV 0x1C for VoiceGetAllCallInfo() +struct sVoiceGetAllCallInfoResponse_CalledPartyNumberInfo +{ + UINT8 mCallInstanceCount; + + struct sInstance + { + UINT8 mCallID; + UINT8 mPresentationIndicator; + eQMIVoiceScreeningIndicators mScreeningIndicator; + eQMIVoiceNumberTypes mNumberType; + eQMIVoiceNumberPlans mNumberPlan; + UINT8 mNumberLength; + + // This array must be the size specified by mNumberLength + // char mNumber[1]; + }; + + // This array must be the size specified by mCallInstanceCount + // sInstance mInstances[1]; +}; + +// Structure to describe response TLV 0x1D for VoiceGetAllCallInfo() +struct sVoiceGetAllCallInfoResponse_RedirectingNumberInfo +{ + UINT8 mCallInstanceCount; + + struct sInstance + { + UINT8 mCallID; + UINT8 mPresentationIndicator; + eQMIVoiceScreeningIndicators mScreeningIndicator; + eQMIVoiceNumberTypes mNumberType; + eQMIVoiceNumberPlans mNumberPlan; + UINT8 mNumberLength; + + // This array must be the size specified by mNumberLength + // char mNumber[1]; + }; + + // This array must be the size specified by mCallInstanceCount + // sInstance mInstances[1]; +}; + +// Structure to describe response TLV 0x1E for VoiceGetAllCallInfo() +struct sVoiceGetAllCallInfoResponse_AlertingPattern +{ + UINT8 mCallInstanceCount; + + struct sInstance + { + UINT8 mCallID; + eQMIVoiceAlertingPatterns mAlertingPattern; + }; + + // This array must be the size specified by mCallInstanceCount + // sInstance mInstances[1]; +}; + +// Structure to describe response TLV 0x1F for VoiceGetAllCallInfo() +struct sVoiceGetAllCallInfoResponse_AudioAttributesArray +{ + UINT8 mAttributesCount; + + struct sAttributes + { + UINT8 mCallID; + bool mVoiceCallTX:1; + bool mVoiceCallRX:1; + + // Padding out 62 bits + UINT8 mReserved1:6; + UINT8 mReserved2[7]; + }; + + // This array must be the size specified by mAttributesCount + // sAttributes mAttributeses[1]; +}; + +// Structure to describe response TLV 0x20 for VoiceGetAllCallInfo() +struct sVoiceGetAllCallInfoResponse_VideoAttributesArray +{ + UINT8 mAttributesCount; + + struct sAttributes + { + UINT8 mCallID; + bool mVoiceCallTX:1; + bool mVoiceCallRX:1; + + // Padding out 62 bits + UINT8 mReserved1:6; + UINT8 mReserved2[7]; + }; + + // This array must be the size specified by mAttributesCount + // sAttributes mAttributeses[1]; +}; + +// Structure to describe response TLV 0x21 for VoiceGetAllCallInfo() +struct sVoiceGetAllCallInfoResponse_VideoshareVariant +{ + UINT8 mVideoshareVariantCount; + + struct sVariant + { + UINT8 mCallID; + eQMIVoiceVideoshareVariants mVideoshareVariant; + }; + + // This array must be the size specified by mVideoshareVariantCount + // sVariant mVariants[1]; +}; + +// Structure to describe response TLV 0x22 for VoiceGetAllCallInfo() +struct sVoiceGetAllCallInfoResponse_SIPURI +{ + UINT8 mSIPURICount; + + struct sSIP + { + UINT8 mCallID; + UINT8 mSIPURILength; + + // This array must be the size specified by mSIPURILength + // char mSIPURI[1]; + }; + + // This array must be the size specified by mSIPURICount + // sSIP mSIPs[1]; +}; + +// Structure to describe response TLV 0x23 for VoiceGetAllCallInfo() +struct sVoiceGetAllCallInfoResponse_SRVCC +{ + UINT8 mSRVCCCount; + + struct sSRVCC + { + UINT8 mCallID; + INT8 mSRVCCCall; + }; + + // This array must be the size specified by mSRVCCCount + // sSRVCC mSRVCCs[1]; +}; + +// Structure to describe request TLV 0x01 for VoiceManageCalls() +struct sVoiceManageCallsRequest_Info +{ + eQMIVoiceSupplementaryServiceCallTypes mSupplementaryServiceType; +}; + +// Structure to describe request TLV 0x10 for VoiceManageCalls() +struct sVoiceManageCallsRequest_CallID +{ + UINT8 mCallID; +}; + +// Structure to describe response TLV 0x10 for VoiceManageCalls() +struct sVoiceManageCallsResponse_FailureCause +{ + eQMIVoiceEndReasons mFailureCause; +}; + +// Structure to describe indication TLV 0x01 for Voice SupplementaryServiceIndication +struct sVoiceSupplementaryServiceIndication_Info +{ + UINT8 mCallID; + eQMIVoiceSupplementaryNotificationTypes mNotificationType; +}; + +// Structure to describe indication TLV 0x10 for Voice SupplementaryServiceIndication +struct sVoiceSupplementaryServiceIndication_CUG +{ + UINT16 mCUGIndex; +}; + +// Structure to describe indication TLV 0x11 for Voice SupplementaryServiceIndication +struct sVoiceSupplementaryServiceIndication_ECT +{ + eQMIVoiceECTCallStates mECTCallState; + eQMIVoicePresentationIndicators mPresentationIndicator; + UINT8 mNumberLength; + + // This array must be the size specified by mNumberLength + // char mNumber[1]; +}; + +// Structure to describe indication TLV 0x12 for Voice SupplementaryServiceIndication +struct sVoiceSupplementaryServiceIndication_SupplementaryServiceCode +{ + eQMIVoiceSupplementaryServiceCodes mSupplementaryServiceCode; +}; + +// Structure to describe request TLV 0x01 for VoiceSetSupplementaryService() +struct sVoiceSetSupplementaryServiceRequest_Info +{ + eQMIVoiceSupplementaryServiceTypes mService; + eQMIVoiceSupplementaryServiceReasons mReason; +}; + +// Structure to describe request TLV 0x10 for VoiceSetSupplementaryService() +struct sVoiceSetSupplementaryServiceRequest_ServiceClass +{ + bool mSupplementaryServiceClassVoice:1; + bool mSupplementaryServiceClassData:1; + bool mSupplementaryServiceClassFax:1; + bool mSupplementaryServiceClassSMS:1; + bool mSupplementaryServiceClassDataCircuitSync:1; + bool mSupplementaryServiceClassDataCircuitAsync:1; + bool mSupplementaryServiceClassPacketAccess:1; + bool mSupplementaryServiceClassPadAccess:1; +}; + +// Structure to describe request TLV 0x11 for VoiceSetSupplementaryService() +struct sVoiceSetSupplementaryServiceRequest_Password +{ + char mCallBarringPassword[4]; +}; + +// Structure to describe request TLV 0x12 for VoiceSetSupplementaryService() +struct sVoiceSetSupplementaryServiceRequest_Number +{ + // String is variable length, but must be size of the container + // char mCallForwardingNumber[1]; +}; + +// Structure to describe request TLV 0x13 for VoiceSetSupplementaryService() +struct sVoiceSetSupplementaryServiceRequest_Timer +{ + UINT8 mNoReplyTimerSeconds; +}; + +// Structure to describe request TLV 0x14 for VoiceSetSupplementaryService() +struct sVoiceSetSupplementaryServiceRequest_CallForwarding +{ + eQMIVoiceNumberTypes mNumberType; + eQMIVoiceNumberPlans mNumberPlan; +}; + +// Structure to describe request TLV 0x15 for VoiceSetSupplementaryService() +struct sVoiceSetSupplementaryServiceRequest_ExtendedServiceClass +{ + eQMIVoiceExtendedServiceClass mExtendedServiceClass; +}; + +// Structure to describe response TLV 0x10 for VoiceSetSupplementaryService() +struct sVoiceSetSupplementaryServiceResponse_FailureCause +{ + eQMIVoiceEndReasons mFailureCause; +}; + +// Structure to describe response TLV 0x11 for VoiceSetSupplementaryService() +struct sVoiceSetSupplementaryServiceResponse_AlphaID +{ + eQMIVoiceUSSDAlphaCodingSchemes mAlphaDCS; + UINT8 mAlphaLength; + + // This array must be the size specified by mAlphaLength + // UINT8 mAlphaData[1]; +}; + +// Structure to describe response TLV 0x12 for VoiceSetSupplementaryService() +struct sVoiceSetSupplementaryServiceResponse_CallControl +{ + eQMIVoiceCallControlResultTypes mCallControlResult; +}; + +// Structure to describe response TLV 0x13 for VoiceSetSupplementaryService() +struct sVoiceSetSupplementaryServiceResponse_CallID +{ + UINT8 mCallID; +}; + +// Structure to describe response TLV 0x14 for VoiceSetSupplementaryService() +struct sVoiceSetSupplementaryServiceResponse_SupplementaryService +{ + eQMIVoiceSupplementaryServiceRequests mSupplementaryService; + eQMIVoiceSupplementaryServiceReasons mReason; +}; + +// Structure to describe response TLV 0x15 for VoiceSetSupplementaryService() +struct sVoiceSetSupplementaryServiceResponse_ServiceStatus +{ + INT8 mActive; + INT8 mProvisioned; +}; + +// Structure to describe request TLV 0x10 for VoiceGetCallWaiting() +struct sVoiceGetCallWaitingRequest_ServiceClass +{ + bool mSupplementaryServiceClassVoice:1; + bool mSupplementaryServiceClassData:1; + bool mSupplementaryServiceClassFax:1; + bool mSupplementaryServiceClassSMS:1; + bool mSupplementaryServiceClassDataCircuitSync:1; + bool mSupplementaryServiceClassDataCircuitAsync:1; + bool mSupplementaryServiceClassPacketAccess:1; + bool mSupplementaryServiceClassPadAccess:1; +}; + +// Structure to describe request TLV 0x11 for VoiceGetCallWaiting() +struct sVoiceGetCallWaitingRequest_ExtendedServiceClass +{ + eQMIVoiceExtendedServiceClass mExtendedServiceClass; +}; + +// Structure to describe response TLV 0x10 for VoiceGetCallWaiting() +struct sVoiceGetCallWaitingResponse_ServiceClass +{ + bool mSupplementaryServiceClassVoice:1; + bool mSupplementaryServiceClassData:1; + bool mSupplementaryServiceClassFax:1; + bool mSupplementaryServiceClassSMS:1; + bool mSupplementaryServiceClassDataCircuitSync:1; + bool mSupplementaryServiceClassDataCircuitAsync:1; + bool mSupplementaryServiceClassPacketAccess:1; + bool mSupplementaryServiceClassPadAccess:1; +}; + +// Structure to describe response TLV 0x11 for VoiceGetCallWaiting() +struct sVoiceGetCallWaitingResponse_FailureCause +{ + eQMIVoiceEndReasons mFailureCause; +}; + +// Structure to describe response TLV 0x12 for VoiceGetCallWaiting() +struct sVoiceGetCallWaitingResponse_AlphaID +{ + eQMIVoiceUSSDAlphaCodingSchemes mAlphaDCS; + UINT8 mAlphaLength; + + // This array must be the size specified by mAlphaLength + // UINT8 mAlphaData[1]; +}; + +// Structure to describe response TLV 0x13 for VoiceGetCallWaitinge() +struct sVoiceGetCallWaitingeResponse_CallControl +{ + eQMIVoiceCallControlResultTypes mCallControlResult; +}; + +// Structure to describe response TLV 0x14 for VoiceGetCallWaiting() +struct sVoiceGetCallWaitingResponse_CallID +{ + UINT8 mCallID; +}; + +// Structure to describe response TLV 0x15 for VoiceGetCallWaiting() +struct sVoiceGetCallWaitingResponse_SupplementaryService +{ + eQMIVoiceSupplementaryServiceRequests mSupplementaryService; + eQMIVoiceSupplementaryServiceReasons mReason; +}; + +// Structure to describe response TLV 0x16 for VoiceGetCallWaiting() +struct sVoiceGetCallWaitingResponse_ExtendedServiceClass +{ + eQMIVoiceExtendedServiceClass mExtendedServiceClass; +}; + +// Structure to describe request TLV 0x01 for VoiceGetCallBarring() +struct sVoiceGetCallBarringRequest_Reason +{ + eQMIVoiceSupplementaryServiceReasons mReason; +}; + +// Structure to describe request TLV 0x10 for VoiceGetCallBarring() +struct sVoiceGetCallBarringRequest_ServiceClass +{ + bool mSupplementaryServiceClassVoice:1; + bool mSupplementaryServiceClassData:1; + bool mSupplementaryServiceClassFax:1; + bool mSupplementaryServiceClassSMS:1; + bool mSupplementaryServiceClassDataCircuitSync:1; + bool mSupplementaryServiceClassDataCircuitAsync:1; + bool mSupplementaryServiceClassPacketAccess:1; + bool mSupplementaryServiceClassPadAccess:1; +}; + +// Structure to describe request TLV 0x11 for VoiceGetCallBarring() +struct sVoiceGetCallBarringRequest_ExtendedServiceClass +{ + eQMIVoiceExtendedServiceClass mExtendedServiceClass; +}; + +// Structure to describe response TLV 0x10 for VoiceGetCallBarring() +struct sVoiceGetCallBarringResponse_ServiceClass +{ + bool mSupplementaryServiceClassVoice:1; + bool mSupplementaryServiceClassData:1; + bool mSupplementaryServiceClassFax:1; + bool mSupplementaryServiceClassSMS:1; + bool mSupplementaryServiceClassDataCircuitSync:1; + bool mSupplementaryServiceClassDataCircuitAsync:1; + bool mSupplementaryServiceClassPacketAccess:1; + bool mSupplementaryServiceClassPadAccess:1; +}; + +// Structure to describe response TLV 0x11 for VoiceGetCallBarring() +struct sVoiceGetCallBarringResponse_FailureCause +{ + eQMIVoiceEndReasons mFailureCause; +}; + +// Structure to describe response TLV 0x12 for VoiceGetCallBarring() +struct sVoiceGetCallBarringResponse_AlphaID +{ + eQMIVoiceUSSDAlphaCodingSchemes mAlphaDCS; + UINT8 mAlphaLength; + + // This array must be the size specified by mAlphaLength + // UINT8 mAlphaData[1]; +}; + +// Structure to describe response TLV 0x13 for VoiceGetCallBarring() +struct sVoiceGetCallBarringResponse_CallControl +{ + eQMIVoiceCallControlResultTypes mCallControlResult; +}; + +// Structure to describe response TLV 0x14 for VoiceGetCallBarring() +struct sVoiceGetCallBarringResponse_CallID +{ + UINT8 mCallID; +}; + +// Structure to describe response TLV 0x15 for VoiceGetCallBarring() +struct sVoiceGetCallBarringResponse_SupplementaryService +{ + eQMIVoiceSupplementaryServiceRequests mSupplementaryService; + eQMIVoiceSupplementaryServiceReasons mReason; +}; + +// Structure to describe response TLV 0x16 for VoiceGetCallBarring() +struct sVoiceGetCallBarringResponse_ExtendedServiceClass +{ + eQMIVoiceExtendedServiceClass mExtendedServiceClass; +}; + +// Structure to describe response TLV 0x10 for VoiceGetCLIP() +struct sVoiceGetCLIPResponse_Status +{ + INT8 mCLIPActive; + INT8 mCLIPProvisioned; +}; + +// Structure to describe response TLV 0x11 for VoiceGetCLIP() +struct sVoiceGetCLIPResponse_FailureCause +{ + eQMIVoiceEndReasons mFailureCause; +}; + +// Structure to describe response TLV 0x12 for VoiceGetCLIP() +struct sVoiceGetCLIPResponse_AlphaID +{ + eQMIVoiceUSSDAlphaCodingSchemes mAlphaDCS; + UINT8 mAlphaLength; + + // This array must be the size specified by mAlphaLength + // UINT8 mAlphaData[1]; +}; + +// Structure to describe response TLV 0x13 for VoiceGetCLIP() +struct sVoiceGetCLIPResponse_CallControl +{ + eQMIVoiceCallControlResultTypes mCallControlResult; +}; + +// Structure to describe response TLV 0x14 for VoiceGetCLIP() +struct sVoiceGetCLIPResponse_CallID +{ + UINT8 mCallID; +}; + +// Structure to describe response TLV 0x15 for VoiceGetCLIP() +struct sVoiceGetCLIPResponse_SupplementaryService +{ + eQMIVoiceSupplementaryServiceRequests mSupplementaryService; + eQMIVoiceSupplementaryServiceReasons mReason; +}; + +// Structure to describe response TLV 0x10 for VoiceGetCLIR() +struct sVoiceGetCLIRResponse_Status +{ + INT8 mCLIRActive; + eQMIVoiceProvisioningStates mCLIRProvisionStatus; +}; + +// Structure to describe response TLV 0x11 for VoiceGetCLIR() +struct sVoiceGetCLIRResponse_FailureCause +{ + eQMIVoiceEndReasons mFailureCause; +}; + +// Structure to describe response TLV 0x12 for VoiceGetCLIR() +struct sVoiceGetCLIRResponse_AlphaID +{ + eQMIVoiceUSSDAlphaCodingSchemes mAlphaDCS; + UINT8 mAlphaLength; + + // This array must be the size specified by mAlphaLength + // UINT8 mAlphaData[1]; +}; + +// Structure to describe response TLV 0x13 for VoiceGetCLIR() +struct sVoiceGetCLIRResponse_CallControl +{ + eQMIVoiceCallControlResultTypes mCallControlResult; +}; + +// Structure to describe response TLV 0x14 for VoiceGetCLIR() +struct sVoiceGetCLIRResponse_CallID +{ + UINT8 mCallID; +}; + +// Structure to describe response TLV 0x15 for VoiceGetCLIR() +struct sVoiceGetCLIRResponse_SupplementaryService +{ + eQMIVoiceSupplementaryServiceRequests mSupplementaryService; + eQMIVoiceSupplementaryServiceReasons mReason; +}; + +// Structure to describe request TLV 0x01 for VoiceGetCallForwarding() +struct sVoiceGetCallForwardingRequest_Reason +{ + eQMIVoiceSupplementaryServiceReasons mReason; +}; + +// Structure to describe request TLV 0x10 for VoiceGetCallForwarding() +struct sVoiceGetCallForwardingRequest_ServiceClass +{ + bool mSupplementaryServiceClassVoice:1; + bool mSupplementaryServiceClassData:1; + bool mSupplementaryServiceClassFax:1; + bool mSupplementaryServiceClassSMS:1; + bool mSupplementaryServiceClassDataCircuitSync:1; + bool mSupplementaryServiceClassDataCircuitAsync:1; + bool mSupplementaryServiceClassPacketAccess:1; + bool mSupplementaryServiceClassPadAccess:1; +}; + +// Structure to describe request TLV 0x11 for VoiceGetCallForwarding() +struct sVoiceGetCallForwardingRequest_ExtendedServiceClass +{ + eQMIVoiceExtendedServiceClass mExtendedServiceClass; +}; + +// Structure to describe response TLV 0x10 for VoiceGetCallForwarding() +struct sVoiceGetCallForwardingResponse_Info +{ + UINT8 mInstanceCount; + + struct sInstance1 + { + INT8 mServiceActive; + bool mSupplementaryServiceClassVoice:1; + bool mSupplementaryServiceClassData:1; + bool mSupplementaryServiceClassFax:1; + bool mSupplementaryServiceClassSMS:1; + bool mSupplementaryServiceClassDataCircuitSync:1; + bool mSupplementaryServiceClassDataCircuitAsync:1; + bool mSupplementaryServiceClassPacketAccess:1; + bool mSupplementaryServiceClassPadAccess:1; + UINT8 mNumberLength; + + // This array must be the size specified by mNumberLength + // char mNumber[1]; + }; + + struct sInstance2 + { + UINT8 mNoReplyTimerSeconds; + }; + + struct sInstance + { + sInstance1 mInstance1; + sInstance2 mInstance2; + }; + + // This array must be the size specified by mInstanceCount + // sInstance mInstances[1]; +}; + +// Structure to describe response TLV 0x11 for VoiceGetCallForwarding() +struct sVoiceGetCallForwardingResponse_FailureCause +{ + eQMIVoiceEndReasons mFailureCause; +}; + +// Structure to describe response TLV 0x12 for VoiceGetCallForwarding() +struct sVoiceGetCallForwardingResponse_AlphaID +{ + eQMIVoiceUSSDAlphaCodingSchemes mAlphaDCS; + UINT8 mAlphaLength; + + // This array must be the size specified by mAlphaLength + // UINT8 mAlphaData[1]; +}; + +// Structure to describe response TLV 0x13 for VoiceGetCallForwarding() +struct sVoiceGetCallForwardingResponse_CallControl +{ + eQMIVoiceCallControlResultTypes mCallControlResult; +}; + +// Structure to describe response TLV 0x14 for VoiceGetCallForwarding() +struct sVoiceGetCallForwardingResponse_CallID +{ + UINT8 mCallID; +}; + +// Structure to describe response TLV 0x15 for VoiceGetCallForwarding() +struct sVoiceGetCallForwardingResponse_SupplementaryService +{ + eQMIVoiceSupplementaryServiceRequests mSupplementaryService; + eQMIVoiceSupplementaryServiceReasons mReason; +}; + +// Structure to describe response TLV 0x16 for VoiceGetCallForwarding() +struct sVoiceGetCallForwardingResponse_ExtendedInfo +{ + UINT8 mCallInstanceCount; + + struct sInstance + { + INT8 mServiceActive; + bool mSupplementaryServiceClassVoice:1; + bool mSupplementaryServiceClassData:1; + bool mSupplementaryServiceClassFax:1; + bool mSupplementaryServiceClassSMS:1; + bool mSupplementaryServiceClassDataCircuitSync:1; + bool mSupplementaryServiceClassDataCircuitAsync:1; + bool mSupplementaryServiceClassPacketAccess:1; + bool mSupplementaryServiceClassPadAccess:1; + UINT8 mNoReplyTimerSeconds; + UINT8 mPresentationIndicator; + eQMIVoiceScreeningIndicators mScreeningIndicator; + eQMIVoiceNumberTypes mNumberType; + eQMIVoiceNumberPlans mNumberPlan; + UINT8 mNumberLength; + + // This array must be the size specified by mNumberLength + // char mNumber[1]; + }; + + // This array must be the size specified by mCallInstanceCount + // sInstance mInstances[1]; +}; + +// Structure to describe response TLV 0x17 for VoiceGetCallForwarding() +struct sVoiceGetCallForwardingResponse_ExtendedInfo2 +{ + UINT8 mCallInstanceCount; + + struct sInstance + { + INT8 mServiceActive; + eQMIVoiceExtendedServiceClass mExtendedServiceClass; + UINT8 mNoReplyTimerSeconds; + UINT8 mPresentationIndicator; + eQMIVoiceScreeningIndicators mScreeningIndicator; + eQMIVoiceNumberTypes mNumberType; + eQMIVoiceNumberPlans mNumberPlan; + UINT8 mNumberLength; + + // This array must be the size specified by mNumberLength + // char mNumber[1]; + }; + + // This array must be the size specified by mCallInstanceCount + // sInstance mInstances[1]; +}; + +// Structure to describe request TLV 0x01 for VoiceSetCallBarringPassword() +struct sVoiceSetCallBarringPasswordRequest_Info +{ + eQMIVoiceSupplementaryServiceReasons mReason; + char mOldCallBarringPassword[4]; + char mNewCallBarringPassword[4]; + char mNewCallBarringPasswordRepeat[4]; +}; + +// Structure to describe response TLV 0x10 for VoiceSetCallBarring() +struct sVoiceSetCallBarringResponse_FailureCause +{ + eQMIVoiceEndReasons mFailureCause; +}; + +// Structure to describe response TLV 0x11 for VoiceSetCallBarring() +struct sVoiceSetCallBarringResponse_AlphaID +{ + eQMIVoiceUSSDAlphaCodingSchemes mAlphaDCS; + UINT8 mAlphaLength; + + // This array must be the size specified by mAlphaLength + // UINT8 mAlphaData[1]; +}; + +// Structure to describe response TLV 0x12 for VoiceSetCallBarring() +struct sVoiceSetCallBarringResponse_CallControl +{ + eQMIVoiceCallControlResultTypes mCallControlResult; +}; + +// Structure to describe response TLV 0x13 for VoiceSetCallBarring() +struct sVoiceSetCallBarringResponse_CallID +{ + UINT8 mCallID; +}; + +// Structure to describe response TLV 0x14 for VoiceSetCallBarring() +struct sVoiceSetCallBarringResponse_SupplementaryService +{ + eQMIVoiceSupplementaryServiceRequests mSupplementaryService; + eQMIVoiceSupplementaryServiceReasons mReason; +}; + +// Structure to describe request TLV 0x01 for VoiceInitiateUSSD() +struct sVoiceInitiateUSSDRequest_Info +{ + eQMIVoiceUSSDDataCodingSchemes mUSSDCS; + UINT8 mUSSLength; + + // This array must be the size specified by mUSSLength + // UINT8 mUSSData[1]; +}; + +// Structure to describe response TLV 0x10 for VoiceInitiateUSSD() +struct sVoiceInitiateUSSDResponse_FailCause +{ + UINT16 mFailureCause; +}; + +// Structure to describe response TLV 0x11 for VoiceInitiateUSSD() +struct sVoiceInitiateUSSDResponse_AlphaID +{ + eQMIVoiceUSSDAlphaCodingSchemes mAlphaDCS; + UINT8 mAlphaLength; + + // This array must be the size specified by mAlphaLength + // UINT8 mAlphaData[1]; +}; + +// Structure to describe response TLV 0x12 for VoiceInitiateUSSD() +struct sVoiceInitiateUSSDResponse_Data +{ + eQMIVoiceUSSDDataCodingSchemes mUSSDCS; + UINT8 mUSSLength; + + // This array must be the size specified by mUSSLength + // UINT8 mUSSData[1]; +}; + +// Structure to describe response TLV 0x13 for VoiceInitiateUSSD() +struct sVoiceInitiateUSSDResponse_CallControl +{ + eQMIVoiceCallControlResultTypes mCallControlResult; +}; + +// Structure to describe response TLV 0x14 for VoiceInitiateUSSD() +struct sVoiceInitiateUSSDResponse_CallID +{ + UINT8 mCallID; +}; + +// Structure to describe response TLV 0x15 for VoiceInitiateUSSD() +struct sVoiceInitiateUSSDResponse_SupplementaryService +{ + eQMIVoiceSupplementaryServiceRequests mSupplementaryService; + eQMIVoiceSupplementaryServiceReasons mReason; +}; + +// Structure to describe response TLV 0x16 for VoiceInitiateUSSD() +struct sVoiceInitiateUSSDResponse_EncodedData +{ + UINT8 mServiceInformationLength; + + // This array must be the size specified by mServiceInformationLength + // wchar_t mServiceInformation[1]; +}; + +// Structure to describe request TLV 0x01 for VoiceAnswerUSSD() +struct sVoiceAnswerUSSDRequest_Info +{ + eQMIVoiceUSSDDataCodingSchemes mUSSDCS; + UINT8 mUSSLength; + + // This array must be the size specified by mUSSLength + // UINT8 mUSSData[1]; +}; + +// Structure to describe indication TLV 0x01 for Voice USSDIndication +struct sVoiceUSSDIndication_Type +{ + eQMIVoiceUSSDNotifcationTypes mNotificationType; +}; + +// Structure to describe indication TLV 0x10 for Voice USSDIndication +struct sVoiceUSSDIndication_Data +{ + eQMIVoiceUSSDDataCodingSchemes mUSSDCS; + UINT8 mUSSLength; + + // This array must be the size specified by mUSSLength + // UINT8 mUSSData[1]; +}; + +// Structure to describe indication TLV 0x11 for Voice USSDIndication +struct sVoiceUSSDIndication_EncodedData +{ + UINT8 mServiceInformationLength; + + // This array must be the size specified by mServiceInformationLength + // wchar_t mServiceInformation[1]; +}; + +// Structure to describe indication TLV 0x01 for Voice USSIndication +struct sVoiceUSSIndication_Info +{ + UINT8 mCallID; + eQMIVoiceUUSTypes mUUSType; + eQMIVoiceUUSDataCodingSchemes mUUSDCS; + UINT8 mUUSLength; + + // This array must be the size specified by mUUSLength + // UINT8 mUUSData[1]; +}; + +// Structure to describe request TLV 0x10 for VoiceSetConfig() +struct sVoiceSetConfigRequest_AutoAnswer +{ + INT8 mAutoAnswer; +}; + +// Structure to describe request TLV 0x11 for VoiceSetConfig() +struct sVoiceSetConfigRequest_AirTimer +{ + UINT8 mNAMID; + UINT32 mAirTimerMinutes; +}; + +// Structure to describe request TLV 0x12 for VoiceSetConfig() +struct sVoiceSetConfigRequest_RoamTimer +{ + UINT8 mNAMID; + UINT32 mRoamTimerMinutes; +}; + +// Structure to describe request TLV 0x13 for VoiceSetConfig() +struct sVoiceSetConfigRequest_TTYMode +{ + eQMIVoiceTTYModes mTTYMode; +}; + +// Structure to describe request TLV 0x14 for VoiceSetConfig() +struct sVoiceSetConfigRequest_PreferredVoiceSO +{ + UINT8 mNAMID; + INT8 mEVRCCapability; + eQMIVoiceServiceOptions mHomePageVoiceServiceOption; + eQMIVoiceServiceOptions mHomeOriginationVoiceServiceOption; + eQMIVoiceServiceOptions mRoamOriginationVoiceServiceOption; +}; + +// Structure to describe request TLV 0x15 for VoiceSetConfig() +struct sVoiceSetConfigRequest_PreferredVoiceDomain +{ + eQMIVoiceDomains mPreferredDomain; +}; + +// Structure to describe response TLV 0x10 for VoiceSetConfig() +struct sVoiceSetConfigResponse_AutoAnswer +{ + INT8 mWriteFailed; +}; + +// Structure to describe response TLV 0x11 for VoiceSetConfig() +struct sVoiceSetConfigResponse_AirTimer +{ + INT8 mWriteFailed; +}; + +// Structure to describe response TLV 0x12 for VoiceSetConfig() +struct sVoiceSetConfigResponse_RoamTimer +{ + INT8 mWriteFailed; +}; + +// Structure to describe response TLV 0x13 for VoiceSetConfig() +struct sVoiceSetConfigResponse_TTYMode +{ + INT8 mWriteFailed; +}; + +// Structure to describe response TLV 0x14 for VoiceSetConfig() +struct sVoiceSetConfigResponse_PreferredVoiceSO +{ + INT8 mWriteFailed; +}; + +// Structure to describe response TLV 0x15 for VoiceSetConfig() +struct sVoiceSetConfigResponse_PreferredVoiceDomain +{ + INT8 mWriteFailed; +}; + +// Structure to describe request TLV 0x10 for VoiceGetConfig() +struct sVoiceGetConfigRequest_AutoAnswer +{ + INT8 mInclude; +}; + +// Structure to describe request TLV 0x11 for VoiceGetConfig() +struct sVoiceGetConfigRequest_AirTimer +{ + INT8 mInclude; +}; + +// Structure to describe request TLV 0x12 for VoiceGetConfig() +struct sVoiceGetConfigRequest_RoamTimer +{ + INT8 mInclude; +}; + +// Structure to describe request TLV 0x13 for VoiceGetConfig() +struct sVoiceGetConfigRequest_TTYMode +{ + INT8 mInclude; +}; + +// Structure to describe request TLV 0x14 for VoiceGetConfig() +struct sVoiceGetConfigRequest_PreferredVoiceSO +{ + INT8 mInclude; +}; + +// Structure to describe request TLV 0x15 for VoiceGetConfig() +struct sVoiceGetConfigRequest_AMRStatus +{ + INT8 mInclude; +}; + +// Structure to describe request TLV 0x16 for VoiceGetConfig() +struct sVoiceGetConfigRequest_PreferredVoicePrivacy +{ + INT8 mInclude; +}; + +// Structure to describe request TLV 0x17 for VoiceGetConfig() +struct sVoiceGetConfigRequest_NAM +{ + UINT8 mNAMID; +}; + +// Structure to describe request TLV 0x18 for VoiceGetConfig() +struct sVoiceGetConfigRequest_VoiceDomain +{ + INT8 mInclude; +}; + +// Structure to describe response TLV 0x10 for VoiceGetConfig() +struct sVoiceGetConfigResponse_AutoAnswer +{ + INT8 mAutoAnswer; +}; + +// Structure to describe response TLV 0x11 for VoiceGetConfig() +struct sVoiceGetConfigResponse_AirTimer +{ + UINT8 mNAMID; + UINT32 mAirTimerMinutes; +}; + +// Structure to describe response TLV 0x12 for VoiceGetConfig() +struct sVoiceGetConfigResponse_RoamTimer +{ + UINT8 mNAMID; + UINT32 mRoamTimerMinutes; +}; + +// Structure to describe response TLV 0x13 for VoiceGetConfig() +struct sVoiceGetConfigResponse_TTYMode +{ + eQMIVoiceTTYModes mTTYMode; +}; + +// Structure to describe response TLV 0x14 for VoiceGetConfig() +struct sVoiceGetConfigResponse_PreferredVoiceSO +{ + UINT8 mNAMID; + INT8 mEVRCCapability; + eQMIVoiceServiceOptions mHomePageVoiceServiceOption; + eQMIVoiceServiceOptions mHomeOriginationVoiceServiceOption; + eQMIVoiceServiceOptions mRoamOriginationVoiceServiceOption; +}; + +// Structure to describe response TLV 0x15 for VoiceGetConfig() +struct sVoiceGetConfigResponse_AMRConfig +{ + INT8 mGSMAMR; + bool mWCDMAAMRWB:1; + bool mGSMHRAMR:1; + bool mGSMAMRWB:1; + bool mGSMAMRNB:1; + + // Padding out 4 bits + UINT8 mReserved1:4; +}; + +// Structure to describe response TLV 0x16 for VoiceGetConfig() +struct sVoiceGetConfigResponse_Privacy +{ + eQMIVoicePrivacyLevels mVoicePrivacy; +}; + +// Structure to describe response TLV 0x17 for VoiceGetConfig() +struct sVoiceGetConfigResponse_PreferredVoiceDomain +{ + eQMIVoiceDomains mPreferredDomain; +}; + +// Structure to describe request TLV 0x01 for VoiceSupplementaryService() +struct sVoiceSupplementaryServiceRequestIndication_Info +{ + eQMIVoiceSupplementaryServiceRequests mSupplementaryServiceRequest; + INT8 mModifiedByCallControl; +}; + +// Structure to describe request TLV 0x10 for VoiceSupplementaryService() +struct sVoiceSupplementaryServiceRequestIndication_Class +{ + bool mSupplementaryServiceClassVoice:1; + bool mSupplementaryServiceClassData:1; + bool mSupplementaryServiceClassFax:1; + bool mSupplementaryServiceClassSMS:1; + bool mSupplementaryServiceClassDataCircuitSync:1; + bool mSupplementaryServiceClassDataCircuitAsync:1; + bool mSupplementaryServiceClassPacketAccess:1; + bool mSupplementaryServiceClassPadAccess:1; +}; + +// Structure to describe request TLV 0x11 for VoiceSupplementaryService() +struct sVoiceSupplementaryServiceRequestIndication_Reason +{ + eQMIVoiceSupplementaryServiceReasons mReason; +}; + +// Structure to describe request TLV 0x12 for VoiceSupplementaryService() +struct sVoiceSupplementaryServiceRequestIndication_Number +{ + // String is variable length, but must be size of the container + // char mCallForwardingNumber[1]; +}; + +// Structure to describe request TLV 0x13 for VoiceSupplementaryService() +struct sVoiceSupplementaryServiceRequestIndication_Timer +{ + UINT8 mNoReplyTimerSeconds; +}; + +// Structure to describe request TLV 0x14 for VoiceSupplementaryService() +struct sVoiceSupplementaryServiceRequestIndication_USSData +{ + eQMIVoiceUSSDDataCodingSchemes mUSSDCS; + UINT8 mUSSLength; + + // This array must be the size specified by mUSSLength + // UINT8 mUSSData[1]; +}; + +// Structure to describe request TLV 0x15 for VoiceSupplementaryService() +struct sVoiceSupplementaryServiceRequestIndication_CallID +{ + UINT8 mCallID; +}; + +// Structure to describe request TLV 0x16 for VoiceSupplementaryService() +struct sVoiceSupplementaryServiceRequestIndication_AlphaID +{ + eQMIVoiceUSSDAlphaCodingSchemes mAlphaDCS; + UINT8 mAlphaLength; + + // This array must be the size specified by mAlphaLength + // UINT8 mAlphaData[1]; +}; + +// Structure to describe request TLV 0x17 for VoiceSupplementaryService() +struct sVoiceSupplementaryServiceRequestIndication_Password +{ + char mCallBarringPassword[4]; +}; + +// Structure to describe request TLV 0x18 for VoiceSupplementaryService() +struct sVoiceSupplementaryServiceRequestIndication_NewPassword +{ + char mNewCallBarringPassword[4]; + char mNewCallBarringPasswordRepeat[4]; +}; + +// Structure to describe request TLV 0x19 for VoiceSupplementaryService() +struct sVoiceSupplementaryServiceRequestIndication_DataSource +{ + INT8 mResponseData; +}; + +// Structure to describe request TLV 0x1A for VoiceSupplementaryService() +struct sVoiceSupplementaryServiceRequestIndication_FailCause +{ + UINT16 mFailureCause; +}; + +// Structure to describe request TLV 0x1B for VoiceSupplementaryService() +struct sVoiceSupplementaryServiceRequestIndication_CallForwarding +{ + UINT8 mInstanceCount; + + struct sInstance1 + { + INT8 mServiceActive; + bool mSupplementaryServiceClassVoice:1; + bool mSupplementaryServiceClassData:1; + bool mSupplementaryServiceClassFax:1; + bool mSupplementaryServiceClassSMS:1; + bool mSupplementaryServiceClassDataCircuitSync:1; + bool mSupplementaryServiceClassDataCircuitAsync:1; + bool mSupplementaryServiceClassPacketAccess:1; + bool mSupplementaryServiceClassPadAccess:1; + UINT8 mNumberLength; + + // This array must be the size specified by mNumberLength + // char mNumber[1]; + }; + + struct sInstance2 + { + UINT8 mNoReplyTimerSeconds; + }; + + struct sInstance + { + sInstance1 mInstance1; + sInstance2 mInstance2; + }; + + // This array must be the size specified by mInstanceCount + // sInstance mInstances[1]; +}; + +// Structure to describe request TLV 0x1C for VoiceSupplementaryService() +struct sVoiceSupplementaryServiceRequestIndication_CLIR +{ + INT8 mCLIRActive; + eQMIVoiceProvisioningStates mCLIRProvisionStatus; +}; + +// Structure to describe request TLV 0x1D for VoiceSupplementaryService() +struct sVoiceSupplementaryServiceRequestIndication_CLIP +{ + INT8 mCLIPActive; + INT8 mCLIPProvisioned; +}; + +// Structure to describe request TLV 0x1E for VoiceSupplementaryService() +struct sVoiceSupplementaryServiceRequestIndication_COLP +{ + INT8 mActive; + INT8 mProvisioned; +}; + +// Structure to describe request TLV 0x1F for VoiceSupplementaryService() +struct sVoiceSupplementaryServiceRequestIndication_COLR +{ + INT8 mActive; + INT8 mProvisioned; +}; + +// Structure to describe request TLV 0x20 for VoiceSupplementaryService() +struct sVoiceSupplementaryServiceRequestIndication_CNAP +{ + INT8 mActive; + INT8 mProvisioned; +}; + +// Structure to describe request TLV 0x21 for VoiceSupplementaryService() +struct sVoiceSupplementaryServiceRequestIndication_EncodedData +{ + UINT8 mServiceInformationLength; + + // This array must be the size specified by mServiceInformationLength + // wchar_t mServiceInformation[1]; +}; + +// Structure to describe request TLV 0x22 for VoiceSupplementaryService() +struct sVoiceSupplementaryServiceRequestIndication_ExtendedServiceClass +{ + eQMIVoiceExtendedServiceClass mExtendedServiceClass; +}; + +// Structure to describe request TLV 0x01 for VoiceAsyncInitiateUSSD() +struct sVoiceAsyncInitiateUSSDRequest_Info +{ + eQMIVoiceUSSDDataCodingSchemes mUSSDCS; + UINT8 mUSSLength; + + // This array must be the size specified by mUSSLength + // UINT8 mUSSData[1]; +}; + +// Structure to describe indication TLV 0x10 for Voice USSDAsyncIndication +struct sVoiceUSSDAsyncIndication_Error +{ + eQMIErrors mQMIError; +}; + +// Structure to describe indication TLV 0x11 for Voice USSDAsyncIndication +struct sVoiceUSSDAsyncIndication_FailCause +{ + UINT16 mFailureCause; +}; + +// Structure to describe indication TLV 0x12 for Voice USSDAsyncIndication +struct sVoiceUSSDAsyncIndication_Info +{ + eQMIVoiceUSSDDataCodingSchemes mUSSDCS; + UINT8 mUSSLength; + + // This array must be the size specified by mUSSLength + // UINT8 mUSSData[1]; +}; + +// Structure to describe indication TLV 0x13 for Voice USSDAsyncIndication +struct sVoiceUSSDAsyncIndication_AlphaID +{ + eQMIVoiceUSSDAlphaCodingSchemes mAlphaDCS; + UINT8 mAlphaLength; + + // This array must be the size specified by mAlphaLength + // UINT8 mAlphaData[1]; +}; + +// Structure to describe indication TLV 0x14 for Voice USSDAsyncIndication +struct sVoiceUSSDAsyncIndication_EncodedData +{ + UINT8 mServiceInformationLength; + + // This array must be the size specified by mServiceInformationLength + // wchar_t mServiceInformation[1]; +}; + +// Structure to describe request TLV 0x01 for VoiceBindSubscription() +struct sVoiceBindSubscriptionRequest_Type +{ + eQMIVoiceSubscriptionTypes mSubscriptionType; +}; + +// Structure to describe request TLV 0x01 for VoiceALSSetLineSwitching() +struct sVoiceALSSetLineSwitchingRequest_Switching +{ + INT8 mLineSwitchingAllowed; +}; + +// Structure to describe request TLV 0x01 for VoiceALSSelectLine() +struct sVoiceALSSelectLineRequest_Line +{ + eQMIVoiceALSLines mLineValue; +}; + +// Structure to describe request TLV 0x01 for VoiceAOCSetACMMaximum() +struct sVoiceAOCSetACMMaximumRequest_ACMMax +{ + UINT32 mACMMaximum; +}; + +// Structure to describe request TLV 0x01 for VoiceAOCGetCallMeterInfo() +struct sVoiceAOCGetCallMeterInfoRequest_Mask +{ + bool mACM:1; + bool mACMMaximum:1; + bool mCCM:1; + + // Padding out 13 bits + UINT8 mReserved1:5; + UINT8 mReserved2; +}; + +// Structure to describe response TLV 0x10 for VoiceAOCGetCallMeterInfo() +struct sVoiceAOCGetCallMeterInfoResponse_ACM +{ + UINT32 mACM; +}; + +// Structure to describe response TLV 0x11 for VoiceAOCGetCallMeterInfo() +struct sVoiceAOCGetCallMeterInfoResponse_ACMMax +{ + UINT32 mACMMaximum; +}; + +// Structure to describe response TLV 0x12 for VoiceAOCGetCallMeterInfo() +struct sVoiceAOCGetCallMeterInfoResponse_CCM +{ + UINT32 mCCM; +}; + +// Structure to describe response TLV 0x10 for VoiceGetCOLP() +struct sVoiceGetCOLPResponse_COLP +{ + INT8 mActive; + INT8 mProvisioned; +}; + +// Structure to describe response TLV 0x11 for VoiceGetCOLP() +struct sVoiceGetCOLPResponse_FailCause +{ + UINT16 mFailureCause; +}; + +// Structure to describe response TLV 0x12 for VoiceGetCOLP() +struct sVoiceGetCOLPResponse_AlphaID +{ + eQMIVoiceUSSDAlphaCodingSchemes mAlphaDCS; + UINT8 mAlphaLength; + + // This array must be the size specified by mAlphaLength + // UINT8 mAlphaData[1]; +}; + +// Structure to describe response TLV 0x13 for VoiceGetCOLP() +struct sVoiceGetCOLPResponse_CallControl +{ + eQMIVoiceCallControlResultTypes mCallControlResult; +}; + +// Structure to describe response TLV 0x14 for VoiceGetCOLP() +struct sVoiceGetCOLPResponse_CallID +{ + UINT8 mCallID; +}; + +// Structure to describe response TLV 0x15 for VoiceGetCOLP() +struct sVoiceGetCOLPResponse_SupplementaryService +{ + eQMIVoiceSupplementaryServiceRequests mSupplementaryService; + eQMIVoiceSupplementaryServiceReasons mReason; +}; + +// Structure to describe response TLV 0x10 for VoiceGetCOLR() +struct sVoiceGetCOLRResponse_COLR +{ + INT8 mActive; + INT8 mProvisioned; +}; + +// Structure to describe response TLV 0x11 for VoiceGetCOLR() +struct sVoiceGetCOLRResponse_FailCause +{ + UINT16 mFailureCause; +}; + +// Structure to describe response TLV 0x12 for VoiceGetCOLR() +struct sVoiceGetCOLRResponse_AlphaID +{ + eQMIVoiceUSSDAlphaCodingSchemes mAlphaDCS; + UINT8 mAlphaLength; + + // This array must be the size specified by mAlphaLength + // UINT8 mAlphaData[1]; +}; + +// Structure to describe response TLV 0x13 for VoiceGetCOLR() +struct sVoiceGetCOLRResponse_CallControl +{ + eQMIVoiceCallControlResultTypes mCallControlResult; +}; + +// Structure to describe response TLV 0x14 for VoiceGetCOLR() +struct sVoiceGetCOLRResponse_CallID +{ + UINT8 mCallID; +}; + +// Structure to describe response TLV 0x15 for VoiceGetCOLR() +struct sVoiceGetCOLRResponse_SupplementaryService +{ + eQMIVoiceSupplementaryServiceRequests mSupplementaryService; + eQMIVoiceSupplementaryServiceReasons mReason; +}; + +// Structure to describe response TLV 0x10 for VoiceGetCNAP() +struct sVoiceGetCNAPResponse_CNAP +{ + INT8 mActive; + INT8 mProvisioned; +}; + +// Structure to describe response TLV 0x11 for VoiceGetCNAP() +struct sVoiceGetCNAPResponse_FailCause +{ + UINT16 mFailureCause; +}; + +// Structure to describe response TLV 0x12 for VoiceGetCNAP() +struct sVoiceGetCNAPResponse_AlphaID +{ + eQMIVoiceUSSDAlphaCodingSchemes mAlphaDCS; + UINT8 mAlphaLength; + + // This array must be the size specified by mAlphaLength + // UINT8 mAlphaData[1]; +}; + +// Structure to describe response TLV 0x13 for VoiceGetCNAP() +struct sVoiceGetCNAPResponse_CallControl +{ + eQMIVoiceCallControlResultTypes mCallControlResult; +}; + +// Structure to describe response TLV 0x14 for VoiceGetCNAP() +struct sVoiceGetCNAPResponse_CallID +{ + UINT8 mCallID; +}; + +// Structure to describe response TLV 0x15 for VoiceGetCNAP() +struct sVoiceGetCNAPResponse_SupplementaryService +{ + eQMIVoiceSupplementaryServiceRequests mSupplementaryService; + eQMIVoiceSupplementaryServiceReasons mReason; +}; + +// Structure to describe request TLV 0x01 for VoiceManageIPCalls() +struct sVoiceManageIPCallsRequest_Info +{ + eQMIVoiceVoIPSUPSCallTypes mSupplementaryServiceType; +}; + +// Structure to describe request TLV 0x10 for VoiceManageIPCalls() +struct sVoiceManageIPCallsRequest_CallID +{ + UINT8 mCallID; +}; + +// Structure to describe request TLV 0x11 for VoiceManageIPCalls() +struct sVoiceManageIPCallsRequest_CallType +{ + eQMIVoiceCallTypes mCallType; +}; + +// Structure to describe request TLV 0x12 for VoiceManageIPCalls() +struct sVoiceManageIPCallsRequest_AudioAttribute +{ + bool mVoiceCallTX:1; + bool mVoiceCallRX:1; + + // Padding out 62 bits + UINT8 mReserved1:6; + UINT8 mReserved2[7]; +}; + +// Structure to describe request TLV 0x13 for VoiceManageIPCalls() +struct sVoiceManageIPCallsRequest_VideoAttribute +{ + bool mVoiceCallTX:1; + bool mVoiceCallRX:1; + + // Padding out 62 bits + UINT8 mReserved1:6; + UINT8 mReserved2[7]; +}; + +// Structure to describe request TLV 0x14 for VoiceManageIPCalls() +struct sVoiceManageIPCallsRequest_SIPURI +{ + // String is variable length, but must be size of the container + // char mSIPURIOverflow[1]; +}; + +// Structure to describe response TLV 0x10 for VoiceManageIPCalls() +struct sVoiceManageIPCallsResponse_CallID +{ + UINT8 mCallID; +}; + +// Structure to describe response TLV 0x11 for VoiceManageIPCalls() +struct sVoiceManageIPCallsResponse_FailureCause +{ + eQMIVoiceEndReasons mFailureCause; +}; + +// Structure to describe response TLV 0x12 for VoiceManageIPCalls() +struct sVoiceManageIPCallsResponse_Participants +{ + UINT8 mNumberOfParticipants; +}; + +// Structure to describe response TLV 0x10 for VoiceALSGetLineSwitchingStatus() +struct sVoiceALSGetLineSwitchingStatusResponse_SwitchValue +{ + eQMIVoiceSwitchValue mSwitchValue; +}; + +// Structure to describe response TLV 0x10 for VoiceALSGetSelectedLine() +struct sVoiceALSGetSelectedLineResponse_Line +{ + eQMIVoiceALSLines mLineValue; +}; + +// Structure to describe indication TLV 0x01 for Voice CallModifiedIndication +struct sVoiceCallModifiedIndication_CallID +{ + UINT8 mCallID; +}; + +// Structure to describe indication TLV 0x10 for Voice CallModifiedIndication +struct sVoiceCallModifiedIndication_CallType +{ + eQMIVoiceCallTypes mCallType; +}; + +// Structure to describe indication TLV 0x11 for Voice CallModifiedIndication +struct sVoiceCallModifiedIndication_AudioAttribute +{ + bool mVoiceCallTX:1; + bool mVoiceCallRX:1; + + // Padding out 62 bits + UINT8 mReserved1:6; + UINT8 mReserved2[7]; +}; + +// Structure to describe indication TLV 0x12 for Voice CallModifiedIndication +struct sVoiceCallModifiedIndication_VideoAttribute +{ + bool mVoiceCallTX:1; + bool mVoiceCallRX:1; + + // Padding out 62 bits + UINT8 mReserved1:6; + UINT8 mReserved2[7]; +}; + +// Structure to describe indication TLV 0x13 for Voice CallModifiedIndication +struct sVoiceCallModifiedIndication_FailCause +{ + UINT16 mFailureCause; +}; + +// Structure to describe indication TLV 0x01 for Voice CallModifyAcceptIndication +struct sVoiceCallModifyAcceptIndication_CallID +{ + UINT8 mCallID; +}; + +// Structure to describe indication TLV 0x10 for Voice CallModifyAcceptIndication +struct sVoiceCallModifyAcceptIndication_CallType +{ + eQMIVoiceCallTypes mCallType; +}; + +// Structure to describe indication TLV 0x11 for Voice CallModifyAcceptIndication +struct sVoiceCallModifyAcceptIndication_AudioAttribute +{ + bool mVoiceCallTX:1; + bool mVoiceCallRX:1; + + // Padding out 62 bits + UINT8 mReserved1:6; + UINT8 mReserved2[7]; +}; + +// Structure to describe indication TLV 0x12 for Voice CallModifyAcceptIndication +struct sVoiceCallModifyAcceptIndication_VideoAttribute +{ + bool mVoiceCallTX:1; + bool mVoiceCallRX:1; + + // Padding out 62 bits + UINT8 mReserved1:6; + UINT8 mReserved2[7]; +}; + +// Structure to describe indication TLV 0x10 for Voice SpeechCodecInformationIndication +struct sVoiceSpeechCodecInformationIndication_NetworkMode +{ + eQMIVoiceNetworkMode mNetworkMode; +}; + +// Structure to describe indication TLV 0x11 for Voice SpeechCodecInformationIndication +struct sVoiceSpeechCodecInformationIndication_Type +{ + eQMIVoiceSpeechCodecType mType; +}; + +// Structure to describe indication TLV 0x12 for Voice SpeechCodecInformationIndication +struct sVoiceSpeechCodecInformationIndication_SamplingRate +{ + UINT32 mSamplingRateHz; +}; + +// Structure to describe indication TLV 0x13 for Voice SpeechCodecInformationIndication +struct sVoiceSpeechCodecInformationIndication_CallID +{ + UINT8 mCallID; +}; + +// Structure to describe indication TLV 0x01 for Voice HandoverIndication +struct sVoiceHandoverIndication_State +{ + eQMIVoiceHandoverStates mHandoverState; +}; + +// Structure to describe indication TLV 0x01 for Voice ConferenceInfoIndication +struct sVoiceConferenceInfoIndication_ConferenceXML +{ + UINT16 mConferenceXMLLength; + + // This array must be the size specified by mConferenceXMLLength + // char mConferenceXML[1]; +}; + +// Structure to describe indication TLV 0x02 for Voice ConferenceInfoIndication +struct sVoiceConferenceInfoIndication_SequenceNumber +{ + UINT32 mSequenceNumber; +}; + +// Structure to describe indication TLV 0x10 for Voice ConferenceInfoIndication +struct sVoiceConferenceInfoIndication_TotalLength +{ + UINT32 mTotalLength; +}; + +// Structure to describe indication TLV 0x01 for Voice ConferenceJoinIndication +struct sVoiceConferenceJoinIndication_JoinInfo +{ + UINT8 mCallID; +}; + +// Structure to describe indication TLV 0x02 for Voice ConferenceJoinIndication +struct sVoiceConferenceJoinIndication_ParticipantInfo1 +{ + UINT8 mURINameLength; + + // This array must be the size specified by mURINameLength + // wchar_t mURIName[1]; +}; + +struct sVoiceConferenceJoinIndication_ParticipantInfo2 +{ + UINT8 mURIDescriptionLength; + + // This array must be the size specified by mURIDescriptionLength + // wchar_t mURIDescription[1]; +}; + +struct sVoiceConferenceJoinIndication_ParticipantInfo +{ + sVoiceConferenceJoinIndication_ParticipantInfo1 mVoiceConferenceJoinIndication_ParticipantInfo1; + sVoiceConferenceJoinIndication_ParticipantInfo2 mVoiceConferenceJoinIndication_ParticipantInfo2; +}; + +// Structure to describe indication TLV 0x01 for Voice ConferenceParticipantUpdateIndication +struct sVoiceConferenceParticipantUpdateIndication_ParticipantInfo1 +{ + UINT8 mURINameLength; + + // This array must be the size specified by mURINameLength + // wchar_t mURIName[1]; +}; + +struct sVoiceConferenceParticipantUpdateIndication_ParticipantInfo2 +{ + UINT8 mURIDescriptionLength; + + // This array must be the size specified by mURIDescriptionLength + // wchar_t mURIDescription[1]; +}; + +struct sVoiceConferenceParticipantUpdateIndication_ParticipantInfo +{ + sVoiceConferenceParticipantUpdateIndication_ParticipantInfo1 mVoiceConferenceParticipantUpdateIndication_ParticipantInfo1; + sVoiceConferenceParticipantUpdateIndication_ParticipantInfo2 mVoiceConferenceParticipantUpdateIndication_ParticipantInfo2; +}; + +// Structure to describe indication TLV 0x01 for Voice ExtendedBurstTypeIndication +struct sVoiceExtendedBurstTypeIndication_Info +{ + UINT16 mMobileCountryCode; + UINT8 mDataBurstSubtype; + UINT8 mChargeIndication; + UINT8 mSubUnitCallTimeInDeciseconds; + UINT8 mUnitCallTimeInSeconds; +}; + +// Structure to describe indication TLV 0x01 for Voice MTPageMissIndication +struct sVoiceMTPageMissIndication_Reason +{ + eQMIVoiceEndReasons mPageMissReason; +}; + +// Structure to describe indication TLV 0x01 for Voice CallControlResultInfoIndication +struct sVoiceCallControlResultInfoIndication_Result +{ + eQMIVoiceCallControlResults mCallControlResult; +}; + +// Structure to describe indication TLV 0x02 for Voice CallControlResultInfoIndication +struct sVoiceCallControlResultInfoIndication_AlphaPresence +{ + eQMIVoiceCallControlAlphaCodes mAlphaPresence; +}; + +// Structure to describe indication TLV 0x10 for Voice CallControlResultInfoIndication +struct sVoiceCallControlResultInfoIndication_AlphaGSM8 +{ + UINT8 mAlphaLength; + + // This array must be the size specified by mAlphaLength + // char mAlphaData[1]; +}; + +// Structure to describe indication TLV 0x11 for Voice CallControlResultInfoIndication +struct sVoiceCallControlResultInfoIndication_AlphaUTF16 +{ + UINT8 mAlphaLength; + + // This array must be the size specified by mAlphaLength + // wchar_t mAlphaData[1]; +}; + +// Structure to describe request TLV 0x10 for CAT2SetEventReport() +struct sCAT2SetEventReportRequest_ReportMask +{ + bool mDisplayText:1; + bool mGetInkey:1; + bool mGetInput:1; + bool mSetupMenu:1; + bool mSelectItem:1; + bool mSendSMSAlphaIdentifier:1; + bool mSetupEventUserActivity:1; + bool mSetupEventIdleScreenNotify:1; + bool mSetupEventLanguageSelNotify:1; + bool mSetupIdleModeText:1; + bool mLanguageNotification:1; + bool mRefresh:1; + bool mEndProactiveSession:1; + bool mPlayTone:1; + bool mSetupCall:1; + bool mSendDTMF:1; + bool mLaunchBrowser:1; + bool mSendSS:1; + bool mSendUSSD:1; + bool mProvideLocalInformationLanguage:1; + bool mBearerIndependentProtocol:1; + bool mSetupEventBrowserTermination:1; + bool mProvideLocalInformationTime:1; + + // Padding out 1 bits + UINT8 mReserved1:1; + + bool mActivate:1; + bool mSetupEventHCIConnectivity:1; + + // Padding out 6 bits + UINT8 mReserved2:6; +}; + +// Structure to describe request TLV 0x11 for CAT2SetEventReport() +struct sCAT2SetEventReportRequest_DecodeReportMask +{ + bool mDisplayText:1; + bool mGetInkey:1; + bool mGetInput:1; + bool mSetupMenu:1; + bool mSelectItem:1; + bool mSendSMSAlphaIdentifier:1; + bool mSetupEventUserActivity:1; + bool mSetupEventIdleScreenNotify:1; + bool mSetupEventLanguageSelNotify:1; + bool mSetupIdleModeText:1; + bool mLanguageNotification:1; + + // Padding out 1 bits + UINT8 mReserved1:1; + + bool mEndProactiveSession:1; + bool mPlayTone:1; + bool mSetupCall:1; + bool mSendDTMF:1; + bool mLaunchBrowser:1; + bool mSendSS:1; + bool mSendUSSD:1; + bool mProvideLocalInformationLanguage:1; + bool mBearerIndependentProtocol:1; + bool mSetupEventBrowserTermination:1; + + // Padding out 1 bits + UINT8 mReserved2:1; + + bool mSCWSEvent:1; + bool mActivate:1; + bool mSetupEventHCIConnectivity:1; + bool mBearerIndependentProtocolStatus:1; + + // Padding out 5 bits + UINT8 mReserved3:5; +}; + +// Structure to describe request TLV 0x12 for CAT2SetEventReport() +struct sCAT2SetEventReportRequest_Slot +{ + bool mSlot1:1; + bool mSlot2:1; + bool mSlot3:1; + bool mSlot4:1; + bool mSlot5:1; + + // Padding out 3 bits + UINT8 mReserved1:3; +}; + +// Structure to describe request TLV 0x13 for CAT2SetEventReport() +struct sCAT2SetEventReportRequest_FullFunctionMask +{ + bool mSendSMS:1; + bool mSetupCall:1; + bool mSendDTMF:1; + bool mSendSS:1; + bool mSendUSSD:1; + + // Padding out 27 bits + UINT8 mReserved1:3; + UINT8 mReserved2[3]; +}; + +// Structure to describe response TLV 0x10 for CAT2SetEventReport() +struct sCAT2SetEventReportResponse_RegStatusMask +{ + bool mDisplayText:1; + bool mGetInkey:1; + bool mGetInput:1; + bool mSetupMenu:1; + bool mSelectItem:1; + bool mSendSMSAlphaIdentifier:1; + bool mSetupEventUserActivity:1; + bool mSetupEventIdleScreenNotify:1; + bool mSetupEventLanguageSelNotify:1; + bool mSetupIdleModeText:1; + bool mLanguageNotification:1; + bool mRefresh:1; + bool mEndProactiveSession:1; + bool mPlayTone:1; + bool mSetupCall:1; + bool mSendDTMF:1; + bool mLaunchBrowser:1; + bool mSendSS:1; + bool mSendUSSD:1; + bool mProvideLocalInformationLanguage:1; + bool mBearerIndependentProtocol:1; + bool mSetupEventBrowserTermination:1; + bool mProvideLocalInformationTime:1; + + // Padding out 1 bits + UINT8 mReserved1:1; + + bool mActivate:1; + bool mSetupEventHCIConnectivity:1; + + // Padding out 6 bits + UINT8 mReserved2:6; +}; + +// Structure to describe response TLV 0x11 for CAT2SetEventReport() +struct sCAT2SetEventReportResponse_DecodedRegStatusMask +{ + bool mDisplayText:1; + bool mGetInkey:1; + bool mGetInput:1; + bool mSetupMenu:1; + bool mSelectItem:1; + bool mSendSMSAlphaIdentifier:1; + bool mSetupEventUserActivity:1; + bool mSetupEventIdleScreenNotify:1; + bool mSetupEventLanguageSelNotify:1; + bool mSetupIdleModeText:1; + bool mLanguageNotification:1; + + // Padding out 1 bits + UINT8 mReserved1:1; + + bool mEndProactiveSession:1; + bool mPlayTone:1; + bool mSetupCall:1; + bool mSendDTMF:1; + bool mLaunchBrowser:1; + bool mSendSS:1; + bool mSendUSSD:1; + bool mProvideLocalInformationLanguage:1; + bool mBearerIndependentProtocol:1; + bool mSetupEventBrowserTermination:1; + + // Padding out 1 bits + UINT8 mReserved2:1; + + bool mSCWSEvent:1; + bool mActivate:1; + bool mSetupEventHCIConnectivity:1; + bool mBearerIndependentProtocolStatus:1; + + // Padding out 5 bits + UINT8 mReserved3:5; +}; + +// Structure to describe response TLV 0x12 for CAT2SetEventReport() +struct sCAT2SetEventReportResponse_FullFunctionFailureMask +{ + bool mSendSMS:1; + bool mSetupCall:1; + bool mSendDTMF:1; + bool mSendSS:1; + bool mSendUSSD:1; + + // Padding out 27 bits + UINT8 mReserved1:3; + UINT8 mReserved2[3]; +}; + +// Structure to describe indication TLV 0x10 for CAT2 EventReport +struct sCAT2EventReportIndication_DisplayTextEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mDisplayTextCommand[1]; +}; + +// Structure to describe indication TLV 0x11 for CAT2 EventReport +struct sCAT2EventReportIndication_GetInkeyEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mGetInkeyCommand[1]; +}; + +// Structure to describe indication TLV 0x12 for CAT2 EventReport +struct sCAT2EventReportIndication_GetInputEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mGetInputCommand[1]; +}; + +// Structure to describe indication TLV 0x13 for CAT2 EventReport +struct sCAT2EventReportIndication_SetupMenuEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mSetupMenuCommand[1]; +}; + +// Structure to describe indication TLV 0x14 for CAT2 EventReport +struct sCAT2EventReportIndication_SelectItemEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mSelectItemCommand[1]; +}; + +// Structure to describe indication TLV 0x15 for CAT2 EventReport +struct sCAT2EventReportIndication_AlphaIDAvailable +{ + eQMICATAlphaIDCommandType mAlphaIDCommandType; + UINT16 mAlphaIDLength; + + // This array must be the size specified by mAlphaIDLength + // UINT8 mAlphaID[1]; +}; + +// Structure to describe indication TLV 0x16 for CAT2 EventReport +struct sCAT2EventReportIndication_SetupEventList +{ + bool mUserActivityNotify:1; + bool mIdleScreenAvailable:1; + bool mLanguageSelectionNotify:1; + + // Padding out 29 bits + UINT8 mReserved1:5; + UINT8 mReserved2[3]; +}; + +// Structure to describe indication TLV 0x17 for CAT2 EventReport +struct sCAT2EventReportIndication_SetupIdleModeTextEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mSetupIdleModeTextCommand[1]; +}; + +// Structure to describe indication TLV 0x18 for CAT2 EventReport +struct sCAT2EventReportIndication_LanguageNotificationEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mLanguageNotificationCommand[1]; +}; + +// Structure to describe indication TLV 0x19 for CAT2 EventReport +struct sCAT2EventReportIndication_RefreshEvent +{ + UINT16 mRefreshMode; + eQMICATRefreshStage mRefreshStage; +}; + +// Structure to describe indication TLV 0x1A for CAT2 EventReport +struct sCAT2EventReportIndication_EndProactiveSession +{ + eQMICATProactiveSessionEndType mProactiveSessionEndType; +}; + +// Structure to describe indication TLV 0x1B for CAT2 EventReport +struct sCAT2EventReportIndication_DecodedHeaderID +{ + eQMICATCommandID mCommandID; + UINT32 mReferenceID; + UINT8 mCommandNumber; +}; + +// Structure to describe indication TLV 0x1C for CAT2 EventReport +struct sCAT2EventReportIndication_TextString +{ + eQMICATDataCodingScheme mDataCodingScheme; + UINT8 mTextDataLength; + + // This array must be the size specified by mTextDataLength + // UINT8 mTextData[1]; +}; + +// Structure to describe indication TLV 0x1D for CAT2 EventReport +struct sCAT2EventReportIndication_HighPriority +{ + eQMICATHighPriority mHighPriority; +}; + +// Structure to describe indication TLV 0x1E for CAT2 EventReport +struct sCAT2EventReportIndication_UserControl +{ + eQMICATUserControl mUserControl; +}; + +// Structure to describe indication TLV 0x1F for CAT2 EventReport +struct sCAT2EventReportIndication_Icon +{ + eQMICATIconQualifier mIconQualifier; + UINT8 mHeight; + UINT8 mWidth; + eQMICATImageCodingScheme mImageCodingScheme; + UINT8 mRecordNumber; + UINT16 mIconDataLength; + + // This array must be the size specified by mIconDataLength + // UINT8 mIconData[1]; +}; + +// Structure to describe indication TLV 0x20 for CAT2 EventReport +struct sCAT2EventReportIndication_Duration +{ + eQMICATTimeUnits mUnits; + UINT8 mInterval; +}; + +// Structure to describe indication TLV 0x21 for CAT2 EventReport +struct sCAT2EventReportIndication_ResponseFormat +{ + eQMICATResponseFormat mResponseFormat; +}; + +// Structure to describe indication TLV 0x22 for CAT2 EventReport +struct sCAT2EventReportIndication_HelpAvailable +{ + eQMICATHelpAvailable mHelpAvailable; +}; + +// Structure to describe indication TLV 0x23 for CAT2 EventReport +struct sCAT2EventReportIndication_ResponsePackingFormat +{ + eQMICATResponsePackingFormat mResponsePackingFormat; +}; + +// Structure to describe indication TLV 0x24 for CAT2 EventReport +struct sCAT2EventReportIndication_ResponseLength +{ + UINT8 mMaximumUserInput; + UINT8 mMinimumUserInput; +}; + +// Structure to describe indication TLV 0x25 for CAT2 EventReport +struct sCAT2EventReportIndication_ShowUserInput +{ + eQMICATShowUserInput mShowUserInput; +}; + +// Structure to describe indication TLV 0x26 for CAT2 EventReport +struct sCAT2EventReportIndication_Tone +{ + eQMICATTone mTone; +}; + +// Structure to describe indication TLV 0x27 for CAT2 EventReport +struct sCAT2EventReportIndication_SoftkeySelection +{ + eQMICATSoftkeySelection mSoftkeySelection; +}; + +// Structure to describe indication TLV 0x28 for CAT2 EventReport +struct sCAT2EventReportIndication_Items +{ + UINT8 mItemsLength; + + struct sItem + { + UINT8 mItemID; + UINT8 mItemTextLength; + + // This array must be the size specified by mItemTextLength + // UINT8 mItemText[1]; + }; + + // This array must be the size specified by mItemsLength + // sItem mItems[1]; +}; + +// Structure to describe indication TLV 0x29 for CAT2 EventReport +struct sCAT2EventReportIndication_DefaultItem +{ + UINT8 mDefaultItem; +}; + +// Structure to describe indication TLV 0x2A for CAT2 EventReport +struct sCAT2EventReportIndication_NextActionIdentifier +{ + UINT8 mActionsLength; + + // This array must be the size specified by mActionsLength + // eQMICATNextAction mNextAction[1]; +}; + +// Structure to describe indication TLV 0x2B for CAT2 EventReport +struct sCAT2EventReportIndication_IconIDList +{ + eQMICATDisplayIconOnly mDisplayIconOnly; + UINT8 mItemsLength; + + struct sItem + { + eQMICATIconQualifier mIconQualifier; + UINT8 mHeight; + UINT8 mWidth; + eQMICATImageCodingScheme mImageCodingScheme; + UINT8 mRecordNumber; + UINT16 mIconDataLength; + + // This array must be the size specified by mIconDataLength + // UINT8 mIconData[1]; + }; + + // This array must be the size specified by mItemsLength + // sItem mItems[1]; +}; + +// Structure to describe indication TLV 0x2C for CAT2 EventReport +struct sCAT2EventReportIndication_Presentation +{ + eQMICATPresentation mPresentation; +}; + +// Structure to describe indication TLV 0x2D for CAT2 EventReport +struct sCAT2EventReportIndication_PackingRequired +{ + eQMICATPackingRequired mPackingRequired; +}; + +// Structure to describe indication TLV 0x2E for CAT2 EventReport +struct sCAT2EventReportIndication_SMSTPDU +{ + UINT8 mSMSTPDUDataLength; + + // This array must be the size specified by mSMSTPDUDataLength + // UINT8 mSMSTPDUData[1]; +}; + +// Structure to describe indication TLV 0x2F for CAT2 EventReport +struct sCAT2EventReportIndication_IsCDMASMS +{ + eQMICATIsCDMASMS mIsCDMASMS; +}; + +// Structure to describe indication TLV 0x30 for CAT2 EventReport +struct sCAT2EventReportIndication_Address +{ + eQMICATAddressTON mAddressTON; + eQMICATAddressNPI mAddressNPI; + UINT8 mAddressDataLength; + + // This array must be the size specified by mAddressDataLength + // char mAddressData[1]; +}; + +// Structure to describe indication TLV 0x31 for CAT2 EventReport +struct sCAT2EventReportIndication_CallSetupRequirement +{ + eQMICATCallSetupRequirement mCallSetupRequirement; +}; + +// Structure to describe indication TLV 0x32 for CAT2 EventReport +struct sCAT2EventReportIndication_Redial +{ + eQMICATRedialNecessary mRedialNecessary; + eQMICATTimeUnits mUnits; + UINT8 mInterval; +}; + +// Structure to describe indication TLV 0x33 for CAT2 EventReport +struct sCAT2EventReportIndication_Subaddress +{ + UINT8 mSubaddressDataLength; + + struct sSubaddressData + { + UINT8 mSubaddressData1:4; + UINT8 mSubaddressData2:4; + }; + + // This array must be the size specified by mSubaddressDataLength + // sSubaddressData mSubaddressDatas[1]; +}; + +// Structure to describe indication TLV 0x34 for CAT2 EventReport +struct sCAT2EventReportIndication_CapabilitiesConfiguration +{ + UINT8 mCapabilitesConfigurationLength; + + // This array must be the size specified by mCapabilitesConfigurationLength + // UINT8 mCapabilitiesConfiguration[1]; +}; + +// Structure to describe indication TLV 0x35 for CAT2 EventReport +struct sCAT2EventReportIndication_DTMF +{ + UINT8 mDTMFDataLength; + + struct sDTMFData + { + UINT8 mDTMFData1:4; + UINT8 mDTMFData2:4; + }; + + // This array must be the size specified by mDTMFDataLength + // sDTMFData mDTMFDatas[1]; +}; + +// Structure to describe indication TLV 0x36 for CAT2 EventReport +struct sCAT2EventReportIndication_SpecificLanguageNotification +{ + eQMICATSpecificLanguageNotfication mSpecificLanguageNotification; +}; + +// Structure to describe indication TLV 0x37 for CAT2 EventReport +struct sCAT2EventReportIndication_Language +{ + char mLanguage[2]; +}; + +// Structure to describe indication TLV 0x38 for CAT2 EventReport +struct sCAT2EventReportIndication_LaunchMode +{ + eQMICATLaunchMode mLaunchMode; +}; + +// Structure to describe indication TLV 0x39 for CAT2 EventReport +struct sCAT2EventReportIndication_URL +{ + UINT8 mURLDataLength; + + // This array must be the size specified by mURLDataLength + // char mURLData[1]; +}; + +// Structure to describe indication TLV 0x3A for CAT2 EventReport +struct sCAT2EventReportIndication_BrowserID +{ + UINT8 mBrowserID; +}; + +// Structure to describe indication TLV 0x3B for CAT2 EventReport +struct sCAT2EventReportIndication_BearerList +{ + UINT8 mBearerListLength; + + // This array must be the size specified by mBearerListLength + // eQMICATBearer mBearerList[1]; +}; + +// Structure to describe indication TLV 0x3C for CAT2 EventReport +struct sCAT2EventReportIndication_ProvisioningFile +{ + UINT32 mNumberOfProvisioningFiles; + + struct sFile + { + UINT8 mPathLength; + + // This array must be the size specified by mPathLength + // char mPath[1]; + }; + + // This array must be the size specified by mNumberOfProvisioningFiles + // sFile mFiles[1]; +}; + +// Structure to describe indication TLV 0x3D for CAT2 EventReport +struct sCAT2EventReportIndication_USSDString +{ + eQMICATUSSDDataCodingScheme mOriginalDataCodingScheme; + eQMICATUSSDDataCodingScheme mDataCodingScheme; + UINT8 mUSSDTextLength; + + // This array must be the size specified by mUSSDTextLength + // UINT8 mUSSDText[1]; +}; + +// Structure to describe indication TLV 0x3E for CAT2 EventReport +struct sCAT2EventReportIndication_DefaultText +{ + eQMICATDataCodingScheme mDataCodingScheme; + UINT8 mTextDataLength; + + // This array must be the size specified by mTextDataLength + // UINT8 mTextData[1]; +}; + +// Structure to describe indication TLV 0x3F for CAT2 EventReport +struct sCAT2EventReportIndication_ImmediateResponseRequired +{ + eQMICATImmediateResponse mImmediateResponse; +}; + +// Structure to describe indication TLV 0x40 for CAT2 EventReport +struct sCAT2EventReportIndication_UserConfirmationAlpha +{ + eQMICATDataCodingScheme mDataCodingScheme; + UINT8 mTextDataLength; + + // This array must be the size specified by mTextDataLength + // UINT8 mTextData[1]; +}; + +// Structure to describe indication TLV 0x41 for CAT2 EventReport +struct sCAT2EventReportIndication_SetupCallDisplayAlpha +{ + eQMICATDataCodingScheme mDataCodingScheme; + UINT8 mTextDataLength; + + // This array must be the size specified by mTextDataLength + // UINT8 mTextData[1]; +}; + +// Structure to describe indication TLV 0x42 for CAT2 EventReport +struct sCAT2EventReportIndication_UserConfirmationIcon +{ + eQMICATIconQualifier mIconQualifier; + UINT8 mHeight; + UINT8 mWidth; + eQMICATImageCodingScheme mImageCodingScheme; + UINT8 mRecordNumber; + UINT16 mIconDataLength; + + // This array must be the size specified by mIconDataLength + // UINT8 mIconData[1]; +}; + +// Structure to describe indication TLV 0x43 for CAT2 EventReport +struct sCAT2EventReportIndication_SetupCallDisplayIcon +{ + eQMICATIconQualifier mIconQualifier; + UINT8 mHeight; + UINT8 mWidth; + eQMICATImageCodingScheme mImageCodingScheme; + UINT8 mRecordNumber; + UINT16 mIconDataLength; + + // This array must be the size specified by mIconDataLength + // UINT8 mIconData[1]; +}; + +// Structure to describe indication TLV 0x44 for CAT2 EventReport +struct sCAT2EventReportIndication_GatewayProxy +{ + eQMICATDataCodingScheme mDataCodingScheme; + UINT8 mTextDataLength; + + // This array must be the size specified by mTextDataLength + // UINT8 mTextData[1]; +}; + +// Structure to describe indication TLV 0x45 for CAT2 EventReport +struct sCAT2EventReportIndication_Alpha +{ + eQMICATDataCodingScheme mDataCodingScheme; + UINT8 mTextDataLength; + + // This array must be the size specified by mTextDataLength + // UINT8 mTextData[1]; +}; + +// Structure to describe indication TLV 0x46 for CAT2 EventReport +struct sCAT2EventReportIndication_NotificationRequired +{ + eQMICATNotificationRequired mNotificationRequired; +}; + +// Structure to describe indication TLV 0x47 for CAT2 EventReport +struct sCAT2EventReportIndication_PlayToneEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mPlayToneCommand[1]; +}; + +// Structure to describe indication TLV 0x48 for CAT2 EventReport +struct sCAT2EventReportIndication_SetupCallEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mSetupCallCommand[1]; +}; + +// Structure to describe indication TLV 0x49 for CAT2 EventReport +struct sCAT2EventReportIndication_SendDTMFEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mSendDTMFCommand[1]; +}; + +// Structure to describe indication TLV 0x4A for CAT2 EventReport +struct sCAT2EventReportIndication_LaunchBrowserEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mLaunchBrowserCommand[1]; +}; + +// Structure to describe indication TLV 0x4B for CAT2 EventReport +struct sCAT2EventReportIndication_SendSMSEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mSendSMSCommand[1]; +}; + +// Structure to describe indication TLV 0x4C for CAT2 EventReport +struct sCAT2EventReportIndication_SendSSEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mSendSSCommand[1]; +}; + +// Structure to describe indication TLV 0x4D for CAT2 EventReport +struct sCAT2EventReportIndication_SendUSSDEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mSendUSSDCommand[1]; +}; + +// Structure to describe indication TLV 0x4E for CAT2 EventReport +struct sCAT2EventReportIndication_ProvideLocalInformationEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mProvideLocalInformationCommand[1]; +}; + +// Structure to describe indication TLV 0x4F for CAT2 EventReport +struct sCAT2EventReportIndication_SetupRawEventList +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mSetupEventListCommand[1]; +}; + +// Structure to describe indication TLV 0x50 for CAT2 EventReport +struct sCAT2EventReportIndication_Slot +{ + eQMICATSlot mSlot; +}; + +// Structure to describe indication TLV 0x51 for CAT2 EventReport +struct sCAT2EventReportIndication_OpenChannelEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mOpenChannelCommand[1]; +}; + +// Structure to describe indication TLV 0x52 for CAT2 EventReport +struct sCAT2EventReportIndication_CloseChannelEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mCloseChannelCommand[1]; +}; + +// Structure to describe indication TLV 0x53 for CAT2 EventReport +struct sCAT2EventReportIndication_SendDataEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mSendDataCommand[1]; +}; + +// Structure to describe indication TLV 0x54 for CAT2 EventReport +struct sCAT2EventReportIndication_ReceiveDataEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mReceiveDataCommand[1]; +}; + +// Structure to describe indication TLV 0x55 for CAT2 EventReport +struct sCAT2EventReportIndication_OnDemmandLinkEstablish +{ + eQMICATOnDemandLinkEstablish mOnDemandLinkEstablish; +}; + +// Structure to describe indication TLV 0x56 for CAT2 EventReport +struct sCAT2EventReportIndication_CSDBearerDescription +{ + UINT8 mSpeed; + eQMICATCSDBearerName mCSDBearerName; + eQMICATConnectionElement mConnectionElement; +}; + +// Structure to describe indication TLV 0x57 for CAT2 EventReport +struct sCAT2EventReportIndication_GPRSBearerDescription +{ + UINT8 mPrecedenceClass; + UINT8 mDelayClass; + UINT8 mReliabilityClass; + UINT8 mPeakThroughput; + UINT8 mMeanThroughput; + eQMICATPacketDataProtocol mPacketDataProtocol; +}; + +// Structure to describe indication TLV 0x58 for CAT2 EventReport +struct sCAT2EventReportIndication_EUTRANExternalParameterBearerDescription +{ + eQMICATTrafficClass mTrafficClass; + UINT16 mMaxUploadBitrate; + UINT16 mMaxDownloadBitrate; + UINT16 mGuaranteedUploadBitrate; + UINT16 mGuaranteedDownloadBitrate; + eQMICATDeliveryOrder mDeliveryOrder; + UINT8 mMaxSDUSize; + UINT8 mMaxSDUErrorRatio; + UINT8 mResidualBitErrorRatio; + eQMICATDeliverErrorSDU mDeliverErrorSDU; + UINT8 mTransferDelay; + UINT8 mTrafficHandlingPRI; + eQMICATPDPType mPDPType; +}; + +// Structure to describe indication TLV 0x59 for CAT2 EventReport +struct sCAT2EventReportIndication_EUTRANExternalMappedUTRANBearerDescription +{ + UINT8 mQCI; + UINT8 mMaxUploadBitrate; + UINT8 mMaxDownloadBitrate; + UINT8 mGuaranteedUploadBitrate; + UINT8 mGuaranteedDownloadBitrate; + UINT8 mMaximumUploadBitrateExt; + UINT8 mMaximumDownloadBitrateExt; + UINT8 mGuaranteedUploadBitrateExt; + UINT8 mGuaranteedDownloadBitrateExt; + eQMICATPDPType mPDPType; +}; + +// Structure to describe indication TLV 0x5A for CAT2 EventReport +struct sCAT2EventReportIndication_BufferSize +{ + UINT16 mBufferSize; +}; + +// Structure to describe indication TLV 0x5B for CAT2 EventReport +struct sCAT2EventReportIndication_NetworkAccessName +{ + UINT8 mNetworkAccessNameLength; + + // This array must be the size specified by mNetworkAccessNameLength + // UINT8 mNetworkAccessName[1]; +}; + +// Structure to describe indication TLV 0x5C for CAT2 EventReport +struct sCAT2EventReportIndication_OtherAddress +{ + eQMICATAddressType mAddressType; + UINT8 mAddressDataLength; + + // This array must be the size specified by mAddressDataLength + // char mAddressData[1]; +}; + +// Structure to describe indication TLV 0x5D for CAT2 EventReport +struct sCAT2EventReportIndication_UserLogin +{ + eQMICATDataCodingScheme mDataCodingScheme; + UINT8 mTextDataLength; + + // This array must be the size specified by mTextDataLength + // UINT8 mTextData[1]; +}; + +// Structure to describe indication TLV 0x5E for CAT2 EventReport +struct sCAT2EventReportIndication_UserPassword +{ + eQMICATDataCodingScheme mDataCodingScheme; + UINT8 mTextDataLength; + + // This array must be the size specified by mTextDataLength + // UINT8 mTextData[1]; +}; + +// Structure to describe indication TLV 0x5F for CAT2 EventReport +struct sCAT2EventReportIndication_TransportLevel +{ + eQMICATTransportProtocol mTransportProtocol; + UINT16 mPortNumber; +}; + +// Structure to describe indication TLV 0x60 for CAT2 EventReport +struct sCAT2EventReportIndication_DataDestinationAddress +{ + eQMICATAddressType mAddressType; + UINT8 mAddressDataLength; + + // This array must be the size specified by mAddressDataLength + // char mAddressData[1]; +}; + +// Structure to describe indication TLV 0x61 for CAT2 EventReport +struct sCAT2EventReportIndication_ChannelDataLength +{ + UINT8 mChannelDataLength; +}; + +// Structure to describe indication TLV 0x62 for CAT2 EventReport +struct sCAT2EventReportIndication_SendDataImmediately +{ + eQMICATSendDataImmediately mSendDataImmediately; +}; + +// Structure to describe indication TLV 0x63 for CAT2 EventReport +struct sCAT2EventReportIndication_ChannelData +{ + UINT16 mChannelDataLength; + + // This array must be the size specified by mChannelDataLength + // UINT8 mChannelData[1]; +}; + +// Structure to describe indication TLV 0x64 for CAT2 EventReport +struct sCAT2EventReportIndication_ChannelID +{ + UINT8 mChannelID; +}; + +// Structure to describe indication TLV 0x65 for CAT2 EventReport +struct sCAT2EventReportIndication_ItemsWithDCS +{ + UINT8 mItemsLength; + + struct sItem + { + UINT8 mItemID; + eQMICATDataCodingScheme mDataCodingScheme; + UINT8 mItemTextLength; + + // This array must be the size specified by mItemTextLength + // UINT8 mItemText[1]; + }; + + // This array must be the size specified by mItemsLength + // sItem mItems[1]; +}; + +// Structure to describe indication TLV 0x66 for CAT2 EventReport +struct sCAT2EventReportIndication_Activate +{ + UINT32 mReferenceID; + UINT16 mActivateLength; + + // This array must be the size specified by mActivateLength + // UINT8 mActivate[1]; +}; + +// Structure to describe indication TLV 0x67 for CAT2 EventReport +struct sCAT2EventReportIndication_ActivateTarget +{ + eQMICATActivateTargets mActivateTarget; +}; + +// Structure to describe indication TLV 0x68 for CAT2 EventReport +struct sCAT2EventReportIndication_ResponseType +{ + eQMICATResponseTypes mResponseType; +}; + +// Structure to describe indication TLV 0x69 for CAT2 EventReport +struct sCAT2EventReportIndication_BearerIndependentProtocolStatus +{ + UINT8 mChannelID; + eQMICATBearerIndependentProtocolStatus mBearerIndependentProtocolStatus; +}; + +// Structure to describe response TLV 0x01 for CAT2GetServiceState() +struct sCAT2GetServiceStateResponse_CATServiceState +{ + bool mCommonDisplayText:1; + bool mCommonGetInkey:1; + bool mCommonGetInput:1; + bool mCommonSetupMenu:1; + bool mCommonSelectItem:1; + bool mCommonSendSMSAlphaIdentifier:1; + bool mCommonSetupEventUserActivity:1; + bool mCommonSetupEventIdleScreenNotify:1; + bool mCommonSetupEventLanguageSelNotify:1; + bool mCommonSetupIdleModeText:1; + bool mCommonLanguageNotification:1; + bool mCommonRefresh:1; + bool mCommonEndProactiveSession:1; + bool mCommonPlayTone:1; + bool mCommonSetupCall:1; + bool mCommonSendDTMF:1; + bool mCommonLaunchBrowser:1; + bool mCommonSendSS:1; + bool mCommonSendUSSD:1; + bool mCommonProvideLocalInformationLanguage:1; + bool mCommonBearerIndependentProtocol:1; + bool mCommonSetupEventBrowserTermination:1; + bool mCommonProvideLocalInformationTime:1; + + // Padding out 1 bits + UINT8 mReserved1:1; + + bool mCommonActivate:1; + bool mCommonSetupEventHCIConnectivity:1; + + // Padding out 6 bits + UINT8 mReserved2:6; + + bool mControlDisplayText:1; + bool mControlGetInkey:1; + bool mControlGetInput:1; + bool mControlSetupMenu:1; + bool mControlSelectItem:1; + bool mControlSendSMSAlphaIdentifier:1; + bool mControlSetupEventUserActivity:1; + bool mControlSetupEventIdleScreenNotify:1; + bool mControlSetupEventLanguageSelNotify:1; + bool mControlSetupIdleModeText:1; + bool mControlLanguageNotification:1; + bool mControlRefresh:1; + bool mControlEndProactiveSession:1; + bool mControlPlayTone:1; + bool mControlSetupCall:1; + bool mControlSendDTMF:1; + bool mControlLaunchBrowser:1; + bool mControlSendSS:1; + bool mControlSendUSSD:1; + bool mControlProvideLocalInformationLanguage:1; + bool mControlBearerIndependentProtocol:1; + bool mControlSetupEventBrowserTermination:1; + bool mControlProvideLocalInformationTime:1; + + // Padding out 1 bits + UINT8 mReserved3:1; + + bool mControlActivate:1; + bool mControlSetupEventHCIConnectivity:1; + + // Padding out 6 bits + UINT8 mReserved4:6; +}; + +// Structure to describe response TLV 0x10 for CAT2GetServiceState() +struct sCAT2GetServiceStateResponse_DecodedCATServiceState +{ + bool mCommonDisplayText:1; + bool mCommonGetInkey:1; + bool mCommonGetInput:1; + bool mCommonSetupMenu:1; + bool mCommonSelectItem:1; + bool mCommonSendSMSAlphaIdentifier:1; + bool mCommonSetupEventUserActivity:1; + bool mCommonSetupEventIdleScreenNotify:1; + bool mCommonSetupEventLanguageSelNotify:1; + bool mCommonSetupIdleModeText:1; + bool mCommonLanguageNotification:1; + + // Padding out 1 bits + UINT8 mReserved1:1; + + bool mCommonEndProactiveSession:1; + bool mCommonPlayTone:1; + bool mCommonSetupCall:1; + bool mCommonSendDTMF:1; + bool mCommonLaunchBrowser:1; + bool mCommonSendSS:1; + bool mCommonSendUSSD:1; + bool mCommonProvideLocalInformationLanguage:1; + bool mCommonBearerIndependentProtocol:1; + bool mCommonSetupEventBrowserTermination:1; + + // Padding out 1 bits + UINT8 mReserved2:1; + + bool mCommonSCWSEvent:1; + bool mCommonActivate:1; + bool mCommonSetupEventHCIConnectivity:1; + bool mCommonBearerIndependentProtocolStatus:1; + + // Padding out 5 bits + UINT8 mReserved3:5; + + bool mControlDisplayText:1; + bool mControlGetInkey:1; + bool mControlGetInput:1; + bool mControlSetupMenu:1; + bool mControlSelectItem:1; + bool mControlSendSMSAlphaIdentifier:1; + bool mControlSetupEventUserActivity:1; + bool mControlSetupEventIdleScreenNotify:1; + bool mControlSetupEventLanguageSelNotify:1; + bool mControlSetupIdleModeText:1; + bool mControlLanguageNotification:1; + + // Padding out 1 bits + UINT8 mReserved4:1; + + bool mControlEndProactiveSession:1; + bool mControlPlayTone:1; + bool mControlSetupCall:1; + bool mControlSendDTMF:1; + bool mControlLaunchBrowser:1; + bool mControlSendSS:1; + bool mControlSendUSSD:1; + bool mControlProvideLocalInformationLanguage:1; + bool mControlBearerIndependentProtocol:1; + bool mControlSetupEventBrowserTermination:1; + + // Padding out 1 bits + UINT8 mReserved5:1; + + bool mControlSCWSEvent:1; + bool mControlActivate:1; + bool mControlSetupEventHCIConnectivity:1; + bool mControlBearerIndependentProtocolStatus:1; + + // Padding out 5 bits + UINT8 mReserved6:5; +}; + +// Structure to describe response TLV 0x11 for CAT2GetServiceState() +struct sCAT2GetServiceStateResponse_FullFunctionServiceState +{ + bool mSendSMS:1; + bool mSetupCall:1; + bool mSendDTMF:1; + bool mSendSS:1; + bool mSendUSSD:1; + + // Padding out 27 bits + UINT8 mReserved1:3; + UINT8 mReserved2[3]; +}; + +// Structure to describe request TLV 0x01 for CAT2SendTerminalResponse() +struct sCAT2SendTerminalResponseRequest_TerminalResponseType +{ + UINT32 mReferenceID; + UINT16 mTerminalResponseLength; + + // This array must be the size specified by mTerminalResponseLength + // UINT8 mTerminalResponse[1]; +}; + +// Structure to describe request TLV 0x10 for CAT2SendTerminalResponse() +struct sCAT2SendTerminalResponseRequest_Slot +{ + eQMICATSlot mSlot; +}; + +// Structure to describe response TLV 0x10 for CAT2SendTerminal() +struct sCAT2SendTerminalResponseResponse_TRResponse +{ + UINT8 mSW1; + UINT8 mSW2; + UINT8 mTerminalResponseLength; + + // This array must be the size specified by mTerminalResponseLength + // UINT8 mTerminalResponseData[1]; +}; + +// Structure to describe request TLV 0x01 for CAT2EnvelopeCommand() +struct sCAT2EnvelopeCommandRequest_EnvelopeCommand +{ + eQMICATEnvelopeCommandType mEnvelopeCommandType; + UINT16 mEnvelopeLength; + + // This array must be the size specified by mEnvelopeLength + // UINT8 mEnvelopeData[1]; +}; + +// Structure to describe request TLV 0x10 for CAT2EnvelopeCommand() +struct sCAT2EnvelopeCommandRequest_Slot +{ + eQMICATSlot mSlot; +}; + +// Structure to describe response TLV 0x10 for CAT2EnvelopeCommand() +struct sCAT2EnvelopeCommandResponse_RawResponse +{ + UINT8 mSW1; + UINT8 mSW2; + UINT8 mEnvelopeResponseLength; + + // This array must be the size specified by mEnvelopeResponseLength + // UINT8 mEnvelopeResponseData[1]; +}; + +// Structure to describe request TLV 0x01 for CAT2GetEventReport() +struct sCAT2GetEventReportRequest_CommandInput +{ + UINT32 mCommandID; + eQMICATCommandFormat mCommandFormat; +}; + +// Structure to describe response TLV 0x10 for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_DisplayTextEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mDisplayTextCommand[1]; +}; + +// Structure to describe response TLV 0x11 for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_GetInkeyEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mGetInkeyCommand[1]; +}; + +// Structure to describe response TLV 0x12 for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_GetInputEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mGetInputCommand[1]; +}; + +// Structure to describe response TLV 0x13 for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_SetupMenuEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mSetupMenuCommand[1]; +}; + +// Structure to describe response TLV 0x14 for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_SelectItemEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mSelectItemCommand[1]; +}; + +// Structure to describe response TLV 0x15 for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_AlphaIDAvailable +{ + eQMICATAlphaIDCommandType mAlphaIDCommandType; + UINT16 mAlphaIDLength; + + // This array must be the size specified by mAlphaIDLength + // UINT8 mAlphaID[1]; +}; + +// Structure to describe response TLV 0x16 for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_SetupEventList +{ + bool mUserActivityNotify:1; + bool mIdleScreenAvailable:1; + bool mLanguageSelectionNotify:1; + + // Padding out 29 bits + UINT8 mReserved1:5; + UINT8 mReserved2[3]; +}; + +// Structure to describe response TLV 0x17 for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_SetupIdleModeTextEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mSetupIdleModeTextCommand[1]; +}; + +// Structure to describe response TLV 0x18 for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_LanguageNotificationEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mLanguageNotificationCommand[1]; +}; + +// Structure to describe response TLV 0x19 for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_RefreshEvent +{ + UINT16 mRefreshMode; + eQMICATRefreshStage mRefreshStage; +}; + +// Structure to describe response TLV 0x1A for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_EndProactiveSession +{ + eQMICATProactiveSessionEndType mProactiveSessionEndType; +}; + +// Structure to describe response TLV 0x1B for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_DecodedHeaderID +{ + eQMICATCommandID mCommandID; + UINT32 mReferenceID; + UINT8 mCommandNumber; +}; + +// Structure to describe response TLV 0x1C for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_TextString +{ + eQMICATDataCodingScheme mDataCodingScheme; + UINT8 mTextDataLength; + + // This array must be the size specified by mTextDataLength + // UINT8 mTextData[1]; +}; + +// Structure to describe response TLV 0x1D for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_HighPriority +{ + eQMICATHighPriority mHighPriority; +}; + +// Structure to describe response TLV 0x1E for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_UserControl +{ + eQMICATUserControl mUserControl; +}; + +// Structure to describe response TLV 0x1F for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_Icon +{ + eQMICATIconQualifier mIconQualifier; + UINT8 mHeight; + UINT8 mWidth; + eQMICATImageCodingScheme mImageCodingScheme; + UINT8 mRecordNumber; + UINT16 mIconDataLength; + + // This array must be the size specified by mIconDataLength + // UINT8 mIconData[1]; +}; + +// Structure to describe response TLV 0x20 for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_Duration +{ + eQMICATTimeUnits mUnits; + UINT8 mInterval; +}; + +// Structure to describe response TLV 0x21 for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_ResponseFormat +{ + eQMICATResponseFormat mResponseFormat; +}; + +// Structure to describe response TLV 0x22 for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_HelpAvailable +{ + eQMICATHelpAvailable mHelpAvailable; +}; + +// Structure to describe response TLV 0x23 for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_ResponsePackingFormat +{ + eQMICATResponsePackingFormat mResponsePackingFormat; +}; + +// Structure to describe response TLV 0x24 for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_ResponseLength +{ + UINT8 mMaximumUserInput; + UINT8 mMinimumUserInput; +}; + +// Structure to describe response TLV 0x25 for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_ShowUserInput +{ + eQMICATShowUserInput mShowUserInput; +}; + +// Structure to describe response TLV 0x26 for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_Tone +{ + eQMICATTone mTone; +}; + +// Structure to describe response TLV 0x27 for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_SoftkeySelection +{ + eQMICATSoftkeySelection mSoftkeySelection; +}; + +// Structure to describe response TLV 0x28 for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_Items +{ + UINT8 mItemsLength; + + struct sItem + { + UINT8 mItemID; + UINT8 mItemTextLength; + + // This array must be the size specified by mItemTextLength + // UINT8 mItemText[1]; + }; + + // This array must be the size specified by mItemsLength + // sItem mItems[1]; +}; + +// Structure to describe response TLV 0x29 for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_DefaultItems +{ + UINT8 mDefaultItem; +}; + +// Structure to describe response TLV 0x2A for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_NextActionIdentifier +{ + UINT8 mActionsLength; + + // This array must be the size specified by mActionsLength + // eQMICATNextAction mNextAction[1]; +}; + +// Structure to describe response TLV 0x2B for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_IconIDList +{ + eQMICATDisplayIconOnly mDisplayIconOnly; + UINT8 mItemsLength; + + struct sItem + { + eQMICATIconQualifier mIconQualifier; + UINT8 mHeight; + UINT8 mWidth; + eQMICATImageCodingScheme mImageCodingScheme; + UINT8 mRecordNumber; + UINT16 mIconDataLength; + + // This array must be the size specified by mIconDataLength + // UINT8 mIconData[1]; + }; + + // This array must be the size specified by mItemsLength + // sItem mItems[1]; +}; + +// Structure to describe response TLV 0x2C for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_Presentation +{ + eQMICATPresentation mPresentation; +}; + +// Structure to describe response TLV 0x2D for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_PackingRequired +{ + eQMICATPackingRequired mPackingRequired; +}; + +// Structure to describe response TLV 0x2E for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_SMSTPDU +{ + UINT8 mSMSTPDUDataLength; + + // This array must be the size specified by mSMSTPDUDataLength + // UINT8 mSMSTPDUData[1]; +}; + +// Structure to describe response TLV 0x2F for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_IsCDMASMS +{ + eQMICATIsCDMASMS mIsCDMASMS; +}; + +// Structure to describe response TLV 0x30 for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_Address +{ + eQMICATAddressTON mAddressTON; + eQMICATAddressNPI mAddressNPI; + UINT8 mAddressDataLength; + + // This array must be the size specified by mAddressDataLength + // char mAddressData[1]; +}; + +// Structure to describe response TLV 0x31 for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_CallSetupRequirement +{ + eQMICATCallSetupRequirement mCallSetupRequirement; +}; + +// Structure to describe response TLV 0x32 for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_Redial +{ + eQMICATRedialNecessary mRedialNecessary; + eQMICATTimeUnits mUnits; + UINT8 mInterval; +}; + +// Structure to describe response TLV 0x33 for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_Subaddress +{ + UINT8 mSubaddressDataLength; + + struct sSubaddressData + { + UINT8 mSubaddressData1:4; + UINT8 mSubaddressData2:4; + }; + + // This array must be the size specified by mSubaddressDataLength + // sSubaddressData mSubaddressDatas[1]; +}; + +// Structure to describe response TLV 0x34 for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_CapabilityConfiguration +{ + UINT8 mCapabilitesConfigurationLength; + + // This array must be the size specified by mCapabilitesConfigurationLength + // UINT8 mCapabilitiesConfiguration[1]; +}; + +// Structure to describe response TLV 0x35 for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_DTMF +{ + UINT8 mDTMFDataLength; + + struct sDTMFData + { + UINT8 mDTMFData1:4; + UINT8 mDTMFData2:4; + }; + + // This array must be the size specified by mDTMFDataLength + // sDTMFData mDTMFDatas[1]; +}; + +// Structure to describe response TLV 0x36 for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_SpecificLanguageNotification +{ + eQMICATSpecificLanguageNotfication mSpecificLanguageNotification; +}; + +// Structure to describe response TLV 0x37 for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_Language +{ + char mLanguage[2]; +}; + +// Structure to describe response TLV 0x38 for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_LaunchMode +{ + eQMICATLaunchMode mLaunchMode; +}; + +// Structure to describe response TLV 0x39 for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_URL +{ + UINT8 mURLDataLength; + + // This array must be the size specified by mURLDataLength + // char mURLData[1]; +}; + +// Structure to describe response TLV 0x3A for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_BrowserID +{ + UINT8 mBrowserID; +}; + +// Structure to describe response TLV 0x3B for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_BearerList +{ + UINT8 mBearerListLength; + + // This array must be the size specified by mBearerListLength + // eQMICATBearer mBearerList[1]; +}; + +// Structure to describe response TLV 0x3C for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_ProvisioningFiles +{ + UINT32 mNumberOfProvisioningFiles; + + struct sFile + { + UINT8 mPathLength; + + // This array must be the size specified by mPathLength + // char mPath[1]; + }; + + // This array must be the size specified by mNumberOfProvisioningFiles + // sFile mFiles[1]; +}; + +// Structure to describe response TLV 0x3D for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_USSDString +{ + eQMICATUSSDDataCodingScheme mOriginalDataCodingScheme; + eQMICATUSSDDataCodingScheme mDataCodingScheme; + UINT8 mUSSDTextLength; + + // This array must be the size specified by mUSSDTextLength + // UINT8 mUSSDText[1]; +}; + +// Structure to describe response TLV 0x3E for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_DefaultText +{ + eQMICATDataCodingScheme mDataCodingScheme; + UINT8 mTextDataLength; + + // This array must be the size specified by mTextDataLength + // UINT8 mTextData[1]; +}; + +// Structure to describe response TLV 0x3F for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_ImmediateResponseRequest +{ + eQMICATImmediateResponse mImmediateResponse; +}; + +// Structure to describe response TLV 0x40 for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_UserConfirmationAlpha +{ + eQMICATDataCodingScheme mDataCodingScheme; + UINT8 mTextDataLength; + + // This array must be the size specified by mTextDataLength + // UINT8 mTextData[1]; +}; + +// Structure to describe response TLV 0x41 for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_SetupCallDisplayAlpha +{ + eQMICATDataCodingScheme mDataCodingScheme; + UINT8 mTextDataLength; + + // This array must be the size specified by mTextDataLength + // UINT8 mTextData[1]; +}; + +// Structure to describe response TLV 0x42 for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_UserConfirmationIcon +{ + eQMICATIconQualifier mIconQualifier; + UINT8 mHeight; + UINT8 mWidth; + eQMICATImageCodingScheme mImageCodingScheme; + UINT8 mRecordNumber; + UINT16 mIconDataLength; + + // This array must be the size specified by mIconDataLength + // UINT8 mIconData[1]; +}; + +// Structure to describe response TLV 0x43 for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_SetupCallDisplayIcon +{ + eQMICATIconQualifier mIconQualifier; + UINT8 mHeight; + UINT8 mWidth; + eQMICATImageCodingScheme mImageCodingScheme; + UINT8 mRecordNumber; + UINT16 mIconDataLength; + + // This array must be the size specified by mIconDataLength + // UINT8 mIconData[1]; +}; + +// Structure to describe response TLV 0x44 for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_GatewayProxy +{ + eQMICATDataCodingScheme mDataCodingScheme; + UINT8 mTextDataLength; + + // This array must be the size specified by mTextDataLength + // UINT8 mTextData[1]; +}; + +// Structure to describe response TLV 0x45 for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_Alpha +{ + eQMICATDataCodingScheme mDataCodingScheme; + UINT8 mTextDataLength; + + // This array must be the size specified by mTextDataLength + // UINT8 mTextData[1]; +}; + +// Structure to describe response TLV 0x46 for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_NotificationRequired +{ + eQMICATNotificationRequired mNotificationRequired; +}; + +// Structure to describe response TLV 0x47 for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_PlayToneEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mPlayToneCommand[1]; +}; + +// Structure to describe response TLV 0x48 for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_SetupCallEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mSetupCallCommand[1]; +}; + +// Structure to describe response TLV 0x49 for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_SendDTMFEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mSendDTMFCommand[1]; +}; + +// Structure to describe response TLV 0x4A for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_LaunchBrowserEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mLaunchBrowserCommand[1]; +}; + +// Structure to describe response TLV 0x4B for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_SendSMSEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mSendSMSCommand[1]; +}; + +// Structure to describe response TLV 0x4C for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_SendSSEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mSendSSCommand[1]; +}; + +// Structure to describe response TLV 0x4D for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_SendUSSDEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mSendUSSDCommand[1]; +}; + +// Structure to describe response TLV 0x4E for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_ProvideLocalInformationEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mProvideLocalInformationCommand[1]; +}; + +// Structure to describe response TLV 0x4F for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_SetupEventListRawEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mSetupEventListCommand[1]; +}; + +// Structure to describe response TLV 0x50 for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_Slot +{ + eQMICATSlot mSlot; +}; + +// Structure to describe response TLV 0x51 for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_OpenChannelEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mOpenChannelCommand[1]; +}; + +// Structure to describe response TLV 0x52 for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_CloseChannelEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mCloseChannelCommand[1]; +}; + +// Structure to describe response TLV 0x53 for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_SendDataEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mSendDataCommand[1]; +}; + +// Structure to describe response TLV 0x54 for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_ReceiveDataEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mReceiveDataCommand[1]; +}; + +// Structure to describe response TLV 0x55 for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_OnDemandLinkEstablish +{ + eQMICATOnDemandLinkEstablish mOnDemandLinkEstablish; +}; + +// Structure to describe response TLV 0x56 for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_CSDBearerDescription +{ + UINT8 mSpeed; + eQMICATCSDBearerName mCSDBearerName; + eQMICATConnectionElement mConnectionElement; +}; + +// Structure to describe response TLV 0x57 for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_GPRSBearerDescription +{ + UINT8 mPrecedenceClass; + UINT8 mDelayClass; + UINT8 mReliabilityClass; + UINT8 mPeakThroughput; + UINT8 mMeanThroughput; + eQMICATPacketDataProtocol mPacketDataProtocol; +}; + +// Structure to describe response TLV 0x58 for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_EUTRANExternalParameterBearerDescription +{ + eQMICATTrafficClass mTrafficClass; + UINT16 mMaxUploadBitrate; + UINT16 mMaxDownloadBitrate; + UINT16 mGuaranteedUploadBitrate; + UINT16 mGuaranteedDownloadBitrate; + eQMICATDeliveryOrder mDeliveryOrder; + UINT8 mMaxSDUSize; + UINT8 mMaxSDUErrorRatio; + UINT8 mResidualBitErrorRatio; + eQMICATDeliverErrorSDU mDeliverErrorSDU; + UINT8 mTransferDelay; + UINT8 mTrafficHandlingPRI; + eQMICATPDPType mPDPType; +}; + +// Structure to describe response TLV 0x59 for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_EUTRANExternalMappedUTRANBearerDescription +{ + UINT8 mQCI; + UINT8 mMaxUploadBitrate; + UINT8 mMaxDownloadBitrate; + UINT8 mGuaranteedUploadBitrate; + UINT8 mGuaranteedDownloadBitrate; + UINT8 mMaximumUploadBitrateExt; + UINT8 mMaximumDownloadBitrateExt; + UINT8 mGuaranteedUploadBitrateExt; + UINT8 mGuaranteedDownloadBitrateExt; + eQMICATPDPType mPDPType; +}; + +// Structure to describe response TLV 0x5A for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_BufferSize +{ + UINT16 mBufferSize; +}; + +// Structure to describe response TLV 0x5B for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_NetworkAccessName +{ + UINT8 mNetworkAccessNameLength; + + // This array must be the size specified by mNetworkAccessNameLength + // UINT8 mNetworkAccessName[1]; +}; + +// Structure to describe response TLV 0x5C for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_OtherAddress +{ + eQMICATAddressType mAddressType; + UINT8 mAddressDataLength; + + // This array must be the size specified by mAddressDataLength + // char mAddressData[1]; +}; + +// Structure to describe response TLV 0x5D for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_UserLogin +{ + eQMICATDataCodingScheme mDataCodingScheme; + UINT8 mTextDataLength; + + // This array must be the size specified by mTextDataLength + // UINT8 mTextData[1]; +}; + +// Structure to describe response TLV 0x5E for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_UserPassword +{ + eQMICATDataCodingScheme mDataCodingScheme; + UINT8 mTextDataLength; + + // This array must be the size specified by mTextDataLength + // UINT8 mTextData[1]; +}; + +// Structure to describe response TLV 0x5F for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_TransportLevel +{ + eQMICATTransportProtocol mTransportProtocol; + UINT16 mPortNumber; +}; + +// Structure to describe response TLV 0x60 for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_DataDestinationAddress +{ + eQMICATAddressType mAddressType; + UINT8 mAddressDataLength; + + // This array must be the size specified by mAddressDataLength + // char mAddressData[1]; +}; + +// Structure to describe response TLV 0x61 for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_ChannelDataLength +{ + UINT8 mChannelDataLength; +}; + +// Structure to describe response TLV 0x62 for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_SendDataImmediately +{ + eQMICATSendDataImmediately mSendDataImmediately; +}; + +// Structure to describe response TLV 0x63 for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_ChannelData +{ + UINT16 mChannelDataLength; + + // This array must be the size specified by mChannelDataLength + // UINT8 mChannelData[1]; +}; + +// Structure to describe response TLV 0x64 for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_ChannelID +{ + UINT8 mChannelID; +}; + +// Structure to describe response TLV 0x65 for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_ItemsWithDCS +{ + UINT8 mItemsLength; + + struct sItem + { + UINT8 mItemID; + eQMICATDataCodingScheme mDataCodingScheme; + UINT8 mItemTextLength; + + // This array must be the size specified by mItemTextLength + // UINT8 mItemText[1]; + }; + + // This array must be the size specified by mItemsLength + // sItem mItems[1]; +}; + +// Structure to describe response TLV 0x66 for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_Activate +{ + UINT32 mReferenceID; + UINT16 mActivateLength; + + // This array must be the size specified by mActivateLength + // UINT8 mActivate[1]; +}; + +// Structure to describe response TLV 0x67 for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_ActivateTarget +{ + eQMICATActivateTargets mActivateTarget; +}; + +// Structure to describe response TLV 0x68 for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_ResponseType +{ + eQMICATResponseTypes mResponseType; +}; + +// Structure to describe response TLV 0x69 for CAT2GetEventReport() +struct sCAT2GetEventReportResponse_BearerIndependentProtocolStatus +{ + UINT8 mChannelID; + eQMICATBearerIndependentProtocolStatus mBearerIndependentProtocolStatus; +}; + +// Structure to describe request TLV 0x01 for CAT2SendDecodedTerminalResponse() +struct sCAT2SendDecodedTerminalResponseRequest_TerminalResponse +{ + UINT32 mReferenceID; + UINT8 mCommandNumber; + eQMICATResponseCommand mResponseCommand; + UINT8 mGeneralResult; + UINT8 mAdditionalInformationLength; + + // This array must be the size specified by mAdditionalInformationLength + // UINT8 mTerminalResponseAdditionalInformation[1]; +}; + +// Structure to describe request TLV 0x10 for CAT2SendDecodedTerminalResponse() +struct sCAT2SendDecodedTerminalResponseRequest_TextString +{ + eQMICATDataCodingScheme mDataCodingScheme; + UINT8 mTextDataLength; + + // This array must be the size specified by mTextDataLength + // UINT8 mTextData[1]; +}; + +// Structure to describe request TLV 0x11 for CAT2SendDecodedTerminalResponse() +struct sCAT2SendDecodedTerminalResponseRequest_ItemIdentifier +{ + UINT8 mItemIdentifier; +}; + +// Structure to describe request TLV 0x12 for CAT2SendDecodedTerminalResponse() +struct sCAT2SendDecodedTerminalResponseRequest_GetInkeyExtraInfo +{ + eQMICATTimeUnits mUnits; + UINT8 mInterval; + eQMICATDataCodingScheme mDataCodingScheme; + UINT8 mTextDataLength; + + // This array must be the size specified by mTextDataLength + // UINT8 mTextData[1]; +}; + +// Structure to describe request TLV 0x13 for CAT2SendDecodedTerminalResponse() +struct sCAT2SendDecodedTerminalResponseRequest_LanguageInfo +{ + char mLanguage[2]; +}; + +// Structure to describe request TLV 0x14 for CAT2SendDecodedTerminalResponse() +struct sCAT2SendDecodedTerminalResponseRequest_Slot +{ + eQMICATSlot mSlot; +}; + +// Structure to describe request TLV 0x15 for CAT2SendDecodedTerminalResponse() +struct sCAT2SendDecodedTerminalResponseRequest_GetInkeyYesInput +{ + eQMICATTimeUnits mUnits; + UINT8 mInterval; + INT8 mGetInkeyYesInput; +}; + +// Structure to describe response TLV 0x10 for CAT2SendDecodedTerminal() +struct sCAT2SendDecodedTerminalResponseResponse_TRResponse +{ + UINT8 mSW1; + UINT8 mSW2; + UINT8 mTerminalResponseLength; + + // This array must be the size specified by mTerminalResponseLength + // UINT8 mTerminalResponseData[1]; +}; + +// Structure to describe request TLV 0x01 for CAT2SendDecodedEnvelopeCommand() +struct sCAT2SendDecodedEnvelopeCommandRequest_EnvelopeCommand +{ + eQMICATDecodedEnvelopeCommand mEnvelopeCommand; +}; + +// Structure to describe request TLV 0x10 for CAT2SendDecodedEnvelopeCommand() +struct sCAT2SendDecodedEnvelopeCommandRequest_ItemIdentifier +{ + UINT8 mItemIdentifier; +}; + +// Structure to describe request TLV 0x11 for CAT2SendDecodedEnvelopeCommand() +struct sCAT2SendDecodedEnvelopeCommandRequest_HelpRequest +{ + eQMICATHelpRequest mHelpRequest; +}; + +// Structure to describe request TLV 0x12 for CAT2SendDecodedEnvelopeCommand() +struct sCAT2SendDecodedEnvelopeCommandRequest_Language +{ + char mLanguage[2]; +}; + +// Structure to describe request TLV 0x13 for CAT2SendDecodedEnvelopeCommand() +struct sCAT2SendDecodedEnvelopeCommandRequest_Slot +{ + eQMICATSlot mSlot; +}; + +// Structure to describe request TLV 0x14 for CAT2SendDecodedEnvelopeCommand() +struct sCAT2SendDecodedEnvelopeCommandRequest_Address +{ + eQMICATAddressTON mAddressTON; + eQMICATAddressNPI mAddressNPI; + UINT8 mAddressDataLength; + + // This array must be the size specified by mAddressDataLength + // char mAddressData[1]; +}; + +// Structure to describe request TLV 0x15 for CAT2SendDecodedEnvelopeCommand() +struct sCAT2SendDecodedEnvelopeCommandRequest_Subaddress +{ + UINT8 mSubaddressDataLength; + + struct sSubaddressData + { + UINT8 mSubaddressData1:4; + UINT8 mSubaddressData2:4; + }; + + // This array must be the size specified by mSubaddressDataLength + // sSubaddressData mSubaddressDatas[1]; +}; + +// Structure to describe request TLV 0x16 for CAT2SendDecodedEnvelopeCommand() +struct sCAT2SendDecodedEnvelopeCommandRequest_CapabilityConfigParam1 +{ + UINT8 mCapabilitesConfigurationLength; + + // This array must be the size specified by mCapabilitesConfigurationLength + // UINT8 mCapabilitiesConfiguration[1]; +}; + +// Structure to describe request TLV 0x17 for CAT2SendDecodedEnvelopeCommand() +struct sCAT2SendDecodedEnvelopeCommandRequest_CapabilityConfigParam2 +{ + UINT8 mCapabilitesConfigurationLength; + + // This array must be the size specified by mCapabilitesConfigurationLength + // UINT8 mCapabilitiesConfiguration[1]; +}; + +// Structure to describe request TLV 0x18 for CAT2SendDecodedEnvelopeCommand() +struct sCAT2SendDecodedEnvelopeCommandRequest_USSDString +{ + eQMICATDataCodingScheme mDataCodingScheme; + UINT8 mTextDataLength; + + // This array must be the size specified by mTextDataLength + // UINT8 mTextData[1]; +}; + +// Structure to describe request TLV 0x19 for CAT2SendDecodedEnvelopeCommand() +struct sCAT2SendDecodedEnvelopeCommandRequest_PDPContextActivation +{ + UINT8 mPDPContextActivationDataLength; + + // This array must be the size specified by mPDPContextActivationDataLength + // UINT8 mPDPContextActivationData[1]; +}; + +// Structure to describe request TLV 0x1A for CAT2SendDecodedEnvelopeCommand() +struct sCAT2SendDecodedEnvelopeCommandRequest_EPSPDNConnectActivation +{ + UINT8 mEPSPDNConnectActivationDataLength; + + // This array must be the size specified by mEPSPDNConnectActivationDataLength + // UINT8 mEPSPDNConnectActivationData[1]; +}; + +// Structure to describe request TLV 0x1B for CAT2SendDecodedEnvelopeCommand() +struct sCAT2SendDecodedEnvelopeCommandRequest_BrowserTerminationCause +{ + eQMICATBrowserTerminationCauses mBrowserTerminationCause; +}; + +// Structure to describe request TLV 0x1C for CAT2SendDecodedEnvelopeCommand() +struct sCAT2SendDecodedEnvelopeCommandRequest_SMSTPDU +{ + UINT8 mSMSTPDUDataLength; + + // This array must be the size specified by mSMSTPDUDataLength + // UINT8 mSMSTPDUData[1]; +}; + +// Structure to describe request TLV 0x1D for CAT2SendDecodedEnvelopeCommand() +struct sCAT2SendDecodedEnvelopeCommandRequest_IsCDMASMS +{ + eQMICATIsCDMASMS mIsCDMASMS; +}; + +// Structure to describe request TLV 0x1E for CAT2SendDecodedEnvelopeCommand() +struct sCAT2SendDecodedEnvelopeCommandRequest_RAT +{ + eQMICATRadioAccessTechnologies mRadioAccessTechnology; +}; + +// Structure to describe request TLV 0x1F for CAT2SendDecodedEnvelopeCommand() +struct sCAT2SendDecodedEnvelopeCommandRequest_CallType +{ + eQMICATCallTypes mCallType; +}; + +// Structure to describe request TLV 0x20 for CAT2SendDecodedEnvelopeCommand() +struct sCAT2SendDecodedEnvelopeCommandRequest_TransactionID +{ + UINT8 mCallTransactionIDLength; + + // This array must be the size specified by mCallTransactionIDLength + // UINT8 mCallTransactionID[1]; +}; + +// Structure to describe request TLV 0x21 for CAT2SendDecodedEnvelopeCommand() +struct sCAT2SendDecodedEnvelopeCommandRequest_RPAddress +{ + eQMICATAddressTON mAddressTON; + eQMICATAddressNPI mAddressNPI; + UINT8 mAddressDataLength; + + // This array must be the size specified by mAddressDataLength + // char mAddressData[1]; +}; + +// Structure to describe request TLV 0x22 for CAT2SendDecodedEnvelopeCommand() +struct sCAT2SendDecodedEnvelopeCommandRequest_TPAddress +{ + eQMICATAddressTON mAddressTON; + eQMICATAddressNPI mAddressNPI; + UINT8 mAddressDataLength; + + // This array must be the size specified by mAddressDataLength + // char mAddressData[1]; +}; + +// Structure to describe request TLV 0x23 for CAT2SendDecodedEnvelopeCommand() +struct sCAT2SendDecodedEnvelopeCommandRequest_Cause +{ + UINT8 mCauseLength; + + // This array must be the size specified by mCauseLength + // UINT8 mCause[1]; +}; + +// Structure to describe response TLV 0x10 for CAT2SendDecodedEnvelopeCommand() +struct sCAT2SendDecodedEnvelopeCommandResponse_CallControlResult +{ + eQMICATCallControlResult mCallControlResult; +}; + +// Structure to describe response TLV 0x11 for CAT2SendDecodedEnvelopeCommand() +struct sCAT2SendDecodedEnvelopeCommandResponse_Address +{ + eQMICATAddressTON mAddressTON; + eQMICATAddressNPI mAddressNPI; + UINT8 mAddressDataLength; + + // This array must be the size specified by mAddressDataLength + // char mAddressData[1]; +}; + +// Structure to describe response TLV 0x12 for CAT2SendDecodedEnvelopeCommand() +struct sCAT2SendDecodedEnvelopeCommandResponse_Subaddress +{ + UINT8 mSubaddressDataLength; + + struct sSubaddressData + { + UINT8 mSubaddressData1:4; + UINT8 mSubaddressData2:4; + }; + + // This array must be the size specified by mSubaddressDataLength + // sSubaddressData mSubaddressDatas[1]; +}; + +// Structure to describe response TLV 0x13 for CAT2SendDecodedEnvelopeCommand() +struct sCAT2SendDecodedEnvelopeCommandResponse_CapabilityConfigParam1 +{ + UINT8 mCapabilitesConfigurationLength; + + // This array must be the size specified by mCapabilitesConfigurationLength + // UINT8 mCapabilitiesConfiguration[1]; +}; + +// Structure to describe response TLV 0x14 for CAT2SendDecodedEnvelopeCommand() +struct sCAT2SendDecodedEnvelopeCommandResponse_CapabilityConfigParam2 +{ + UINT8 mCapabilitesConfigurationLength; + + // This array must be the size specified by mCapabilitesConfigurationLength + // UINT8 mCapabilitiesConfiguration[1]; +}; + +// Structure to describe response TLV 0x15 for CAT2SendDecodedEnvelopeCommand() +struct sCAT2SendDecodedEnvelopeCommandResponse_USSDString +{ + eQMICATDataCodingScheme mDataCodingScheme; + UINT8 mTextDataLength; + + // This array must be the size specified by mTextDataLength + // UINT8 mTextData[1]; +}; + +// Structure to describe response TLV 0x16 for CAT2SendDecodedEnvelopeCommand() +struct sCAT2SendDecodedEnvelopeCommandResponse_PDPContextActivation +{ + UINT8 mPDPContextActivationDataLength; + + // This array must be the size specified by mPDPContextActivationDataLength + // UINT8 mPDPContextActivationData[1]; +}; + +// Structure to describe response TLV 0x17 for CAT2SendDecodedEnvelopeCommand() +struct sCAT2SendDecodedEnvelopeCommandResponse_EPSPDNConnectActivation +{ + UINT8 mEPSPDNConnectActivationDataLength; + + // This array must be the size specified by mEPSPDNConnectActivationDataLength + // UINT8 mEPSPDNConnectActivationData[1]; +}; + +// Structure to describe response TLV 0x18 for CAT2SendDecodedEnvelopeCommand() +struct sCAT2SendDecodedEnvelopeCommandResponse_Alpha +{ + eQMICATDataCodingScheme mDataCodingScheme; + UINT8 mTextDataLength; + + // This array must be the size specified by mTextDataLength + // UINT8 mTextData[1]; +}; + +// Structure to describe response TLV 0x19 for CAT2SendDecodedEnvelopeCommand() +struct sCAT2SendDecodedEnvelopeCommandResponse_BCRepeatIndicator +{ + eQMICATBearerCapabilityRepeatIndicator mBearerCapabilityRepeatIndicator; +}; + +// Structure to describe response TLV 0x1A for CAT2SendDecodedEnvelopeCommand() +struct sCAT2SendDecodedEnvelopeCommandResponse_SMSPPDataDownloadUICCACK +{ + UINT8 mSMSPPDataDownloadUICCACKLength; + + // This array must be the size specified by mSMSPPDataDownloadUICCACKLength + // UINT8 mSMSPPDataDownloadUICCACKData[1]; +}; + +// Structure to describe response TLV 0x1B for CAT2SendDecodedEnvelopeCommand() +struct sCAT2SendDecodedEnvelopeCommandResponse_RPAddress +{ + eQMICATAddressTON mAddressTON; + eQMICATAddressNPI mAddressNPI; + UINT8 mAddressDataLength; + + // This array must be the size specified by mAddressDataLength + // char mAddressData[1]; +}; + +// Structure to describe response TLV 0x1C for CAT2SendDecodedEnvelopeCommand() +struct sCAT2SendDecodedEnvelopeCommandResponse_TPAddress +{ + eQMICATAddressTON mAddressTON; + eQMICATAddressNPI mAddressNPI; + UINT8 mAddressDataLength; + + // This array must be the size specified by mAddressDataLength + // char mAddressData[1]; +}; + +// Structure to describe request TLV 0x10 for CAT2EventConfirmation() +struct sCAT2EventConfirmationRequest_UserConfirmed +{ + eQMICATUserConfirmed mUserConfirmed; +}; + +// Structure to describe request TLV 0x11 for CAT2EventConfirmation() +struct sCAT2EventConfirmationRequest_IconIsDisplayed +{ + eQMICATIconIsDisplayed mIconIsDisplayed; +}; + +// Structure to describe request TLV 0x12 for CAT2EventConfirmation() +struct sCAT2EventConfirmationRequest_Slot +{ + eQMICATSlot mSlot; +}; + +// Structure to describe request TLV 0x01 for CAT2SCWSOpenChannel() +struct sCAT2SCWSOpenChannelRequest_ChannelStatus +{ + UINT32 mChannelID; + eQMICATChannelState mChannelState; +}; + +// Structure to describe request TLV 0x10 for CAT2SCWSOpenChannel() +struct sCAT2SCWSOpenChannelRequest_Slot +{ + eQMICATSlot mSlot; +}; + +// Structure to describe indication TLV 0x10 for CAT2 SCWSOpenChannelIndication +struct sCAT2SCWSOpenChannelIndication_OpenChannelInformation +{ + UINT32 mChannelID; + UINT16 mPortNumber; + UINT16 mBufferSize; +}; + +// Structure to describe indication TLV 0x11 for CAT2 SCWSOpenChannelIndication +struct sCAT2SCWSOpenChannelIndication_Slot +{ + eQMICATSlot mSlot; +}; + +// Structure to describe indication TLV 0x12 for CAT2 SCWSOpenChannelIndication +struct sCAT2SCWSOpenChannelIndication_Alpha +{ + eQMICATDataCodingScheme mDataCodingScheme; + UINT8 mTextDataLength; + + // This array must be the size specified by mTextDataLength + // UINT8 mTextData[1]; +}; + +// Structure to describe request TLV 0x01 for CAT2SCWSCloseChannel() +struct sCAT2SCWSCloseChannelRequest_ChannelStatus +{ + UINT32 mChannelID; + eQMICATChannelState mChannelState; +}; + +// Structure to describe request TLV 0x10 for CAT2SCWSCloseChannel() +struct sCAT2SCWSCloseChannelRequest_Slot +{ + eQMICATSlot mSlot; +}; + +// Structure to describe indication TLV 0x10 for CAT2 SCWSCloseChannelIndication +struct sCAT2SCWSCloseChannelIndication_CloseChannelInfo +{ + UINT32 mChannelID; + eQMICATChannelState mChannelState; +}; + +// Structure to describe response TLV 0x11 for CAT2SCWSCloseChannel() +struct sCAT2SCWSCloseChannelResponse_Slot +{ + eQMICATSlot mSlot; +}; + +// Structure to describe request TLV 0x01 for CAT2SCWSSendData() +struct sCAT2SCWSSendDataRequest_ChannelStatus +{ + UINT32 mChannelID; + eQMICATSendDataResult mDataSendResult; +}; + +// Structure to describe request TLV 0x10 for CAT2SCWSSendData() +struct sCAT2SCWSSendDataRequest_Slot +{ + eQMICATSlot mSlot; +}; + +// Structure to describe indication TLV 0x10 for CAT2 SCWSSendDataIndication +struct sCAT2SCWSSendDataIndication_SendDataInfo +{ + UINT32 mChannelID; + UINT8 mTotalPackets; + UINT8 mCurrentPacket; + UINT16 mDataLength; + + // This array must be the size specified by mDataLength + // UINT8 mData[1]; +}; + +// Structure to describe indication TLV 0x11 for CAT2 SCWSSendDataIndication +struct sCAT2SCWSSendDataIndication_Slot +{ + eQMICATSlot mSlot; +}; + +// Structure to describe request TLV 0x01 for CAT2SCWSDataAvailable() +struct sCAT2SCWSDataAvailableRequest_RemainingData +{ + UINT32 mChannelID; + UINT16 mDataLength; + + // This array must be the size specified by mDataLength + // UINT8 mData[1]; +}; + +// Structure to describe request TLV 0x02 for CAT2SCWSDataAvailable() +struct sCAT2SCWSDataAvailableRequest_RemainingDataLength +{ + UINT16 mDataLength; +}; + +// Structure to describe request TLV 0x10 for CAT2SCWSDataAvailable() +struct sCAT2SCWSDataAvailableRequest_Slot +{ + eQMICATSlot mSlot; +}; + +// Structure to describe request TLV 0x01 for CAT2SCWSChannelStatus() +struct sCAT2SCWSChannelStatusRequest_ChannelStatus +{ + UINT32 mChannelID; + eQMICATChannelState mChannelState; +}; + +// Structure to describe request TLV 0x10 for CAT2SCWSChannelStatus() +struct sCAT2SCWSChannelStatusRequest_Slot +{ + eQMICATSlot mSlot; +}; + +// Structure to describe request TLV 0x10 for CAT2GetTerminalProfile() +struct sCAT2GetTerminalProfileRequest_Slot +{ + eQMICATSlot mSlot; +}; + +// Structure to describe response TLV 0x10 for CAT2GetTerminalProfile() +struct sCAT2GetTerminalProfileResponse_RawData +{ + UINT8 mTerminalProfileLength; + + // This array must be the size specified by mTerminalProfileLength + // UINT8 mTerminalProfileData[1]; +}; + +// Structure to describe request TLV 0x01 for CAT2SetConfiguration() +struct sCAT2SetConfigurationRequest_Mode +{ + eQMICATConfigModes mConfigMode; +}; + +// Structure to describe request TLV 0x10 for CAT2SetConfiguration() +struct sCAT2SetConfigurationRequest_CustomData +{ + UINT8 mTerminalProfileLength; + + // This array must be the size specified by mTerminalProfileLength + // UINT8 mTerminalProfileData[1]; +}; + +// Structure to describe response TLV 0x10 for CAT2GetConfiguration() +struct sCAT2GetConfigurationResponse_Mode +{ + eQMICATConfigModes mConfigMode; +}; + +// Structure to describe response TLV 0x11 for CAT2GetConfiguration() +struct sCAT2GetConfigurationResponse_CustomData +{ + UINT8 mTerminalProfileLength; + + // This array must be the size specified by mTerminalProfileLength + // UINT8 mTerminalProfileData[1]; +}; + +// Structure to describe request TLV 0x01 for UIMReadTransparent() +struct sUIMReadTransparentRequest_SessionInfo +{ + eQMIUIMSessionTypes mSessionType; + UINT8 mAIDLength; + + // This array must be the size specified by mAIDLength + // UINT8 mAID[1]; +}; + +// Structure to describe request TLV 0x02 for UIMReadTransparent() +struct sUIMReadTransparentRequest_FileID +{ + UINT16 mFileID; + UINT8 mPathLength; + + // This array must be the size specified by mPathLength + // UINT16 mPath[1]; +}; + +// Structure to describe request TLV 0x03 for UIMReadTransparent() +struct sUIMReadTransparentRequest_Buffer +{ + UINT16 mOffset; + UINT16 mLength; +}; + +// Structure to describe request TLV 0x10 for UIMReadTransparent() +struct sUIMReadTransparentRequest_ResponseInIndication +{ + UINT32 mIndicationToken; +}; + +// Structure to describe request TLV 0x11 for UIMReadTransparent() +struct sUIMReadTransparentRequest_Encryption +{ + INT8 mDataEncrypted; +}; + +// Structure to describe response TLV 0x10 for UIMReadTransparent() +struct sUIMReadTransparentResponse_CardResult +{ + UINT8 mSW1; + UINT8 mSW2; +}; + +// Structure to describe response TLV 0x11 for UIMReadTransparent() +struct sUIMReadTransparentResponse_ReadResult +{ + UINT16 mContentLength; + + // This array must be the size specified by mContentLength + // UINT8 mContent[1]; +}; + +// Structure to describe response TLV 0x12 for UIMReadTransparent() +struct sUIMReadTransparentResponse_ResponseInIndication +{ + UINT32 mIndicationToken; +}; + +// Structure to describe response TLV 0x13 for UIMReadTransparent() +struct sUIMReadTransparentResponse_Encryption +{ + INT8 mDataEncrypted; +}; + +// Structure to describe response TLV 0x14 for UIMReadTransparent() +struct sUIMReadTransparentResponse_RequestedLength +{ + UINT16 mFileLength; +}; + +// Structure to describe indication TLV 0x01 for UIM ReadTransparentIndication +struct sUIMReadTransparentIndication_OriginalToken +{ + UINT32 mIndicationToken; +}; + +// Structure to describe indication TLV 0x10 for UIM ReadTransparentIndication +struct sUIMReadTransparentIndication_CardResult +{ + UINT8 mSW1; + UINT8 mSW2; +}; + +// Structure to describe indication TLV 0x11 for UIM ReadTransparentIndication +struct sUIMReadTransparentIndication_ReadResult +{ + UINT16 mContentLength; + + // This array must be the size specified by mContentLength + // UINT8 mContent[1]; +}; + +// Structure to describe indication TLV 0x12 for UIM ReadTransparentIndication +struct sUIMReadTransparentIndication_Encryption +{ + INT8 mDataEncrypted; +}; + +// Structure to describe indication TLV 0x13 for UIM ReadTransparentIndication +struct sUIMReadTransparentIndication_RequestedLength +{ + UINT16 mFileLength; +}; + +// Structure to describe request TLV 0x01 for UIMReadRecord() +struct sUIMReadRecordRequest_SessionInfo +{ + eQMIUIMSessionTypes mSessionType; + UINT8 mAIDLength; + + // This array must be the size specified by mAIDLength + // UINT8 mAID[1]; +}; + +// Structure to describe request TLV 0x02 for UIMReadRecord() +struct sUIMReadRecordRequest_FileID +{ + UINT16 mFileID; + UINT8 mPathLength; + + // This array must be the size specified by mPathLength + // UINT16 mPath[1]; +}; + +// Structure to describe request TLV 0x03 for UIMReadRecord() +struct sUIMReadRecordRequest_Record +{ + UINT16 mRecordNumber; + UINT16 mContentLength; +}; + +// Structure to describe request TLV 0x10 for UIMReadRecord() +struct sUIMReadRecordRequest_LastRecord +{ + UINT16 mRecordNumber; +}; + +// Structure to describe request TLV 0x11 for UIMReadRecord() +struct sUIMReadRecordRequest_ResponseInIndication +{ + UINT32 mIndicationToken; +}; + +// Structure to describe response TLV 0x10 for UIMReadRecord() +struct sUIMReadRecordResponse_CardResult +{ + UINT8 mSW1; + UINT8 mSW2; +}; + +// Structure to describe response TLV 0x11 for UIMReadRecord() +struct sUIMReadRecordResponse_ReadResult +{ + UINT16 mContentLength; + + // This array must be the size specified by mContentLength + // UINT8 mContent[1]; +}; + +// Structure to describe response TLV 0x12 for UIMReadRecord() +struct sUIMReadRecordResponse_AdditionalReadResult +{ + UINT16 mContentLength; + + struct sRecord + { + // This array must be the size specified by mContentLength + // UINT8 mContent[1]; + }; + + // This array is variable length based on the size of the container + // sRecord mRecords[1]; +}; + +// Structure to describe response TLV 0x13 for UIMReadRecord() +struct sUIMReadRecordResponse_ResponseInIndication +{ + UINT32 mIndicationToken; +}; + +// Structure to describe indication TLV 0x01 for UIM ReadRecordIndication +struct sUIMReadRecordIndication_OriginalToken +{ + UINT32 mIndicationToken; +}; + +// Structure to describe indication TLV 0x10 for UIM ReadRecordIndication +struct sUIMReadRecordIndication_CardResult +{ + UINT8 mSW1; + UINT8 mSW2; +}; + +// Structure to describe indication TLV 0x11 for UIM ReadRecordIndication +struct sUIMReadRecordIndication_ReadResult +{ + UINT16 mContentLength; + + // This array must be the size specified by mContentLength + // UINT8 mContent[1]; +}; + +// Structure to describe indication TLV 0x12 for UIM ReadRecordIndication +struct sUIMReadRecordIndication_AdditionalReadResult +{ + UINT16 mContentLength; + + struct sRecord + { + // This array must be the size specified by mContentLength + // UINT8 mContent[1]; + }; + + // This array is variable length based on the size of the container + // sRecord mRecords[1]; +}; + +// Structure to describe request TLV 0x01 for UIMWriteTransparent() +struct sUIMWriteTransparentRequest_SessionInfo +{ + eQMIUIMSessionTypes mSessionType; + UINT8 mAIDLength; + + // This array must be the size specified by mAIDLength + // UINT8 mAID[1]; +}; + +// Structure to describe request TLV 0x02 for UIMWriteTransparent() +struct sUIMWriteTransparentRequest_FileID +{ + UINT16 mFileID; + UINT8 mPathLength; + + // This array must be the size specified by mPathLength + // UINT16 mPath[1]; +}; + +// Structure to describe request TLV 0x03 for UIMWriteTransparent() +struct sUIMWriteTransparentRequest_Buffer +{ + UINT16 mOffset; + UINT16 mContentLength; + + // This array must be the size specified by mContentLength + // UINT8 mContent[1]; +}; + +// Structure to describe request TLV 0x10 for UIMWriteTransparent() +struct sUIMWriteTransparentRequest_ResponseInIndicaiton +{ + UINT32 mIndicationToken; +}; + +// Structure to describe response TLV 0x10 for UIMWriteTransparent() +struct sUIMWriteTransparentResponse_CardResult +{ + UINT8 mSW1; + UINT8 mSW2; +}; + +// Structure to describe response TLV 0x11 for UIMWriteTransparent() +struct sUIMWriteTransparentResponse_ResponseInIndication +{ + UINT32 mIndicationToken; +}; + +// Structure to describe indication TLV 0x01 for UIM WriteTransparentIndication +struct sUIMWriteTransparentIndication_OriginalToken +{ + UINT32 mIndicationToken; +}; + +// Structure to describe indication TLV 0x10 for UIM WriteTransparentIndication +struct sUIMWriteTransparentIndication_CardResult +{ + UINT8 mSW1; + UINT8 mSW2; +}; + +// Structure to describe request TLV 0x01 for UIMWriteRecord() +struct sUIMWriteRecordRequest_SessionInfo +{ + eQMIUIMSessionTypes mSessionType; + UINT8 mAIDLength; + + // This array must be the size specified by mAIDLength + // UINT8 mAID[1]; +}; + +// Structure to describe request TLV 0x02 for UIMWriteRecord() +struct sUIMWriteRecordRequest_FileID +{ + UINT16 mFileID; + UINT8 mPathLength; + + // This array must be the size specified by mPathLength + // UINT16 mPath[1]; +}; + +// Structure to describe request TLV 0x03 for UIMWriteRecord() +struct sUIMWriteRecordRequest_Record +{ + UINT16 mRecordNumber; + UINT16 mContentLength; + + // This array must be the size specified by mContentLength + // UINT8 mContent[1]; +}; + +// Structure to describe request TLV 0x10 for UIMWriteRecord() +struct sUIMWriteRecordRequest_ResponseInIndication +{ + UINT32 mIndicationToken; +}; + +// Structure to describe response TLV 0x10 for UIMWriteRecord() +struct sUIMWriteRecordResponse_CardResult +{ + UINT8 mSW1; + UINT8 mSW2; +}; + +// Structure to describe response TLV 0x11 for UIMWriteRecord() +struct sUIMWriteRecordResponse_ResponseInIndication +{ + UINT32 mIndicationToken; +}; + +// Structure to describe indication TLV 0x01 for UIM WriteRecordIndication +struct sUIMWriteRecordIndication_OriginalToken +{ + UINT32 mIndicationToken; +}; + +// Structure to describe indication TLV 0x10 for UIM WriteRecordIndication +struct sUIMWriteRecordIndication_CardResult +{ + UINT8 mSW1; + UINT8 mSW2; +}; + +// Structure to describe request TLV 0x01 for UIMGetFileAttributes() +struct sUIMGetFileAttributesRequest_SessionInfo +{ + eQMIUIMSessionTypes mSessionType; + UINT8 mAIDLength; + + // This array must be the size specified by mAIDLength + // UINT8 mAID[1]; +}; + +// Structure to describe request TLV 0x02 for UIMGetFileAttributes() +struct sUIMGetFileAttributesRequest_FileID +{ + UINT16 mFileID; + UINT8 mPathLength; + + // This array must be the size specified by mPathLength + // UINT16 mPath[1]; +}; + +// Structure to describe request TLV 0x10 for UIMGetFileAttributes() +struct sUIMGetFileAttributesRequest_ResponseInIndication +{ + UINT32 mIndicationToken; +}; + +// Structure to describe request TLV 0x11 for UIMGetFileAttributes() +struct sUIMGetFileAttributesRequest_UICCSecurity +{ + INT8 mReturnUICCSecurityAttributes; +}; + +// Structure to describe response TLV 0x10 for UIMGetFileAttributes() +struct sUIMGetFileAttributesResponse_CardResult +{ + UINT8 mSW1; + UINT8 mSW2; +}; + +// Structure to describe response TLV 0x11 for UIMGetFileAttributes() +struct sUIMGetFileAttributesResponse_Attributes +{ + UINT16 mFileSize; + UINT16 mFileID; + eQMIUIMFileTypes mFileType; + UINT16 mRecordSize; + UINT16 mRecordCount; + eQMIUIMSecurityAttributes mReadSecurityAttributes; + bool mReadPIN1:1; + bool mReadPIN2:1; + bool mReadUPIN:1; + bool mReadADM:1; + + // Padding out 4 bits + UINT8 mReserved1:4; + + eQMIUIMSecurityAttributes mWriteSecurityAttributes; + bool mWritePIN1:1; + bool mWritePIN2:1; + bool mWriteUPIN:1; + bool mWriteADM:1; + + // Padding out 4 bits + UINT8 mReserved2:4; + + eQMIUIMSecurityAttributes mIncreaseSecurityAttributes; + bool mIncreasePIN1:1; + bool mIncreasePIN2:1; + bool mIncreaseUPIN:1; + bool mIncreaseADM:1; + + // Padding out 4 bits + UINT8 mReserved3:4; + + eQMIUIMSecurityAttributes mDeactivateSecurityAttributes; + bool mDeactivatePIN1:1; + bool mDeactivatePIN2:1; + bool mDeactivateUPIN:1; + bool mDeactivateADM:1; + + // Padding out 4 bits + UINT8 mReserved4:4; + + eQMIUIMSecurityAttributes mActivateSecurityAttributes; + bool mActivatePIN1:1; + bool mActivatePIN2:1; + bool mActivateUPIN:1; + bool mActivateADM:1; + + // Padding out 4 bits + UINT8 mReserved5:4; + + UINT16 mValueLength; + + // This array must be the size specified by mValueLength + // UINT8 mValue[1]; +}; + +// Structure to describe response TLV 0x12 for UIMGetFileAttributes() +struct sUIMGetFileAttributesResponse_ResponseInIndication +{ + UINT32 mIndicationToken; +}; + +// Structure to describe response TLV 0x13 for UIMGetFileAttributes() +struct sUIMGetFileAttributesResponse_FileStatus +{ + eQMIUIMFilesStatus mFileStatus; +}; + +// Structure to describe indication TLV 0x01 for UIM GetFileAttributesIndication +struct sUIMGetFileAttributesIndication_OriginalToken +{ + UINT32 mIndicationToken; +}; + +// Structure to describe indication TLV 0x10 for UIM GetFileAttributesIndication +struct sUIMGetFileAttributesIndication_CardResult +{ + UINT8 mSW1; + UINT8 mSW2; +}; + +// Structure to describe indication TLV 0x11 for UIM GetFileAttributesIndication +struct sUIMGetFileAttributesIndication_FileAttributes +{ + UINT16 mFileSize; + UINT16 mFileID; + eQMIUIMFileTypes mFileType; + UINT16 mRecordSize; + UINT16 mRecordCount; + eQMIUIMSecurityAttributes mReadSecurityAttributes; + bool mReadPIN1:1; + bool mReadPIN2:1; + bool mReadUPIN:1; + bool mReadADM:1; + + // Padding out 4 bits + UINT8 mReserved1:4; + + eQMIUIMSecurityAttributes mWriteSecurityAttributes; + bool mWritePIN1:1; + bool mWritePIN2:1; + bool mWriteUPIN:1; + bool mWriteADM:1; + + // Padding out 4 bits + UINT8 mReserved2:4; + + eQMIUIMSecurityAttributes mIncreaseSecurityAttributes; + bool mIncreasePIN1:1; + bool mIncreasePIN2:1; + bool mIncreaseUPIN:1; + bool mIncreaseADM:1; + + // Padding out 4 bits + UINT8 mReserved3:4; + + eQMIUIMSecurityAttributes mDeactivateSecurityAttributes; + bool mDeactivatePIN1:1; + bool mDeactivatePIN2:1; + bool mDeactivateUPIN:1; + bool mDeactivateADM:1; + + // Padding out 4 bits + UINT8 mReserved4:4; + + eQMIUIMSecurityAttributes mActivateSecurityAttributes; + bool mActivatePIN1:1; + bool mActivatePIN2:1; + bool mActivateUPIN:1; + bool mActivateADM:1; + + // Padding out 4 bits + UINT8 mReserved5:4; + + UINT16 mValueLength; + + // This array must be the size specified by mValueLength + // UINT8 mValue[1]; +}; + +// Structure to describe request TLV 0x01 for UIMSetPINProtection() +struct sUIMSetPINProtectionRequest_SessionInfo +{ + eQMIUIMSessionTypes mSessionType; + UINT8 mAIDLength; + + // This array must be the size specified by mAIDLength + // UINT8 mAID[1]; +}; + +// Structure to describe request TLV 0x02 for UIMSetPINProtection() +struct sUIMSetPINProtectionRequest_Protection +{ + eQMIUIMPINIDs mID; + eQMIUIMPINOperations mOperation; + UINT8 mPINLength; + + // This array must be the size specified by mPINLength + // char mPINValue[1]; +}; + +// Structure to describe request TLV 0x10 for UIMSetPINProtection() +struct sUIMSetPINProtectionRequest_KeyReferenceID +{ + eQMIUIMKeyReferenceID mKeyReferenceID; +}; + +// Structure to describe request TLV 0x11 for UIMSetPINProtection() +struct sUIMSetPINProtectionRequest_ResponseInIndication +{ + UINT32 mIndicationToken; +}; + +// Structure to describe response TLV 0x10 for UIMSetPINProtection() +struct sUIMSetPINProtectionResponse_Retries +{ + UINT8 mRemainingVerifyRetries; + UINT8 mRemainingUnblockRetries; +}; + +// Structure to describe response TLV 0x11 for UIMSetPINProtection() +struct sUIMSetPINProtectionResponse_EncryptedPIN1 +{ + UINT8 mPINLength; + + // This array must be the size specified by mPINLength + // UINT8 mValue[1]; +}; + +// Structure to describe response TLV 0x12 for UIMSetPINProtection() +struct sUIMSetPINProtectionResponse_ResponseInIndication +{ + UINT32 mIndicationToken; +}; + +// Structure to describe response TLV 0x13 for UIMSetPINProtection() +struct sUIMSetPINProtectionResponse_CardResult +{ + UINT8 mSW1; + UINT8 mSW2; +}; + +// Structure to describe indication TLV 0x01 for UIM SetPINProtectionIndication +struct sUIMSetPINProtectionIndication_OriginalToken +{ + UINT32 mIndicationToken; +}; + +// Structure to describe indication TLV 0x10 for UIM SetPINProtectionIndication +struct sUIMSetPINProtectionIndication_Retries +{ + UINT8 mRemainingVerifyRetries; + UINT8 mRemainingUnblockRetries; +}; + +// Structure to describe indication TLV 0x11 for UIM SetPINProtectionIndication +struct sUIMSetPINProtectionIndication_EncryptedPIN1 +{ + UINT8 mPINLength; + + // This array must be the size specified by mPINLength + // UINT8 mValue[1]; +}; + +// Structure to describe indication TLV 0x12 for UIM SetPINProtectionIndication +struct sUIMSetPINProtectionIndication_CardResult +{ + UINT8 mSW1; + UINT8 mSW2; +}; + +// Structure to describe request TLV 0x01 for UIMVerifyPIN() +struct sUIMVerifyPINRequest_SessionInfo +{ + eQMIUIMSessionTypes mSessionType; + UINT8 mAIDLength; + + // This array must be the size specified by mAIDLength + // UINT8 mAID[1]; +}; + +// Structure to describe request TLV 0x02 for UIMVerifyPIN() +struct sUIMVerifyPINRequest_Verify +{ + eQMIUIMPINIDs mID; + UINT8 mPINLength; + + // This array must be the size specified by mPINLength + // char mPINValue[1]; +}; + +// Structure to describe request TLV 0x10 for UIMVerifyPIN() +struct sUIMVerifyPINRequest_EncryptedPIN1 +{ + UINT8 mPINLength; + + // This array must be the size specified by mPINLength + // UINT8 mValue[1]; +}; + +// Structure to describe request TLV 0x11 for UIMVerifyPIN() +struct sUIMVerifyPINRequest_KeyReferenceID +{ + eQMIUIMKeyReferenceID mKeyReferenceID; +}; + +// Structure to describe request TLV 0x12 for UIMVerifyPIN() +struct sUIMVerifyPINRequest_ResponseInIndication +{ + UINT32 mIndicationToken; +}; + +// Structure to describe response TLV 0x10 for UIMVerifyPIN() +struct sUIMVerifyPINResponse_Retries +{ + UINT8 mRemainingVerifyRetries; + UINT8 mRemainingUnblockRetries; +}; + +// Structure to describe response TLV 0x11 for UIMVerifyPIN() +struct sUIMVerifyPINResponse_EncryptedPIN1 +{ + UINT8 mPINLength; + + // This array must be the size specified by mPINLength + // UINT8 mValue[1]; +}; + +// Structure to describe response TLV 0x12 for UIMVerifyPIN() +struct sUIMVerifyPINResponse_ResponseInIndication +{ + UINT32 mIndicationToken; +}; + +// Structure to describe response TLV 0x13 for UIMVerifyPIN() +struct sUIMVerifyPINResponse_CardResult +{ + UINT8 mSW1; + UINT8 mSW2; +}; + +// Structure to describe indication TLV 0x01 for UIM VerifyPINIndication +struct sUIMVerifyPINIndication_OriginalToken +{ + UINT32 mIndicationToken; +}; + +// Structure to describe indication TLV 0x10 for UIM VerifyPINIndication +struct sUIMVerifyPINIndication_Retries +{ + UINT8 mRemainingVerifyRetries; + UINT8 mRemainingUnblockRetries; +}; + +// Structure to describe indication TLV 0x11 for UIM VerifyPINIndication +struct sUIMVerifyPINIndication_EncryptedPIN1 +{ + UINT8 mPINLength; + + // This array must be the size specified by mPINLength + // UINT8 mValue[1]; +}; + +// Structure to describe indication TLV 0x12 for UIM VerifyPINIndication +struct sUIMVerifyPINIndication_CardResult +{ + UINT8 mSW1; + UINT8 mSW2; +}; + +// Structure to describe request TLV 0x01 for UIMUnblockPIN() +struct sUIMUnblockPINRequest_SessionInfo +{ + eQMIUIMSessionTypes mSessionType; + UINT8 mAIDLength; + + // This array must be the size specified by mAIDLength + // UINT8 mAID[1]; +}; + +// Structure to describe request TLV 0x02 for UIMUnblockPIN() +struct sUIMUnblockPINRequest_Unblock1 +{ + eQMIUIMPINIDs mID; + UINT8 mPUKLength; + + // This array must be the size specified by mPUKLength + // char mPUKValue[1]; +}; + +struct sUIMUnblockPINRequest_Unblock2 +{ + UINT8 mNewPINLength; + + // This array must be the size specified by mNewPINLength + // char mNewPINValue[1]; +}; + +struct sUIMUnblockPINRequest_Unblock +{ + sUIMUnblockPINRequest_Unblock1 mUIMUnblockPINRequest_Unblock1; + sUIMUnblockPINRequest_Unblock2 mUIMUnblockPINRequest_Unblock2; +}; + +// Structure to describe request TLV 0x10 for UIMUnblockPIN() +struct sUIMUnblockPINRequest_KeyReferenceID +{ + eQMIUIMKeyReferenceID mKeyReferenceID; +}; + +// Structure to describe request TLV 0x11 for UIMUnblockPIN() +struct sUIMUnblockPINRequest_ResponseInIndication +{ + UINT32 mIndicationToken; +}; + +// Structure to describe response TLV 0x10 for UIMUnblockPIN() +struct sUIMUnblockPINResponse_Retries +{ + UINT8 mRemainingVerifyRetries; + UINT8 mRemainingUnblockRetries; +}; + +// Structure to describe response TLV 0x11 for UIMUnblockPIN() +struct sUIMUnblockPINResponse_EncryptedPIN1 +{ + UINT8 mPINLength; + + // This array must be the size specified by mPINLength + // UINT8 mValue[1]; +}; + +// Structure to describe response TLV 0x12 for UIMUnblockPIN() +struct sUIMUnblockPINResponse_ResponseInIndication +{ + UINT32 mIndicationToken; +}; + +// Structure to describe response TLV 0x13 for UIMUnblockPIN() +struct sUIMUnblockPINResponse_CardResult +{ + UINT8 mSW1; + UINT8 mSW2; +}; + +// Structure to describe indication TLV 0x01 for UIM UnblockPINIndication +struct sUIMUnblockPINIndication_OriginalToken +{ + UINT32 mIndicationToken; +}; + +// Structure to describe indication TLV 0x10 for UIM UnblockPINIndication +struct sUIMUnblockPINIndication_Retries +{ + UINT8 mRemainingVerifyRetries; + UINT8 mRemainingUnblockRetries; +}; + +// Structure to describe indication TLV 0x11 for UIM UnblockPINIndication +struct sUIMUnblockPINIndication_EncryptedPIN1 +{ + UINT8 mPINLength; + + // This array must be the size specified by mPINLength + // UINT8 mValue[1]; +}; + +// Structure to describe indication TLV 0x12 for UIM UnblockPINIndication +struct sUIMUnblockPINIndication_CardResult +{ + UINT8 mSW1; + UINT8 mSW2; +}; + +// Structure to describe request TLV 0x01 for UIMChangePIN() +struct sUIMChangePINRequest_SessionInfo +{ + eQMIUIMSessionTypes mSessionType; + UINT8 mAIDLength; + + // This array must be the size specified by mAIDLength + // UINT8 mAID[1]; +}; + +// Structure to describe request TLV 0x02 for UIMChangePIN() +struct sUIMChangePINRequest_Change1 +{ + eQMIUIMPINIDs mID; + UINT8 mOldPINLength; + + // This array must be the size specified by mOldPINLength + // char mOldPINValue[1]; +}; + +struct sUIMChangePINRequest_Change2 +{ + UINT8 mNewPINLength; + + // This array must be the size specified by mNewPINLength + // char mNewPINValue[1]; +}; + +struct sUIMChangePINRequest_Change +{ + sUIMChangePINRequest_Change1 mUIMChangePINRequest_Change1; + sUIMChangePINRequest_Change2 mUIMChangePINRequest_Change2; +}; + +// Structure to describe request TLV 0x10 for UIMChangePIN() +struct sUIMChangePINRequest_KeyReferenceID +{ + eQMIUIMKeyReferenceID mKeyReferenceID; +}; + +// Structure to describe request TLV 0x11 for UIMChangePIN() +struct sUIMChangePINRequest_ResponseInIndication +{ + UINT32 mIndicationToken; +}; + +// Structure to describe response TLV 0x10 for UIMChangePIN() +struct sUIMChangePINResponse_Retries +{ + UINT8 mRemainingVerifyRetries; + UINT8 mRemainingUnblockRetries; +}; + +// Structure to describe response TLV 0x11 for UIMChangePIN() +struct sUIMChangePINResponse_EncryptedPIN1 +{ + UINT8 mPINLength; + + // This array must be the size specified by mPINLength + // UINT8 mValue[1]; +}; + +// Structure to describe response TLV 0x12 for UIMChangePIN() +struct sUIMChangePINResponse_ResponseInIndication +{ + UINT32 mIndicationToken; +}; + +// Structure to describe response TLV 0x13 for UIMChangePIN() +struct sUIMChangePINResponse_CardResult +{ + UINT8 mSW1; + UINT8 mSW2; +}; + +// Structure to describe indication TLV 0x01 for UIM ChangePINIndication +struct sUIMChangePINIndication_OriginalToken +{ + UINT32 mIndicationToken; +}; + +// Structure to describe indication TLV 0x10 for UIM ChangePINIndication +struct sUIMChangePINIndication_Retries +{ + UINT8 mRemainingVerifyRetries; + UINT8 mRemainingUnblockRetries; +}; + +// Structure to describe indication TLV 0x11 for UIM ChangePINIndication +struct sUIMChangePINIndication_EncryptedPIN1 +{ + UINT8 mPINLength; + + // This array must be the size specified by mPINLength + // UINT8 mValue[1]; +}; + +// Structure to describe indication TLV 0x12 for UIM ChangePINIndication +struct sUIMChangePINIndication_CardResult +{ + UINT8 mSW1; + UINT8 mSW2; +}; + +// Structure to describe request TLV 0x01 for UIMDepersonalization() +struct sUIMDepersonalizationRequest_Info +{ + eQMIUIMPersonalizationFeatures mFeature; + eQMIUIMCKSessionOperations mOperation; + UINT8 mCKLength; + + // This array must be the size specified by mCKLength + // char mCKValue[1]; +}; + +// Structure to describe response TLV 0x10 for UIMDepersonalization() +struct sUIMDepersonalizationResponse_Retries +{ + UINT8 mRemainingVerifyRetries; + UINT8 mRemainingUnblockRetries; +}; + +// Structure to describe request TLV 0x01 for UIMRefreshRegister() +struct sUIMRefreshRegisterRequest_SessionInfo +{ + eQMIUIMSessionTypes mSessionType; + UINT8 mAIDLength; + + // This array must be the size specified by mAIDLength + // UINT8 mAID[1]; +}; + +// Structure to describe request TLV 0x02 for UIMRefreshRegister() +struct sUIMRefreshRegisterRequest_RefreshInfo +{ + eQMIUIMRegisterFlags mRegisterFlag; + INT8 mVoteForInitialization; + UINT16 mFileCount; + + struct sFile + { + UINT16 mFileID; + UINT8 mPathLength; + + // This array must be the size specified by mPathLength + // UINT16 mPath[1]; + }; + + // This array must be the size specified by mFileCount + // sFile mFiles[1]; +}; + +// Structure to describe request TLV 0x01 for UIMRefreshOK() +struct sUIMRefreshOKRequest_SessionInfo +{ + eQMIUIMSessionTypes mSessionType; + UINT8 mAIDLength; + + // This array must be the size specified by mAIDLength + // UINT8 mAID[1]; +}; + +// Structure to describe request TLV 0x02 for UIMRefreshOK() +struct sUIMRefreshOKRequest_RefreshOK +{ + INT8 mOKToRefresh; +}; + +// Structure to describe request TLV 0x01 for UIMRefreshComplete() +struct sUIMRefreshCompleteRequest_SessionInfo +{ + eQMIUIMSessionTypes mSessionType; + UINT8 mAIDLength; + + // This array must be the size specified by mAIDLength + // UINT8 mAID[1]; +}; + +// Structure to describe request TLV 0x02 for UIMRefreshComplete() +struct sUIMRefreshCompleteRequest_RefreshComplete +{ + INT8 mRefreshSuccessful; +}; + +// Structure to describe request TLV 0x01 for UIMGetLastRefreshEvent() +struct sUIMGetLastRefreshEventRequest_SessionInfo +{ + eQMIUIMSessionTypes mSessionType; + UINT8 mAIDLength; + + // This array must be the size specified by mAIDLength + // UINT8 mAID[1]; +}; + +// Structure to describe response TLV 0x10 for UIMGetLastRefreshEvent() +struct sUIMGetLastRefreshEventResponse_RefreshEvent1 +{ + eQMIUIMRefreshStages mStage; + eQMIUIMRefreshModes mMode; + eQMIUIMSessionTypes mSessionType; + UINT8 mAIDLength; + + // This array must be the size specified by mAIDLength + // UINT8 mAID[1]; +}; + +struct sUIMGetLastRefreshEventResponse_RefreshEvent2 +{ + UINT16 mFileCount; + + struct sFile + { + UINT16 mFileID; + UINT8 mPathLength; + + // This array must be the size specified by mPathLength + // UINT16 mPath[1]; + }; + + // This array must be the size specified by mFileCount + // sFile mFiles[1]; +}; + +struct sUIMGetLastRefreshEventResponse_RefreshEvent +{ + sUIMGetLastRefreshEventResponse_RefreshEvent1 mUIMGetLastRefreshEventResponse_RefreshEvent1; + sUIMGetLastRefreshEventResponse_RefreshEvent2 mUIMGetLastRefreshEventResponse_RefreshEvent2; +}; + +// Structure to describe request TLV 0x01 for UIMEventRegistration() +struct sUIMEventRegistrationRequest_Mask +{ + bool mCardStatus:1; + bool mSAPConnection:1; + bool mExtendedCardStatus:1; + + // Padding out 29 bits + UINT8 mReserved1:5; + UINT8 mReserved2[3]; +}; + +// Structure to describe response TLV 0x10 for UIMEventRegistration() +struct sUIMEventRegistrationResponse_Mask +{ + bool mCardStatus:1; + bool mSAPConnection:1; + bool mExtendedCardStatus:1; + + // Padding out 29 bits + UINT8 mReserved1:5; + UINT8 mReserved2[3]; +}; + +// Structure to describe request TLV 0x10 for UIMGetCardStatus() +struct sUIMGetCardStatusRequest_Extended +{ + INT8 mReturnExtendedCardStatus; +}; + +// Structure to describe response TLV 0x10 for UIMGetCardStatus() +struct sUIMGetCardStatusResponse_Status1 +{ + UINT8 mPrimaryGWSlot; + UINT8 mPrimaryGWApplication; + UINT8 mPrimary1XSlot; + UINT8 mPrimary1XApplication; + UINT8 mSecondaryGWSlot; + UINT8 mSecondaryGWApplication; + UINT8 mSecondary1XSlot; + UINT8 mSecondary1XApplication; + UINT8 mSlotsAvailable; + eQMIUIMCardStates mCardState; + eQMIUIMPINStates mUPINState; + UINT8 mRemainingUPINVerifyRetries; + UINT8 mRemainingUPINUnblockRetries; + eQMIUIMCardErrorCodes mCardErrorCode; + UINT8 mApplicationsAvailable; + eQMIUIMApplicationTypes mApplicationType; + eQMIUIMApplicationStates mApplicationState; + eQMIUIMPersonalizationStates mPersonalizationState; + eQMIUIMPersonalizationFeatures mPersonalizationFeature; + UINT8 mRemainingPersonalizationVerifyRetries; + UINT8 mRemainingPersonalizationUnblockRetries; + UINT8 mAIDLength; + + // This array must be the size specified by mAIDLength + // UINT8 mAID[1]; +}; + +struct sUIMGetCardStatusResponse_Status2 +{ + INT8 mUPINReplacesPIN1; + eQMIUIMPINStates mPIN1State; + UINT8 mRemainingPIN1VerifyRetries; + UINT8 mRemainingPIN1UnblockRetries; + eQMIUIMPINStates mPIN2State; + UINT8 mRemainingPIN2VerifyRetries; + UINT8 mRemainingPIN2UnblockRetries; +}; + +struct sUIMGetCardStatusResponse_Status +{ + sUIMGetCardStatusResponse_Status1 mUIMGetCardStatusResponse_Status1; + sUIMGetCardStatusResponse_Status2 mUIMGetCardStatusResponse_Status2; +}; + +// Structure to describe response TLV 0x11 for UIMGetCardStatus() +struct sUIMGetCardStatusResponse_HotSwapStatus +{ + UINT8 mHotSwapLength; + + // This array must be the size specified by mHotSwapLength + // eQMIUIMHotSwap mHotSwap[1]; +}; + +// Structure to describe response TLV 0x12 for UIMGetCardStatus() +struct sUIMGetCardStatusResponse_ValidCardStatus +{ + UINT8 mCardStatusValidCount; + + // This array must be the size specified by mCardStatusValidCount + // INT8 mCardStatusValid[1]; +}; + +// Structure to describe response TLV 0x13 for UIMGetCardStatus() +struct sUIMGetCardStatusResponse_ExtendedStatus1 +{ + UINT8 mGWProvisioningApplications; + + struct sGWProvisioning + { + UINT8 mSlot; + UINT8 mApplication; + }; + + // This array must be the size specified by mGWProvisioningApplications + // sGWProvisioning mGWProvisionings[1]; +}; + +struct sUIMGetCardStatusResponse_ExtendedStatus2 +{ + UINT8 m1XProvisioningApplications; + + struct s1XProvisioning + { + UINT8 mSlot; + UINT8 mApplication; + }; + + // This array must be the size specified by m1XProvisioningApplications + // s1XProvisioning m1XProvisionings[1]; +}; + +struct sUIMGetCardStatusResponse_ExtendedStatus3 +{ + UINT8 mSlotsAvailable; + eQMIUIMCardStates mCardState; + eQMIUIMPINStates mUPINState; + UINT8 mRemainingUPINVerifyRetries; + UINT8 mRemainingUPINUnblockRetries; + eQMIUIMCardErrorCodes mCardErrorCode; + UINT8 mApplicationsAvailable; + eQMIUIMApplicationTypes mApplicationType; + eQMIUIMApplicationStates mApplicationState; + eQMIUIMPersonalizationStates mPersonalizationState; + eQMIUIMPersonalizationFeatures mPersonalizationFeature; + UINT8 mRemainingPersonalizationVerifyRetries; + UINT8 mRemainingPersonalizationUnblockRetries; + UINT8 mAIDLength; + + // This array must be the size specified by mAIDLength + // UINT8 mAID[1]; +}; + +struct sUIMGetCardStatusResponse_ExtendedStatus4 +{ + INT8 mUPINReplacesPIN1; + eQMIUIMPINStates mPIN1State; + UINT8 mRemainingPIN1VerifyRetries; + UINT8 mRemainingPIN1UnblockRetries; + eQMIUIMPINStates mPIN2State; + UINT8 mRemainingPIN2VerifyRetries; + UINT8 mRemainingPIN2UnblockRetries; +}; + +struct sUIMGetCardStatusResponse_ExtendedStatus +{ + sUIMGetCardStatusResponse_ExtendedStatus1 mUIMGetCardStatusResponse_ExtendedStatus1; + sUIMGetCardStatusResponse_ExtendedStatus2 mUIMGetCardStatusResponse_ExtendedStatus2; + sUIMGetCardStatusResponse_ExtendedStatus3 mUIMGetCardStatusResponse_ExtendedStatus3; + sUIMGetCardStatusResponse_ExtendedStatus4 mUIMGetCardStatusResponse_ExtendedStatus4; +}; + +// Structure to describe response TLV 0x14 for UIMGetCardStatus() +struct sUIMGetCardStatusResponse_ExtendedHotSwapStatus +{ + UINT8 mHotSwapLength; + + // This array must be the size specified by mHotSwapLength + // eQMIUIMHotSwap mHotSwap[1]; +}; + +// Structure to describe request TLV 0x01 for UIMPowerDown() +struct sUIMPowerDownRequest_Slot +{ + eQMIUIMSlots mSlot; +}; + +// Structure to describe request TLV 0x01 for UIMPowerUp() +struct sUIMPowerUpRequest_Slot +{ + eQMIUIMSlots mSlot; +}; + +// Structure to describe request TLV 0x10 for UIMPowerUp() +struct sUIMPowerUpRequest_IgnoreHotSwapSwitch +{ + INT8 mIgnoreHotSwapSwitch; +}; + +// Structure to describe indication TLV 0x10 for UIM CardStatusIndication +struct sUIMCardStatusIndication_Status1 +{ + UINT8 mPrimaryGWSlot; + UINT8 mPrimaryGWApplication; + UINT8 mPrimary1XSlot; + UINT8 mPrimary1XApplication; + UINT8 mSecondaryGWSlot; + UINT8 mSecondaryGWApplication; + UINT8 mSecondary1XSlot; + UINT8 mSecondary1XApplication; + UINT8 mSlotsAvailable; + eQMIUIMCardStates mCardState; + eQMIUIMPINStates mUPINState; + UINT8 mRemainingUPINVerifyRetries; + UINT8 mRemainingUPINUnblockRetries; + eQMIUIMCardErrorCodes mCardErrorCode; + UINT8 mApplicationsAvailable; + eQMIUIMApplicationTypes mApplicationType; + eQMIUIMApplicationStates mApplicationState; + eQMIUIMPersonalizationStates mPersonalizationState; + eQMIUIMPersonalizationFeatures mPersonalizationFeature; + UINT8 mRemainingPersonalizationVerifyRetries; + UINT8 mRemainingPersonalizationUnblockRetries; + UINT8 mAIDLength; + + // This array must be the size specified by mAIDLength + // UINT8 mAID[1]; +}; + +struct sUIMCardStatusIndication_Status2 +{ + INT8 mUPINReplacesPIN1; + eQMIUIMPINStates mPIN1State; + UINT8 mRemainingPIN1VerifyRetries; + UINT8 mRemainingPIN1UnblockRetries; + eQMIUIMPINStates mPIN2State; + UINT8 mRemainingPIN2VerifyRetries; + UINT8 mRemainingPIN2UnblockRetries; +}; + +struct sUIMCardStatusIndication_Status +{ + sUIMCardStatusIndication_Status1 mUIMCardStatusIndication_Status1; + sUIMCardStatusIndication_Status2 mUIMCardStatusIndication_Status2; +}; + +// Structure to describe indication TLV 0x11 for UIM CardStatusIndication +struct sUIMCardStatusIndication_ValidCardStatus +{ + UINT8 mCardStatusValidCount; + + // This array must be the size specified by mCardStatusValidCount + // INT8 mCardStatusValid[1]; +}; + +// Structure to describe indication TLV 0x12 for UIM CardStatusIndication +struct sUIMCardStatusIndication_ExtendedStatus1 +{ + UINT8 mGWProvisioningApplications; + + struct sGWProvisioning + { + UINT8 mSlot; + UINT8 mApplication; + }; + + // This array must be the size specified by mGWProvisioningApplications + // sGWProvisioning mGWProvisionings[1]; +}; + +struct sUIMCardStatusIndication_ExtendedStatus2 +{ + UINT8 m1XProvisioningApplications; + + struct s1XProvisioning + { + UINT8 mSlot; + UINT8 mApplication; + }; + + // This array must be the size specified by m1XProvisioningApplications + // s1XProvisioning m1XProvisionings[1]; +}; + +struct sUIMCardStatusIndication_ExtendedStatus3 +{ + UINT8 mSlotsAvailable; + eQMIUIMCardStates mCardState; + eQMIUIMPINStates mUPINState; + UINT8 mRemainingUPINVerifyRetries; + UINT8 mRemainingUPINUnblockRetries; + eQMIUIMCardErrorCodes mCardErrorCode; + UINT8 mApplicationsAvailable; + eQMIUIMApplicationTypes mApplicationType; + eQMIUIMApplicationStates mApplicationState; + eQMIUIMPersonalizationStates mPersonalizationState; + eQMIUIMPersonalizationFeatures mPersonalizationFeature; + UINT8 mRemainingPersonalizationVerifyRetries; + UINT8 mRemainingPersonalizationUnblockRetries; + UINT8 mAIDLength; + + // This array must be the size specified by mAIDLength + // UINT8 mAID[1]; +}; + +struct sUIMCardStatusIndication_ExtendedStatus4 +{ + INT8 mUPINReplacesPIN1; + eQMIUIMPINStates mPIN1State; + UINT8 mRemainingPIN1VerifyRetries; + UINT8 mRemainingPIN1UnblockRetries; + eQMIUIMPINStates mPIN2State; + UINT8 mRemainingPIN2VerifyRetries; + UINT8 mRemainingPIN2UnblockRetries; +}; + +struct sUIMCardStatusIndication_ExtendedStatus +{ + sUIMCardStatusIndication_ExtendedStatus1 mUIMCardStatusIndication_ExtendedStatus1; + sUIMCardStatusIndication_ExtendedStatus2 mUIMCardStatusIndication_ExtendedStatus2; + sUIMCardStatusIndication_ExtendedStatus3 mUIMCardStatusIndication_ExtendedStatus3; + sUIMCardStatusIndication_ExtendedStatus4 mUIMCardStatusIndication_ExtendedStatus4; +}; + +// Structure to describe indication TLV 0x10 for UIM RefreshIndication +struct sUIMRefreshIndication_RefreshEvent1 +{ + eQMIUIMRefreshStages mStage; + eQMIUIMRefreshModes mMode; + eQMIUIMSessionTypes mSessionType; + UINT8 mAIDLength; + + // This array must be the size specified by mAIDLength + // UINT8 mAID[1]; +}; + +struct sUIMRefreshIndication_RefreshEvent2 +{ + UINT16 mFileCount; + + struct sFile + { + UINT16 mFileID; + UINT8 mPathLength; + + // This array must be the size specified by mPathLength + // UINT16 mPath[1]; + }; + + // This array must be the size specified by mFileCount + // sFile mFiles[1]; +}; + +struct sUIMRefreshIndication_RefreshEvent +{ + sUIMRefreshIndication_RefreshEvent1 mUIMRefreshIndication_RefreshEvent1; + sUIMRefreshIndication_RefreshEvent2 mUIMRefreshIndication_RefreshEvent2; +}; + +// Structure to describe request TLV 0x01 for UIMAuthenticate() +struct sUIMAuthenticateRequest_SessionInfo +{ + eQMIUIMSessionTypes mSessionType; + UINT8 mAIDLength; + + // This array must be the size specified by mAIDLength + // UINT8 mAID[1]; +}; + +// Structure to describe request TLV 0x02 for UIMAuthenticate() +struct sUIMAuthenticateRequest_Data +{ + eQMIUIMAuthenticationContexts mContext; + UINT16 mDataLength; + + // This array must be the size specified by mDataLength + // UINT8 mData[1]; +}; + +// Structure to describe request TLV 0x10 for UIMAuthenticate() +struct sUIMAuthenticateRequest_ResponseInIndication +{ + UINT32 mIndicationToken; +}; + +// Structure to describe response TLV 0x10 for UIMAuthenticate() +struct sUIMAuthenticateResponse_CardResult +{ + UINT8 mSW1; + UINT8 mSW2; +}; + +// Structure to describe response TLV 0x11 for UIMAuthenticate() +struct sUIMAuthenticateResponse_Data +{ + UINT16 mContentLength; + + // This array must be the size specified by mContentLength + // UINT8 mContent[1]; +}; + +// Structure to describe response TLV 0x12 for UIMAuthenticate() +struct sUIMAuthenticateResponse_ResponseInIndication +{ + UINT32 mIndicationToken; +}; + +// Structure to describe indication TLV 0x01 for UIM AuthenticateIndication +struct sUIMAuthenticateIndication_OriginalToken +{ + UINT32 mIndicationToken; +}; + +// Structure to describe indication TLV 0x10 for UIM AuthenticateIndication +struct sUIMAuthenticateIndication_CardResult +{ + UINT8 mSW1; + UINT8 mSW2; +}; + +// Structure to describe indication TLV 0x11 for UIM AuthenticateIndication +struct sUIMAuthenticateIndication_Data +{ + UINT16 mContentLength; + + // This array must be the size specified by mContentLength + // UINT8 mContent[1]; +}; + +// Structure to describe request TLV 0x01 for UIMCloseSession() +struct sUIMCloseSessionRequest_SessionInfo +{ + eQMIUIMSessionTypes mSessionType; + UINT8 mAIDLength; + + // This array must be the size specified by mAIDLength + // UINT8 mAID[1]; +}; + +// Structure to describe request TLV 0x01 for UIMGetServiceStatus() +struct sUIMGetServiceStatusRequest_SessionInfo +{ + eQMIUIMSessionTypes mSessionType; + UINT8 mAIDLength; + + // This array must be the size specified by mAIDLength + // UINT8 mAID[1]; +}; + +// Structure to describe request TLV 0x02 for UIMGetServiceStatus() +struct sUIMGetServiceStatusRequest_Mask +{ + bool mFDNStatus:1; + bool mHiddenKeyPINStatus:1; + bool mIndexInTheEFDIR:1; + bool mESNStatus:1; + bool mACLStatus:1; + + // Padding out 27 bits + UINT8 mReserved1:3; + UINT8 mReserved2[3]; +}; + +// Structure to describe response TLV 0x10 for UIMGetServiceStatus() +struct sUIMGetServiceStatusResponse_FDNStatus +{ + eQMIUIMFDNStatusValues mFDNStatus; +}; + +// Structure to describe response TLV 0x11 for UIMGetServiceStatus() +struct sUIMGetServiceStatusResponse_HiddenKeyStatus +{ + eQMIUIMHiddenKeyStatusValues mHiddenKeyStatus; +}; + +// Structure to describe response TLV 0x12 for UIMGetServiceStatus() +struct sUIMGetServiceStatusResponse_Index +{ + UINT8 mEFDIRIndex; +}; + +// Structure to describe response TLV 0x13 for UIMGetServiceStatus() +struct sUIMGetServiceStatusResponse_ESNStatus +{ + INT8 mESNChanged; +}; + +// Structure to describe response TLV 0x14 for UIMGetServiceStatus() +struct sUIMGetServiceStatusResponse_ACLStatus +{ + eQMIUIMACLStatus mACLStatus; +}; + +// Structure to describe request TLV 0x01 for UIMSetServiceStatus() +struct sUIMSetServiceStatusRequest_SessionInfo +{ + eQMIUIMSessionTypes mSessionType; + UINT8 mAIDLength; + + // This array must be the size specified by mAIDLength + // UINT8 mAID[1]; +}; + +// Structure to describe request TLV 0x10 for UIMSetServiceStatus() +struct sUIMSetServiceStatusRequest_FDNStatus +{ + INT8 mEnableFDN; +}; + +// Structure to describe request TLV 0x11 for UIMSetServiceStatus() +struct sUIMSetServiceStatusRequest_ACLStatus +{ + INT8 mEnableACL; +}; + +// Structure to describe request TLV 0x01 for UIMChangeProvisioningSession() +struct sUIMChangeProvisioningSessionRequest_SessionChange +{ + eQMIUIMSessionTypes mSessionType; + eQMIUIMCKSessionOperations mOperation; +}; + +// Structure to describe request TLV 0x10 for UIMChangeProvisioningSession() +struct sUIMChangeProvisioningSessionRequest_AppInfo +{ + eQMIUIMSlots mSlot; + UINT8 mAIDLength; + + // This array must be the size specified by mAIDLength + // UINT8 mAID[1]; +}; + +// Structure to describe request TLV 0x01 for UIMGetLabel() +struct sUIMGetLabelRequest_AppInfo +{ + eQMIUIMSlots mSlot; + UINT8 mAIDLength; + + // This array must be the size specified by mAIDLength + // UINT8 mAID[1]; +}; + +// Structure to describe response TLV 0x10 for UIMGetLabel() +struct sUIMGetLabelResponse_AppLabel +{ + UINT8 mLabelLength; + + // This array must be the size specified by mLabelLength + // char mLabelValue[1]; +}; + +// Structure to describe request TLV 0x10 for UIMGetConfiguration() +struct sUIMGetConfigurationRequest_Mask +{ + bool mAutomaticSelection:1; + bool mPersonalizationStatus:1; + bool mHaltSubscription:1; + + // Padding out 29 bits + UINT8 mReserved1:5; + UINT8 mReserved2[3]; +}; + +// Structure to describe response TLV 0x10 for UIMGetConfiguration() +struct sUIMGetConfigurationResponse_AutoSelection +{ + INT8 mAutomaticProvisioningOn; +}; + +// Structure to describe response TLV 0x11 for UIMGetConfiguration() +struct sUIMGetConfigurationResponse_Personalization +{ + UINT8 mFeatureCount; + + struct sFeature + { + eQMIUIMPersonalizationFeatures mPersonalizationFeature; + UINT8 mRemainingVerifyRetries; + UINT8 mRemainingUnblockRetries; + }; + + // This array must be the size specified by mFeatureCount + // sFeature mFeatures[1]; +}; + +// Structure to describe response TLV 0x12 for UIMGetConfiguration() +struct sUIMGetConfigurationResponse_Subscription +{ + INT8 mPublishSubscription; +}; + +// Structure to describe request TLV 0x01 for UIMSendADPU() +struct sUIMSendADPURequest_Slot +{ + eQMIUIMSlots mSlot; +}; + +// Structure to describe request TLV 0x02 for UIMSendADPU() +struct sUIMSendADPURequest_APDU +{ + UINT16 mDataLength; + + // This array must be the size specified by mDataLength + // UINT8 mData[1]; +}; + +// Structure to describe request TLV 0x10 for UIMSendADPU() +struct sUIMSendADPURequest_LogicalChannel +{ + UINT8 mChannelID; +}; + +// Structure to describe request TLV 0x11 for UIMSendADPU() +struct sUIMSendADPURequest_IntermediateProcedureBytes +{ + eQMIUIMAPDUResponseStatus mIntermediateProcedureBytes; +}; + +// Structure to describe response TLV 0x10 for UIMSendADPU() +struct sUIMSendADPUResponse_APDUResponse +{ + UINT16 mDataLength; + + // This array must be the size specified by mDataLength + // UINT8 mData[1]; +}; + +// Structure to describe response TLV 0x11 for UIMSendADPU() +struct sUIMSendADPUResponse_LongAPDUResponse +{ + UINT16 mTotalLength; + UINT32 mIndicationToken; +}; + +// Structure to describe indication TLV 0x01 for UIM SendADPUIndication +struct sUIMSendADPUIndication_APDUResponseChunk +{ + UINT32 mIndicationToken; + UINT16 mTotalLength; + UINT16 mOffset; + UINT16 mDataLength; + + // This array must be the size specified by mDataLength + // UINT8 mData[1]; +}; + +// Structure to describe request TLV 0x01 for UIMSAPConnection() +struct sUIMSAPConnectionRequest_Slot +{ + eQMIUIMConnectOperations mOperation; + eQMIUIMSlots mSlot; +}; + +// Structure to describe request TLV 0x10 for UIMSAPConnection() +struct sUIMSAPConnectionRequest_DisconnectMode +{ + eQMIUIMDisonnectModes mDisconnectMode; +}; + +// Structure to describe request TLV 0x11 for UIMSAPConnection() +struct sUIMSAPConnectionRequest_IntermediateGetResponse +{ + INT8 mReturnIntermediateGetResponse; +}; + +// Structure to describe request TLV 0x12 for UIMSAPConnection() +struct sUIMSAPConnectionRequest_SAPCondition +{ + eQMIUIMSAPConnectionConditions mSAPConnectionCondition; +}; + +// Structure to describe response TLV 0x10 for UIMSAPConnection() +struct sUIMSAPConnectionResponse_State +{ + eQMIUIMSAPStates mSAPState; +}; + +// Structure to describe request TLV 0x01 for UIMSAP() +struct sUIMSAPRequestRequest_Request +{ + eQMIUIMSAPRequests mSAPRequest; + eQMIUIMSlots mSlot; +}; + +// Structure to describe request TLV 0x10 for UIMSAP() +struct sUIMSAPRequestRequest_APDU +{ + UINT16 mDataLength; + + // This array must be the size specified by mDataLength + // UINT8 mData[1]; +}; + +// Structure to describe response TLV 0x10 for UIMSAPRequest() +struct sUIMSAPRequestResponse_ATR +{ + UINT8 mDataLength; + + // This array must be the size specified by mDataLength + // UINT8 mData[1]; +}; + +// Structure to describe response TLV 0x11 for UIMSAPRequest() +struct sUIMSAPRequestResponse_APDU +{ + UINT16 mDataLength; + + // This array must be the size specified by mDataLength + // UINT8 mData[1]; +}; + +// Structure to describe response TLV 0x12 for UIMSAPRequest() +struct sUIMSAPRequestResponse_CardReaderStatus +{ + UINT8 mDataLength; + + // This array must be the size specified by mDataLength + // UINT8 mData[1]; +}; + +// Structure to describe indication TLV 0x10 for UIM SAPConnectionIndication +struct sUIMSAPConnectionIndication_CardStatus +{ + eQMIUIMSAPStates mSAPState; + eQMIUIMSlots mSlot; +}; + +// Structure to describe request TLV 0x01 for UIMLogicalChannel() +struct sUIMLogicalChannelRequest_Slot +{ + eQMIUIMSlots mSlot; +}; + +// Structure to describe request TLV 0x10 for UIMLogicalChannel() +struct sUIMLogicalChannelRequest_AID +{ + UINT8 mAIDLength; + + // This array must be the size specified by mAIDLength + // UINT8 mAID[1]; +}; + +// Structure to describe request TLV 0x11 for UIMLogicalChannel() +struct sUIMLogicalChannelRequest_LogicalChannel +{ + UINT8 mChannelID; +}; + +// Structure to describe request TLV 0x12 for UIMLogicalChannel() +struct sUIMLogicalChannelRequest_FileControlInformation +{ + eQMIUIMFileControlInformation mFileControlInformation; +}; + +// Structure to describe request TLV 0x13 for UIMLogicalChannel() +struct sUIMLogicalChannelRequest_TerminateApplication +{ + INT8 mTerminateApplication; +}; + +// Structure to describe response TLV 0x10 for UIMLogicalChannel() +struct sUIMLogicalChannelResponse_LogicalChannel +{ + UINT8 mChannelID; +}; + +// Structure to describe response TLV 0x11 for UIMLogicalChannel() +struct sUIMLogicalChannelResponse_CardResult +{ + UINT8 mSW1; + UINT8 mSW2; +}; + +// Structure to describe response TLV 0x12 for UIMLogicalChannel() +struct sUIMLogicalChannelResponse_ResponseToSelectCommand +{ + UINT8 mResponseLength; + + // This array must be the size specified by mResponseLength + // UINT8 mResponse[1]; +}; + +// Structure to describe request TLV 0x01 for UIMSubscriptionOK() +struct sUIMSubscriptionOKRequest_SessionInfo +{ + eQMIUIMSessionTypes mSessionType; + UINT8 mAIDLength; + + // This array must be the size specified by mAIDLength + // UINT8 mAID[1]; +}; + +// Structure to describe request TLV 0x02 for UIMSubscriptionOK() +struct sUIMSubscriptionOKRequest_Publish +{ + UINT8 mPathLength; +}; + +// Structure to describe request TLV 0x10 for UIMSubscriptionOK() +struct sUIMSubscriptionOKRequest_EncryptedIMSI +{ + UINT8 mEncryptedIMSILength; + + // This array must be the size specified by mEncryptedIMSILength + // UINT8 mEncryptedIMSI[1]; +}; + +// Structure to describe request TLV 0x01 for UIMGetATR() +struct sUIMGetATRRequest_Slot +{ + eQMIUIMSlots mSlot; +}; + +// Structure to describe response TLV 0x10 for UIMGetATR() +struct sUIMGetATRResponse_ATRValue +{ + UINT8 mATRValueLength; + + // This array must be the size specified by mATRValueLength + // UINT8 mATRValue[1]; +}; + +// Structure to describe request TLV 0x01 for UIMOpenLogicalChannel() +struct sUIMOpenLogicalChannelRequest_Slot +{ + eQMIUIMSlots mSlot; +}; + +// Structure to describe request TLV 0x10 for UIMOpenLogicalChannel() +struct sUIMOpenLogicalChannelRequest_AID +{ + UINT8 mAIDLength; + + // This array must be the size specified by mAIDLength + // UINT8 mAID[1]; +}; + +// Structure to describe request TLV 0x11 for UIMOpenLogicalChannel() +struct sUIMOpenLogicalChannelRequest_FileControlInformation +{ + eQMIUIMFileControlInformation mFileControlInformation; +}; + +// Structure to describe response TLV 0x10 for UIMOpenLogicalChannel() +struct sUIMOpenLogicalChannelResponse_LogicalChannel +{ + UINT8 mChannelID; +}; + +// Structure to describe response TLV 0x11 for UIMOpenLogicalChannel() +struct sUIMOpenLogicalChannelResponse_CardResult +{ + UINT8 mSW1; + UINT8 mSW2; +}; + +// Structure to describe response TLV 0x12 for UIMOpenLogicalChannel() +struct sUIMOpenLogicalChannelResponse_ResponseToSelectCommand +{ + UINT8 mResponseLength; + + // This array must be the size specified by mResponseLength + // UINT8 mResponse[1]; +}; + +// Structure to describe indication TLV 0x01 for UIM SessionClosedIndication +struct sUIMSessionClosedIndication_Slot +{ + eQMIUIMSlots mSlot; +}; + +// Structure to describe indication TLV 0x10 for UIM SessionClosedIndication +struct sUIMSessionClosedIndication_AID +{ + UINT8 mAIDLength; + + // This array must be the size specified by mAIDLength + // UINT8 mAID[1]; +}; + +// Structure to describe indication TLV 0x11 for UIM SessionClosedIndication +struct sUIMSessionClosedIndication_LogicalChannel +{ + UINT8 mChannelID; +}; + +// Structure to describe request TLV 0x01 for UIMRefreshRegisterAll() +struct sUIMRefreshRegisterAllRequest_SessionInfo +{ + eQMIUIMSessionTypes mSessionType; + UINT8 mAIDLength; + + // This array must be the size specified by mAIDLength + // UINT8 mAID[1]; +}; + +// Structure to describe request TLV 0x02 for UIMRefreshRegisterAll() +struct sUIMRefreshRegisterAllRequest_Refresh +{ + eQMIUIMRegisterFlags mRegisterForRefresh; +}; + +// Structure to describe request TLV 0x10 for UIMRefreshRegisterAll() +struct sUIMRefreshRegisterAllRequest_VoteForInit +{ + INT8 mVoteForInitialization; +}; + +// Structure to describe request TLV 0x01 for UIMSetFileStatus() +struct sUIMSetFileStatusRequest_SessionInfo +{ + eQMIUIMSessionTypes mSessionType; + UINT8 mAIDLength; + + // This array must be the size specified by mAIDLength + // UINT8 mAID[1]; +}; + +// Structure to describe request TLV 0x02 for UIMSetFileStatus() +struct sUIMSetFileStatusRequest_FileID +{ + UINT16 mFileID; + UINT8 mPathLength; + + // This array must be the size specified by mPathLength + // UINT16 mPath[1]; +}; + +// Structure to describe request TLV 0x03 for UIMSetFileStatus() +struct sUIMSetFileStatusRequest_FileStatus +{ + eQMIUIMFilesStatus mFileStatus; +}; + +// Structure to describe request TLV 0x01 for PBMSetIndicationRegistrationState() +struct sPBMSetIndicationRegistrationStateRequest_Mask +{ + bool mRecordUpdate:1; + bool mPhonebookReady:1; + bool mEmergencyNumberList:1; + bool mHiddenRecordStatus:1; + bool mAASUpdate:1; + bool mGASUpdate:1; + + // Padding out 26 bits + UINT8 mReserved1:2; + UINT8 mReserved2[3]; +}; + +// Structure to describe response TLV 0x10 for PBMSetIndicationRegistrationState() +struct sPBMSetIndicationRegistrationStateResponse_Mask +{ + bool mRecordUpdate:1; + bool mPhonebookReady:1; + bool mEmergencyNumberList:1; + bool mHiddenRecordStatus:1; + bool mAASUpdate:1; + bool mGASUpdate:1; + + // Padding out 26 bits + UINT8 mReserved1:2; + UINT8 mReserved2[3]; +}; + +// Structure to describe request TLV 0x01 for PBMGetCapabilities() +struct sPBMGetCapabilitiesRequest_Info +{ + eQMIPBMSessionTypes mSessionType; + eQMIPBMPhonebookTypes mPhonebookType; +}; + +// Structure to describe response TLV 0x10 for PBMGetCapabilities() +struct sPBMGetCapabilitiesResponse_Basic +{ + eQMIPBMSessionTypes mSessionType; + eQMIPBMPhonebookTypes mPhonebookType; + UINT16 mRecordsUsed; + UINT16 mMaximumRecords; + UINT8 mMaximumNumberLength; + UINT8 mMaximumNameLength; +}; + +// Structure to describe response TLV 0x11 for PBMGetCapabilities() +struct sPBMGetCapabilitiesResponse_Group +{ + UINT8 mMaximumGroupsPossible; + UINT8 mMaximumGroupTagLength; +}; + +// Structure to describe response TLV 0x12 for PBMGetCapabilities() +struct sPBMGetCapabilitiesResponse_AdditionalNumber +{ + UINT8 mMaximumAdditionalNumbersPossible; + UINT8 mMaximumAdditionalNumberLength; + UINT8 mMaximumAdditionalNumberTagLength; +}; + +// Structure to describe response TLV 0x13 for PBMGetCapabilities() +struct sPBMGetCapabilitiesResponse_Email +{ + UINT8 mMaximumEmailsPossible; + UINT8 mMaximumEmailAddressLength; +}; + +// Structure to describe response TLV 0x14 for PBMGetCapabilities() +struct sPBMGetCapabilitiesResponse_SecondName +{ + UINT8 mMaximumSecondNameLength; +}; + +// Structure to describe response TLV 0x15 for PBMGetCapabilities() +struct sPBMGetCapabilitiesResponse_HiddenRecords +{ + INT8 mHiddenEntrySupported; +}; + +// Structure to describe response TLV 0x16 for PBMGetCapabilities() +struct sPBMGetCapabilitiesResponse_GAS +{ + UINT8 mMaximumGASStringLength; +}; + +// Structure to describe response TLV 0x17 for PBMGetCapabilities() +struct sPBMGetCapabilitiesResponse_AAS +{ + UINT8 mMaximumAASStringLength; +}; + +// Structure to describe response TLV 0x18 for PBMGetCapabilities() +struct sPBMGetCapabilitiesResponse_Protection +{ + eQMIPBMProtectionMethods mProtectionMethod; +}; + +// Structure to describe response TLV 0x19 for PBMGetCapabilities() +struct sPBMGetCapabilitiesResponse_Sets +{ + UINT16 mNumberOfPhonebookSets; +}; + +// Structure to describe response TLV 0x10 for PBMGetAllCapabilities() +struct sPBMGetAllCapabilitiesResponse_Basic +{ + UINT8 mNumberOfSessions; + + struct sSession + { + eQMIPBMSessionTypes mSessionType; + UINT8 mNumberOfPhonebooks; + + struct sPhonebook + { + eQMIPBMPhonebookTypes mPhonebookType; + UINT16 mRecordsUsed; + UINT16 mMaximumRecords; + UINT8 mMaximumNumberLength; + UINT8 mMaximumNameLength; + }; + + // This array must be the size specified by mNumberOfPhonebooks + // sPhonebook mPhonebooks[1]; + }; + + // This array must be the size specified by mNumberOfSessions + // sSession mSessions[1]; +}; + +// Structure to describe response TLV 0x11 for PBMGetAllCapabilities() +struct sPBMGetAllCapabilitiesResponse_Group +{ + UINT8 mNumberOfSessions; + + struct sSession + { + eQMIPBMSessionTypes mSessionType; + UINT8 mMaximumGroupsPossible; + UINT8 mMaximumGroupTagLength; + }; + + // This array must be the size specified by mNumberOfSessions + // sSession mSessions[1]; +}; + +// Structure to describe response TLV 0x12 for PBMGetAllCapabilities() +struct sPBMGetAllCapabilitiesResponse_AdditionalNumber +{ + UINT8 mNumberOfSessions; + + struct sSession + { + eQMIPBMSessionTypes mSessionType; + UINT8 mMaximumAdditionalNumbersPossible; + UINT8 mMaximumAdditionalNumberLength; + UINT8 mMaximumAdditionalNumberTagLength; + }; + + // This array must be the size specified by mNumberOfSessions + // sSession mSessions[1]; +}; + +// Structure to describe response TLV 0x13 for PBMGetAllCapabilities() +struct sPBMGetAllCapabilitiesResponse_Email +{ + UINT8 mNumberOfSessions; + + struct sSession + { + eQMIPBMSessionTypes mSessionType; + UINT8 mMaximumEmailsPossible; + UINT8 mMaximumEmailAddressLength; + }; + + // This array must be the size specified by mNumberOfSessions + // sSession mSessions[1]; +}; + +// Structure to describe response TLV 0x14 for PBMGetAllCapabilities() +struct sPBMGetAllCapabilitiesResponse_SecondName +{ + UINT8 mNumberOfSessions; + + struct sSession + { + eQMIPBMSessionTypes mSessionType; + UINT8 mMaximumSecondNameLength; + }; + + // This array must be the size specified by mNumberOfSessions + // sSession mSessions[1]; +}; + +// Structure to describe response TLV 0x15 for PBMGetAllCapabilities() +struct sPBMGetAllCapabilitiesResponse_HiddenRecords +{ + UINT8 mNumberOfSessions; + + struct sSession + { + eQMIPBMSessionTypes mSessionType; + INT8 mHiddenEntrySupported; + }; + + // This array must be the size specified by mNumberOfSessions + // sSession mSessions[1]; +}; + +// Structure to describe response TLV 0x16 for PBMGetAllCapabilities() +struct sPBMGetAllCapabilitiesResponse_GAS +{ + UINT8 mNumberOfSessions; + + struct sSession + { + eQMIPBMSessionTypes mSessionType; + UINT8 mMaximumRecords; + UINT8 mRecordsUsed; + UINT8 mMaximumGASStringLength; + }; + + // This array must be the size specified by mNumberOfSessions + // sSession mSessions[1]; +}; + +// Structure to describe response TLV 0x17 for PBMGetAllCapabilities() +struct sPBMGetAllCapabilitiesResponse_AAS +{ + UINT8 mNumberOfSessions; + + struct sSession + { + eQMIPBMSessionTypes mSessionType; + UINT8 mMaximumRecords; + UINT8 mRecordsUsed; + UINT8 mMaximumAASStringLength; + }; + + // This array must be the size specified by mNumberOfSessions + // sSession mSessions[1]; +}; + +// Structure to describe request TLV 0x01 for PBMReadRecords() +struct sPBMReadRecordsRequest_Info +{ + eQMIPBMSessionTypes mSessionType; + eQMIPBMPhonebookTypes mPhonebookType; + UINT16 mStartingRecordID; + UINT16 mEndingRecordID; +}; + +// Structure to describe response TLV 0x10 for PBMReadRecords() +struct sPBMReadRecordsResponse_RecordsRead +{ + UINT16 mNumberOfRecords; +}; + +// Structure to describe indication TLV 0x01 for PBM ReadRecordsIndication +struct sPBMReadRecordsIndication_Basic +{ + UINT16 mSequenceNumber; + eQMIPBMSessionTypes mSessionType; + eQMIPBMPhonebookTypes mPhonebookType; + UINT8 mNumberOfRecords; + + struct sRecord1 + { + UINT16 mRecordID; + eQMIPBMNumberTypes mNumberType; + eQMIPBMNumberPlans mNumberPlan; + UINT8 mNumberLength; + + // This array must be the size specified by mNumberLength + // char mNumber[1]; + }; + + struct sRecord2 + { + UINT8 mNameLength; + + // This array must be the size (in BYTEs) specified by mNameLength + // wchar_t mName[1]; + }; + + struct sRecord + { + sRecord1 mRecord1; + sRecord2 mRecord2; + }; + + // This array must be the size specified by mNumberOfRecords + // sRecord mRecords[1]; +}; + +// Structure to describe indication TLV 0x10 for PBM ReadRecordsIndication +struct sPBMReadRecordsIndication_SecondName +{ + UINT8 mNumberOfRecords; + + struct sRecord + { + UINT16 mRecordID; + UINT8 mSecondNameLength; + + // This array must be the size (in BYTEs) specified by mSecondNameLength + // wchar_t mSecondName[1]; + }; + + // This array must be the size specified by mNumberOfRecords + // sRecord mRecords[1]; +}; + +// Structure to describe indication TLV 0x11 for PBM ReadRecordsIndication +struct sPBMReadRecordsIndication_AdditionalNumber +{ + UINT8 mNumberOfRecords; + + struct sRecord + { + UINT16 mRecordID; + UINT8 mAdditionalNumberCount; + + struct sAdditionalNumber1 + { + eQMIPBMNumberTypes mNumberType; + eQMIPBMNumberPlans mNumberPlan; + UINT8 mNumberLength; + + // This array must be the size specified by mNumberLength + // char mNumber[1]; + }; + + struct sAdditionalNumber2 + { + UINT8 mTagID; + }; + + struct sAdditionalNumber + { + sAdditionalNumber1 mAdditionalNumber1; + sAdditionalNumber2 mAdditionalNumber2; + }; + + // This array must be the size specified by mAdditionalNumberCount + // sAdditionalNumber mAdditionalNumbers[1]; + }; + + // This array must be the size specified by mNumberOfRecords + // sRecord mRecords[1]; +}; + +// Structure to describe indication TLV 0x12 for PBM ReadRecordsIndication +struct sPBMReadRecordsIndication_Group +{ + UINT8 mNumberOfRecords; + + struct sRecord + { + UINT16 mRecordID; + UINT8 mGroupCount; + + // This array must be the size specified by mGroupCount + // UINT8 mGroupID[1]; + }; + + // This array must be the size specified by mNumberOfRecords + // sRecord mRecords[1]; +}; + +// Structure to describe indication TLV 0x13 for PBM ReadRecordsIndication +struct sPBMReadRecordsIndication_Email +{ + UINT8 mNumberOfRecords; + + struct sRecord + { + UINT16 mRecordID; + UINT8 mEmailCount; + + struct sEmail + { + UINT8 mAddressLength; + + // This array must be the size (in BYTEs) specified by mAddressLength + // wchar_t mAddress[1]; + }; + + // This array must be the size specified by mEmailCount + // sEmail mEmails[1]; + }; + + // This array must be the size specified by mNumberOfRecords + // sRecord mRecords[1]; +}; + +// Structure to describe indication TLV 0x14 for PBM ReadRecordsIndication +struct sPBMReadRecordsIndication_Hidden +{ + UINT8 mNumberOfRecords; + + struct sRecord + { + UINT16 mRecordID; + INT8 mHidden; + }; + + // This array must be the size specified by mNumberOfRecords + // sRecord mRecords[1]; +}; + +// Structure to describe request TLV 0x01 for PBMWriteRecord() +struct sPBMWriteRecordRequest_Info1 +{ + eQMIPBMSessionTypes mSessionType; + eQMIPBMPhonebookTypes mPhonebookType; + UINT16 mRecordID; + eQMIPBMNumberTypes mNumberType; + eQMIPBMNumberPlans mNumberPlan; + UINT8 mNumberLength; + + // This array must be the size specified by mNumberLength + // char mNumber[1]; +}; + +struct sPBMWriteRecordRequest_Info2 +{ + UINT8 mNameLength; + + // This array must be the size (in BYTEs) specified by mNameLength + // wchar_t mName[1]; +}; + +struct sPBMWriteRecordRequest_Info +{ + sPBMWriteRecordRequest_Info1 mPBMWriteRecordRequest_Info1; + sPBMWriteRecordRequest_Info2 mPBMWriteRecordRequest_Info2; +}; + +// Structure to describe request TLV 0x10 for PBMWriteRecord() +struct sPBMWriteRecordRequest_SecondName +{ + UINT8 mNameLength; + + // This array must be the size (in BYTEs) specified by mNameLength + // wchar_t mName[1]; +}; + +// Structure to describe request TLV 0x11 for PBMWriteRecord() +struct sPBMWriteRecordRequest_AdditionalNumber +{ + UINT8 mAdditionalNumberCount; + + struct sAdditionalNumber1 + { + eQMIPBMNumberTypes mNumberType; + eQMIPBMNumberPlans mNumberPlan; + UINT8 mNumberLength; + + // This array must be the size specified by mNumberLength + // char mNumber[1]; + }; + + struct sAdditionalNumber2 + { + UINT8 mTagID; + }; + + struct sAdditionalNumber + { + sAdditionalNumber1 mAdditionalNumber1; + sAdditionalNumber2 mAdditionalNumber2; + }; + + // This array must be the size specified by mAdditionalNumberCount + // sAdditionalNumber mAdditionalNumbers[1]; +}; + +// Structure to describe request TLV 0x12 for PBMWriteRecord() +struct sPBMWriteRecordRequest_Group +{ + UINT8 mGroupCount; + + // This array must be the size specified by mGroupCount + // UINT8 mGroupID[1]; +}; + +// Structure to describe request TLV 0x13 for PBMWriteRecord() +struct sPBMWriteRecordRequest_Email +{ + UINT8 mEmailCount; + + struct sEmail + { + UINT8 mAddressLength; + + // This array must be the size (in BYTEs) specified by mAddressLength + // wchar_t mAddress[1]; + }; + + // This array must be the size specified by mEmailCount + // sEmail mEmails[1]; +}; + +// Structure to describe request TLV 0x14 for PBMWriteRecord() +struct sPBMWriteRecordRequest_Hidden +{ + INT8 mHidden; +}; + +// Structure to describe response TLV 0x10 for PBMWriteRecord() +struct sPBMWriteRecordResponse_Info +{ + UINT16 mRecordID; +}; + +// Structure to describe request TLV 0x01 for PBMDeleteRecord() +struct sPBMDeleteRecordRequest_Info +{ + eQMIPBMSessionTypes mSessionType; + eQMIPBMPhonebookTypes mPhonebookType; + UINT16 mRecordID; +}; + +// Structure to describe response TLV 0x10 for PBMDeleteRecord() +struct sPBMDeleteRecordResponse_Info +{ + UINT16 mRecordID; +}; + +// Structure to describe request TLV 0x01 for PBMDeleteAllRecords() +struct sPBMDeleteAllRecordsRequest_Info +{ + eQMIPBMSessionTypes mSessionType; + eQMIPBMPhonebookTypes mPhonebookType; +}; + +// Structure to describe request TLV 0x01 for PBMSearchRecords() +struct sPBMSearchRecordsRequest_Info +{ + eQMIPBMSessionTypes mSessionType; + eQMIPBMPhonebookTypes mPhonebookType; +}; + +// Structure to describe request TLV 0x10 for PBMSearchRecords() +struct sPBMSearchRecordsRequest_Number +{ + UINT8 mNumberLength; + + // This array must be the size specified by mNumberLength + // char mNumber[1]; +}; + +// Structure to describe request TLV 0x11 for PBMSearchRecords() +struct sPBMSearchRecordsRequest_Name +{ + UINT8 mNameLength; + + // This array must be the size (in BYTEs) specified by mNameLength + // wchar_t mName[1]; +}; + +// Structure to describe response TLV 0x10 for PBMSearchRecords() +struct sPBMSearchRecordsResponse_List +{ + UINT16 mNumberOfRecordIDs; + + // This array must be the size specified by mNumberOfRecordIDs + // UINT16 mRecordID[1]; +}; + +// Structure to describe indication TLV 0x01 for PBM RecordUpdateIndication +struct sPBMRecordUpdateIndication_Info +{ + eQMIPBMSessionTypes mSessionType; + eQMIPBMPhonebookTypes mPhonebookType; + eQMIPBMOperations mOperation; + UINT16 mRecordID; +}; + +// Structure to describe indication TLV 0x01 for PBM RefreshIndication +struct sPBMRefreshIndication_Info +{ + eQMIPBMSessionTypes mSessionType; + eQMIPBMPhonebookTypes mPhonebookType; + eQMIPBMRefreshStatus mStatus; +}; + +// Structure to describe indication TLV 0x01 for PBM ReadyIndication +struct sPBMReadyIndication_Info +{ + eQMIPBMSessionTypes mSessionType; + eQMIPBMPhonebookTypes mPhonebookType; +}; + +// Structure to describe indication TLV 0x01 for PBM EmergencyListIndication +struct sPBMEmergencyListIndication_HardCodedNumbers +{ + UINT8 mNumberCount; + + struct sNumber + { + UINT8 mEmergencyNumberLength; + + // This array must be the size specified by mEmergencyNumberLength + // char mEmergencyNumber[1]; + }; + + // This array must be the size specified by mNumberCount + // sNumber mNumbers[1]; +}; + +// Structure to describe indication TLV 0x10 for PBM EmergencyListIndication +struct sPBMEmergencyListIndication_NVNumbers +{ + UINT8 mNumberCount; + + struct sNumber + { + UINT8 mEmergencyNumberLength; + + // This array must be the size specified by mEmergencyNumberLength + // char mEmergencyNumber[1]; + }; + + // This array must be the size specified by mNumberCount + // sNumber mNumbers[1]; +}; + +// Structure to describe indication TLV 0x11 for PBM EmergencyListIndication +struct sPBMEmergencyListIndication_CardNumbers +{ + UINT8 mNumberOfSessions; + + struct sSession + { + eQMIPBMSessionTypes mSessionType; + UINT8 mNumberCount; + + struct sNumber + { + bool mPolice:1; + bool mAmbulance:1; + bool mFireBrigade:1; + bool mMarineGuard:1; + bool mMountainRescue:1; + bool mManualECall:1; + bool mAutomaticECall:1; + bool mSpare:1; + UINT8 mEmergencyNumberLength; + + // This array must be the size specified by mEmergencyNumberLength + // char mEmergencyNumber[1]; + }; + + // This array must be the size specified by mNumberCount + // sNumber mNumbers[1]; + }; + + // This array must be the size specified by mNumberOfSessions + // sSession mSessions[1]; +}; + +// Structure to describe indication TLV 0x12 for PBM EmergencyListIndication +struct sPBMEmergencyListIndication_NetworkNumbers +{ + UINT8 mNumberOfSessions; + + struct sSession + { + eQMIPBMSessionTypes mSessionType; + UINT8 mNumberCount; + + struct sNumber + { + bool mPolice:1; + bool mAmbulance:1; + bool mFireBrigade:1; + bool mMarineGuard:1; + bool mMountainRescue:1; + bool mManualECall:1; + bool mAutomaticECall:1; + bool mSpare:1; + UINT8 mEmergencyNumberLength; + + // This array must be the size specified by mEmergencyNumberLength + // char mEmergencyNumber[1]; + }; + + // This array must be the size specified by mNumberCount + // sNumber mNumbers[1]; + }; + + // This array must be the size specified by mNumberOfSessions + // sSession mSessions[1]; +}; + +// Structure to describe indication TLV 0x13 for PBM EmergencyListIndication +struct sPBMEmergencyListIndication_HardCodedNumbersEx +{ + UINT8 mNumberCount; + + struct sNumber + { + UINT8 mEmergencyNumberLength; + + // This array must be the size specified by mEmergencyNumberLength + // char mEmergencyNumber[1]; + }; + + // This array must be the size specified by mNumberCount + // sNumber mNumbers[1]; +}; + +// Structure to describe indication TLV 0x14 for PBM EmergencyListIndication +struct sPBMEmergencyListIndication_NVNumbersEx +{ + UINT8 mNumberCount; + + struct sNumber + { + UINT8 mEmergencyNumberLength; + + // This array must be the size specified by mEmergencyNumberLength + // char mEmergencyNumber[1]; + }; + + // This array must be the size specified by mNumberCount + // sNumber mNumbers[1]; +}; + +// Structure to describe indication TLV 0x01 for PBM AllReadyIndication +struct sPBMAllReadyIndication_Info +{ + UINT8 mNumberOfSessions; + + struct sSession + { + eQMIPBMSessionTypes mSessionType; + bool mAbbreviatedDialingNumber:1; + bool mFixedDialingNumber:1; + bool mMobileSubscriberIntegratedServicesDigitalNetwork:1; + bool mMailBoxDialingNumber:1; + bool mServiceDialingNumber:1; + bool mBarredDialingNumber:1; + bool mLastNumberDialed:1; + bool mMailBoxNumber:1; + + // Padding out 8 bits + UINT8 mReserved1; + }; + + // This array must be the size specified by mNumberOfSessions + // sSession mSessions[1]; +}; + +// Structure to describe response TLV 0x10 for PBMGetEmergencyList() +struct sPBMGetEmergencyListResponse_HardCodedNumbers +{ + UINT8 mNumberCount; + + struct sNumber + { + UINT8 mEmergencyNumberLength; + + // This array must be the size specified by mEmergencyNumberLength + // char mEmergencyNumber[1]; + }; + + // This array must be the size specified by mNumberCount + // sNumber mNumbers[1]; +}; + +// Structure to describe response TLV 0x11 for PBMGetEmergencyList() +struct sPBMGetEmergencyListResponse_NVNumbers +{ + UINT8 mNumberCount; + + struct sNumber + { + UINT8 mEmergencyNumberLength; + + // This array must be the size specified by mEmergencyNumberLength + // char mEmergencyNumber[1]; + }; + + // This array must be the size specified by mNumberCount + // sNumber mNumbers[1]; +}; + +// Structure to describe response TLV 0x12 for PBMGetEmergencyList() +struct sPBMGetEmergencyListResponse_CardNumbers +{ + UINT8 mNumberOfSessions; + + struct sSession + { + eQMIPBMSessionTypes mSessionType; + UINT8 mNumberCount; + + struct sNumber + { + bool mPolice:1; + bool mAmbulance:1; + bool mFireBrigade:1; + bool mMarineGuard:1; + bool mMountainRescue:1; + bool mManualECall:1; + bool mAutomaticECall:1; + bool mSpare:1; + UINT8 mEmergencyNumberLength; + + // This array must be the size specified by mEmergencyNumberLength + // char mEmergencyNumber[1]; + }; + + // This array must be the size specified by mNumberCount + // sNumber mNumbers[1]; + }; + + // This array must be the size specified by mNumberOfSessions + // sSession mSessions[1]; +}; + +// Structure to describe response TLV 0x13 for PBMGetEmergencyList() +struct sPBMGetEmergencyListResponse_NetworkNumbers +{ + UINT8 mNumberOfSessions; + + struct sSession + { + eQMIPBMSessionTypes mSessionType; + UINT8 mNumberCount; + + struct sNumber + { + bool mPolice:1; + bool mAmbulance:1; + bool mFireBrigade:1; + bool mMarineGuard:1; + bool mMountainRescue:1; + bool mManualECall:1; + bool mAutomaticECall:1; + bool mSpare:1; + UINT8 mEmergencyNumberLength; + + // This array must be the size specified by mEmergencyNumberLength + // char mEmergencyNumber[1]; + }; + + // This array must be the size specified by mNumberCount + // sNumber mNumbers[1]; + }; + + // This array must be the size specified by mNumberOfSessions + // sSession mSessions[1]; +}; + +// Structure to describe response TLV 0x14 for PBMGetEmergencyList() +struct sPBMGetEmergencyListResponse_HardCodedNumbersEx +{ + UINT8 mNumberCount; + + struct sNumber + { + UINT8 mEmergencyNumberLength; + + // This array must be the size specified by mEmergencyNumberLength + // char mEmergencyNumber[1]; + }; + + // This array must be the size specified by mNumberCount + // sNumber mNumbers[1]; +}; + +// Structure to describe response TLV 0x15 for PBMGetEmergencyList() +struct sPBMGetEmergencyListResponse_NVNumbersEx +{ + UINT8 mNumberCount; + + struct sNumber + { + UINT8 mEmergencyNumberLength; + + // This array must be the size specified by mEmergencyNumberLength + // char mEmergencyNumber[1]; + }; + + // This array must be the size specified by mNumberCount + // sNumber mNumbers[1]; +}; + +// Structure to describe response TLV 0x10 for PBMGetAllGroups() +struct sPBMGetAllGroupsResponse_Groups +{ + UINT8 mNumberOfSessions; + + struct sSession + { + eQMIPBMSessionTypes mSessionType; + UINT8 mGroupCount; + + struct sGroup + { + UINT8 mGroupID; + UINT8 mGroupNameLength; + + // This array must be the size (in BYTEs) specified by mGroupNameLength + // wchar_t mGroupName[1]; + }; + + // This array must be the size specified by mGroupCount + // sGroup mGroups[1]; + }; + + // This array must be the size specified by mNumberOfSessions + // sSession mSessions[1]; +}; + +// Structure to describe request TLV 0x01 for PBMSetGroupInfo() +struct sPBMSetGroupInfoRequest_Info +{ + eQMIPBMSessionTypes mSessionType; + eQMIPBMOperations mOperation; + UINT8 mGroupID; + UINT8 mGroupNameLength; + + // This array must be the size (in BYTEs) specified by mGroupNameLength + // wchar_t mGroupName[1]; +}; + +// Structure to describe response TLV 0x10 for PBMSetGroupInfo() +struct sPBMSetGroupInfoResponse_ID +{ + eQMIPBMSessionTypes mSessionType; + UINT8 mGroupID; +}; + +// Structure to describe request TLV 0x01 for PBMGetState() +struct sPBMGetStateRequest_Info +{ + eQMIPBMSessionTypes mSessionType; + eQMIPBMPhonebookTypes mPhonebookType; +}; + +// Structure to describe response TLV 0x10 for PBMGetStateInfo() +struct sPBMGetStateInfoResponse_State +{ + eQMIPBMSessionTypes mSessionType; + eQMIPBMPhonebookTypes mPhonebookType; + eQMIPBMStates mState; +}; + +// Structure to describe request TLV 0x01 for PBMReadAllHiddenRecords() +struct sPBMReadAllHiddenRecordsRequest_Info +{ + eQMIPBMSessionTypes mSessionType; +}; + +// Structure to describe response TLV 0x10 for PBMReadAllHiddenRecords() +struct sPBMReadAllHiddenRecordsResponse_Records +{ + UINT16 mNumberOfRecords; +}; + +// Structure to describe indication TLV 0x01 for PBM HiddenRecordStatusIndication +struct sPBMHiddenRecordStatusIndication_Status +{ + eQMIPBMSessionTypes mSessionType; + INT8 mHiddenRecordsValid; +}; + +// Structure to describe request TLV 0x01 for PBMGetNextEmptyRecordID() +struct sPBMGetNextEmptyRecordIDRequest_Info +{ + eQMIPBMSessionTypes mSessionType; + eQMIPBMPhonebookTypes mPhonebookType; + UINT16 mRecordID; +}; + +// Structure to describe response TLV 0x10 for PBMGetNextEmptyRecordID() +struct sPBMGetNextEmptyRecordIDResponse_Info +{ + UINT16 mRecordID; +}; + +// Structure to describe request TLV 0x01 for PBMGetNextRecordID() +struct sPBMGetNextRecordIDRequest_Info +{ + eQMIPBMSessionTypes mSessionType; + eQMIPBMPhonebookTypes mPhonebookType; + UINT16 mRecordID; +}; + +// Structure to describe response TLV 0x10 for PBMGetNextRecordID() +struct sPBMGetNextRecordIDResponse_Info +{ + UINT16 mRecordID; +}; + +// Structure to describe response TLV 0x10 for PBMGetAASList() +struct sPBMGetAASListResponse_List +{ + UINT8 mNumberOfSessions; + + struct sSession + { + eQMIPBMSessionTypes mSessionType; + UINT8 mAASCount; + + struct sAAS + { + UINT8 mAASID; + UINT8 mAlphaStringLength; + + // This array must be the size (in BYTEs) specified by mAlphaStringLength + // wchar_t mAlphaString[1]; + }; + + // This array must be the size specified by mAASCount + // sAAS mAASs[1]; + }; + + // This array must be the size specified by mNumberOfSessions + // sSession mSessions[1]; +}; + +// Structure to describe request TLV 0x10 for PBMSetAAS() +struct sPBMSetAASRequest_Info +{ + eQMIPBMSessionTypes mSessionType; + eQMIPBMAASOperations mOperation; + UINT8 mAASID; + UINT8 mAlphaStringLength; + + // This array must be the size (in BYTEs) specified by mAlphaStringLength + // wchar_t mAlphaString[1]; +}; + +// Structure to describe response TLV 0x10 for PBMSetAAS() +struct sPBMSetAASResponse_Info +{ + eQMIPBMSessionTypes mSessionType; + UINT8 mAASID; +}; + +// Structure to describe indication TLV 0x01 for PBM AASChangeIndication +struct sPBMAASChangeIndication_Info +{ + eQMIPBMSessionTypes mSessionType; + eQMIPBMOperations mOperation; + UINT8 mAASID; + UINT8 mAlphaStringLength; + + // This array must be the size (in BYTEs) specified by mAlphaStringLength + // wchar_t mAlphaString[1]; +}; + +// Structure to describe indication TLV 0x10 for PBM AASChangeIndication +struct sPBMAASChangeIndication_ExtendedAAS +{ + UINT8 mExtendedStringLength; + + // This array must be the size (in BYTEs) specified by mExtendedStringLength + // wchar_t mExtendedString[1]; +}; + +// Structure to describe indication TLV 0x01 for PBM GASChangeIndication +struct sPBMGASChangeIndication_Info +{ + eQMIPBMSessionTypes mSessionType; + eQMIPBMOperations mOperation; + UINT8 mGASID; + UINT8 mGroupNameLength; + + // This array must be the size (in BYTEs) specified by mGroupNameLength + // wchar_t mGroupName[1]; +}; + +// Structure to describe indication TLV 0x10 for PBM GASChangeIndication +struct sPBMGASChangeIndication_ExtendedGAS +{ + UINT8 mExtendedStringLength; + + // This array must be the size (in BYTEs) specified by mExtendedStringLength + // wchar_t mExtendedString[1]; +}; + +// Structure to describe request TLV 0x10 for PBMBindSubscription() +struct sPBMBindSubscriptionRequest_Type +{ + eQMIPBMSubscriptionTypes mSubscriptionType; +}; + +// Structure to describe response TLV 0x10 for PBMGetSubscription() +struct sPBMGetSubscriptionResponse_Type +{ + eQMIPBMSubscriptionTypes mSubscriptionType; +}; + +// Structure to describe request TLV 0x01 for PBMSetCapabilitiesReadOperation() +struct sPBMSetCapabilitiesReadOperationRequest_Session +{ + eQMIPBMSessionTypes mSessionType; +}; + +// Structure to describe request TLV 0x10 for PBMSetCapabilitiesReadOperation() +struct sPBMSetCapabilitiesReadOperationRequest_StartID +{ + UINT16 mStartingSetID; +}; + +// Structure to describe request TLV 0x11 for PBMSetCapabilitiesReadOperation() +struct sPBMSetCapabilitiesReadOperationRequest_EndID +{ + UINT16 mEndingSetID; +}; + +// Structure to describe response TLV 0x10 for PBMSetCapabilitiesReadOperation() +struct sPBMSetCapabilitiesReadOperationResponse_Sets +{ + UINT16 mNumberOfPhonebookSets; +}; + +// Structure to describe indication TLV 0x01 for PBM SetCapabilitiesReadOperationIndication +struct sPBMSetCapabilitiesReadOperationIndication_Data +{ + eQMIPBMSessionTypes mSessionType; + UINT8 mNumberOfPhonebookSets; + + struct sSet + { + UINT16 mSetID; + UINT8 mNumberOfUSIMFiles; + + struct sField + { + eQMIPBMFieldTypes mFieldID; + eQMIPBMMappingTypes mMappingType; + UINT16 mNumberOfRecords; + UINT16 mNumberOfFreeRecords; + UINT16 mRecordLength; + }; + + // This array must be the size specified by mNumberOfUSIMFiles + // sField mFields[1]; + }; + + // This array must be the size specified by mNumberOfPhonebookSets + // sSet mSets[1]; +}; + +// Structure to describe request TLV 0x01 for PBMExtendedReadRecords() +struct sPBMExtendedReadRecordsRequest_Info +{ + eQMIPBMSessionTypes mSessionType; + eQMIPBMPhonebookTypes mPhonebookType; + UINT16 mStartingRecordID; + UINT16 mEndingRecordID; +}; + +// Structure to describe response TLV 0x10 for PBMExtendedReadRecords() +struct sPBMExtendedReadRecordsResponse_RecordsRead +{ + UINT16 mNumberOfRecords; +}; + +// Structure to describe indication TLV 0x01 for PBM ExtendedReadRecordsIndication +struct sPBMExtendedReadRecordsIndication_Basic +{ + UINT16 mSequenceNumber; + eQMIPBMSessionTypes mSessionType; + eQMIPBMPhonebookTypes mPhonebookType; + UINT8 mNumberOfRecords; + + struct sRecord1 + { + UINT16 mRecordID; + eQMIPBMNumberTypes mNumberType; + eQMIPBMNumberPlans mNumberPlan; + UINT8 mNumberLength; + + // This array must be the size specified by mNumberLength + // char mNumber[1]; + }; + + struct sRecord2 + { + UINT8 mNameLength; + + // This array must be the size (in BYTEs) specified by mNameLength + // wchar_t mName[1]; + }; + + struct sRecord + { + sRecord1 mRecord1; + sRecord2 mRecord2; + }; + + // This array must be the size specified by mNumberOfRecords + // sRecord mRecords[1]; +}; + +// Structure to describe indication TLV 0x10 for PBM ExtendedReadRecordsIndication +struct sPBMExtendedReadRecordsIndication_SecondName +{ + UINT8 mNumberOfRecords; + + struct sRecord + { + UINT16 mRecordID; + UINT8 mSecondNameLength; + + // This array must be the size (in BYTEs) specified by mSecondNameLength + // wchar_t mSecondName[1]; + }; + + // This array must be the size specified by mNumberOfRecords + // sRecord mRecords[1]; +}; + +// Structure to describe indication TLV 0x11 for PBM ExtendedReadRecordsIndication +struct sPBMExtendedReadRecordsIndication_AdditionalNumber +{ + UINT8 mNumberOfRecords; + + struct sRecord + { + UINT16 mRecordID; + UINT8 mAdditionalNumberCount; + + struct sAdditionalNumber1 + { + eQMIPBMNumberTypes mNumberType; + eQMIPBMNumberPlans mNumberPlan; + UINT8 mNumberLength; + + // This array must be the size specified by mNumberLength + // char mNumber[1]; + }; + + struct sAdditionalNumber2 + { + UINT8 mTagID; + }; + + struct sAdditionalNumber + { + sAdditionalNumber1 mAdditionalNumber1; + sAdditionalNumber2 mAdditionalNumber2; + }; + + // This array must be the size specified by mAdditionalNumberCount + // sAdditionalNumber mAdditionalNumbers[1]; + }; + + // This array must be the size specified by mNumberOfRecords + // sRecord mRecords[1]; +}; + +// Structure to describe indication TLV 0x12 for PBM ExtendedReadRecordsIndication +struct sPBMExtendedReadRecordsIndication_Group +{ + UINT8 mNumberOfRecords; + + struct sRecord + { + UINT16 mRecordID; + UINT8 mGroupCount; + + // This array must be the size specified by mGroupCount + // UINT8 mGroupID[1]; + }; + + // This array must be the size specified by mNumberOfRecords + // sRecord mRecords[1]; +}; + +// Structure to describe indication TLV 0x13 for PBM ExtendedReadRecordsIndication +struct sPBMExtendedReadRecordsIndication_Email +{ + UINT8 mNumberOfRecords; + + struct sRecord + { + UINT16 mRecordID; + UINT8 mEmailCount; + + struct sEmail + { + UINT8 mAddressLength; + + // This array must be the size (in BYTEs) specified by mAddressLength + // wchar_t mAddress[1]; + }; + + // This array must be the size specified by mEmailCount + // sEmail mEmails[1]; + }; + + // This array must be the size specified by mNumberOfRecords + // sRecord mRecords[1]; +}; + +// Structure to describe indication TLV 0x14 for PBM ExtendedReadRecordsIndication +struct sPBMExtendedReadRecordsIndication_Hidden +{ + UINT8 mNumberOfRecords; + + struct sRecord + { + UINT16 mRecordID; + INT8 mHidden; + }; + + // This array must be the size specified by mNumberOfRecords + // sRecord mRecords[1]; +}; + +// Structure to describe request TLV 0x01 for PBMExtendedWriteRecord() +struct sPBMExtendedWriteRecordRequest_Info +{ + eQMIPBMSessionTypes mSessionType; + eQMIPBMPhonebookTypes mPhonebookType; + UINT16 mRecordID; +}; + +// Structure to describe request TLV 0x10 for PBMExtendedWriteRecord() +struct sPBMExtendedWriteRecordRequest_PrimaryNumber +{ + eQMIPBMNumberTypes mNumberType; + eQMIPBMNumberPlans mNumberPlan; + UINT8 mNumberLength; + + // This array must be the size specified by mNumberLength + // char mNumber[1]; +}; + +// Structure to describe request TLV 0x11 for PBMExtendedWriteRecord() +struct sPBMExtendedWriteRecordRequest_PrimaryName +{ + UINT8 mNameLength; + + // This array must be the size (in BYTEs) specified by mNameLength + // wchar_t mName[1]; +}; + +// Structure to describe request TLV 0x12 for PBMExtendedWriteRecord() +struct sPBMExtendedWriteRecordRequest_SecondName +{ + UINT8 mNameLength; + + // This array must be the size (in BYTEs) specified by mNameLength + // wchar_t mName[1]; +}; + +// Structure to describe request TLV 0x13 for PBMExtendedWriteRecord() +struct sPBMExtendedWriteRecordRequest_AdditionalNumber +{ + UINT8 mAdditionalNumberCount; + + struct sAdditionalNumber1 + { + eQMIPBMNumberTypes mNumberType; + eQMIPBMNumberPlans mNumberPlan; + UINT8 mNumberLength; + + // This array must be the size specified by mNumberLength + // char mNumber[1]; + }; + + struct sAdditionalNumber2 + { + UINT8 mTagID; + }; + + struct sAdditionalNumber + { + sAdditionalNumber1 mAdditionalNumber1; + sAdditionalNumber2 mAdditionalNumber2; + }; + + // This array must be the size specified by mAdditionalNumberCount + // sAdditionalNumber mAdditionalNumbers[1]; +}; + +// Structure to describe request TLV 0x14 for PBMExtendedWriteRecord() +struct sPBMExtendedWriteRecordRequest_Group +{ + UINT8 mGroupCount; + + // This array must be the size specified by mGroupCount + // UINT8 mGroupID[1]; +}; + +// Structure to describe request TLV 0x15 for PBMExtendedWriteRecord() +struct sPBMExtendedWriteRecordRequest_Email +{ + UINT8 mEmailCount; + + struct sEmail + { + UINT8 mAddressLength; + + // This array must be the size (in BYTEs) specified by mAddressLength + // wchar_t mAddress[1]; + }; + + // This array must be the size specified by mEmailCount + // sEmail mEmails[1]; +}; + +// Structure to describe request TLV 0x16 for PBMExtendedWriteRecord() +struct sPBMExtendedWriteRecordRequest_Hidden +{ + INT8 mHidden; +}; + +// Structure to describe response TLV 0x10 for PBMExtendedWriteRecord() +struct sPBMExtendedWriteRecordResponse_Info +{ + UINT16 mRecordID; +}; + +// Structure to describe request TLV 0x01 for PBMExtendedSearchRecords() +struct sPBMExtendedSearchRecordsRequest_Info +{ + eQMIPBMSessionTypes mSessionType; + eQMIPBMPhonebookTypes mPhonebookType; +}; + +// Structure to describe request TLV 0x10 for PBMExtendedSearchRecords() +struct sPBMExtendedSearchRecordsRequest_Number +{ + UINT8 mNumberLength; + + // This array must be the size specified by mNumberLength + // char mNumber[1]; +}; + +// Structure to describe request TLV 0x11 for PBMExtendedSearchRecords() +struct sPBMExtendedSearchRecordsRequest_Name +{ + UINT8 mNameLength; + + // This array must be the size (in BYTEs) specified by mNameLength + // wchar_t mName[1]; +}; + +// Structure to describe response TLV 0x10 for PBMExtendedSearchRecords() +struct sPBMExtendedSearchRecordsResponse_List +{ + UINT16 mNumberOfRecordIDs; + + // This array must be the size specified by mNumberOfRecordIDs + // UINT16 mRecordID[1]; +}; + +// Structure to describe request TLV 0x01 for PBMExtendedReadAllHiddenRecords() +struct sPBMExtendedReadAllHiddenRecordsRequest_Info +{ + eQMIPBMSessionTypes mSessionType; +}; + +// Structure to describe response TLV 0x10 for PBMExtendedReadAllHiddenRecords() +struct sPBMExtendedReadAllHiddenRecordsResponse_Records +{ + UINT16 mNumberOfRecords; +}; + +// Structure to describe indication TLV 0x01 for PBM SIMInitializationDoneIndication +struct sPBMSIMInitializationDoneIndication_Slot +{ + UINT32 mSlotID; +}; + +// Structure to describe request TLV 0x01 for PBMReadUndecodedRecords() +struct sPBMReadUndecodedRecordsRequest_Info +{ + eQMIPBMSessionTypes mSessionType; + eQMIPBMPhonebookTypes mPhonebookType; + UINT16 mStartingRecordID; + UINT16 mEndingRecordID; +}; + +// Structure to describe response TLV 0x10 for PBMReadUndecodedRecords() +struct sPBMReadUndecodedRecordsResponse_RecordsRead +{ + UINT16 mNumberOfRecords; +}; + +// Structure to describe indication TLV 0x01 for PBM ReadUndecodedRecordsIndication +struct sPBMReadUndecodedRecordsIndication_Basic +{ + UINT16 mSequenceNumber; + eQMIPBMSessionTypes mSessionType; + eQMIPBMPhonebookTypes mPhonebookType; + UINT8 mNumberOfRecords; + + struct sRecord1 + { + UINT16 mRecordID; + eQMIPBMNumberTypes mNumberType; + eQMIPBMNumberPlans mNumberPlan; + UINT8 mNumberLength; + + // This array must be the size specified by mNumberLength + // char mNumber[1]; + }; + + struct sRecord2 + { + UINT8 mNameLength; + + // This array must be the size (in BYTEs) specified by mNameLength + // wchar_t mName[1]; + }; + + struct sRecord + { + sRecord1 mRecord1; + sRecord2 mRecord2; + }; + + // This array must be the size specified by mNumberOfRecords + // sRecord mRecords[1]; +}; + +// Structure to describe indication TLV 0x10 for PBM ReadUndecodedRecordsIndication +struct sPBMReadUndecodedRecordsIndication_SecondName +{ + UINT8 mNumberOfRecords; + + struct sRecord + { + UINT16 mRecordID; + UINT8 mSecondNameLength; + + // This array must be the size (in BYTEs) specified by mSecondNameLength + // wchar_t mSecondName[1]; + }; + + // This array must be the size specified by mNumberOfRecords + // sRecord mRecords[1]; +}; + +// Structure to describe indication TLV 0x11 for PBM ReadUndecodedRecordsIndication +struct sPBMReadUndecodedRecordsIndication_AdditionalNumber +{ + UINT8 mNumberOfRecords; + + struct sRecord + { + UINT16 mRecordID; + UINT8 mAdditionalNumberCount; + + struct sAdditionalNumber1 + { + eQMIPBMNumberTypes mNumberType; + eQMIPBMNumberPlans mNumberPlan; + UINT8 mNumberLength; + + // This array must be the size specified by mNumberLength + // char mNumber[1]; + }; + + struct sAdditionalNumber2 + { + UINT8 mTagID; + }; + + struct sAdditionalNumber + { + sAdditionalNumber1 mAdditionalNumber1; + sAdditionalNumber2 mAdditionalNumber2; + }; + + // This array must be the size specified by mAdditionalNumberCount + // sAdditionalNumber mAdditionalNumbers[1]; + }; + + // This array must be the size specified by mNumberOfRecords + // sRecord mRecords[1]; +}; + +// Structure to describe indication TLV 0x12 for PBM ReadUndecodedRecordsIndication +struct sPBMReadUndecodedRecordsIndication_Group +{ + UINT8 mNumberOfRecords; + + struct sRecord + { + UINT16 mRecordID; + UINT8 mGroupCount; + + // This array must be the size specified by mGroupCount + // UINT8 mGroupID[1]; + }; + + // This array must be the size specified by mNumberOfRecords + // sRecord mRecords[1]; +}; + +// Structure to describe indication TLV 0x13 for PBM ReadUndecodedRecordsIndication +struct sPBMReadUndecodedRecordsIndication_Email +{ + UINT8 mNumberOfRecords; + + struct sRecord + { + UINT16 mRecordID; + UINT8 mEmailCount; + + struct sEmail + { + UINT8 mAddressLength; + + // This array must be the size (in BYTEs) specified by mAddressLength + // wchar_t mAddress[1]; + }; + + // This array must be the size specified by mEmailCount + // sEmail mEmails[1]; + }; + + // This array must be the size specified by mNumberOfRecords + // sRecord mRecords[1]; +}; + +// Structure to describe indication TLV 0x14 for PBM ReadUndecodedRecordsIndication +struct sPBMReadUndecodedRecordsIndication_Hidden +{ + UINT8 mNumberOfRecords; + + struct sRecord + { + UINT16 mRecordID; + INT8 mHidden; + }; + + // This array must be the size specified by mNumberOfRecords + // sRecord mRecords[1]; +}; + +// Structure to describe request TLV 0x01 for LOCClientRevision() +struct sLOCClientRevisionRequest_Revision +{ + UINT32 mRevision; +}; + +// Structure to describe request TLV 0x01 for LOCRegisterEvents() +struct sLOCRegisterEventsRequest_EventRegistrationMask +{ + bool mPositionReport:1; + bool mGNSSSatelliteInfo:1; + bool mNMEA:1; + bool mNINotifyVerifyRequest:1; + bool mInjectTimeRequest:1; + bool mInjectPredictedOrbitsRequest:1; + bool mInjectPositionRequest:1; + bool mEngineState:1; + bool mFixSessionState:1; + bool mWiFiRequest:1; + bool mSensorStreamingReadyStatus:1; + bool mTimeSyncRequest:1; + bool mSetSPIStreamingReport:1; + bool mLocationServerConnectionRequest:1; + bool mNIGeofenceNotification:1; + bool mGeofenceGeneralAlert:1; + bool mGeofenceBreachNotification:1; + bool mPedometerControl:1; + bool mMotionDataControl:1; + + // Padding out 45 bits + UINT8 mReserved1:5; + UINT8 mReserved2[5]; +}; + +// Structure to describe request TLV 0x01 for LOCStart() +struct sLOCStartRequest_SessionID +{ + UINT8 mSessionID; +}; + +// Structure to describe request TLV 0x10 for LOCStart() +struct sLOCStartRequest_FixRecurrenceType +{ + eQMILOCFixRecurrenceType mFixRecurrenceType; +}; + +// Structure to describe request TLV 0x11 for LOCStart() +struct sLOCStartRequest_HorizontalAccuracy +{ + eQMILOCHorizontalAccuracy mHorizontalAccuracy; +}; + +// Structure to describe request TLV 0x12 for LOCStart() +struct sLOCStartRequest_EnableIntermediateReports +{ + eQMILOCIntermediateReportState mEnableIntermediateReports; +}; + +// Structure to describe request TLV 0x13 for LOCStart() +struct sLOCStartRequest_MinimumIntervalBetweenPositionReports +{ + UINT32 mMinimumTimeIntervalMilliseconds; +}; + +// Structure to describe request TLV 0x14 for LOCStart() +struct sLOCStartRequest_ApplicationID1 +{ + UINT8 mApplicationProviderLength; + + // This array must be the size specified by mApplicationProviderLength + // char mApplicationProvider[1]; +}; + +struct sLOCStartRequest_ApplicationID2 +{ + UINT8 mApplicationNameLength; + + // This array must be the size specified by mApplicationNameLength + // char mApplicationName[1]; +}; + +struct sLOCStartRequest_ApplicationID3 +{ + INT8 mApplicationVersionValid; + UINT8 mApplicationVersionLength; + + // This array must be the size specified by mApplicationVersionLength + // char mApplicationVersion[1]; +}; + +struct sLOCStartRequest_ApplicationID +{ + sLOCStartRequest_ApplicationID1 mLOCStartRequest_ApplicationID1; + sLOCStartRequest_ApplicationID2 mLOCStartRequest_ApplicationID2; + sLOCStartRequest_ApplicationID3 mLOCStartRequest_ApplicationID3; +}; + +// Structure to describe request TLV 0x01 for LOCStop() +struct sLOCStopRequest_SessionID +{ + UINT8 mSessionID; +}; + +// Structure to describe indication TLV 0x01 for LOC PositionReportIndication +struct sLOCPositionReportIndication_SessionStatus +{ + eQMILOCSessionStatus mSessionStatus; +}; + +// Structure to describe indication TLV 0x02 for LOC PositionReportIndication +struct sLOCPositionReportIndication_SessionID +{ + UINT8 mSessionID; +}; + +// Structure to describe indication TLV 0x10 for LOC PositionReportIndication +struct sLOCPositionReportIndication_Latitude +{ + double mLatitudeDegrees; +}; + +// Structure to describe indication TLV 0x11 for LOC PositionReportIndication +struct sLOCPositionReportIndication_Longitude +{ + double mLongitudeDegrees; +}; + +// Structure to describe indication TLV 0x12 for LOC PositionReportIndication +struct sLOCPositionReportIndication_HorizontalUncertaintyCircular +{ + float mHorizontalUncertaintyCircularMeters; +}; + +// Structure to describe indication TLV 0x13 for LOC PositionReportIndication +struct sLOCPositionReportIndication_HorizontalUncertaintyEllipticalMinor +{ + float mHorizontalUncertaintyEllipticalMinorMeters; +}; + +// Structure to describe indication TLV 0x14 for LOC PositionReportIndication +struct sLOCPositionReportIndication_HorizontalUncertaintyEllipticalMajor +{ + float mHorizontalUncertaintyEllipticalMajorMeters; +}; + +// Structure to describe indication TLV 0x15 for LOC PositionReportIndication +struct sLOCPositionReportIndication_HorizontalUncertaintyEllipticalAzimuth +{ + float mHorizontalUncertaintyEllipticalAzimuthDecimalDegrees; +}; + +// Structure to describe indication TLV 0x16 for LOC PositionReportIndication +struct sLOCPositionReportIndication_HorizontalConfidence +{ + UINT8 mHorizontalConfidencePercent; +}; + +// Structure to describe indication TLV 0x17 for LOC PositionReportIndication +struct sLOCPositionReportIndication_HorizontalReliability +{ + eQMILOCReliability mHorizontalReliability; +}; + +// Structure to describe indication TLV 0x18 for LOC PositionReportIndication +struct sLOCPositionReportIndication_HorizontalSpeed +{ + float mHorizontalSpeedMetersSecond; +}; + +// Structure to describe indication TLV 0x19 for LOC PositionReportIndication +struct sLOCPositionReportIndication_SpeedUncertainty +{ + float mSpeedUncertaintyMetersSecond; +}; + +// Structure to describe indication TLV 0x1A for LOC PositionReportIndication +struct sLOCPositionReportIndication_AltitudeFromEllipsoid +{ + float mAltitudeFromEllipsoidMeters; +}; + +// Structure to describe indication TLV 0x1B for LOC PositionReportIndication +struct sLOCPositionReportIndication_AltitudeFromSeaLevel +{ + float mAltitudeFromSeaLevelMeters; +}; + +// Structure to describe indication TLV 0x1C for LOC PositionReportIndication +struct sLOCPositionReportIndication_VerticalUncertainty +{ + float mVerticalUncertaintyMeters; +}; + +// Structure to describe indication TLV 0x1D for LOC PositionReportIndication +struct sLOCPositionReportIndication_VerticalConfidence +{ + UINT8 mVerticalConfidencePercent; +}; + +// Structure to describe indication TLV 0x1E for LOC PositionReportIndication +struct sLOCPositionReportIndication_VerticalReliability +{ + eQMILOCReliability mVerticalReliability; +}; + +// Structure to describe indication TLV 0x1F for LOC PositionReportIndication +struct sLOCPositionReportIndication_VerticalSpeed +{ + float mVerticalSpeedMetersSecond; +}; + +// Structure to describe indication TLV 0x20 for LOC PositionReportIndication +struct sLOCPositionReportIndication_Heading +{ + float mHeadingDegrees; +}; + +// Structure to describe indication TLV 0x21 for LOC PositionReportIndication +struct sLOCPositionReportIndication_HeadingUncertainty +{ + float mHeadingUncertaintyDegrees; +}; + +// Structure to describe indication TLV 0x22 for LOC PositionReportIndication +struct sLOCPositionReportIndication_MagneticDeviation +{ + float mMagneticDeviation; +}; + +// Structure to describe indication TLV 0x23 for LOC PositionReportIndication +struct sLOCPositionReportIndication_TechnologyUsed +{ + bool mSatellite:1; + bool mCellular:1; + bool mWiFi:1; + bool mSensors:1; + bool mReferenceLocation:1; + bool mInjectedPosition:1; + bool mAFLT:1; + bool mHybrid:1; + + // Padding out 24 bits + UINT8 mReserved1[3]; +}; + +// Structure to describe indication TLV 0x24 for LOC PositionReportIndication +struct sLOCPositionReportIndication_DilutionOfPrecision +{ + float mPositionDilutionOfPrecision; + float mHorizontalDilutionOfPrecision; + float mVerticalDilutionOfPrecision; +}; + +// Structure to describe indication TLV 0x25 for LOC PositionReportIndication +struct sLOCPositionReportIndication_UTCTimestamp +{ + UINT64 mUTCTimestampMilliseconds; +}; + +// Structure to describe indication TLV 0x26 for LOC PositionReportIndication +struct sLOCPositionReportIndication_LeapSeconds +{ + UINT8 mLeapSeconds; +}; + +// Structure to describe indication TLV 0x27 for LOC PositionReportIndication +struct sLOCPositionReportIndication_GPSTime +{ + UINT16 mGPSWeeks; + UINT32 mGPSTimeOfWeekMilliseconds; +}; + +// Structure to describe indication TLV 0x28 for LOC PositionReportIndication +struct sLOCPositionReportIndication_TimeUncertainty +{ + float mTimeUncertaintyMilliseconds; +}; + +// Structure to describe indication TLV 0x29 for LOC PositionReportIndication +struct sLOCPositionReportIndication_TimeSource +{ + eQMILOCTimeSource mTimeSource; +}; + +// Structure to describe indication TLV 0x2A for LOC PositionReportIndication +struct sLOCPositionReportIndication_SensorDataUsage +{ + bool mAccelerometerUsed:1; + bool mGyroUsed:1; + + // Padding out 30 bits + UINT8 mReserved1:6; + UINT8 mReserved2[3]; + + bool mAidedHeading:1; + bool mAidedSpeed:1; + bool mAidedPosition:1; + bool mAidedVelocity:1; + + // Padding out 28 bits + UINT8 mReserved3:4; + UINT8 mReserved4[3]; +}; + +// Structure to describe indication TLV 0x2B for LOC PositionReportIndication +struct sLOCPositionReportIndication_SessionFixCount +{ + UINT32 mSessionFixCount; +}; + +// Structure to describe indication TLV 0x2C for LOC PositionReportIndication +struct sLOCPositionReportIndication_SatellitesUsed +{ + UINT8 mSatellitesUsedCount; + + // This array must be the size specified by mSatellitesUsedCount + // UINT16 mSatellitesUsed[1]; +}; + +// Structure to describe indication TLV 0x2D for LOC PositionReportIndication +struct sLOCPositionReportIndication_AltitudeAssumed +{ + INT8 mAltitudeAssumed; +}; + +// Structure to describe indication TLV 0x01 for LOC GNSSSatelliteInfoIndication +struct sLOCGNSSSatelliteInfoIndication_AltitudeSource +{ + eQMILOCAltitudeAssumed mAltitudeAssumed; +}; + +// Structure to describe indication TLV 0x10 for LOC GNSSSatelliteInfoIndication +struct sLOCGNSSSatelliteInfoIndication_SatelliteInfo +{ + UINT8 mSatelliteInfoCount; + bool mValidSystem:1; + bool mValidGNSSSatelliteID:1; + bool mValidHealthStatus:1; + bool mValidProcessStatus:1; + bool mValidSatelliteInfoMask:1; + bool mValidElevation:1; + bool mValidAzimuth:1; + bool mValidSignalToNoiseRatio:1; + + // Padding out 24 bits + UINT8 mReserved1[3]; + + eQMILOCSystem mSystem; + UINT16 mGNSSSatelliteID; + eQMILOCHealthStatus mHealthStatus; + eQMILOCSatelliteStatus mSatelliteStatus; + bool mHasEphemeris:1; + bool mHasAlmanac:1; + + // Padding out 6 bits + UINT8 mReserved2:6; + + float mElevationDegrees; + float mAzimuthDegrees; + float mSignalToNoiseRatiodBHz; +}; + +// Structure to describe indication TLV 0x01 for LOC NMEAIndication +struct sLOCNMEAIndication_NMEAString +{ + // String is variable length, but must be size of the container + // char mNMEAString[1]; +}; + +// Structure to describe request TLV 0x01 for LOCNetworkInitiated() +struct sLOCNetworkInitiatedRequestIndication_NotificationType +{ + eQMILOCNotificationType mNotificationType; +}; + +// Structure to describe request TLV 0x10 for LOCNetworkInitiated() +struct sLOCNetworkInitiatedRequestIndication_VxRequest1 +{ + INT8 mPositionQoSIncluded; + UINT8 mPositionQoSTimeoutSeconds; + UINT32 mMaxNumberOfFixes; + UINT32 mTimeBetweenFixesSeconds; + eQMILOCPositionMode mPosistionMode; + eQMILOCEncodingScheme mEncodingScheme; + UINT8 mRequestorIDLength; + + // This array must be the size specified by mRequestorIDLength + // UINT8 mRequestorID[1]; +}; + +struct sLOCNetworkInitiatedRequestIndication_VxRequest2 +{ + UINT16 mUserResponseTimerSeconds; +}; + +struct sLOCNetworkInitiatedRequestIndication_VxRequest +{ + sLOCNetworkInitiatedRequestIndication_VxRequest1 mLOCNetworkInitiatedRequestIndication_VxRequest1; + sLOCNetworkInitiatedRequestIndication_VxRequest2 mLOCNetworkInitiatedRequestIndication_VxRequest2; +}; + +// Structure to describe request TLV 0x11 for LOCNetworkInitiated() +struct sLOCNetworkInitiatedRequestIndication_SUPLRequest1 +{ + bool mValidServerInfo:1; + bool mValidSessionID:1; + bool mValidHash:1; + bool mValidPositionMethod:1; + bool mValidDataCodingScheme:1; + bool mValidRequestorID:1; + bool mValidClientName:1; + bool mValidQualityOfPosition:1; + bool mValidUserResponseTimer:1; + + // Padding out 23 bits + UINT8 mReserved1:7; + UINT8 mReserved2[2]; + + bool mIPv4:1; + bool mIPv6:1; + bool mURL:1; + + // Padding out 5 bits + UINT8 mReserved3:5; + + UINT32 mIPv4Address; + UINT16 mIPv4Port; + UINT8 mIPv6Address[16]; + UINT32 mIPv6Port; + UINT8 mURLAddressLength; + + // This array must be the size specified by mURLAddressLength + // char mURLAddress[1]; +}; + +struct sLOCNetworkInitiatedRequestIndication_SUPLRequest2 +{ + UINT8 mSUPLSessionID[4]; + UINT8 mSUPLHash[8]; + eQMILOCPosition mPositionMethod; + eQMILOCDataCodingScheme mDataCodingScheme; + eQMILOCFormatType mRequestorIDFormatType; + UINT8 mRequestorIDFormattedStringLength; + + // This array must be the size specified by mRequestorIDFormattedStringLength + // UINT8 mRequestorIDFormattedString[1]; +}; + +struct sLOCNetworkInitiatedRequestIndication_SUPLRequest3 +{ + eQMILOCFormatType mClientNameFormatType; + UINT8 mClientNameFormattedStringLength; + + // This array must be the size specified by mClientNameFormattedStringLength + // UINT8 mClientNameFormattedString[1]; +}; + +struct sLOCNetworkInitiatedRequestIndication_SUPLRequest4 +{ + bool mQoPHorizontalAccelerationValid:1; + bool mQoPVerticalAccelerationValid:1; + bool mQoPMaximumAge:1; + bool mQoPDelayValid:1; + + // Padding out 4 bits + UINT8 mReserved4:4; + + UINT8 mHorizontalAccuracyMeters; + UINT8 mVerticalAccuracyMeters; + UINT16 mMaximumLocationAgeSeconds; + UINT8 mDelaySeconds; + UINT16 mUserResponseTimerSeconds; +}; + +struct sLOCNetworkInitiatedRequestIndication_SUPLRequest +{ + sLOCNetworkInitiatedRequestIndication_SUPLRequest1 mLOCNetworkInitiatedRequestIndication_SUPLRequest1; + sLOCNetworkInitiatedRequestIndication_SUPLRequest2 mLOCNetworkInitiatedRequestIndication_SUPLRequest2; + sLOCNetworkInitiatedRequestIndication_SUPLRequest3 mLOCNetworkInitiatedRequestIndication_SUPLRequest3; + sLOCNetworkInitiatedRequestIndication_SUPLRequest4 mLOCNetworkInitiatedRequestIndication_SUPLRequest4; +}; + +// Structure to describe request TLV 0x12 for LOCNetworkInitiated() +struct sLOCNetworkInitiatedRequestIndication_UMTSControlPlaneRequest1 +{ + bool mValidInvokeID:1; + bool mValidDataCodingScheme:1; + bool mValidNotificationText:1; + bool mValidClientAddress:1; + bool mValidLocationType:1; + bool mValidRequestorID:1; + bool mValidCodewordString:1; + bool mValidServiceTypeMask:1; + bool mValidUserResponseTImer:1; + + // Padding out 7 bits + UINT8 mReserved1:7; + + UINT8 mInvokeID; + eQMILOCDataCodingScheme mDataCodingScheme; + UINT8 mNotificationTextLength; + + // This array must be the size specified by mNotificationTextLength + // UINT8 mNotificationText[1]; +}; + +struct sLOCNetworkInitiatedRequestIndication_UMTSControlPlaneRequest2 +{ + UINT8 mClientAddressLength; + + // This array must be the size specified by mClientAddressLength + // UINT8 mClientAddress[1]; +}; + +struct sLOCNetworkInitiatedRequestIndication_UMTSControlPlaneRequest3 +{ + eQMILOCLocationType mLocationType; + eQMILOCDataCodingScheme mRequestorIDDataCodingScheme; + UINT8 mRequestorIDCodedStingLength; + + // This array must be the size specified by mRequestorIDCodedStingLength + // UINT8 mRequestorIDCodedString[1]; +}; + +struct sLOCNetworkInitiatedRequestIndication_UMTSControlPlaneRequest4 +{ + eQMILOCDataCodingScheme mCodewordStringDataCodingScheme; + UINT8 mCodewordStringCodedStringLength; + + // This array must be the size specified by mCodewordStringCodedStringLength + // UINT8 mCodewordStringCodedString[1]; +}; + +struct sLOCNetworkInitiatedRequestIndication_UMTSControlPlaneRequest5 +{ + UINT8 mServiceTypeID; + UINT16 mUserResponseTimerSeconds; +}; + +struct sLOCNetworkInitiatedRequestIndication_UMTSControlPlaneRequest +{ + sLOCNetworkInitiatedRequestIndication_UMTSControlPlaneRequest1 mLOCNetworkInitiatedRequestIndication_UMTSControlPlaneRequest1; + sLOCNetworkInitiatedRequestIndication_UMTSControlPlaneRequest2 mLOCNetworkInitiatedRequestIndication_UMTSControlPlaneRequest2; + sLOCNetworkInitiatedRequestIndication_UMTSControlPlaneRequest3 mLOCNetworkInitiatedRequestIndication_UMTSControlPlaneRequest3; + sLOCNetworkInitiatedRequestIndication_UMTSControlPlaneRequest4 mLOCNetworkInitiatedRequestIndication_UMTSControlPlaneRequest4; + sLOCNetworkInitiatedRequestIndication_UMTSControlPlaneRequest5 mLOCNetworkInitiatedRequestIndication_UMTSControlPlaneRequest5; +}; + +// Structure to describe request TLV 0x13 for LOCNetworkInitiated() +struct sLOCNetworkInitiatedRequestIndication_ServiceInteractionRequest +{ + INT8 mPositionQoSIncluded; + UINT8 mPositionQoSTimeoutSeconds; + UINT32 mMaxNumberOfFixes; + UINT32 mTimeBetweenFixesSeconds; + eQMILOCPositionMode mPosistionMode; + eQMILOCEncodingScheme mEncodingScheme; + UINT8 mRequestorIDLength; + UINT8 mRequestorID; + UINT16 mUserResponseTimerSeconds; + eQMILOCServiceInteractionType mServiceInteractionType; +}; + +// Structure to describe request TLV 0x14 for LOCNetworkInitiated() +struct sLOCNetworkInitiatedRequestIndication_SUPLVersion2Extension +{ + bool mWLAN:1; + bool mGSM:1; + bool mWCDMA:1; + bool mCDMA:1; + bool mHRDP:1; + bool mUMB:1; + bool mLTE:1; + bool mWIMAX:1; + bool mHISTORIC:1; + bool mNONSVRV:1; + + // Padding out 6 bits + UINT8 mReserved1:6; + + eQMILOCTriggerType mTriggerType; + bool mGPS:1; + bool mGLONASS:1; + bool mGALILEO:1; + bool mSBAS:1; + bool mQZSS:1; + bool mMODERNGPS:1; + + // Padding out 10 bits + UINT8 mReserved2:2; + UINT8 mReserved3; +}; + +// Structure to describe request TLV 0x15 for LOCNetworkInitiated() +struct sLOCNetworkInitiatedRequestIndication_SUPLEmergencyNotification +{ + UINT8 mESULPURLLength; + + // This array must be the size specified by mESULPURLLength + // char mESULPURL[1]; +}; + +// Structure to describe indication TLV 0x10 for LOC InjectTimeIndication +struct sLOCInjectTimeIndication_TimeServerInfo +{ + UINT32 mDelayThresholdMilliseconds; + UINT8 mServerListLength; + + struct sServer + { + UINT8 mServerURLLength; + + // This array must be the size specified by mServerURLLength + // char mServerURL[1]; + }; + + // This array must be the size specified by mServerListLength + // sServer mServers[1]; +}; + +// Structure to describe indication TLV 0x01 for LOC InjectPredictedOrbitsIndication +struct sLOCInjectPredictedOrbitsIndication_AllowedSize +{ + UINT32 mMaximumFileSizeBytes; + UINT32 mMaximumPartSizeBytes; +}; + +// Structure to describe indication TLV 0x10 for LOC InjectPredictedOrbitsIndication +struct sLOCInjectPredictedOrbitsIndication_ServerList +{ + UINT8 mServerListLength; + + struct sServer + { + UINT8 mServerURLLength; + + // This array must be the size specified by mServerURLLength + // char mServerURL[1]; + }; + + // This array must be the size specified by mServerListLength + // sServer mServers[1]; +}; + +// Structure to describe indication TLV 0x01 for LOC InjectPositionIndication +struct sLOCInjectPositionIndication_Latitude +{ + double mLatitudeDegrees; +}; + +// Structure to describe indication TLV 0x02 for LOC InjectPositionIndication +struct sLOCInjectPositionIndication_Longitude +{ + double mLongitudeDegrees; +}; + +// Structure to describe indication TLV 0x03 for LOC InjectPositionIndication +struct sLOCInjectPositionIndication_HorizontalUncertaintyCircular +{ + float mHorizontalUncertaintyCircularMeters; +}; + +// Structure to describe indication TLV 0x04 for LOC InjectPositionIndication +struct sLOCInjectPositionIndication_UTCTimestamp +{ + UINT64 mUTCTimestampMilliseconds; +}; + +// Structure to describe indication TLV 0x01 for LOC EngineStateIndication +struct sLOCEngineStateIndication_EngineState +{ + eQMILOCEngineState mEngineState; +}; + +// Structure to describe indication TLV 0x01 for LOC FixSessionStateIndication +struct sLOCFixSessionStateIndication_SessionState +{ + eQMILOCSessionState mSessionState; +}; + +// Structure to describe indication TLV 0x10 for LOC FixSessionStateIndication +struct sLOCFixSessionStateIndication_SessionID +{ + UINT8 mSessionID; +}; + +// Structure to describe request TLV 0x01 for LOCWiFi() +struct sLOCWiFiRequestIndication_RequestType +{ + eQMILOCRequestType mRequestType; +}; + +// Structure to describe request TLV 0x10 for LOCWiFi() +struct sLOCWiFiRequestIndication_TimeBetweenFixes +{ + UINT16 mTimeBetweenFixesMilliseconds; +}; + +// Structure to describe indication TLV 0x10 for LOC SensorStreamingReadyStatusIndication +struct sLOCSensorStreamingReadyStatusIndication_AccelerometerReady +{ + INT8 mReadyForInjection; + UINT16 mSamplesPerBatch; + UINT16 mBatchesPerSecond; +}; + +// Structure to describe indication TLV 0x11 for LOC SensorStreamingReadyStatusIndication +struct sLOCSensorStreamingReadyStatusIndication_GyrometerReady +{ + INT8 mReadyForInjection; + UINT16 mSamplesPerBatch; + UINT16 mBatchesPerSecond; +}; + +// Structure to describe indication TLV 0x12 for LOC SensorStreamingReadyStatusIndication +struct sLOCSensorStreamingReadyStatusIndication_AccelerometerTempReady +{ + INT8 mReadyForInjection; + UINT16 mSamplesPerBatch; + UINT16 mBatchesPerSecond; +}; + +// Structure to describe indication TLV 0x13 for LOC SensorStreamingReadyStatusIndication +struct sLOCSensorStreamingReadyStatusIndication_GyrometerTempReady +{ + INT8 mReadyForInjection; + UINT16 mSamplesPerBatch; + UINT16 mBatchesPerSecond; +}; + +// Structure to describe request TLV 0x01 for LOCTimeSync() +struct sLOCTimeSyncRequestIndication_ReferenceCounter +{ + UINT32 mReferenceCounter; +}; + +// Structure to describe indication TLV 0x01 for LOC SetSPIStreamingReportIndication +struct sLOCSetSPIStreamingReportIndication_SPIRequests +{ + INT8 mEnableSPIRequests; +}; + +// Structure to describe request TLV 0x01 for LOCLocationServerConnection() +struct sLOCLocationServerConnectionRequestIndication_ConnectionHandle +{ + UINT32 mConnectionHandle; +}; + +// Structure to describe request TLV 0x02 for LOCLocationServerConnection() +struct sLOCLocationServerConnectionRequestIndication_ConnectionRequestType +{ + eQMILOCConnectionRequestType mConnectionRequestType; +}; + +// Structure to describe request TLV 0x03 for LOCLocationServerConnection() +struct sLOCLocationServerConnectionRequestIndication_WWANType +{ + eQMILOCWWANType mWWANType; +}; + +// Structure to describe indication TLV 0x02 for LOC GetServiceRevisionIndication +struct sLOCGetServiceRevisionIndication_MinorRevision +{ + UINT32 mRevision; +}; + +// Structure to describe indication TLV 0x10 for LOC GetServiceRevisionIndication +struct sLOCGetServiceRevisionIndication_GNSSMeasurementEngineFirmwareVersion +{ + // String is variable length, but must be size of the container + // char mFirmwareVersion[1]; +}; + +// Structure to describe indication TLV 0x11 for LOC GetServiceRevisionIndication +struct sLOCGetServiceRevisionIndication_GNSSHostedSoftwareVersion +{ + // String is variable length, but must be size of the container + // char mSoftwareVersion[1]; +}; + +// Structure to describe indication TLV 0x12 for LOC GetServiceRevisionIndication +struct sLOCGetServiceRevisionIndication_GNSSSoftwareVersion +{ + // String is variable length, but must be size of the container + // char mSoftwareVersion[1]; +}; + +// Structure to describe indication TLV 0x10 for LOC GetFixCriteriaIndication +struct sLOCGetFixCriteriaIndication_HorizontalAccuracy +{ + eQMILOCHorizontalAccuracy mHorizontalAccuracy; +}; + +// Structure to describe indication TLV 0x11 for LOC GetFixCriteriaIndication +struct sLOCGetFixCriteriaIndication_IntermediateFixes +{ + eQMILOCIntermediateReportState mEnableIntermediateReports; +}; + +// Structure to describe indication TLV 0x12 for LOC GetFixCriteriaIndication +struct sLOCGetFixCriteriaIndication_MinimumIntervalBetweenFixes +{ + UINT32 mMinimumTimeIntervalMilliseconds; +}; + +// Structure to describe indication TLV 0x13 for LOC GetFixCriteriaIndication +struct sLOCGetFixCriteriaIndication_ApplicationID1 +{ + UINT8 mApplicationProviderLength; + + // This array must be the size specified by mApplicationProviderLength + // char mApplicationProvider[1]; +}; + +struct sLOCGetFixCriteriaIndication_ApplicationID2 +{ + UINT8 mApplicationNameLength; + + // This array must be the size specified by mApplicationNameLength + // char mApplicationName[1]; +}; + +struct sLOCGetFixCriteriaIndication_ApplicationID3 +{ + INT8 mApplicationVersionValid; + UINT8 mApplicationVersionLength; + + // This array must be the size specified by mApplicationVersionLength + // char mApplicationVersion[1]; +}; + +struct sLOCGetFixCriteriaIndication_ApplicationID +{ + sLOCGetFixCriteriaIndication_ApplicationID1 mLOCGetFixCriteriaIndication_ApplicationID1; + sLOCGetFixCriteriaIndication_ApplicationID2 mLOCGetFixCriteriaIndication_ApplicationID2; + sLOCGetFixCriteriaIndication_ApplicationID3 mLOCGetFixCriteriaIndication_ApplicationID3; +}; + +// Structure to describe request TLV 0x01 for LOCProvideNIUserResponse() +struct sLOCProvideNIUserResponseRequest_UserResponse +{ + eQMILOCUserResponse mUserResponse; +}; + +// Structure to describe request TLV 0x02 for LOCProvideNIUserResponse() +struct sLOCProvideNIUserResponseRequest_NotificationType +{ + eQMILOCNotificationType mNotificationType; +}; + +// Structure to describe request TLV 0x10 for LOCProvideNIUserResponse() +struct sLOCProvideNIUserResponseRequest_VxRequest1 +{ + INT8 mPositionQoSIncluded; + UINT8 mPositionQoSTimeoutSeconds; + UINT32 mMaxNumberOfFixes; + UINT32 mTimeBetweenFixesSeconds; + eQMILOCPositionMode mPosistionMode; + eQMILOCEncodingScheme mEncodingScheme; + UINT8 mRequestorIDLength; + + // This array must be the size specified by mRequestorIDLength + // UINT8 mRequestorID[1]; +}; + +struct sLOCProvideNIUserResponseRequest_VxRequest2 +{ + UINT16 mUserResponseTimerSeconds; +}; + +struct sLOCProvideNIUserResponseRequest_VxRequest +{ + sLOCProvideNIUserResponseRequest_VxRequest1 mLOCProvideNIUserResponseRequest_VxRequest1; + sLOCProvideNIUserResponseRequest_VxRequest2 mLOCProvideNIUserResponseRequest_VxRequest2; +}; + +// Structure to describe request TLV 0x11 for LOCProvideNIUserResponse() +struct sLOCProvideNIUserResponseRequest_SUPLRequest1 +{ + bool mValidServerInfo:1; + bool mValidSessionID:1; + bool mValidHash:1; + bool mValidPositionMethod:1; + bool mValidDataCodingScheme:1; + bool mValidRequestorID:1; + bool mValidClientName:1; + bool mValidQualityOfPosition:1; + bool mValidUserResponseTimer:1; + + // Padding out 23 bits + UINT8 mReserved1:7; + UINT8 mReserved2[2]; + + bool mIPv4:1; + bool mIPv6:1; + bool mURL:1; + + // Padding out 5 bits + UINT8 mReserved3:5; + + UINT32 mIPv4Address; + UINT16 mIPv4Port; + UINT8 mIPv6Address[16]; + UINT32 mIPv6Port; + UINT8 mURLAddressLength; + + // This array must be the size specified by mURLAddressLength + // char mURLAddress[1]; +}; + +struct sLOCProvideNIUserResponseRequest_SUPLRequest2 +{ + UINT8 mSUPLSessionID[4]; + UINT8 mSUPLHash[8]; + eQMILOCPosition mPositionMethod; + eQMILOCDataCodingScheme mDataCodingScheme; + eQMILOCFormatType mRequestorIDFormatType; + UINT8 mRequestorIDFormattedStringLength; + + // This array must be the size specified by mRequestorIDFormattedStringLength + // UINT8 mRequestorIDFormattedString[1]; +}; + +struct sLOCProvideNIUserResponseRequest_SUPLRequest3 +{ + eQMILOCFormatType mClientNameFormatType; + UINT8 mClientNameFormattedStringLength; + + // This array must be the size specified by mClientNameFormattedStringLength + // UINT8 mClientNameFormattedString[1]; +}; + +struct sLOCProvideNIUserResponseRequest_SUPLRequest4 +{ + bool mQoPHorizontalAccelerationValid:1; + bool mQoPVerticalAccelerationValid:1; + bool mQoPMaximumAge:1; + bool mQoPDelayValid:1; + + // Padding out 4 bits + UINT8 mReserved4:4; + + UINT8 mHorizontalAccuracyMeters; + UINT8 mVerticalAccuracyMeters; + UINT16 mMaximumLocationAgeSeconds; + UINT8 mDelaySeconds; + UINT16 mUserResponseTimerSeconds; +}; + +struct sLOCProvideNIUserResponseRequest_SUPLRequest +{ + sLOCProvideNIUserResponseRequest_SUPLRequest1 mLOCProvideNIUserResponseRequest_SUPLRequest1; + sLOCProvideNIUserResponseRequest_SUPLRequest2 mLOCProvideNIUserResponseRequest_SUPLRequest2; + sLOCProvideNIUserResponseRequest_SUPLRequest3 mLOCProvideNIUserResponseRequest_SUPLRequest3; + sLOCProvideNIUserResponseRequest_SUPLRequest4 mLOCProvideNIUserResponseRequest_SUPLRequest4; +}; + +// Structure to describe request TLV 0x12 for LOCProvideNIUserResponse() +struct sLOCProvideNIUserResponseRequest_UMTSControlPlaneRequest1 +{ + bool mValidInvokeID:1; + bool mValidDataCodingScheme:1; + bool mValidNotificationText:1; + bool mValidClientAddress:1; + bool mValidLocationType:1; + bool mValidRequestorID:1; + bool mValidCodewordString:1; + bool mValidServiceTypeMask:1; + bool mValidUserResponseTImer:1; + + // Padding out 7 bits + UINT8 mReserved1:7; + + UINT8 mInvokeID; + eQMILOCDataCodingScheme mDataCodingScheme; + UINT8 mNotificationTextLength; + + // This array must be the size specified by mNotificationTextLength + // UINT8 mNotificationText[1]; +}; + +struct sLOCProvideNIUserResponseRequest_UMTSControlPlaneRequest2 +{ + UINT8 mClientAddressLength; + + // This array must be the size specified by mClientAddressLength + // UINT8 mClientAddress[1]; +}; + +struct sLOCProvideNIUserResponseRequest_UMTSControlPlaneRequest3 +{ + eQMILOCLocationType mLocationType; + eQMILOCDataCodingScheme mRequestorIDDataCodingScheme; + UINT8 mRequestorIDCodedStingLength; + + // This array must be the size specified by mRequestorIDCodedStingLength + // UINT8 mRequestorIDCodedString[1]; +}; + +struct sLOCProvideNIUserResponseRequest_UMTSControlPlaneRequest4 +{ + eQMILOCDataCodingScheme mCodewordStringDataCodingScheme; + UINT8 mCodewordStringCodedStringLength; + + // This array must be the size specified by mCodewordStringCodedStringLength + // UINT8 mCodewordStringCodedString[1]; +}; + +struct sLOCProvideNIUserResponseRequest_UMTSControlPlaneRequest5 +{ + UINT8 mServiceTypeID; + UINT16 mUserResponseTimerSeconds; +}; + +struct sLOCProvideNIUserResponseRequest_UMTSControlPlaneRequest +{ + sLOCProvideNIUserResponseRequest_UMTSControlPlaneRequest1 mLOCProvideNIUserResponseRequest_UMTSControlPlaneRequest1; + sLOCProvideNIUserResponseRequest_UMTSControlPlaneRequest2 mLOCProvideNIUserResponseRequest_UMTSControlPlaneRequest2; + sLOCProvideNIUserResponseRequest_UMTSControlPlaneRequest3 mLOCProvideNIUserResponseRequest_UMTSControlPlaneRequest3; + sLOCProvideNIUserResponseRequest_UMTSControlPlaneRequest4 mLOCProvideNIUserResponseRequest_UMTSControlPlaneRequest4; + sLOCProvideNIUserResponseRequest_UMTSControlPlaneRequest5 mLOCProvideNIUserResponseRequest_UMTSControlPlaneRequest5; +}; + +// Structure to describe request TLV 0x13 for LOCProvideNIUserResponse() +struct sLOCProvideNIUserResponseRequest_ServiceInteractionRequest +{ + INT8 mPositionQoSIncluded; + UINT8 mPositionQoSTimeoutSeconds; + UINT32 mMaxNumberOfFixes; + UINT32 mTimeBetweenFixesSeconds; + eQMILOCPositionMode mPosistionMode; + eQMILOCEncodingScheme mEncodingScheme; + UINT8 mRequestorIDLength; + UINT8 mRequestorID; + UINT16 mUserResponseTimerSeconds; + eQMILOCServiceInteractionType mServiceInteractionType; +}; + +// Structure to describe request TLV 0x14 for LOCProvideNIUserResponse() +struct sLOCProvideNIUserResponseRequest_SUPLVersion2Extension +{ + bool mWLAN:1; + bool mGSM:1; + bool mWCDMA:1; + bool mCDMA:1; + bool mHRDP:1; + bool mUMB:1; + bool mLTE:1; + bool mWIMAX:1; + bool mHISTORIC:1; + bool mNONSVRV:1; + + // Padding out 6 bits + UINT8 mReserved1:6; + + eQMILOCTriggerType mTriggerType; + bool mGPS:1; + bool mGLONASS:1; + bool mGALILEO:1; + bool mSBAS:1; + bool mQZSS:1; + bool mMODERNGPS:1; + + // Padding out 10 bits + UINT8 mReserved2:2; + UINT8 mReserved3; +}; + +// Structure to describe request TLV 0x15 for LOCProvideNIUserResponse() +struct sLOCProvideNIUserResponseRequest_SUPLEmergencyNotification +{ + UINT8 mESULPURLLength; + + // This array must be the size specified by mESULPURLLength + // char mESULPURL[1]; +}; + +// Structure to describe request TLV 0x01 for LOCInjectPredictedOrbitsData() +struct sLOCInjectPredictedOrbitsDataRequest_TotalSize +{ + UINT32 mTotalSize; +}; + +// Structure to describe request TLV 0x02 for LOCInjectPredictedOrbitsData() +struct sLOCInjectPredictedOrbitsDataRequest_TotalParts +{ + UINT16 mTotalParts; +}; + +// Structure to describe request TLV 0x03 for LOCInjectPredictedOrbitsData() +struct sLOCInjectPredictedOrbitsDataRequest_PartNumber +{ + UINT16 mPartNumber; +}; + +// Structure to describe request TLV 0x04 for LOCInjectPredictedOrbitsData() +struct sLOCInjectPredictedOrbitsDataRequest_PartData +{ + UINT16 mPartDataLength; + + // This array must be the size specified by mPartDataLength + // UINT8 mPartData[1]; +}; + +// Structure to describe request TLV 0x10 for LOCInjectPredictedOrbitsData() +struct sLOCInjectPredictedOrbitsDataRequest_FormatType +{ + eQMILOCOrbitsFormatType mOrbitsFormatType; +}; + +// Structure to describe indication TLV 0x10 for LOC InjectPredictedOrbitsDataIndication +struct sLOCInjectPredictedOrbitsDataIndication_PartNumber +{ + UINT16 mPartNumber; +}; + +// Structure to describe indication TLV 0x10 for LOC GetPredictedOrbitsDataSourceIndication +struct sLOCGetPredictedOrbitsDataSourceIndication_AllowedSizes +{ + UINT32 mMaximumFileSizeBytes; + UINT32 mMaximumPartSizeBytes; +}; + +// Structure to describe indication TLV 0x11 for LOC GetPredictedOrbitsDataSourceIndication +struct sLOCGetPredictedOrbitsDataSourceIndication_ServerList +{ + UINT8 mServerListLength; + + struct sServer + { + UINT8 mServerURLLength; + + // This array must be the size specified by mServerURLLength + // char mServerURL[1]; + }; + + // This array must be the size specified by mServerListLength + // sServer mServers[1]; +}; + +// Structure to describe indication TLV 0x10 for LOC GetPredictedOrbitsDataValidityIndication +struct sLOCGetPredictedOrbitsDataValidityIndication_ValidityInfo +{ + UINT64 mStartTimeInUTC; + UINT16 mDurationHours; +}; + +// Structure to describe request TLV 0x01 for LOCInjectUTCTime() +struct sLOCInjectUTCTimeRequest_UTCTime +{ + UINT64 mUTCTimestampMilliseconds; +}; + +// Structure to describe request TLV 0x02 for LOCInjectUTCTime() +struct sLOCInjectUTCTimeRequest_TimeUncertainty +{ + float mTimeUncertaintyMilliseconds; +}; + +// Structure to describe request TLV 0x10 for LOCInjectPosition() +struct sLOCInjectPositionRequest_Latitude +{ + double mLatitudeDegrees; +}; + +// Structure to describe request TLV 0x11 for LOCInjectPosition() +struct sLOCInjectPositionRequest_Longitude +{ + double mLongitudeDegrees; +}; + +// Structure to describe request TLV 0x12 for LOCInjectPosition() +struct sLOCInjectPositionRequest_HorizontalUncertaintyCircular +{ + float mHorizontalUncertaintyCircularMeters; +}; + +// Structure to describe request TLV 0x13 for LOCInjectPosition() +struct sLOCInjectPositionRequest_HorizontalConfidence +{ + UINT8 mHorizontalConfidencePercent; +}; + +// Structure to describe request TLV 0x14 for LOCInjectPosition() +struct sLOCInjectPositionRequest_HorizontalReliability +{ + eQMILOCReliability mHorizontalReliability; +}; + +// Structure to describe request TLV 0x15 for LOCInjectPosition() +struct sLOCInjectPositionRequest_AltitudeFromEllipsoid +{ + float mAltitudeFromEllipsoidMeters; +}; + +// Structure to describe request TLV 0x16 for LOCInjectPosition() +struct sLOCInjectPositionRequest_AltitudeFromSeaLevel +{ + float mAltitudeFromSeaLevelMeters; +}; + +// Structure to describe request TLV 0x17 for LOCInjectPosition() +struct sLOCInjectPositionRequest_VerticalUncertainty +{ + float mVerticalUncertaintyMeters; +}; + +// Structure to describe request TLV 0x18 for LOCInjectPosition() +struct sLOCInjectPositionRequest_VerticalConfidence +{ + UINT8 mVerticalConfidencePercent; +}; + +// Structure to describe request TLV 0x19 for LOCInjectPosition() +struct sLOCInjectPositionRequest_VerticalReliability +{ + eQMILOCReliability mVerticalReliability; +}; + +// Structure to describe request TLV 0x1A for LOCInjectPosition() +struct sLOCInjectPositionRequest_AltitudeSource +{ + eQMILOCAltitudeSource mAltitudeSource; + eQMILOCLinkage mLinkage; + eQMILOCCoverage mCoverage; +}; + +// Structure to describe request TLV 0x1B for LOCInjectPosition() +struct sLOCInjectPositionRequest_UTCTimestamp +{ + UINT64 mUTCTimestampMilliseconds; +}; + +// Structure to describe request TLV 0x1C for LOCInjectPosition() +struct sLOCInjectPositionRequest_PositionAge +{ + UINT32 mAgeTimestampMilliseconds; +}; + +// Structure to describe request TLV 0x1D for LOCInjectPosition() +struct sLOCInjectPositionRequest_PositionSource +{ + eQMILOCPositionSource mPositionSource; +}; + +// Structure to describe request TLV 0x01 for LOCSetEngineLock() +struct sLOCSetEngineLockRequest_LockType +{ + eQMILOCLockType mLockType; +}; + +// Structure to describe indication TLV 0x10 for LOC GetEngineLockIndication +struct sLOCGetEngineLockIndication_LockType +{ + eQMILOCLockType mLockType; +}; + +// Structure to describe request TLV 0x01 for LOCSetSBASConfig() +struct sLOCSetSBASConfigRequest_SBASConfig +{ + INT8 mSBASEnabled; +}; + +// Structure to describe response TLV 0x10 for LOCGetSBASConfig() +struct sLOCGetSBASConfigResponse_SBASConfig +{ + INT8 mSBASEnabled; +}; + +// Structure to describe request TLV 0x01 for LOCSetNMEATypes() +struct sLOCSetNMEATypesRequest_SentenceTypes +{ + bool mGGASentence:1; + bool mRMCSentence:1; + bool mGSVSentence:1; + bool mGSASentence:1; + bool mVTGSentence:1; + bool mPQXFISentence:1; + bool mPSTISSentence:1; + + // Padding out 25 bits + UINT8 mReserved1:1; + UINT8 mReserved2[3]; +}; + +// Structure to describe indication TLV 0x10 for LOC GetNMEATypesIndication +struct sLOCGetNMEATypesIndication_SentenceType +{ + bool mGGASentence:1; + bool mRMCSentence:1; + bool mGSVSentence:1; + bool mGSASentence:1; + bool mVTGSentence:1; + bool mPQXFISentence:1; + bool mPSTISSentence:1; + + // Padding out 25 bits + UINT8 mReserved1:1; + UINT8 mReserved2[3]; +}; + +// Structure to describe request TLV 0x01 for LOCSetLowPowerMode() +struct sLOCSetLowPowerModeRequest_EnableLPM +{ + INT8 mEnableLowPowerMode; +}; + +// Structure to describe indication TLV 0x10 for LOC GetLowPowerModeIndication +struct sLOCGetLowPowerModeIndication_EnableLPM +{ + INT8 mEnableLowPowerMode; +}; + +// Structure to describe request TLV 0x01 for LOCSetLocationServer() +struct sLOCSetLocationServerRequest_ServerType +{ + eQMILOCLocationServerType mServerType; +}; + +// Structure to describe request TLV 0x10 for LOCSetLocationServer() +struct sLOCSetLocationServerRequest_IPv4Address +{ + UINT32 mIPv4Address; + UINT16 mIPv4Port; +}; + +// Structure to describe request TLV 0x11 for LOCSetLocationServer() +struct sLOCSetLocationServerRequest_IPv6Address +{ + UINT8 mIPv6Address[16]; + UINT32 mIPv6Port; +}; + +// Structure to describe request TLV 0x12 for LOCSetLocationServer() +struct sLOCSetLocationServerRequest_URLAddress +{ + // String is variable length, but must be size of the container + // char mURLAddress[1]; +}; + +// Structure to describe request TLV 0x01 for LOCGetLocationServer() +struct sLOCGetLocationServerRequest_ServerType +{ + eQMILOCLocationServerType mServerType; +}; + +// Structure to describe request TLV 0x10 for LOCGetLocationServer() +struct sLOCGetLocationServerRequest_AddressType +{ + bool mIPv4:1; + bool mIPv6:1; + bool mURL:1; + + // Padding out 5 bits + UINT8 mReserved1:5; +}; + +// Structure to describe indication TLV 0x02 for LOC GetLocationServerIndication +struct sLOCGetLocationServerIndication_ServerType +{ + eQMILOCLocationServerType mServerType; +}; + +// Structure to describe indication TLV 0x10 for LOC GetLocationServerIndication +struct sLOCGetLocationServerIndication_IPv4Address +{ + UINT32 mIPv4Address; + UINT16 mIPv4Port; +}; + +// Structure to describe indication TLV 0x11 for LOC GetLocationServerIndication +struct sLOCGetLocationServerIndication_IPv6Address +{ + UINT8 mIPv6Address[16]; + UINT32 mIPv6Port; +}; + +// Structure to describe indication TLV 0x12 for LOC GetLocationServerIndication +struct sLOCGetLocationServerIndication_URLAddress +{ + // String is variable length, but must be size of the container + // char mURLAddress[1]; +}; + +// Structure to describe request TLV 0x01 for LOCDeleteAssistData() +struct sLOCDeleteAssistDataRequest_DeleteAll +{ + INT8 mDeleteAll; +}; + +// Structure to describe request TLV 0x10 for LOCDeleteAssistData() +struct sLOCDeleteAssistDataRequest_DeleteSatelliteInfo +{ + UINT8 mSatelliteInfoCount; + + struct sSatelliteInfo + { + UINT16 mGNSSSatelliteID; + eQMILOCSystem mSystem; + bool mDeleteEphemeris:1; + bool mDeleteAlmanac:1; + + // Padding out 6 bits + UINT8 mReserved1:6; + }; + + // This array must be the size specified by mSatelliteInfoCount + // sSatelliteInfo mSatelliteInfos[1]; +}; + +// Structure to describe request TLV 0x11 for LOCDeleteAssistData() +struct sLOCDeleteAssistDataRequest_DeleteGNSData +{ + bool mDeleteGPSSatelliteDirectory:1; + bool mDeleteGPSSatelliteSteering:1; + bool mDeleteGPSTime:1; + bool mDeleteGPSAlmanacCorrection:1; + bool mDeleteGLOSatelliteDirectory:1; + bool mDeleteGLOSatelliteSteering:1; + bool mDeleteGLOTime:1; + bool mDeleteGLOAlmanacCorrection:1; + bool mDeleteSBASSatelliteDirectory:1; + bool mDeleteSBASSatelliteSteering:1; + bool mDeletePosition:1; + bool mDeleteTime:1; + bool mDeleteIONO:1; + bool mDeleteUTCTimestamp:1; + bool mDeleteHealth:1; + bool mDeleteSAData:1; + bool mDeleteRTI:1; + bool mDeleteSatelliteNoExist:1; + bool mDeleteFrequencyBiasEstimate:1; + + // Padding out 45 bits + UINT8 mReserved1:5; + UINT8 mReserved2[5]; +}; + +// Structure to describe request TLV 0x12 for LOCDeleteAssistData() +struct sLOCDeleteAssistDataRequest_DeleteCellDatabase +{ + bool mDeletePosition:1; + bool mDeleteLatestGPSPosition:1; + bool mDeleteOTAPosition:1; + bool mDeleteEXTReferencePosition:1; + bool mDeleteTimeTag:1; + bool mDeleteCellID:1; + bool mDeleteCachedCellID:1; + bool mDeleteLastServerCell:1; + bool mDeleteCurrentServerCell:1; + bool mDeleteNeighborInfo:1; + + // Padding out 22 bits + UINT8 mReserved1:6; + UINT8 mReserved2[2]; +}; + +// Structure to describe request TLV 0x13 for LOCDeleteAssistData() +struct sLOCDeleteAssistDataRequest_DeleteClockInfo +{ + bool mDeleteTimeEstimate:1; + bool mDeleteFrequencyEstimate:1; + bool mDeleteWeekNumber:1; + bool mDeleteRTCTime:1; + bool mDeleteTimeTransfer:1; + bool mDeleteGPSTimeEstimate:1; + bool mDeleteGLOTimeEstimate:1; + bool mDeleteGLODayNumber:1; + bool mDeleteGLOYearNumber:1; + bool mDeleteGLORFGroupDelay:1; + bool mDeleteDisableTT:1; + + // Padding out 21 bits + UINT8 mReserved1:5; + UINT8 mReserved2[2]; +}; + +// Structure to describe request TLV 0x01 for LOCSetXTRATSessionControl() +struct sLOCSetXTRATSessionControlRequest_EnableXTRAT +{ + INT8 mEnableXTRAT; +}; + +// Structure to describe indication TLV 0x10 for LOC GetXTRATSessionControlIndication +struct sLOCGetXTRATSessionControlIndication_EnableXTRAT +{ + INT8 mEnableXTRAT; +}; + +// Structure to describe request TLV 0x10 for LOCInjectWiFiPosition() +struct sLOCInjectWiFiPositionRequest_Time +{ + UINT32 mWiFiPositionTime; +}; + +// Structure to describe request TLV 0x11 for LOCInjectWiFiPosition() +struct sLOCInjectWiFiPositionRequest_WiFiPosition +{ + double mLatitudeDegrees; + double mLongitudeDegrees; + UINT16 mHEPEMeters; + UINT8 mNumberOfAccessPointsUsed; + eQMILOCWiFiFixErrorCode mFixErrorCode; +}; + +// Structure to describe request TLV 0x12 for LOCInjectWiFiPosition() +struct sLOCInjectWiFiPositionRequest_AccessPointInformation +{ + UINT8 mNumberOfAccessPoints; + + struct sAccessPointInfo + { + UINT8 mMACAddress[6]; + INT32 mRSSIdBm; + UINT16 mChannel; + bool mBeingUsed:1; + bool mHiddenSSID:1; + bool mPrivate:1; + bool mInfrastructureMode:1; + + // Padding out 4 bits + UINT8 mReserved1:4; + }; + + // This array must be the size specified by mNumberOfAccessPoints + // sAccessPointInfo mAccessPointInfos[1]; +}; + +// Structure to describe request TLV 0x13 for LOCInjectWiFiPosition() +struct sLOCInjectWiFiPositionRequest_HorizontalReliability +{ + eQMILOCReliability mHorizontalReliability; +}; + +// Structure to describe request TLV 0x01 for LOCProvideWiFiStatus() +struct sLOCProvideWiFiStatusRequest_WiFiStatus +{ + eQMILOCWiFiStatus mWiFiStatus; +}; + +// Structure to describe indication TLV 0x10 for LOC GetRegisteredEventsIndication +struct sLOCGetRegisteredEventsIndication_RegistrationMask +{ + bool mPositionReport:1; + bool mGNSSSatelliteInfo:1; + bool mNMEA:1; + bool mNINotifyVerifyRequest:1; + bool mInjectTimeRequest:1; + bool mInjectPredictedOrbitsRequest:1; + bool mInjectPositionRequest:1; + bool mEngineState:1; + bool mFixSessionState:1; + bool mWiFiRequest:1; + bool mSensorStreamingReadyStatus:1; + bool mTimeSyncRequest:1; + bool mSetSPIStreamingReport:1; + bool mLocationServerConnectionRequest:1; + bool mNIGeofenceNotification:1; + bool mGeofenceGeneralAlert:1; + bool mGeofenceBreachNotification:1; + bool mPedometerControl:1; + bool mMotionDataControl:1; + + // Padding out 45 bits + UINT8 mReserved1:5; + UINT8 mReserved2[5]; +}; + +// Structure to describe request TLV 0x01 for LOCSetOperationMode() +struct sLOCSetOperationModeRequest_OperationMode +{ + eQMILOCOperationMode mOperationMode; +}; + +// Structure to describe indication TLV 0x10 for LOC GetOperationModeIndication +struct sLOCGetOperationModeIndication_OperationMode +{ + eQMILOCOperationMode mOperationMode; +}; + +// Structure to describe request TLV 0x01 for LOCSetSPIStatus() +struct sLOCSetSPIStatusRequest_StationaryStatus +{ + INT8 mDeviceIsStationary; +}; + +// Structure to describe request TLV 0x10 for LOCSetSPIStatus() +struct sLOCSetSPIStatusRequest_Confidence +{ + UINT8 mStationaryConfidence; +}; + +// Structure to describe request TLV 0x10 for LOCInjectSensorData() +struct sLOCInjectSensorDataRequest_OpaqueIdentifier +{ + UINT32 mOpaqueIdentifier; +}; + +// Structure to describe request TLV 0x11 for LOCInjectSensorData() +struct sLOCInjectSensorDataRequest_AccelerometerData +{ + UINT32 mTimeOfFirstSampleMilliseconds; + bool mSignReversal:1; + bool mSensorTimeIsModemTime:1; + + // Padding out 6 bits + UINT8 mReserved1:6; + + UINT8 mSensorDataLength; + + struct sSensorData + { + UINT16 mTimeOffsetMilliseconds; + float mXAxis; + float mYAxis; + float mZAxis; + }; + + // This array must be the size specified by mSensorDataLength + // sSensorData mSensorDatas[1]; +}; + +// Structure to describe request TLV 0x12 for LOCInjectSensorData() +struct sLOCInjectSensorDataRequest_GyrometerData +{ + UINT32 mTimeOfFirstSampleMilliseconds; + bool mSignReversal:1; + bool mSensorTimeIsModemTime:1; + + // Padding out 6 bits + UINT8 mReserved1:6; + + UINT8 mSensorDataLength; + + struct sSensorData + { + UINT16 mTimeOffsetMilliseconds; + float mXAxis; + float mYAxis; + float mZAxis; + }; + + // This array must be the size specified by mSensorDataLength + // sSensorData mSensorDatas[1]; +}; + +// Structure to describe request TLV 0x13 for LOCInjectSensorData() +struct sLOCInjectSensorDataRequest_AccelerometerTimeSource +{ + eQMILOCSensorTimeSources mSensorTimeSource; +}; + +// Structure to describe request TLV 0x14 for LOCInjectSensorData() +struct sLOCInjectSensorDataRequest_GyrometerTimeSource +{ + eQMILOCSensorTimeSources mSensorTimeSource; +}; + +// Structure to describe request TLV 0x15 for LOCInjectSensorData() +struct sLOCInjectSensorDataRequest_AccelerometerTempData +{ + eQMILOCSensorTimeSources mSensorTimeSource; + UINT32 mTimeOfFirstSampleMilliseconds; + UINT8 mSensorDataLength; + + struct sSensorData + { + UINT16 mTimeOffsetMilliseconds; + float mSensorTemperature; + }; + + // This array must be the size specified by mSensorDataLength + // sSensorData mSensorDatas[1]; +}; + +// Structure to describe request TLV 0x16 for LOCInjectSensorData() +struct sLOCInjectSensorDataRequest_GyrometerTempData +{ + eQMILOCSensorTimeSources mSensorTimeSource; + UINT32 mTimeOfFirstSampleMilliseconds; + UINT8 mSensorDataLength; + + struct sSensorData + { + UINT16 mTimeOffsetMilliseconds; + float mSensorTemperature; + }; + + // This array must be the size specified by mSensorDataLength + // sSensorData mSensorDatas[1]; +}; + +// Structure to describe indication TLV 0x10 for LOC InjectSensorDataIndication +struct sLOCInjectSensorDataIndication_OpaqueIdentifier +{ + UINT32 mOpaqueIdentifier; +}; + +// Structure to describe indication TLV 0x11 for LOC InjectSensorDataIndication +struct sLOCInjectSensorDataIndication_AccelerometerSampleAccepted +{ + INT8 mAccelerometerSampleAccepted; +}; + +// Structure to describe indication TLV 0x12 for LOC InjectSensorDataIndication +struct sLOCInjectSensorDataIndication_GyrometerSamplesAccepted +{ + INT8 mGyrometerSamplesAccepted; +}; + +// Structure to describe indication TLV 0x13 for LOC InjectSensorDataIndication +struct sLOCInjectSensorDataIndication_AccelerometerTempSamplesAccepted +{ + INT8 mSensorTemperatureSamplesAccepted; +}; + +// Structure to describe indication TLV 0x14 for LOC InjectSensorDataIndication +struct sLOCInjectSensorDataIndication_GyrometerTempSamplesAccepted +{ + INT8 mSensorTemperatureSamplesAccepted; +}; + +// Structure to describe request TLV 0x01 for LOCInjectTimeSyncData() +struct sLOCInjectTimeSyncDataRequest_ReferenceCounter +{ + UINT32 mReferenceCounter; +}; + +// Structure to describe request TLV 0x02 for LOCInjectTimeSyncData() +struct sLOCInjectTimeSyncDataRequest_SensorReceiveTime +{ + UINT32 mProcessRXTimeMilliseconds; +}; + +// Structure to describe request TLV 0x03 for LOCInjectTimeSyncData() +struct sLOCInjectTimeSyncDataRequest_SensorTransmitTime +{ + UINT32 mProcessTXTimeMilliseconds; +}; + +// Structure to describe request TLV 0x01 for LOCSetCradleMountConfig() +struct sLOCSetCradleMountConfigRequest_State +{ + eQMILOCCradleMountState mCradleMountState; +}; + +// Structure to describe request TLV 0x10 for LOCSetCradleMountConfig() +struct sLOCSetCradleMountConfigRequest_Confidence +{ + UINT8 mCradleMountConfidence; +}; + +// Structure to describe indication TLV 0x10 for LOC GetCradleMountConfigIndication +struct sLOCGetCradleMountConfigIndication_State +{ + eQMILOCCradleMountState mCradleMountState; +}; + +// Structure to describe indication TLV 0x11 for LOC GetCradleMountConfigIndication +struct sLOCGetCradleMountConfigIndication_Confidence +{ + UINT8 mCradleMountConfidence; +}; + +// Structure to describe request TLV 0x01 for LOCSetExternalPowerConfig() +struct sLOCSetExternalPowerConfigRequest_PowerState +{ + eQMILOCPowerState mPowerState; +}; + +// Structure to describe indication TLV 0x10 for LOC GetExternalPowerConfigIndication +struct sLOCGetExternalPowerConfigIndication_PowerState +{ + eQMILOCPowerState mPowerState; +}; + +// Structure to describe request TLV 0x01 for LOCProvideConnectionStatus() +struct sLOCProvideConnectionStatusRequest_ConnectionHandle +{ + UINT32 mConnectionHandle; +}; + +// Structure to describe request TLV 0x02 for LOCProvideConnectionStatus() +struct sLOCProvideConnectionStatusRequest_RequestType +{ + eQMILOCConnectionRequestType mConnectionRequestType; +}; + +// Structure to describe request TLV 0x03 for LOCProvideConnectionStatus() +struct sLOCProvideConnectionStatusRequest_ConnectionStatus +{ + eQMILOCConnectionStatus mConnectionStatus; +}; + +// Structure to describe request TLV 0x10 for LOCProvideConnectionStatus() +struct sLOCProvideConnectionStatusRequest_APNProfile +{ + eQMILOCPDNType mPDNType; + UINT8 mAPNNameLength; + + // This array must be the size specified by mAPNNameLength + // char mAPNName[1]; +}; + +// Structure to describe request TLV 0x10 for LOCSetProtocolConfigParameters() +struct sLOCSetProtocolConfigParametersRequest_SUPLSecurity +{ + INT8 mSUPLSecurityEnabled; +}; + +// Structure to describe request TLV 0x11 for LOCSetProtocolConfigParameters() +struct sLOCSetProtocolConfigParametersRequest_VXVersion +{ + eQMILOCVXVersion mVXVersion; +}; + +// Structure to describe request TLV 0x12 for LOCSetProtocolConfigParameters() +struct sLOCSetProtocolConfigParametersRequest_SUPLVersion +{ + eQMILOCSUPLVersion mSUPLVersion; +}; + +// Structure to describe request TLV 0x13 for LOCSetProtocolConfigParameters() +struct sLOCSetProtocolConfigParametersRequest_LPPConfiguration +{ + bool mEnableUserPlane:1; + bool mEnableControlPlane:1; + + // Padding out 30 bits + UINT8 mReserved1:6; + UINT8 mReserved2[3]; +}; + +// Structure to describe request TLV 0x14 for LOCSetProtocolConfigParameters() +struct sLOCSetProtocolConfigParametersRequest_AssistedGLONASS +{ + bool mRRCCP:1; + bool mRRLPUP:1; + bool mLPPUP:1; + + // Padding out 29 bits + UINT8 mReserved1:5; + UINT8 mReserved2[3]; +}; + +// Structure to describe request TLV 0x15 for LOCSetProtocolConfigParameters() +struct sLOCSetProtocolConfigParametersRequest_SUPLHashAlgorithm +{ + eQMILOCSUPLHashAlgorithms mSUPLHashAlgorithm; +}; + +// Structure to describe request TLV 0x16 for LOCSetProtocolConfigParameters() +struct sLOCSetProtocolConfigParametersRequest_SUPLTLSVersion +{ + eQMILOCSUPLTLSVersions mSUPLTLSVersion; +}; + +// Structure to describe request TLV 0x17 for LOCSetProtocolConfigParameters() +struct sLOCSetProtocolConfigParametersRequest_EmergencyProtocol +{ + eQMILOCEmergencyProtocols mEmergencyProtocol; +}; + +// Structure to describe indication TLV 0x10 for LOC SetProtocolConfigParametersIndication +struct sLOCSetProtocolConfigParametersIndication_FailedParameters +{ + bool mSUPLSecurity:1; + bool mVXVersion:1; + bool mSUPLVersion:1; + bool mLLPConfiguration:1; + bool mAssistedGLONASS:1; + bool mSUPLHashAlgorithm:1; + bool mSUPLTLSVersion:1; + bool mEmergencyProtocol:1; + + // Padding out 56 bits + UINT8 mReserved1[7]; +}; + +// Structure to describe request TLV 0x01 for LOCGetProtocolConfigParameters() +struct sLOCGetProtocolConfigParametersRequest_ConfigParameters +{ + bool mSUPLSecurity:1; + bool mVXVersion:1; + bool mSUPLVersion:1; + bool mLLPConfiguration:1; + bool mAssistedGLONASS:1; + bool mSUPLHashAlgorithm:1; + bool mSUPLTLSVersion:1; + bool mEmergencyProtocol:1; + + // Padding out 56 bits + UINT8 mReserved1[7]; +}; + +// Structure to describe indication TLV 0x10 for LOC GetProtocolConfigParametersIndication +struct sLOCGetProtocolConfigParametersIndication_SUPLSecurity +{ + INT8 mSUPLSecurityEnabled; +}; + +// Structure to describe indication TLV 0x11 for LOC GetProtocolConfigParametersIndication +struct sLOCGetProtocolConfigParametersIndication_VXVersion +{ + eQMILOCVXVersion mVXVersion; +}; + +// Structure to describe indication TLV 0x12 for LOC GetProtocolConfigParametersIndication +struct sLOCGetProtocolConfigParametersIndication_SUPLVersion +{ + eQMILOCSUPLVersion mSUPLVersion; +}; + +// Structure to describe indication TLV 0x13 for LOC GetProtocolConfigParametersIndication +struct sLOCGetProtocolConfigParametersIndication_LPPConfiguration +{ + bool mEnableUserPlane:1; + bool mEnableControlPlane:1; + + // Padding out 30 bits + UINT8 mReserved1:6; + UINT8 mReserved2[3]; +}; + +// Structure to describe indication TLV 0x14 for LOC GetProtocolConfigParametersIndication +struct sLOCGetProtocolConfigParametersIndication_AssistedGLONASS +{ + bool mRRCCP:1; + bool mRRLPUP:1; + bool mLPPUP:1; + + // Padding out 29 bits + UINT8 mReserved1:5; + UINT8 mReserved2[3]; +}; + +// Structure to describe indication TLV 0x15 for LOC GetProtocolConfigParametersIndication +struct sLOCGetProtocolConfigParametersIndication_SUPLHashAlgorithm +{ + eQMILOCSUPLHashAlgorithms mSUPLHashAlgorithm; +}; + +// Structure to describe indication TLV 0x16 for LOC GetProtocolConfigParametersIndication +struct sLOCGetProtocolConfigParametersIndication_SUPLTLSVersion +{ + eQMILOCSUPLTLSVersions mSUPLTLSVersion; +}; + +// Structure to describe indication TLV 0x17 for LOC GetProtocolConfigParametersIndication +struct sLOCGetProtocolConfigParametersIndication_EmergencyProtocol +{ + eQMILOCEmergencyProtocols mEmergencyProtocol; +}; + +// Structure to describe request TLV 0x10 for LOCSetSensorControlConfig() +struct sLOCSetSensorControlConfigRequest_SensorUsage +{ + eQMILOCSensorUsage mSensorUsage; +}; + +// Structure to describe indication TLV 0x10 for LOC GetSensorControlConfigIndication +struct sLOCGetSensorControlConfigIndication_SensorUsage +{ + eQMILOCSensorUsage mSensorUsage; +}; + +// Structure to describe request TLV 0x10 for LOCSetSensorProperties() +struct sLOCSetSensorPropertiesRequest_GyroBiasVariance +{ + float mGyroBiasVariance; +}; + +// Structure to describe request TLV 0x11 for LOCSetSensorProperties() +struct sLOCSetSensorPropertiesRequest_VelocityRWSD +{ + float mVelocityRandomWalkSpectralDensity; +}; + +// Structure to describe request TLV 0x12 for LOCSetSensorProperties() +struct sLOCSetSensorPropertiesRequest_AccelerationRWSD +{ + float mAccelerationRandomWalkSpectralDensity; +}; + +// Structure to describe request TLV 0x13 for LOCSetSensorProperties() +struct sLOCSetSensorPropertiesRequest_AngleRWSD +{ + float mAngleRandomWalkSpectralDensity; +}; + +// Structure to describe request TLV 0x14 for LOCSetSensorProperties() +struct sLOCSetSensorPropertiesRequest_RateRWSD +{ + float mRateRandomWalkSpectralDensity; +}; + +// Structure to describe indication TLV 0x10 for LOC SetSensorPropertiesIndication +struct sLOCSetSensorPropertiesIndication_Failures +{ + bool mGyroBiasVariance:1; + bool mVelocityRandomWalkSpectralDensity:1; + bool mAccelerationRandomWalkSpectralDensity:1; + bool mAngleRandomWalkSpectralDensity:1; + bool mRateRandomWalkSpectralDensity:1; + + // Padding out 27 bits + UINT8 mReserved1:3; + UINT8 mReserved2[3]; +}; + +// Structure to describe request TLV 0x01 for LOCGetSensorProperties() +struct sLOCGetSensorPropertiesRequest_Properties +{ + bool mGyroBiasVariance:1; + bool mVelocityRandomWalkSpectralDensity:1; + bool mAccelerationRandomWalkSpectralDensity:1; + bool mAngleRandomWalkSpectralDensity:1; + bool mRateRandomWalkSpectralDensity:1; + + // Padding out 27 bits + UINT8 mReserved1:3; + UINT8 mReserved2[3]; +}; + +// Structure to describe indication TLV 0x10 for LOC GetSensorPropertiesIndication +struct sLOCGetSensorPropertiesIndication_GyroBiasVariance +{ + float mGyroBiasVariance; +}; + +// Structure to describe indication TLV 0x11 for LOC GetSensorPropertiesIndication +struct sLOCGetSensorPropertiesIndication_VelocityRWSD +{ + float mVelocityRandomWalkSpectralDensity; +}; + +// Structure to describe indication TLV 0x12 for LOC GetSensorPropertiesIndication +struct sLOCGetSensorPropertiesIndication_AccelerationRWSD +{ + float mAccelerationRandomWalkSpectralDensity; +}; + +// Structure to describe indication TLV 0x13 for LOC GetSensorPropertiesIndication +struct sLOCGetSensorPropertiesIndication_AngleRWSD +{ + float mAngleRandomWalkSpectralDensity; +}; + +// Structure to describe indication TLV 0x14 for LOC GetSensorPropertiesIndication +struct sLOCGetSensorPropertiesIndication_RateRWSD +{ + float mRateRandomWalkSpectralDensity; +}; + +// Structure to describe request TLV 0x10 for LOCSetSensorPerformanceConfig() +struct sLOCSetSensorPerformanceConfigRequest_ControlMode +{ + eQMILOCControlMode mControlMode; +}; + +// Structure to describe request TLV 0x11 for LOCSetSensorPerformanceConfig() +struct sLOCSetSensorPerformanceConfigRequest_AccelerometerSampling +{ + UINT16 mSamplesPerBatch; + UINT16 mBatchesPerSecond; +}; + +// Structure to describe request TLV 0x12 for LOCSetSensorPerformanceConfig() +struct sLOCSetSensorPerformanceConfigRequest_GyrometerSampling +{ + UINT16 mSamplesPerBatch; + UINT16 mBatchesPerSecond; +}; + +// Structure to describe request TLV 0x13 for LOCSetSensorPerformanceConfig() +struct sLOCSetSensorPerformanceConfigRequest_AlgorithmConfig +{ + bool mDisableINSPositioningFilter:1; + + // Padding out 31 bits + UINT8 mReserved1:7; + UINT8 mReserved2[3]; +}; + +// Structure to describe request TLV 0x14 for LOCSetSensorPerformanceConfig() +struct sLOCSetSensorPerformanceConfigRequest_HDRFAccelerometerSampling +{ + UINT16 mSamplesPerBatch; + UINT16 mBatchesPerSecond; +}; + +// Structure to describe request TLV 0x15 for LOCSetSensorPerformanceConfig() +struct sLOCSetSensorPerformanceConfigRequest_HDRFGyroscopeSampling +{ + UINT16 mSamplesPerBatch; + UINT16 mBatchesPerSecond; +}; + +// Structure to describe indication TLV 0x10 for LOC SetSensorPerformanceConfigIndication +struct sLOCSetSensorPerformanceConfigIndication_FailedConfiguration +{ + bool mPerformanceMode:1; + bool mAccelerometerSampling:1; + bool mGyrometerSampling:1; + bool mAlgorithmConfig:1; + bool mHDRFAccelerometerSampling:1; + bool mHDRFGyroscopeSampling:1; + + // Padding out 26 bits + UINT8 mReserved1:2; + UINT8 mReserved2[3]; +}; + +// Structure to describe indication TLV 0x10 for LOC GetSensorPerformanceConfigIndication +struct sLOCGetSensorPerformanceConfigIndication_ControlMode +{ + eQMILOCControlMode mControlMode; +}; + +// Structure to describe indication TLV 0x11 for LOC GetSensorPerformanceConfigIndication +struct sLOCGetSensorPerformanceConfigIndication_AccelerometerSampling +{ + UINT16 mSamplesPerBatch; + UINT16 mBatchesPerSecond; +}; + +// Structure to describe indication TLV 0x12 for LOC GetSensorPerformanceConfigIndication +struct sLOCGetSensorPerformanceConfigIndication_GyrometerSampling +{ + UINT16 mSamplesPerBatch; + UINT16 mBatchesPerSecond; +}; + +// Structure to describe indication TLV 0x13 for LOC GetSensorPerformanceConfigIndication +struct sLOCGetSensorPerformanceConfigIndication_AlgorithmConfig +{ + bool mDisableINSPositioningFilter:1; + + // Padding out 31 bits + UINT8 mReserved1:7; + UINT8 mReserved2[3]; +}; + +// Structure to describe indication TLV 0x14 for LOC GetSensorPerformanceConfigIndication +struct sLOCGetSensorPerformanceConfigIndication_HDRFAccelerometerSampling +{ + UINT16 mSamplesPerBatch; + UINT16 mBatchesPerSecond; +}; + +// Structure to describe indication TLV 0x15 for LOC GetSensorPerformanceConfigIndication +struct sLOCGetSensorPerformanceConfigIndication_HDRFGyroscopeSampling +{ + UINT16 mSamplesPerBatch; + UINT16 mBatchesPerSecond; +}; + +// Structure to describe request TLV 0x01 for LOCInjectSUPLCertificate() +struct sLOCInjectSUPLCertificateRequest_ID +{ + UINT8 mSUPLCertificateID; +}; + +// Structure to describe request TLV 0x02 for LOCInjectSUPLCertificate() +struct sLOCInjectSUPLCertificateRequest_Data +{ + UINT16 mSUPLCertificateLength; + + // This array must be the size specified by mSUPLCertificateLength + // UINT8 mSUPLCertificate[1]; +}; + +// Structure to describe request TLV 0x10 for LOCDeleteSUPLCertificate() +struct sLOCDeleteSUPLCertificateRequest_ID +{ + UINT8 mSUPLCertificateID; +}; + +// Structure to describe request TLV 0x10 for LOCSetPositionEngineConfig() +struct sLOCSetPositionEngineConfigRequest_InjectedPosition +{ + INT8 mUseInjectedPositionInCalculations; +}; + +// Structure to describe request TLV 0x11 for LOCSetPositionEngineConfig() +struct sLOCSetPositionEngineConfigRequest_FilterSVUsage +{ + INT8 mFilterUsageOfSVs; +}; + +// Structure to describe request TLV 0x12 for LOCSetPositionEngineConfig() +struct sLOCSetPositionEngineConfigRequest_StoreAssistData +{ + INT8 mStoreAssistanceData; +}; + +// Structure to describe indication TLV 0x10 for LOC SetPositionEngineConfigIndication +struct sLOCSetPositionEngineConfigIndication_FailedParameters +{ + bool mInjectedPosition:1; + bool mFilterSVUsage:1; + bool mStoreAssistData:1; + bool mEnableFasterTTFF:1; + + // Padding out 28 bits + UINT8 mReserved1:4; + UINT8 mReserved2[3]; +}; + +// Structure to describe request TLV 0x01 for LOCGetPositionEngineConfig() +struct sLOCGetPositionEngineConfigRequest_Parameters +{ + bool mInjectedPosition:1; + bool mFilterSVUsage:1; + bool mStoreAssistData:1; + bool mEnableFasterTTFF:1; + + // Padding out 28 bits + UINT8 mReserved1:4; + UINT8 mReserved2[3]; +}; + +// Structure to describe indication TLV 0x10 for LOC GetPositionEngineConfigIndication +struct sLOCGetPositionEngineConfigIndication_InjectedPosition +{ + INT8 mUseInjectedPositionInCalculations; +}; + +// Structure to describe indication TLV 0x11 for LOC GetPositionEngineConfigIndication +struct sLOCGetPositionEngineConfigIndication_FilterSVUsage +{ + INT8 mFilterUsageOfSVs; +}; + +// Structure to describe indication TLV 0x12 for LOC GetPositionEngineConfigIndication +struct sLOCGetPositionEngineConfigIndication_StoreAssistData +{ + INT8 mStoreAssistanceData; +}; + +// Structure to describe indication TLV 0x01 for LOC NetworkInitiatedGeofenceIndication +struct sLOCNetworkInitiatedGeofenceIndication_GeofenceID +{ + UINT32 mGeofenceID; +}; + +// Structure to describe indication TLV 0x02 for LOC NetworkInitiatedGeofenceIndication +struct sLOCNetworkInitiatedGeofenceIndication_OperationType +{ + eQMILOCGeofenceOperationMode mOperationType; +}; + +// Structure to describe indication TLV 0x01 for LOC EventGeofenceGeneralAlertIndication +struct sLOCEventGeofenceGeneralAlertIndication_GeofenceGeneralAlert +{ + eQMILOCGeofenceGeneralAlert mGeofenceGeneralAlert; +}; + +// Structure to describe indication TLV 0x01 for LOC EventGeofenceBreachIndication +struct sLOCEventGeofenceBreachIndication_GeofenceID +{ + UINT32 mGeofenceID; +}; + +// Structure to describe indication TLV 0x02 for LOC EventGeofenceBreachIndication +struct sLOCEventGeofenceBreachIndication_GeofenceBreachType +{ + eQMILOCGeofenceBreachType mGeofenceBreachType; +}; + +// Structure to describe indication TLV 0x10 for LOC EventGeofenceBreachIndication +struct sLOCEventGeofenceBreachIndication_GeofencePosition +{ + UINT64 mUTCTimestampMilliseconds; + double mLatitudeDegrees; + double mLongitudeDegrees; + float mHorizontalUncertaintyEllipticalMinorMeters; + float mHorizontalUncertaintyEllipticalMajorMeters; + float mHorizontalUncertaintyEllipticalAzimuthDecimalDegrees; + INT8 mHorizontalSpeedValid; + float mHorizontalSpeedMetersSecond; + INT8 mAltitudeEllipsoidValid; + float mAltitudeFromEllipsoidMeters; + INT8 mVerticalUncertaintyValid; + float mVerticalUncertaintyMeters; + INT8 mVerticalSpeedValid; + float mVerticalSpeedMetersSecond; + INT8 mHeadingValid; + float mHeadingDegrees; +}; + +// Structure to describe request TLV 0x01 for LOCAddCircularGeofence() +struct sLOCAddCircularGeofenceRequest_TransactionID +{ + UINT32 mTransactionID; +}; + +// Structure to describe request TLV 0x02 for LOCAddCircularGeofence() +struct sLOCAddCircularGeofenceRequest_CircularGeofenceArguments +{ + double mLatitudeDegrees; + double mLongitudeDegrees; + UINT32 mRadiusMeters; +}; + +// Structure to describe request TLV 0x03 for LOCAddCircularGeofence() +struct sLOCAddCircularGeofenceRequest_BreachEventMask +{ + bool mEnteringGeofence:1; + bool mLeavingGeofence:1; + + // Padding out 6 bits + UINT8 mReserved1:6; +}; + +// Structure to describe request TLV 0x04 for LOCAddCircularGeofence() +struct sLOCAddCircularGeofenceRequest_IncludePositionInBreachEvent +{ + INT8 mIncludePositionInBreachEvent; +}; + +// Structure to describe request TLV 0x10 for LOCAddCircularGeofence() +struct sLOCAddCircularGeofenceRequest_Responsiveness +{ + eQMILOCResponsiveness mResponsiveness; +}; + +// Structure to describe request TLV 0x11 for LOCAddCircularGeofence() +struct sLOCAddCircularGeofenceRequest_Confidence +{ + eQMILOCConfidence mConfidence; +}; + +// Structure to describe indication TLV 0x01 for LOC AddCircularGeofenceIndication +struct sLOCAddCircularGeofenceIndication_GeofenceStatus +{ + eQMILOCGeofenceStatus mGeofenceStatus; +}; + +// Structure to describe indication TLV 0x10 for LOC AddCircularGeofenceIndication +struct sLOCAddCircularGeofenceIndication_TransactionID +{ + UINT32 mTransactionID; +}; + +// Structure to describe indication TLV 0x11 for LOC AddCircularGeofenceIndication +struct sLOCAddCircularGeofenceIndication_GeofenceID +{ + UINT32 mGeofenceID; +}; + +// Structure to describe request TLV 0x01 for LOCDeleteGeofence() +struct sLOCDeleteGeofenceRequest_GeofenceID +{ + UINT32 mGeofenceID; +}; + +// Structure to describe request TLV 0x02 for LOCDeleteGeofence() +struct sLOCDeleteGeofenceRequest_TransactionID +{ + UINT32 mTransactionID; +}; + +// Structure to describe indication TLV 0x01 for LOC DeleteGeofenceIndication +struct sLOCDeleteGeofenceIndication_GeofenceStatus +{ + eQMILOCGeofenceStatus mGeofenceStatus; +}; + +// Structure to describe indication TLV 0x10 for LOC DeleteGeofenceIndication +struct sLOCDeleteGeofenceIndication_GeofenceID +{ + UINT32 mGeofenceID; +}; + +// Structure to describe indication TLV 0x11 for LOC DeleteGeofenceIndication +struct sLOCDeleteGeofenceIndication_TransactionID +{ + UINT32 mTransactionID; +}; + +// Structure to describe request TLV 0x01 for LOCQueryGeofence() +struct sLOCQueryGeofenceRequest_GeofenceID +{ + UINT32 mGeofenceID; +}; + +// Structure to describe request TLV 0x02 for LOCQueryGeofence() +struct sLOCQueryGeofenceRequest_TransactionID +{ + UINT32 mTransactionID; +}; + +// Structure to describe indication TLV 0x01 for LOC QueryGeofenceIndication +struct sLOCQueryGeofenceIndication_Status +{ + eQMILOCGeofenceStatus mGeofenceStatus; +}; + +// Structure to describe indication TLV 0x10 for LOC QueryGeofenceIndication +struct sLOCQueryGeofenceIndication_GeofenceID +{ + UINT32 mGeofenceID; +}; + +// Structure to describe indication TLV 0x11 for LOC QueryGeofenceIndication +struct sLOCQueryGeofenceIndication_TransactionID +{ + UINT32 mTransactionID; +}; + +// Structure to describe indication TLV 0x12 for LOC QueryGeofenceIndication +struct sLOCQueryGeofenceIndication_Origin +{ + eQMILOCGeofenceOrigin mGeofenceOrigin; +}; + +// Structure to describe indication TLV 0x13 for LOC QueryGeofenceIndication +struct sLOCQueryGeofenceIndication_PositionFromGeofence +{ + eQMILOCPositionFromGeofence mPositionFromGeofence; +}; + +// Structure to describe indication TLV 0x14 for LOC QueryGeofenceIndication +struct sLOCQueryGeofenceIndication_Parameters +{ + double mLatitudeDegrees; + double mLongitudeDegrees; + UINT32 mRadiusMeters; +}; + +// Structure to describe indication TLV 0x15 for LOC QueryGeofenceIndication +struct sLOCQueryGeofenceIndication_State +{ + eQMILOCGeofenceState mGeofenceState; +}; + +// Structure to describe request TLV 0x01 for LOCEditGeofence() +struct sLOCEditGeofenceRequest_GeofenceID +{ + UINT32 mGeofenceID; +}; + +// Structure to describe request TLV 0x02 for LOCEditGeofence() +struct sLOCEditGeofenceRequest_TransactionID +{ + UINT32 mTransactionID; +}; + +// Structure to describe request TLV 0x10 for LOCEditGeofence() +struct sLOCEditGeofenceRequest_State +{ + eQMILOCGeofenceState mGeofenceState; +}; + +// Structure to describe request TLV 0x11 for LOCEditGeofence() +struct sLOCEditGeofenceRequest_BreachEventMask +{ + bool mEnteringGeofence:1; + bool mLeavingGeofence:1; + + // Padding out 6 bits + UINT8 mReserved1:6; +}; + +// Structure to describe indication TLV 0x01 for LOC EditGeofenceIndication +struct sLOCEditGeofenceIndication_Status +{ + eQMILOCGeofenceStatus mGeofenceStatus; +}; + +// Structure to describe indication TLV 0x10 for LOC EditGeofenceIndication +struct sLOCEditGeofenceIndication_GeofenceID +{ + UINT32 mGeofenceID; +}; + +// Structure to describe indication TLV 0x11 for LOC EditGeofenceIndication +struct sLOCEditGeofenceIndication_TransactionID +{ + UINT32 mTransactionID; +}; + +// Structure to describe indication TLV 0x12 for LOC EditGeofenceIndication +struct sLOCEditGeofenceIndication_FailedParameters +{ + bool mGeofenceState:1; + bool mBreachMask:1; + + // Padding out 30 bits + UINT8 mReserved1:6; + UINT8 mReserved2[3]; +}; + +// Structure to describe request TLV 0x01 for LOCGetBestAvailablePosition() +struct sLOCGetBestAvailablePositionRequest_TransactionID +{ + UINT32 mTransactionID; +}; + +// Structure to describe indication TLV 0x01 for LOC GetBestAvailablePositionIndication +struct sLOCGetBestAvailablePositionIndication_Status +{ + eQMILOCGeofenceStatus mGeofenceStatus; +}; + +// Structure to describe indication TLV 0x10 for LOC GetBestAvailablePositionIndication +struct sLOCGetBestAvailablePositionIndication_TransactionID +{ + UINT32 mTransactionID; +}; + +// Structure to describe indication TLV 0x11 for LOC GetBestAvailablePositionIndication +struct sLOCGetBestAvailablePositionIndication_Latitude +{ + double mLatitudeDegrees; +}; + +// Structure to describe indication TLV 0x12 for LOC GetBestAvailablePositionIndication +struct sLOCGetBestAvailablePositionIndication_Longitude +{ + double mLongitudeDegrees; +}; + +// Structure to describe indication TLV 0x13 for LOC GetBestAvailablePositionIndication +struct sLOCGetBestAvailablePositionIndication_HorizontalUncertaintyCircular +{ + float mHorizontalUncertaintyCircularMeters; +}; + +// Structure to describe indication TLV 0x14 for LOC GetBestAvailablePositionIndication +struct sLOCGetBestAvailablePositionIndication_AltitudeFromEllipsoid +{ + float mAltitudeFromEllipsoidMeters; +}; + +// Structure to describe indication TLV 0x15 for LOC GetBestAvailablePositionIndication +struct sLOCGetBestAvailablePositionIndication_VerticalUncertainty +{ + float mVerticalUncertaintyMeters; +}; + +// Structure to describe indication TLV 0x16 for LOC GetBestAvailablePositionIndication +struct sLOCGetBestAvailablePositionIndication_UTCTimestamp +{ + UINT64 mUTCTimestampMilliseconds; +}; + +// Structure to describe indication TLV 0x17 for LOC GetBestAvailablePositionIndication +struct sLOCGetBestAvailablePositionIndication_TimeUncertainty +{ + float mTimeUncertaintyMilliseconds; +}; + +// Structure to describe indication TLV 0x18 for LOC GetBestAvailablePositionIndication +struct sLOCGetBestAvailablePositionIndication_HorizontalUncertaintyEllipticalMinor +{ + float mHorizontalUncertaintyEllipticalMinorMeters; +}; + +// Structure to describe indication TLV 0x19 for LOC GetBestAvailablePositionIndication +struct sLOCGetBestAvailablePositionIndication_HorizontalUncertaintyEllipticalMajor +{ + float mHorizontalUncertaintyEllipticalMajorMeters; +}; + +// Structure to describe indication TLV 0x1A for LOC GetBestAvailablePositionIndication +struct sLOCGetBestAvailablePositionIndication_HorizontalUncertaintyEllipticalAzimuth +{ + float mHorizontalUncertaintyEllipticalAzimuthDecimalDegrees; +}; + +// Structure to describe indication TLV 0x1B for LOC GetBestAvailablePositionIndication +struct sLOCGetBestAvailablePositionIndication_HorizontalConfidenceCircular +{ + UINT8 mHorizontalConfidencePercent; +}; + +// Structure to describe indication TLV 0x1C for LOC GetBestAvailablePositionIndication +struct sLOCGetBestAvailablePositionIndication_HorizontalConfidenceElliptical +{ + UINT8 mHorizontalConfidencePercent; +}; + +// Structure to describe indication TLV 0x1D for LOC GetBestAvailablePositionIndication +struct sLOCGetBestAvailablePositionIndication_HorizontalReliablility +{ + eQMILOCReliability mHorizontalReliability; +}; + +// Structure to describe indication TLV 0x1E for LOC GetBestAvailablePositionIndication +struct sLOCGetBestAvailablePositionIndication_HorizontalSpeed +{ + float mHorizontalSpeedMetersSecond; +}; + +// Structure to describe indication TLV 0x1F for LOC GetBestAvailablePositionIndication +struct sLOCGetBestAvailablePositionIndication_HorizontalSpeedUncertainty +{ + float mSpeedUncertaintyMetersSecond; +}; + +// Structure to describe indication TLV 0x20 for LOC GetBestAvailablePositionIndication +struct sLOCGetBestAvailablePositionIndication_AltitudeFromSeaLevel +{ + float mAltitudeFromSeaLevelMeters; +}; + +// Structure to describe indication TLV 0x21 for LOC GetBestAvailablePositionIndication +struct sLOCGetBestAvailablePositionIndication_VerticalConfidence +{ + UINT8 mVerticalConfidencePercent; +}; + +// Structure to describe indication TLV 0x22 for LOC GetBestAvailablePositionIndication +struct sLOCGetBestAvailablePositionIndication_VerticalReliability +{ + eQMILOCReliability mVerticalReliability; +}; + +// Structure to describe indication TLV 0x23 for LOC GetBestAvailablePositionIndication +struct sLOCGetBestAvailablePositionIndication_VerticalSpeed +{ + float mVerticalSpeedMetersSecond; +}; + +// Structure to describe indication TLV 0x24 for LOC GetBestAvailablePositionIndication +struct sLOCGetBestAvailablePositionIndication_VerticalSpeedUncertainty +{ + float mSpeedUncertaintyMetersSecond; +}; + +// Structure to describe indication TLV 0x25 for LOC GetBestAvailablePositionIndication +struct sLOCGetBestAvailablePositionIndication_Heading +{ + float mHeadingDegrees; +}; + +// Structure to describe indication TLV 0x26 for LOC GetBestAvailablePositionIndication +struct sLOCGetBestAvailablePositionIndication_HeadingUncertainty +{ + float mHeadingUncertaintyDegrees; +}; + +// Structure to describe indication TLV 0x27 for LOC GetBestAvailablePositionIndication +struct sLOCGetBestAvailablePositionIndication_MagneticDeviation +{ + float mMagneticDeviation; +}; + +// Structure to describe indication TLV 0x28 for LOC GetBestAvailablePositionIndication +struct sLOCGetBestAvailablePositionIndication_TechnologyUsed +{ + bool mSatellite:1; + bool mCellular:1; + bool mWiFi:1; + bool mSensors:1; + bool mReferenceLocation:1; + bool mInjectedPosition:1; + bool mAFLT:1; + bool mHybrid:1; + + // Padding out 24 bits + UINT8 mReserved1[3]; +}; + +// Structure to describe indication TLV 0x29 for LOC GetBestAvailablePositionIndication +struct sLOCGetBestAvailablePositionIndication_DilutionOfPrecision +{ + float mPositionDilutionOfPrecision; + float mHorizontalDilutionOfPrecision; + float mVerticalDilutionOfPrecision; +}; + +// Structure to describe indication TLV 0x2A for LOC GetBestAvailablePositionIndication +struct sLOCGetBestAvailablePositionIndication_GPSTime +{ + UINT16 mGPSWeeks; + UINT32 mGPSTimeOfWeekMilliseconds; +}; + +// Structure to describe indication TLV 0x2B for LOC GetBestAvailablePositionIndication +struct sLOCGetBestAvailablePositionIndication_TimeSource +{ + eQMILOCTimeSource mTimeSource; +}; + +// Structure to describe indication TLV 0x2C for LOC GetBestAvailablePositionIndication +struct sLOCGetBestAvailablePositionIndication_SensorDataUsage +{ + bool mAccelerometerUsed:1; + bool mGyroUsed:1; + + // Padding out 30 bits + UINT8 mReserved1:6; + UINT8 mReserved2[3]; + + bool mAidedHeading:1; + bool mAidedSpeed:1; + bool mAidedPosition:1; + bool mAidedVelocity:1; + + // Padding out 28 bits + UINT8 mReserved3:4; + UINT8 mReserved4[3]; +}; + +// Structure to describe indication TLV 0x2D for LOC GetBestAvailablePositionIndication +struct sLOCGetBestAvailablePositionIndication_SatellitesUsed +{ + UINT8 mSatellitesUsedCount; + + // This array must be the size specified by mSatellitesUsedCount + // UINT16 mSatellitesUsed[1]; +}; + +// Structure to describe request TLV 0x01 for LOCInjectMotionData() +struct sLOCInjectMotionDataRequest_MotionData +{ + eQMILOCMotionStates mMotionState; + eQMILOCMotionModes mMotionMode; + float mProbabilityOfState; + UINT16 mAgeMilliseconds; + UINT16 mTimeoutMilliseconds; +}; + +// Structure to describe indication TLV 0x01 for LOC InjectMotionDataIndication +struct sLOCInjectMotionDataIndication_Status +{ + eQMILOCGeofenceStatus mGeofenceStatus; +}; + +// Structure to describe request TLV 0x01 for LOCGetNIGeofenceIDList() +struct sLOCGetNIGeofenceIDListRequest_TransactionID +{ + UINT32 mTransactionID; +}; + +// Structure to describe indication TLV 0x01 for LOC GetNIGeofenceIDListIndication +struct sLOCGetNIGeofenceIDListIndication_Status +{ + eQMILOCGeofenceStatus mGeofenceStatus; +}; + +// Structure to describe indication TLV 0x10 for LOC GetNIGeofenceIDListIndication +struct sLOCGetNIGeofenceIDListIndication_TransactionID +{ + UINT32 mTransactionID; +}; + +// Structure to describe indication TLV 0x11 for LOC GetNIGeofenceIDListIndication +struct sLOCGetNIGeofenceIDListIndication_GeofenceIDList +{ + UINT8 mGeofenceIDCount; + + // This array must be the size specified by mGeofenceIDCount + // UINT32 mGeofenceID[1]; +}; + +// Structure to describe request TLV 0x01 for LOCInjectGSMCellInfo() +struct sLOCInjectGSMCellInfoRequest_GSMCellID +{ + UINT32 mMCC; + UINT32 mMNC; + UINT32 mLAC; + UINT32 mCID; +}; + +// Structure to describe request TLV 0x02 for LOCInjectGSMCellInfo() +struct sLOCInjectGSMCellInfoRequest_Roaming +{ + INT8 mDeviceIsRoaming; +}; + +// Structure to describe indication TLV 0x01 for LOC InjectGSMCellInfoIndication +struct sLOCInjectGSMCellInfoIndication_Status +{ + eQMILOCGeofenceStatus mGeofenceStatus; +}; + +// Structure to describe request TLV 0x01 for LOCInjectNetworkInitiatedMessage() +struct sLOCInjectNetworkInitiatedMessageRequest_Type +{ + eQMILOCNetworkInitiatedMessageTypes mMessageType; +}; + +// Structure to describe request TLV 0x02 for LOCInjectNetworkInitiatedMessage() +struct sLOCInjectNetworkInitiatedMessageRequest_Message +{ + UINT16 mMessageLength; + + // This array must be the size specified by mMessageLength + // UINT8 mMessageBody[1]; +}; + +// Structure to describe indication TLV 0x01 for LOC InjectNetworkInitiatedMessageIndication +struct sLOCInjectNetworkInitiatedMessageIndication_Status +{ + eQMILOCGeofenceStatus mGeofenceStatus; +}; + +// Structure to describe indication TLV 0x01 for LOC NotifyWWANOutOfServiceIndication +struct sLOCNotifyWWANOutOfServiceIndication_Status +{ + eQMILOCGeofenceStatus mGeofenceStatus; +}; + +// Structure to describe indication TLV 0x01 for LOC PedometerControlIndication +struct sLOCPedometerControlIndication_RequestData +{ + INT8 mRequestPedometerData; +}; + +// Structure to describe indication TLV 0x10 for LOC PedometerControlIndication +struct sLOCPedometerControlIndication_ResetStepCount +{ + INT8 mResetStepCount; +}; + +// Structure to describe indication TLV 0x11 for LOC PedometerControlIndication +struct sLOCPedometerControlIndication_StepCountThreshold +{ + UINT32 mStepCountThreshold; +}; + +// Structure to describe indication TLV 0x01 for LOC MotionDataControlIndication +struct sLOCMotionDataControlIndication_RequestData +{ + INT8 mRequestMotionData; +}; + +// Structure to describe request TLV 0x01 for LOCInjectPedometerData() +struct sLOCInjectPedometerDataRequest_TimeSource +{ + eQMILOCSensorTimeSources mSensorTimeSource; +}; + +// Structure to describe request TLV 0x02 for LOCInjectPedometerData() +struct sLOCInjectPedometerDataRequest_Timestamp +{ + UINT32 mTimestampInMilliseconds; +}; + +// Structure to describe request TLV 0x03 for LOCInjectPedometerData() +struct sLOCInjectPedometerDataRequest_TimeInterval +{ + UINT32 mTimeIntervalInMilliseconds; +}; + +// Structure to describe request TLV 0x04 for LOCInjectPedometerData() +struct sLOCInjectPedometerDataRequest_StepCount +{ + UINT32 mStepCount; +}; + +// Structure to describe request TLV 0x10 for LOCInjectPedometerData() +struct sLOCInjectPedometerDataRequest_StepConfidence +{ + UINT8 mStepConfidence; +}; + +// Structure to describe request TLV 0x11 for LOCInjectPedometerData() +struct sLOCInjectPedometerDataRequest_StepCountUncertainty +{ + float mStepCountUncertainty; +}; + +// Structure to describe request TLV 0x12 for LOCInjectPedometerData() +struct sLOCInjectPedometerDataRequest_StepRate +{ + float mStepRate; +}; + +// Structure to describe indication TLV 0x01 for LOC InjectPedometerDataIndication +struct sLOCInjectPedometerDataIndication_Status +{ + eQMILOCGeofenceStatus mGeofenceStatus; +}; + +// Structure to describe request TLV 0x01 for LOCInjectWCDMACellInfo() +struct sLOCInjectWCDMACellInfoRequest_CellID +{ + UINT32 mMCC; + UINT32 mMNC; + UINT32 mCID; +}; + +// Structure to describe request TLV 0x02 for LOCInjectWCDMACellInfo() +struct sLOCInjectWCDMACellInfoRequest_Roaming +{ + UINT32 mRoamingStatus; +}; + +// Structure to describe request TLV 0x10 for LOCInjectWCDMACellInfo() +struct sLOCInjectWCDMACellInfoRequest_Frequency +{ + UINT32 mServingCellFrequency; +}; + +// Structure to describe request TLV 0x11 for LOCInjectWCDMACellInfo() +struct sLOCInjectWCDMACellInfoRequest_PSC +{ + UINT32 mPSC; +}; + +// Structure to describe indication TLV 0x01 for LOC InjectWCDMACellInfoIndication +struct sLOCInjectWCDMACellInfoIndication_Status +{ + eQMILOCGeofenceStatus mGeofenceStatus; +}; + +// Structure to describe request TLV 0x01 for LOCInjectTDSCDMACellInfo() +struct sLOCInjectTDSCDMACellInfoRequest_CellID +{ + UINT32 mMCC; + UINT32 mMNC; + UINT32 mCID; + UINT32 mLAC; +}; + +// Structure to describe request TLV 0x02 for LOCInjectTDSCDMACellInfo() +struct sLOCInjectTDSCDMACellInfoRequest_Roaming +{ + UINT32 mRoamingStatus; +}; + +// Structure to describe request TLV 0x10 for LOCInjectTDSCDMACellInfo() +struct sLOCInjectTDSCDMACellInfoRequest_Frequency +{ + UINT32 mServingCellFrequency; +}; + +// Structure to describe indication TLV 0x01 for LOC InjectTDSCDMACellInfoIndication +struct sLOCInjectTDSCDMACellInfoIndication_Status +{ + eQMILOCGeofenceStatus mGeofenceStatus; +}; + +// Structure to describe request TLV 0x10 for LOCInjectSubscriberID() +struct sLOCInjectSubscriberIDRequest_IMSI +{ + UINT64 mPreferredIMSI; +}; + +// Structure to describe request TLV 0x11 for LOCInjectSubscriberID() +struct sLOCInjectSubscriberIDRequest_MSISDN +{ + UINT64 mPreferredMSISDN; +}; + +// Structure to describe indication TLV 0x01 for LOC InjectSubscriberIDIndication +struct sLOCInjectSubscriberIDIndication_Status +{ + eQMILOCGeofenceStatus mGeofenceStatus; +}; + +// Structure to describe request TLV 0x10 for WDASetDataFormat() +struct sWDASetDataFormatRequest_QoSDataFormat +{ + INT8 mQoSFlowHeaderPresent; +}; + +// Structure to describe request TLV 0x11 for WDASetDataFormat() +struct sWDASetDataFormatRequest_LinkLayerProtocol +{ + eQMIWDALinkProtocols mLinkProtocol; +}; + +// Structure to describe request TLV 0x12 for WDASetDataFormat() +struct sWDASetDataFormatRequest_ULDataAggregationProtocol +{ + eQMIWDADataAggregationProtocols mDataAggregationProtocol; +}; + +// Structure to describe request TLV 0x13 for WDASetDataFormat() +struct sWDASetDataFormatRequest_DLDataAggregationProtocol +{ + eQMIWDADataAggregationProtocols mDataAggregationProtocol; +}; + +// Structure to describe request TLV 0x14 for WDASetDataFormat() +struct sWDASetDataFormatRequest_NDPSignature +{ + UINT32 mNDPSignature; +}; + +// Structure to describe request TLV 0x15 for WDASetDataFormat() +struct sWDASetDataFormatRequest_DLMaxAggregateDatagrams +{ + UINT32 mMaxAggregateDatagrams; +}; + +// Structure to describe request TLV 0x16 for WDASetDataFormat() +struct sWDASetDataFormatRequest_DLMaxAggregateSize +{ + UINT32 mMaxAggregateSizeInBytes; +}; + +// Structure to describe response TLV 0x10 for WDASetDataFormat() +struct sWDASetDataFormatResponse_QoSDataFormat +{ + INT8 mQoSFlowHeaderPresent; +}; + +// Structure to describe response TLV 0x11 for WDASetDataFormat() +struct sWDASetDataFormatResponse_LinkLayerProtocol +{ + eQMIWDALinkProtocols mLinkProtocol; +}; + +// Structure to describe response TLV 0x12 for WDASetDataFormat() +struct sWDASetDataFormatResponse_ULDataAggregationProtocol +{ + eQMIWDADataAggregationProtocols mDataAggregationProtocol; +}; + +// Structure to describe response TLV 0x13 for WDASetDataFormat() +struct sWDASetDataFormatResponse_DLDataAggregationProtocol +{ + eQMIWDADataAggregationProtocols mDataAggregationProtocol; +}; + +// Structure to describe response TLV 0x14 for WDASetDataFormat() +struct sWDASetDataFormatResponse_NDPSignature +{ + UINT32 mNDPSignature; +}; + +// Structure to describe response TLV 0x15 for WDASetDataFormat() +struct sWDASetDataFormatResponse_DLMaxAggregateDatagrams +{ + UINT32 mMaxAggregateDatagrams; +}; + +// Structure to describe response TLV 0x16 for WDASetDataFormat() +struct sWDASetDataFormatResponse_DLMaxAggregateSize +{ + UINT32 mMaxAggregateSizeInBytes; +}; + +// Structure to describe response TLV 0x10 for WDAGetDataFormat() +struct sWDAGetDataFormatResponse_QoSDataFormat +{ + INT8 mQoSFlowHeaderPresent; +}; + +// Structure to describe response TLV 0x11 for WDAGetDataFormat() +struct sWDAGetDataFormatResponse_LinkLayerProtocol +{ + eQMIWDALinkProtocols mLinkProtocol; +}; + +// Structure to describe response TLV 0x12 for WDAGetDataFormat() +struct sWDAGetDataFormatResponse_ULDataAggregationProtocol +{ + eQMIWDADataAggregationProtocols mDataAggregationProtocol; +}; + +// Structure to describe response TLV 0x13 for WDAGetDataFormat() +struct sWDAGetDataFormatResponse_DLDataAggregationProtocol +{ + eQMIWDADataAggregationProtocols mDataAggregationProtocol; +}; + +// Structure to describe response TLV 0x14 for WDAGetDataFormat() +struct sWDAGetDataFormatResponse_NDPSignature +{ + UINT32 mNDPSignature; +}; + +// Structure to describe response TLV 0x15 for WDAGetDataFormat() +struct sWDAGetDataFormatResponse_DLMaxAggregateDatagrams +{ + UINT32 mMaxAggregateDatagrams; +}; + +// Structure to describe response TLV 0x16 for WDAGetDataFormat() +struct sWDAGetDataFormatResponse_DLMaxAggregateSize +{ + UINT32 mMaxAggregateSizeInBytes; +}; + +// Structure to describe request TLV 0x01 for WDAEnablePacketFilter() +struct sWDAEnablePacketFilterRequest_RestrictiveFilter +{ + INT8 mRestrictiveFilter; +}; + +// Structure to describe response TLV 0x10 for WDAGetPacketFilterState() +struct sWDAGetPacketFilterStateResponse_FilterState +{ + INT8 mFilterEnabled; +}; + +// Structure to describe response TLV 0x11 for WDAGetPacketFilterState() +struct sWDAGetPacketFilterStateResponse_RestrictiveFilter +{ + INT8 mRestrictiveFilter; +}; + +// Structure to describe request TLV 0x10 for WDAAddPacketFilterRule() +struct sWDAAddPacketFilterRuleRequest_FilterHandle +{ + UINT32 mFilterHandle; +}; + +// Structure to describe request TLV 0x11 for WDAAddPacketFilterRule() +struct sWDAAddPacketFilterRuleRequest_FilterRule1 +{ + UINT8 mPatternLength; + + // This array must be the size specified by mPatternLength + // UINT8 mPattern[1]; +}; + +struct sWDAAddPacketFilterRuleRequest_FilterRule2 +{ + UINT8 mMaskLength; + + // This array must be the size specified by mMaskLength + // UINT8 mMask[1]; +}; + +struct sWDAAddPacketFilterRuleRequest_FilterRule +{ + sWDAAddPacketFilterRuleRequest_FilterRule1 mWDAAddPacketFilterRuleRequest_FilterRule1; + sWDAAddPacketFilterRuleRequest_FilterRule2 mWDAAddPacketFilterRuleRequest_FilterRule2; +}; + +// Structure to describe request TLV 0x10 for WDADeletePacketFilterRule() +struct sWDADeletePacketFilterRuleRequest_FilterHandle +{ + UINT32 mFilterHandle; +}; + +// Structure to describe response TLV 0x10 for WDADeletePacketFilterRule() +struct sWDADeletePacketFilterRuleResponse_FilterHandle +{ + UINT32 mFilterHandle; +}; + +// Structure to describe response TLV 0x10 for WDAGetPacketFilterRuleHandles() +struct sWDAGetPacketFilterRuleHandlesResponse_FilterHandles +{ + UINT8 mHandleCount; + + // This array must be the size specified by mHandleCount + // UINT32 mFilterHandle[1]; +}; + +// Structure to describe request TLV 0x01 for WDAGetPacketFilterRule() +struct sWDAGetPacketFilterRuleRequest_FilterHandle +{ + UINT32 mFilterHandle; +}; + +// Structure to describe response TLV 0x10 for WDAGetPacketFilterRule() +struct sWDAGetPacketFilterRuleResponse_FilterHandle +{ + UINT32 mFilterHandle; +}; + +// Structure to describe response TLV 0x11 for WDAGetPacketFilterRule() +struct sWDAGetPacketFilterRuleResponse_FilterRule1 +{ + UINT8 mPatternLength; + + // This array must be the size specified by mPatternLength + // UINT8 mPattern[1]; +}; + +struct sWDAGetPacketFilterRuleResponse_FilterRule2 +{ + UINT8 mMaskLength; + + // This array must be the size specified by mMaskLength + // UINT8 mMask[1]; +}; + +struct sWDAGetPacketFilterRuleResponse_FilterRule +{ + sWDAGetPacketFilterRuleResponse_FilterRule1 mWDAGetPacketFilterRuleResponse_FilterRule1; + sWDAGetPacketFilterRuleResponse_FilterRule2 mWDAGetPacketFilterRuleResponse_FilterRule2; +}; + +// Structure to describe request TLV 0x01 for WDASetLoopbackState() +struct sWDASetLoopbackStateRequest_LoopbackState +{ + INT8 mLoopbackStateEnabled; +}; + +// Structure to describe response TLV 0x10 for WDAGetLoopbackState() +struct sWDAGetLoopbackStateResponse_LoopbackState +{ + INT8 mLoopbackStateEnabled; +}; + +// Structure to describe request TLV 0x01 for QCMAPEnable() +struct sQCMAPEnableRequest_IPFamily +{ + eQMIQCMAPIPFamilies mIPFamily; +}; + +// Structure to describe request TLV 0x10 for QCMAPEnable() +struct sQCMAPEnableRequest_IPAddress +{ + UINT8 mSubnetMask[4]; + UINT8 mNATIPAddress[4]; + UINT8 mNATDNSAddress[4]; + UINT8 mUSBIPAddress[4]; + UINT8 mUSBGatewayAddress[4]; + UINT8 mApplicationsIPAddress[4]; + UINT8 mApplicationsGatewayAddress[4]; +}; + +// Structure to describe request TLV 0x11 for QCMAPEnable() +struct sQCMAPEnableRequest_NetworkPolicy +{ + bool m3GPP:1; + bool m3GPP2:1; + + // Padding out 62 bits + UINT8 mReserved1:6; + UINT8 mReserved2[7]; + + UINT8 m3GPP2ProfileID; + UINT8 m3GPPProfileID; +}; + +// Structure to describe request TLV 0x12 for QCMAPEnable() +struct sQCMAPEnableRequest_SSID2IPAddress +{ + UINT8 mIPv4Address[4]; + UINT8 mSubnetMask[4]; +}; + +// Structure to describe request TLV 0x13 for QCMAPEnable() +struct sQCMAPEnableRequest_NATType +{ + eQMIQCMAPNATTypes mNATType; +}; + +// Structure to describe response TLV 0x10 for QCMAPEnable() +struct sQCMAPEnableResponse_Handle +{ + UINT32 mMAPHandle; +}; + +// Structure to describe request TLV 0x01 for QCMAPDisable() +struct sQCMAPDisableRequest_Handle +{ + UINT32 mMAPHandle; +}; + +// Structure to describe request TLV 0x01 for QCMAPBringUpWWAN() +struct sQCMAPBringUpWWANRequest_Handle +{ + UINT32 mMAPHandle; +}; + +// Structure to describe indication TLV 0x01 for QCMAP BringUpWWANIndication +struct sQCMAPBringUpWWANIndication_Handle +{ + UINT32 mMAPHandle; +}; + +// Structure to describe indication TLV 0x02 for QCMAP BringUpWWANIndication +struct sQCMAPBringUpWWANIndication_IPFamily +{ + eQMIQCMAPIPFamilies mIPFamily; +}; + +// Structure to describe request TLV 0x01 for QCMAPTearDownWWAN() +struct sQCMAPTearDownWWANRequest_Handle +{ + UINT32 mMAPHandle; +}; + +// Structure to describe indication TLV 0x01 for QCMAP TearDownWWANIndication +struct sQCMAPTearDownWWANIndication_Handle +{ + UINT32 mMAPHandle; +}; + +// Structure to describe indication TLV 0x02 for QCMAP TearDownWWANIndication +struct sQCMAPTearDownWWANIndication_IPFamily +{ + eQMIQCMAPIPFamilies mIPFamily; +}; + +// Structure to describe request TLV 0x01 for QCMAPGetWWANStatus() +struct sQCMAPGetWWANStatusRequest_Handle +{ + UINT32 mMAPHandle; +}; + +// Structure to describe response TLV 0x10 for QCMAPGetWWANStatus() +struct sQCMAPGetWWANStatusResponse_CallEndReason +{ + eQMIQCMAPCallEndReasons mCallEndReason; +}; + +// Structure to describe response TLV 0x11 for QCMAPGetWWANStatus() +struct sQCMAPGetWWANStatusResponse_VerboseCallEndReason +{ + eQMIQCMAPVerboseCallEndReasons mVerboseCallEndReason; +}; + +// Structure to describe response TLV 0x12 for QCMAPGetWWANStatus() +struct sQCMAPGetWWANStatusResponse_PacketServiceStatus +{ + eQMIQCMAPPacketServiceStatus mPacketServiceStatus; +}; + +// Structure to describe request TLV 0x01 for QCMAPGetIPSecVPNPassthrough() +struct sQCMAPGetIPSecVPNPassthroughRequest_Handle +{ + UINT32 mMAPHandle; +}; + +// Structure to describe response TLV 0x10 for QCMAPGetIPSecVPNPassthrough() +struct sQCMAPGetIPSecVPNPassthroughResponse_Passthrough +{ + INT8 mVPNPassthroughAllowed; +}; + +// Structure to describe request TLV 0x01 for QCMAPSetIPSecVPNPassthrough() +struct sQCMAPSetIPSecVPNPassthroughRequest_Handle +{ + UINT32 mMAPHandle; +}; + +// Structure to describe request TLV 0x02 for QCMAPSetIPSecVPNPassthrough() +struct sQCMAPSetIPSecVPNPassthroughRequest_Passthrough +{ + INT8 mVPNPassthroughAllowed; +}; + +// Structure to describe request TLV 0x01 for QCMAPGetPPTPVPNPassthrough() +struct sQCMAPGetPPTPVPNPassthroughRequest_Handle +{ + UINT32 mMAPHandle; +}; + +// Structure to describe response TLV 0x10 for QCMAPGetPPTPVPNPassthrough() +struct sQCMAPGetPPTPVPNPassthroughResponse_Passthrough +{ + INT8 mVPNPassthroughAllowed; +}; + +// Structure to describe request TLV 0x01 for QCMAPSetPPTPVPNPassthrough() +struct sQCMAPSetPPTPVPNPassthroughRequest_Handle +{ + UINT32 mMAPHandle; +}; + +// Structure to describe request TLV 0x02 for QCMAPSetPPTPVPNPassthrough() +struct sQCMAPSetPPTPVPNPassthroughRequest_Passthrough +{ + INT8 mVPNPassthroughAllowed; +}; + +// Structure to describe request TLV 0x01 for QCMAPGetL2TPVPNPassthrough() +struct sQCMAPGetL2TPVPNPassthroughRequest_Handle +{ + UINT32 mMAPHandle; +}; + +// Structure to describe response TLV 0x10 for QCMAPGetL2TPVPNPassthrough() +struct sQCMAPGetL2TPVPNPassthroughResponse_Passthrough +{ + INT8 mVPNPassthroughAllowed; +}; + +// Structure to describe request TLV 0x01 for QCMAPSetL2TPVPNPassthrough() +struct sQCMAPSetL2TPVPNPassthroughRequest_Handle +{ + UINT32 mMAPHandle; +}; + +// Structure to describe request TLV 0x02 for QCMAPSetL2TPVPNPassthrough() +struct sQCMAPSetL2TPVPNPassthroughRequest_Passthrough +{ + INT8 mVPNPassthroughAllowed; +}; + +// Structure to describe request TLV 0x01 for QCMAPGetDynamicNATEntryTimeout() +struct sQCMAPGetDynamicNATEntryTimeoutRequest_Handle +{ + UINT32 mMAPHandle; +}; + +// Structure to describe response TLV 0x10 for QCMAPGetDynamicNATEntryTimeout() +struct sQCMAPGetDynamicNATEntryTimeoutResponse_Timeout +{ + UINT16 mTimeout; +}; + +// Structure to describe request TLV 0x01 for QCMAPSetDynamicNATEntryTimeout() +struct sQCMAPSetDynamicNATEntryTimeoutRequest_Handle +{ + UINT32 mMAPHandle; +}; + +// Structure to describe request TLV 0x02 for QCMAPSetDynamicNATEntryTimeout() +struct sQCMAPSetDynamicNATEntryTimeoutRequest_Timeout +{ + UINT16 mTimeout; +}; + +// Structure to describe request TLV 0x01 for QCMAPAddStaticNATEntry() +struct sQCMAPAddStaticNATEntryRequest_Handle +{ + UINT32 mMAPHandle; +}; + +// Structure to describe request TLV 0x02 for QCMAPAddStaticNATEntry() +struct sQCMAPAddStaticNATEntryRequest_SNATEntry +{ + UINT8 mPrivateIPAddress[4]; + UINT16 mPrivatePort; + UINT16 mGlobalPort; + UINT8 mProtocol; +}; + +// Structure to describe request TLV 0x01 for QCMAPDeleteStaticNATEntry() +struct sQCMAPDeleteStaticNATEntryRequest_Handle +{ + UINT32 mMAPHandle; +}; + +// Structure to describe request TLV 0x02 for QCMAPDeleteStaticNATEntry() +struct sQCMAPDeleteStaticNATEntryRequest_SNATEntry +{ + UINT8 mPrivateIPAddress[4]; + UINT16 mPrivatePort; + UINT16 mGlobalPort; + UINT8 mProtocol; +}; + +// Structure to describe request TLV 0x01 for QCMAPGetStaticNATEntries() +struct sQCMAPGetStaticNATEntriesRequest_Handle +{ + UINT32 mMAPHandle; +}; + +// Structure to describe response TLV 0x10 for QCMAPGetStaticNATEntries() +struct sQCMAPGetStaticNATEntriesResponse_SNATEntries +{ + UINT8 mSNATEntriesCount; + + struct sSNATEntry + { + UINT8 mPrivateIPAddress[4]; + UINT16 mPrivatePort; + UINT16 mGlobalPort; + UINT8 mProtocol; + }; + + // This array must be the size specified by mSNATEntriesCount + // sSNATEntry mSNATEntrys[1]; +}; + +// Structure to describe request TLV 0x01 for QCMAPSetDMZ() +struct sQCMAPSetDMZRequest_Handle +{ + UINT32 mMAPHandle; +}; + +// Structure to describe request TLV 0x02 for QCMAPSetDMZ() +struct sQCMAPSetDMZRequest_DMZIPAddress +{ + UINT8 mDMZIPAddress[4]; +}; + +// Structure to describe request TLV 0x01 for QCMAPDeleteDMZ() +struct sQCMAPDeleteDMZRequest_Handle +{ + UINT32 mMAPHandle; +}; + +// Structure to describe request TLV 0x01 for QCMAPGetDMZ() +struct sQCMAPGetDMZRequest_Handle +{ + UINT32 mMAPHandle; +}; + +// Structure to describe response TLV 0x10 for QCMAPGetDMZ() +struct sQCMAPGetDMZResponse_DMZIPAddress +{ + UINT8 mDMZIPAddress[4]; +}; + +// Structure to describe request TLV 0x01 for QCMAPGetWWANConfig() +struct sQCMAPGetWWANConfigRequest_Handle +{ + UINT32 mMAPHandle; +}; + +// Structure to describe request TLV 0x02 for QCMAPGetWWANConfig() +struct sQCMAPGetWWANConfigRequest_AddressType +{ + bool mIPv4Address:1; + bool mIPv6Address:1; + bool mIPv4DNSAddress:1; + bool mIPv6DNSAddress:1; + + // Padding out 60 bits + UINT8 mReserved1:4; + UINT8 mReserved2[7]; +}; + +// Structure to describe response TLV 0x10 for QCMAPGetWWANConfig() +struct sQCMAPGetWWANConfigResponse_IPv4Address +{ + UINT8 mIPv4Address[4]; +}; + +// Structure to describe response TLV 0x11 for QCMAPGetWWANConfig() +struct sQCMAPGetWWANConfigResponse_IPv6Address +{ + UINT16 mIPv6Address[8]; +}; + +// Structure to describe response TLV 0x12 for QCMAPGetWWANConfig() +struct sQCMAPGetWWANConfigResponse_IPv4PrimaryDNSAddress +{ + UINT8 mIPv4Address[4]; +}; + +// Structure to describe response TLV 0x13 for QCMAPGetWWANConfig() +struct sQCMAPGetWWANConfigResponse_IPv4SecondaryDNSAddress +{ + UINT8 mIPv4Address[4]; +}; + +// Structure to describe response TLV 0x14 for QCMAPGetWWANConfig() +struct sQCMAPGetWWANConfigResponse_IPv6PrimaryDNSAddress +{ + UINT16 mIPv6Address[8]; +}; + +// Structure to describe response TLV 0x15 for QCMAPGetWWANConfig() +struct sQCMAPGetWWANConfigResponse_IPv6SecondaryDNSAddress +{ + UINT16 mIPv6Address[8]; +}; + +// Structure to describe request TLV 0x01 for QCMAPEnableFirewallSetting() +struct sQCMAPEnableFirewallSettingRequest_Handle +{ + UINT32 mMAPHandle; +}; + +// Structure to describe request TLV 0x02 for QCMAPEnableFirewallSetting() +struct sQCMAPEnableFirewallSettingRequest_PacketsAllowed +{ + INT8 mPacketsMatchingFirewallRuleAllowed; +}; + +// Structure to describe request TLV 0x01 for QCMAPGetFirewallSetting() +struct sQCMAPGetFirewallSettingRequest_Handle +{ + UINT32 mMAPHandle; +}; + +// Structure to describe response TLV 0x10 for QCMAPGetFirewallSetting() +struct sQCMAPGetFirewallSettingResponse_FirewallEnabled +{ + INT8 mFirewallEnabled; +}; + +// Structure to describe response TLV 0x11 for QCMAPGetFirewallSetting() +struct sQCMAPGetFirewallSettingResponse_PacketsAllowed +{ + INT8 mPacketsMatchingFirewallRuleAllowed; +}; + +// Structure to describe request TLV 0x01 for QCMAPDisableFirewallSetting() +struct sQCMAPDisableFirewallSettingRequest_Handle +{ + UINT32 mMAPHandle; +}; + +// Structure to describe request TLV 0x01 for QCMAPAddFirewallConfig() +struct sQCMAPAddFirewallConfigRequest_Handle +{ + UINT32 mMAPHandle; +}; + +// Structure to describe request TLV 0x02 for QCMAPAddFirewallConfig() +struct sQCMAPAddFirewallConfigRequest_Config +{ + UINT16 mStartingDestinationPort; + UINT16 mEndingDestinationPort; + UINT8 mProtocol; +}; + +// Structure to describe response TLV 0x10 for QCMAPAddFirewallConfig() +struct sQCMAPAddFirewallConfigResponse_FirewallHandle +{ + UINT32 mFirewallHandle; +}; + +// Structure to describe request TLV 0x01 for QCMAPGetFirewallConfig() +struct sQCMAPGetFirewallConfigRequest_Handle +{ + UINT32 mMAPHandle; +}; + +// Structure to describe response TLV 0x10 for QCMAPGetFirewallConfig() +struct sQCMAPGetFirewallConfigResponse_FirewallEntries +{ + UINT8 mFirewallEntriesCount; + + struct sFirewallEntry + { + UINT32 mFirewallHandle; + UINT16 mStartingDestinationPort; + UINT16 mEndingDestinationPort; + UINT8 mProtocol; + }; + + // This array must be the size specified by mFirewallEntriesCount + // sFirewallEntry mFirewallEntrys[1]; +}; + +// Structure to describe request TLV 0x01 for QCMAPDeleteFirewallConfig() +struct sQCMAPDeleteFirewallConfigRequest_Handle +{ + UINT32 mMAPHandle; +}; + +// Structure to describe request TLV 0x02 for QCMAPDeleteFirewallConfig() +struct sQCMAPDeleteFirewallConfigRequest_FirewallHandle +{ + UINT32 mFirewallHandle; +}; + +// Structure to describe request TLV 0x01 for QCMAPWWANStatusIndicationRegister() +struct sQCMAPWWANStatusIndicationRegisterRequest_Handle +{ + UINT32 mMAPHandle; +}; + +// Structure to describe request TLV 0x02 for QCMAPWWANStatusIndicationRegister() +struct sQCMAPWWANStatusIndicationRegisterRequest_Registration +{ + INT8 mRegisterForIndication; +}; + +// Structure to describe request TLV 0x01 for QCMAPStationModeEnable() +struct sQCMAPStationModeEnableRequest_Handle +{ + UINT32 mMAPHandle; +}; + +// Structure to describe request TLV 0x01 for QCMAPStationModeDisable() +struct sQCMAPStationModeDisableRequest_Handle +{ + UINT32 mMAPHandle; +}; + +// Structure to describe request TLV 0x01 for QCMAPGetStationMode() +struct sQCMAPGetStationModeRequest_Handle +{ + UINT32 mMAPHandle; +}; + +// Structure to describe response TLV 0x10 for QCMAPGetStationMode() +struct sQCMAPGetStationModeResponse_StationMode +{ + INT8 mStationModeEnabled; +}; + +// Structure to describe indication TLV 0x01 for QCMAP WWANStatusIndication +struct sQCMAPWWANStatusIndication_Handle +{ + UINT32 mMAPHandle; +}; + +// Structure to describe indication TLV 0x02 for QCMAP WWANStatusIndication +struct sQCMAPWWANStatusIndication_IPFamily +{ + eQMIQCMAPIPFamilies mIPFamily; +}; + +// Structure to describe indication TLV 0x03 for QCMAP WWANStatusIndication +struct sQCMAPWWANStatusIndication_PacketServiceStatus +{ + eQMIQCMAPPacketServiceStatus mPacketServiceStatus; +}; + +// Structure to describe indication TLV 0x04 for QCMAP WWANStatusIndication +struct sQCMAPWWANStatusIndication_ReconfigRequired +{ + INT8 mReconfigurationRequired; +}; + +// Structure to describe indication TLV 0x10 for QCMAP WWANStatusIndication +struct sQCMAPWWANStatusIndication_CallEndReason +{ + eQMIQCMAPCallEndReasons mCallEndReason; +}; + +// Structure to describe indication TLV 0x11 for QCMAP WWANStatusIndication +struct sQCMAPWWANStatusIndication_VerboseCallEndReason +{ + eQMIQCMAPVerboseCallEndReasons mVerboseCallEndReason; +}; + +// Structure to describe request TLV 0x01 for QCMAPAddExtendedFirewallConfig() +struct sQCMAPAddExtendedFirewallConfigRequest_Handle +{ + UINT32 mMAPHandle; +}; + +// Structure to describe request TLV 0x02 for QCMAPAddExtendedFirewallConfig() +struct sQCMAPAddExtendedFirewallConfigRequest_NextHeaderProtocol +{ + eQMIQCMAPNextHeaderProtocols mNextHeaderProtocol; +}; + +// Structure to describe request TLV 0x10 for QCMAPAddExtendedFirewallConfig() +struct sQCMAPAddExtendedFirewallConfigRequest_TCPUDPSource +{ + UINT16 mPort; + UINT16 mRange; +}; + +// Structure to describe request TLV 0x11 for QCMAPAddExtendedFirewallConfig() +struct sQCMAPAddExtendedFirewallConfigRequest_TCPUDPDestination +{ + UINT16 mPort; + UINT16 mRange; +}; + +// Structure to describe request TLV 0x12 for QCMAPAddExtendedFirewallConfig() +struct sQCMAPAddExtendedFirewallConfigRequest_ICMPType +{ + UINT8 mICMPType; +}; + +// Structure to describe request TLV 0x13 for QCMAPAddExtendedFirewallConfig() +struct sQCMAPAddExtendedFirewallConfigRequest_ICMPCode +{ + UINT8 mICMPCode; +}; + +// Structure to describe request TLV 0x14 for QCMAPAddExtendedFirewallConfig() +struct sQCMAPAddExtendedFirewallConfigRequest_ESPSPI +{ + UINT32 mESPSPI; +}; + +// Structure to describe request TLV 0x15 for QCMAPAddExtendedFirewallConfig() +struct sQCMAPAddExtendedFirewallConfigRequest_IPv4SourceAddress +{ + UINT8 mIPv4Address[4]; + UINT8 mSubnetMask[4]; +}; + +// Structure to describe request TLV 0x16 for QCMAPAddExtendedFirewallConfig() +struct sQCMAPAddExtendedFirewallConfigRequest_IPv4DestinationAddress +{ + UINT8 mIPv4Address[4]; + UINT8 mSubnetMask[4]; +}; + +// Structure to describe request TLV 0x17 for QCMAPAddExtendedFirewallConfig() +struct sQCMAPAddExtendedFirewallConfigRequest_IPv4TOS +{ + UINT8 mTOSValue; + UINT8 mTOSMask; +}; + +// Structure to describe request TLV 0x18 for QCMAPAddExtendedFirewallConfig() +struct sQCMAPAddExtendedFirewallConfigRequest_IPv6SourceAddress +{ + UINT16 mIPv6Address[8]; + UINT8 mPrefixLength; +}; + +// Structure to describe request TLV 0x19 for QCMAPAddExtendedFirewallConfig() +struct sQCMAPAddExtendedFirewallConfigRequest_IPv6DestinationAddress +{ + UINT16 mIPv6Address[8]; + UINT8 mPrefixLength; +}; + +// Structure to describe request TLV 0x1A for QCMAPAddExtendedFirewallConfig() +struct sQCMAPAddExtendedFirewallConfigRequest_IPv6TrafficClass +{ + UINT8 mTrafficClassValue; + UINT8 mTrafficClassMask; +}; + +// Structure to describe response TLV 0x10 for QCMAPAddExtendedFirewallConfig() +struct sQCMAPAddExtendedFirewallConfigResponse_FirewallHandle +{ + UINT32 mFirewallHandle; +}; + +// Structure to describe request TLV 0x01 for QCMAPGetExtendedFirewallConfig() +struct sQCMAPGetExtendedFirewallConfigRequest_Handle +{ + UINT32 mMAPHandle; +}; + +// Structure to describe request TLV 0x02 for QCMAPGetExtendedFirewallConfig() +struct sQCMAPGetExtendedFirewallConfigRequest_FirewallHandle +{ + UINT32 mFirewallHandle; +}; + +// Structure to describe response TLV 0x10 for QCMAPGetExtendedFirewallConfig() +struct sQCMAPGetExtendedFirewallConfigResponse_NextHeaderProtocol +{ + eQMIQCMAPNextHeaderProtocols mNextHeaderProtocol; +}; + +// Structure to describe response TLV 0x11 for QCMAPGetExtendedFirewallConfig() +struct sQCMAPGetExtendedFirewallConfigResponse_TCPUDPSource +{ + UINT16 mPort; + UINT16 mRange; +}; + +// Structure to describe response TLV 0x12 for QCMAPGetExtendedFirewallConfig() +struct sQCMAPGetExtendedFirewallConfigResponse_TCPUDPDestination +{ + UINT16 mPort; + UINT16 mRange; +}; + +// Structure to describe response TLV 0x13 for QCMAPGetExtendedFirewallConfig() +struct sQCMAPGetExtendedFirewallConfigResponse_ICMPType +{ + UINT8 mICMPType; +}; + +// Structure to describe response TLV 0x14 for QCMAPGetExtendedFirewallConfig() +struct sQCMAPGetExtendedFirewallConfigResponse_ICMPCode +{ + UINT8 mICMPCode; +}; + +// Structure to describe response TLV 0x15 for QCMAPGetExtendedFirewallConfig() +struct sQCMAPGetExtendedFirewallConfigResponse_ESPSPI +{ + UINT32 mESPSPI; +}; + +// Structure to describe response TLV 0x16 for QCMAPGetExtendedFirewallConfig() +struct sQCMAPGetExtendedFirewallConfigResponse_IPv4SourceAddress +{ + UINT8 mIPv4Address[4]; + UINT8 mSubnetMask[4]; +}; + +// Structure to describe response TLV 0x17 for QCMAPGetExtendedFirewallConfig() +struct sQCMAPGetExtendedFirewallConfigResponse_IPv4DestinationAddress +{ + UINT8 mIPv4Address[4]; + UINT8 mSubnetMask[4]; +}; + +// Structure to describe response TLV 0x18 for QCMAPGetExtendedFirewallConfig() +struct sQCMAPGetExtendedFirewallConfigResponse_IPv4TOS +{ + UINT8 mTOSValue; + UINT8 mTOSMask; +}; + +// Structure to describe response TLV 0x19 for QCMAPGetExtendedFirewallConfig() +struct sQCMAPGetExtendedFirewallConfigResponse_IPv6SourceAddress +{ + UINT16 mIPv6Address[8]; + UINT8 mPrefixLength; +}; + +// Structure to describe response TLV 0x1A for QCMAPGetExtendedFirewallConfig() +struct sQCMAPGetExtendedFirewallConfigResponse_IPv6DestinationAddress +{ + UINT16 mIPv6Address[8]; + UINT8 mPrefixLength; +}; + +// Structure to describe response TLV 0x1B for QCMAPGetExtendedFirewallConfig() +struct sQCMAPGetExtendedFirewallConfigResponse_IPv6TrafficClass +{ + UINT8 mTrafficClassValue; + UINT8 mTrafficClassMask; +}; + +// Structure to describe request TLV 0x01 for QCMAPGetFirewallHandles() +struct sQCMAPGetFirewallHandlesRequest_Handle +{ + UINT32 mMAPHandle; +}; + +// Structure to describe response TLV 0x10 for QCMAPGetFirewallHandles() +struct sQCMAPGetFirewallHandlesResponse_Handles +{ + UINT8 mFirewallHandlesCount; + + // This array must be the size specified by mFirewallHandlesCount + // UINT32 mFirewallHandle[1]; +}; + +// Structure to describe request TLV 0x01 for QCMAPChangeNATType() +struct sQCMAPChangeNATTypeRequest_Handle +{ + UINT32 mMAPHandle; +}; + +// Structure to describe request TLV 0x10 for QCMAPChangeNATType() +struct sQCMAPChangeNATTypeRequest_NATType +{ + eQMIQCMAPNATTypes mNATType; +}; + +// Structure to describe request TLV 0x01 for QCMAPGetNATType() +struct sQCMAPGetNATTypeRequest_Handle +{ + UINT32 mMAPHandle; +}; + +// Structure to describe response TLV 0x10 for QCMAPGetNATType() +struct sQCMAPGetNATTypeResponse_NATType +{ + eQMIQCMAPNATTypes mNATType; +}; + +// Structure to describe request TLV 0x10 for PDCRegisterForIndications() +struct sPDCRegisterForIndicationsRequest_Config +{ + INT8 mEnableReporting; +}; + +// Structure to describe indication TLV 0x01 for PDC ConfigChangeIndication +struct sPDCConfigChangeIndication_Config +{ + eQMIPDCConfigurations mConfigType; + UINT8 mConfigIDLength; + + // This array must be the size specified by mConfigIDLength + // UINT8 mConfigID[1]; +}; + +// Structure to describe request TLV 0x01 for PDCGetSelectedConfig() +struct sPDCGetSelectedConfigRequest_Type +{ + eQMIPDCConfigurations mConfigType; +}; + +// Structure to describe request TLV 0x10 for PDCGetSelectedConfig() +struct sPDCGetSelectedConfigRequest_Token +{ + UINT32 mToken; +}; + +// Structure to describe indication TLV 0x01 for PDC GetSelectedConfigIndication +struct sPDCGetSelectedConfigIndication_Error +{ + eQMIErrors mQMIError; +}; + +// Structure to describe indication TLV 0x10 for PDC GetSelectedConfigIndication +struct sPDCGetSelectedConfigIndication_Token +{ + UINT32 mToken; +}; + +// Structure to describe indication TLV 0x11 for PDC GetSelectedConfigIndication +struct sPDCGetSelectedConfigIndication_ActiveID +{ + UINT8 mConfigIDLength; + + // This array must be the size specified by mConfigIDLength + // UINT8 mConfigID[1]; +}; + +// Structure to describe indication TLV 0x12 for PDC GetSelectedConfigIndication +struct sPDCGetSelectedConfigIndication_PendingID +{ + UINT8 mConfigIDLength; + + // This array must be the size specified by mConfigIDLength + // UINT8 mConfigID[1]; +}; + +// Structure to describe request TLV 0x01 for PDCSetSelectedConfig() +struct sPDCSetSelectedConfigRequest_Config +{ + eQMIPDCConfigurations mConfigType; + UINT8 mConfigIDLength; + + // This array must be the size specified by mConfigIDLength + // UINT8 mConfigID[1]; +}; + +// Structure to describe request TLV 0x10 for PDCSetSelectedConfig() +struct sPDCSetSelectedConfigRequest_Token +{ + UINT32 mToken; +}; + +// Structure to describe indication TLV 0x01 for PDC SetSelectedConfigIndication +struct sPDCSetSelectedConfigIndication_Error +{ + eQMIErrors mQMIError; +}; + +// Structure to describe indication TLV 0x10 for PDC SetSelectedConfigIndication +struct sPDCSetSelectedConfigIndication_Token +{ + UINT32 mToken; +}; + +// Structure to describe request TLV 0x10 for PDCListConfigs() +struct sPDCListConfigsRequest_Token +{ + UINT32 mToken; +}; + +// Structure to describe request TLV 0x11 for PDCListConfigs() +struct sPDCListConfigsRequest_Type +{ + eQMIPDCConfigurations mConfigType; +}; + +// Structure to describe indication TLV 0x01 for PDC ListConfigsIndication +struct sPDCListConfigsIndication_Error +{ + eQMIErrors mQMIError; +}; + +// Structure to describe indication TLV 0x10 for PDC ListConfigsIndication +struct sPDCListConfigsIndication_Token +{ + UINT32 mToken; +}; + +// Structure to describe indication TLV 0x11 for PDC ListConfigsIndication +struct sPDCListConfigsIndication_List +{ + UINT8 mConfigListLength; + + struct sConfig + { + eQMIPDCConfigurations mConfigType; + UINT8 mConfigIDLength; + + // This array must be the size specified by mConfigIDLength + // UINT8 mConfigID[1]; + }; + + // This array must be the size specified by mConfigListLength + // sConfig mConfigs[1]; +}; + +// Structure to describe request TLV 0x01 for PDCDeleteConfig() +struct sPDCDeleteConfigRequest_Type +{ + eQMIPDCConfigurations mConfigType; +}; + +// Structure to describe request TLV 0x10 for PDCDeleteConfig() +struct sPDCDeleteConfigRequest_Token +{ + UINT32 mToken; +}; + +// Structure to describe request TLV 0x11 for PDCDeleteConfig() +struct sPDCDeleteConfigRequest_ID +{ + UINT8 mConfigIDLength; + + // This array must be the size specified by mConfigIDLength + // UINT8 mConfigID[1]; +}; + +// Structure to describe indication TLV 0x01 for PDC DeleteConfigIndication +struct sPDCDeleteConfigIndication_Error +{ + eQMIErrors mQMIError; +}; + +// Structure to describe indication TLV 0x10 for PDC DeleteConfigIndication +struct sPDCDeleteConfigIndication_Token +{ + UINT32 mToken; +}; + +// Structure to describe request TLV 0x01 for PDCLoadConfig() +struct sPDCLoadConfigRequest_Frame1 +{ + eQMIPDCConfigurations mConfigType; + UINT8 mConfigIDLength; + + // This array must be the size specified by mConfigIDLength + // UINT8 mConfigID[1]; +}; + +struct sPDCLoadConfigRequest_Frame2 +{ + UINT32 mTotalSize; + UINT16 mFrameSize; + + // This array must be the size specified by mFrameSize + // UINT8 mFrame[1]; +}; + +struct sPDCLoadConfigRequest_Frame +{ + sPDCLoadConfigRequest_Frame1 mPDCLoadConfigRequest_Frame1; + sPDCLoadConfigRequest_Frame2 mPDCLoadConfigRequest_Frame2; +}; + +// Structure to describe request TLV 0x10 for PDCLoadConfig() +struct sPDCLoadConfigRequest_Token +{ + UINT32 mToken; +}; + +// Structure to describe response TLV 0x10 for PDCLoadConfig() +struct sPDCLoadConfigResponse_Reset +{ + INT8 mFrameReset; +}; + +// Structure to describe indication TLV 0x01 for PDC LoadConfigIndication +struct sPDCLoadConfigIndication_Error +{ + eQMIErrors mQMIError; +}; + +// Structure to describe indication TLV 0x10 for PDC LoadConfigIndication +struct sPDCLoadConfigIndication_Token +{ + UINT32 mToken; +}; + +// Structure to describe indication TLV 0x11 for PDC LoadConfigIndication +struct sPDCLoadConfigIndication_Received +{ + UINT32 mReceivedSize; +}; + +// Structure to describe indication TLV 0x12 for PDC LoadConfigIndication +struct sPDCLoadConfigIndication_Remaining +{ + UINT32 mRemainingSize; +}; + +// Structure to describe indication TLV 0x13 for PDC LoadConfigIndication +struct sPDCLoadConfigIndication_Reset +{ + INT8 mFrameReset; +}; + +// Structure to describe request TLV 0x01 for PDCActivateConfig() +struct sPDCActivateConfigRequest_Type +{ + eQMIPDCConfigurations mConfigType; +}; + +// Structure to describe request TLV 0x10 for PDCActivateConfig() +struct sPDCActivateConfigRequest_Token +{ + UINT32 mToken; +}; + +// Structure to describe indication TLV 0x01 for PDC ActivateConfigIndication +struct sPDCActivateConfigIndication_Error +{ + eQMIErrors mQMIError; +}; + +// Structure to describe indication TLV 0x10 for PDC ActivateConfigIndication +struct sPDCActivateConfigIndication_Token +{ + UINT32 mToken; +}; + +// Structure to describe request TLV 0x01 for PDCGetConfigInfo() +struct sPDCGetConfigInfoRequest_Config +{ + eQMIPDCConfigurations mConfigType; + UINT8 mConfigIDLength; + + // This array must be the size specified by mConfigIDLength + // UINT8 mConfigID[1]; +}; + +// Structure to describe request TLV 0x10 for PDCGetConfigInfo() +struct sPDCGetConfigInfoRequest_Token +{ + UINT32 mToken; +}; + +// Structure to describe indication TLV 0x01 for PDC GetConfigInfoIndication +struct sPDCGetConfigInfoIndication_Error +{ + eQMIErrors mQMIError; +}; + +// Structure to describe indication TLV 0x10 for PDC GetConfigInfoIndication +struct sPDCGetConfigInfoIndication_Token +{ + UINT32 mToken; +}; + +// Structure to describe indication TLV 0x11 for PDC GetConfigInfoIndication +struct sPDCGetConfigInfoIndication_Size +{ + UINT32 mTotalSize; +}; + +// Structure to describe indication TLV 0x12 for PDC GetConfigInfoIndication +struct sPDCGetConfigInfoIndication_Description +{ + UINT8 mDescriptionLength; + + // This array must be the size specified by mDescriptionLength + // char mDescription[1]; +}; + +// Structure to describe indication TLV 0x13 for PDC GetConfigInfoIndication +struct sPDCGetConfigInfoIndication_Version +{ + UINT32 mVersion; +}; + +// Structure to describe request TLV 0x01 for PDCGetConfigLimits() +struct sPDCGetConfigLimitsRequest_Type +{ + eQMIPDCConfigurations mConfigType; +}; + +// Structure to describe request TLV 0x10 for PDCGetConfigLimits() +struct sPDCGetConfigLimitsRequest_Token +{ + UINT32 mToken; +}; + +// Structure to describe indication TLV 0x01 for PDC GetConfigLimitsIndication +struct sPDCGetConfigLimitsIndication_Error +{ + eQMIErrors mQMIError; +}; + +// Structure to describe indication TLV 0x10 for PDC GetConfigLimitsIndication +struct sPDCGetConfigLimitsIndication_Token +{ + UINT32 mToken; +}; + +// Structure to describe indication TLV 0x11 for PDC GetConfigLimitsIndication +struct sPDCGetConfigLimitsIndication_MaximumSize +{ + UINT64 mMaximumSize; +}; + +// Structure to describe indication TLV 0x12 for PDC GetConfigLimitsIndication +struct sPDCGetConfigLimitsIndication_CurrentSize +{ + UINT64 mCurrentSize; +}; + +// Structure to describe request TLV 0x01 for PDCGetDefaultConfigInfo() +struct sPDCGetDefaultConfigInfoRequest_Type +{ + eQMIPDCConfigurations mConfigType; +}; + +// Structure to describe request TLV 0x10 for PDCGetDefaultConfigInfo() +struct sPDCGetDefaultConfigInfoRequest_Token +{ + UINT32 mToken; +}; + +// Structure to describe indication TLV 0x01 for PDC GetDefaultConfigInfoIndication +struct sPDCGetDefaultConfigInfoIndication_Error +{ + eQMIErrors mQMIError; +}; + +// Structure to describe indication TLV 0x10 for PDC GetDefaultConfigInfoIndication +struct sPDCGetDefaultConfigInfoIndication_Token +{ + UINT32 mToken; +}; + +// Structure to describe indication TLV 0x11 for PDC GetDefaultConfigInfoIndication +struct sPDCGetDefaultConfigInfoIndication_Version +{ + UINT32 mVersion; +}; + +// Structure to describe indication TLV 0x12 for PDC GetDefaultConfigInfoIndication +struct sPDCGetDefaultConfigInfoIndication_Size +{ + UINT32 mTotalSize; +}; + +// Structure to describe indication TLV 0x13 for PDC GetDefaultConfigInfoIndication +struct sPDCGetDefaultConfigInfoIndication_Description +{ + UINT8 mDescriptionLength; + + // This array must be the size specified by mDescriptionLength + // char mDescription[1]; +}; + +// Structure to describe request TLV 0x01 for PDCDeactivateConfig() +struct sPDCDeactivateConfigRequest_Type +{ + eQMIPDCConfigurations mConfigType; +}; + +// Structure to describe request TLV 0x10 for PDCDeactivateConfig() +struct sPDCDeactivateConfigRequest_Token +{ + UINT32 mToken; +}; + +// Structure to describe indication TLV 0x01 for PDC DeactivateConfigIndication +struct sPDCDeactivateConfigIndication_Error +{ + eQMIErrors mQMIError; +}; + +// Structure to describe indication TLV 0x10 for PDC DeactivateConfigIndication +struct sPDCDeactivateConfigIndication_Token +{ + UINT32 mToken; +}; + +// Structure to describe request TLV 0x01 for RFRPESetRFMScenario() +struct sRFRPESetRFMScenarioRequest_Scenarios +{ + UINT8 mScenarioCount; + + // This array must be the size specified by mScenarioCount + // UINT32 mScenarioNumber[1]; +}; + +// Structure to describe response TLV 0x10 for RFRPEGetRFMScenario() +struct sRFRPEGetRFMScenarioResponse_Scenarios +{ + UINT8 mScenarioCount; + + // This array must be the size specified by mScenarioCount + // UINT32 mScenarioNumber[1]; +}; + +// Structure to describe response TLV 0x10 for RFRPEGetProvisionedTableRevision() +struct sRFRPEGetProvisionedTableRevisionResponse_Revision +{ + UINT32 mProvisionedTableRevision; +}; + +// Structure to describe response TLV 0x11 for RFRPEGetProvisionedTableRevision() +struct sRFRPEGetProvisionedTableRevisionResponse_Names +{ + UINT8 mProvisionedTableOEMNameLength; + + // This array must be the size specified by mProvisionedTableOEMNameLength + // UINT16 mProvisionedTableOEMName[1]; +}; + +// Structure to describe request TLV 0x10 for CATSetEventReport() +struct sCATSetEventReportRequest_ReportMask +{ + bool mDisplayText:1; + bool mGetInkey:1; + bool mGetInput:1; + bool mSetupMenu:1; + bool mSelectItem:1; + bool mSendSMSAlphaIdentifier:1; + bool mSetupEventUserActivity:1; + bool mSetupEventIdleScreenNotify:1; + bool mSetupEventLanguageSelNotify:1; + bool mSetupIdleModeText:1; + bool mLanguageNotification:1; + bool mRefresh:1; + bool mEndProactiveSession:1; + bool mPlayTone:1; + bool mSetupCall:1; + bool mSendDTMF:1; + bool mLaunchBrowser:1; + bool mSendSS:1; + bool mSendUSSD:1; + bool mProvideLocalInformationLanguage:1; + bool mBearerIndependentProtocol:1; + bool mSetupEventBrowserTermination:1; + bool mProvideLocalInformationTime:1; + + // Padding out 1 bits + UINT8 mReserved1:1; + + bool mActivate:1; + bool mSetupEventHCIConnectivity:1; + + // Padding out 6 bits + UINT8 mReserved2:6; +}; + +// Structure to describe request TLV 0x11 for CATSetEventReport() +struct sCATSetEventReportRequest_DecodeReportMask +{ + bool mDisplayText:1; + bool mGetInkey:1; + bool mGetInput:1; + bool mSetupMenu:1; + bool mSelectItem:1; + bool mSendSMSAlphaIdentifier:1; + bool mSetupEventUserActivity:1; + bool mSetupEventIdleScreenNotify:1; + bool mSetupEventLanguageSelNotify:1; + bool mSetupIdleModeText:1; + bool mLanguageNotification:1; + + // Padding out 1 bits + UINT8 mReserved1:1; + + bool mEndProactiveSession:1; + bool mPlayTone:1; + bool mSetupCall:1; + bool mSendDTMF:1; + bool mLaunchBrowser:1; + bool mSendSS:1; + bool mSendUSSD:1; + bool mProvideLocalInformationLanguage:1; + bool mBearerIndependentProtocol:1; + bool mSetupEventBrowserTermination:1; + + // Padding out 1 bits + UINT8 mReserved2:1; + + bool mSCWSEvent:1; + bool mActivate:1; + bool mSetupEventHCIConnectivity:1; + bool mBearerIndependentProtocolStatus:1; + + // Padding out 5 bits + UINT8 mReserved3:5; +}; + +// Structure to describe request TLV 0x12 for CATSetEventReport() +struct sCATSetEventReportRequest_Slot +{ + bool mSlot1:1; + bool mSlot2:1; + bool mSlot3:1; + bool mSlot4:1; + bool mSlot5:1; + + // Padding out 3 bits + UINT8 mReserved1:3; +}; + +// Structure to describe request TLV 0x13 for CATSetEventReport() +struct sCATSetEventReportRequest_FullFunctionMask +{ + bool mSendSMS:1; + bool mSetupCall:1; + bool mSendDTMF:1; + bool mSendSS:1; + bool mSendUSSD:1; + + // Padding out 27 bits + UINT8 mReserved1:3; + UINT8 mReserved2[3]; +}; + +// Structure to describe response TLV 0x10 for CATSetEventReport() +struct sCATSetEventReportResponse_RegStatusMask +{ + bool mDisplayText:1; + bool mGetInkey:1; + bool mGetInput:1; + bool mSetupMenu:1; + bool mSelectItem:1; + bool mSendSMSAlphaIdentifier:1; + bool mSetupEventUserActivity:1; + bool mSetupEventIdleScreenNotify:1; + bool mSetupEventLanguageSelNotify:1; + bool mSetupIdleModeText:1; + bool mLanguageNotification:1; + bool mRefresh:1; + bool mEndProactiveSession:1; + bool mPlayTone:1; + bool mSetupCall:1; + bool mSendDTMF:1; + bool mLaunchBrowser:1; + bool mSendSS:1; + bool mSendUSSD:1; + bool mProvideLocalInformationLanguage:1; + bool mBearerIndependentProtocol:1; + bool mSetupEventBrowserTermination:1; + bool mProvideLocalInformationTime:1; + + // Padding out 1 bits + UINT8 mReserved1:1; + + bool mActivate:1; + bool mSetupEventHCIConnectivity:1; + + // Padding out 6 bits + UINT8 mReserved2:6; +}; + +// Structure to describe response TLV 0x11 for CATSetEventReport() +struct sCATSetEventReportResponse_DecodedRegStatusMask +{ + bool mDisplayText:1; + bool mGetInkey:1; + bool mGetInput:1; + bool mSetupMenu:1; + bool mSelectItem:1; + bool mSendSMSAlphaIdentifier:1; + bool mSetupEventUserActivity:1; + bool mSetupEventIdleScreenNotify:1; + bool mSetupEventLanguageSelNotify:1; + bool mSetupIdleModeText:1; + bool mLanguageNotification:1; + + // Padding out 1 bits + UINT8 mReserved1:1; + + bool mEndProactiveSession:1; + bool mPlayTone:1; + bool mSetupCall:1; + bool mSendDTMF:1; + bool mLaunchBrowser:1; + bool mSendSS:1; + bool mSendUSSD:1; + bool mProvideLocalInformationLanguage:1; + bool mBearerIndependentProtocol:1; + bool mSetupEventBrowserTermination:1; + + // Padding out 1 bits + UINT8 mReserved2:1; + + bool mSCWSEvent:1; + bool mActivate:1; + bool mSetupEventHCIConnectivity:1; + bool mBearerIndependentProtocolStatus:1; + + // Padding out 5 bits + UINT8 mReserved3:5; +}; + +// Structure to describe response TLV 0x12 for CATSetEventReport() +struct sCATSetEventReportResponse_FullFunctionFailureMask +{ + bool mSendSMS:1; + bool mSetupCall:1; + bool mSendDTMF:1; + bool mSendSS:1; + bool mSendUSSD:1; + + // Padding out 27 bits + UINT8 mReserved1:3; + UINT8 mReserved2[3]; +}; + +// Structure to describe indication TLV 0x10 for CAT EventReport +struct sCATEventReportIndication_DisplayTextEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mDisplayTextCommand[1]; +}; + +// Structure to describe indication TLV 0x11 for CAT EventReport +struct sCATEventReportIndication_GetInkeyEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mGetInkeyCommand[1]; +}; + +// Structure to describe indication TLV 0x12 for CAT EventReport +struct sCATEventReportIndication_GetInputEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mGetInputCommand[1]; +}; + +// Structure to describe indication TLV 0x13 for CAT EventReport +struct sCATEventReportIndication_SetupMenuEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mSetupMenuCommand[1]; +}; + +// Structure to describe indication TLV 0x14 for CAT EventReport +struct sCATEventReportIndication_SelectItemEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mSelectItemCommand[1]; +}; + +// Structure to describe indication TLV 0x15 for CAT EventReport +struct sCATEventReportIndication_AlphaIDAvailable +{ + eQMICATAlphaIDCommandType mAlphaIDCommandType; + UINT16 mAlphaIDLength; + + // This array must be the size specified by mAlphaIDLength + // UINT8 mAlphaID[1]; +}; + +// Structure to describe indication TLV 0x16 for CAT EventReport +struct sCATEventReportIndication_SetupEventList +{ + bool mUserActivityNotify:1; + bool mIdleScreenAvailable:1; + bool mLanguageSelectionNotify:1; + + // Padding out 29 bits + UINT8 mReserved1:5; + UINT8 mReserved2[3]; +}; + +// Structure to describe indication TLV 0x17 for CAT EventReport +struct sCATEventReportIndication_SetupIdleModeTextEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mSetupIdleModeTextCommand[1]; +}; + +// Structure to describe indication TLV 0x18 for CAT EventReport +struct sCATEventReportIndication_LanguageNotificationEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mLanguageNotificationCommand[1]; +}; + +// Structure to describe indication TLV 0x19 for CAT EventReport +struct sCATEventReportIndication_RefreshEvent +{ + UINT16 mRefreshMode; + eQMICATRefreshStage mRefreshStage; +}; + +// Structure to describe indication TLV 0x1A for CAT EventReport +struct sCATEventReportIndication_EndProactiveSession +{ + eQMICATProactiveSessionEndType mProactiveSessionEndType; +}; + +// Structure to describe indication TLV 0x1B for CAT EventReport +struct sCATEventReportIndication_DecodedHeaderID +{ + eQMICATCommandID mCommandID; + UINT32 mReferenceID; + UINT8 mCommandNumber; +}; + +// Structure to describe indication TLV 0x1C for CAT EventReport +struct sCATEventReportIndication_TextString +{ + eQMICATDataCodingScheme mDataCodingScheme; + UINT8 mTextDataLength; + + // This array must be the size specified by mTextDataLength + // UINT8 mTextData[1]; +}; + +// Structure to describe indication TLV 0x1D for CAT EventReport +struct sCATEventReportIndication_HighPriority +{ + eQMICATHighPriority mHighPriority; +}; + +// Structure to describe indication TLV 0x1E for CAT EventReport +struct sCATEventReportIndication_UserControl +{ + eQMICATUserControl mUserControl; +}; + +// Structure to describe indication TLV 0x1F for CAT EventReport +struct sCATEventReportIndication_Icon +{ + eQMICATIconQualifier mIconQualifier; + UINT8 mHeight; + UINT8 mWidth; + eQMICATImageCodingScheme mImageCodingScheme; + UINT8 mRecordNumber; + UINT16 mIconDataLength; + + // This array must be the size specified by mIconDataLength + // UINT8 mIconData[1]; +}; + +// Structure to describe indication TLV 0x20 for CAT EventReport +struct sCATEventReportIndication_Duration +{ + eQMICATTimeUnits mUnits; + UINT8 mInterval; +}; + +// Structure to describe indication TLV 0x21 for CAT EventReport +struct sCATEventReportIndication_ResponseFormat +{ + eQMICATResponseFormat mResponseFormat; +}; + +// Structure to describe indication TLV 0x22 for CAT EventReport +struct sCATEventReportIndication_HelpAvailable +{ + eQMICATHelpAvailable mHelpAvailable; +}; + +// Structure to describe indication TLV 0x23 for CAT EventReport +struct sCATEventReportIndication_ResponsePackingFormat +{ + eQMICATResponsePackingFormat mResponsePackingFormat; +}; + +// Structure to describe indication TLV 0x24 for CAT EventReport +struct sCATEventReportIndication_ResponseLength +{ + UINT8 mMaximumUserInput; + UINT8 mMinimumUserInput; +}; + +// Structure to describe indication TLV 0x25 for CAT EventReport +struct sCATEventReportIndication_ShowUserInput +{ + eQMICATShowUserInput mShowUserInput; +}; + +// Structure to describe indication TLV 0x26 for CAT EventReport +struct sCATEventReportIndication_Tone +{ + eQMICATTone mTone; +}; + +// Structure to describe indication TLV 0x27 for CAT EventReport +struct sCATEventReportIndication_SoftkeySelection +{ + eQMICATSoftkeySelection mSoftkeySelection; +}; + +// Structure to describe indication TLV 0x28 for CAT EventReport +struct sCATEventReportIndication_Items +{ + UINT8 mItemsLength; + + struct sItem + { + UINT8 mItemID; + UINT8 mItemTextLength; + + // This array must be the size specified by mItemTextLength + // UINT8 mItemText[1]; + }; + + // This array must be the size specified by mItemsLength + // sItem mItems[1]; +}; + +// Structure to describe indication TLV 0x29 for CAT EventReport +struct sCATEventReportIndication_DefaultItem +{ + UINT8 mDefaultItem; +}; + +// Structure to describe indication TLV 0x2A for CAT EventReport +struct sCATEventReportIndication_NextActionIdentifier +{ + UINT8 mActionsLength; + + // This array must be the size specified by mActionsLength + // eQMICATNextAction mNextAction[1]; +}; + +// Structure to describe indication TLV 0x2B for CAT EventReport +struct sCATEventReportIndication_IconIDList +{ + eQMICATDisplayIconOnly mDisplayIconOnly; + UINT8 mItemsLength; + + struct sItem + { + eQMICATIconQualifier mIconQualifier; + UINT8 mHeight; + UINT8 mWidth; + eQMICATImageCodingScheme mImageCodingScheme; + UINT8 mRecordNumber; + UINT16 mIconDataLength; + + // This array must be the size specified by mIconDataLength + // UINT8 mIconData[1]; + }; + + // This array must be the size specified by mItemsLength + // sItem mItems[1]; +}; + +// Structure to describe indication TLV 0x2C for CAT EventReport +struct sCATEventReportIndication_Presentation +{ + eQMICATPresentation mPresentation; +}; + +// Structure to describe indication TLV 0x2D for CAT EventReport +struct sCATEventReportIndication_PackingRequired +{ + eQMICATPackingRequired mPackingRequired; +}; + +// Structure to describe indication TLV 0x2E for CAT EventReport +struct sCATEventReportIndication_SMSTPDU +{ + UINT8 mSMSTPDUDataLength; + + // This array must be the size specified by mSMSTPDUDataLength + // UINT8 mSMSTPDUData[1]; +}; + +// Structure to describe indication TLV 0x2F for CAT EventReport +struct sCATEventReportIndication_IsCDMASMS +{ + eQMICATIsCDMASMS mIsCDMASMS; +}; + +// Structure to describe indication TLV 0x30 for CAT EventReport +struct sCATEventReportIndication_Address +{ + eQMICATAddressTON mAddressTON; + eQMICATAddressNPI mAddressNPI; + UINT8 mAddressDataLength; + + // This array must be the size specified by mAddressDataLength + // char mAddressData[1]; +}; + +// Structure to describe indication TLV 0x31 for CAT EventReport +struct sCATEventReportIndication_CallSetupRequirement +{ + eQMICATCallSetupRequirement mCallSetupRequirement; +}; + +// Structure to describe indication TLV 0x32 for CAT EventReport +struct sCATEventReportIndication_Redial +{ + eQMICATRedialNecessary mRedialNecessary; + eQMICATTimeUnits mUnits; + UINT8 mInterval; +}; + +// Structure to describe indication TLV 0x33 for CAT EventReport +struct sCATEventReportIndication_Subaddress +{ + UINT8 mSubaddressDataLength; + + struct sSubaddressData + { + UINT8 mSubaddressData1:4; + UINT8 mSubaddressData2:4; + }; + + // This array must be the size specified by mSubaddressDataLength + // sSubaddressData mSubaddressDatas[1]; +}; + +// Structure to describe indication TLV 0x34 for CAT EventReport +struct sCATEventReportIndication_CapabilitiesConfiguration +{ + UINT8 mCapabilitesConfigurationLength; + + // This array must be the size specified by mCapabilitesConfigurationLength + // UINT8 mCapabilitiesConfiguration[1]; +}; + +// Structure to describe indication TLV 0x35 for CAT EventReport +struct sCATEventReportIndication_DTMF +{ + UINT8 mDTMFDataLength; + + struct sDTMFData + { + UINT8 mDTMFData1:4; + UINT8 mDTMFData2:4; + }; + + // This array must be the size specified by mDTMFDataLength + // sDTMFData mDTMFDatas[1]; +}; + +// Structure to describe indication TLV 0x36 for CAT EventReport +struct sCATEventReportIndication_SpecificLanguageNotification +{ + eQMICATSpecificLanguageNotfication mSpecificLanguageNotification; +}; + +// Structure to describe indication TLV 0x37 for CAT EventReport +struct sCATEventReportIndication_Language +{ + char mLanguage[2]; +}; + +// Structure to describe indication TLV 0x38 for CAT EventReport +struct sCATEventReportIndication_LaunchMode +{ + eQMICATLaunchMode mLaunchMode; +}; + +// Structure to describe indication TLV 0x39 for CAT EventReport +struct sCATEventReportIndication_URL +{ + UINT8 mURLDataLength; + + // This array must be the size specified by mURLDataLength + // char mURLData[1]; +}; + +// Structure to describe indication TLV 0x3A for CAT EventReport +struct sCATEventReportIndication_BrowserID +{ + UINT8 mBrowserID; +}; + +// Structure to describe indication TLV 0x3B for CAT EventReport +struct sCATEventReportIndication_BearerList +{ + UINT8 mBearerListLength; + + // This array must be the size specified by mBearerListLength + // eQMICATBearer mBearerList[1]; +}; + +// Structure to describe indication TLV 0x3C for CAT EventReport +struct sCATEventReportIndication_ProvisioningFile +{ + UINT32 mNumberOfProvisioningFiles; + + struct sFile + { + UINT8 mPathLength; + + // This array must be the size specified by mPathLength + // char mPath[1]; + }; + + // This array must be the size specified by mNumberOfProvisioningFiles + // sFile mFiles[1]; +}; + +// Structure to describe indication TLV 0x3D for CAT EventReport +struct sCATEventReportIndication_USSDString +{ + eQMICATUSSDDataCodingScheme mOriginalDataCodingScheme; + eQMICATUSSDDataCodingScheme mDataCodingScheme; + UINT8 mUSSDTextLength; + + // This array must be the size specified by mUSSDTextLength + // UINT8 mUSSDText[1]; +}; + +// Structure to describe indication TLV 0x3E for CAT EventReport +struct sCATEventReportIndication_DefaultText +{ + eQMICATDataCodingScheme mDataCodingScheme; + UINT8 mTextDataLength; + + // This array must be the size specified by mTextDataLength + // UINT8 mTextData[1]; +}; + +// Structure to describe indication TLV 0x3F for CAT EventReport +struct sCATEventReportIndication_ImmediateResponseRequired +{ + eQMICATImmediateResponse mImmediateResponse; +}; + +// Structure to describe indication TLV 0x40 for CAT EventReport +struct sCATEventReportIndication_UserConfirmationAlpha +{ + eQMICATDataCodingScheme mDataCodingScheme; + UINT8 mTextDataLength; + + // This array must be the size specified by mTextDataLength + // UINT8 mTextData[1]; +}; + +// Structure to describe indication TLV 0x41 for CAT EventReport +struct sCATEventReportIndication_SetupCallDisplayAlpha +{ + eQMICATDataCodingScheme mDataCodingScheme; + UINT8 mTextDataLength; + + // This array must be the size specified by mTextDataLength + // UINT8 mTextData[1]; +}; + +// Structure to describe indication TLV 0x42 for CAT EventReport +struct sCATEventReportIndication_UserConfirmationIcon +{ + eQMICATIconQualifier mIconQualifier; + UINT8 mHeight; + UINT8 mWidth; + eQMICATImageCodingScheme mImageCodingScheme; + UINT8 mRecordNumber; + UINT16 mIconDataLength; + + // This array must be the size specified by mIconDataLength + // UINT8 mIconData[1]; +}; + +// Structure to describe indication TLV 0x43 for CAT EventReport +struct sCATEventReportIndication_SetupCallDisplayIcon +{ + eQMICATIconQualifier mIconQualifier; + UINT8 mHeight; + UINT8 mWidth; + eQMICATImageCodingScheme mImageCodingScheme; + UINT8 mRecordNumber; + UINT16 mIconDataLength; + + // This array must be the size specified by mIconDataLength + // UINT8 mIconData[1]; +}; + +// Structure to describe indication TLV 0x44 for CAT EventReport +struct sCATEventReportIndication_GatewayProxy +{ + eQMICATDataCodingScheme mDataCodingScheme; + UINT8 mTextDataLength; + + // This array must be the size specified by mTextDataLength + // UINT8 mTextData[1]; +}; + +// Structure to describe indication TLV 0x45 for CAT EventReport +struct sCATEventReportIndication_Alpha +{ + eQMICATDataCodingScheme mDataCodingScheme; + UINT8 mTextDataLength; + + // This array must be the size specified by mTextDataLength + // UINT8 mTextData[1]; +}; + +// Structure to describe indication TLV 0x46 for CAT EventReport +struct sCATEventReportIndication_NotificationRequired +{ + eQMICATNotificationRequired mNotificationRequired; +}; + +// Structure to describe indication TLV 0x47 for CAT EventReport +struct sCATEventReportIndication_PlayToneEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mPlayToneCommand[1]; +}; + +// Structure to describe indication TLV 0x48 for CAT EventReport +struct sCATEventReportIndication_SetupCallEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mSetupCallCommand[1]; +}; + +// Structure to describe indication TLV 0x49 for CAT EventReport +struct sCATEventReportIndication_SendDTMFEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mSendDTMFCommand[1]; +}; + +// Structure to describe indication TLV 0x4A for CAT EventReport +struct sCATEventReportIndication_LaunchBrowserEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mLaunchBrowserCommand[1]; +}; + +// Structure to describe indication TLV 0x4B for CAT EventReport +struct sCATEventReportIndication_SendSMSEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mSendSMSCommand[1]; +}; + +// Structure to describe indication TLV 0x4C for CAT EventReport +struct sCATEventReportIndication_SendSSEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mSendSSCommand[1]; +}; + +// Structure to describe indication TLV 0x4D for CAT EventReport +struct sCATEventReportIndication_SendUSSDEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mSendUSSDCommand[1]; +}; + +// Structure to describe indication TLV 0x4E for CAT EventReport +struct sCATEventReportIndication_ProvideLocalInformationEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mProvideLocalInformationCommand[1]; +}; + +// Structure to describe indication TLV 0x4F for CAT EventReport +struct sCATEventReportIndication_SetupRawEventList +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mSetupEventListCommand[1]; +}; + +// Structure to describe indication TLV 0x50 for CAT EventReport +struct sCATEventReportIndication_Slot +{ + eQMICATSlot mSlot; +}; + +// Structure to describe indication TLV 0x51 for CAT EventReport +struct sCATEventReportIndication_OpenChannelEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mOpenChannelCommand[1]; +}; + +// Structure to describe indication TLV 0x52 for CAT EventReport +struct sCATEventReportIndication_CloseChannelEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mCloseChannelCommand[1]; +}; + +// Structure to describe indication TLV 0x53 for CAT EventReport +struct sCATEventReportIndication_SendDataEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mSendDataCommand[1]; +}; + +// Structure to describe indication TLV 0x54 for CAT EventReport +struct sCATEventReportIndication_ReceiveDataEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mReceiveDataCommand[1]; +}; + +// Structure to describe indication TLV 0x55 for CAT EventReport +struct sCATEventReportIndication_OnDemmandLinkEstablish +{ + eQMICATOnDemandLinkEstablish mOnDemandLinkEstablish; +}; + +// Structure to describe indication TLV 0x56 for CAT EventReport +struct sCATEventReportIndication_CSDBearerDescription +{ + UINT8 mSpeed; + eQMICATCSDBearerName mCSDBearerName; + eQMICATConnectionElement mConnectionElement; +}; + +// Structure to describe indication TLV 0x57 for CAT EventReport +struct sCATEventReportIndication_GPRSBearerDescription +{ + UINT8 mPrecedenceClass; + UINT8 mDelayClass; + UINT8 mReliabilityClass; + UINT8 mPeakThroughput; + UINT8 mMeanThroughput; + eQMICATPacketDataProtocol mPacketDataProtocol; +}; + +// Structure to describe indication TLV 0x58 for CAT EventReport +struct sCATEventReportIndication_EUTRANExternalParameterBearerDescription +{ + eQMICATTrafficClass mTrafficClass; + UINT16 mMaxUploadBitrate; + UINT16 mMaxDownloadBitrate; + UINT16 mGuaranteedUploadBitrate; + UINT16 mGuaranteedDownloadBitrate; + eQMICATDeliveryOrder mDeliveryOrder; + UINT8 mMaxSDUSize; + UINT8 mMaxSDUErrorRatio; + UINT8 mResidualBitErrorRatio; + eQMICATDeliverErrorSDU mDeliverErrorSDU; + UINT8 mTransferDelay; + UINT8 mTrafficHandlingPRI; + eQMICATPDPType mPDPType; +}; + +// Structure to describe indication TLV 0x59 for CAT EventReport +struct sCATEventReportIndication_EUTRANExternalMappedUTRANBearerDescription +{ + UINT8 mQCI; + UINT8 mMaxUploadBitrate; + UINT8 mMaxDownloadBitrate; + UINT8 mGuaranteedUploadBitrate; + UINT8 mGuaranteedDownloadBitrate; + UINT8 mMaximumUploadBitrateExt; + UINT8 mMaximumDownloadBitrateExt; + UINT8 mGuaranteedUploadBitrateExt; + UINT8 mGuaranteedDownloadBitrateExt; + eQMICATPDPType mPDPType; +}; + +// Structure to describe indication TLV 0x5A for CAT EventReport +struct sCATEventReportIndication_BufferSize +{ + UINT16 mBufferSize; +}; + +// Structure to describe indication TLV 0x5B for CAT EventReport +struct sCATEventReportIndication_NetworkAccessName +{ + UINT8 mNetworkAccessNameLength; + + // This array must be the size specified by mNetworkAccessNameLength + // UINT8 mNetworkAccessName[1]; +}; + +// Structure to describe indication TLV 0x5C for CAT EventReport +struct sCATEventReportIndication_OtherAddress +{ + eQMICATAddressType mAddressType; + UINT8 mAddressDataLength; + + // This array must be the size specified by mAddressDataLength + // char mAddressData[1]; +}; + +// Structure to describe indication TLV 0x5D for CAT EventReport +struct sCATEventReportIndication_UserLogin +{ + eQMICATDataCodingScheme mDataCodingScheme; + UINT8 mTextDataLength; + + // This array must be the size specified by mTextDataLength + // UINT8 mTextData[1]; +}; + +// Structure to describe indication TLV 0x5E for CAT EventReport +struct sCATEventReportIndication_UserPassword +{ + eQMICATDataCodingScheme mDataCodingScheme; + UINT8 mTextDataLength; + + // This array must be the size specified by mTextDataLength + // UINT8 mTextData[1]; +}; + +// Structure to describe indication TLV 0x5F for CAT EventReport +struct sCATEventReportIndication_TransportLevel +{ + eQMICATTransportProtocol mTransportProtocol; + UINT16 mPortNumber; +}; + +// Structure to describe indication TLV 0x60 for CAT EventReport +struct sCATEventReportIndication_DataDestinationAddress +{ + eQMICATAddressType mAddressType; + UINT8 mAddressDataLength; + + // This array must be the size specified by mAddressDataLength + // char mAddressData[1]; +}; + +// Structure to describe indication TLV 0x61 for CAT EventReport +struct sCATEventReportIndication_ChannelDataLength +{ + UINT8 mChannelDataLength; +}; + +// Structure to describe indication TLV 0x62 for CAT EventReport +struct sCATEventReportIndication_SendDataImmediately +{ + eQMICATSendDataImmediately mSendDataImmediately; +}; + +// Structure to describe indication TLV 0x63 for CAT EventReport +struct sCATEventReportIndication_ChannelData +{ + UINT16 mChannelDataLength; + + // This array must be the size specified by mChannelDataLength + // UINT8 mChannelData[1]; +}; + +// Structure to describe indication TLV 0x64 for CAT EventReport +struct sCATEventReportIndication_ChannelID +{ + UINT8 mChannelID; +}; + +// Structure to describe indication TLV 0x65 for CAT EventReport +struct sCATEventReportIndication_ItemsWithDCS +{ + UINT8 mItemsLength; + + struct sItem + { + UINT8 mItemID; + eQMICATDataCodingScheme mDataCodingScheme; + UINT8 mItemTextLength; + + // This array must be the size specified by mItemTextLength + // UINT8 mItemText[1]; + }; + + // This array must be the size specified by mItemsLength + // sItem mItems[1]; +}; + +// Structure to describe indication TLV 0x66 for CAT EventReport +struct sCATEventReportIndication_Activate +{ + UINT32 mReferenceID; + UINT16 mActivateLength; + + // This array must be the size specified by mActivateLength + // UINT8 mActivate[1]; +}; + +// Structure to describe indication TLV 0x67 for CAT EventReport +struct sCATEventReportIndication_ActivateTarget +{ + eQMICATActivateTargets mActivateTarget; +}; + +// Structure to describe indication TLV 0x68 for CAT EventReport +struct sCATEventReportIndication_ResponseType +{ + eQMICATResponseTypes mResponseType; +}; + +// Structure to describe indication TLV 0x69 for CAT EventReport +struct sCATEventReportIndication_BearerIndependentProtocolStatus +{ + UINT8 mChannelID; + eQMICATBearerIndependentProtocolStatus mBearerIndependentProtocolStatus; +}; + +// Structure to describe response TLV 0x01 for CATGetServiceState() +struct sCATGetServiceStateResponse_CATServiceState +{ + bool mCommonDisplayText:1; + bool mCommonGetInkey:1; + bool mCommonGetInput:1; + bool mCommonSetupMenu:1; + bool mCommonSelectItem:1; + bool mCommonSendSMSAlphaIdentifier:1; + bool mCommonSetupEventUserActivity:1; + bool mCommonSetupEventIdleScreenNotify:1; + bool mCommonSetupEventLanguageSelNotify:1; + bool mCommonSetupIdleModeText:1; + bool mCommonLanguageNotification:1; + bool mCommonRefresh:1; + bool mCommonEndProactiveSession:1; + bool mCommonPlayTone:1; + bool mCommonSetupCall:1; + bool mCommonSendDTMF:1; + bool mCommonLaunchBrowser:1; + bool mCommonSendSS:1; + bool mCommonSendUSSD:1; + bool mCommonProvideLocalInformationLanguage:1; + bool mCommonBearerIndependentProtocol:1; + bool mCommonSetupEventBrowserTermination:1; + bool mCommonProvideLocalInformationTime:1; + + // Padding out 1 bits + UINT8 mReserved1:1; + + bool mCommonActivate:1; + bool mCommonSetupEventHCIConnectivity:1; + + // Padding out 6 bits + UINT8 mReserved2:6; + + bool mControlDisplayText:1; + bool mControlGetInkey:1; + bool mControlGetInput:1; + bool mControlSetupMenu:1; + bool mControlSelectItem:1; + bool mControlSendSMSAlphaIdentifier:1; + bool mControlSetupEventUserActivity:1; + bool mControlSetupEventIdleScreenNotify:1; + bool mControlSetupEventLanguageSelNotify:1; + bool mControlSetupIdleModeText:1; + bool mControlLanguageNotification:1; + bool mControlRefresh:1; + bool mControlEndProactiveSession:1; + bool mControlPlayTone:1; + bool mControlSetupCall:1; + bool mControlSendDTMF:1; + bool mControlLaunchBrowser:1; + bool mControlSendSS:1; + bool mControlSendUSSD:1; + bool mControlProvideLocalInformationLanguage:1; + bool mControlBearerIndependentProtocol:1; + bool mControlSetupEventBrowserTermination:1; + bool mControlProvideLocalInformationTime:1; + + // Padding out 1 bits + UINT8 mReserved3:1; + + bool mControlActivate:1; + bool mControlSetupEventHCIConnectivity:1; + + // Padding out 6 bits + UINT8 mReserved4:6; +}; + +// Structure to describe response TLV 0x10 for CATGetServiceState() +struct sCATGetServiceStateResponse_DecodedCATServiceState +{ + bool mCommonDisplayText:1; + bool mCommonGetInkey:1; + bool mCommonGetInput:1; + bool mCommonSetupMenu:1; + bool mCommonSelectItem:1; + bool mCommonSendSMSAlphaIdentifier:1; + bool mCommonSetupEventUserActivity:1; + bool mCommonSetupEventIdleScreenNotify:1; + bool mCommonSetupEventLanguageSelNotify:1; + bool mCommonSetupIdleModeText:1; + bool mCommonLanguageNotification:1; + + // Padding out 1 bits + UINT8 mReserved1:1; + + bool mCommonEndProactiveSession:1; + bool mCommonPlayTone:1; + bool mCommonSetupCall:1; + bool mCommonSendDTMF:1; + bool mCommonLaunchBrowser:1; + bool mCommonSendSS:1; + bool mCommonSendUSSD:1; + bool mCommonProvideLocalInformationLanguage:1; + bool mCommonBearerIndependentProtocol:1; + bool mCommonSetupEventBrowserTermination:1; + + // Padding out 1 bits + UINT8 mReserved2:1; + + bool mCommonSCWSEvent:1; + bool mCommonActivate:1; + bool mCommonSetupEventHCIConnectivity:1; + bool mCommonBearerIndependentProtocolStatus:1; + + // Padding out 5 bits + UINT8 mReserved3:5; + + bool mControlDisplayText:1; + bool mControlGetInkey:1; + bool mControlGetInput:1; + bool mControlSetupMenu:1; + bool mControlSelectItem:1; + bool mControlSendSMSAlphaIdentifier:1; + bool mControlSetupEventUserActivity:1; + bool mControlSetupEventIdleScreenNotify:1; + bool mControlSetupEventLanguageSelNotify:1; + bool mControlSetupIdleModeText:1; + bool mControlLanguageNotification:1; + + // Padding out 1 bits + UINT8 mReserved4:1; + + bool mControlEndProactiveSession:1; + bool mControlPlayTone:1; + bool mControlSetupCall:1; + bool mControlSendDTMF:1; + bool mControlLaunchBrowser:1; + bool mControlSendSS:1; + bool mControlSendUSSD:1; + bool mControlProvideLocalInformationLanguage:1; + bool mControlBearerIndependentProtocol:1; + bool mControlSetupEventBrowserTermination:1; + + // Padding out 1 bits + UINT8 mReserved5:1; + + bool mControlSCWSEvent:1; + bool mControlActivate:1; + bool mControlSetupEventHCIConnectivity:1; + bool mControlBearerIndependentProtocolStatus:1; + + // Padding out 5 bits + UINT8 mReserved6:5; +}; + +// Structure to describe response TLV 0x11 for CATGetServiceState() +struct sCATGetServiceStateResponse_FullFunctionServiceState +{ + bool mSendSMS:1; + bool mSetupCall:1; + bool mSendDTMF:1; + bool mSendSS:1; + bool mSendUSSD:1; + + // Padding out 27 bits + UINT8 mReserved1:3; + UINT8 mReserved2[3]; +}; + +// Structure to describe request TLV 0x01 for CATSendTerminalResponse() +struct sCATSendTerminalResponseRequest_TerminalResponseType +{ + UINT32 mReferenceID; + UINT16 mTerminalResponseLength; + + // This array must be the size specified by mTerminalResponseLength + // UINT8 mTerminalResponse[1]; +}; + +// Structure to describe request TLV 0x10 for CATSendTerminalResponse() +struct sCATSendTerminalResponseRequest_Slot +{ + eQMICATSlot mSlot; +}; + +// Structure to describe response TLV 0x10 for CATSendTerminal() +struct sCATSendTerminalResponseResponse_TRResponse +{ + UINT8 mSW1; + UINT8 mSW2; + UINT8 mTerminalResponseLength; + + // This array must be the size specified by mTerminalResponseLength + // UINT8 mTerminalResponseData[1]; +}; + +// Structure to describe request TLV 0x01 for CATEnvelopeCommand() +struct sCATEnvelopeCommandRequest_EnvelopeCommand +{ + eQMICATEnvelopeCommandType mEnvelopeCommandType; + UINT16 mEnvelopeLength; + + // This array must be the size specified by mEnvelopeLength + // UINT8 mEnvelopeData[1]; +}; + +// Structure to describe request TLV 0x10 for CATEnvelopeCommand() +struct sCATEnvelopeCommandRequest_Slot +{ + eQMICATSlot mSlot; +}; + +// Structure to describe response TLV 0x10 for CATEnvelopeCommand() +struct sCATEnvelopeCommandResponse_RawResponse +{ + UINT8 mSW1; + UINT8 mSW2; + UINT8 mEnvelopeResponseLength; + + // This array must be the size specified by mEnvelopeResponseLength + // UINT8 mEnvelopeResponseData[1]; +}; + +// Structure to describe request TLV 0x01 for CATGetEventReport() +struct sCATGetEventReportRequest_CommandInput +{ + UINT32 mCommandID; + eQMICATCommandFormat mCommandFormat; +}; + +// Structure to describe response TLV 0x10 for CATGetEventReport() +struct sCATGetEventReportResponse_DisplayTextEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mDisplayTextCommand[1]; +}; + +// Structure to describe response TLV 0x11 for CATGetEventReport() +struct sCATGetEventReportResponse_GetInkeyEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mGetInkeyCommand[1]; +}; + +// Structure to describe response TLV 0x12 for CATGetEventReport() +struct sCATGetEventReportResponse_GetInputEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mGetInputCommand[1]; +}; + +// Structure to describe response TLV 0x13 for CATGetEventReport() +struct sCATGetEventReportResponse_SetupMenuEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mSetupMenuCommand[1]; +}; + +// Structure to describe response TLV 0x14 for CATGetEventReport() +struct sCATGetEventReportResponse_SelectItemEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mSelectItemCommand[1]; +}; + +// Structure to describe response TLV 0x15 for CATGetEventReport() +struct sCATGetEventReportResponse_AlphaIDAvailable +{ + eQMICATAlphaIDCommandType mAlphaIDCommandType; + UINT16 mAlphaIDLength; + + // This array must be the size specified by mAlphaIDLength + // UINT8 mAlphaID[1]; +}; + +// Structure to describe response TLV 0x16 for CATGetEventReport() +struct sCATGetEventReportResponse_SetupEventList +{ + bool mUserActivityNotify:1; + bool mIdleScreenAvailable:1; + bool mLanguageSelectionNotify:1; + + // Padding out 29 bits + UINT8 mReserved1:5; + UINT8 mReserved2[3]; +}; + +// Structure to describe response TLV 0x17 for CATGetEventReport() +struct sCATGetEventReportResponse_SetupIdleModeTextEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mSetupIdleModeTextCommand[1]; +}; + +// Structure to describe response TLV 0x18 for CATGetEventReport() +struct sCATGetEventReportResponse_LanguageNotificationEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mLanguageNotificationCommand[1]; +}; + +// Structure to describe response TLV 0x19 for CATGetEventReport() +struct sCATGetEventReportResponse_RefreshEvent +{ + UINT16 mRefreshMode; + eQMICATRefreshStage mRefreshStage; +}; + +// Structure to describe response TLV 0x1A for CATGetEventReport() +struct sCATGetEventReportResponse_EndProactiveSession +{ + eQMICATProactiveSessionEndType mProactiveSessionEndType; +}; + +// Structure to describe response TLV 0x1B for CATGetEventReport() +struct sCATGetEventReportResponse_DecodedHeaderID +{ + eQMICATCommandID mCommandID; + UINT32 mReferenceID; + UINT8 mCommandNumber; +}; + +// Structure to describe response TLV 0x1C for CATGetEventReport() +struct sCATGetEventReportResponse_TextString +{ + eQMICATDataCodingScheme mDataCodingScheme; + UINT8 mTextDataLength; + + // This array must be the size specified by mTextDataLength + // UINT8 mTextData[1]; +}; + +// Structure to describe response TLV 0x1D for CATGetEventReport() +struct sCATGetEventReportResponse_HighPriority +{ + eQMICATHighPriority mHighPriority; +}; + +// Structure to describe response TLV 0x1E for CATGetEventReport() +struct sCATGetEventReportResponse_UserControl +{ + eQMICATUserControl mUserControl; +}; + +// Structure to describe response TLV 0x1F for CATGetEventReport() +struct sCATGetEventReportResponse_Icon +{ + eQMICATIconQualifier mIconQualifier; + UINT8 mHeight; + UINT8 mWidth; + eQMICATImageCodingScheme mImageCodingScheme; + UINT8 mRecordNumber; + UINT16 mIconDataLength; + + // This array must be the size specified by mIconDataLength + // UINT8 mIconData[1]; +}; + +// Structure to describe response TLV 0x20 for CATGetEventReport() +struct sCATGetEventReportResponse_Duration +{ + eQMICATTimeUnits mUnits; + UINT8 mInterval; +}; + +// Structure to describe response TLV 0x21 for CATGetEventReport() +struct sCATGetEventReportResponse_ResponseFormat +{ + eQMICATResponseFormat mResponseFormat; +}; + +// Structure to describe response TLV 0x22 for CATGetEventReport() +struct sCATGetEventReportResponse_HelpAvailable +{ + eQMICATHelpAvailable mHelpAvailable; +}; + +// Structure to describe response TLV 0x23 for CATGetEventReport() +struct sCATGetEventReportResponse_ResponsePackingFormat +{ + eQMICATResponsePackingFormat mResponsePackingFormat; +}; + +// Structure to describe response TLV 0x24 for CATGetEventReport() +struct sCATGetEventReportResponse_ResponseLength +{ + UINT8 mMaximumUserInput; + UINT8 mMinimumUserInput; +}; + +// Structure to describe response TLV 0x25 for CATGetEventReport() +struct sCATGetEventReportResponse_ShowUserInput +{ + eQMICATShowUserInput mShowUserInput; +}; + +// Structure to describe response TLV 0x26 for CATGetEventReport() +struct sCATGetEventReportResponse_Tone +{ + eQMICATTone mTone; +}; + +// Structure to describe response TLV 0x27 for CATGetEventReport() +struct sCATGetEventReportResponse_SoftkeySelection +{ + eQMICATSoftkeySelection mSoftkeySelection; +}; + +// Structure to describe response TLV 0x28 for CATGetEventReport() +struct sCATGetEventReportResponse_Items +{ + UINT8 mItemsLength; + + struct sItem + { + UINT8 mItemID; + UINT8 mItemTextLength; + + // This array must be the size specified by mItemTextLength + // UINT8 mItemText[1]; + }; + + // This array must be the size specified by mItemsLength + // sItem mItems[1]; +}; + +// Structure to describe response TLV 0x29 for CATGetEventReport() +struct sCATGetEventReportResponse_DefaultItems +{ + UINT8 mDefaultItem; +}; + +// Structure to describe response TLV 0x2A for CATGetEventReport() +struct sCATGetEventReportResponse_NextActionIdentifier +{ + UINT8 mActionsLength; + + // This array must be the size specified by mActionsLength + // eQMICATNextAction mNextAction[1]; +}; + +// Structure to describe response TLV 0x2B for CATGetEventReport() +struct sCATGetEventReportResponse_IconIDList +{ + eQMICATDisplayIconOnly mDisplayIconOnly; + UINT8 mItemsLength; + + struct sItem + { + eQMICATIconQualifier mIconQualifier; + UINT8 mHeight; + UINT8 mWidth; + eQMICATImageCodingScheme mImageCodingScheme; + UINT8 mRecordNumber; + UINT16 mIconDataLength; + + // This array must be the size specified by mIconDataLength + // UINT8 mIconData[1]; + }; + + // This array must be the size specified by mItemsLength + // sItem mItems[1]; +}; + +// Structure to describe response TLV 0x2C for CATGetEventReport() +struct sCATGetEventReportResponse_Presentation +{ + eQMICATPresentation mPresentation; +}; + +// Structure to describe response TLV 0x2D for CATGetEventReport() +struct sCATGetEventReportResponse_PackingRequired +{ + eQMICATPackingRequired mPackingRequired; +}; + +// Structure to describe response TLV 0x2E for CATGetEventReport() +struct sCATGetEventReportResponse_SMSTPDU +{ + UINT8 mSMSTPDUDataLength; + + // This array must be the size specified by mSMSTPDUDataLength + // UINT8 mSMSTPDUData[1]; +}; + +// Structure to describe response TLV 0x2F for CATGetEventReport() +struct sCATGetEventReportResponse_IsCDMASMS +{ + eQMICATIsCDMASMS mIsCDMASMS; +}; + +// Structure to describe response TLV 0x30 for CATGetEventReport() +struct sCATGetEventReportResponse_Address +{ + eQMICATAddressTON mAddressTON; + eQMICATAddressNPI mAddressNPI; + UINT8 mAddressDataLength; + + // This array must be the size specified by mAddressDataLength + // char mAddressData[1]; +}; + +// Structure to describe response TLV 0x31 for CATGetEventReport() +struct sCATGetEventReportResponse_CallSetupRequirement +{ + eQMICATCallSetupRequirement mCallSetupRequirement; +}; + +// Structure to describe response TLV 0x32 for CATGetEventReport() +struct sCATGetEventReportResponse_Redial +{ + eQMICATRedialNecessary mRedialNecessary; + eQMICATTimeUnits mUnits; + UINT8 mInterval; +}; + +// Structure to describe response TLV 0x33 for CATGetEventReport() +struct sCATGetEventReportResponse_Subaddress +{ + UINT8 mSubaddressDataLength; + + struct sSubaddressData + { + UINT8 mSubaddressData1:4; + UINT8 mSubaddressData2:4; + }; + + // This array must be the size specified by mSubaddressDataLength + // sSubaddressData mSubaddressDatas[1]; +}; + +// Structure to describe response TLV 0x34 for CATGetEventReport() +struct sCATGetEventReportResponse_CapabilityConfiguration +{ + UINT8 mCapabilitesConfigurationLength; + + // This array must be the size specified by mCapabilitesConfigurationLength + // UINT8 mCapabilitiesConfiguration[1]; +}; + +// Structure to describe response TLV 0x35 for CATGetEventReport() +struct sCATGetEventReportResponse_DTMF +{ + UINT8 mDTMFDataLength; + + struct sDTMFData + { + UINT8 mDTMFData1:4; + UINT8 mDTMFData2:4; + }; + + // This array must be the size specified by mDTMFDataLength + // sDTMFData mDTMFDatas[1]; +}; + +// Structure to describe response TLV 0x36 for CATGetEventReport() +struct sCATGetEventReportResponse_SpecificLanguageNotification +{ + eQMICATSpecificLanguageNotfication mSpecificLanguageNotification; +}; + +// Structure to describe response TLV 0x37 for CATGetEventReport() +struct sCATGetEventReportResponse_Language +{ + char mLanguage[2]; +}; + +// Structure to describe response TLV 0x38 for CATGetEventReport() +struct sCATGetEventReportResponse_LaunchMode +{ + eQMICATLaunchMode mLaunchMode; +}; + +// Structure to describe response TLV 0x39 for CATGetEventReport() +struct sCATGetEventReportResponse_URL +{ + UINT8 mURLDataLength; + + // This array must be the size specified by mURLDataLength + // char mURLData[1]; +}; + +// Structure to describe response TLV 0x3A for CATGetEventReport() +struct sCATGetEventReportResponse_BrowserID +{ + UINT8 mBrowserID; +}; + +// Structure to describe response TLV 0x3B for CATGetEventReport() +struct sCATGetEventReportResponse_BearerList +{ + UINT8 mBearerListLength; + + // This array must be the size specified by mBearerListLength + // eQMICATBearer mBearerList[1]; +}; + +// Structure to describe response TLV 0x3C for CATGetEventReport() +struct sCATGetEventReportResponse_ProvisioningFiles +{ + UINT32 mNumberOfProvisioningFiles; + + struct sFile + { + UINT8 mPathLength; + + // This array must be the size specified by mPathLength + // char mPath[1]; + }; + + // This array must be the size specified by mNumberOfProvisioningFiles + // sFile mFiles[1]; +}; + +// Structure to describe response TLV 0x3D for CATGetEventReport() +struct sCATGetEventReportResponse_USSDString +{ + eQMICATUSSDDataCodingScheme mOriginalDataCodingScheme; + eQMICATUSSDDataCodingScheme mDataCodingScheme; + UINT8 mUSSDTextLength; + + // This array must be the size specified by mUSSDTextLength + // UINT8 mUSSDText[1]; +}; + +// Structure to describe response TLV 0x3E for CATGetEventReport() +struct sCATGetEventReportResponse_DefaultText +{ + eQMICATDataCodingScheme mDataCodingScheme; + UINT8 mTextDataLength; + + // This array must be the size specified by mTextDataLength + // UINT8 mTextData[1]; +}; + +// Structure to describe response TLV 0x3F for CATGetEventReport() +struct sCATGetEventReportResponse_ImmediateResponseRequest +{ + eQMICATImmediateResponse mImmediateResponse; +}; + +// Structure to describe response TLV 0x40 for CATGetEventReport() +struct sCATGetEventReportResponse_UserConfirmationAlpha +{ + eQMICATDataCodingScheme mDataCodingScheme; + UINT8 mTextDataLength; + + // This array must be the size specified by mTextDataLength + // UINT8 mTextData[1]; +}; + +// Structure to describe response TLV 0x41 for CATGetEventReport() +struct sCATGetEventReportResponse_SetupCallDisplayAlpha +{ + eQMICATDataCodingScheme mDataCodingScheme; + UINT8 mTextDataLength; + + // This array must be the size specified by mTextDataLength + // UINT8 mTextData[1]; +}; + +// Structure to describe response TLV 0x42 for CATGetEventReport() +struct sCATGetEventReportResponse_UserConfirmationIcon +{ + eQMICATIconQualifier mIconQualifier; + UINT8 mHeight; + UINT8 mWidth; + eQMICATImageCodingScheme mImageCodingScheme; + UINT8 mRecordNumber; + UINT16 mIconDataLength; + + // This array must be the size specified by mIconDataLength + // UINT8 mIconData[1]; +}; + +// Structure to describe response TLV 0x43 for CATGetEventReport() +struct sCATGetEventReportResponse_SetupCallDisplayIcon +{ + eQMICATIconQualifier mIconQualifier; + UINT8 mHeight; + UINT8 mWidth; + eQMICATImageCodingScheme mImageCodingScheme; + UINT8 mRecordNumber; + UINT16 mIconDataLength; + + // This array must be the size specified by mIconDataLength + // UINT8 mIconData[1]; +}; + +// Structure to describe response TLV 0x44 for CATGetEventReport() +struct sCATGetEventReportResponse_GatewayProxy +{ + eQMICATDataCodingScheme mDataCodingScheme; + UINT8 mTextDataLength; + + // This array must be the size specified by mTextDataLength + // UINT8 mTextData[1]; +}; + +// Structure to describe response TLV 0x45 for CATGetEventReport() +struct sCATGetEventReportResponse_Alpha +{ + eQMICATDataCodingScheme mDataCodingScheme; + UINT8 mTextDataLength; + + // This array must be the size specified by mTextDataLength + // UINT8 mTextData[1]; +}; + +// Structure to describe response TLV 0x46 for CATGetEventReport() +struct sCATGetEventReportResponse_NotificationRequired +{ + eQMICATNotificationRequired mNotificationRequired; +}; + +// Structure to describe response TLV 0x47 for CATGetEventReport() +struct sCATGetEventReportResponse_PlayToneEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mPlayToneCommand[1]; +}; + +// Structure to describe response TLV 0x48 for CATGetEventReport() +struct sCATGetEventReportResponse_SetupCallEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mSetupCallCommand[1]; +}; + +// Structure to describe response TLV 0x49 for CATGetEventReport() +struct sCATGetEventReportResponse_SendDTMFEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mSendDTMFCommand[1]; +}; + +// Structure to describe response TLV 0x4A for CATGetEventReport() +struct sCATGetEventReportResponse_LaunchBrowserEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mLaunchBrowserCommand[1]; +}; + +// Structure to describe response TLV 0x4B for CATGetEventReport() +struct sCATGetEventReportResponse_SendSMSEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mSendSMSCommand[1]; +}; + +// Structure to describe response TLV 0x4C for CATGetEventReport() +struct sCATGetEventReportResponse_SendSSEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mSendSSCommand[1]; +}; + +// Structure to describe response TLV 0x4D for CATGetEventReport() +struct sCATGetEventReportResponse_SendUSSDEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mSendUSSDCommand[1]; +}; + +// Structure to describe response TLV 0x4E for CATGetEventReport() +struct sCATGetEventReportResponse_ProvideLocalInformationEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mProvideLocalInformationCommand[1]; +}; + +// Structure to describe response TLV 0x4F for CATGetEventReport() +struct sCATGetEventReportResponse_SetupEventListRawEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mSetupEventListCommand[1]; +}; + +// Structure to describe response TLV 0x50 for CATGetEventReport() +struct sCATGetEventReportResponse_Slot +{ + eQMICATSlot mSlot; +}; + +// Structure to describe response TLV 0x51 for CATGetEventReport() +struct sCATGetEventReportResponse_OpenChannelEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mOpenChannelCommand[1]; +}; + +// Structure to describe response TLV 0x52 for CATGetEventReport() +struct sCATGetEventReportResponse_CloseChannelEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mCloseChannelCommand[1]; +}; + +// Structure to describe response TLV 0x53 for CATGetEventReport() +struct sCATGetEventReportResponse_SendDataEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mSendDataCommand[1]; +}; + +// Structure to describe response TLV 0x54 for CATGetEventReport() +struct sCATGetEventReportResponse_ReceiveDataEvent +{ + UINT32 mReferenceID; + UINT16 mCommandLength; + + // This array must be the size specified by mCommandLength + // UINT8 mReceiveDataCommand[1]; +}; + +// Structure to describe response TLV 0x55 for CATGetEventReport() +struct sCATGetEventReportResponse_OnDemandLinkEstablish +{ + eQMICATOnDemandLinkEstablish mOnDemandLinkEstablish; +}; + +// Structure to describe response TLV 0x56 for CATGetEventReport() +struct sCATGetEventReportResponse_CSDBearerDescription +{ + UINT8 mSpeed; + eQMICATCSDBearerName mCSDBearerName; + eQMICATConnectionElement mConnectionElement; +}; + +// Structure to describe response TLV 0x57 for CATGetEventReport() +struct sCATGetEventReportResponse_GPRSBearerDescription +{ + UINT8 mPrecedenceClass; + UINT8 mDelayClass; + UINT8 mReliabilityClass; + UINT8 mPeakThroughput; + UINT8 mMeanThroughput; + eQMICATPacketDataProtocol mPacketDataProtocol; +}; + +// Structure to describe response TLV 0x58 for CATGetEventReport() +struct sCATGetEventReportResponse_EUTRANExternalParameterBearerDescription +{ + eQMICATTrafficClass mTrafficClass; + UINT16 mMaxUploadBitrate; + UINT16 mMaxDownloadBitrate; + UINT16 mGuaranteedUploadBitrate; + UINT16 mGuaranteedDownloadBitrate; + eQMICATDeliveryOrder mDeliveryOrder; + UINT8 mMaxSDUSize; + UINT8 mMaxSDUErrorRatio; + UINT8 mResidualBitErrorRatio; + eQMICATDeliverErrorSDU mDeliverErrorSDU; + UINT8 mTransferDelay; + UINT8 mTrafficHandlingPRI; + eQMICATPDPType mPDPType; +}; + +// Structure to describe response TLV 0x59 for CATGetEventReport() +struct sCATGetEventReportResponse_EUTRANExternalMappedUTRANBearerDescription +{ + UINT8 mQCI; + UINT8 mMaxUploadBitrate; + UINT8 mMaxDownloadBitrate; + UINT8 mGuaranteedUploadBitrate; + UINT8 mGuaranteedDownloadBitrate; + UINT8 mMaximumUploadBitrateExt; + UINT8 mMaximumDownloadBitrateExt; + UINT8 mGuaranteedUploadBitrateExt; + UINT8 mGuaranteedDownloadBitrateExt; + eQMICATPDPType mPDPType; +}; + +// Structure to describe response TLV 0x5A for CATGetEventReport() +struct sCATGetEventReportResponse_BufferSize +{ + UINT16 mBufferSize; +}; + +// Structure to describe response TLV 0x5B for CATGetEventReport() +struct sCATGetEventReportResponse_NetworkAccessName +{ + UINT8 mNetworkAccessNameLength; + + // This array must be the size specified by mNetworkAccessNameLength + // UINT8 mNetworkAccessName[1]; +}; + +// Structure to describe response TLV 0x5C for CATGetEventReport() +struct sCATGetEventReportResponse_OtherAddress +{ + eQMICATAddressType mAddressType; + UINT8 mAddressDataLength; + + // This array must be the size specified by mAddressDataLength + // char mAddressData[1]; +}; + +// Structure to describe response TLV 0x5D for CATGetEventReport() +struct sCATGetEventReportResponse_UserLogin +{ + eQMICATDataCodingScheme mDataCodingScheme; + UINT8 mTextDataLength; + + // This array must be the size specified by mTextDataLength + // UINT8 mTextData[1]; +}; + +// Structure to describe response TLV 0x5E for CATGetEventReport() +struct sCATGetEventReportResponse_UserPassword +{ + eQMICATDataCodingScheme mDataCodingScheme; + UINT8 mTextDataLength; + + // This array must be the size specified by mTextDataLength + // UINT8 mTextData[1]; +}; + +// Structure to describe response TLV 0x5F for CATGetEventReport() +struct sCATGetEventReportResponse_TransportLevel +{ + eQMICATTransportProtocol mTransportProtocol; + UINT16 mPortNumber; +}; + +// Structure to describe response TLV 0x60 for CATGetEventReport() +struct sCATGetEventReportResponse_DataDestinationAddress +{ + eQMICATAddressType mAddressType; + UINT8 mAddressDataLength; + + // This array must be the size specified by mAddressDataLength + // char mAddressData[1]; +}; + +// Structure to describe response TLV 0x61 for CATGetEventReport() +struct sCATGetEventReportResponse_ChannelDataLength +{ + UINT8 mChannelDataLength; +}; + +// Structure to describe response TLV 0x62 for CATGetEventReport() +struct sCATGetEventReportResponse_SendDataImmediately +{ + eQMICATSendDataImmediately mSendDataImmediately; +}; + +// Structure to describe response TLV 0x63 for CATGetEventReport() +struct sCATGetEventReportResponse_ChannelData +{ + UINT16 mChannelDataLength; + + // This array must be the size specified by mChannelDataLength + // UINT8 mChannelData[1]; +}; + +// Structure to describe response TLV 0x64 for CATGetEventReport() +struct sCATGetEventReportResponse_ChannelID +{ + UINT8 mChannelID; +}; + +// Structure to describe response TLV 0x65 for CATGetEventReport() +struct sCATGetEventReportResponse_ItemsWithDCS +{ + UINT8 mItemsLength; + + struct sItem + { + UINT8 mItemID; + eQMICATDataCodingScheme mDataCodingScheme; + UINT8 mItemTextLength; + + // This array must be the size specified by mItemTextLength + // UINT8 mItemText[1]; + }; + + // This array must be the size specified by mItemsLength + // sItem mItems[1]; +}; + +// Structure to describe response TLV 0x66 for CATGetEventReport() +struct sCATGetEventReportResponse_Activate +{ + UINT32 mReferenceID; + UINT16 mActivateLength; + + // This array must be the size specified by mActivateLength + // UINT8 mActivate[1]; +}; + +// Structure to describe response TLV 0x67 for CATGetEventReport() +struct sCATGetEventReportResponse_ActivateTarget +{ + eQMICATActivateTargets mActivateTarget; +}; + +// Structure to describe response TLV 0x68 for CATGetEventReport() +struct sCATGetEventReportResponse_ResponseType +{ + eQMICATResponseTypes mResponseType; +}; + +// Structure to describe response TLV 0x69 for CATGetEventReport() +struct sCATGetEventReportResponse_BearerIndependentProtocolStatus +{ + UINT8 mChannelID; + eQMICATBearerIndependentProtocolStatus mBearerIndependentProtocolStatus; +}; + +// Structure to describe request TLV 0x01 for CATSendDecodedTerminalResponse() +struct sCATSendDecodedTerminalResponseRequest_TerminalResponse +{ + UINT32 mReferenceID; + UINT8 mCommandNumber; + eQMICATResponseCommand mResponseCommand; + UINT8 mGeneralResult; + UINT8 mAdditionalInformationLength; + + // This array must be the size specified by mAdditionalInformationLength + // UINT8 mTerminalResponseAdditionalInformation[1]; +}; + +// Structure to describe request TLV 0x10 for CATSendDecodedTerminalResponse() +struct sCATSendDecodedTerminalResponseRequest_TextString +{ + eQMICATDataCodingScheme mDataCodingScheme; + UINT8 mTextDataLength; + + // This array must be the size specified by mTextDataLength + // UINT8 mTextData[1]; +}; + +// Structure to describe request TLV 0x11 for CATSendDecodedTerminalResponse() +struct sCATSendDecodedTerminalResponseRequest_ItemIdentifier +{ + UINT8 mItemIdentifier; +}; + +// Structure to describe request TLV 0x12 for CATSendDecodedTerminalResponse() +struct sCATSendDecodedTerminalResponseRequest_GetInkeyExtraInfo +{ + eQMICATTimeUnits mUnits; + UINT8 mInterval; + eQMICATDataCodingScheme mDataCodingScheme; + UINT8 mTextDataLength; + + // This array must be the size specified by mTextDataLength + // UINT8 mTextData[1]; +}; + +// Structure to describe request TLV 0x13 for CATSendDecodedTerminalResponse() +struct sCATSendDecodedTerminalResponseRequest_LanguageInfo +{ + char mLanguage[2]; +}; + +// Structure to describe request TLV 0x14 for CATSendDecodedTerminalResponse() +struct sCATSendDecodedTerminalResponseRequest_Slot +{ + eQMICATSlot mSlot; +}; + +// Structure to describe request TLV 0x15 for CATSendDecodedTerminalResponse() +struct sCATSendDecodedTerminalResponseRequest_GetInkeyYesInput +{ + eQMICATTimeUnits mUnits; + UINT8 mInterval; + INT8 mGetInkeyYesInput; +}; + +// Structure to describe response TLV 0x10 for CATSendDecodedTerminal() +struct sCATSendDecodedTerminalResponseResponse_TRResponse +{ + UINT8 mSW1; + UINT8 mSW2; + UINT8 mTerminalResponseLength; + + // This array must be the size specified by mTerminalResponseLength + // UINT8 mTerminalResponseData[1]; +}; + +// Structure to describe request TLV 0x01 for CATSendDecodedEnvelopeCommand() +struct sCATSendDecodedEnvelopeCommandRequest_EnvelopeCommand +{ + eQMICATDecodedEnvelopeCommand mEnvelopeCommand; +}; + +// Structure to describe request TLV 0x10 for CATSendDecodedEnvelopeCommand() +struct sCATSendDecodedEnvelopeCommandRequest_ItemIdentifier +{ + UINT8 mItemIdentifier; +}; + +// Structure to describe request TLV 0x11 for CATSendDecodedEnvelopeCommand() +struct sCATSendDecodedEnvelopeCommandRequest_HelpRequest +{ + eQMICATHelpRequest mHelpRequest; +}; + +// Structure to describe request TLV 0x12 for CATSendDecodedEnvelopeCommand() +struct sCATSendDecodedEnvelopeCommandRequest_Language +{ + char mLanguage[2]; +}; + +// Structure to describe request TLV 0x13 for CATSendDecodedEnvelopeCommand() +struct sCATSendDecodedEnvelopeCommandRequest_Slot +{ + eQMICATSlot mSlot; +}; + +// Structure to describe request TLV 0x14 for CATSendDecodedEnvelopeCommand() +struct sCATSendDecodedEnvelopeCommandRequest_Address +{ + eQMICATAddressTON mAddressTON; + eQMICATAddressNPI mAddressNPI; + UINT8 mAddressDataLength; + + // This array must be the size specified by mAddressDataLength + // char mAddressData[1]; +}; + +// Structure to describe request TLV 0x15 for CATSendDecodedEnvelopeCommand() +struct sCATSendDecodedEnvelopeCommandRequest_Subaddress +{ + UINT8 mSubaddressDataLength; + + struct sSubaddressData + { + UINT8 mSubaddressData1:4; + UINT8 mSubaddressData2:4; + }; + + // This array must be the size specified by mSubaddressDataLength + // sSubaddressData mSubaddressDatas[1]; +}; + +// Structure to describe request TLV 0x16 for CATSendDecodedEnvelopeCommand() +struct sCATSendDecodedEnvelopeCommandRequest_CapabilityConfigParam1 +{ + UINT8 mCapabilitesConfigurationLength; + + // This array must be the size specified by mCapabilitesConfigurationLength + // UINT8 mCapabilitiesConfiguration[1]; +}; + +// Structure to describe request TLV 0x17 for CATSendDecodedEnvelopeCommand() +struct sCATSendDecodedEnvelopeCommandRequest_CapabilityConfigParam2 +{ + UINT8 mCapabilitesConfigurationLength; + + // This array must be the size specified by mCapabilitesConfigurationLength + // UINT8 mCapabilitiesConfiguration[1]; +}; + +// Structure to describe request TLV 0x18 for CATSendDecodedEnvelopeCommand() +struct sCATSendDecodedEnvelopeCommandRequest_USSDString +{ + eQMICATDataCodingScheme mDataCodingScheme; + UINT8 mTextDataLength; + + // This array must be the size specified by mTextDataLength + // UINT8 mTextData[1]; +}; + +// Structure to describe request TLV 0x19 for CATSendDecodedEnvelopeCommand() +struct sCATSendDecodedEnvelopeCommandRequest_PDPContextActivation +{ + UINT8 mPDPContextActivationDataLength; + + // This array must be the size specified by mPDPContextActivationDataLength + // UINT8 mPDPContextActivationData[1]; +}; + +// Structure to describe request TLV 0x1A for CATSendDecodedEnvelopeCommand() +struct sCATSendDecodedEnvelopeCommandRequest_EPSPDNConnectActivation +{ + UINT8 mEPSPDNConnectActivationDataLength; + + // This array must be the size specified by mEPSPDNConnectActivationDataLength + // UINT8 mEPSPDNConnectActivationData[1]; +}; + +// Structure to describe request TLV 0x1B for CATSendDecodedEnvelopeCommand() +struct sCATSendDecodedEnvelopeCommandRequest_BrowserTerminationCause +{ + eQMICATBrowserTerminationCauses mBrowserTerminationCause; +}; + +// Structure to describe request TLV 0x1C for CATSendDecodedEnvelopeCommand() +struct sCATSendDecodedEnvelopeCommandRequest_SMSTPDU +{ + UINT8 mSMSTPDUDataLength; + + // This array must be the size specified by mSMSTPDUDataLength + // UINT8 mSMSTPDUData[1]; +}; + +// Structure to describe request TLV 0x1D for CATSendDecodedEnvelopeCommand() +struct sCATSendDecodedEnvelopeCommandRequest_IsCDMASMS +{ + eQMICATIsCDMASMS mIsCDMASMS; +}; + +// Structure to describe request TLV 0x1E for CATSendDecodedEnvelopeCommand() +struct sCATSendDecodedEnvelopeCommandRequest_RAT +{ + eQMICATRadioAccessTechnologies mRadioAccessTechnology; +}; + +// Structure to describe request TLV 0x1F for CATSendDecodedEnvelopeCommand() +struct sCATSendDecodedEnvelopeCommandRequest_CallType +{ + eQMICATCallTypes mCallType; +}; + +// Structure to describe request TLV 0x20 for CATSendDecodedEnvelopeCommand() +struct sCATSendDecodedEnvelopeCommandRequest_TransactionID +{ + UINT8 mCallTransactionIDLength; + + // This array must be the size specified by mCallTransactionIDLength + // UINT8 mCallTransactionID[1]; +}; + +// Structure to describe request TLV 0x21 for CATSendDecodedEnvelopeCommand() +struct sCATSendDecodedEnvelopeCommandRequest_RPAddress +{ + eQMICATAddressTON mAddressTON; + eQMICATAddressNPI mAddressNPI; + UINT8 mAddressDataLength; + + // This array must be the size specified by mAddressDataLength + // char mAddressData[1]; +}; + +// Structure to describe request TLV 0x22 for CATSendDecodedEnvelopeCommand() +struct sCATSendDecodedEnvelopeCommandRequest_TPAddress +{ + eQMICATAddressTON mAddressTON; + eQMICATAddressNPI mAddressNPI; + UINT8 mAddressDataLength; + + // This array must be the size specified by mAddressDataLength + // char mAddressData[1]; +}; + +// Structure to describe request TLV 0x23 for CATSendDecodedEnvelopeCommand() +struct sCATSendDecodedEnvelopeCommandRequest_Cause +{ + UINT8 mCauseLength; + + // This array must be the size specified by mCauseLength + // UINT8 mCause[1]; +}; + +// Structure to describe response TLV 0x10 for CATSendDecodedEnvelopeCommand() +struct sCATSendDecodedEnvelopeCommandResponse_CallControlResult +{ + eQMICATCallControlResult mCallControlResult; +}; + +// Structure to describe response TLV 0x11 for CATSendDecodedEnvelopeCommand() +struct sCATSendDecodedEnvelopeCommandResponse_Address +{ + eQMICATAddressTON mAddressTON; + eQMICATAddressNPI mAddressNPI; + UINT8 mAddressDataLength; + + // This array must be the size specified by mAddressDataLength + // char mAddressData[1]; +}; + +// Structure to describe response TLV 0x12 for CATSendDecodedEnvelopeCommand() +struct sCATSendDecodedEnvelopeCommandResponse_Subaddress +{ + UINT8 mSubaddressDataLength; + + struct sSubaddressData + { + UINT8 mSubaddressData1:4; + UINT8 mSubaddressData2:4; + }; + + // This array must be the size specified by mSubaddressDataLength + // sSubaddressData mSubaddressDatas[1]; +}; + +// Structure to describe response TLV 0x13 for CATSendDecodedEnvelopeCommand() +struct sCATSendDecodedEnvelopeCommandResponse_CapabilityConfigParam1 +{ + UINT8 mCapabilitesConfigurationLength; + + // This array must be the size specified by mCapabilitesConfigurationLength + // UINT8 mCapabilitiesConfiguration[1]; +}; + +// Structure to describe response TLV 0x14 for CATSendDecodedEnvelopeCommand() +struct sCATSendDecodedEnvelopeCommandResponse_CapabilityConfigParam2 +{ + UINT8 mCapabilitesConfigurationLength; + + // This array must be the size specified by mCapabilitesConfigurationLength + // UINT8 mCapabilitiesConfiguration[1]; +}; + +// Structure to describe response TLV 0x15 for CATSendDecodedEnvelopeCommand() +struct sCATSendDecodedEnvelopeCommandResponse_USSDString +{ + eQMICATDataCodingScheme mDataCodingScheme; + UINT8 mTextDataLength; + + // This array must be the size specified by mTextDataLength + // UINT8 mTextData[1]; +}; + +// Structure to describe response TLV 0x16 for CATSendDecodedEnvelopeCommand() +struct sCATSendDecodedEnvelopeCommandResponse_PDPContextActivation +{ + UINT8 mPDPContextActivationDataLength; + + // This array must be the size specified by mPDPContextActivationDataLength + // UINT8 mPDPContextActivationData[1]; +}; + +// Structure to describe response TLV 0x17 for CATSendDecodedEnvelopeCommand() +struct sCATSendDecodedEnvelopeCommandResponse_EPSPDNConnectActivation +{ + UINT8 mEPSPDNConnectActivationDataLength; + + // This array must be the size specified by mEPSPDNConnectActivationDataLength + // UINT8 mEPSPDNConnectActivationData[1]; +}; + +// Structure to describe response TLV 0x18 for CATSendDecodedEnvelopeCommand() +struct sCATSendDecodedEnvelopeCommandResponse_Alpha +{ + eQMICATDataCodingScheme mDataCodingScheme; + UINT8 mTextDataLength; + + // This array must be the size specified by mTextDataLength + // UINT8 mTextData[1]; +}; + +// Structure to describe response TLV 0x19 for CATSendDecodedEnvelopeCommand() +struct sCATSendDecodedEnvelopeCommandResponse_BCRepeatIndicator +{ + eQMICATBearerCapabilityRepeatIndicator mBearerCapabilityRepeatIndicator; +}; + +// Structure to describe response TLV 0x1A for CATSendDecodedEnvelopeCommand() +struct sCATSendDecodedEnvelopeCommandResponse_SMSPPDataDownloadUICCACK +{ + UINT8 mSMSPPDataDownloadUICCACKLength; + + // This array must be the size specified by mSMSPPDataDownloadUICCACKLength + // UINT8 mSMSPPDataDownloadUICCACKData[1]; +}; + +// Structure to describe response TLV 0x1B for CATSendDecodedEnvelopeCommand() +struct sCATSendDecodedEnvelopeCommandResponse_RPAddress +{ + eQMICATAddressTON mAddressTON; + eQMICATAddressNPI mAddressNPI; + UINT8 mAddressDataLength; + + // This array must be the size specified by mAddressDataLength + // char mAddressData[1]; +}; + +// Structure to describe response TLV 0x1C for CATSendDecodedEnvelopeCommand() +struct sCATSendDecodedEnvelopeCommandResponse_TPAddress +{ + eQMICATAddressTON mAddressTON; + eQMICATAddressNPI mAddressNPI; + UINT8 mAddressDataLength; + + // This array must be the size specified by mAddressDataLength + // char mAddressData[1]; +}; + +// Structure to describe request TLV 0x10 for CATEventConfirmation() +struct sCATEventConfirmationRequest_UserConfirmed +{ + eQMICATUserConfirmed mUserConfirmed; +}; + +// Structure to describe request TLV 0x11 for CATEventConfirmation() +struct sCATEventConfirmationRequest_IconIsDisplayed +{ + eQMICATIconIsDisplayed mIconIsDisplayed; +}; + +// Structure to describe request TLV 0x12 for CATEventConfirmation() +struct sCATEventConfirmationRequest_Slot +{ + eQMICATSlot mSlot; +}; + +// Structure to describe request TLV 0x01 for CATSCWSOpenChannel() +struct sCATSCWSOpenChannelRequest_ChannelStatus +{ + UINT32 mChannelID; + eQMICATChannelState mChannelState; +}; + +// Structure to describe request TLV 0x10 for CATSCWSOpenChannel() +struct sCATSCWSOpenChannelRequest_Slot +{ + eQMICATSlot mSlot; +}; + +// Structure to describe indication TLV 0x10 for CAT SCWSOpenChannelIndication +struct sCATSCWSOpenChannelIndication_OpenChannelInformation +{ + UINT32 mChannelID; + UINT16 mPortNumber; + UINT16 mBufferSize; +}; + +// Structure to describe indication TLV 0x11 for CAT SCWSOpenChannelIndication +struct sCATSCWSOpenChannelIndication_Slot +{ + eQMICATSlot mSlot; +}; + +// Structure to describe indication TLV 0x12 for CAT SCWSOpenChannelIndication +struct sCATSCWSOpenChannelIndication_Alpha +{ + eQMICATDataCodingScheme mDataCodingScheme; + UINT8 mTextDataLength; + + // This array must be the size specified by mTextDataLength + // UINT8 mTextData[1]; +}; + +// Structure to describe request TLV 0x01 for CATSCWSCloseChannel() +struct sCATSCWSCloseChannelRequest_ChannelStatus +{ + UINT32 mChannelID; + eQMICATChannelState mChannelState; +}; + +// Structure to describe request TLV 0x10 for CATSCWSCloseChannel() +struct sCATSCWSCloseChannelRequest_Slot +{ + eQMICATSlot mSlot; +}; + +// Structure to describe indication TLV 0x10 for CAT SCWSCloseChannelIndication +struct sCATSCWSCloseChannelIndication_CloseChannelInfo +{ + UINT32 mChannelID; + eQMICATChannelState mChannelState; +}; + +// Structure to describe response TLV 0x11 for CATSCWSCloseChannel() +struct sCATSCWSCloseChannelResponse_Slot +{ + eQMICATSlot mSlot; +}; + +// Structure to describe request TLV 0x01 for CATSCWSSendData() +struct sCATSCWSSendDataRequest_ChannelStatus +{ + UINT32 mChannelID; + eQMICATSendDataResult mDataSendResult; +}; + +// Structure to describe request TLV 0x10 for CATSCWSSendData() +struct sCATSCWSSendDataRequest_Slot +{ + eQMICATSlot mSlot; +}; + +// Structure to describe indication TLV 0x10 for CAT SCWSSendDataIndication +struct sCATSCWSSendDataIndication_SendDataInfo +{ + UINT32 mChannelID; + UINT8 mTotalPackets; + UINT8 mCurrentPacket; + UINT16 mDataLength; + + // This array must be the size specified by mDataLength + // UINT8 mData[1]; +}; + +// Structure to describe indication TLV 0x11 for CAT SCWSSendDataIndication +struct sCATSCWSSendDataIndication_Slot +{ + eQMICATSlot mSlot; +}; + +// Structure to describe request TLV 0x01 for CATSCWSDataAvailable() +struct sCATSCWSDataAvailableRequest_RemainingData +{ + UINT32 mChannelID; + UINT16 mDataLength; + + // This array must be the size specified by mDataLength + // UINT8 mData[1]; +}; + +// Structure to describe request TLV 0x02 for CATSCWSDataAvailable() +struct sCATSCWSDataAvailableRequest_RemainingDataLength +{ + UINT16 mDataLength; +}; + +// Structure to describe request TLV 0x10 for CATSCWSDataAvailable() +struct sCATSCWSDataAvailableRequest_Slot +{ + eQMICATSlot mSlot; +}; + +// Structure to describe request TLV 0x01 for CATSCWSChannelStatus() +struct sCATSCWSChannelStatusRequest_ChannelStatus +{ + UINT32 mChannelID; + eQMICATChannelState mChannelState; +}; + +// Structure to describe request TLV 0x10 for CATSCWSChannelStatus() +struct sCATSCWSChannelStatusRequest_Slot +{ + eQMICATSlot mSlot; +}; + +// Structure to describe request TLV 0x10 for CATGetTerminalProfile() +struct sCATGetTerminalProfileRequest_Slot +{ + eQMICATSlot mSlot; +}; + +// Structure to describe response TLV 0x10 for CATGetTerminalProfile() +struct sCATGetTerminalProfileResponse_RawData +{ + UINT8 mTerminalProfileLength; + + // This array must be the size specified by mTerminalProfileLength + // UINT8 mTerminalProfileData[1]; +}; + +// Structure to describe request TLV 0x01 for CATSetConfiguration() +struct sCATSetConfigurationRequest_Mode +{ + eQMICATConfigModes mConfigMode; +}; + +// Structure to describe request TLV 0x10 for CATSetConfiguration() +struct sCATSetConfigurationRequest_CustomData +{ + UINT8 mTerminalProfileLength; + + // This array must be the size specified by mTerminalProfileLength + // UINT8 mTerminalProfileData[1]; +}; + +// Structure to describe response TLV 0x10 for CATGetConfiguration() +struct sCATGetConfigurationResponse_Mode +{ + eQMICATConfigModes mConfigMode; +}; + +// Structure to describe response TLV 0x11 for CATGetConfiguration() +struct sCATGetConfigurationResponse_CustomData +{ + UINT8 mTerminalProfileLength; + + // This array must be the size specified by mTerminalProfileLength + // UINT8 mTerminalProfileData[1]; +}; + +// Structure to describe response TLV 0x10 for RMSGetSMSWake() +struct sRMSGetSMSWakeResponse_State +{ + INT8 mSMSWakeEnabled; +}; + +// Structure to describe request TLV 0x11 for RMSGetSMSWake() +struct sRMSGetSMSWakeRequest_Mask +{ + UINT32 mMask; +}; + +// Structure to describe request TLV 0x10 for RMSSetSMSWake() +struct sRMSSetSMSWakeRequest_State +{ + INT8 mSMSWakeEnabled; +}; + +// Structure to describe request TLV 0x11 for RMSSetSMSWake() +struct sRMSSetSMSWakeRequest_Mask +{ + UINT32 mMask; +}; + +// Structure to describe request TLV 0x10 for OMASetEventReport() +struct sOMASetEventReportRequest_NIA +{ + INT8 mReportNetworkInitiatedAlerts; +}; + +// Structure to describe request TLV 0x11 for OMASetEventReport() +struct sOMASetEventReportRequest_Status +{ + INT8 mReportSessionStatus; +}; + +// Structure to describe indication TLV 0x10 for OMA EventReport +struct sOMAEventReportIndication_NIA +{ + eQMIOMASessionTypes mSessionType; + UINT16 mSessionID; +}; + +// Structure to describe indication TLV 0x11 for OMA EventReport +struct sOMAEventReportIndication_Status +{ + eQMIOMASessionStates mSessionState; +}; + +// Structure to describe indication TLV 0x12 for OMA EventReport +struct sOMAEventReportIndication_Failure +{ + eQMIOMASessionFailureReasons mSessionFailure; +}; + +// Structure to describe request TLV 0x10 for OMAStartSession() +struct sOMAStartSessionRequest_Type +{ + eQMIOMASessionTypes mSessionType; +}; + +// Structure to describe response TLV 0x10 for OMAGetSessionInfo() +struct sOMAGetSessionInfoResponse_Info +{ + eQMIOMASessionStates mSessionState; + eQMIOMASessionTypes mSessionType; +}; + +// Structure to describe response TLV 0x11 for OMAGetSessionInfo() +struct sOMAGetSessionInfoResponse_Failure +{ + eQMIOMASessionFailureReasons mSessionFailure; +}; + +// Structure to describe response TLV 0x12 for OMAGetSessionInfo() +struct sOMAGetSessionInfoResponse_Retry +{ + UINT8 mRetryCount; + UINT16 mRetryPauseTimer; + UINT16 mRemainingTime; +}; + +// Structure to describe response TLV 0x13 for OMAGetSessionInfo() +struct sOMAGetSessionInfoResponse_NIA +{ + eQMIOMASessionTypes mSessionType; + UINT16 mSessionID; +}; + +// Structure to describe request TLV 0x10 for OMASendSelection() +struct sOMASendSelectionRequest_Type +{ + eQMIOMASelections mSelection; + UINT16 mSessionID; +}; + +// Structure to describe response TLV 0x10 for OMAGetFeatures() +struct sOMAGetFeaturesResponse_Provisioning +{ + INT8 mDeviceProvisioningServiceUpdateEnabled; +}; + +// Structure to describe response TLV 0x11 for OMAGetFeatures() +struct sOMAGetFeaturesResponse_PRLUpdate +{ + INT8 mPRLServiceUpdateEnabled; +}; + +// Structure to describe response TLV 0x12 for OMAGetFeatures() +struct sOMAGetFeaturesResponse_HFAFeature +{ + INT8 mHFAFeatureEnabled; +}; + +// Structure to describe response TLV 0x13 for OMAGetFeatures() +struct sOMAGetFeaturesResponse_HFADoneState +{ + eQMIOMAHFADoneStates mHFAFeatureDoneState; +}; + +// Structure to describe request TLV 0x10 for OMASetFeatures() +struct sOMASetFeaturesRequest_Provisioning +{ + INT8 mDeviceProvisioningServiceUpdateEnabled; +}; + +// Structure to describe request TLV 0x11 for OMASetFeatures() +struct sOMASetFeaturesRequest_PRLUpdate +{ + INT8 mPRLServiceUpdateEnabled; +}; + +// Structure to describe request TLV 0x12 for OMASetFeatures() +struct sOMASetFeaturesRequest_HFAFeature +{ + INT8 mHFAFeatureEnabled; +}; + + +#pragma pack( pop ) diff --git a/gobi-api/GobiAPI_2013-07-31-1347/GobiConnectionMgmt/GobiConnectionMgmtExports.cpp b/gobi-api/GobiAPI_2013-07-31-1347/GobiConnectionMgmt/GobiConnectionMgmtExports.cpp new file mode 100644 index 0000000..fdaaef3 --- /dev/null +++ b/gobi-api/GobiAPI_2013-07-31-1347/GobiConnectionMgmt/GobiConnectionMgmtExports.cpp @@ -0,0 +1,25838 @@ +/*=========================================================================== +FILE: + GobiConnectionMgmtExports.cpp + +DESCRIPTION: + QUALCOMM Gobi 5000 Connection Management API exports + +Copyright (c) 2013, The Linux Foundation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +==========================================================================*/ + +//--------------------------------------------------------------------------- +// Include Files +//--------------------------------------------------------------------------- +#include "StdAfx.h" +#include "GobiConnectionMgmt.h" + +//--------------------------------------------------------------------------- +// Definitions +//--------------------------------------------------------------------------- + +/*=========================================================================*/ +// Exported Methods +/*=========================================================================*/ + +/*=========================================================================== +METHOD: + GobiConnect + +DESCRIPTION: + This function connects the CM API library to the specified Gobi + device + +PARAMETERS: + pQMIFile [ I ] - Device interface to connect to + pServicesCount [I/O] - Upon input the number of QMI services to connect to, + upon output the number of QMI services successfully + connected to + pServices [I/O] - Upon input the array of QMI service IDs to connect + to, upon output the array of QMI service IDs + successfully connected to + pHandle [ O ] - The returned Gobi interface handle + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG GobiConnect( + LPCSTR pInterface, + ULONG * pServicesCount, + ULONG * pServices, + GOBIHANDLE * pHandle ) +{ + // Validate arguments + if ( (pInterface == 0) + || (pServicesCount == 0) + || (*pServicesCount == 0) + || (pServices == 0) + || (pHandle == 0) ) + { + return (ULONG)eGOBI_ERR_INVALID_ARG; + } + + GOBIHANDLE handle = gDLL.CreateAPI(); + if (handle == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcCount = *pServicesCount; + *pServicesCount = 0; + *pHandle = 0; + + std::set inSvcs; + std::set outSvcs; + + ULONG s = 0; + for (s = 0; s < svcCount; s++) + { + inSvcs.insert( (eQMIService)pServices[s] ); + } + + outSvcs = pAPI->Connect( pInterface, inSvcs ); + + ULONG outSvcsCount = (ULONG)outSvcs.size(); + if (outSvcsCount > svcCount) + { + outSvcsCount = svcCount; + } + + if (outSvcsCount == 0) + { + ULONG rc = (ULONG)pAPI->GetCorrectedLastError(); + pAPI = 0; + + gDLL.DeleteAPI( handle ); + return rc; + } + + std::set ::const_iterator pOutSvc = outSvcs.begin(); + for (s = 0; s < svcCount; s++) + { + pServices[s] = UCHAR_MAX; + if (s < outSvcsCount) + { + pServices[s] = (ULONG)*pOutSvc++; + } + } + + *pHandle = handle; + *pServicesCount = outSvcsCount; + + return (ULONG)eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + GobiCancel + +DESCRIPTION: + This function cancels the most recent outstanding request for the + specified QMI service + +PARAMETERS: + handle [ I ] - Gobi interface handle + svcID [ I ] - Service whose outstanding request is to be cancelled + pTXID [ O ] - QMI transaction ID of outstanding request + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG GobiCancel( + GOBIHANDLE handle, + ULONG svcID, + ULONG * pTXID ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + return (ULONG)pAPI->CancelSend( svcID, pTXID ); +} + +/*=========================================================================== +METHOD: + GobiDisconnect + +DESCRIPTION: + This function disconnects the CM API library from the currently + connected Gobi device + +PARAMETERS: + handle [ I ] - Gobi interface handle + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG GobiDisconnect( GOBIHANDLE handle ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + bool bDisco = pAPI->Disconnect(); + if (bDisco == false) + { + return (ULONG)pAPI->GetCorrectedLastError(); + } + + return (ULONG)eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + SetGenericCallback + +DESCRIPTION: + This function enables/disables a generic callback + +PARAMETERS: + handle [ I ] - Gobi interface handle + svcID [ I ] - Service ID to monitor + msgID [ I ] - Message ID to look for + pCallback [ I ] - Callback function + +RETURN VALUE: + ULONG +===========================================================================*/ +ULONG SetGenericCallback( + GOBIHANDLE handle, + ULONG svcID, + ULONG msgID, + tFNGenericCallback pCallback ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + return (ULONG)pAPI->SetGenericCallback( svcID, + msgID, + pCallback, + handle ); +} + +/*=========================================================================== +METHOD: + WDSReset + +DESCRIPTION: + The function sends 'WDS/Reset Request' (0x0000) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSReset( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 0; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSSetEventReport + +DESCRIPTION: + The function sends 'WDS/Set Event Report Request' (0x0001) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSSetEventReport( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 1; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSAbort + +DESCRIPTION: + The function sends 'WDS/Abort Request' (0x0002) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSAbort( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 2; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSSetIndication + +DESCRIPTION: + The function sends 'WDS/Set Indication Request' (0x0003) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSSetIndication( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 3; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSGetSupportedMessages + +DESCRIPTION: + The function sends 'WDS/Get Supported Messages Request' (0x001E) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetSupportedMessages( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 30; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSGetSupportedFields + +DESCRIPTION: + The function sends 'WDS/Get Supported Fields Request' (0x001F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetSupportedFields( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 31; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSStartNetworkInterface + +DESCRIPTION: + The function sends 'WDS/Start Network Interface Request' (0x0020) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSStartNetworkInterface( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 32; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSStopNetworkInterface + +DESCRIPTION: + The function sends 'WDS/Stop Network Interface Request' (0x0021) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSStopNetworkInterface( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 33; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSGetPacketServiceStatus + +DESCRIPTION: + The function sends 'WDS/Get Packet Service Status Request' (0x0022) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetPacketServiceStatus( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 34; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSGetChannelRates + +DESCRIPTION: + The function sends 'WDS/Get Channel Rates Request' (0x0023) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetChannelRates( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 35; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSGetPacketStatistics + +DESCRIPTION: + The function sends 'WDS/Get Packet Statistics Request' (0x0024) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetPacketStatistics( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 36; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSGoDormant + +DESCRIPTION: + The function sends 'WDS/Go Dormant Request' (0x0025) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGoDormant( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 37; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSGoActive + +DESCRIPTION: + The function sends 'WDS/Go Active Request' (0x0026) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGoActive( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 38; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSCreateProfile + +DESCRIPTION: + The function sends 'WDS/Create Profile Request' (0x0027) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSCreateProfile( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 39; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSModifyProfile + +DESCRIPTION: + The function sends 'WDS/Modify Profile Request' (0x0028) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSModifyProfile( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 40; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSDeleteProfile + +DESCRIPTION: + The function sends 'WDS/Delete Profile Request' (0x0029) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSDeleteProfile( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 41; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSGetProfileList + +DESCRIPTION: + The function sends 'WDS/Get Profile List Request' (0x002A) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetProfileList( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 42; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSGetProfileSettings + +DESCRIPTION: + The function sends 'WDS/Get Profile Settings Request' (0x002B) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetProfileSettings( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 43; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSGetDefaultSettings + +DESCRIPTION: + The function sends 'WDS/Get Default Settings Request' (0x002C) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetDefaultSettings( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 44; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSGetCurrentSettings + +DESCRIPTION: + The function sends 'WDS/Get Current Settings Request' (0x002D) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetCurrentSettings( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 45; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSSetMIPMode + +DESCRIPTION: + The function sends 'WDS/Set MIP Mode Request' (0x002E) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSSetMIPMode( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 46; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSGetMIPMode + +DESCRIPTION: + The function sends 'WDS/Get MIP Mode Request' (0x002F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetMIPMode( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 47; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSGetDormancy + +DESCRIPTION: + The function sends 'WDS/Get Dormancy Request' (0x0030) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetDormancy( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 48; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSGetAutoconnectSetting + +DESCRIPTION: + The function sends 'WDS/Get Autoconnect Setting Request' (0x0034) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetAutoconnectSetting( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 52; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSGetDataSessionDuration + +DESCRIPTION: + The function sends 'WDS/Get Data Session Duration Request' (0x0035) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetDataSessionDuration( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 53; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSGetModemStatus + +DESCRIPTION: + The function sends 'WDS/Get Modem Status Request' (0x0036) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetModemStatus( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 54; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSGetDataBearerTechnology + +DESCRIPTION: + The function sends 'WDS/Get Data Bearer Technology Request' (0x0037) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetDataBearerTechnology( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 55; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSGetModemInfo + +DESCRIPTION: + The function sends 'WDS/Get Modem Info Request' (0x0038) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetModemInfo( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 56; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSGetActiveMIPProfile + +DESCRIPTION: + The function sends 'WDS/Get Active MIP Profile Request' (0x003C) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetActiveMIPProfile( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 60; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSSetActiveMIPProfile + +DESCRIPTION: + The function sends 'WDS/Set Active MIP Profile Request' (0x003D) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSSetActiveMIPProfile( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 61; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSGetMIPProfile + +DESCRIPTION: + The function sends 'WDS/Get MIP Profile Request' (0x003E) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetMIPProfile( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 62; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSSetMIPProfile + +DESCRIPTION: + The function sends 'WDS/Set MIP Profile Request' (0x003F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSSetMIPProfile( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 63; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSGetMIPParameters + +DESCRIPTION: + The function sends 'WDS/Get MIP Parameters Request' (0x0040) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetMIPParameters( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 64; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSSetMIPParameters + +DESCRIPTION: + The function sends 'WDS/Set MIP Parameters Request' (0x0041) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSSetMIPParameters( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 65; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSGetLastMIPStatus + +DESCRIPTION: + The function sends 'WDS/Get Last MIP Status Request' (0x0042) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetLastMIPStatus( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 66; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSGetANAAAAuthenticationStatus + +DESCRIPTION: + The function sends 'WDS/Get AN-AAA Authentication Status Request' (0x0043) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetANAAAAuthenticationStatus( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 67; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSGetCurrentDataBearerTechnology + +DESCRIPTION: + The function sends 'WDS/Get Current Data Bearer Technology Request' (0x0044) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetCurrentDataBearerTechnology( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 68; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSGetCallList + +DESCRIPTION: + The function sends 'WDS/Get Call List Request' (0x0045) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetCallList( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 69; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSGetCallRecord + +DESCRIPTION: + The function sends 'WDS/Get Call Record Request' (0x0046) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetCallRecord( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 70; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSClearCallList + +DESCRIPTION: + The function sends 'WDS/Clear Call List Request' (0x0047) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSClearCallList( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 71; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSGetCallListMaxSize + +DESCRIPTION: + The function sends 'WDS/Get Call List Max Size Request' (0x0048) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetCallListMaxSize( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 72; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSGetDefaultProfileNumber + +DESCRIPTION: + The function sends 'WDS/Get Default Profile Number Request' (0x0049) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetDefaultProfileNumber( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 73; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSSetDefaultProfileNumber + +DESCRIPTION: + The function sends 'WDS/Set Default Profile Number Request' (0x004A) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSSetDefaultProfileNumber( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 74; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSResetProfile + +DESCRIPTION: + The function sends 'WDS/Reset Profile Request' (0x004B) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSResetProfile( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 75; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSResetProfileParamToInvalid + +DESCRIPTION: + The function sends 'WDS/Reset Profile Param To Invalid Request' (0x004C) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSResetProfileParamToInvalid( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 76; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSSetIPFamilyPreference + +DESCRIPTION: + The function sends 'WDS/Set IP Family Preference Request' (0x004D) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSSetIPFamilyPreference( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 77; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSSetFMCTunnelParameters + +DESCRIPTION: + The function sends 'WDS/Set FMC Tunnel Parameters Request' (0x004E) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSSetFMCTunnelParameters( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 78; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSClearFMCTunnelParameters + +DESCRIPTION: + The function sends 'WDS/Clear FMC Tunnel Parameters Request' (0x004F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSClearFMCTunnelParameters( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 79; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSGetFMCTunnelParameters + +DESCRIPTION: + The function sends 'WDS/Get FMC Tunnel Parameters Request' (0x0050) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetFMCTunnelParameters( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 80; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSSetAutoconnectSetting + +DESCRIPTION: + The function sends 'WDS/Set Autoconnect Setting Request' (0x0051) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSSetAutoconnectSetting( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 81; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSGetDNSSetting + +DESCRIPTION: + The function sends 'WDS/Get DNS Setting Request' (0x0052) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetDNSSetting( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 82; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSSetDNSSetting + +DESCRIPTION: + The function sends 'WDS/Set DNS Setting Request' (0x0053) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSSetDNSSetting( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 83; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSGetCDMAPreDormancySettings + +DESCRIPTION: + The function sends 'WDS/Get CDMA Pre-Dormancy Settings Request' (0x0054) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetCDMAPreDormancySettings( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 84; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSSetCAMTimer + +DESCRIPTION: + The function sends 'WDS/Set CAM Timer Request' (0x0055) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSSetCAMTimer( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 85; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSGetCAMTimer + +DESCRIPTION: + The function sends 'WDS/Get CAM Timer Request' (0x0056) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetCAMTimer( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 86; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSSetSCRM + +DESCRIPTION: + The function sends 'WDS/Set SCRM Request' (0x0057) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSSetSCRM( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 87; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSGetSCRM + +DESCRIPTION: + The function sends 'WDS/Get SCRM Request' (0x0058) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetSCRM( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 88; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSSetRDUD + +DESCRIPTION: + The function sends 'WDS/Set RDUD Request' (0x0059) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSSetRDUD( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 89; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSGetRDUD + +DESCRIPTION: + The function sends 'WDS/Get RDUD Request' (0x005A) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetRDUD( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 90; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSGetSIPMIPCallType + +DESCRIPTION: + The function sends 'WDS/Get SIP/MIP Call Type Request' (0x005B) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetSIPMIPCallType( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 91; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSSetEVDOPageMonitorPeriod + +DESCRIPTION: + The function sends 'WDS/Set EV-DO Page Monitor Period Request' (0x005C) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSSetEVDOPageMonitorPeriod( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 92; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSSetEVDOLongSleep + +DESCRIPTION: + The function sends 'WDS/Set EV-DO Long Sleep Request' (0x005D) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSSetEVDOLongSleep( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 93; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSGetEVDOPageMonitorPeriod + +DESCRIPTION: + The function sends 'WDS/Get EV-DO Page Monitor Period Request' (0x005E) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetEVDOPageMonitorPeriod( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 94; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSGetCallThrottleInfo + +DESCRIPTION: + The function sends 'WDS/Get Call Throttle Info Request' (0x005F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetCallThrottleInfo( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 95; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSGetNSAPI + +DESCRIPTION: + The function sends 'WDS/Get NSAPI Request' (0x0060) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetNSAPI( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 96; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSSetDUNCallControlPreference + +DESCRIPTION: + The function sends 'WDS/Set DUN Call Control Preference Request' (0x0061) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSSetDUNCallControlPreference( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 97; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSGetDUNCallControlInfo + +DESCRIPTION: + The function sends 'WDS/Get DUN Call Control Info Request' (0x0062) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetDUNCallControlInfo( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 98; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSSetDUNCallControlEventReport + +DESCRIPTION: + The function sends 'WDS/Set DUN Call Control Event Report Request' (0x0063) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSSetDUNCallControlEventReport( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 99; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSPendingDUNCallControl + +DESCRIPTION: + The function sends 'WDS/Pending DUN Call Control Request' (0x0064) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSPendingDUNCallControl( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 100; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSEMBMSTMGIActivate + +DESCRIPTION: + The function sends 'WDS/EMBMS TMGI Activate Request' (0x0065) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSEMBMSTMGIActivate( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 101; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSEMBMSTMGIDeactivate + +DESCRIPTION: + The function sends 'WDS/EMBMS TMGI Deactivate Request' (0x0066) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSEMBMSTMGIDeactivate( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 102; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSEMBMSTMGIListQuery + +DESCRIPTION: + The function sends 'WDS/EMBMS TMGI List Query Request' (0x0067) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSEMBMSTMGIListQuery( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 103; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSGetPreferredDataSystem + +DESCRIPTION: + The function sends 'WDS/Get Preferred Data System Request' (0x0069) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetPreferredDataSystem( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 105; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSGetLastDataCallStatus + +DESCRIPTION: + The function sends 'WDS/Get Last Data Call Status Request' (0x006A) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetLastDataCallStatus( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 106; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSGetCurrentDataSystems + +DESCRIPTION: + The function sends 'WDS/Get Current Data Systems Request' (0x006B) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetCurrentDataSystems( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 107; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSGetPDNThrottleInfo + +DESCRIPTION: + The function sends 'WDS/Get PDN Throttle Info Request' (0x006C) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetPDNThrottleInfo( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 108; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSGetLTEAttachParameters + +DESCRIPTION: + The function sends 'WDS/Get LTE Attach Parameters Request' (0x0085) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetLTEAttachParameters( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 133; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSResetPacketStatistics + +DESCRIPTION: + The function sends 'WDS/Reset Packet Statistics Request' (0x0086) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSResetPacketStatistics( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 134; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSGetFlowControlStatus + +DESCRIPTION: + The function sends 'WDS/Get Flow Control Status Request' (0x0087) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetFlowControlStatus( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 135; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSEMBMSTMGISwitch + +DESCRIPTION: + The function sends 'WDS/EMBMS TMGI Switch Request' (0x0088) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSEMBMSTMGISwitch( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 136; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSBindDataPort + +DESCRIPTION: + The function sends 'WDS/Bind Data Port Request' (0x0089) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSBindDataPort( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 137; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSSetPDNFilter + +DESCRIPTION: + The function sends 'WDS/Set PDN Filter Request' (0x008A) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSSetPDNFilter( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 138; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSRemovePDNFilter + +DESCRIPTION: + The function sends 'WDS/Remove PDN Filter Request' (0x008B) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSRemovePDNFilter( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 139; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSReverseIPTransportConnectionIndication + +DESCRIPTION: + The function sends 'WDS/Reverse IP Transport Connection Indication Request' (0x008D) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSReverseIPTransportConnectionIndication( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 141; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSGetIPSecStaticSAConfig + +DESCRIPTION: + The function sends 'WDS/Get IPSec Static SA Config Request' (0x008F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetIPSecStaticSAConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 143; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSReverseIPTransportConfigComplete + +DESCRIPTION: + The function sends 'WDS/Reverse IP Transport Config Complete Request' (0x0090) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSReverseIPTransportConfigComplete( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 144; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSGetExtendedDataBearerTechnology + +DESCRIPTION: + The function sends 'WDS/Get Extended Data Bearer Technology Request' (0x0091) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetExtendedDataBearerTechnology( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 145; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSGetLTEMaximumAttachPDNNumber + +DESCRIPTION: + The function sends 'WDS/Get LTE Maximum Attach PDN Number Request' (0x0092) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetLTEMaximumAttachPDNNumber( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 146; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSSetLTEAttachPDNList + +DESCRIPTION: + The function sends 'WDS/Set LTE Attach PDN List Request' (0x0093) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSSetLTEAttachPDNList( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 147; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSGetLTEAttachPDNList + +DESCRIPTION: + The function sends 'WDS/Get LTE Attach PDN List Request' (0x0094) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetLTEAttachPDNList( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 148; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSSetLTEDataRetry + +DESCRIPTION: + The function sends 'WDS/Set LTE Data Retry Request' (0x0096) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSSetLTEDataRetry( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 150; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSGetLTEDataRetry + +DESCRIPTION: + The function sends 'WDS/Get LTE Data Retry Request' (0x0097) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetLTEDataRetry( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 151; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSSetLTEAttachType + +DESCRIPTION: + The function sends 'WDS/Set LTE Attach Type Request' (0x0098) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSSetLTEAttachType( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 152; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDSGetLTEAttachType + +DESCRIPTION: + The function sends 'WDS/Get LTE Attach Type Request' (0x0099) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDSGetLTEAttachType( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 1; + ULONG msgID = 153; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + DMSReset + +DESCRIPTION: + The function sends 'DMS/Reset Request' (0x0000) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSReset( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 2; + ULONG msgID = 0; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + DMSSetEventReport + +DESCRIPTION: + The function sends 'DMS/Set Event Report Request' (0x0001) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSSetEventReport( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 2; + ULONG msgID = 1; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + DMSGetSupportedMessages + +DESCRIPTION: + The function sends 'DMS/Get Supported Messages Request' (0x001E) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSGetSupportedMessages( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 2; + ULONG msgID = 30; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + DMSGetSupportedFields + +DESCRIPTION: + The function sends 'DMS/Get Supported Fields Request' (0x001F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSGetSupportedFields( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 2; + ULONG msgID = 31; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + DMSGetDeviceCapabilities + +DESCRIPTION: + The function sends 'DMS/Get Device Capabilities Request' (0x0020) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSGetDeviceCapabilities( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 2; + ULONG msgID = 32; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + DMSGetDeviceManfacturer + +DESCRIPTION: + The function sends 'DMS/Get Device Manfacturer Request' (0x0021) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSGetDeviceManfacturer( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 2; + ULONG msgID = 33; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + DMSGetDeviceModel + +DESCRIPTION: + The function sends 'DMS/Get Device Model Request' (0x0022) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSGetDeviceModel( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 2; + ULONG msgID = 34; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + DMSGetDeviceRevision + +DESCRIPTION: + The function sends 'DMS/Get Device Revision Request' (0x0023) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSGetDeviceRevision( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 2; + ULONG msgID = 35; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + DMSGetDeviceVoiceNumber + +DESCRIPTION: + The function sends 'DMS/Get Device Voice Number Request' (0x0024) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSGetDeviceVoiceNumber( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 2; + ULONG msgID = 36; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + DMSGetDeviceSerialNumbers + +DESCRIPTION: + The function sends 'DMS/Get Device Serial Numbers Request' (0x0025) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSGetDeviceSerialNumbers( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 2; + ULONG msgID = 37; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + DMSGetPowerState + +DESCRIPTION: + The function sends 'DMS/Get Power State Request' (0x0026) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSGetPowerState( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 2; + ULONG msgID = 38; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + DMSUIMSetPINProtection + +DESCRIPTION: + The function sends 'DMS/UIM Set PIN Protection Request' (0x0027) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSUIMSetPINProtection( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 2; + ULONG msgID = 39; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + DMSUIMVerifyPIN + +DESCRIPTION: + The function sends 'DMS/UIM Verify PIN Request' (0x0028) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSUIMVerifyPIN( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 2; + ULONG msgID = 40; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + DMSUIMUnblockPIN + +DESCRIPTION: + The function sends 'DMS/UIM Unblock PIN Request' (0x0029) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSUIMUnblockPIN( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 2; + ULONG msgID = 41; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + DMSUIMChangePIN + +DESCRIPTION: + The function sends 'DMS/UIM Change PIN Request' (0x002A) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSUIMChangePIN( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 2; + ULONG msgID = 42; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + DMSUIMGetPINStatus + +DESCRIPTION: + The function sends 'DMS/UIM Get PIN Status Request' (0x002B) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSUIMGetPINStatus( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 2; + ULONG msgID = 43; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + DMSGetHardwareRevision + +DESCRIPTION: + The function sends 'DMS/Get Hardware Revision Request' (0x002C) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSGetHardwareRevision( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 2; + ULONG msgID = 44; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + DMSGetOperatingMode + +DESCRIPTION: + The function sends 'DMS/Get Operating Mode Request' (0x002D) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSGetOperatingMode( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 2; + ULONG msgID = 45; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + DMSSetOperatingMode + +DESCRIPTION: + The function sends 'DMS/Set Operating Mode Request' (0x002E) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSSetOperatingMode( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 2; + ULONG msgID = 46; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + DMSGetTimestamp + +DESCRIPTION: + The function sends 'DMS/Get Timestamp Request' (0x002F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSGetTimestamp( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 2; + ULONG msgID = 47; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + DMSGetPRLVersion + +DESCRIPTION: + The function sends 'DMS/Get PRL Version Request' (0x0030) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSGetPRLVersion( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 2; + ULONG msgID = 48; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + DMSGetActivationState + +DESCRIPTION: + The function sends 'DMS/Get Activation State Request' (0x0031) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSGetActivationState( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 2; + ULONG msgID = 49; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + DMSActivateAutomatic + +DESCRIPTION: + The function sends 'DMS/Activate Automatic Request' (0x0032) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSActivateAutomatic( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 2; + ULONG msgID = 50; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + DMSActivateManual + +DESCRIPTION: + The function sends 'DMS/Activate Manual Request' (0x0033) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSActivateManual( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 2; + ULONG msgID = 51; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + DMSGetLockState + +DESCRIPTION: + The function sends 'DMS/Get Lock State Request' (0x0034) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSGetLockState( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 2; + ULONG msgID = 52; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + DMSSetLockState + +DESCRIPTION: + The function sends 'DMS/Set Lock State Request' (0x0035) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSSetLockState( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 2; + ULONG msgID = 53; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + DMSSetLockCode + +DESCRIPTION: + The function sends 'DMS/Set Lock Code Request' (0x0036) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSSetLockCode( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 2; + ULONG msgID = 54; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + DMSReadUserData + +DESCRIPTION: + The function sends 'DMS/Read User Data Request' (0x0037) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSReadUserData( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 2; + ULONG msgID = 55; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + DMSWriteUserData + +DESCRIPTION: + The function sends 'DMS/Write User Data Request' (0x0038) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSWriteUserData( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 2; + ULONG msgID = 56; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + DMSReadERIData + +DESCRIPTION: + The function sends 'DMS/Read ERI Data Request' (0x0039) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSReadERIData( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 2; + ULONG msgID = 57; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + DMSResetFactoryDefaults + +DESCRIPTION: + The function sends 'DMS/Reset Factory Defaults Request' (0x003A) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSResetFactoryDefaults( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 2; + ULONG msgID = 58; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + DMSValidateSPC + +DESCRIPTION: + The function sends 'DMS/Validate SPC Request' (0x003B) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSValidateSPC( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 2; + ULONG msgID = 59; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + DMSUIMGetICCID + +DESCRIPTION: + The function sends 'DMS/UIM Get ICCID Request' (0x003C) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSUIMGetICCID( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 2; + ULONG msgID = 60; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + DMSUIMGetHostLockID + +DESCRIPTION: + The function sends 'DMS/UIM Get Host Lock ID Request' (0x003F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSUIMGetHostLockID( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 2; + ULONG msgID = 63; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + DMSUIMGetControlKeyStatus + +DESCRIPTION: + The function sends 'DMS/UIM Get Control Key Status Request' (0x0040) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSUIMGetControlKeyStatus( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 2; + ULONG msgID = 64; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + DMSUIMSetControlKeyProtection + +DESCRIPTION: + The function sends 'DMS/UIM Set Control Key Protection Request' (0x0041) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSUIMSetControlKeyProtection( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 2; + ULONG msgID = 65; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + DMSUIMUnblockControlKey + +DESCRIPTION: + The function sends 'DMS/UIM Unblock Control Key Request' (0x0042) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSUIMUnblockControlKey( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 2; + ULONG msgID = 66; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + DMSGetIMSI + +DESCRIPTION: + The function sends 'DMS/Get IMSI Request' (0x0043) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSGetIMSI( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 2; + ULONG msgID = 67; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + DMSGetUIMState + +DESCRIPTION: + The function sends 'DMS/Get UIM State Request' (0x0044) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSGetUIMState( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 2; + ULONG msgID = 68; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + DMSGetBandCapabilities + +DESCRIPTION: + The function sends 'DMS/Get Band Capabilities Request' (0x0045) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSGetBandCapabilities( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 2; + ULONG msgID = 69; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + DMSGetFactorySerialNumber + +DESCRIPTION: + The function sends 'DMS/Get Factory Serial Number Request' (0x0046) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSGetFactorySerialNumber( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 2; + ULONG msgID = 70; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + DMSSetDeviceTime + +DESCRIPTION: + The function sends 'DMS/Set Device Time Request' (0x004B) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSSetDeviceTime( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 2; + ULONG msgID = 75; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + DMSGetSoftwareVersion + +DESCRIPTION: + The function sends 'DMS/Get Software Version Request' (0x0051) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSGetSoftwareVersion( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 2; + ULONG msgID = 81; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + DMSSetSPC + +DESCRIPTION: + The function sends 'DMS/Set SPC Request' (0x0052) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSSetSPC( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 2; + ULONG msgID = 82; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + DMSGetCurrentPRLInfo + +DESCRIPTION: + The function sends 'DMS/Get Current PRL Info Request' (0x0053) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSGetCurrentPRLInfo( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 2; + ULONG msgID = 83; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + DMSBindSubscription + +DESCRIPTION: + The function sends 'DMS/Bind Subscription Request' (0x0054) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSBindSubscription( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 2; + ULONG msgID = 84; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + DMSGetSubscription + +DESCRIPTION: + The function sends 'DMS/Get Subscription Request' (0x0055) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG DMSGetSubscription( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 2; + ULONG msgID = 85; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASReset + +DESCRIPTION: + The function sends 'NAS/Reset Request' (0x0000) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASReset( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 0; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASAbort + +DESCRIPTION: + The function sends 'NAS/Abort Request' (0x0001) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASAbort( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 1; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASSetEventReport + +DESCRIPTION: + The function sends 'NAS/Set Event Report Request' (0x0002) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASSetEventReport( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 2; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASSetRegistrationEventReport + +DESCRIPTION: + The function sends 'NAS/Set Registration Event Report Request' (0x0003) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASSetRegistrationEventReport( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 3; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASGetSupportedMessages + +DESCRIPTION: + The function sends 'NAS/Get Supported Messages Request' (0x001E) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetSupportedMessages( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 30; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASGetSupportedFields + +DESCRIPTION: + The function sends 'NAS/Get Supported Fields Request' (0x001F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetSupportedFields( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 31; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASGetSignalStrength + +DESCRIPTION: + The function sends 'NAS/Get Signal Strength Request' (0x0020) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetSignalStrength( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 32; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASPerformNetworkScan + +DESCRIPTION: + The function sends 'NAS/Perform Network Scan Request' (0x0021) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASPerformNetworkScan( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 33; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASInitiateNetworkRegister + +DESCRIPTION: + The function sends 'NAS/Initiate Network Register Request' (0x0022) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASInitiateNetworkRegister( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 34; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASInitiateAttach + +DESCRIPTION: + The function sends 'NAS/Initiate Attach Request' (0x0023) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASInitiateAttach( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 35; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASGetServingSystem + +DESCRIPTION: + The function sends 'NAS/Get Serving System Request' (0x0024) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetServingSystem( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 36; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASGetHomeNetwork + +DESCRIPTION: + The function sends 'NAS/Get Home Network Request' (0x0025) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetHomeNetwork( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 37; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASGetPreferredNetworks + +DESCRIPTION: + The function sends 'NAS/Get Preferred Networks Request' (0x0026) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetPreferredNetworks( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 38; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASSetPreferredNetworks + +DESCRIPTION: + The function sends 'NAS/Set Preferred Networks Request' (0x0027) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASSetPreferredNetworks( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 39; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASGetForbiddenNetworks + +DESCRIPTION: + The function sends 'NAS/Get Forbidden Networks Request' (0x0028) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetForbiddenNetworks( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 40; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASSetForbiddenNetworks + +DESCRIPTION: + The function sends 'NAS/Set Forbidden Networks Request' (0x0029) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASSetForbiddenNetworks( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 41; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASSetTechnologyPreference + +DESCRIPTION: + The function sends 'NAS/Set Technology Preference Request' (0x002A) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASSetTechnologyPreference( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 42; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASGetTechnologyPreference + +DESCRIPTION: + The function sends 'NAS/Get Technology Preference Request' (0x002B) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetTechnologyPreference( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 43; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASGetACCOLC + +DESCRIPTION: + The function sends 'NAS/Get ACCOLC Request' (0x002C) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetACCOLC( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 44; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASSetACCOLC + +DESCRIPTION: + The function sends 'NAS/Set ACCOLC Request' (0x002D) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASSetACCOLC( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 45; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASGetSystemPreference + +DESCRIPTION: + The function sends 'NAS/Get System Preference' (0x002E) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetSystemPreference( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 46; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASGetNetworkParameters + +DESCRIPTION: + The function sends 'NAS/Get Network Parameters Request' (0x002F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetNetworkParameters( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 47; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASSetNetworkParameters + +DESCRIPTION: + The function sends 'NAS/Set Network Parameters Request' (0x0030) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASSetNetworkParameters( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 48; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASGetRFInfo + +DESCRIPTION: + The function sends 'NAS/Get RF Info Request' (0x0031) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetRFInfo( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 49; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASGetANAAAAuthenticationStatus + +DESCRIPTION: + The function sends 'NAS/Get AN-AAA Authentication Status Request' (0x0032) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetANAAAAuthenticationStatus( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 50; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASSetSystemSelectionPref + +DESCRIPTION: + The function sends 'NAS/Set System Selection Pref Request' (0x0033) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASSetSystemSelectionPref( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 51; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASGetSystemSelectionPref + +DESCRIPTION: + The function sends 'NAS/Get System Selection Pref Request' (0x0034) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetSystemSelectionPref( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 52; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASSetDDTMPreference + +DESCRIPTION: + The function sends 'NAS/Set DDTM Preference Request' (0x0037) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASSetDDTMPreference( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 55; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASGetDDTMPreference + +DESCRIPTION: + The function sends 'NAS/Get DDTM Preference Request' (0x0038) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetDDTMPreference( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 56; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASGetOperatorNameData + +DESCRIPTION: + The function sends 'NAS/Get Operator Name Data Request' (0x0039) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetOperatorNameData( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 57; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASGetCSPPLMNMode + +DESCRIPTION: + The function sends 'NAS/Get CSP PLMN Mode Request' (0x003B) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetCSPPLMNMode( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 59; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASUpdateAKEY + +DESCRIPTION: + The function sends 'NAS/Update AKEY Request' (0x003D) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASUpdateAKEY( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 61; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASGet3GPP2SubscriptionInfo + +DESCRIPTION: + The function sends 'NAS/Get 3GPP2 Subscription Info Request' (0x003E) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGet3GPP2SubscriptionInfo( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 62; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASSet3GPP2SubscriptionInfo + +DESCRIPTION: + The function sends 'NAS/Set 3GPP2 Subscription Info Request' (0x003F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASSet3GPP2SubscriptionInfo( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 63; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASGetMobileCAIRevision + +DESCRIPTION: + The function sends 'NAS/Get Mobile CAI Revision Request' (0x0040) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetMobileCAIRevision( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 64; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASGetRTREConfig + +DESCRIPTION: + The function sends 'NAS/Get RTRE Config Request' (0x0041) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetRTREConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 65; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASSetRTREConfig + +DESCRIPTION: + The function sends 'NAS/Set RTRE Config Request' (0x0042) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASSetRTREConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 66; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASGetCellLocationInfo + +DESCRIPTION: + The function sends 'NAS/Get Cell Location Info Request' (0x0043) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetCellLocationInfo( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 67; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASGetPLMNName + +DESCRIPTION: + The function sends 'NAS/Get PLMN Name Request' (0x0044) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetPLMNName( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 68; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASBindSubscription + +DESCRIPTION: + The function sends 'NAS/Bind Subscription Request' (0x0045) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASBindSubscription( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 69; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASGetModePref + +DESCRIPTION: + The function sends 'NAS/Get Mode Pref Request' (0x0049) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetModePref( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 73; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASSetDualStandbyPreference + +DESCRIPTION: + The function sends 'NAS/Set Dual Standby Preference Request' (0x004B) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASSetDualStandbyPreference( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 75; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASGetSystemInfo + +DESCRIPTION: + The function sends 'NAS/Get System Info Request' (0x004D) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetSystemInfo( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 77; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASGetSignalInfo + +DESCRIPTION: + The function sends 'NAS/Get Signal Info Request' (0x004F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetSignalInfo( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 79; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASConfigureSignalInfo + +DESCRIPTION: + The function sends 'NAS/Configure Signal Info Request' (0x0050) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASConfigureSignalInfo( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 80; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASGetErrorRate + +DESCRIPTION: + The function sends 'NAS/Get Error Rate Request' (0x0052) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetErrorRate( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 82; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASGetEVDOProtocolSubtype + +DESCRIPTION: + The function sends 'NAS/Get EV-DO Protocol Subtype Request' (0x0056) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetEVDOProtocolSubtype( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 86; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASGetEVDOColorCode + +DESCRIPTION: + The function sends 'NAS/Get EV-DO Color Code Request' (0x0057) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetEVDOColorCode( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 87; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASGetAcquisitionSystemMode + +DESCRIPTION: + The function sends 'NAS/Get Acquisition System Mode Request' (0x0058) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetAcquisitionSystemMode( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 88; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASSetRXDiversity + +DESCRIPTION: + The function sends 'NAS/Set RX Diversity Request' (0x0059) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASSetRXDiversity( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 89; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASGetRXTXInfo + +DESCRIPTION: + The function sends 'NAS/Get RX/TX Info Request' (0x005A) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetRXTXInfo( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 90; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASUpdateAKEYExtended + +DESCRIPTION: + The function sends 'NAS/Update A-KEY Extended Request' (0x005B) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASUpdateAKEYExtended( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 91; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASGetDualStandbyPreference + +DESCRIPTION: + The function sends 'NAS/Get Dual Standby Preference Request' (0x005C) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetDualStandbyPreference( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 92; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASDetachLTE + +DESCRIPTION: + The function sends 'NAS/Detach LTE Request' (0x005D) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASDetachLTE( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 93; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASBlockLTEPLMN + +DESCRIPTION: + The function sends 'NAS/Block LTE PLMN Request' (0x005E) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASBlockLTEPLMN( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 94; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASUnblockLTEPLMN + +DESCRIPTION: + The function sends 'NAS/Unblock LTE PLMN Request' (0x005F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASUnblockLTEPLMN( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 95; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASResetLTEPLMNBlock + +DESCRIPTION: + The function sends 'NAS/Reset LTE PLMN Block Request' (0x0060) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASResetLTEPLMNBlock( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 96; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASConfigureEMBMS + +DESCRIPTION: + The function sends 'NAS/Configure EMBMS Request' (0x0062) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASConfigureEMBMS( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 98; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASGetEMBMSStatus + +DESCRIPTION: + The function sends 'NAS/Get EMBMS Status Request' (0x0063) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetEMBMSStatus( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 99; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASGetCDMAPositionInfo + +DESCRIPTION: + The function sends 'NAS/Get CDMA Position Info Request' (0x0065) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetCDMAPositionInfo( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 101; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASForceNetworkSearch + +DESCRIPTION: + The function sends 'NAS/Force Network Search Request' (0x0067) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASForceNetworkSearch( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 103; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASGetManagedRoamingConfig + +DESCRIPTION: + The function sends 'NAS/Get Managed Roaming Config Request' (0x0069) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetManagedRoamingConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 105; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASGetCentralizedEONSSupport + +DESCRIPTION: + The function sends 'NAS/Get Centralized EONS Support Request' (0x006B) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetCentralizedEONSSupport( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 107; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASConfigureSignalInfo2 + +DESCRIPTION: + The function sends 'NAS/Configure Signal Info 2 Request' (0x006C) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASConfigureSignalInfo2( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 108; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASGetTDSCDMACellInfo + +DESCRIPTION: + The function sends 'NAS/Get TD-SCDMA Cell Info Request' (0x006D) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetTDSCDMACellInfo( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 109; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASSetHPLMNIRATSearchTimer + +DESCRIPTION: + The function sends 'NAS/Set HPLMN IRAT Search Timer Request' (0x006E) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASSetHPLMNIRATSearchTimer( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 110; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASGetEMBMSSignalQuality + +DESCRIPTION: + The function sends 'NAS/Get EMBMS Signal Quality Request' (0x006F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetEMBMSSignalQuality( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 111; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASLimitSystemInfoIndications + +DESCRIPTION: + The function sends 'NAS/Limit System Info Indications Request' (0x0070) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASLimitSystemInfoIndications( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 112; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASGetSystemInfoIndicationLimits + +DESCRIPTION: + The function sends 'NAS/Get System Info Indication Limits Request' (0x0071) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetSystemInfoIndicationLimits( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 113; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASUpdateIMSStatus + +DESCRIPTION: + The function sends 'NAS/Update IMS Status Request' (0x0072) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASUpdateIMSStatus( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 114; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASGetIMSPreference + +DESCRIPTION: + The function sends 'NAS/Get IMS Preference Request' (0x0073) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetIMSPreference( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 115; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASConfigurePLMNNameIndication + +DESCRIPTION: + The function sends 'NAS/Configure PLMN Name Indication Request' (0x0075) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASConfigurePLMNNameIndication( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 117; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASCDMAAvoidSystem + +DESCRIPTION: + The function sends 'NAS/CDMA Avoid System Request' (0x0076) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASCDMAAvoidSystem( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 118; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASGetCDMAAvoidSystemList + +DESCRIPTION: + The function sends 'NAS/Get CDMA Avoid System List Request' (0x0077) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetCDMAAvoidSystemList( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 119; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASSetHPLMNSearchTimer + +DESCRIPTION: + The function sends 'NAS/Set HPLMN Search Timer Request' (0x0078) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASSetHPLMNSearchTimer( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 120; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASGetHPLMNSearchTimer + +DESCRIPTION: + The function sends 'NAS/Get HPLMN Search Timer Request' (0x0079) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetHPLMNSearchTimer( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 121; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASSetE911State + +DESCRIPTION: + The function sends 'NAS/Set E911 State Request' (0x007A) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASSetE911State( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 122; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASGetSubscriptionInfo + +DESCRIPTION: + The function sends 'NAS/Get Subscription Info Request' (0x007C) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetSubscriptionInfo( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 124; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASGetNetworkTime + +DESCRIPTION: + The function sends 'NAS/Get Network Time Request' (0x007D) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetNetworkTime( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 125; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + NASGetLTESIB16NetworkTime + +DESCRIPTION: + The function sends 'NAS/Get LTE SIB16 Network Time Request' (0x007E) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG NASGetLTESIB16NetworkTime( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 3; + ULONG msgID = 126; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WMSReset + +DESCRIPTION: + The function sends 'WMS/Reset Request' (0x0000) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSReset( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 5; + ULONG msgID = 0; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WMSSetEventReport + +DESCRIPTION: + The function sends 'WMS/Set Event Report Request' (0x0001) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSSetEventReport( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 5; + ULONG msgID = 1; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WMSGetSupportedMessages + +DESCRIPTION: + The function sends 'WMS/Get Supported Messages Request' (0x001E) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSGetSupportedMessages( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 5; + ULONG msgID = 30; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WMSGetSupportedFields + +DESCRIPTION: + The function sends 'WMS/Get Supported Fields Request' (0x001F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSGetSupportedFields( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 5; + ULONG msgID = 31; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WMSRawSend + +DESCRIPTION: + The function sends 'WMS/Raw Send Request' (0x0020) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSRawSend( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 5; + ULONG msgID = 32; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WMSRawWrite + +DESCRIPTION: + The function sends 'WMS/Raw Write Request' (0x0021) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSRawWrite( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 5; + ULONG msgID = 33; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WMSRawRead + +DESCRIPTION: + The function sends 'WMS/Raw Read Request' (0x0022) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSRawRead( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 5; + ULONG msgID = 34; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WMSModifyTag + +DESCRIPTION: + The function sends 'WMS/Modify Tag Request' (0x0023) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSModifyTag( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 5; + ULONG msgID = 35; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WMSDelete + +DESCRIPTION: + The function sends 'WMS/Delete Request' (0x0024) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSDelete( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 5; + ULONG msgID = 36; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WMSGetMessageProtocol + +DESCRIPTION: + The function sends 'WMS/Get Message Protocol Request' (0x0030) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSGetMessageProtocol( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 5; + ULONG msgID = 48; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WMSListMessages + +DESCRIPTION: + The function sends 'WMS/List Messages Request' (0x0031) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSListMessages( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 5; + ULONG msgID = 49; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WMSSetRoutes + +DESCRIPTION: + The function sends 'WMS/Set Routes Request' (0x0032) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSSetRoutes( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 5; + ULONG msgID = 50; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WMSGetRoutes + +DESCRIPTION: + The function sends 'WMS/Get Routes Request' (0x0033) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSGetRoutes( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 5; + ULONG msgID = 51; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WMSGetSMSCAddress + +DESCRIPTION: + The function sends 'WMS/Get SMSC Address Request' (0x0034) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSGetSMSCAddress( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 5; + ULONG msgID = 52; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WMSSetSMSCAddress + +DESCRIPTION: + The function sends 'WMS/Set SMSC Address Request' (0x0035) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSSetSMSCAddress( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 5; + ULONG msgID = 53; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WMSGetStorageMaxSize + +DESCRIPTION: + The function sends 'WMS/Get Storage Max Size Request' (0x0036) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSGetStorageMaxSize( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 5; + ULONG msgID = 54; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WMSSendACK + +DESCRIPTION: + The function sends 'WMS/Send ACK Request' (0x0037) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSSendACK( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 5; + ULONG msgID = 55; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WMSSetRetryPeriod + +DESCRIPTION: + The function sends 'WMS/Set Retry Period Request' (0x0038) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSSetRetryPeriod( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 5; + ULONG msgID = 56; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WMSSetRetryInterval + +DESCRIPTION: + The function sends 'WMS/Set Retry Interval Request' (0x0039) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSSetRetryInterval( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 5; + ULONG msgID = 57; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WMSSetDCDisconnectTimer + +DESCRIPTION: + The function sends 'WMS/Set DC Disconnect Timer Request' (0x003A) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSSetDCDisconnectTimer( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 5; + ULONG msgID = 58; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WMSSetMemoryStatus + +DESCRIPTION: + The function sends 'WMS/Set Memory Status Request' (0x003B) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSSetMemoryStatus( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 5; + ULONG msgID = 59; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WMSSetBroadcastActivation + +DESCRIPTION: + The function sends 'WMS/Set Broadcast Activation Request' (0x003C) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSSetBroadcastActivation( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 5; + ULONG msgID = 60; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WMSSetBroadcastConfig + +DESCRIPTION: + The function sends 'WMS/Set Broadcast Config Request' (0x003D) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSSetBroadcastConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 5; + ULONG msgID = 61; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WMSGetBroadcastConfig + +DESCRIPTION: + The function sends 'WMS/Get Broadcast Config Request' (0x003E) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSGetBroadcastConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 5; + ULONG msgID = 62; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WMSGetDomainPreference + +DESCRIPTION: + The function sends 'WMS/Get Domain Preference Request' (0x0040) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSGetDomainPreference( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 5; + ULONG msgID = 64; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WMSSetDomainPreference + +DESCRIPTION: + The function sends 'WMS/Set Domain Preference Request' (0x0041) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSSetDomainPreference( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 5; + ULONG msgID = 65; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WMSSendFromMemoryStore + +DESCRIPTION: + The function sends 'WMS/Send From Memory Store Request' (0x0042) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSSendFromMemoryStore( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 5; + ULONG msgID = 66; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WMSGetWaitingMessage + +DESCRIPTION: + The function sends 'WMS/Get Waiting Message Request' (0x0043) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSGetWaitingMessage( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 5; + ULONG msgID = 67; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WMSSetPrimaryClient + +DESCRIPTION: + The function sends 'WMS/Set Primary Client Request' (0x0045) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSSetPrimaryClient( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 5; + ULONG msgID = 69; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WMSIndicatorRegistration + +DESCRIPTION: + The function sends 'WMS/Indicator Registration Request' (0x0047) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSIndicatorRegistration( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 5; + ULONG msgID = 71; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WMSGetTransportLayerInfo + +DESCRIPTION: + The function sends 'WMS/Get Transport Layer Info Request' (0x0048) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSGetTransportLayerInfo( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 5; + ULONG msgID = 72; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WMSGetNetworkRegistrationInfo + +DESCRIPTION: + The function sends 'WMS/Get Network Registration Info Request' (0x004A) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSGetNetworkRegistrationInfo( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 5; + ULONG msgID = 74; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WMSBindSubscription + +DESCRIPTION: + The function sends 'WMS/Bind Subscription Request' (0x004C) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSBindSubscription( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 5; + ULONG msgID = 76; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WMSGetIndicatorRegistration + +DESCRIPTION: + The function sends 'WMS/Get Indicator Registration Request' (0x004D) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSGetIndicatorRegistration( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 5; + ULONG msgID = 77; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WMSGetSMSParameters + +DESCRIPTION: + The function sends 'WMS/Get SMS Parameters Request' (0x004E) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSGetSMSParameters( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 5; + ULONG msgID = 78; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WMSSetSMSParameters + +DESCRIPTION: + The function sends 'WMS/Set SMS Parameters Request' (0x004F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSSetSMSParameters( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 5; + ULONG msgID = 79; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WMSGetDomainPreferenceConfig + +DESCRIPTION: + The function sends 'WMS/Get Domain Preference Config Request' (0x0051) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSGetDomainPreferenceConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 5; + ULONG msgID = 81; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WMSSetDomainPreferenceConfig + +DESCRIPTION: + The function sends 'WMS/Set Domain Preference Config Request' (0x0052) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSSetDomainPreferenceConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 5; + ULONG msgID = 82; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WMSGetRetryPeriod + +DESCRIPTION: + The function sends 'WMS/Get Retry Period Request' (0x0053) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSGetRetryPeriod( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 5; + ULONG msgID = 83; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WMSGetRetryInterval + +DESCRIPTION: + The function sends 'WMS/Get Retry Interval Request' (0x0054) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSGetRetryInterval( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 5; + ULONG msgID = 84; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WMSGetDCDisconnectTimer + +DESCRIPTION: + The function sends 'WMS/Get DC Disconnect Timer Request' (0x0055) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSGetDCDisconnectTimer( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 5; + ULONG msgID = 85; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WMSGetMemoryStatus + +DESCRIPTION: + The function sends 'WMS/Get Memory Status Request' (0x0056) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSGetMemoryStatus( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 5; + ULONG msgID = 86; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WMSGetPrimaryClient + +DESCRIPTION: + The function sends 'WMS/Get Primary Client Request' (0x0057) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSGetPrimaryClient( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 5; + ULONG msgID = 87; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WMSGetSubscriptionBinding + +DESCRIPTION: + The function sends 'WMS/Get Subscription Binding Request' (0x0058) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSGetSubscriptionBinding( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 5; + ULONG msgID = 88; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WMSAsyncRawSend + +DESCRIPTION: + The function sends 'WMS/Async Raw Send Request' (0x0059) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSAsyncRawSend( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 5; + ULONG msgID = 89; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WMSAsyncSendACK + +DESCRIPTION: + The function sends 'WMS/Async Send ACK Request' (0x005A) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSAsyncSendACK( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 5; + ULONG msgID = 90; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WMSAsyncSendFromMemoryStore + +DESCRIPTION: + The function sends 'WMS/Async Send From Memory Store Request' (0x005B) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSAsyncSendFromMemoryStore( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 5; + ULONG msgID = 91; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WMSGetServiceReadyStatus + +DESCRIPTION: + The function sends 'WMS/Get Service Ready Status Request' (0x005C) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSGetServiceReadyStatus( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 5; + ULONG msgID = 92; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WMSSetWaitingMessage + +DESCRIPTION: + The function sends 'WMS/Set Waiting Message Request' (0x005F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WMSSetWaitingMessage( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 5; + ULONG msgID = 95; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSReset + +DESCRIPTION: + The function sends 'PDS/Reset Request' (0x0000) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSReset( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 0; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSSetEventReport + +DESCRIPTION: + The function sends 'PDS/Set Event Report Request' (0x0001) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSSetEventReport( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 1; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSGetServiceState + +DESCRIPTION: + The function sends 'PDS/Get Service State Request' (0x0020) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSGetServiceState( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 32; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSSetServiceState + +DESCRIPTION: + The function sends 'PDS/Set Service State Request' (0x0021) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSSetServiceState( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 33; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSStartTrackingSession + +DESCRIPTION: + The function sends 'PDS/Start Tracking Session Request' (0x0022) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSStartTrackingSession( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 34; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSGetTrackingSessionInfo + +DESCRIPTION: + The function sends 'PDS/Get Tracking Session Info Request' (0x0023) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSGetTrackingSessionInfo( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 35; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSFixPosition + +DESCRIPTION: + The function sends 'PDS/Fix Position Request' (0x0024) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSFixPosition( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 36; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSEndTrackingSession + +DESCRIPTION: + The function sends 'PDS/End Tracking Session Request' (0x0025) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSEndTrackingSession( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 37; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSGetNMEAConfig + +DESCRIPTION: + The function sends 'PDS/Get NMEA Config Request' (0x0026) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSGetNMEAConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 38; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSSetNMEAConfig + +DESCRIPTION: + The function sends 'PDS/Set NMEA Config Request' (0x0027) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSSetNMEAConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 39; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSInjectTimeReference + +DESCRIPTION: + The function sends 'PDS/Inject Time Reference Request' (0x0028) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSInjectTimeReference( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 40; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSGetDefaults + +DESCRIPTION: + The function sends 'PDS/Get Defaults Request' (0x0029) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSGetDefaults( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 41; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSSetDefaults + +DESCRIPTION: + The function sends 'PDS/Set Defaults Request' (0x002A) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSSetDefaults( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 42; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSGetXTRAParameters + +DESCRIPTION: + The function sends 'PDS/Get XTRA Parameters Request' (0x002B) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSGetXTRAParameters( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 43; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSSetXTRAParameters + +DESCRIPTION: + The function sends 'PDS/Set XTRA Parameters Request' (0x002C) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSSetXTRAParameters( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 44; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSForceXTRADownload + +DESCRIPTION: + The function sends 'PDS/Force XTRA Download Request' (0x002D) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSForceXTRADownload( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 45; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSGetAGPSConfig + +DESCRIPTION: + The function sends 'PDS/Get AGPS Config Request' (0x002E) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSGetAGPSConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 46; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSSetAGPSConfig + +DESCRIPTION: + The function sends 'PDS/Set AGPS Config Request' (0x002F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSSetAGPSConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 47; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSGetServiceAutoTrackingState + +DESCRIPTION: + The function sends 'PDS/Get Service Auto-Tracking State Request' (0x0030) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSGetServiceAutoTrackingState( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 48; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSSetServiceAutoTrackingState + +DESCRIPTION: + The function sends 'PDS/Set Service Auto-Tracking State Request' (0x0031) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSSetServiceAutoTrackingState( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 49; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSGetCOMPortAutoTrackingConfig + +DESCRIPTION: + The function sends 'PDS/Get COM Port Auto-Tracking Config Request' (0x0032) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSGetCOMPortAutoTrackingConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 50; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSSetCOMPortAutoTrackingConfig + +DESCRIPTION: + The function sends 'PDS/Set COM Port Auto-Tracking Config Request' (0x0033) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSSetCOMPortAutoTrackingConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 51; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSResetPDSData + +DESCRIPTION: + The function sends 'PDS/Reset PDS Data Request' (0x0034) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSResetPDSData( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 52; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSSinglePositionFix + +DESCRIPTION: + The function sends 'PDS/Single Position Fix Request' (0x0035) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSSinglePositionFix( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 53; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSGetServiceVersion + +DESCRIPTION: + The function sends 'PDS/Get Service Version Request' (0x0036) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSGetServiceVersion( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 54; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSInjectXTRAData + +DESCRIPTION: + The function sends 'PDS/Inject XTRA Data Request' (0x0037) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSInjectXTRAData( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 55; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSInjectPositionData + +DESCRIPTION: + The function sends 'PDS/Inject Position Data Request' (0x0038) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSInjectPositionData( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 56; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSInjectWiFiPositionData + +DESCRIPTION: + The function sends 'PDS/Inject Wi-Fi Position Data Request' (0x0039) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSInjectWiFiPositionData( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 57; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSGetSBASConfig + +DESCRIPTION: + The function sends 'PDS/Get SBAS Config Request' (0x003A) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSGetSBASConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 58; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSSetSBASConfig + +DESCRIPTION: + The function sends 'PDS/Set SBAS Config Request' (0x003B) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSSetSBASConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 59; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSSendNetworkInitiatedResponse + +DESCRIPTION: + The function sends 'PDS/Send Network Initiated Response Request' (0x003C) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSSendNetworkInitiatedResponse( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 60; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSInjectAbsoluteTime + +DESCRIPTION: + The function sends 'PDS/Inject Absolute Time Request' (0x003D) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSInjectAbsoluteTime( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 61; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSInjectEFSData + +DESCRIPTION: + The function sends 'PDS/Inject EFS Data Request' (0x003E) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSInjectEFSData( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 62; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSGetDPOConfig + +DESCRIPTION: + The function sends 'PDS/Get DPO Config Request' (0x003F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSGetDPOConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 63; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSSetDPOConfig + +DESCRIPTION: + The function sends 'PDS/Set DPO Config Request' (0x0040) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSSetDPOConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 64; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSGetODPConfig + +DESCRIPTION: + The function sends 'PDS/Get ODP Config Request' (0x0041) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSGetODPConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 65; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSSetODPConfig + +DESCRIPTION: + The function sends 'PDS/Set ODP Config Request' (0x0042) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSSetODPConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 66; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSCancelSinglePositionFix + +DESCRIPTION: + The function sends 'PDS/Cancel Single Position Fix Request' (0x0043) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSCancelSinglePositionFix( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 67; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSGetGPSState + +DESCRIPTION: + The function sends 'PDS/Get GPS State Request' (0x0044) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSGetGPSState( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 68; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSSetPPMEventReport + +DESCRIPTION: + The function sends 'PDS/Set PPM Event Report Request' (0x0045) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSSetPPMEventReport( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 69; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSSetSPIStreamingReport + +DESCRIPTION: + The function sends 'PDS/Set SPI Streaming Report Request' (0x0046) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSSetSPIStreamingReport( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 70; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSSetSPIStatus + +DESCRIPTION: + The function sends 'PDS/Set SPI Status Request' (0x0047) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSSetSPIStatus( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 71; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSSetPPMReportingState + +DESCRIPTION: + The function sends 'PDS/Set PPM Reporting State Request' (0x0048) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSSetPPMReportingState( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 72; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSForceReceiverOff + +DESCRIPTION: + The function sends 'PDS/Force Receiver Off Request' (0x0049) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSForceReceiverOff( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 73; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSGetPositionMethodsState + +DESCRIPTION: + The function sends 'PDS/Get Position Methods State Request' (0x0050) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSGetPositionMethodsState( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 80; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSSetPositionMethodsState + +DESCRIPTION: + The function sends 'PDS/Set Position Methods State Request' (0x0051) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSSetPositionMethodsState( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 81; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSInjectSensorData + +DESCRIPTION: + The function sends 'PDS/Inject Sensor Data Request' (0x0052) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSInjectSensorData( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 82; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSInjectTimeSyncData + +DESCRIPTION: + The function sends 'PDS/Inject Time Sync Data Request' (0x0053) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSInjectTimeSyncData( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 83; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSGetSensorConfig + +DESCRIPTION: + The function sends 'PDS/Get Sensor Config Request' (0x0054) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSGetSensorConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 84; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSSetSensorConfig + +DESCRIPTION: + The function sends 'PDS/Set Sensor Config Request' (0x0055) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSSetSensorConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 85; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSGetSensorNavigation + +DESCRIPTION: + The function sends 'PDS/Get Sensor Navigation Request' (0x0056) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSGetSensorNavigation( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 86; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSSetNavigationConfig + +DESCRIPTION: + The function sends 'PDS/Set Navigation Config Request' (0x0057) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSSetNavigationConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 87; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSSetWLANBlanking + +DESCRIPTION: + The function sends 'PDS/Set WLAN Blanking Request' (0x005A) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSSetWLANBlanking( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 90; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSSetSecurityChallengeReport + +DESCRIPTION: + The function sends 'PDS/Set Security Challenge Report Request' (0x005B) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSSetSecurityChallengeReport( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 91; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSSetSecurityChallenge + +DESCRIPTION: + The function sends 'PDS/Set Security Challenge Request' (0x005C) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSSetSecurityChallenge( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 92; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSGetSecurityEncryptionConfig + +DESCRIPTION: + The function sends 'PDS/Get Security Encryption Config Request' (0x005D) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSGetSecurityEncryptionConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 93; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSSetSecurityUpdateRate + +DESCRIPTION: + The function sends 'PDS/Set Security Update Rate Request' (0x005E) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSSetSecurityUpdateRate( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 94; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSSetCellDatabaseControl + +DESCRIPTION: + The function sends 'PDS/Set Cell Database Control Request' (0x005F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSSetCellDatabaseControl( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 95; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSInjectMotionData + +DESCRIPTION: + The function sends 'PDS/Inject Motion Data Request' (0x0061) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSInjectMotionData( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 97; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSSetGNSSEngineErrorRecoveryReport + +DESCRIPTION: + The function sends 'PDS/Set GNSS Engine Error Recovery Report Request' (0x0062) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSSetGNSSEngineErrorRecoveryReport( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 98; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSResetLocationService + +DESCRIPTION: + The function sends 'PDS/Reset Location Service Request' (0x0063) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSResetLocationService( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 99; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSInjectTestData + +DESCRIPTION: + The function sends 'PDS/Inject Test Data Request' (0x0064) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSInjectTestData( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 100; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSSetGNSSRFConfig + +DESCRIPTION: + The function sends 'PDS/Set GNSS RF Config Request' (0x0065) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSSetGNSSRFConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 101; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSInjectCourseOverGroundData + +DESCRIPTION: + The function sends 'PDS/Inject Course Over Ground Data Request' (0x0066) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSInjectCourseOverGroundData( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 102; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSInjectSUPLCertificate + +DESCRIPTION: + The function sends 'PDS/Inject SUPL Certificate Request' (0x0067) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSInjectSUPLCertificate( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 103; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSDeleteSUPLCertificate + +DESCRIPTION: + The function sends 'PDS/Delete SUPL Certificate Request' (0x0068) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSDeleteSUPLCertificate( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 104; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSGetIS801OverSUPLIndicator + +DESCRIPTION: + The function sends 'PDS/Get IS-801 Over SUPL Indicator Request' (0x0069) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSGetIS801OverSUPLIndicator( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 105; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSSetIS801OverSUPLIndicator + +DESCRIPTION: + The function sends 'PDS/Set IS-801 Over SUPL Indicator Request' (0x006A) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSSetIS801OverSUPLIndicator( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 106; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSGetSUPLHashAlgorithm + +DESCRIPTION: + The function sends 'PDS/Get SUPL Hash Algorithm Request' (0x006B) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSGetSUPLHashAlgorithm( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 107; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSSetSUPLHashAlgorithm + +DESCRIPTION: + The function sends 'PDS/Set SUPL Hash Algorithm Request' (0x006C) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSSetSUPLHashAlgorithm( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 108; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSGetSUPLMaximumVersion + +DESCRIPTION: + The function sends 'PDS/Get SUPL Maximum Version Request' (0x006D) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSGetSUPLMaximumVersion( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 109; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSSetSUPLMaximumVersion + +DESCRIPTION: + The function sends 'PDS/Set SUPL Maximum Version Request' (0x006E) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSSetSUPLMaximumVersion( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 110; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSGetSUPLSecurity + +DESCRIPTION: + The function sends 'PDS/Get SUPL Security Request' (0x006F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSGetSUPLSecurity( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 111; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSSetSUPLSecurity + +DESCRIPTION: + The function sends 'PDS/Set SUPL Security Request' (0x0070) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSSetSUPLSecurity( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 112; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSGetSUPLTLSVersion + +DESCRIPTION: + The function sends 'PDS/Get SUPL TLS Version Request' (0x0071) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSGetSUPLTLSVersion( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 113; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSSetSUPLTLSVersion + +DESCRIPTION: + The function sends 'PDS/Set SUPL TLS Version Request' (0x0072) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSSetSUPLTLSVersion( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 114; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSGetAGNSSPositioningModes + +DESCRIPTION: + The function sends 'PDS/Get AGNSS Positioning Modes Request' (0x0073) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSGetAGNSSPositioningModes( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 115; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSSetAGNSSPositioningModes + +DESCRIPTION: + The function sends 'PDS/Set AGNSS Positioning Modes Request' (0x0074) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSSetAGNSSPositioningModes( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 116; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSGetEmergencyProtocolConfig + +DESCRIPTION: + The function sends 'PDS/Get Emergency Protocol Config Request' (0x0075) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSGetEmergencyProtocolConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 117; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSSetEmergencyProtocolConfig + +DESCRIPTION: + The function sends 'PDS/Set Emergency Protocol Config Request' (0x0076) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSSetEmergencyProtocolConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 118; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSGetAPNProfiles + +DESCRIPTION: + The function sends 'PDS/Get APN Profiles Request' (0x0077) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSGetAPNProfiles( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 119; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSSetAPNProfiles + +DESCRIPTION: + The function sends 'PDS/Set APN Profiles Request' (0x0078) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSSetAPNProfiles( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 120; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSGetHomeSUPLAddress + +DESCRIPTION: + The function sends 'PDS/Get Home SUPL Address Request' (0x0079) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSGetHomeSUPLAddress( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 121; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSSetHomeSUPLAddress + +DESCRIPTION: + The function sends 'PDS/Set Home SUPL Address Request' (0x007A) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSSetHomeSUPLAddress( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 122; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSInjectVehicleSensorData + +DESCRIPTION: + The function sends 'PDS/Inject Vehicle Sensor Data Request' (0x007B) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSInjectVehicleSensorData( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 123; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDSInjectPedometerData + +DESCRIPTION: + The function sends 'PDS/Inject Pedometer Data Request' (0x007C) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDSInjectPedometerData( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 6; + ULONG msgID = 124; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + AUTHStartEAPSession + +DESCRIPTION: + The function sends 'AUTH/Start EAP Session Request' (0x0020) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG AUTHStartEAPSession( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 7; + ULONG msgID = 32; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + AUTHSendEAPPacket + +DESCRIPTION: + The function sends 'AUTH/Send EAP Packet Request' (0x0021) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG AUTHSendEAPPacket( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 7; + ULONG msgID = 33; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + AUTHGetEAPSessionKeys + +DESCRIPTION: + The function sends 'AUTH/Get EAP Session Keys Request' (0x0023) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG AUTHGetEAPSessionKeys( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 7; + ULONG msgID = 35; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + AUTHEndEAPSession + +DESCRIPTION: + The function sends 'AUTH/End EAP Session Request' (0x0024) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG AUTHEndEAPSession( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 7; + ULONG msgID = 36; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + AUTHRunAKA + +DESCRIPTION: + The function sends 'AUTH/Run AKA Request' (0x0025) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG AUTHRunAKA( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 7; + ULONG msgID = 37; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + VoiceIndicationRegistration + +DESCRIPTION: + The function sends 'Voice/Indication Registration Request' (0x0003) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceIndicationRegistration( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 9; + ULONG msgID = 3; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + VoiceGetSupportedMessages + +DESCRIPTION: + The function sends 'Voice/Get Supported Messages Request' (0x001E) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceGetSupportedMessages( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 9; + ULONG msgID = 30; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + VoiceGetSupportedFields + +DESCRIPTION: + The function sends 'Voice/Get Supported Fields Request' (0x001F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceGetSupportedFields( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 9; + ULONG msgID = 31; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + VoiceCallOriginate + +DESCRIPTION: + The function sends 'Voice/Call Originate Request' (0x0020) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceCallOriginate( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 9; + ULONG msgID = 32; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + VoiceCallEnd + +DESCRIPTION: + The function sends 'Voice/Call End Request' (0x0021) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceCallEnd( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 9; + ULONG msgID = 33; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + VoiceCallAnswer + +DESCRIPTION: + The function sends 'Voice/Call Answer Request' (0x0022) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceCallAnswer( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 9; + ULONG msgID = 34; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + VoiceGetCallInfo + +DESCRIPTION: + The function sends 'Voice/Get Call Info Request' (0x0024) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceGetCallInfo( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 9; + ULONG msgID = 36; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + VoiceSendFlash + +DESCRIPTION: + The function sends 'Voice/Send Flash Request' (0x0027) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceSendFlash( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 9; + ULONG msgID = 39; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + VoiceBurstDTMF + +DESCRIPTION: + The function sends 'Voice/Burst DTMF Request' (0x0028) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceBurstDTMF( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 9; + ULONG msgID = 40; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + VoiceStartContinuousDTMF + +DESCRIPTION: + The function sends 'Voice/Start Continuous DTMF Request' (0x0029) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceStartContinuousDTMF( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 9; + ULONG msgID = 41; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + VoiceStopContinuousDTMF + +DESCRIPTION: + The function sends 'Voice/Stop Continuous DTMF Request' (0x002A) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceStopContinuousDTMF( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 9; + ULONG msgID = 42; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + VoiceSetPreferredPrivacy + +DESCRIPTION: + The function sends 'Voice/Set Preferred Privacy Request' (0x002C) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceSetPreferredPrivacy( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 9; + ULONG msgID = 44; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + VoiceGetAllCallInfo + +DESCRIPTION: + The function sends 'Voice/Get All Call Info Request' (0x002F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceGetAllCallInfo( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 9; + ULONG msgID = 47; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + VoiceManageCalls + +DESCRIPTION: + The function sends 'Voice/Manage Calls Request' (0x0031) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceManageCalls( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 9; + ULONG msgID = 49; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + VoiceSetSupplementaryService + +DESCRIPTION: + The function sends 'Voice/Set Supplementary Service Request' (0x0033) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceSetSupplementaryService( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 9; + ULONG msgID = 51; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + VoiceGetCallWaiting + +DESCRIPTION: + The function sends 'Voice/Get Call Waiting Request' (0x0034) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceGetCallWaiting( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 9; + ULONG msgID = 52; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + VoiceGetCallBarring + +DESCRIPTION: + The function sends 'Voice/Get Call Barring Request' (0x0035) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceGetCallBarring( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 9; + ULONG msgID = 53; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + VoiceGetCLIP + +DESCRIPTION: + The function sends 'Voice/Get CLIP Request' (0x0036) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceGetCLIP( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 9; + ULONG msgID = 54; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + VoiceGetCLIR + +DESCRIPTION: + The function sends 'Voice/Get CLIR Request' (0x0037) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceGetCLIR( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 9; + ULONG msgID = 55; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + VoiceGetCallForwarding + +DESCRIPTION: + The function sends 'Voice/Get Call Forwarding Request' (0x0038) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceGetCallForwarding( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 9; + ULONG msgID = 56; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + VoiceSetCallBarringPassword + +DESCRIPTION: + The function sends 'Voice/Set Call Barring Password Request' (0x0039) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceSetCallBarringPassword( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 9; + ULONG msgID = 57; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + VoiceInitiateUSSD + +DESCRIPTION: + The function sends 'Voice/Initiate USSD Request' (0x003A) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceInitiateUSSD( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 9; + ULONG msgID = 58; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + VoiceAnswerUSSD + +DESCRIPTION: + The function sends 'Voice/Answer USSD Request' (0x003B) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceAnswerUSSD( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 9; + ULONG msgID = 59; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + VoiceCancelUSSD + +DESCRIPTION: + The function sends 'Voice/Cancel USSD Request' (0x003C) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceCancelUSSD( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 9; + ULONG msgID = 60; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + VoiceSetConfig + +DESCRIPTION: + The function sends 'Voice/Set Config Request' (0x0040) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceSetConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 9; + ULONG msgID = 64; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + VoiceGetConfig + +DESCRIPTION: + The function sends 'Voice/Get Config Request' (0x0041) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceGetConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 9; + ULONG msgID = 65; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + VoiceAsyncInitiateUSSD + +DESCRIPTION: + The function sends 'Voice/Async Initiate USSD Request' (0x0043) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceAsyncInitiateUSSD( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 9; + ULONG msgID = 67; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + VoiceBindSubscription + +DESCRIPTION: + The function sends 'Voice/Bind Subscription Request' (0x0044) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceBindSubscription( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 9; + ULONG msgID = 68; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + VoiceALSSetLineSwitching + +DESCRIPTION: + The function sends 'Voice/ALS Set Line Switching Request' (0x0045) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceALSSetLineSwitching( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 9; + ULONG msgID = 69; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + VoiceALSSelectLine + +DESCRIPTION: + The function sends 'Voice/ALS Select Line Request' (0x0046) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceALSSelectLine( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 9; + ULONG msgID = 70; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + VoiceAOCResetACM + +DESCRIPTION: + The function sends 'Voice/AOC Reset ACM Request' (0x0047) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceAOCResetACM( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 9; + ULONG msgID = 71; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + VoiceAOCSetACMMaximum + +DESCRIPTION: + The function sends 'Voice/AOC Set ACM Maximum Request' (0x0048) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceAOCSetACMMaximum( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 9; + ULONG msgID = 72; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + VoiceAOCGetCallMeterInfo + +DESCRIPTION: + The function sends 'Voice/AOC Get Call Meter Info Request' (0x0049) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceAOCGetCallMeterInfo( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 9; + ULONG msgID = 73; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + VoiceGetCOLP + +DESCRIPTION: + The function sends 'Voice/Get COLP Request' (0x004B) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceGetCOLP( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 9; + ULONG msgID = 75; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + VoiceGetCOLR + +DESCRIPTION: + The function sends 'Voice/Get COLR Request' (0x004C) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceGetCOLR( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 9; + ULONG msgID = 76; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + VoiceGetCNAP + +DESCRIPTION: + The function sends 'Voice/Get CNAP Request' (0x004D) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceGetCNAP( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 9; + ULONG msgID = 77; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + VoiceManageIPCalls + +DESCRIPTION: + The function sends 'Voice/Manage IP Calls Request' (0x004E) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceManageIPCalls( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 9; + ULONG msgID = 78; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + VoiceALSGetLineSwitchingStatus + +DESCRIPTION: + The function sends 'Voice/ALS Get Line Switching Status Request' (0x004F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceALSGetLineSwitchingStatus( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 9; + ULONG msgID = 79; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + VoiceALSGetSelectedLine + +DESCRIPTION: + The function sends 'Voice/ALS Get Selected Line Request' (0x0050) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG VoiceALSGetSelectedLine( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 9; + ULONG msgID = 80; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + CAT2Reset + +DESCRIPTION: + The function sends 'CAT2/Reset Request' (0x0000) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CAT2Reset( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 10; + ULONG msgID = 0; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + CAT2SetEventReport + +DESCRIPTION: + The function sends 'CAT2/Set Event Report Request' (0x0001) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CAT2SetEventReport( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 10; + ULONG msgID = 1; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + CAT2GetSupportedMessages + +DESCRIPTION: + The function sends 'CAT2/Get Supported Messages Request' (0x001E) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CAT2GetSupportedMessages( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 10; + ULONG msgID = 30; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + CAT2GetSupportedFields + +DESCRIPTION: + The function sends 'CAT2/Get Supported Fields Request' (0x001F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CAT2GetSupportedFields( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 10; + ULONG msgID = 31; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + CAT2GetServiceState + +DESCRIPTION: + The function sends 'CAT2/Get Service State Request' (0x0020) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CAT2GetServiceState( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 10; + ULONG msgID = 32; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + CAT2SendTerminalResponse + +DESCRIPTION: + The function sends 'CAT2/Send Terminal Response Request' (0x0021) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CAT2SendTerminalResponse( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 10; + ULONG msgID = 33; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + CAT2EnvelopeCommand + +DESCRIPTION: + The function sends 'CAT2/Envelope Command Request' (0x0022) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CAT2EnvelopeCommand( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 10; + ULONG msgID = 34; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + CAT2GetEventReport + +DESCRIPTION: + The function sends 'CAT2/Get Event Report Request' (0x0023) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CAT2GetEventReport( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 10; + ULONG msgID = 35; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + CAT2SendDecodedTerminalResponse + +DESCRIPTION: + The function sends 'CAT2/Send Decoded Terminal Response Request' (0x0024) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CAT2SendDecodedTerminalResponse( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 10; + ULONG msgID = 36; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + CAT2SendDecodedEnvelopeCommand + +DESCRIPTION: + The function sends 'CAT2/Send Decoded Envelope Command Request' (0x0025) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CAT2SendDecodedEnvelopeCommand( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 10; + ULONG msgID = 37; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + CAT2EventConfirmation + +DESCRIPTION: + The function sends 'CAT2/Event Confirmation Request' (0x0026) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CAT2EventConfirmation( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 10; + ULONG msgID = 38; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + CAT2SCWSOpenChannel + +DESCRIPTION: + The function sends 'CAT2/SCWS Open Channel Request' (0x0027) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CAT2SCWSOpenChannel( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 10; + ULONG msgID = 39; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + CAT2SCWSCloseChannel + +DESCRIPTION: + The function sends 'CAT2/SCWS Close Channel Request' (0x0028) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CAT2SCWSCloseChannel( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 10; + ULONG msgID = 40; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + CAT2SCWSSendData + +DESCRIPTION: + The function sends 'CAT2/SCWS Send Data Request' (0x0029) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CAT2SCWSSendData( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 10; + ULONG msgID = 41; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + CAT2SCWSDataAvailable + +DESCRIPTION: + The function sends 'CAT2/SCWS Data Available Request' (0x002A) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CAT2SCWSDataAvailable( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 10; + ULONG msgID = 42; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + CAT2SCWSChannelStatus + +DESCRIPTION: + The function sends 'CAT2/SCWS Channel Status Request' (0x002B) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CAT2SCWSChannelStatus( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 10; + ULONG msgID = 43; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + CAT2GetTerminalProfile + +DESCRIPTION: + The function sends 'CAT2/Get Terminal Profile Request' (0x002C) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CAT2GetTerminalProfile( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 10; + ULONG msgID = 44; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + CAT2SetConfiguration + +DESCRIPTION: + The function sends 'CAT2/Set Configuration Request' (0x002D) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CAT2SetConfiguration( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 10; + ULONG msgID = 45; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + CAT2GetConfiguration + +DESCRIPTION: + The function sends 'CAT2/Get Configuration Request' (0x002E) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CAT2GetConfiguration( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 10; + ULONG msgID = 46; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + UIMReset + +DESCRIPTION: + The function sends 'UIM/Reset Request' (0x0000) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG UIMReset( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 11; + ULONG msgID = 0; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + UIMGetSupportedMessages + +DESCRIPTION: + The function sends 'UIM/Get Supported Messages Request' (0x001E) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG UIMGetSupportedMessages( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 11; + ULONG msgID = 30; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + UIMGetSupportedFields + +DESCRIPTION: + The function sends 'UIM/Get Supported Fields Request' (0x001F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG UIMGetSupportedFields( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 11; + ULONG msgID = 31; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + UIMReadTransparent + +DESCRIPTION: + The function sends 'UIM/Read Transparent Request' (0x0020) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG UIMReadTransparent( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 11; + ULONG msgID = 32; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + UIMReadRecord + +DESCRIPTION: + The function sends 'UIM/Read Record Request' (0x0021) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG UIMReadRecord( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 11; + ULONG msgID = 33; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + UIMWriteTransparent + +DESCRIPTION: + The function sends 'UIM/Write Transparent Request' (0x0022) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG UIMWriteTransparent( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 11; + ULONG msgID = 34; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + UIMWriteRecord + +DESCRIPTION: + The function sends 'UIM/Write Record Request' (0x0023) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG UIMWriteRecord( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 11; + ULONG msgID = 35; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + UIMGetFileAttributes + +DESCRIPTION: + The function sends 'UIM/Get File Attributes Request' (0x0024) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG UIMGetFileAttributes( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 11; + ULONG msgID = 36; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + UIMSetPINProtection + +DESCRIPTION: + The function sends 'UIM/Set PIN Protection Request' (0x0025) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG UIMSetPINProtection( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 11; + ULONG msgID = 37; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + UIMVerifyPIN + +DESCRIPTION: + The function sends 'UIM/Verify PIN Request' (0x0026) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG UIMVerifyPIN( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 11; + ULONG msgID = 38; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + UIMUnblockPIN + +DESCRIPTION: + The function sends 'UIM/Unblock PIN Request' (0x0027) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG UIMUnblockPIN( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 11; + ULONG msgID = 39; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + UIMChangePIN + +DESCRIPTION: + The function sends 'UIM/Change PIN Request' (0x0028) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG UIMChangePIN( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 11; + ULONG msgID = 40; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + UIMDepersonalization + +DESCRIPTION: + The function sends 'UIM/Depersonalization Request' (0x0029) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG UIMDepersonalization( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 11; + ULONG msgID = 41; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + UIMRefreshRegister + +DESCRIPTION: + The function sends 'UIM/Refresh Register Request' (0x002A) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG UIMRefreshRegister( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 11; + ULONG msgID = 42; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + UIMRefreshOK + +DESCRIPTION: + The function sends 'UIM/Refresh OK Request' (0x002B) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG UIMRefreshOK( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 11; + ULONG msgID = 43; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + UIMRefreshComplete + +DESCRIPTION: + The function sends 'UIM/Refresh Complete Request' (0x002C) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG UIMRefreshComplete( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 11; + ULONG msgID = 44; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + UIMGetLastRefreshEvent + +DESCRIPTION: + The function sends 'UIM/Get Last Refresh Event Request' (0x002D) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG UIMGetLastRefreshEvent( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 11; + ULONG msgID = 45; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + UIMEventRegistration + +DESCRIPTION: + The function sends 'UIM/Event Registration Request' (0x002E) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG UIMEventRegistration( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 11; + ULONG msgID = 46; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + UIMGetCardStatus + +DESCRIPTION: + The function sends 'UIM/Get Card Status Request' (0x002F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG UIMGetCardStatus( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 11; + ULONG msgID = 47; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + UIMPowerDown + +DESCRIPTION: + The function sends 'UIM/Power Down Request' (0x0030) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG UIMPowerDown( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 11; + ULONG msgID = 48; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + UIMPowerUp + +DESCRIPTION: + The function sends 'UIM/Power Up Request' (0x0031) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG UIMPowerUp( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 11; + ULONG msgID = 49; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + UIMAuthenticate + +DESCRIPTION: + The function sends 'UIM/Authenticate Request' (0x0034) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG UIMAuthenticate( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 11; + ULONG msgID = 52; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + UIMCloseSession + +DESCRIPTION: + The function sends 'UIM/Close Session Request' (0x0035) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG UIMCloseSession( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 11; + ULONG msgID = 53; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + UIMGetServiceStatus + +DESCRIPTION: + The function sends 'UIM/Get Service Status Request' (0x0036) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG UIMGetServiceStatus( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 11; + ULONG msgID = 54; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + UIMSetServiceStatus + +DESCRIPTION: + The function sends 'UIM/Set Service Status Request' (0x0037) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG UIMSetServiceStatus( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 11; + ULONG msgID = 55; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + UIMChangeProvisioningSession + +DESCRIPTION: + The function sends 'UIM/Change Provisioning Session Request' (0x0038) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG UIMChangeProvisioningSession( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 11; + ULONG msgID = 56; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + UIMGetLabel + +DESCRIPTION: + The function sends 'UIM/Get Label Request' (0x0039) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG UIMGetLabel( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 11; + ULONG msgID = 57; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + UIMGetConfiguration + +DESCRIPTION: + The function sends 'UIM/Get Configuration Request' (0x003A) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG UIMGetConfiguration( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 11; + ULONG msgID = 58; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + UIMSendADPU + +DESCRIPTION: + The function sends 'UIM/Send ADPU Request' (0x003B) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG UIMSendADPU( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 11; + ULONG msgID = 59; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + UIMSAPConnection + +DESCRIPTION: + The function sends 'UIM/SAP Connection Request' (0x003C) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG UIMSAPConnection( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 11; + ULONG msgID = 60; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + UIMSAPRequest + +DESCRIPTION: + The function sends 'UIM/SAP Request Request' (0x003D) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG UIMSAPRequest( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 11; + ULONG msgID = 61; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + UIMLogicalChannel + +DESCRIPTION: + The function sends 'UIM/Logical Channel Request' (0x003F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG UIMLogicalChannel( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 11; + ULONG msgID = 63; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + UIMSubscriptionOK + +DESCRIPTION: + The function sends 'UIM/Subscription OK Request' (0x0040) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG UIMSubscriptionOK( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 11; + ULONG msgID = 64; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + UIMGetATR + +DESCRIPTION: + The function sends 'UIM/Get ATR Request' (0x0041) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG UIMGetATR( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 11; + ULONG msgID = 65; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + UIMOpenLogicalChannel + +DESCRIPTION: + The function sends 'UIM/Open Logical Channel Request' (0x0042) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG UIMOpenLogicalChannel( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 11; + ULONG msgID = 66; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + UIMRefreshRegisterAll + +DESCRIPTION: + The function sends 'UIM/Refresh Register All Request' (0x0044) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG UIMRefreshRegisterAll( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 11; + ULONG msgID = 68; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + UIMSetFileStatus + +DESCRIPTION: + The function sends 'UIM/Set File Status Request' (0x0045) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG UIMSetFileStatus( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 11; + ULONG msgID = 69; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PBMSetIndicationRegistrationState + +DESCRIPTION: + The function sends 'PBM/Set Indication Registration State Request' (0x0001) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PBMSetIndicationRegistrationState( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 12; + ULONG msgID = 1; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PBMGetCapabilities + +DESCRIPTION: + The function sends 'PBM/Get Capabilities Request' (0x0002) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PBMGetCapabilities( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 12; + ULONG msgID = 2; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PBMGetAllCapabilities + +DESCRIPTION: + The function sends 'PBM/Get All Capabilities Request' (0x0003) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PBMGetAllCapabilities( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 12; + ULONG msgID = 3; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PBMReadRecords + +DESCRIPTION: + The function sends 'PBM/Read Records Request' (0x0004) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PBMReadRecords( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 12; + ULONG msgID = 4; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PBMWriteRecord + +DESCRIPTION: + The function sends 'PBM/Write Record Request' (0x0005) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PBMWriteRecord( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 12; + ULONG msgID = 5; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PBMDeleteRecord + +DESCRIPTION: + The function sends 'PBM/Delete Record Request' (0x0006) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PBMDeleteRecord( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 12; + ULONG msgID = 6; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PBMDeleteAllRecords + +DESCRIPTION: + The function sends 'PBM/Delete All Records Request' (0x0007) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PBMDeleteAllRecords( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 12; + ULONG msgID = 7; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PBMSearchRecords + +DESCRIPTION: + The function sends 'PBM/Search Records Request' (0x0008) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PBMSearchRecords( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 12; + ULONG msgID = 8; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PBMGetEmergencyList + +DESCRIPTION: + The function sends 'PBM/Get Emergency List Request' (0x000E) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PBMGetEmergencyList( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 12; + ULONG msgID = 14; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PBMGetAllGroups + +DESCRIPTION: + The function sends 'PBM/Get All Groups Request' (0x000F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PBMGetAllGroups( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 12; + ULONG msgID = 15; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PBMSetGroupInfo + +DESCRIPTION: + The function sends 'PBM/Set Group Info Request' (0x0010) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PBMSetGroupInfo( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 12; + ULONG msgID = 16; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PBMGetState + +DESCRIPTION: + The function sends 'PBM/Get State Request' (0x0011) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PBMGetState( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 12; + ULONG msgID = 17; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PBMReadAllHiddenRecords + +DESCRIPTION: + The function sends 'PBM/Read All Hidden Records Request' (0x0012) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PBMReadAllHiddenRecords( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 12; + ULONG msgID = 18; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PBMGetNextEmptyRecordID + +DESCRIPTION: + The function sends 'PBM/Get Next Empty Record ID Request' (0x0014) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PBMGetNextEmptyRecordID( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 12; + ULONG msgID = 20; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PBMGetNextRecordID + +DESCRIPTION: + The function sends 'PBM/Get Next Record ID Request' (0x0015) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PBMGetNextRecordID( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 12; + ULONG msgID = 21; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PBMGetAASList + +DESCRIPTION: + The function sends 'PBM/Get AAS List Request' (0x0016) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PBMGetAASList( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 12; + ULONG msgID = 22; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PBMSetAAS + +DESCRIPTION: + The function sends 'PBM/Set AAS Request' (0x0017) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PBMSetAAS( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 12; + ULONG msgID = 23; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PBMBindSubscription + +DESCRIPTION: + The function sends 'PBM/Bind Subscription Request' (0x001A) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PBMBindSubscription( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 12; + ULONG msgID = 26; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PBMGetSubscription + +DESCRIPTION: + The function sends 'PBM/Get Subscription Request' (0x001B) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PBMGetSubscription( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 12; + ULONG msgID = 27; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PBMSetCapabilitiesReadOperation + +DESCRIPTION: + The function sends 'PBM/Set Capabilities Read Operation Request' (0x001C) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PBMSetCapabilitiesReadOperation( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 12; + ULONG msgID = 28; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PBMExtendedReadRecords + +DESCRIPTION: + The function sends 'PBM/Extended Read Records Request' (0x001D) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PBMExtendedReadRecords( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 12; + ULONG msgID = 29; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PBMExtendedWriteRecord + +DESCRIPTION: + The function sends 'PBM/Extended Write Record Request' (0x001E) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PBMExtendedWriteRecord( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 12; + ULONG msgID = 30; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PBMExtendedSearchRecords + +DESCRIPTION: + The function sends 'PBM/Extended Search Records Request' (0x001F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PBMExtendedSearchRecords( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 12; + ULONG msgID = 31; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PBMExtendedReadAllHiddenRecords + +DESCRIPTION: + The function sends 'PBM/Extended Read All Hidden Records Request' (0x0020) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PBMExtendedReadAllHiddenRecords( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 12; + ULONG msgID = 32; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PBMReadUndecodedRecords + +DESCRIPTION: + The function sends 'PBM/Read Undecoded Records Request' (0x0022) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PBMReadUndecodedRecords( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 12; + ULONG msgID = 34; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + LOCGetSupportedMessages + +DESCRIPTION: + The function sends 'LOC/Get Supported Messages Request' (0x001E) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCGetSupportedMessages( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 16; + ULONG msgID = 30; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + LOCGetSupportedFields + +DESCRIPTION: + The function sends 'LOC/Get Supported Fields Request' (0x001F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCGetSupportedFields( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 16; + ULONG msgID = 31; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + LOCClientRevision + +DESCRIPTION: + The function sends 'LOC/Client Revision Request' (0x0020) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCClientRevision( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 16; + ULONG msgID = 32; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + LOCRegisterEvents + +DESCRIPTION: + The function sends 'LOC/Register Events Request' (0x0021) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCRegisterEvents( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 16; + ULONG msgID = 33; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + LOCStart + +DESCRIPTION: + The function sends 'LOC/Start Request' (0x0022) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCStart( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 16; + ULONG msgID = 34; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + LOCStop + +DESCRIPTION: + The function sends 'LOC/Stop Request' (0x0023) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCStop( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 16; + ULONG msgID = 35; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + LOCGetServiceRevision + +DESCRIPTION: + The function sends 'LOC/Get Service Revision Request' (0x0032) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCGetServiceRevision( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 16; + ULONG msgID = 50; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + LOCGetFixCriteria + +DESCRIPTION: + The function sends 'LOC/Get Fix Criteria Request' (0x0033) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCGetFixCriteria( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 16; + ULONG msgID = 51; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + LOCProvideNIUserResponse + +DESCRIPTION: + The function sends 'LOC/Provide NI User Response Request' (0x0034) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCProvideNIUserResponse( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 16; + ULONG msgID = 52; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + LOCInjectPredictedOrbitsData + +DESCRIPTION: + The function sends 'LOC/Inject Predicted Orbits Data Request' (0x0035) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCInjectPredictedOrbitsData( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 16; + ULONG msgID = 53; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + LOCGetPredictedOrbitsDataSource + +DESCRIPTION: + The function sends 'LOC/Get Predicted Orbits Data Source Request' (0x0036) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCGetPredictedOrbitsDataSource( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 16; + ULONG msgID = 54; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + LOCGetPredictedOrbitsDataValidity + +DESCRIPTION: + The function sends 'LOC/Get Predicted Orbits Data Validity Request' (0x0037) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCGetPredictedOrbitsDataValidity( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 16; + ULONG msgID = 55; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + LOCInjectUTCTime + +DESCRIPTION: + The function sends 'LOC/Inject UTC Time Request' (0x0038) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCInjectUTCTime( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 16; + ULONG msgID = 56; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + LOCInjectPosition + +DESCRIPTION: + The function sends 'LOC/Inject Position Request' (0x0039) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCInjectPosition( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 16; + ULONG msgID = 57; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + LOCSetEngineLock + +DESCRIPTION: + The function sends 'LOC/Set Engine Lock Request' (0x003A) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCSetEngineLock( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 16; + ULONG msgID = 58; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + LOCGetEngineLock + +DESCRIPTION: + The function sends 'LOC/Get Engine Lock Request' (0x003B) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCGetEngineLock( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 16; + ULONG msgID = 59; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + LOCSetSBASConfig + +DESCRIPTION: + The function sends 'LOC/Set SBAS Config Request' (0x003C) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCSetSBASConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 16; + ULONG msgID = 60; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + LOCGetSBASConfig + +DESCRIPTION: + The function sends 'LOC/Get SBAS Config Request' (0x003D) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCGetSBASConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 16; + ULONG msgID = 61; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + LOCSetNMEATypes + +DESCRIPTION: + The function sends 'LOC/Set NMEA Types Request' (0x003E) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCSetNMEATypes( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 16; + ULONG msgID = 62; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + LOCGetNMEATypes + +DESCRIPTION: + The function sends 'LOC/Get NMEA Types Request' (0x003F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCGetNMEATypes( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 16; + ULONG msgID = 63; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + LOCSetLowPowerMode + +DESCRIPTION: + The function sends 'LOC/Set Low Power Mode Request' (0x0040) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCSetLowPowerMode( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 16; + ULONG msgID = 64; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + LOCGetLowPowerMode + +DESCRIPTION: + The function sends 'LOC/Get Low Power Mode Request' (0x0041) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCGetLowPowerMode( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 16; + ULONG msgID = 65; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + LOCSetLocationServer + +DESCRIPTION: + The function sends 'LOC/Set Location Server Request' (0x0042) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCSetLocationServer( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 16; + ULONG msgID = 66; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + LOCGetLocationServer + +DESCRIPTION: + The function sends 'LOC/Get Location Server Request' (0x0043) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCGetLocationServer( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 16; + ULONG msgID = 67; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + LOCDeleteAssistData + +DESCRIPTION: + The function sends 'LOC/Delete Assist Data Request' (0x0044) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCDeleteAssistData( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 16; + ULONG msgID = 68; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + LOCSetXTRATSessionControl + +DESCRIPTION: + The function sends 'LOC/Set XTRA-T Session Control Request' (0x0045) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCSetXTRATSessionControl( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 16; + ULONG msgID = 69; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + LOC + +DESCRIPTION: + The function sends 'LOC' (0x0046) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOC( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 16; + ULONG msgID = 70; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + LOCInjectWiFiPosition + +DESCRIPTION: + The function sends 'LOC/Inject Wi-Fi Position Request' (0x0047) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCInjectWiFiPosition( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 16; + ULONG msgID = 71; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + LOCProvideWiFiStatus + +DESCRIPTION: + The function sends 'LOC/Provide Wi-Fi Status Request' (0x0048) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCProvideWiFiStatus( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 16; + ULONG msgID = 72; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + LOCGetRegisteredEvents + +DESCRIPTION: + The function sends 'LOC/Get Registered Events Request' (0x0049) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCGetRegisteredEvents( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 16; + ULONG msgID = 73; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + LOCSetOperationMode + +DESCRIPTION: + The function sends 'LOC/Set Operation Mode Request' (0x004A) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCSetOperationMode( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 16; + ULONG msgID = 74; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + LOCGetOperationMode + +DESCRIPTION: + The function sends 'LOC/Get Operation Mode Request' (0x004B) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCGetOperationMode( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 16; + ULONG msgID = 75; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + LOCSetSPIStatus + +DESCRIPTION: + The function sends 'LOC/Set SPI Status Request' (0x004C) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCSetSPIStatus( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 16; + ULONG msgID = 76; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + LOCInjectSensorData + +DESCRIPTION: + The function sends 'LOC/Inject Sensor Data Request' (0x004D) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCInjectSensorData( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 16; + ULONG msgID = 77; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + LOCInjectTimeSyncData + +DESCRIPTION: + The function sends 'LOC/Inject Time Sync Data Request' (0x004E) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCInjectTimeSyncData( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 16; + ULONG msgID = 78; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + LOCSetCradleMountConfig + +DESCRIPTION: + The function sends 'LOC/Set Cradle Mount Config Request' (0x004F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCSetCradleMountConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 16; + ULONG msgID = 79; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + LOCGetCradleMountConfig + +DESCRIPTION: + The function sends 'LOC/Get Cradle Mount Config Request' (0x0050) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCGetCradleMountConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 16; + ULONG msgID = 80; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + LOCSetExternalPowerConfig + +DESCRIPTION: + The function sends 'LOC/Set External Power Config Request' (0x0051) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCSetExternalPowerConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 16; + ULONG msgID = 81; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + LOCGetExternalPowerConfig + +DESCRIPTION: + The function sends 'LOC/Get External Power Config Request' (0x0052) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCGetExternalPowerConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 16; + ULONG msgID = 82; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + LOCProvideConnectionStatus + +DESCRIPTION: + The function sends 'LOC/Provide Connection Status Request' (0x0053) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCProvideConnectionStatus( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 16; + ULONG msgID = 83; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + LOCSetProtocolConfigParameters + +DESCRIPTION: + The function sends 'LOC/Set Protocol Config Parameters Request' (0x0054) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCSetProtocolConfigParameters( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 16; + ULONG msgID = 84; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + LOCGetProtocolConfigParameters + +DESCRIPTION: + The function sends 'LOC/Get Protocol Config Parameters Request' (0x0055) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCGetProtocolConfigParameters( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 16; + ULONG msgID = 85; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + LOCSetSensorControlConfig + +DESCRIPTION: + The function sends 'LOC/Set Sensor Control Config Request' (0x0056) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCSetSensorControlConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 16; + ULONG msgID = 86; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + LOCGetSensorControlConfig + +DESCRIPTION: + The function sends 'LOC/Get Sensor Control Config Request' (0x0057) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCGetSensorControlConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 16; + ULONG msgID = 87; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + LOCSetSensorProperties + +DESCRIPTION: + The function sends 'LOC/Set Sensor Properties Request' (0x0058) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCSetSensorProperties( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 16; + ULONG msgID = 88; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + LOCGetSensorProperties + +DESCRIPTION: + The function sends 'LOC/Get Sensor Properties Request' (0x0059) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCGetSensorProperties( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 16; + ULONG msgID = 89; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + LOCSetSensorPerformanceConfig + +DESCRIPTION: + The function sends 'LOC/Set Sensor Performance Config Request' (0x005A) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCSetSensorPerformanceConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 16; + ULONG msgID = 90; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + LOCGetSensorPerformanceConfig + +DESCRIPTION: + The function sends 'LOC/Get Sensor Performance Config Request' (0x005B) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCGetSensorPerformanceConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 16; + ULONG msgID = 91; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + LOCInjectSUPLCertificate + +DESCRIPTION: + The function sends 'LOC/Inject SUPL Certificate Request' (0x005C) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCInjectSUPLCertificate( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 16; + ULONG msgID = 92; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + LOCDeleteSUPLCertificate + +DESCRIPTION: + The function sends 'LOC/Delete SUPL Certificate Request' (0x005D) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCDeleteSUPLCertificate( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 16; + ULONG msgID = 93; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + LOCSetPositionEngineConfig + +DESCRIPTION: + The function sends 'LOC/Set Position Engine Config Request' (0x005E) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCSetPositionEngineConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 16; + ULONG msgID = 94; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + LOCGetPositionEngineConfig + +DESCRIPTION: + The function sends 'LOC/Get Position Engine Config Request' (0x005F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCGetPositionEngineConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 16; + ULONG msgID = 95; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + LOCAddCircularGeofence + +DESCRIPTION: + The function sends 'LOC/Add Circular Geofence Request' (0x0063) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCAddCircularGeofence( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 16; + ULONG msgID = 99; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + LOCDeleteGeofence + +DESCRIPTION: + The function sends 'LOC/Delete Geofence Request' (0x0064) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCDeleteGeofence( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 16; + ULONG msgID = 100; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + LOCQueryGeofence + +DESCRIPTION: + The function sends 'LOC/Query Geofence Request' (0x0065) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCQueryGeofence( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 16; + ULONG msgID = 101; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + LOCEditGeofence + +DESCRIPTION: + The function sends 'LOC/Edit Geofence Request' (0x0066) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCEditGeofence( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 16; + ULONG msgID = 102; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + LOCGetBestAvailablePosition + +DESCRIPTION: + The function sends 'LOC/Get Best Available Position Request' (0x0067) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCGetBestAvailablePosition( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 16; + ULONG msgID = 103; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + LOCInjectMotionData + +DESCRIPTION: + The function sends 'LOC/Inject Motion Data Request' (0x0068) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCInjectMotionData( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 16; + ULONG msgID = 104; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + LOCGetNIGeofenceIDList + +DESCRIPTION: + The function sends 'LOC/Get NI Geofence ID List Request' (0x0069) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCGetNIGeofenceIDList( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 16; + ULONG msgID = 105; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + LOCInjectGSMCellInfo + +DESCRIPTION: + The function sends 'LOC/Inject GSM Cell Info Request' (0x006A) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCInjectGSMCellInfo( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 16; + ULONG msgID = 106; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + LOCInjectNetworkInitiatedMessage + +DESCRIPTION: + The function sends 'LOC/Inject Network Initiated Message Request' (0x006B) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCInjectNetworkInitiatedMessage( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 16; + ULONG msgID = 107; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + LOCNotifyWWANOutOfService + +DESCRIPTION: + The function sends 'LOC/Notify WWAN Out Of Service Request' (0x006C) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCNotifyWWANOutOfService( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 16; + ULONG msgID = 108; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + LOCInjectPedometerData + +DESCRIPTION: + The function sends 'LOC/Inject Pedometer Data Request' (0x006F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCInjectPedometerData( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 16; + ULONG msgID = 111; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + LOCInjectWCDMACellInfo + +DESCRIPTION: + The function sends 'LOC/Inject WCDMA Cell Info Request' (0x0070) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCInjectWCDMACellInfo( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 16; + ULONG msgID = 112; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + LOCInjectTDSCDMACellInfo + +DESCRIPTION: + The function sends 'LOC/Inject TD-SCDMA Cell Info Request' (0x0071) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCInjectTDSCDMACellInfo( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 16; + ULONG msgID = 113; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + LOCInjectSubscriberID + +DESCRIPTION: + The function sends 'LOC/Inject Subscriber ID Request' (0x0072) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG LOCInjectSubscriberID( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 16; + ULONG msgID = 114; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDAGetSupportedMessages + +DESCRIPTION: + The function sends 'WDA/Get Supported Messages Request' (0x001E) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDAGetSupportedMessages( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 26; + ULONG msgID = 30; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDAGetSupportedFields + +DESCRIPTION: + The function sends 'WDA/Get Supported Fields Request' (0x001F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDAGetSupportedFields( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 26; + ULONG msgID = 31; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDASetDataFormat + +DESCRIPTION: + The function sends 'WDA/Set Data Format Request' (0x0020) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDASetDataFormat( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 26; + ULONG msgID = 32; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDAGetDataFormat + +DESCRIPTION: + The function sends 'WDA/Get Data Format Request' (0x0021) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDAGetDataFormat( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 26; + ULONG msgID = 33; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDAEnablePacketFilter + +DESCRIPTION: + The function sends 'WDA/Enable Packet Filter Request' (0x0022) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDAEnablePacketFilter( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 26; + ULONG msgID = 34; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDADisablePacketFilter + +DESCRIPTION: + The function sends 'WDA/Disable Packet Filter Request' (0x0023) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDADisablePacketFilter( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 26; + ULONG msgID = 35; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDAGetPacketFilterState + +DESCRIPTION: + The function sends 'WDA/Get Packet Filter State Request' (0x0024) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDAGetPacketFilterState( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 26; + ULONG msgID = 36; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDAAddPacketFilterRule + +DESCRIPTION: + The function sends 'WDA/Add Packet Filter Rule Request' (0x0025) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDAAddPacketFilterRule( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 26; + ULONG msgID = 37; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDADeletePacketFilterRule + +DESCRIPTION: + The function sends 'WDA/Delete Packet Filter Rule Request' (0x0026) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDADeletePacketFilterRule( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 26; + ULONG msgID = 38; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDAGetPacketFilterRuleHandles + +DESCRIPTION: + The function sends 'WDA/Get Packet Filter Rule Handles Request' (0x0027) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDAGetPacketFilterRuleHandles( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 26; + ULONG msgID = 39; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDAGetPacketFilterRule + +DESCRIPTION: + The function sends 'WDA/Get Packet Filter Rule Request' (0x0028) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDAGetPacketFilterRule( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 26; + ULONG msgID = 40; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDASetLoopbackState + +DESCRIPTION: + The function sends 'WDA/Set Loopback State Request' (0x0029) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDASetLoopbackState( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 26; + ULONG msgID = 41; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + WDAGetLoopbackState + +DESCRIPTION: + The function sends 'WDA/Get Loopback State Request' (0x002A) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG WDAGetLoopbackState( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 26; + ULONG msgID = 42; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + QCMAPEnable + +DESCRIPTION: + The function sends 'QCMAP/Enable Request' (0x0020) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG QCMAPEnable( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 30; + ULONG msgID = 32; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + QCMAPDisable + +DESCRIPTION: + The function sends 'QCMAP/Disable Request' (0x0021) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG QCMAPDisable( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 30; + ULONG msgID = 33; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + QCMAPBringUpWWAN + +DESCRIPTION: + The function sends 'QCMAP/Bring Up WWAN Request' (0x0022) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG QCMAPBringUpWWAN( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 30; + ULONG msgID = 34; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + QCMAPTearDownWWAN + +DESCRIPTION: + The function sends 'QCMAP/Tear Down WWAN Request' (0x0023) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG QCMAPTearDownWWAN( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 30; + ULONG msgID = 35; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + QCMAPGetWWANStatus + +DESCRIPTION: + The function sends 'QCMAP/Get WWAN Status Request' (0x0024) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG QCMAPGetWWANStatus( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 30; + ULONG msgID = 36; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + QCMAPGetIPSecVPNPassthrough + +DESCRIPTION: + The function sends 'QCMAP/Get IPSec VPN Passthrough Request' (0x0025) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG QCMAPGetIPSecVPNPassthrough( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 30; + ULONG msgID = 37; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + QCMAPSetIPSecVPNPassthrough + +DESCRIPTION: + The function sends 'QCMAP/Set IPSec VPN Passthrough Request' (0x0026) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG QCMAPSetIPSecVPNPassthrough( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 30; + ULONG msgID = 38; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + QCMAPGetPPTPVPNPassthrough + +DESCRIPTION: + The function sends 'QCMAP/Get PPTP VPN Passthrough Request' (0x0027) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG QCMAPGetPPTPVPNPassthrough( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 30; + ULONG msgID = 39; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + QCMAPSetPPTPVPNPassthrough + +DESCRIPTION: + The function sends 'QCMAP/Set PPTP VPN Passthrough Request' (0x0028) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG QCMAPSetPPTPVPNPassthrough( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 30; + ULONG msgID = 40; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + QCMAPGetL2TPVPNPassthrough + +DESCRIPTION: + The function sends 'QCMAP/Get L2TP VPN Passthrough Request' (0x0029) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG QCMAPGetL2TPVPNPassthrough( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 30; + ULONG msgID = 41; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + QCMAPSetL2TPVPNPassthrough + +DESCRIPTION: + The function sends 'QCMAP/Set L2TP VPN Passthrough Request' (0x002A) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG QCMAPSetL2TPVPNPassthrough( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 30; + ULONG msgID = 42; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + QCMAPGetDynamicNATEntryTimeout + +DESCRIPTION: + The function sends 'QCMAP/Get Dynamic NAT Entry Timeout Request' (0x002B) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG QCMAPGetDynamicNATEntryTimeout( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 30; + ULONG msgID = 43; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + QCMAPSetDynamicNATEntryTimeout + +DESCRIPTION: + The function sends 'QCMAP/Set Dynamic NAT Entry Timeout Request' (0x002C) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG QCMAPSetDynamicNATEntryTimeout( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 30; + ULONG msgID = 44; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + QCMAPAddStaticNATEntry + +DESCRIPTION: + The function sends 'QCMAP/Add Static NAT Entry Request' (0x002D) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG QCMAPAddStaticNATEntry( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 30; + ULONG msgID = 45; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + QCMAPDeleteStaticNATEntry + +DESCRIPTION: + The function sends 'QCMAP/Delete Static NAT Entry Request' (0x002E) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG QCMAPDeleteStaticNATEntry( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 30; + ULONG msgID = 46; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + QCMAPGetStaticNATEntries + +DESCRIPTION: + The function sends 'QCMAP/Get Static NAT Entries Request' (0x002F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG QCMAPGetStaticNATEntries( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 30; + ULONG msgID = 47; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + QCMAPSetDMZ + +DESCRIPTION: + The function sends 'QCMAP/Set DMZ Request' (0x0030) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG QCMAPSetDMZ( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 30; + ULONG msgID = 48; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + QCMAPDeleteDMZ + +DESCRIPTION: + The function sends 'QCMAP/Delete DMZ Request' (0x0031) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG QCMAPDeleteDMZ( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 30; + ULONG msgID = 49; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + QCMAPGetDMZ + +DESCRIPTION: + The function sends 'QCMAP/Get DMZ Request' (0x0032) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG QCMAPGetDMZ( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 30; + ULONG msgID = 50; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + QCMAPGetWWANConfig + +DESCRIPTION: + The function sends 'QCMAP/Get WWAN Config Request' (0x0033) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG QCMAPGetWWANConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 30; + ULONG msgID = 51; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + QCMAPEnableFirewallSetting + +DESCRIPTION: + The function sends 'QCMAP/Enable Firewall Setting Request' (0x0034) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG QCMAPEnableFirewallSetting( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 30; + ULONG msgID = 52; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + QCMAPGetFirewallSetting + +DESCRIPTION: + The function sends 'QCMAP/Get Firewall Setting Request' (0x0035) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG QCMAPGetFirewallSetting( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 30; + ULONG msgID = 53; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + QCMAPDisableFirewallSetting + +DESCRIPTION: + The function sends 'QCMAP/Disable Firewall Setting Request' (0x0036) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG QCMAPDisableFirewallSetting( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 30; + ULONG msgID = 54; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + QCMAPAddFirewallConfig + +DESCRIPTION: + The function sends 'QCMAP/Add Firewall Config Request' (0x0037) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG QCMAPAddFirewallConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 30; + ULONG msgID = 55; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + QCMAPGetFirewallConfig + +DESCRIPTION: + The function sends 'QCMAP/Get Firewall Config Request' (0x0038) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG QCMAPGetFirewallConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 30; + ULONG msgID = 56; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + QCMAPDeleteFirewallConfig + +DESCRIPTION: + The function sends 'QCMAP/Delete Firewall Config Request' (0x0039) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG QCMAPDeleteFirewallConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 30; + ULONG msgID = 57; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + QCMAPWWANStatusIndicationRegister + +DESCRIPTION: + The function sends 'QCMAP/WWAN Status Indication Register Request' (0x003A) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG QCMAPWWANStatusIndicationRegister( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 30; + ULONG msgID = 58; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + QCMAPStationModeEnable + +DESCRIPTION: + The function sends 'QCMAP/Station Mode Enable Request' (0x003B) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG QCMAPStationModeEnable( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 30; + ULONG msgID = 59; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + QCMAPStationModeDisable + +DESCRIPTION: + The function sends 'QCMAP/Station Mode Disable Request' (0x003C) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG QCMAPStationModeDisable( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 30; + ULONG msgID = 60; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + QCMAPGetStationMode + +DESCRIPTION: + The function sends 'QCMAP/Get Station Mode Request' (0x003D) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG QCMAPGetStationMode( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 30; + ULONG msgID = 61; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + QCMAPAddExtendedFirewallConfig + +DESCRIPTION: + The function sends 'QCMAP/Add Extended Firewall Config Request' (0x003F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG QCMAPAddExtendedFirewallConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 30; + ULONG msgID = 63; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + QCMAPGetExtendedFirewallConfig + +DESCRIPTION: + The function sends 'QCMAP/Get Extended Firewall Config Request' (0x0040) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG QCMAPGetExtendedFirewallConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 30; + ULONG msgID = 64; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + QCMAPGetFirewallHandles + +DESCRIPTION: + The function sends 'QCMAP/Get Firewall Handles Request' (0x0041) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG QCMAPGetFirewallHandles( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 30; + ULONG msgID = 65; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + QCMAPChangeNATType + +DESCRIPTION: + The function sends 'QCMAP/Change NAT Type Request' (0x0042) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG QCMAPChangeNATType( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 30; + ULONG msgID = 66; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + QCMAPGetNATType + +DESCRIPTION: + The function sends 'QCMAP/Get NAT Type Request' (0x0043) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG QCMAPGetNATType( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 30; + ULONG msgID = 67; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDCReset + +DESCRIPTION: + The function sends 'PDC/Reset Request' (0x0000) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDCReset( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 36; + ULONG msgID = 0; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDCRegisterForIndications + +DESCRIPTION: + The function sends 'PDC/Register For Indications Request' (0x0020) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDCRegisterForIndications( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 36; + ULONG msgID = 32; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDCGetSelectedConfig + +DESCRIPTION: + The function sends 'PDC/Get Selected Config Request' (0x0022) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDCGetSelectedConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 36; + ULONG msgID = 34; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDCSetSelectedConfig + +DESCRIPTION: + The function sends 'PDC/Set Selected Config Request' (0x0023) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDCSetSelectedConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 36; + ULONG msgID = 35; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDCListConfigs + +DESCRIPTION: + The function sends 'PDC/List Configs Request' (0x0024) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDCListConfigs( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 36; + ULONG msgID = 36; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDCDeleteConfig + +DESCRIPTION: + The function sends 'PDC/Delete Config Request' (0x0025) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDCDeleteConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 36; + ULONG msgID = 37; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDCLoadConfig + +DESCRIPTION: + The function sends 'PDC/Load Config Request' (0x0026) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDCLoadConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 36; + ULONG msgID = 38; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDCActivateConfig + +DESCRIPTION: + The function sends 'PDC/Activate Config Request' (0x0027) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDCActivateConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 36; + ULONG msgID = 39; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDCGetConfigInfo + +DESCRIPTION: + The function sends 'PDC/Get Config Info Request' (0x0028) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDCGetConfigInfo( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 36; + ULONG msgID = 40; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDCGetConfigLimits + +DESCRIPTION: + The function sends 'PDC/Get Config Limits Request' (0x0029) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDCGetConfigLimits( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 36; + ULONG msgID = 41; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDCGetDefaultConfigInfo + +DESCRIPTION: + The function sends 'PDC/Get Default Config Info Request' (0x002A) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDCGetDefaultConfigInfo( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 36; + ULONG msgID = 42; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + PDCDeactivateConfig + +DESCRIPTION: + The function sends 'PDC/Deactivate Config Request' (0x002B) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG PDCDeactivateConfig( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 36; + ULONG msgID = 43; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + RFRPESetRFMScenario + +DESCRIPTION: + The function sends 'RFRPE/Set RFM Scenario Request' (0x0020) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG RFRPESetRFMScenario( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 41; + ULONG msgID = 32; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + RFRPEGetRFMScenario + +DESCRIPTION: + The function sends 'RFRPE/Get RFM Scenario Request' (0x0021) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG RFRPEGetRFMScenario( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 41; + ULONG msgID = 33; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + RFRPEGetProvisionedTableRevision + +DESCRIPTION: + The function sends 'RFRPE/Get Provisioned Table Revision Request' (0x0022) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG RFRPEGetProvisionedTableRevision( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 41; + ULONG msgID = 34; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + CATReset + +DESCRIPTION: + The function sends 'CAT/Reset Request' (0x0000) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CATReset( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 224; + ULONG msgID = 0; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + CATSetEventReport + +DESCRIPTION: + The function sends 'CAT/Set Event Report Request' (0x0001) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CATSetEventReport( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 224; + ULONG msgID = 1; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + CATGetSupportedMessages + +DESCRIPTION: + The function sends 'CAT/Get Supported Messages Request' (0x001E) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CATGetSupportedMessages( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 224; + ULONG msgID = 30; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + CATGetSupportedFields + +DESCRIPTION: + The function sends 'CAT/Get Supported Fields Request' (0x001F) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CATGetSupportedFields( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 224; + ULONG msgID = 31; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + CATGetServiceState + +DESCRIPTION: + The function sends 'CAT/Get Service State Request' (0x0020) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CATGetServiceState( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 224; + ULONG msgID = 32; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + CATSendTerminalResponse + +DESCRIPTION: + The function sends 'CAT/Send Terminal Response Request' (0x0021) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CATSendTerminalResponse( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 224; + ULONG msgID = 33; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + CATEnvelopeCommand + +DESCRIPTION: + The function sends 'CAT/Envelope Command Request' (0x0022) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CATEnvelopeCommand( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 224; + ULONG msgID = 34; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + CATGetEventReport + +DESCRIPTION: + The function sends 'CAT/Get Event Report Request' (0x0023) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CATGetEventReport( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 224; + ULONG msgID = 35; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + CATSendDecodedTerminalResponse + +DESCRIPTION: + The function sends 'CAT/Send Decoded Terminal Response Request' (0x0024) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CATSendDecodedTerminalResponse( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 224; + ULONG msgID = 36; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + CATSendDecodedEnvelopeCommand + +DESCRIPTION: + The function sends 'CAT/Send Decoded Envelope Command Request' (0x0025) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CATSendDecodedEnvelopeCommand( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 224; + ULONG msgID = 37; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + CATEventConfirmation + +DESCRIPTION: + The function sends 'CAT/Event Confirmation Request' (0x0026) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CATEventConfirmation( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 224; + ULONG msgID = 38; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + CATSCWSOpenChannel + +DESCRIPTION: + The function sends 'CAT/SCWS Open Channel Request' (0x0027) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CATSCWSOpenChannel( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 224; + ULONG msgID = 39; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + CATSCWSCloseChannel + +DESCRIPTION: + The function sends 'CAT/SCWS Close Channel Request' (0x0028) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CATSCWSCloseChannel( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 224; + ULONG msgID = 40; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + CATSCWSSendData + +DESCRIPTION: + The function sends 'CAT/SCWS Send Data Request' (0x0029) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CATSCWSSendData( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 224; + ULONG msgID = 41; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + CATSCWSDataAvailable + +DESCRIPTION: + The function sends 'CAT/SCWS Data Available Request' (0x002A) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CATSCWSDataAvailable( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 224; + ULONG msgID = 42; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + CATSCWSChannelStatus + +DESCRIPTION: + The function sends 'CAT/SCWS Channel Status Request' (0x002B) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CATSCWSChannelStatus( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 224; + ULONG msgID = 43; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + CATGetTerminalProfile + +DESCRIPTION: + The function sends 'CAT/Get Terminal Profile Request' (0x002C) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CATGetTerminalProfile( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 224; + ULONG msgID = 44; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + CATSetConfiguration + +DESCRIPTION: + The function sends 'CAT/Set Configuration Request' (0x002D) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CATSetConfiguration( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 224; + ULONG msgID = 45; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + CATGetConfiguration + +DESCRIPTION: + The function sends 'CAT/Get Configuration Request' (0x002E) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG CATGetConfiguration( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 224; + ULONG msgID = 46; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + RMSReset + +DESCRIPTION: + The function sends 'RMS/Reset Request' (0x0000) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG RMSReset( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 225; + ULONG msgID = 0; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + RMSGetSMSWake + +DESCRIPTION: + The function sends 'RMS/Get SMS Wake Request' (0x0020) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG RMSGetSMSWake( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 225; + ULONG msgID = 32; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + RMSSetSMSWake + +DESCRIPTION: + The function sends 'RMS/Set SMS Wake Request' (0x0021) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG RMSSetSMSWake( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 225; + ULONG msgID = 33; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + OMAReset + +DESCRIPTION: + The function sends 'OMA/Reset Request' (0x0000) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG OMAReset( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 226; + ULONG msgID = 0; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + OMASetEventReport + +DESCRIPTION: + The function sends 'OMA/Set Event Report Request' (0x0001) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG OMASetEventReport( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 226; + ULONG msgID = 1; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + OMAStartSession + +DESCRIPTION: + The function sends 'OMA/Start Session Request' (0x0020) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG OMAStartSession( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 226; + ULONG msgID = 32; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + OMACancelSession + +DESCRIPTION: + The function sends 'OMA/Cancel Session Request' (0x0021) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG OMACancelSession( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 226; + ULONG msgID = 33; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + OMAGetSessionInfo + +DESCRIPTION: + The function sends 'OMA/Get Session Info Request' (0x0022) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG OMAGetSessionInfo( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 226; + ULONG msgID = 34; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + OMASendSelection + +DESCRIPTION: + The function sends 'OMA/Send Selection Request' (0x0023) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG OMASendSelection( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 226; + ULONG msgID = 35; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + OMAGetFeatures + +DESCRIPTION: + The function sends 'OMA/Get Features Request' (0x0024) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Reserved for future use (set to 0) + pIn [ I ] - Reserved for future use (set to 0) + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG OMAGetFeatures( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 226; + ULONG msgID = 36; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + +/*=========================================================================== +METHOD: + OMASetFeatures + +DESCRIPTION: + The function sends 'OMA/Set Features Request' (0x0025) + and returns the response + +PARAMETERS: + handle [ I ] - Gobi interface handle + to [ I ] - Timeout for transaction (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + ULONG - Return code +===========================================================================*/ +ULONG OMASetFeatures( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + cGobiConnectionMgmt * pAPI = gDLL.GetAPI( handle ); + if (pAPI == 0) + { + return (ULONG)eGOBI_ERR_INTERNAL; + } + + ULONG svcID = 226; + ULONG msgID = 37; + return pAPI->Send( svcID, msgID, to, inLen, pIn, pOutLen, pOut ); +} + diff --git a/gobi-api/GobiAPI_2013-07-31-1347/GobiSampleCM/GobiCMCallback.cpp b/gobi-api/GobiAPI_2013-07-31-1347/GobiSampleCM/GobiCMCallback.cpp new file mode 100644 index 0000000..b3aa866 --- /dev/null +++ b/gobi-api/GobiAPI_2013-07-31-1347/GobiSampleCM/GobiCMCallback.cpp @@ -0,0 +1,308 @@ +/*=========================================================================== +FILE: + GobiCMCallback.cpp + +DESCRIPTION: + Contains the implementation of each Gobi CM callback function. + +Copyright (c) 2013, The Linux Foundation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +===========================================================================*/ + +//--------------------------------------------------------------------------- +// Include Files +//--------------------------------------------------------------------------- +#include "SampleCM.h" +#include "GobiCMCallback.h" +#include + +/*=========================================================================*/ +// Free Methods +/*=========================================================================*/ + +/*=========================================================================== +METHOD: + WDSEventReportCallback (Free Method) + +DESCRIPTION: + Function called by WDS event report callback + +PARAMETERS: + svcID [ I ] - QMI service ID + msgID [ I ] - QMI message ID + handle [ I ] - Handle to Gobi API connection + outLen [ I ] - Length of indication buffer + pOut [ I ] - Indication buffer + +RETURN VALUE: + None +===========================================================================*/ +void WDSEventReportCallback( + ULONG svcID, + ULONG msgID, + GOBIHANDLE /* handle */, + ULONG outLen, + const BYTE * pOut ) +{ + if (gpCM == 0 || svcID != 1 || msgID != 1) + { + return; + } + + std::map tlvs = GetTLVs( &pOut[0], outLen ); + std::map ::const_iterator pIter = tlvs.find( 0x17 ); + if (pIter != tlvs.end()) + { + const sQMIRawContentHeader * pTmp = pIter->second; + if (pTmp->mLength >= sizeof (sWDSEventReportIndication_DataBearerTechnology)) + { + pTmp++; + const sWDSEventReportIndication_DataBearerTechnology * pDBT = + (const sWDSEventReportIndication_DataBearerTechnology *)pTmp; + + gpCM->OnDataBearerCBNotification( pDBT->mDataBearerTechnology ); + } + } + + ULONGLONG txTotalBytes = ULLONG_MAX; + ULONGLONG rxTotalBytes = ULLONG_MAX; + + pIter = tlvs.find( 0x19 ); + if (pIter != tlvs.end()) + { + const sQMIRawContentHeader * pTmp = pIter->second; + if (pTmp->mLength >= sizeof (sWDSEventReportIndication_TXBytes)) + { + pTmp++; + const sWDSEventReportIndication_TXBytes * pTX = + (const sWDSEventReportIndication_TXBytes *)pTmp; + + txTotalBytes = pTX->mTXByteTotal; + } + } + + pIter = tlvs.find( 0x1A ); + if (pIter != tlvs.end()) + { + const sQMIRawContentHeader * pTmp = pIter->second; + if (pTmp->mLength >= sizeof (sWDSEventReportIndication_RXBytes)) + { + pTmp++; + const sWDSEventReportIndication_RXBytes * pRX = + (const sWDSEventReportIndication_RXBytes *)pTmp; + + rxTotalBytes = pRX->mRXByteTotal; + } + } + + if (txTotalBytes != ULLONG_MAX || rxTotalBytes != ULLONG_MAX) + { + gpCM->OnByteTotalsNotification( rxTotalBytes, txTotalBytes ); + } +} + +/*=========================================================================== +METHOD: + WDSSessionStateCallback (Free Method) + +DESCRIPTION: + Function called by WDS packet service status callback + +PARAMETERS: + svcID [ I ] - QMI service ID + msgID [ I ] - QMI message ID + handle [ I ] - Handle to Gobi API connection + outLen [ I ] - Length of indication buffer + pOut [ I ] - Indication buffer + +RETURN VALUE: + None +===========================================================================*/ +void WDSSessionStateCallback( + ULONG svcID, + ULONG msgID, + GOBIHANDLE /* handle */, + ULONG outLen, + const BYTE * pOut ) +{ + if (gpCM == 0 || svcID != 1 || msgID != 34) + { + return; + } + + ULONG state = ULONG_MAX; + + std::map tlvs = GetTLVs( &pOut[0], outLen ); + std::map ::const_iterator pIter = tlvs.find( 0x01 ); + if (pIter != tlvs.end()) + { + const sQMIRawContentHeader * pTmp = pIter->second; + if (pTmp->mLength >= sizeof (sWDSPacketServiceStatusReportIndication_Status)) + { + pTmp++; + const sWDSPacketServiceStatusReportIndication_Status * pState = + (const sWDSPacketServiceStatusReportIndication_Status *)pTmp; + + state = pState->mConnectionStatus; + } + } + + if (state != ULONG_MAX) + { + gpCM->OnSessionStateCBNotification( state ); + } +} + +/*=========================================================================== +METHOD: + NASEventReportCallback (Free Method) + +DESCRIPTION: + Function called by NAS event report callback + +PARAMETERS: + svcID [ I ] - QMI service ID + msgID [ I ] - QMI message ID + handle [ I ] - Handle to Gobi API connection + outLen [ I ] - Length of indication buffer + pOut [ I ] - Indication buffer + +RETURN VALUE: + None +===========================================================================*/ +void NASEventReportCallback( + ULONG svcID, + ULONG msgID, + GOBIHANDLE /* handle */, + ULONG outLen, + const BYTE * pOut ) +{ + if (gpCM == 0 || svcID != 3 || msgID != 2) + { + return; + } + + std::map tlvs = GetTLVs( &pOut[0], outLen ); + std::map ::const_iterator pIter = tlvs.find( 0x10 ); + if (pIter == tlvs.end()) + { + return; + } + + const sQMIRawContentHeader * pTmp = pIter->second; + if (pTmp->mLength >= sizeof (sNASEventReportIndication_SignalStrength)) + { + pTmp++; + const sNASEventReportIndication_SignalStrength * pSS = + (const sNASEventReportIndication_SignalStrength *)pTmp; + + gpCM->OnSignalStrengthCBNotificaion( pSS->mSignalStrengthdBm, + pSS->mRadioInterface ); + } +} + +/*=========================================================================== +METHOD: + NASServingSystemCallback (Free Method) + +DESCRIPTION: + Function called by NAS serving system callback + +PARAMETERS: + svcID [ I ] - QMI service ID + msgID [ I ] - QMI message ID + handle [ I ] - Handle to Gobi API connection + outLen [ I ] - Length of indication buffer + pOut [ I ] - Indication buffer + +RETURN VALUE: + None +===========================================================================*/ +void NASServingSystemCallback( + ULONG svcID, + ULONG msgID, + GOBIHANDLE /* handle */, + ULONG outLen, + const BYTE * pOut ) +{ + if (gpCM == 0 || svcID != 3 || msgID != 36) + { + return; + } + + std::map tlvs = GetTLVs( &pOut[0], outLen ); + std::map ::const_iterator pIter = tlvs.find( 0x10 ); + if (pIter != tlvs.end()) + { + const sQMIRawContentHeader * pTmp = pIter->second; + if (pTmp->mLength >= sizeof (sNASServingSystemIndication_RoamingIndicator)) + { + pTmp++; + const sNASServingSystemIndication_RoamingIndicator * pRI = + (const sNASServingSystemIndication_RoamingIndicator *)pTmp; + + BYTE roam = pRI->mRoamingIndicator; + if (roam == 0xFF) + { + gpCM->SetRoam( "Unknown" ); + } + else + { + std::ostringstream roamStr; + roamStr << roam; + gpCM->SetRoam( roamStr.str() ); + } + } + } + + pIter = tlvs.find( 0x11 ); + if (pIter != tlvs.end()) + { + const sQMIRawContentHeader * pTmp = pIter->second; + ULONG tlvLen = (ULONG)pTmp->mLength; + ULONG dsLen = (ULONG)sizeof( sNASServingSystemIndication_DataServices ); + if (tlvLen < dsLen) + { + return; + } + + pTmp++; + const sNASServingSystemIndication_DataServices * pDS = + (const sNASServingSystemIndication_DataServices *)pTmp; + + ULONG dcCount = (ULONG)pDS->mNumberOfDataCapabilities; + ULONG dcSz = (ULONG)sizeof( eQMINASDataServiceCapabilities2 ); + dsLen += dcCount * dcSz; + if (tlvLen < dsLen) + { + return; + } + + pDS++; + gpCM->OnDataCapsNotification( dcCount, + (eQMINASDataServiceCapabilities2 *)pDS ); + } +} diff --git a/gobi-api/GobiAPI_2013-07-31-1347/GobiSampleCM/GobiCMCallback.h b/gobi-api/GobiAPI_2013-07-31-1347/GobiSampleCM/GobiCMCallback.h new file mode 100644 index 0000000..6ebb99c --- /dev/null +++ b/gobi-api/GobiAPI_2013-07-31-1347/GobiSampleCM/GobiCMCallback.h @@ -0,0 +1,82 @@ +/*=========================================================================== +FILE: + GobiCMCallback.h + +DESCRIPTION: + Contains the declaration of each Gobi CM callback function, + structures needed for these callbacks and message IDs for + each callback + +Copyright (c) 2013, The Linux Foundation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +===========================================================================*/ + +//--------------------------------------------------------------------------- +// Pragmas +//--------------------------------------------------------------------------- +#pragma once + +//--------------------------------------------------------------------------- +// Include Files +//--------------------------------------------------------------------------- +#include "GobiCMDLL.h" + +//--------------------------------------------------------------------------- +// Definitions +//--------------------------------------------------------------------------- + +// WDS event report callback +void WDSEventReportCallback( + ULONG svcID, + ULONG msgID, + GOBIHANDLE handle, + ULONG outLen, + const BYTE * pOut ); + +// WDS packet service status callback +void WDSSessionStateCallback( + ULONG svcID, + ULONG msgID, + GOBIHANDLE handle, + ULONG outLen, + const BYTE * pOut ); + +// NAS event report callback +void NASEventReportCallback( + ULONG svcID, + ULONG msgID, + GOBIHANDLE handle, + ULONG outLen, + const BYTE * pOut ); + +// NAS serving system callback +void NASServingSystemCallback( + ULONG svcID, + ULONG msgID, + GOBIHANDLE handle, + ULONG outLen, + const BYTE * pOut ); + diff --git a/gobi-api/GobiAPI_2013-07-31-1347/GobiSampleCM/GobiCMDLL.cpp b/gobi-api/GobiAPI_2013-07-31-1347/GobiSampleCM/GobiCMDLL.cpp new file mode 100644 index 0000000..2295b49 --- /dev/null +++ b/gobi-api/GobiAPI_2013-07-31-1347/GobiSampleCM/GobiCMDLL.cpp @@ -0,0 +1,1238 @@ +/*=========================================================================== +FILE: + GobiCMDLL.cpp + +DESCRIPTION: + Simple class to load and interface to the Gobi CM DLL + +PUBLIC CLASSES AND METHODS: + cGobiCMDLL + This class loads the Gobi CM DLL and then interfaces to it + +Copyright (c) 2013, The Linux Foundation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +===========================================================================*/ + +//--------------------------------------------------------------------------- +// Include Files +//--------------------------------------------------------------------------- +#include "GobiCMDLL.h" +#include "GobiConnectionMgmtAPIStructs.h" +#include "Gobi3000Translation.h" +#include + +/*=========================================================================*/ +// cGobiCMDLL Methods +/*=========================================================================*/ + +/*=========================================================================== +METHOD: + GetString (Internal Method) + +DESCRIPTION: + Call a Gobi CM API function that returns a string + +PARAMETERS: + mpFnString [ I ] - Gobi CM API function pointer + tlvID [ I ] - ID of response TLV that contains the string + strSz [ I ] - Max string size (including NULL terminator) + pStr [ O ] - Buffer to hold the string + +RETURN VALUE: + ULONG +===========================================================================*/ +ULONG cGobiCMDLL::GetString( + tFNGobiInputOutput mpFnString, + BYTE tlvID, + BYTE strSz, + CHAR * pStr ) +{ + // Assume failure + if (strSz > 0 && pStr != 0) + { + pStr[0] = 0; + } + + // Query for string? + ULONG status = eGOBI_ERR_GENERAL; + if (mpFnString == 0 || mhGobi == 0) + { + return status; + } + + ULONG lo = 1024; + BYTE rsp[1024] = { 0 }; + status = mpFnString( mhGobi, 2000, 0, 0, &lo, &rsp[0] ); + if (status != 0) + { + return status; + } + + std::map tlvs = GetTLVs( &rsp[0], lo ); + std::map ::const_iterator pIter = tlvs.find( tlvID ); + if (pIter == tlvs.end()) + { + return eGOBI_ERR_GENERAL; + } + + const sQMIRawContentHeader * pTmp = pIter->second; + ULONG strLen = (ULONG)pTmp->mLength; + pTmp++; + + if (strLen != 0 && strSz > 0 && pStr != 0) + { + ULONG needLen = strLen; + if (needLen + 1 > strSz) + { + needLen = strSz - 1; + } + + memcpy( pStr, pTmp, needLen ); + pStr[needLen] = 0; + } + + return status; +} + +/*=========================================================================== +METHOD: + Connect (Public Method) + +DESCRIPTION: + Calls GobiConnect + +PARAMETERS: + pInterface [ I ] - Interace to connect to + +RETURN VALUE: + ULONG +===========================================================================*/ +ULONG cGobiCMDLL::Connect( LPCSTR pInterface ) +{ + // Connect to WDS, DMS, and NAS services + ULONG svc[3] = { 1, 2, 3 }; + ULONG svcCount = 3; + GOBIHANDLE handle = 0; + ULONG status = GobiConnect( pInterface, &svcCount, &svc[0], &handle ); + if (status == 0) + { + if (svcCount == 3) + { + mhGobi = handle; + } + else + { + // We require WDS, DMS, and NAS services + Disconnect(); + status = eGOBI_ERR_GENERAL; + } + } + + return status; +} + +/*=========================================================================== +METHOD: + Disconnect (Public Method) + +DESCRIPTION: + Calls GobiDisconnect + +RETURN VALUE: + ULONG +===========================================================================*/ +ULONG cGobiCMDLL::Disconnect() +{ + if (mhGobi == 0) + { + return eGOBI_ERR_GENERAL; + } + + return GobiDisconnect( mhGobi ); +} + +/*=========================================================================== +ETHOD: + StartDataSession (Public Method) + +DESCRIPTION: + Calls WDSStartNetworkInterface + +PARAMETERS: + pAPN [ I ] - Access point name + pUser [ I ] - Username + pPwd [ I ] - Password + pSessionID [ O ] - Session ID + pFailureCode [ O ] - Failure code (if present) + +RETURN VALUE: + ULONG +===========================================================================*/ +ULONG cGobiCMDLL::StartDataSession( + LPCSTR pAPN, + LPCSTR pUser, + LPCSTR pPwd, + ULONG * pSessionID, + ULONG * pFailureCode ) +{ + // Assume failure + if (pSessionID != 0) + { + *pSessionID = 0xFFFFFFFF; + } + + // Start a data session? + ULONG status = eGOBI_ERR_GENERAL; + if (mhGobi == 0) + { + return status; + } + + UINT8 req[1024] = { 0 }; + UINT8 * pData = (UINT8 *)&req[0]; + + sQMIRawContentHeader * pTLV = (sQMIRawContentHeader *)pData; + pTLV->mTypeID = 0x16; + pTLV->mLength + = (UINT16)sizeof( sWDSStartNetworkInterfaceRequest_Authentication ); + pData += sizeof( sQMIRawContentHeader ); + + sWDSStartNetworkInterfaceRequest_Authentication * pAuth = + (sWDSStartNetworkInterfaceRequest_Authentication *)pData; + pAuth->mEnablePAP = 1; + pAuth->mEnableCHAP = 1; + pData += sizeof( sWDSStartNetworkInterfaceRequest_Authentication ); + + if (pAPN != 0 && pAPN[0] != 0) + { + size_t len = strnlen( pAPN, 256 ); + + pTLV = (sQMIRawContentHeader *)pData; + pTLV->mTypeID = 0x14; + pTLV->mLength = (UINT16)len; + pData += sizeof( sQMIRawContentHeader ); + + memcpy( pData, pAPN, len ); + pData += len; + } + + if (pUser != 0 && pUser[0] != 0) + { + size_t len = strnlen( pUser, 256 ); + + pTLV = (sQMIRawContentHeader *)pData; + pTLV->mTypeID = 0x17; + pTLV->mLength = (UINT16)len; + pData += sizeof( sQMIRawContentHeader ); + + memcpy( pData, pUser, len ); + pData += len; + } + + if (pPwd != 0 && pPwd[0] != 0) + { + size_t len = strnlen( pPwd, 256 ); + + pTLV = (sQMIRawContentHeader *)pData; + pTLV->mTypeID = 0x18; + pTLV->mLength = (UINT16)len; + pData += sizeof( sQMIRawContentHeader ); + + memcpy( pData, pPwd, len ); + pData += len; + } + + ULONG li = (ULONG)pData - (ULONG)&req[0]; + ULONG lo = 1024; + BYTE rsp[1024] = { 0 }; + status = WDSStartNetworkInterface( mhGobi, 300000, li, &req[0], &lo, &rsp[0] ); + + // On success pSessionID is valid, on failure pFailureCode is valid + ULONG status2 = ParseStartDataSession( lo, &rsp[0], pSessionID, pFailureCode ); + + if (status == eGOBI_ERR_NONE) + { + return status2; + } + + return status; +} + +/*=========================================================================== +METHOD: + CancelDataSession (Public Method) + +DESCRIPTION: + Calls GobiCancel/WDSAbort + +RETURN VALUE: + ULONG +===========================================================================*/ +ULONG cGobiCMDLL::CancelDataSession() +{ + // Cancel outstanding API request? + if (mhGobi == 0) + { + return eGOBI_ERR_GENERAL; + } + + // Cancel the request with the API + ULONG svcID = 1; + ULONG txID = 0xFFFFFFFF; + ULONG status = GobiCancel( mhGobi, svcID, &txID ); + if (status != 0 || txID == 0xFFFFFFFF) + { + return eGOBI_ERR_GENERAL; + } + + UINT8 req[256] = { 0 }; + UINT8 * pData = (UINT8 *)&req[0]; + + sQMIRawContentHeader * pTLV = (sQMIRawContentHeader *)pData; + pTLV->mTypeID = 0x01; + pTLV->mLength = (UINT16)sizeof( sAbortRequest_TransactionID ); + pData += sizeof( sQMIRawContentHeader ); + + sAbortRequest_TransactionID * pID = + (sAbortRequest_TransactionID *)pData; + pID->mTransactionID = (UINT16)txID; + pData += sizeof( sAbortRequest_TransactionID ); + + // Cancel the request with the device + ULONG li = (ULONG)pData - (ULONG)&req[0]; + status = WDSAbort( mhGobi, 2000, li, &req[0], 0, 0 ); + return status; +} + +/*=========================================================================== +METHOD: + StopDataSession (Public Method) + +DESCRIPTION: + Calls WDSStopNetworkInterface + +PARAMETERS: + sessionID [ I ] - Session ID + +RETURN VALUE: + ULONG +===========================================================================*/ +ULONG cGobiCMDLL::StopDataSession( ULONG sessionID ) +{ + ULONG status = eGOBI_ERR_GENERAL; + if (mhGobi == 0) + { + return status; + } + + UINT8 req[256] = { 0 }; + ULONG li = 256; + + status = PackStopDataSession( &li, &req[0], sessionID ); + if (status != 0) + { + return status; + } + + // Stop data session + status = WDSStopNetworkInterface( mhGobi, 2000, li, &req[0], 0, 0 ); + return status; +} + +/*=========================================================================== +METHOD: + GetSessionState (Public Method) + +DESCRIPTION: + Calls WDSGetPacketServiceStatus + +PARAMETERS: + pSessionState [ O ] - Current session state + +RETURN VALUE: + ULONG +===========================================================================*/ +ULONG cGobiCMDLL::GetSessionState( ULONG * pSessionState ) +{ + // Assume failure + if (pSessionState != 0) + { + *pSessionState = 0xFFFFFFFF; + } + + ULONG status = eGOBI_ERR_GENERAL; + if (mhGobi == 0) + { + return status; + } + + ULONG lo = 1024; + BYTE rsp[1024] = { 0 }; + status = WDSGetPacketServiceStatus( mhGobi, 2000, 0, 0, &lo, &rsp[0] ); + if (status != 0) + { + return status; + } + + status = ParseGetSessionState( lo, &rsp[0], pSessionState ); + return status; +} + +/*=========================================================================== +METHOD: + GetSessionDuration (Public Method) + +DESCRIPTION: + Calls WDSGetDataSessionDuration + +PARAMETERS: + pSessionDuration [ O ] - Session duration + +RETURN VALUE: + ULONG +===========================================================================*/ +ULONG cGobiCMDLL::GetSessionDuration( ULONGLONG * pSessionDuration ) +{ + // Assume failure + if (pSessionDuration != 0) + { + *pSessionDuration = 0xFFFFFFFF; + } + + // Query for session duration + ULONG status = eGOBI_ERR_GENERAL; + if (mhGobi == 0) + { + return status; + } + + ULONG lo = 1024; + BYTE rsp[1024] = { 0 }; + status = WDSGetDataSessionDuration( mhGobi, 2000, 0, 0, &lo, &rsp[0] ); + if (status != 0) + { + return status; + } + + status = ParseGetSessionDuration( lo, &rsp[0], pSessionDuration ); + return status; +} + +/*=========================================================================== +METHOD: + GetDataBearerTechnology (Public Method) + +DESCRIPTION: + Calls WDSGetDataBearerTechnology + +PARAMETERS: + pDataBearerTech [ O ] - Data bearer technology + +RETURN VALUE: + ULONG +===========================================================================*/ +ULONG cGobiCMDLL::GetDataBearerTechnology( ULONG * pDataBearerTech ) +{ + // Assume failure + if (pDataBearerTech != 0) + { + *pDataBearerTech = 0xFFFFFFFF; + } + + // Query for data bearer duration? + ULONG status = eGOBI_ERR_GENERAL; + if (mhGobi == 0) + { + return status; + } + + ULONG lo = 1024; + BYTE rsp[1024] = { 0 }; + status = WDSGetDataBearerTechnology( mhGobi, 2000, 0, 0, &lo, &rsp[0] ); + if (status != 0) + { + return status; + } + + status = ParseGetDataBearerTechnology( lo, &rsp[0], pDataBearerTech ); + return status; +} + +/*=========================================================================== +METHOD: + GetConnectionRate (Public Method) + +DESCRIPTION: + Calls WDSGetChannelRates + +PARAMETERS: + pCurTX [ O ] - Current TX rate + pCurRX [ O ] - Current RX rate + pMaxTX [ O ] - Max TX rate + pMaxRX [ O ] - Max RX rate + +RETURN VALUE: + ULONG +===========================================================================*/ +ULONG cGobiCMDLL::GetConnectionRate( + ULONG * pCurTX, + ULONG * pCurRX, + ULONG * pMaxTX, + ULONG * pMaxRX ) +{ + // Assume failure + pCurTX != 0 ? *pCurTX = 0xFFFFFFFF : 0; + pCurRX != 0 ? *pCurRX = 0xFFFFFFFF : 0; + pMaxTX != 0 ? *pMaxTX = 0xFFFFFFFF : 0; + pMaxRX != 0 ? *pMaxRX = 0xFFFFFFFF : 0; + + // Query for rates? + ULONG status = eGOBI_ERR_GENERAL; + if (mhGobi == 0) + { + return status; + } + + ULONG lo = 1024; + BYTE rsp[1024] = { 0 }; + status = WDSGetChannelRates( mhGobi, 2000, 0, 0, &lo, &rsp[0] ); + if (status != 0) + { + return status; + } + + status = ParseGetConnectionRate( lo, + &rsp[0], + pCurTX, + pCurRX, + pMaxTX, + pMaxRX ); + return status; +} + +/*=========================================================================== +METHOD: + GetFirmwareRevision (Public Method) + +DESCRIPTION: + Calls DMSGetDeviceRevision + +PARAMETERS: + strSz [ I ] - Maximum number of characters + pStr [ O ] - Firmware revision string + +RETURN VALUE: + ULONG +===========================================================================*/ +ULONG cGobiCMDLL::GetFirmwareRevision( + BYTE strSz, + CHAR * pStr ) +{ + return GetString( DMSGetDeviceRevision, 0x01, strSz, pStr ); +} + +/*=========================================================================== +METHOD: + GetManufacturer (Public Method) + +DESCRIPTION: + Calls DMSGetDeviceManfacturer + +PARAMETERS: + strSz [ I ] - Maximum string size + pStr [ O ] - Manufacturer string + +RETURN VALUE: + ULONG +===========================================================================*/ +ULONG cGobiCMDLL::GetManufacturer( + BYTE strSz, + CHAR * pStr ) +{ + return GetString( DMSGetDeviceManfacturer, 0x01, strSz, pStr ); +} + +/*=========================================================================== +METHOD: + GetModelID (Public Method) + +DESCRIPTION: + Calls GetModelID + +PARAMETERS: + strSz [ I ] - Max string size + pStr [ O ] - Model ID string + +RETURN VALUE: + ULONG +===========================================================================*/ +ULONG cGobiCMDLL::GetModelID( + BYTE strSz, + CHAR * pStr ) +{ + return GetString( DMSGetDeviceModel, 0x01, strSz, pStr ); +} + +/*=========================================================================== +METHOD: + GetHardwareRevision (Public Method) + +DESCRIPTION: + Calls DMSGetHardwareRevision + +PARAMETERS: + strSz [ I ] - Max size of string + pStr [ O ] - Hardware revision string + +RETURN VALUE: + ULONG +===========================================================================*/ +ULONG cGobiCMDLL::GetHardwareRevision( + BYTE strSz, + CHAR * pStr ) +{ + return GetString( DMSGetHardwareRevision, 0x01, strSz, pStr ); +} + +/*=========================================================================== +METHOD: + GetVoiceNumber (Public Method) + +DESCRIPTION: + Calls GetVoiceNumber + +PARAMETERS: + voiceSz [ I ] - Max characters in voice string + pVoiceStr [ O ] - Voice number string + minSz [ I ] - Max characters in MIN string + pMINStr [ O ] - MIN string + +RETURN VALUE: + ULONG +===========================================================================*/ +ULONG cGobiCMDLL::GetVoiceNumber( + BYTE voiceSz, + CHAR * pVoiceStr, + BYTE minSz, + CHAR * pMINStr ) +{ + // Assume failure + if (voiceSz > 0 && pVoiceStr != 0) + { + pVoiceStr[0] = 0; + } + + if (minSz > 0 && pMINStr != 0) + { + pMINStr[0] = 0; + } + + // Query for voice numbers? + ULONG status = eGOBI_ERR_GENERAL; + if (mhGobi == 0) + { + return status; + } + + ULONG lo = 1024; + BYTE rsp[1024] = { 0 }; + status = DMSGetDeviceVoiceNumber( mhGobi, 2000, 0, 0, &lo, &rsp[0] ); + if (status != 0) + { + return status; + } + + status = ParseGetVoiceNumber( lo, + &rsp[0], + voiceSz, + pVoiceStr, + minSz, + pMINStr ); + return status; +} + +/*=========================================================================== +METHOD: + GetSerialNumbers (Public Method) + +DESCRIPTION: + Calls DMSGetDeviceSerialNumbers + +PARAMETERS: + esnSz [ I ] - ESN size + pESNStr [ O ] - ESN string + imeiSz [ I ] - IMEI size + pIMEIStr [ O ] - IMSI string + meidSz [ I ] - MEID size + pMEIDStr [ O ] - MEID string + +RETURN VALUE: + ULONG +===========================================================================*/ +ULONG cGobiCMDLL::GetSerialNumbers( + BYTE esnSz, + CHAR * pESNStr, + BYTE imeiSz, + CHAR * pIMEIStr, + BYTE meidSz, + CHAR * pMEIDStr ) +{ + // Assume failure + if (esnSz > 0 && pESNStr != 0) + { + pESNStr[0] = 0; + } + + if (imeiSz > 0 && pIMEIStr != 0) + { + pIMEIStr[0] = 0; + } + + if (meidSz > 0 && pMEIDStr != 0) + { + pMEIDStr[0] = 0; + } + + // Query for serial numbers? + ULONG status = eGOBI_ERR_GENERAL; + if (mhGobi == 0) + { + return status; + } + + ULONG lo = 1024; + BYTE rsp[1024] = { 0 }; + status = DMSGetDeviceSerialNumbers( mhGobi, 2000, 0, 0, &lo, &rsp[0] ); + if (status != 0) + { + return status; + } + + status = ParseGetSerialNumbers( lo, + &rsp[0], + esnSz, + pESNStr, + imeiSz, + pIMEIStr, + meidSz, + pMEIDStr ); + return status; +} + +/*=========================================================================== +METHOD: + GetIMSI (Public Method) + +DESCRIPTION: + Get IMSI + +PARAMETERS: + imsiSz [ I ] - IMSI size + pIMSIStr [ O ] - IMSI string + +RETURN VALUE: + ULONG +===========================================================================*/ +ULONG cGobiCMDLL::GetIMSI( + BYTE imsiSz, + CHAR * pIMSIStr ) +{ + return GetString( DMSGetDeviceVoiceNumber, 0x11, imsiSz, pIMSIStr ); +} + +/*=========================================================================== +METHOD: + GetSignalStrengths (Public Method) + +DESCRIPTION: + Calls NASGetSignalStrength + +PARAMETERS: + pSigStrengths [ O ] - Received signal strength + pRadioInterfaces [ O ] - Radio interface technology + +RETURN VALUE: + ULONG +===========================================================================*/ +ULONG cGobiCMDLL::GetSignalStrengths( + INT8 * pSigStrengths, + ULONG * pRadioInterfaces ) +{ + // Assume failure + for (ULONG s = 0; s < MAX_SIGNALS; s++) + { + pSigStrengths[s] = 0; + pRadioInterfaces[s] = 0xFFFFFFFF; + } + + // Query for signal strengths? + ULONG status = eGOBI_ERR_GENERAL; + if (mhGobi == 0) + { + return status; + } + + ULONG lo = 1024; + BYTE rsp[1024] = { 0 }; + status = NASGetSignalStrength( mhGobi, 2000, 0, 0, &lo, &rsp[0] ); + if (status != 0) + { + return status; + } + + status = ParseGetSignalStrength( lo, + &rsp[0], + pSigStrengths, + pRadioInterfaces ); + return status; +} + +/*=========================================================================== +METHOD: + GetServingNetwork (Public Method) + +DESCRIPTION: + Calls NASGetServingSystem + +PARAMETERS: + pDataCapabilities [ O ] - Data capabilities + pMCC [ O ] - Mobile country code + pMNC [ O ] - Mobile network code + nameSize [ I ] - Network name max size + pName [ O ] - Network name + pSID [ O ] - System ID + pNID [ O ] - Network ID + pRoam [ O ] - Roaming indicator + +RETURN VALUE: + ULONG +===========================================================================*/ +ULONG cGobiCMDLL::GetServingNetwork( + ULONG * pDataCapabilities, + WORD * pMCC, + WORD * pMNC, + BYTE nameSize, + CHAR * pName, + WORD * pSID, + WORD * pNID, + ULONG * pRoam ) +{ + // Assume failure + for (ULONG d = 0; d < MAX_DATA_CAPABILITIES; d++) + { + pDataCapabilities[d] = 0xFFFFFFFF; + } + + if (nameSize > 0 && pName != 0) + { + pName[0] = 0; + } + + pMCC != 0 ? *pMCC = 0xFFFF : 0; + pMNC != 0 ? *pMNC = 0xFFFF : 0; + pRoam != 0 ? *pRoam = 0xFFFFFFFF : 0; + pSID != 0 ? *pSID = 0xFFFF : 0; + pNID != 0 ? *pNID = 0xFFFF : 0; + + // Query for serving system? + ULONG status = eGOBI_ERR_GENERAL; + if (mhGobi == 0) + { + return status; + } + + ULONG lo = 8096; + BYTE rsp[8096] = { 0 }; + status = NASGetServingSystem( mhGobi, 2000, 0, 0, &lo, &rsp[0] ); + if (status != 0) + { + return status; + } + + std::map tlvs = GetTLVs( &rsp[0], lo ); + std::map ::const_iterator pIter = tlvs.find( 0x11 ); + if (pIter != tlvs.end()) + { + const sQMIRawContentHeader * pTmp = pIter->second; + ULONG tlvLen = (ULONG)pTmp->mLength; + ULONG dsLen = (ULONG)sizeof( sNASGetServingSystemResponse_DataServices ); + if (tlvLen < dsLen) + { + return eGOBI_ERR_GENERAL; + } + + pTmp++; + const sNASGetServingSystemResponse_DataServices * pDS = + (const sNASGetServingSystemResponse_DataServices *)pTmp; + + ULONG dcCount = (ULONG)pDS->mNumberOfDataCapabilities; + ULONG dcSz = (ULONG)sizeof( eQMINASDataServiceCapabilities2 ); + dsLen += dcCount * dcSz; + if (tlvLen < dsLen) + { + return eGOBI_ERR_GENERAL; + } + + pDS++; + eQMINASDataServiceCapabilities2 * pCap = (eQMINASDataServiceCapabilities2 *)pDS; + if (dcCount > MAX_DATA_CAPABILITIES) + { + dcCount = MAX_DATA_CAPABILITIES; + } + + for (ULONG i = 0; i < dcCount; i++) + { + pDataCapabilities[i] = (ULONG)*pCap++; + } + } + + pIter = tlvs.find( 0x12 ); + if (pIter != tlvs.end()) + { + const sQMIRawContentHeader * pTmp = pIter->second; + ULONG tlvLen = (ULONG)pTmp->mLength; + ULONG plmnLen = (ULONG)sizeof( sNASGetServingSystemResponse_CurrentPLMN ); + if (tlvLen < plmnLen) + { + return eGOBI_ERR_GENERAL; + } + + pTmp++; + const sNASGetServingSystemResponse_CurrentPLMN * pPLMN = + (const sNASGetServingSystemResponse_CurrentPLMN *)pTmp; + + ULONG strLen = (ULONG)pPLMN->mDescriptionLength; + plmnLen += strLen; + if (tlvLen < plmnLen) + { + return eGOBI_ERR_GENERAL; + } + + pMCC != 0 ? *pMCC = (ULONG)pPLMN->mMobileCountryCode : 0; + pMNC != 0 ? *pMNC = (ULONG)pPLMN->mMobileNetworkCode : 0; + pPLMN++; + + if (strLen != 0 && nameSize > 0 && pName != 0) + { + ULONG needLen = strLen; + if (needLen + 1 > nameSize) + { + needLen = nameSize - 1; + } + + memcpy( pName, pPLMN, needLen ); + pName[needLen] = 0; + } + } + + pIter = tlvs.find( 0x13 ); + if (pIter != tlvs.end()) + { + const sQMIRawContentHeader * pTmp = pIter->second; + ULONG tlvLen = (ULONG)pTmp->mLength; + ULONG sysLen = (ULONG)sizeof( sNASGetServingSystemResponse_SystemID ); + if (tlvLen < sysLen) + { + return eGOBI_ERR_GENERAL; + } + + pTmp++; + const sNASGetServingSystemResponse_SystemID * pSys = + (const sNASGetServingSystemResponse_SystemID *)pTmp; + + pSID != 0 ? *pSID = (ULONG)pSys->mSystemID : 0; + pNID != 0 ? *pNID = (ULONG)pSys->mNetworkID : 0; + } + + pIter = tlvs.find( 0x16 ); + if (pIter != tlvs.end()) + { + const sQMIRawContentHeader * pTmp = pIter->second; + ULONG tlvLen = (ULONG)pTmp->mLength; + ULONG roamLen = (ULONG)sizeof( sNASGetServingSystemResponse_DefaultRoaming ); + if (tlvLen < roamLen) + { + return eGOBI_ERR_GENERAL; + } + + pTmp++; + const sNASGetServingSystemResponse_DefaultRoaming * pDR = + (const sNASGetServingSystemResponse_DefaultRoaming *)pTmp; + + pRoam != 0 ? *pRoam = (ULONG)pDR->mRoamingIndicator : 0; + } + + return status; +} + +/*=========================================================================== +METHOD: + GetHomeNetwork (Public Method) + +DESCRIPTION: + Calls NASGetHomeNetwork + +PARAMETERS: + pHomeMCC [ O ] - Mobile country code + pHomeMNC [ O ] - Mobile network code + homeNameSize [ I ] - Max name size + pHomeName [ O ] - Home network name + pSID [ O ] - System ID + pNID [ O ] - Network ID + +RETURN VALUE: + ULONG +===========================================================================*/ +ULONG cGobiCMDLL::GetHomeNetwork( + WORD * pHomeMCC, + WORD * pHomeMNC, + BYTE homeNameSize, + CHAR * pHomeName, + WORD * pSID, + WORD * pNID ) +{ + // Assume failure + if (homeNameSize > 0 && pHomeName != 0) + { + pHomeName[0] = 0; + } + + pHomeMCC != 0 ? *pHomeMCC = 0xFFFF : 0; + pHomeMNC != 0 ? *pHomeMNC = 0xFFFF : 0; + pSID != 0 ? *pSID = 0xFFFF : 0; + pNID != 0 ? *pNID = 0xFFFF : 0; + + // Query for home system? + ULONG status = eGOBI_ERR_GENERAL; + if (mhGobi == 0) + { + return status; + } + + ULONG lo = 8096; + BYTE rsp[8096] = { 0 }; + status = NASGetHomeNetwork( mhGobi, 2000, 0, 0, &lo, &rsp[0] ); + if (status != 0) + { + return status; + } + + status = ParseGetHomeNetwork( lo, + &rsp[0], + pHomeMCC, + pHomeMNC, + homeNameSize, + pHomeName, + pSID, + pNID ); + return status; +} + +/*=========================================================================== +METHOD: + SetWDSEventReportCB (Public Method) + +DESCRIPTION: + Calls WDSSetEventReport/SetGenericCallback + +PARAMETERS: + pCallback [ I ] - Callback function pointer + interval [ I ] - Interval (in seconds) for transfer statistics + +RETURN VALUE: + ULONG +===========================================================================*/ +ULONG cGobiCMDLL::SetWDSEventReportCB( + tFNGenericCallback pCallback, + BYTE interval ) +{ + // Set WDS event callback? + ULONG status = eGOBI_ERR_GENERAL; + if (mhGobi == 0) + { + return status; + } + + // Configure the QMI service + UINT8 req[1024] = { 0 }; + UINT8 * pData = (UINT8 *)&req[0]; + + sQMIRawContentHeader * pTLV = (sQMIRawContentHeader *)pData; + pTLV->mTypeID = 0x11; + pTLV->mLength = (UINT16)sizeof( sWDSSetEventReportRequest_TransferStatisticsIndicator ); + pData += sizeof( sQMIRawContentHeader ); + + sWDSSetEventReportRequest_TransferStatisticsIndicator * pTS = + (sWDSSetEventReportRequest_TransferStatisticsIndicator *)pData; + pTS->mTransferStatisticsIntervalSeconds = interval; + pTS->mReportTXPacketSuccesses = 0; + pTS->mReportRXPacketSuccesses = 0; + pTS->mReportTXPacketErrors = 0; + pTS->mReportRXPacketErrors = 0; + pTS->mReportTXOverflows = 0; + pTS->mReportRXOverflows = 0; + pTS->mTXByteTotal = 1; + pTS->mRXByteTotal = 1; + pData += sizeof( sWDSSetEventReportRequest_TransferStatisticsIndicator ); + + pTLV = (sQMIRawContentHeader *)pData; + pTLV->mTypeID = 0x12; + pTLV->mLength = (UINT16)sizeof( sWDSSetEventReportRequest_DataBearerTechnologyIndicator ); + pData += sizeof( sQMIRawContentHeader ); + + sWDSSetEventReportRequest_DataBearerTechnologyIndicator * pTI = + (sWDSSetEventReportRequest_DataBearerTechnologyIndicator *)pData; + pTI->mReportDataBearerTechnology = 1; + pData += sizeof( sWDSSetEventReportRequest_DataBearerTechnologyIndicator ); + + ULONG li = (ULONG)pData - (ULONG)&req[0]; + status = WDSSetEventReport( mhGobi, 2000, li, &req[0], 0, 0 ); + if (status != 0) + { + return status; + } + + // Configure the callback with the API + status = SetGenericCallback( mhGobi, 1, 1, pCallback ); + return status; +} + +/*=========================================================================== +METHOD: + SetWDSSessionStateCB (Public Method) + +DESCRIPTION: + Calls SetGenericCallback + +PARAMETERS: + pCallback [ I ] - Callback function pointer + +RETURN VALUE: + ULONG +===========================================================================*/ +ULONG cGobiCMDLL::SetWDSSessionStateCB( tFNGenericCallback pCallback ) +{ + // Set WDS packet service status callback? + ULONG status = eGOBI_ERR_GENERAL; + if (mhGobi == 0) + { + return status; + } + + // Configure the callback with the API + status = SetGenericCallback( mhGobi, 1, 34, pCallback ); + return status; +} + +/*=========================================================================== +METHOD: + SetNASEventReportCB (Public Method) + +DESCRIPTION: + Calls NASSetEventReport/SetGenericCallback + +PARAMETERS: + pCallback [ I ] - Callback function pointer + thresholdsSize [ I ] - Threshold size + pThresholds [ I ] - Array of thresholds + +RETURN VALUE: + ULONG +===========================================================================*/ +ULONG cGobiCMDLL::SetNASEventReportCB( + tFNGenericCallback pCallback, + BYTE thresholdsSize, + INT8 * pThresholds ) +{ + // Set NAS event report callback request? + ULONG status = eGOBI_ERR_GENERAL; + if ( (mhGobi == 0) + || (thresholdsSize > 0 && pThresholds == 0) ) + { + return status; + } + + // Configure the QMI service + UINT8 req[1024] = { 0 }; + UINT8 * pData = (UINT8 *)&req[0]; + + sQMIRawContentHeader * pTLV = (sQMIRawContentHeader *)pData; + pTLV->mTypeID = 0x10; + pTLV->mLength = (UINT16)sizeof( sNASSetEventReportRequest_SignalIndicator ); + pTLV->mLength += (UINT16)thresholdsSize; + pData += sizeof( sQMIRawContentHeader ); + + sNASSetEventReportRequest_SignalIndicator * pSI = + (sNASSetEventReportRequest_SignalIndicator *)pData; + pSI->mReportSignalStrength = 1; + pSI->mNumberOfThresholds = thresholdsSize; + pData += sizeof( sNASSetEventReportRequest_SignalIndicator ); + + for (UINT8 i = 0; i < thresholdsSize; i++) + { + INT8 * pThresh = (INT8 *)pData; + *pThresh = pThresholds[i]; + pData++; + } + + ULONG li = (ULONG)pData - (ULONG)&req[0]; + status = NASSetEventReport( mhGobi, 2000, li, &req[0], 0, 0 ); + if (status != 0) + { + return status; + } + + // Configure the callback with the API + status = SetGenericCallback( mhGobi, 3, 2, pCallback ); + return status; +} + +/*=========================================================================== +METHOD: + SetNASServingSystemCB (Public Method) + +DESCRIPTION: + Calls SetGenericCallback + +PARAMETERS: + pCallback [ I ] - Callback function pointer + +RETURN VALUE: + ULONG +===========================================================================*/ +ULONG cGobiCMDLL::SetNASServingSystemCB( tFNGenericCallback pCallback ) +{ + // Set NAS serving system request? + ULONG status = eGOBI_ERR_GENERAL; + if (mhGobi == 0) + { + return status; + } + + // Configure the callback with the API + status = SetGenericCallback( mhGobi, 3, 36, pCallback ); + return status; +} diff --git a/gobi-api/GobiAPI_2013-07-31-1347/GobiSampleCM/GobiCMDLL.h b/gobi-api/GobiAPI_2013-07-31-1347/GobiSampleCM/GobiCMDLL.h new file mode 100644 index 0000000..728c9a2 --- /dev/null +++ b/gobi-api/GobiAPI_2013-07-31-1347/GobiSampleCM/GobiCMDLL.h @@ -0,0 +1,265 @@ +/*=========================================================================== +FILE: + GobiCMDLL.h + +DESCRIPTION: + Simple class to load and interface to the Gobi CM DLL + +PUBLIC CLASSES AND METHODS: + cGobiCMDLL + This class loads the Gobi CM DLL and then interfaces to it + +Copyright (c) 2013, The Linux Foundation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +===========================================================================*/ + +//--------------------------------------------------------------------------- +// Pragmas +//--------------------------------------------------------------------------- +#pragma once + +//--------------------------------------------------------------------------- +// Include Files +//--------------------------------------------------------------------------- +#include "GobiConnectionMgmtAPI.h" +#include "GobiConnectionMgmtAPIStructs.h" +#include + +//--------------------------------------------------------------------------- +// Definitions +//--------------------------------------------------------------------------- +// Handle to Gobi API +typedef ULONG_PTR GOBIHANDLE; + +// The maximum number of signals +const ULONG MAX_SIGNALS = 12; + +// The maximum number of data capabilities +const ULONG MAX_DATA_CAPABILITIES = 12; + +// Gobi input/output function pointer +typedef ULONG (* tFNGobiInputOutput)( + GOBIHANDLE handle, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + +/*=========================================================================*/ +// Free Methods +/*=========================================================================*/ + +/*=========================================================================== +METHOD: + GetTLVs (Internal Method) + +DESCRIPTION: + Convert response buffer to a TLV map + +PARAMETERS: + pRsp [ I ] - The response buffer + rspSz [ I ] - The size of the above buffer + +RETURN VALUE: + std::map +===========================================================================*/ +inline std::map GetTLVs( + const UINT8 * pRsp, + ULONG rspSz ) +{ + std::map retMap; + + ULONG dataProcessed = 0; + const UINT8 * pData = &pRsp[0]; + while (dataProcessed < rspSz) + { + dataProcessed += (ULONG)sizeof( sQMIRawContentHeader ); + if (dataProcessed > rspSz) + { + break; + } + + const sQMIRawContentHeader * pTLV = (const sQMIRawContentHeader *)pData; + dataProcessed += (ULONG)pTLV->mLength; + if (dataProcessed > rspSz) + { + break; + } + + retMap[pTLV->mTypeID] = pTLV; + pData = &pRsp[dataProcessed]; + } + + return retMap; +}; + +/*=========================================================================*/ +// Class cGobiCMDLL +/*=========================================================================*/ +class cGobiCMDLL +{ + public: + // Constructor + cGobiCMDLL() + : mhGobi( 0 ) + { } + + // Destructor + ~cGobiCMDLL() + { } + + // Connect + ULONG Connect( LPCSTR pInterface ); + + // Disconnect + ULONG Disconnect(); + + // Start data session + ULONG StartDataSession( + LPCSTR pAPN, + LPCSTR pUser, + LPCSTR pPwd, + ULONG * pSessionID, + ULONG * pFailureCode ); + + // Cancel data session + ULONG CancelDataSession(); + + // Stop data session + ULONG StopDataSession( ULONG sessionID ); + + // Get session state + ULONG GetSessionState( ULONG * pSessionState ); + + // Get session duration + ULONG GetSessionDuration( ULONGLONG * pSessionDuration ); + + // Get data bearer technology + ULONG GetDataBearerTechnology( ULONG * pDataBearerTech ); + + // Get connection rate + ULONG GetConnectionRate( + ULONG * pCurTX, + ULONG * pCurRX, + ULONG * pMaxTX, + ULONG * pMaxRX ); + + // Get firmware revision + ULONG GetFirmwareRevision( + BYTE strSz, + CHAR * pStr ); + + // Get manufacturer + ULONG GetManufacturer( + BYTE strSz, + CHAR * pStr ); + + // Get model ID + ULONG GetModelID( + BYTE strSz, + CHAR * pStr ); + + // Get hardware revision + ULONG GetHardwareRevision( + BYTE strSz, + CHAR * pStr ); + + // Get voice number + ULONG GetVoiceNumber( + BYTE voiceSz, + CHAR * pVoiceStr, + BYTE minSz, + CHAR * pMINStr ); + + // Get serial numbers + ULONG GetSerialNumbers( + BYTE esnSz, + CHAR * pESNStr, + BYTE imeiSz, + CHAR * pIMEIStr, + BYTE meidSz, + CHAR * pMEIDStr ); + + // Get IMSI + ULONG GetIMSI( + BYTE imsiSz, + CHAR * pIMSIStr ); + + // Get signal strengths + ULONG GetSignalStrengths( + INT8 * pSigStrengths, + ULONG * pRadioInterfaces ); + + // Get serving network + ULONG GetServingNetwork( + ULONG * pDataCapabilities, + WORD * pMCC, + WORD * pMNC, + BYTE nameSize, + CHAR * pName, + WORD * pSID, + WORD * pNID, + ULONG * pRoam ); + + // Get home network + ULONG GetHomeNetwork( + WORD * pHomeMCC, + WORD * pHomeMNC, + BYTE homeNameSize, + CHAR * pHomeName, + WORD * pSID, + WORD * pNID ); + + // Set WDS event report callback + ULONG SetWDSEventReportCB( + tFNGenericCallback pCallback, + BYTE interval ); + + // Set WDS packet service status callback + ULONG SetWDSSessionStateCB( tFNGenericCallback pCallback ); + + // Set NAS event report callback + ULONG SetNASEventReportCB( + tFNGenericCallback pCallback, + BYTE thresholdsSize, + INT8 * pThresholds ); + + // Set NAS serving system callback + ULONG SetNASServingSystemCB( tFNGenericCallback pCallback ); + + protected: + + // Call a Gobi CM API function that returns a string + ULONG GetString( + tFNGobiInputOutput mpFnString, + BYTE tlvID, + BYTE strSz, + CHAR * pStr ); + + /* Handle to Gobi API */ + GOBIHANDLE mhGobi; +}; diff --git a/gobi-api/GobiAPI_2013-07-31-1347/GobiSampleCM/QTSampleCM.cpp b/gobi-api/GobiAPI_2013-07-31-1347/GobiSampleCM/QTSampleCM.cpp new file mode 100644 index 0000000..57cf1e9 --- /dev/null +++ b/gobi-api/GobiAPI_2013-07-31-1347/GobiSampleCM/QTSampleCM.cpp @@ -0,0 +1,315 @@ +/*=========================================================================== +FILE: + QTSampleCM.cpp + +DESCRIPTION: + QT implementation of the Sample CM + +PUBLIC CLASSES AND METHODS: + cQTSampleCM + QT implementation of the Sample CM + +Copyright (c) 2013, The Linux Foundation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +===========================================================================*/ + +//--------------------------------------------------------------------------- +// Include Files +//--------------------------------------------------------------------------- +#include "QTSampleCM.h" + +/*=========================================================================*/ +// Free Methods +/*=========================================================================*/ + +/*=========================================================================== +METHOD: + AsyncConnectThread (Free Method) + +DESCRIPTION: + Start a data session + +PARAMETERS: + pData [ I ] - cQTSampleCM object + +RETURN VALUE: + void * - always NULL +===========================================================================*/ +void * AsyncConnectThread( void * pData ) +{ + cQTSampleCM * pCM = (cQTSampleCM*)pData; + if (pCM == NULL) + { + return NULL; + } + + // Open the dialog window, disable the info and connection stats buttons + pCM->mView.rootContext()->setContextProperty( "dialogText", + "Connecting, please wait..." ); + pCM->mView.rootContext()->setContextProperty( "windowState", + "connectingDialog" ); + + ULONG failureCode = 0xFFFFFFFF; + ULONG rc = pCM->OnStartDataSession( &failureCode ); + if (rc != eGOBI_ERR_NONE) + { + std::ostringstream error; + error << "Failed to connect, error " << rc; + + TRACE( "rc %lu, failure code %lu", rc, failureCode ); + + // Show failure code, if present + if (rc == 1014 && failureCode != 0xFFFFFFFF) + { + error << "\nCall failure reason " << failureCode; + } + + pCM->mView.rootContext()->setContextProperty( "dialogText", + error.str().c_str() ); + + pCM->SetConnectButtonText( "Connect" ); + } + else + { + pCM->mView.rootContext()->setContextProperty( "dialogText", "Success!" ); + + // Connect button should be updated by state change indication + } + + // Leave the dialog up for 2s + sleep( 2 ); + + pCM->mView.rootContext()->setContextProperty( "windowState", "" ); + + return NULL; +} + +/*=========================================================================== +METHOD: + OnInfosButton (Free Method) + +DESCRIPTION: + Move to the info stats page + +PARAMETERS: + pCM [ I ] - cQTSampleCM object + +RETURN VALUE: + QVariant - always 0 +===========================================================================*/ +QVariant OnInfosButton( cQTSampleCM * pCM ) +{ + pCM->mView.rootContext()->setContextProperty( "windowState", "infos" ); + + return 0; +} + +/*=========================================================================== +METHOD: + OnConnectionsButton (Free Method) + +DESCRIPTION: + Move to the connection stats page + +PARAMETERS: + pCM [ I ] - cQTSampleCM object + +RETURN VALUE: + QVariant - always 0 +===========================================================================*/ +QVariant OnConnectionsButton( cQTSampleCM * pCM ) +{ + // "" is the default state (connection stats page) + pCM->mView.rootContext()->setContextProperty( "windowState", "" ); + + return 0; +} + +/*=========================================================================== +METHOD: + OnConnectButton (Free Method) + +DESCRIPTION: + Start, cancel, or disconnect from a data session + + NOTE: The UI is not updated until this function returns, so the connection + will be established asynchronously + +PARAMETERS: + pCM [ I ] - cQTSampleCM object + +RETURN VALUE: + QVariant - always 0 +===========================================================================*/ +QVariant OnConnectButton( cQTSampleCM * pCM ) +{ + // Double check if there a device connected + if (pCM->mDeviceID.size() == 0 + || pCM->mConnectButtonText.compare( "No Device" ) == 0) + { + TRACE( "No Device" ); + return 0; + } + + // Start a connection + if (pCM->mConnectButtonText.compare( "Connect" ) == 0) + { + pCM->SetConnectButtonText( "Cancel" ); + + // Create a detached thread to start the connection asynchronously + pthread_attr_t attributes; + pthread_attr_init( &attributes ); + pthread_attr_setdetachstate( &attributes, PTHREAD_CREATE_DETACHED ); + + pthread_create( &pCM->mAsyncConnectThreadID, + &attributes, + AsyncConnectThread, + pCM ); + } + else if (pCM->mConnectButtonText.compare( "Cancel" ) == 0) + { + pCM->OnCancelDataSession(); + + pCM->SetConnectButtonText( "Connect" ); + } + else if (pCM->mConnectButtonText.compare( "Disconnect" ) == 0) + { + pCM->OnStopDataSession(); + + pCM->SetConnectButtonText( "Connect" ); + } + else + { + // Externally connected, etc + TRACE( "Unknown connect button state %s", + pCM->mConnectButtonText.c_str() ); + } + + return 0; +} + +/*=========================================================================*/ +// cQTSampleCM Methods +/*=========================================================================*/ + +/*=========================================================================== +METHOD: + Init (Public Method) + +DESCRIPTION: + Initialize GUI + +RETURN VALUE: + bool +===========================================================================*/ +bool cQTSampleCM::Init() +{ + // Use the current screen orientation + mView.setOrientation( QmlApplicationViewer::ScreenOrientationAuto ); + + // The buttons + mView.rootContext()->setContextProperty( "connectButton", + &mConnectButton ); + mView.rootContext()->setContextProperty( "infosButton", + &mInfosButton ); + mView.rootContext()->setContextProperty( "connectionsButton", + &mConnectionsButton ); + + // The input fields + mView.rootContext()->setContextProperty( "apnNameText", &mAPNText ); + mView.rootContext()->setContextProperty( "usernameText", &mUsernameText ); + mView.rootContext()->setContextProperty( "passwordText", &mPasswordText ); + + // Default button value + SetConnectButtonText( "No Device" ); + + // Default state + mView.rootContext()->setContextProperty( "windowState", "" ); + mView.rootContext()->setContextProperty( "dialogText", "" ); + + bool bRC = cSampleCM::Init(); + + mView.setMainQmlFile( "qml/GobiSampleCM/main.qml" ); + mView.show(); + + return bRC; +} + +/*=========================================================================== +METHOD: + Run (Public Method) + +DESCRIPTION: + Run the GUI (blocks until exit) + +RETURN VALUE: + bool +===========================================================================*/ +int cQTSampleCM::Run() +{ + return mApp.exec(); +} + +/*=========================================================================== +METHOD: + Disconnect (Public Method) + +DESCRIPTION: + Calls GobiDisconnect + +RETURN VALUE: + ULONG +===========================================================================*/ +ULONG cQTSampleCM::Disconnect() +{ + SetConnectButtonText( "No device" ); + + return cSampleCM::Disconnect(); +} + +/*=========================================================================== +ETHOD: + OnStartDataSession (Public Method) + +DESCRIPTION: + Updates apn, username, and password input field values before starting + a data session + +PARAMETERS: + pFailureCode [ O ] - Call failure code, if provided + +RETURN VALUE: + ULONG +===========================================================================*/ +ULONG cQTSampleCM::OnStartDataSession( ULONG * pFailureCode ) +{ + // Grab the APN, username, and password + mAPN = mAPNText.getText().toUtf8().constData(); + mUsername = mUsernameText.getText().toUtf8().constData(); + mPassword = mPasswordText.getText().toUtf8().constData(); + + return cSampleCM::OnStartDataSession( pFailureCode ); +} diff --git a/gobi-api/GobiAPI_2013-07-31-1347/GobiSampleCM/QTSampleCM.h b/gobi-api/GobiAPI_2013-07-31-1347/GobiSampleCM/QTSampleCM.h new file mode 100644 index 0000000..37d5993 --- /dev/null +++ b/gobi-api/GobiAPI_2013-07-31-1347/GobiSampleCM/QTSampleCM.h @@ -0,0 +1,458 @@ +/*=========================================================================== +FILE: + QTSampleCM.h + +DESCRIPTION: + QT implementation of the Sample CM + +PUBLIC CLASSES AND METHODS: + cButton + Generic clickable button for QT + cTextInput + Generic text input field for QT + cQTSampleCM + QT implementation of the Sample CM + +Copyright (c) 2013, The Linux Foundation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +===========================================================================*/ + +//--------------------------------------------------------------------------- +// Pragmas +//--------------------------------------------------------------------------- +#pragma once + +//--------------------------------------------------------------------------- +// Include Files +//--------------------------------------------------------------------------- +#include +#include "qmlapplicationviewer.h" +#include +#include + +#include "SampleCM.h" + +// Prototypes +class cQTSampleCM; +void * AsyncConnectThread( void * pData ); +QVariant OnInfosButton( cQTSampleCM * pCM ); +QVariant OnConnectionsButton( cQTSampleCM * pCM ); +QVariant OnConnectButton( cQTSampleCM * pCM ); + +/*=========================================================================*/ +// Class cButton +// Generic clickable button for QT +/*=========================================================================*/ +class cButton : public QObject +{ + Q_OBJECT + +public: + + // Constructor + cButton( cQTSampleCM * pCM, + QVariant (*pOnClick)( cQTSampleCM * ) ) + { + mpCM = pCM; + mpOnClick = pOnClick; + } + +public slots: + + // Function to be run on a click event + QVariant Click() + { + if (mpOnClick != 0) + { + return mpOnClick( mpCM ); + } + + return ""; + } + +protected: + + /* The main object */ + cQTSampleCM * mpCM; + + /* Function to run when clicked */ + QVariant (* mpOnClick)( cQTSampleCM * ); +}; + +/*=========================================================================*/ +// cTextInput +// Generic text input field for QT +/*=========================================================================*/ +class cTextInput : public QObject +{ + Q_OBJECT + Q_PROPERTY( QString text READ getText WRITE setText ) + +public slots: + + // Get the value + QString getText() const + { + return mText; + } + + // Set the value + void setText( const QString & text ) + { + mText = text; + } + +private: + + /* The text */ + QString mText; +}; + +/*=========================================================================*/ +// Class cQTSampleCM +/*=========================================================================*/ +class cQTSampleCM : public cSampleCM +{ + public: + // Constructor + cQTSampleCM( int argc, char ** argv ) + : mApp( argc, argv ), + mConnectButtonText( "No Device" ), + mConnectButton( this, OnConnectButton ), + mInfosButton( this, OnInfosButton ), + mConnectionsButton( this, OnConnectionsButton ) + { } + + // Initialize UI, begin waiting for devices + bool Init(); + + // Run the GUI (blocks until exit) + int Run(); + + // Disconnect + ULONG Disconnect(); + + // Process a start data session request + ULONG OnStartDataSession( ULONG * pFailureCode ); + + // Set mState and the connection button + void SetState( const std::string & state ) + { + cSampleCM::SetState( state ); + + // Update the connection button as well + switch (mSessionState) + { + case eQMIConnectionStatus_Disconnected: + { + SetConnectButtonText( "Connect" ); + + if (mInitialState != eQMIConnectionStatus_Disconnected + && mInitialState != eQMIConnectionStatus_Suspended) + { + // Clear the initial state + mInitialState = eQMIConnectionStatus_Disconnected; + } + } + break; + + case eQMIConnectionStatus_Connected: + { + if (mInitialState != eQMIConnectionStatus_Disconnected + && mInitialState != eQMIConnectionStatus_Suspended) + { + SetConnectButtonText( "External Con" ); + } + else + { + SetConnectButtonText( "Disconnect" ); + } + } + break; + + case eQMIConnectionStatus_Authenticating: + { + if (mInitialState != eQMIConnectionStatus_Disconnected + && mInitialState != eQMIConnectionStatus_Suspended) + { + SetConnectButtonText( "Ext Connecting" ); + } + else + { + SetConnectButtonText( "Cancel" ); + } + } + break; + + case eQMIConnectionStatus_Suspended: + default: + break; + } + + // No more than 12 characters + if (mState.size() > 12) + { + mState.resize( 12 ); + } + + // Note: "state" is already a property, can't duplicate + // using "status" instead + mView.rootContext()->setContextProperty( "status", mState.c_str() ); + } + + // Set mRSSI + void SetRSSI( const std::string & rssi ) + { + cSampleCM::SetRSSI( rssi ); + + mView.rootContext()->setContextProperty( "rssi", mRSSI.c_str() ); + } + + // Set mTech + void SetTech( const std::string & tech ) + { + cSampleCM::SetTech( tech ); + + // No more than 12 characters + if (mTech.size() > 12) + { + mTech.resize( 12 ); + } + + mView.rootContext()->setContextProperty( "tech", mTech.c_str() ); + } + + // Set mRx + void SetRx( const std::string & rx ) + { + cSampleCM::SetRx( rx ); + + mView.rootContext()->setContextProperty( "rx", mRx.c_str() ); + } + + // Set mTx + void SetTx( const std::string & tx ) + { + cSampleCM::SetTx( tx ); + + mView.rootContext()->setContextProperty( "tx", mTx.c_str() ); + } + + // Set mMaxRx + void SetMaxRx( const std::string & maxRx ) + { + cSampleCM::SetMaxRx( maxRx ); + + mView.rootContext()->setContextProperty( "maxRx", mMaxRx.c_str() ); + } + + // Set mMaxTx + void SetMaxTx( const std::string & maxTx ) + { + cSampleCM::SetMaxTx( maxTx ); + + mView.rootContext()->setContextProperty( "maxTx", mMaxTx.c_str() ); + } + + // Set mRoam + void SetRoam( const std::string & roam ) + { + cSampleCM::SetRoam( roam ); + + mView.rootContext()->setContextProperty( "roam", mRoam.c_str() ); + } + + // Set mDuration + void SetDuration( const std::string & duration ) + { + cSampleCM::SetDuration( duration ); + + mView.rootContext()->setContextProperty( "duration", mDuration.c_str() ); + } + + // Set mLifeDuration + void SetLifeDuration( const std::string & lifeDuration ) + { + cSampleCM::SetLifeDuration( lifeDuration ); + + mView.rootContext()->setContextProperty( "lifeDuration", mLifeDuration.c_str() ); + } + + // Set mLifeRx + void SetLifeRx( const std::string & lifeRx ) + { + cSampleCM::SetLifeRx( lifeRx ); + + mView.rootContext()->setContextProperty( "lifeRx", mLifeRx.c_str() ); + } + + // Set mLifeTx + void SetLifeTx( const std::string & lifeTx ) + { + cSampleCM::SetLifeTx( lifeTx ); + + mView.rootContext()->setContextProperty( "lifeTx", mLifeTx.c_str() ); + } + + // Set mManufact + void SetManufact( const std::string & manufact ) + { + cSampleCM::SetManufact( manufact ); + + mView.rootContext()->setContextProperty( "manufact", mManufact.c_str() ); + } + + // Set mModel + void SetModel( const std::string & model ) + { + cSampleCM::SetModel( model ); + + // No more than 20 characters + if (mModel.size() > 20) + { + mModel.resize( 20 ); + } + + mView.rootContext()->setContextProperty( "model", mModel.c_str() ); + } + + // Set mHardware + void SetHardware( const std::string & hardware ) + { + cSampleCM::SetHardware( hardware ); + + mView.rootContext()->setContextProperty( "hardware", mHardware.c_str() ); + } + + // Set mFirmware + void SetFirmware( const std::string & firmware ) + { + cSampleCM::SetFirmware( firmware ); + + // No more than 20 characters + if (mFirmware.size() > 20) + { + mFirmware.resize( 20 ); + } + + mView.rootContext()->setContextProperty( "firmware", mFirmware.c_str() ); + } + + // Set mMDN + void SetMDN( const std::string & mdn ) + { + cSampleCM::SetMDN( mdn ); + + mView.rootContext()->setContextProperty( "mdn", mMDN.c_str() ); + } + + // Set mMIN + void SetMIN( const std::string & min ) + { + cSampleCM::SetMIN( min ); + + mView.rootContext()->setContextProperty( "min", mMIN.c_str() ); + } + + // Set mESN + void SetESN( const std::string & esn ) + { + cSampleCM::SetESN( esn ); + + mView.rootContext()->setContextProperty( "esn", mESN.c_str() ); + } + + // Set mMEID + void SetMEID( const std::string & meid ) + { + cSampleCM::SetMEID( meid ); + + mView.rootContext()->setContextProperty( "meid", mMEID.c_str() ); + } + + // Set mIMEI + void SetIMEI( const std::string & imei ) + { + cSampleCM::SetIMEI( imei ); + + mView.rootContext()->setContextProperty( "imei", mIMEI.c_str() ); + } + + // Set mIMSI + void SetIMSI( const std::string & imsi ) + { + cSampleCM::SetIMSI( imsi ); + + mView.rootContext()->setContextProperty( "imsi", mIMSI.c_str() ); + } + + // Set mConnectButtonText + void SetConnectButtonText( const std::string & connectButtonText ) + { + mConnectButtonText = connectButtonText; + + mView.rootContext()->setContextProperty( "connectButtonText", + connectButtonText.c_str() ); + } + + protected: + + /* QApplication object */ + QApplication mApp; + + /* QmlApplicationViewer object */ + QmlApplicationViewer mView; + + /* APN text input field */ + cTextInput mAPNText; + + /* Username text input field */ + cTextInput mUsernameText; + + /* Password text input field */ + cTextInput mPasswordText; + + /* "Connect" button's text */ + std::string mConnectButtonText; + + /* "Connect" button */ + cButton mConnectButton; + + /* "Info Stats" button */ + cButton mInfosButton; + + /* "Connection Stats" button */ + cButton mConnectionsButton; + + /* Async connection thread ID */ + pthread_t mAsyncConnectThreadID; + + // Friend functions + friend void * AsyncConnectThread( void * pData ); + friend QVariant OnInfosButton( cQTSampleCM * pCM ); + friend QVariant OnConnectionsButton( cQTSampleCM * pCM ); + friend QVariant OnConnectButton( cQTSampleCM * pCM ); +}; diff --git a/gobi-api/GobiAPI_2013-07-31-1347/GobiSampleCM/SampleCM.cpp b/gobi-api/GobiAPI_2013-07-31-1347/GobiSampleCM/SampleCM.cpp new file mode 100644 index 0000000..d54a02d --- /dev/null +++ b/gobi-api/GobiAPI_2013-07-31-1347/GobiSampleCM/SampleCM.cpp @@ -0,0 +1,1734 @@ +/*=========================================================================== +FILE: + SampleCM.cpp + +DESCRIPTION: + Generic class to act as Sample CM interface + +PUBLIC CLASSES AND METHODS: + cSampleCM + Generic class to act as Sample CM interface + +Copyright (c) 2013, The Linux Foundation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +===========================================================================*/ + +//--------------------------------------------------------------------------- +// Include Files +//--------------------------------------------------------------------------- +#include "SampleCM.h" +#include "GobiCMDLL.h" +#include "GobiCMCallback.h" +#include "GobiConnectionMgmtAPIStructs.h" + +#include +#include +#include +#include +#include + +// Global pointer for callbacks to reference +class cSampleCM * gpCM; + +/*=========================================================================*/ +// Free Methods +/*=========================================================================*/ + +/*=========================================================================== +METHOD: + GetTickCount (Free Method) + +DESCRIPTION: + Provide a number for sequencing reference, similar to the windows + ::GetTickCount(). + + NOTE: This number is based on the time since epoc, not + uptime. + +PARAMETERS: + +RETURN VALUE: + ULONGLONG - Number of milliseconds system has been up +===========================================================================*/ +ULONGLONG GetTickCount() +{ + timespec curtime; + clock_gettime( CLOCK_REALTIME, &curtime ); + + ULONGLONG outtime = curtime.tv_sec * 1000LL; + outtime += curtime.tv_nsec / 1000000LL; + + return outtime; +} + +/*=========================================================================== +METHOD: + DeviceDetectionThread (Free Method) + +DESCRIPTION: + Scans for and detects devices + +PARAMETERS: + pData [ I ] - cSampleCM object + +RETURN VALUE: + void * - always NULL +===========================================================================*/ +void * DeviceDetectionThread( void * pData ) +{ + cSampleCM * pCM = (cSampleCM *)pData; + if (pCM == NULL) + { + return NULL; + } + + // Get inotify handle + int inotify = inotify_init(); + if (inotify == -1) + { + TRACE( "inotify_init failed\n" ); + return NULL; + } + + // Start a watch on the /dev directory + int inotifyFlags = IN_CREATE | IN_MODIFY | IN_DELETE; + int watchD = inotify_add_watch( inotify, "/dev/", inotifyFlags ); + if (watchD == -1) + { + TRACE( "inotify_add_watch failed\n" ); + close( inotify ); + return NULL; + } + + // Does a device already exist? + dirent ** ppDevFiles; + + // Yes, scandir really takes a triple pointer for its second param + int numDevs = scandir( "/dev/", &ppDevFiles, NULL, NULL ); + for (int i = 0; i < numDevs; i++) + { + std::string deviceID = "/dev/"; + deviceID += ppDevFiles[i]->d_name; + free( ppDevFiles[i] ); + + if (deviceID.find( "qcqmi" ) != std::string::npos) + { + pCM->Connect( deviceID.c_str() ); + break; + } + } + + // Cleanup from scandir + if (numDevs != -1) + { + free( ppDevFiles ); + } + else + { + TRACE( "Scandir failed\n" ); + } + + // Begin async reading + fd_set inputSet, outputSet; + FD_ZERO( &inputSet ); + FD_SET( pCM->mDeviceDetectionStopPipe[READING], &inputSet ); + FD_SET( inotify, &inputSet ); + int largestFD = std::max( pCM->mDeviceDetectionStopPipe[READING], inotify ); + + while (true) + { + // No FD_COPY() available in android + memcpy( &outputSet, &inputSet, sizeof( fd_set ) ); + + // Wait for data on either the inotify or the stop pipe + int status = select( largestFD + 1, &outputSet, NULL, NULL, NULL ); + if (status <= 0) + { + break; + } + else if (FD_ISSET( pCM->mDeviceDetectionStopPipe[READING], &outputSet ) == true) + { + // Time to close + break; + } + else if (FD_ISSET( inotify, &outputSet ) == true) + { + // Perform a read + BYTE buffer[1024] = { 0 }; + int rc = read( inotify, &buffer[0], 1024 ); + if (rc < (int)sizeof( inotify_event )) + { + continue; + } + + // Typecast the buffer to an inotify event + struct inotify_event * pIEvent = (struct inotify_event *)&buffer[0]; + + // Check the length of the name + if (pIEvent->len < 5) + { + continue; + } + + // Is this a matching device? + if (strncmp( pIEvent->name, "qcqmi", 5 ) != 0) + { + continue; + } + + std::string deviceID = "/dev/"; + deviceID += pIEvent->name; + + if (pIEvent->mask & IN_CREATE + || pIEvent->mask & IN_MODIFY) + { + pCM->Connect( deviceID.c_str() ); + } + + if (pIEvent->mask & IN_DELETE) + { + // Was it the connected device which was removed? + if (pCM->mDeviceID.compare( deviceID ) == 0) + { + pCM->Disconnect(); + } + } + } + } + + // Cleanup + inotify_rm_watch( inotify, watchD ); + close( inotify ); + + return NULL; +} + +/*=========================================================================== +METHOD: + UpdateNetworkInfoThread (Free Method) + +DESCRIPTION: + Updates the network stats every 1s (while device is present) + +PARAMETERS: + pData [ I ] - cSampleCM object + +RETURN VALUE: + void * - always NULL +===========================================================================*/ +void * UpdateNetworkInfoThread( void * pData ) +{ + cSampleCM * pCM = (cSampleCM*)pData; + if (pCM == NULL) + { + return NULL; + } + + // Update once + pCM->CheckConnectedStats(); + + int rc; + do + { + // Update rates and times every 1s + pCM->UpdateRateDisplay(); + pCM->UpdateTimeDisplay(); + + DWORD temp; + rc = pCM->mUpdateNetworkInfoEvent.Wait( 1000, temp ); + + } while (rc == ETIME); + + return NULL; +} + +/*=========================================================================== +METHOD: + ParseStats (Free Method) + +DESCRIPTION: + Parse the stats file and obtain the TX/RX bytes and connection duration + + NOTE: The stats text file consists of one line in the following format: + Total RX Bytes; Total TX Bytes; Total Duration + +PARAMETERS: + line [ I ] - Line to parse + lifeTotalRX [ O ] - Total RX bytes + lifeTotalTX [ O ] - Total TX bytes + lifeTotalDuration [ O ] - Total connection duration + +RETURN VALUE: + bool +===========================================================================*/ +bool ParseStats( + std::istringstream & line, + ULONGLONG & lifeTotalRX, + ULONGLONG & lifeTotalTX, + ULONGLONG & lifeTotalDuration ) +{ + + ULONGLONG temp1, temp2, temp3; + char c1, c2; + + // Attempt to parse into temp variables, skipping whitespace + line >> std::skipws >> temp1 >> c1 >> temp2 >> c2 >> temp3; + + // Was parsing successful? + if (line.fail() == true) + { + TRACE( "failed to parse stats file\n" ); + return false; + } + else + { + TRACE( "read %llu, %llu, %llu", temp1, temp2, temp3 ); + lifeTotalRX = temp1; + lifeTotalTX = temp2; + lifeTotalDuration = temp3; + + return true; + } +} + +/*=========================================================================*/ +// cSampleCM Methods +/*=========================================================================*/ + +/*=========================================================================== +METHOD: + ~cSampleCM (Public Method) + +DESCRIPTION: + Destructor - Stops the data session, + Stops device detection thread, + Writes stats to file + +RETURN VALUE: + None +===========================================================================*/ +cSampleCM::~cSampleCM() +{ + // These functions will most likely fail. That's ok. + OnCancelDataSession(); + OnStopDataSession(); + + Disconnect(); + + // Close device detection thread, if open + if (mDeviceDetectionStopPipe[WRITING] != -1) + { + if (mDeviceDetectionThreadID != 0) + { + BYTE byte = 1; + write( mDeviceDetectionStopPipe[WRITING], &byte, 1 ); + + pthread_join( mDeviceDetectionThreadID, NULL ); + + mDeviceDetectionThreadID = 0; + } + + close( mDeviceDetectionStopPipe[WRITING] ); + close( mDeviceDetectionStopPipe[READING] ); + mDeviceDetectionStopPipe[READING] = -1; + mDeviceDetectionStopPipe[WRITING] = -1; + } + + // Write stats to file + std::string config = getenv( "HOME" ); + config += "/.GobiSampleCMStats.txt"; + + int flags = O_CREAT | O_TRUNC | O_WRONLY; + mode_t mode = S_IRUSR | S_IWUSR; + int statsFile = open( config.c_str(), flags, mode ); + if (statsFile < 0) + { + TRACE( "Unable to create stats file\n" ); + } + else + { + std::ostringstream out; + out << mLifeTotalRX << "; " + << mLifeTotalTX << "; " + << mLifeTotalDuration; + + int rc = write( statsFile, out.str().c_str(), out.str().size() ); + if (rc < 0) + { + TRACE( "Unable to write stats to file\n" ); + } + + close( statsFile ); + } +} + +/*=========================================================================== +METHOD: + Init (Public Method) + +DESCRIPTION: + Initialize GUI, begin waiting for devices + +RETURN VALUE: + bool +===========================================================================*/ +bool cSampleCM::Init() +{ + Disconnect(); + + // Read in the stats file + std::string config = getenv( "HOME" ); + config += "/.GobiSampleCMStats.txt"; + + int statsFile = open( config.c_str(), O_RDONLY ); + if (statsFile < 0) + { + // Non-fatal error + TRACE( "Unable to open config file %s", config.c_str() ); + } + else + { + CHAR buf[100]; + int len = read( statsFile, &buf[0], 100 ); + if (len < 0) + { + // Non-fatal error + TRACE( "failed to read from file\n" ); + } + else + { + std::string asString( &buf[0], len ); + std::istringstream line( asString ); + + ULONGLONG lrx, ltx, ld; + if (ParseStats( line, lrx, ltx, ld ) == true) + { + mLifeTotalRX = lrx; + mLifeTotalTX = ltx; + mLifeTotalDuration = ld; + } + } + + close( statsFile ); + } + + // Life totals will just be zeros if the file was not present + std::ostringstream tmp; + tmp << mLifeTotalRX; + SetLifeRx( tmp.str() ); + + tmp.str( "" ); + tmp << mLifeTotalTX; + SetLifeTx( tmp.str() ); + + tmp.str( "" ); + tmp << std::setfill( '0' ) << std::setw( 2 ) << (mLifeTotalDuration / 3600) % 60 + << std::setw( 1 ) << ":" + << std::setfill( '0' ) << std::setw( 2 ) << (mLifeTotalDuration / 60) % 60 + << std::setw( 1 ) << ":" + << std::setfill( '0' ) << std::setw( 2 ) << mLifeTotalDuration % 60; + SetLifeDuration( tmp.str() ); + + // Set the global pointer, used by callbacks + gpCM = this; + + // Initialize command pipe + int ret = pipe( mDeviceDetectionStopPipe ); + if (ret != 0) + { + // Should never happen, but just in case... + return false; + } + + // Begin scanning for devices + ret = pthread_create( &mDeviceDetectionThreadID, + 0, + DeviceDetectionThread, + this ); + if (ret != 0) + { + return false; + } + + return true; +} + +/*=========================================================================== +METHOD: + Connect (Public Method) + +DESCRIPTION: + Initializes the Gobi API to the current device + +PARAMETERS: + pInterface [ I ] - Interace to connect to + +RETURN VALUE: + ULONG +===========================================================================*/ +ULONG cSampleCM::Connect( LPCSTR pInterface ) +{ + // Are we already connected to a device? + if (mDeviceID.size() != 0) + { + return eGOBI_ERR_MULTIPLE_DEVICES; + } + + // Connect to the device + ULONG rc = mGobi.Connect( pInterface ); + if (rc != eGOBI_ERR_NONE) + { + TRACE( "GobiConnect error %lu\n", rc ); + return rc; + } + + UpdateDeviceInfo(); + UpdateConnectionInfo(); + + // Any connection at this point is an external connection + UpdateSessionState( true, mSessionState ); + + // Success + mDeviceID = pInterface; + return rc; +} + +/*=========================================================================== +METHOD: + Disconnect (Public Method) + +DESCRIPTION: + Calls GobiDisconnect + +RETURN VALUE: + ULONG +===========================================================================*/ +ULONG cSampleCM::Disconnect() +{ + // Stop a data session, if present + OnCancelDataSession(); + OnStopDataSession(); + + mGobi.Disconnect(); + + // Reset state + mSessionID = 0xFFFFFFFF; + mInitialState = 0xFFFFFFFF; + mDataBearerTech = 0; + + // Store life total + mLifeTotalDuration += mTotalDuration; + + // Reset all totals + mStartTime = 0; + mPreviousRX = 0; + mPreviousTX = 0; + mTotalRX = 0; + mTotalTX = 0; + mTotalDuration = 0; + + SetState( "No Device" ); + SetRSSI( "Unknown" ); + SetTech( "Unknown" ); + SetRx( "Unknown" ); + SetTx( "Unknown" ); + SetMaxRx( "Unknown" ); + SetMaxTx( "Unknown" ); + SetRoam( "Unknown" ); + SetDuration( "Unknown" ); + SetLifeDuration( "Unknown" ); + SetLifeRx( "Unknown" ); + SetLifeTx( "Unknown" ); + SetManufact( "Unknown" ); + SetModel( "Unknown" ); + SetHardware( "Unknown" ); + SetFirmware( "Unknown" ); + SetMDN( "Unknown" ); + SetMIN( "Unknown" ); + SetESN( "Unknown" ); + SetMEID( "Unknown" ); + SetIMEI( "Unknown" ); + SetIMSI( "Unknown" ); + + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +ETHOD: + OnStartDataSession (Public Method) + +DESCRIPTION: + Starts a data session + +PARAMETERS: + pFailureCode [ O ] - Call failure code, if provided + +RETURN VALUE: + ULONG +===========================================================================*/ +ULONG cSampleCM::OnStartDataSession( ULONG * pFailureCode ) +{ + mbInitiatedStartDataSession = true; + + // Use provided values, if not empty strings + LPCSTR pAPN = (mAPN.size() == 0) ? 0 : mAPN.c_str(); + LPCSTR pUsername = (mUsername.size() == 0) ? 0 : mUsername.c_str(); + LPCSTR pPassword = (mPassword.size() == 0) ? 0 : mPassword.c_str(); + + ULONG rc = mGobi.StartDataSession( pAPN, + pUsername, + pPassword, + &mSessionID, + pFailureCode ); + if (rc == eGOBI_ERR_NONE) + { + mPreviousRX = 0; + mPreviousTX = 0; + mTotalRX = 0; + mTotalTX = 0; + mTotalDuration = 0; + mStartTime = GetTickCount(); + } + else + { + mbInitiatedStartDataSession = false; + } + + return rc; +} + +/*=========================================================================== +METHOD: + CancelDataSession (Public Method) + +DESCRIPTION: + Cancels an in progress data session request + +RETURN VALUE: + ULONG +===========================================================================*/ +ULONG cSampleCM::OnCancelDataSession() +{ + return mGobi.CancelDataSession(); +} + +/*=========================================================================== +METHOD: + OnStopDataSession (Public Method) + +DESCRIPTION: + Calls WDSStopNetworkInterface + +RETURN VALUE: + ULONG +===========================================================================*/ +ULONG cSampleCM::OnStopDataSession() +{ + if (mSessionID == 0xFFFFFFFF) + { + return eGOBI_ERR_GENERAL; + } + + mbInitiatedStopDataSession = true; + mDataBearerTech = 0; + + ULONG rc = mGobi.StopDataSession( mSessionID ); + mSessionID = 0xFFFFFFFF; + + return rc; +} + +/*=========================================================================== +METHOD: + OnSignalStrengthCBNotification (Internal Method) + +DESCRIPTION: + Handle signal strength callback notification + +PARAMETERS: + signalStr [ I ] - Signal strength + radioInterface [ I ] - Radio interface +===========================================================================*/ +void cSampleCM::OnSignalStrengthCBNotificaion( + INT8 signalStr, + ULONG radioInterface ) +{ + // Update mServiceSignals + mServiceSignals[radioInterface] = signalStr; + + if (mSessionState == eQMIConnectionStatus_Connected) + { + mDataBearerTech = 0; + } + + UpdateSignalAndTech(); +} + +/*=========================================================================== +METHOD: + OnSessionStateCBNotification (Internal Method) + +DESCRIPTION: + Handle session state callback notification + +PARAMETERS: + state [ I ] - Session state +===========================================================================*/ +void cSampleCM::OnSessionStateCBNotification( ULONG state ) +{ + // Was the state change triggered externally? + bool bStateChangeExternal = false; + + // Save session state + if (state == eQMIConnectionStatus_Connected) + { + // Started externally + if (mbInitiatedStartDataSession == false) + { + bStateChangeExternal = true; + mStartTime = GetTickCount(); + } + } + else + { + mDataBearerTech = 0; + + // Stopped externally + if (mbInitiatedStopDataSession == false) + { + // Store all life total variables + mLifeTotalDuration += mTotalDuration; + + // Reset all totals + bStateChangeExternal = true; + mStartTime = 0; + mPreviousRX = 0; + mPreviousTX = 0; + mTotalRX = 0; + mTotalTX = 0; + mTotalDuration = 0; + } + } + + // Update the session state + UpdateSessionState( bStateChangeExternal, state ); + + // Update the signal strength and technology + UpdateSignalAndTech(); + + // Reset to false + mbInitiatedStartDataSession = false; + mbInitiatedStopDataSession = false; +} + +/*=========================================================================== +METHOD: + OnDataBearerCBNotification (Internal Method) + +DESCRIPTION: + Handle data bearer callback notification + +PARAMETERS: + dataBearerTech [ I ] - Data bearer technology +===========================================================================*/ +void cSampleCM::OnDataBearerCBNotification( ULONG dataBearerTech ) +{ + if (dataBearerTech != eQMIDataBearerTechnologies_Unknown) + { + mDataBearerTech = dataBearerTech; + UpdateSignalAndTech(); + } +} + +/*=========================================================================== +METHOD: + OnDataCapsNotification (Internal Method) + +DESCRIPTION: + Handle data capabilities callback notification + +PARAMETERS: + numDataCaps [ I ] - Number of data capabilities + pDataCaps [ I ] - Data Capabilites +===========================================================================*/ +void cSampleCM::OnDataCapsNotification( + ULONG numDataCaps, + eQMINASDataServiceCapabilities2 * pDataCaps ) +{ + // Clear saved data capabilities in order to update + mDataCapabilities.clear(); + + // Populate list with new capabilities + for (ULONG c = 0; c < numDataCaps; c++) + { + ULONG dataCaps = pDataCaps[c]; + if ( (dataCaps != 0xFFFFFFFF) + && (dataCaps != 0) ) + { + mDataCapabilities.push_back( pDataCaps[c] ); + } + } + + UpdateSignalAndTech(); +} + +/*=========================================================================== +METHOD: + OnByteTotalsNotification (Internal Method) + +DESCRIPTION: + Handle byte totals callback notification + +PARAMETERS: + rx [ I ] - received bytes + tx [ I ] - transmitted bytes +===========================================================================*/ +void cSampleCM::OnByteTotalsNotification( ULONGLONG rx, ULONGLONG tx ) +{ + mTotalTX = tx; + mTotalRX = rx; +} + +/*=========================================================================== +METHOD: + UpdateSignalAndTech (Public Method) + +DESCRIPTION: + Update the signal strength and technology display +===========================================================================*/ +void cSampleCM::UpdateSignalAndTech() +{ + std::string radioStr = "Unknown"; + std::string ssStr = "Unknown"; + ULONG radioVal = eQMINASRadioInterfaces_NoneNoService; + + // If connected, use data bearer + if (mDataBearerTech != 0) + { + switch (mDataBearerTech) + { + case eQMIDataBearerTechnologies_CDMA20001x: + radioStr = "CDMA 1xRTT"; + radioVal = eQMINASRadioInterfaces_CDMA20001x; + break; + + case eQMIDataBearerTechnologies_CDMA20001xEVDORev0: + radioStr = "CDMA 1xEVDO Rev 0"; + radioVal = eQMINASRadioInterfaces_CDMA2000HRPD; + break; + + case eQMIDataBearerTechnologies_GPRS: + radioStr = "GRPS"; + radioVal = eQMINASRadioInterfaces_GSM; + break; + + case eQMIDataBearerTechnologies_WCDMA: + radioStr = "WCDMA"; + radioVal = eQMINASRadioInterfaces_UMTS; + break; + + case eQMIDataBearerTechnologies_CDMA20001xEVDORevA: + radioStr = "CDMA 1xEVDO Rev A"; + radioVal = eQMINASRadioInterfaces_CDMA2000HRPD; + break; + + case eQMIDataBearerTechnologies_EGPRS: + radioStr = "EDGE"; + radioVal = eQMINASRadioInterfaces_GSM; + break; + + case eQMIDataBearerTechnologies_HSDPAWCDMA: + radioStr = "HSDPA DL, WCDMA UL"; + radioVal = eQMINASRadioInterfaces_UMTS; + break; + + case eQMIDataBearerTechnologies_WCDMAHSUPA: + radioStr = "WCDMA DL, HSUPA UL"; + radioVal = eQMINASRadioInterfaces_UMTS; + break; + + case eQMIDataBearerTechnologies_HSDPAHSUPA: + radioStr = "HSDPA DL, HSUPA UL"; + radioVal = eQMINASRadioInterfaces_UMTS; + break; + + case eQMIDataBearerTechnologies_LTE: + radioStr = "LTE"; + radioVal = eQMINASRadioInterfaces_LTE; + break; + + case eQMIDataBearerTechnologies_CDMA2000EHRPD: + radioStr = "CDMA 1xEVDO eHRPD"; + radioVal = eQMINASRadioInterfaces_CDMA2000HRPD; + break; + + case eQMIDataBearerTechnologies_HSDPAPlusWCDMA: + radioStr = "HSDPA+ DL, WCDMA UL"; + radioVal = eQMINASRadioInterfaces_UMTS; + break; + + case eQMIDataBearerTechnologies_HSDPAPlusHSUPA: + radioStr = "HSDPA+ DL, HSUPA UL"; + radioVal = eQMINASRadioInterfaces_UMTS; + break; + + case eQMIDataBearerTechnologies_DualCellHSDPAPlusWCDMA: + radioStr = "Dual Cell HSDPA+ DL, WCDMA UL"; + radioVal = eQMINASRadioInterfaces_UMTS; + break; + + case eQMIDataBearerTechnologies_DualCellHSDPAPlusHSUPA: + radioStr = "Dual Cell HSDPA+ DL, HSUPA UL"; + radioVal = eQMINASRadioInterfaces_UMTS; + break; + } + + if ( (radioVal != eQMINASRadioInterfaces_NoneNoService) + && (mServiceSignals.find( radioVal ) != mServiceSignals.end()) + && (mServiceSignals[radioVal] != SCHAR_MAX) ) + { + std::ostringstream temp; + temp << (INT)mServiceSignals[radioVal]; + ssStr = temp.str(); + } + } + else + { + // When not connected we have to pick the most preferred data capability + eQMINASDataServiceCapabilities2 mostPreferredCap + = (eQMINASDataServiceCapabilities2)0xff; + std::list ::const_iterator pIter; + std::list ::const_iterator pDataCapsItr; + + pIter = mPreferredServices.begin(); + + bool bDone = false; + while ( (pIter != mPreferredServices.end()) + && (bDone != true) ) + { + pDataCapsItr = mDataCapabilities.begin(); + while (pDataCapsItr != mDataCapabilities.end()) + { + if (*pIter == *pDataCapsItr) + { + mostPreferredCap = (eQMINASDataServiceCapabilities2)*pIter; + bDone = true; + break; + } + + pDataCapsItr++; + } + + pIter++; + } + + // Determine the best radio interface reported + eQMINASRadioInterfaces preferredRadioIf; + preferredRadioIf = eQMINASRadioInterfaces_NoneNoService; + + if (mServiceSignals.find( eQMINASRadioInterfaces_LTE ) != mServiceSignals.end()) + { + preferredRadioIf = eQMINASRadioInterfaces_LTE; + } + else if (mServiceSignals.find( eQMINASRadioInterfaces_CDMA2000HRPD ) != mServiceSignals.end()) + { + preferredRadioIf = eQMINASRadioInterfaces_CDMA2000HRPD; + } + else if (mServiceSignals.find( eQMINASRadioInterfaces_CDMA20001x ) != mServiceSignals.end()) + { + preferredRadioIf = eQMINASRadioInterfaces_CDMA20001x; + } + else if (mServiceSignals.find( eQMINASRadioInterfaces_UMTS ) != mServiceSignals.end()) + { + preferredRadioIf = eQMINASRadioInterfaces_UMTS; + } + else if (mServiceSignals.find( eQMINASRadioInterfaces_GSM ) != mServiceSignals.end()) + { + preferredRadioIf = eQMINASRadioInterfaces_GSM; + } + + radioStr = "Unknown"; + ssStr = "Unknown"; + radioVal = eQMINASRadioInterfaces_NoneNoService; + + // Determine sig strength and radio interface to display based on + // most preferred data capabilities + switch (preferredRadioIf) + { + case eQMINASRadioInterfaces_CDMA2000HRPD: + radioStr = "CDMA 1xEVDO"; + if ( (mostPreferredCap == eQMINASDataServiceCapabilities2_CDMA1xEVDORevB) + || (mostPreferredCap == eQMINASDataServiceCapabilities2_CDMA1xEVDORevA) + || (mostPreferredCap == eQMINASDataServiceCapabilities2_CDMA1xEVDORev0) ) + { + radioVal = eQMINASRadioInterfaces_CDMA2000HRPD; + if ( (mServiceSignals.find( radioVal ) != mServiceSignals.end()) + && (mServiceSignals[radioVal] != SCHAR_MAX) ) + { + std::ostringstream temp; + temp << (INT)mServiceSignals[radioVal]; + ssStr = temp.str(); + } + } + break; + + case eQMINASRadioInterfaces_CDMA20001x: + radioStr = "CDMA 1xRTT"; + if (mostPreferredCap == eQMINASDataServiceCapabilities2_CDMA) + { + radioVal = eQMINASRadioInterfaces_CDMA20001x; + if ( (mServiceSignals.find( radioVal ) != mServiceSignals.end()) + && (mServiceSignals[radioVal] != SCHAR_MAX) ) + { + std::ostringstream temp; + temp << (INT)mServiceSignals[radioVal]; + ssStr = temp.str(); + } + } + break; + + case eQMINASRadioInterfaces_UMTS: + radioStr = "WCDMA"; + if ( (mostPreferredCap == eQMINASDataServiceCapabilities2_DCHSDPAPlus) + || (mostPreferredCap == eQMINASDataServiceCapabilities2_HSDPAPlus) + || (mostPreferredCap == eQMINASDataServiceCapabilities2_HSDPA) + || (mostPreferredCap == eQMINASDataServiceCapabilities2_HSUPA) + || (mostPreferredCap == eQMINASDataServiceCapabilities2_WCDMA) ) + { + radioVal = eQMINASRadioInterfaces_UMTS; + if ( (mServiceSignals.find( radioVal ) != mServiceSignals.end()) + && (mServiceSignals[radioVal] != SCHAR_MAX) ) + { + std::ostringstream temp; + temp << (INT)mServiceSignals[radioVal]; + ssStr = temp.str(); + } + } + break; + + case eQMINASRadioInterfaces_GSM: + radioStr = "GSM"; + if ( (mostPreferredCap == eQMINASDataServiceCapabilities2_GPRS) + || (mostPreferredCap == eQMINASDataServiceCapabilities2_EGPRS) + || (mostPreferredCap == eQMINASDataServiceCapabilities2_GSM) ) + { + radioVal = eQMINASRadioInterfaces_GSM; + if ( (mServiceSignals.find( radioVal ) != mServiceSignals.end()) + && (mServiceSignals[radioVal] != SCHAR_MAX) ) + { + std::ostringstream temp; + temp << (INT)mServiceSignals[radioVal]; + ssStr = temp.str(); + } + } + break; + + case eQMINASRadioInterfaces_LTE: + radioStr = "LTE"; + if (mostPreferredCap == eQMINASDataServiceCapabilities2_LTE) + { + radioVal = eQMINASRadioInterfaces_LTE; + if ( (mServiceSignals.find( radioVal ) != mServiceSignals.end()) + && (mServiceSignals[radioVal] != SCHAR_MAX) ) + { + std::ostringstream temp; + temp << (INT)mServiceSignals[radioVal]; + ssStr = temp.str(); + } + } + break; + + case eQMINASRadioInterfaces_NoneNoService: + if ( (mServiceSignals.find( eQMINASRadioInterfaces_CDMA2000HRPD ) != mServiceSignals.end()) + && (mServiceSignals[eQMINASRadioInterfaces_CDMA2000HRPD] != SCHAR_MAX) ) + { + radioStr = "CDMA 1xEVDO"; + std::ostringstream temp; + temp << (INT)mServiceSignals[eQMINASRadioInterfaces_CDMA2000HRPD]; + ssStr = temp.str(); + } + else if ( (mServiceSignals.find( eQMINASRadioInterfaces_CDMA20001x ) != mServiceSignals.end()) + && (mServiceSignals[eQMINASRadioInterfaces_CDMA20001x] != SCHAR_MAX) ) + { + radioStr = "CDMA 1xRTT"; + std::ostringstream temp; + temp << (INT)mServiceSignals[eQMINASRadioInterfaces_CDMA20001x]; + ssStr = temp.str(); + } + else if ( (mServiceSignals.find( eQMINASRadioInterfaces_UMTS ) != mServiceSignals.end()) + && (mServiceSignals[eQMINASRadioInterfaces_UMTS] != SCHAR_MAX) ) + { + radioStr = "WCDMA"; + std::ostringstream temp; + temp << (INT)mServiceSignals[eQMINASRadioInterfaces_UMTS]; + ssStr = temp.str(); + } + else if ( (mServiceSignals.find( eQMINASRadioInterfaces_GSM ) != mServiceSignals.end()) + && (mServiceSignals[eQMINASRadioInterfaces_GSM] != SCHAR_MAX) ) + { + radioStr = "GSM"; + std::ostringstream temp; + temp << (INT)mServiceSignals[eQMINASRadioInterfaces_GSM]; + ssStr = temp.str(); + } + else if ( (mServiceSignals.find( eQMINASRadioInterfaces_LTE ) != mServiceSignals.end()) + && (mServiceSignals[eQMINASRadioInterfaces_LTE] != SCHAR_MAX) ) + { + radioStr = "LTE"; + std::ostringstream temp; + temp << (INT)mServiceSignals[eQMINASRadioInterfaces_LTE]; + ssStr = temp.str(); + } + break; + + default: + radioStr = "Unknown"; + ssStr = "Unknown"; + } + } + + SetRSSI( ssStr ); + SetTech( radioStr ); +} + +/*=========================================================================== +METHOD: + UpdateSessionState (Public Method) + +DESCRIPTION: + Update the session state display + Start/stop UpdateNetworkInfo thread + +PARAMETERS: + bExternal [ I ] - Was the state change triggered externally + state [ I ] - State of session + +RETURN VALUE: + None +===========================================================================*/ +void cSampleCM::UpdateSessionState( + bool bExternal, + ULONG state ) +{ + mSessionState = state; + + if (bExternal == true) + { + mInitialState = state; + } + + LPCSTR pState = "Unknown"; + switch (state) + { + // Disconnected + case 1: + { + pState = "Disconnected"; + + // Stop the network info thread, if running + if (mUpdateNetworkInfoThreadID != 0) + { + mUpdateNetworkInfoEvent.Set( 0 ); + + pthread_join( mUpdateNetworkInfoThreadID, NULL ); + mUpdateNetworkInfoThreadID = 0; + + mLifeTotalDuration += mTotalDuration; + } + + // Reset all totals + mPreviousRX = 0; + mPreviousTX = 0; + mTotalRX = 0; + mTotalTX = 0; + mTotalDuration = 0; + mStartTime = 0; + + UpdateRateDisplay(); + UpdateTimeDisplay(); + } + break; + + // Connected + case 2: + { + if (bExternal == true) + { + pState = "External Con"; + } + else + { + pState = "Connected"; + } + + // Start the network info thread, if not running + if (mUpdateNetworkInfoThreadID == 0) + { + // Begin updating network info + int rc = pthread_create( &mUpdateNetworkInfoThreadID, + 0, + UpdateNetworkInfoThread, + this ); + if (rc != 0) + { + TRACE( "error starting network info thread\n" ); + } + } + } + break; + + // Suspended + case 3: + pState = "Suspended"; + break; + + // Connecting + case 4: + if (bExternal == true) + { + pState = "Ext Connecting"; + } + else + { + pState = "Connecting"; + } + break; + } + + SetState( pState ); +} + +/*=========================================================================== +METHOD: + UpdateRateDisplay (Public Method) + +DESCRIPTION: + Calculate and update the tx, rx rates being displayed + +PARAMETERS: + None + +RETURN VALUE: + None +===========================================================================*/ +void cSampleCM::UpdateRateDisplay() +{ + // Update TX/RX Bytes + ULONGLONG deltaRX = 0; + ULONGLONG deltaTX = 0; + + // Only update rates if connected + if (mSessionState == eQMIConnectionStatus_Connected) + { + // First time through, don't use the deltas + if (mTotalRX != 0) + { + deltaRX = mTotalRX - mPreviousRX; + } + + if (mTotalTX != 0) + { + deltaTX = mTotalTX - mPreviousTX; + } + + // Update life total byte variables + mLifeTotalRX += deltaRX; + mLifeTotalTX += deltaTX; + + mPreviousRX = mTotalRX; + mPreviousTX = mTotalTX; + } + + std::ostringstream tmp; + tmp << deltaRX; + SetRx( tmp.str() ); + + tmp.str( "" ); + tmp << deltaTX; + SetTx( tmp.str() ); + + tmp.str( "" ); + tmp << mLifeTotalRX; + SetLifeRx( tmp.str() ); + + tmp.str( "" ); + tmp << mLifeTotalTX; + SetLifeTx( tmp.str() ); +} + +/*=========================================================================== +METHOD: + UpdateTimeDisplay (Public Method) + +DESCRIPTION: + Calculate and update the connection time being displayed + +PARAMETERS: + None + +RETURN VALUE: + None +===========================================================================*/ +void cSampleCM::UpdateTimeDisplay() +{ + DWORD elapsedTime = 0; + DWORD lifeTotalTime = 0; + + // Update session duration + if ( (mSessionState == eQMIConnectionStatus_Connected) + && (mStartTime != 0) ) + { + // Convert ms to seconds + mTotalDuration = (GetTickCount() - mStartTime) / 1000; + elapsedTime = (DWORD)mTotalDuration; + lifeTotalTime = (DWORD)(mLifeTotalDuration + mTotalDuration); + } + else + { + elapsedTime = 0; + lifeTotalTime = (DWORD)mLifeTotalDuration; + } + + std::ostringstream timeStr; + + // Format both into hh:mm:ss + // "%02d:%02d:%02d" + timeStr << std::setfill( '0' ) << std::setw( 2 ) << (elapsedTime / 3600) % 60 + << std::setw( 1 ) << ":" + << std::setfill( '0' ) << std::setw( 2 ) << (elapsedTime / 60) % 60 + << std::setw( 1 ) << ":" + << std::setfill( '0' ) << std::setw( 2 ) << elapsedTime % 60; + SetDuration( timeStr.str() ); + + timeStr.str( "" ); + timeStr << std::setfill( '0' ) << std::setw( 2 ) << (lifeTotalTime / 3600) % 60 + << std::setw( 1 ) << ":" + << std::setfill( '0' ) << std::setw( 2 ) << (lifeTotalTime / 60) % 60 + << std::setw( 1 ) << ":" + << std::setfill( '0' ) << std::setw( 2 ) << lifeTotalTime % 60; + SetLifeDuration( timeStr.str() ); +} + +/*=========================================================================== +METHOD: + CheckConnectedStats (Public Method) + +DESCRIPTION: + Check stats which are only valid during a connection +===========================================================================*/ +void cSampleCM::CheckConnectedStats() +{ + ULONG rc = mGobi.GetDataBearerTechnology( &mDataBearerTech ); + if (rc != eGOBI_ERR_NONE || mDataBearerTech == ULONG_MAX) + { + TRACE( "GetDataBearerTechnology error %lu\n", rc ); + return; + } + + ULONGLONG duration; + rc = mGobi.GetSessionDuration( &duration ); + if (rc != eGOBI_ERR_NONE) + { + TRACE( "GetSessionDuration error %lu\n", rc ); + return; + } + + mStartTime = GetTickCount() - duration; + + UpdateSignalAndTech(); +} + +/*=========================================================================== +METHOD: + UpdateDeviceInfo (Public Method) + +DESCRIPTION: + Update the device info stats +===========================================================================*/ +void cSampleCM::UpdateDeviceInfo() +{ + ULONG status = 0; + + BYTE strSz1 = 255; + BYTE strSz2 = 255; + BYTE strSz3 = 255; + CHAR str1[255]; + CHAR str2[255]; + CHAR str3[255]; + str1[0] = 0; + str2[0] = 0; + str3[0] = 0; + + // Get manufacturer + status = mGobi.GetManufacturer( strSz1, str1 ); + if (status != 0) + { + TRACE( "GetManufacturer() = %lu\n", status ); + return; + } + + if (str1[0] != 0) + { + SetManufact( &str1[0] ); + } + + // Get model ID + str1[0] = 0; + status = mGobi.GetModelID( strSz1, str1 ); + if (status != 0) + { + TRACE( "GetModelID() = %lu\n", status ); + return; + } + + if (str1[0] != 0) + { + std::ostringstream tmp; + if (strncmp( "88", &str1[0], 2 ) == 0) + { + tmp << "Gobi MDM-1000"; + } + else if (strncmp( "12", &str1[0], 2 ) == 0) + { + tmp << "Gobi MDM-2000"; + } + else + { + tmp << "Unknown (" << &str1[0] << ")"; + } + + SetModel( tmp.str() ); + } + + // Get firmware revision + str1[0] = 0; + status = mGobi.GetFirmwareRevision( strSz1, str1 ); + if (status != 0) + { + TRACE( "GetFirmwareRevision() = %lu\n", status ); + return; + } + + if (str1[0] != 0) + { + SetFirmware( &str1[0] ); + } + + // Get hardware revision + str1[0] = 0; + status = mGobi.GetHardwareRevision( strSz1, str1 ); + if (status != 0) + { + TRACE( "GetHardwareRevision() = %lu\n", status ); + return; + } + + if (str1[0] != 0) + { + SetHardware( &str1[0] ); + } + + // Get MDN/MIN + str1[0] = 0; + str2[0] = 0; + status = mGobi.GetVoiceNumber( strSz1, str1, strSz2, str2 ); + if (status != 0) + { + if (status == 1016) + { + // Not provisioned + SetMDN( "Not provisioned" ); + SetMIN( "Not provisioned" ); + } + else + { + TRACE( "GetVoiceNumber() = %lu\n", status ); + return; + } + } + + if (str1[0] != 0) + { + SetMDN( &str1[0] ); + } + + if (str2[0] != 0) + { + SetMIN( &str2[0] ); + } + + // Get ESN/IMEI/MEID + str1[0] = 0; + str2[0] = 0; + str3[0] = 0; + status = mGobi.GetSerialNumbers( strSz1, + str1, + strSz2, + str2, + strSz3, + str3 ); + if (status != 0) + { + if (status == 1016) + { + // Not provisioned + SetESN( "Not provisioned" ); + SetIMEI( "Not provisioned" ); + SetMEID( "Not provisioned" ); + } + else + { + TRACE( "GetSerialNumbers() = %lu\n", status ); + return; + } + } + + if (str1[0] != 0) + { + SetESN( &str1[0] ); + } + + if (str2[0] != 0) + { + SetIMEI( &str2[0] ); + } + + if (str3[0] != 0) + { + SetMEID( &str3[0] ); + } + + // Get IMSI + str1[0] = 0; + status = mGobi.GetIMSI( strSz1, str1 ); + if (status != 0) + { + if (status == 1016) + { + // Not provisioned + SetIMSI( "Not provisioned" ); + } + else + { + TRACE( "GetIMSI() = %lu\n", status ); + return; + } + } + + if (str1[0] != 0) + { + SetIMSI( &str1[0] ); + } +} + +/*=========================================================================== +METHOD: + UpdateConnectionInfo (Public Method) + +DESCRIPTION: + Update the connection info stats +===========================================================================*/ +void cSampleCM::UpdateConnectionInfo() +{ + // Re-usable buffer + std::ostringstream tmp; + + // Get session state + ULONG rc = mGobi.GetSessionState( &mSessionState ); + if (rc != eGOBI_ERR_NONE || mSessionState == ULONG_MAX) + { + TRACE( "GetSessionState error %lu\n", rc ); + return; + } + + UpdateSessionState( mSessionID != 0xFFFFFFFF, mSessionState ); + + // If connected, refresh data bearer technology and session duration + if (mSessionState == eQMIConnectionStatus_Connected) + { + CheckConnectedStats(); + } + + INT8 signalStrengths[MAX_SIGNALS]; + ULONG radioInterfaces[MAX_SIGNALS]; + + // Get the signal strengths + rc = mGobi.GetSignalStrengths( &signalStrengths[0], + &radioInterfaces[0] ); + if (rc != eGOBI_ERR_NONE && rc != eGOBI_ERR_NO_SIGNAL) + { + TRACE( "GetSignalStrengths error %lu\n", rc ); + return; + } + + // Map signal strengths to RadioIf types + for (ULONG s = 0; s < MAX_SIGNALS; s++) + { + INT8 signal = signalStrengths[s]; + + switch (radioInterfaces[s]) + { + case eQMINASRadioInterfaces_NoneNoService: + mServiceSignals[eQMINASRadioInterfaces_NoneNoService] = signal; + break; + + case eQMINASRadioInterfaces_CDMA20001x: + mServiceSignals[eQMINASRadioInterfaces_CDMA20001x] = signal; + break; + + case eQMINASRadioInterfaces_CDMA2000HRPD: + mServiceSignals[eQMINASRadioInterfaces_CDMA2000HRPD] = signal; + break; + + case eQMINASRadioInterfaces_AMPS: + mServiceSignals[eQMINASRadioInterfaces_AMPS] = signal; + break; + + case eQMINASRadioInterfaces_GSM: + mServiceSignals[eQMINASRadioInterfaces_GSM] = signal; + break; + + case eQMINASRadioInterfaces_UMTS: + mServiceSignals[eQMINASRadioInterfaces_UMTS] = signal; + break; + + case eQMINASRadioInterfaces_LTE: + mServiceSignals[eQMINASRadioInterfaces_LTE] = signal; + break; + } + } + + ULONG curTX = 0; + ULONG curRX = 0; + ULONG maxTX = 0; + ULONG maxRX = 0; + + // Get the connection rate + rc = mGobi.GetConnectionRate( &curTX, &curRX, &maxTX, &maxRX ); + if (rc != 0) + { + TRACE( "GetConnectionRate error %lu\n", rc ); + return; + } + + // Store the max data rates + tmp.str( "" ); + tmp << maxRX; + SetMaxRx( tmp.str() ); + + tmp.str( "" ); + tmp << maxTX; + SetMaxTx( tmp.str() ); + + + + ULONG dataCapabilities[MAX_DATA_CAPABILITIES]; + WORD srvMCC = 0; + WORD srvMNC = 0; + BYTE srvNameSize = 255; + CHAR srvName[255]; + srvName[0] = 0; + WORD sid = 0; + WORD nid = 0; + ULONG roam = 0; + + // Get the serving network info + rc = mGobi.GetServingNetwork( &dataCapabilities[0], + &srvMCC, + &srvMNC, + srvNameSize, + &srvName[0], + &sid, + &nid, + &roam ); + if (rc != 0) + { + TRACE( "GetServingNetwork error %lu\n", rc ); + return; + } + + // Store data capabilities + for (ULONG c = 0; c < MAX_DATA_CAPABILITIES; c++) + { + if ( (dataCapabilities[c] != ULONG_MAX) + && (dataCapabilities[c] != 0) ) + { + mDataCapabilities.push_back( dataCapabilities[c] ); + } + } + + if (roam == 0xFFFFFFFF) + { + SetRoam( "Unknown" ); + } + else + { + tmp.str( "" ); + tmp << roam; + SetRoam( tmp.str() ); + } + + // Update the signal strength and technology fields + if (mSessionState != eQMIConnectionStatus_Connected) + { + mDataBearerTech = 0; + } + + UpdateSignalAndTech(); + + // Setup callbacks + rc = mGobi.SetWDSEventReportCB( WDSEventReportCallback, 1 ); + if (rc != eGOBI_ERR_NONE) + { + TRACE( "SetWDSEventReportCB error %lu\n", rc ); + return; + } + + rc = mGobi.SetWDSSessionStateCB( WDSSessionStateCallback ); + if (rc != eGOBI_ERR_NONE) + { + TRACE( "SetWDSSessionStateCB error %lu\n", rc ); + return; + } + + BYTE thresSz = 5; + INT8 thres[5] = {-90, -85, -80, -75, -70}; + rc = mGobi.SetNASEventReportCB( NASEventReportCallback, + thresSz, + &thres[0] ); + if (rc != eGOBI_ERR_NONE) + { + TRACE( "SetNASEventReportCB error %lu\n", rc ); + return; + } + + rc = mGobi.SetNASServingSystemCB( NASServingSystemCallback ); + if (rc != eGOBI_ERR_NONE) + { + TRACE( "SetNASServingSystemCB error %lu\n", rc ); + return; + } +} diff --git a/gobi-api/GobiAPI_2013-07-31-1347/GobiSampleCM/SampleCM.h b/gobi-api/GobiAPI_2013-07-31-1347/GobiSampleCM/SampleCM.h new file mode 100644 index 0000000..b116fea --- /dev/null +++ b/gobi-api/GobiAPI_2013-07-31-1347/GobiSampleCM/SampleCM.h @@ -0,0 +1,397 @@ +/*=========================================================================== +FILE: + SampleCM.h + +DESCRIPTION: + Generic class to act as Sample CM interface + +PUBLIC CLASSES AND METHODS: + cSampleCM + Generic class to act as Sample CM interface + +Copyright (c) 2013, The Linux Foundation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +===========================================================================*/ + +//--------------------------------------------------------------------------- +// Pragmas +//--------------------------------------------------------------------------- +#pragma once + +//--------------------------------------------------------------------------- +// Include Files +//--------------------------------------------------------------------------- +#include "StdAfx.h" +#include "GobiCMDLL.h" +#include "Event.h" + +#include +#include +#include + +// Prototypes +void * DeviceDetectionThread( void * pData ); +void * UpdateNetworkInfo( void * pData ); + +// A global pointer to the CM, used by the callbacks +extern class cSampleCM * gpCM; + +/*=========================================================================*/ +// Class cSampleCM +/*=========================================================================*/ +class cSampleCM +{ + public: + // Constructor + cSampleCM() + : mDeviceID(), + mSessionState( 0 ), + mSessionID( 0xFFFFFFFF ), + mInitialState( 0xFFFFFFFF ), + mStartTime( 0 ), + mPreviousRX( 0 ), + mPreviousTX( 0 ), + mTotalRX( 0 ), + mTotalTX( 0 ), + mLifeTotalRX( 0 ), + mLifeTotalTX( 0 ), + mCurrentDuration( 0 ), + mTotalDuration( 0 ), + mLifeTotalDuration( 0 ), + mbInitiatedStartDataSession( false ), + mbInitiatedStopDataSession( false ), + mDataBearerTech( eQMIDataBearerTechnologies_Unknown ), + mDeviceDetectionThreadID( 0 ), + mUpdateNetworkInfoThreadID( 0 ) + { + mDeviceDetectionStopPipe[READING] = -1; + mDeviceDetectionStopPipe[WRITING] = -1; + + // Create an ordered list of service preferences + mPreferredServices.push_back( eQMINASDataServiceCapabilities2_CDMA1xEVDORevB ); + mPreferredServices.push_back( eQMINASDataServiceCapabilities2_CDMA1xEVDORevA ); + mPreferredServices.push_back( eQMINASDataServiceCapabilities2_CDMA1xEVDORev0 ); + mPreferredServices.push_back( eQMINASDataServiceCapabilities2_CDMA ); + mPreferredServices.push_back( eQMINASDataServiceCapabilities2_DCHSDPAPlus ); + mPreferredServices.push_back( eQMINASDataServiceCapabilities2_HSDPAPlus ); + mPreferredServices.push_back( eQMINASDataServiceCapabilities2_HSDPA ); + mPreferredServices.push_back( eQMINASDataServiceCapabilities2_WCDMA ); + mPreferredServices.push_back( eQMINASDataServiceCapabilities2_EGPRS ); + mPreferredServices.push_back( eQMINASDataServiceCapabilities2_GPRS ); + mPreferredServices.push_back( eQMINASDataServiceCapabilities2_GSM ); + } + + // Destructor + ~cSampleCM(); + + // Initialize UI, begin waiting for devices + virtual bool Init(); + + // Connect to a device and send initial callback registrations + virtual ULONG Connect( LPCSTR pInterface ); + + // Disconnect from a device and set members as "Unknown" + virtual ULONG Disconnect(); + + // Process a start data session request + virtual ULONG OnStartDataSession( ULONG * pFailureCode ); + + // Process a cancel data session request + virtual ULONG OnCancelDataSession(); + + // Process a stop data session request + virtual ULONG OnStopDataSession(); + + // Set mState + virtual void SetState( const std::string & state ) + { + mState = state; + } + + // Set mRSSI + virtual void SetRSSI( const std::string & rssi ) + { + mRSSI = rssi; + } + + // Set mTech + virtual void SetTech( const std::string & tech ) + { + mTech = tech; + } + + // Set mRx + virtual void SetRx( const std::string & rx ) + { + mRx = rx; + } + + // Set mTx + virtual void SetTx( const std::string & tx ) + { + mTx = tx; + } + + // Set mMaxRx + virtual void SetMaxRx( const std::string & maxRx ) + { + mMaxRx = maxRx; + } + + // Set mMaxTx + virtual void SetMaxTx( const std::string & maxTx ) + { + mMaxTx = maxTx; + } + + // Set mRoam + virtual void SetRoam( const std::string & roam ) + { + mRoam = roam; + } + + // Set mDuration + virtual void SetDuration( const std::string & duration ) + { + mDuration = duration; + } + + // Set mLifeDuration + virtual void SetLifeDuration( const std::string & lifeDuration ) + { + mLifeDuration = lifeDuration; + } + + // Set mLifeRx + virtual void SetLifeRx( const std::string & lifeRx ) + { + mLifeRx = lifeRx; + } + + // Set mLifeTx + virtual void SetLifeTx( const std::string & lifeTx ) + { + mLifeTx = lifeTx; + } + + // Set mManufact + virtual void SetManufact( const std::string & manufact ) + { + mManufact = manufact; + } + + // Set mModel + virtual void SetModel( const std::string & model ) + { + mModel = model; + } + + // Set mHardware + virtual void SetHardware( const std::string & hardware ) + { + mHardware = hardware; + } + + // Set mFirmware + virtual void SetFirmware( const std::string & firmware ) + { + mFirmware = firmware; + } + + // Set mMDN + virtual void SetMDN( const std::string & mdn ) + { + mMDN = mdn; + } + + // Set mMIN + virtual void SetMIN( const std::string & min ) + { + mMIN = min; + } + + // Set mESN + virtual void SetESN( const std::string & esn ) + { + mESN = esn; + } + + // Set mMEID + virtual void SetMEID( const std::string & meid ) + { + mMEID = meid; + } + + // Set mIMEI + virtual void SetIMEI( const std::string & imei ) + { + mIMEI = imei; + } + + // Set mIMSI + virtual void SetIMSI( const std::string & imsi ) + { + mIMSI = imsi; + } + + // Handle signal strength callback notification + void OnSignalStrengthCBNotificaion( + INT8 signalStr, + ULONG radioInterface ); + + // Handle session state callback notification + void OnSessionStateCBNotification( ULONG state ); + + // Handle data bearer callback notification + void OnDataBearerCBNotification( ULONG dataBearerTech ); + + // Handle data capabilities callback notification + void OnDataCapsNotification( + ULONG numDataCaps, + eQMINASDataServiceCapabilities2 * pDataCaps ); + + // Handle byte totals callback notification + void OnByteTotalsNotification( ULONGLONG rx, ULONGLONG tx ); + + // Update the signal strength and technology + void UpdateSignalAndTech(); + + // Update the session state + void UpdateSessionState( + bool bExternal, + ULONG state ); + + // Calculate and update the connection time being displayed + void UpdateTimeDisplay(); + + // Calculate and update the tx and rx rates being displayed + void UpdateRateDisplay(); + + // Check data bearer and duration, which are only available while + // connected + void CheckConnectedStats(); + + // Update the device info stats + void UpdateDeviceInfo(); + + // Update the Connection Stats + void UpdateConnectionInfo(); + + protected: + + /* Class for interfacing with Gobi API */ + cGobiCMDLL mGobi; + + /* Connected device's ID */ + std::string mDeviceID; + + /* All the display elements */ + std::string mState; + std::string mRSSI; + std::string mTech; + std::string mRx; + std::string mTx; + std::string mMaxRx; + std::string mMaxTx; + std::string mRoam; + std::string mDuration; + std::string mLifeDuration; + std::string mLifeRx; + std::string mLifeTx; + std::string mManufact; + std::string mModel; + std::string mHardware; + std::string mFirmware; + std::string mMDN; + std::string mMIN; + std::string mESN; + std::string mMEID; + std::string mIMEI; + std::string mIMSI; + + /* All the input elements */ + std::string mAPN; + std::string mUsername; + std::string mPassword; + + /* Session state */ + ULONG mSessionState; + + /* Data session ID */ + ULONG mSessionID; + + /* Initial state, used to determine if the connection + was initiated internally or externally */ + ULONG mInitialState; + + /* Preferred service order */ + std::list mPreferredServices; + + /* Stores the time that connection was started */ + ULONGLONG mStartTime; + + /* Stores the connection rates updated by callbacks */ + ULONGLONG mPreviousRX; + ULONGLONG mPreviousTX; + ULONGLONG mTotalRX; + ULONGLONG mTotalTX; + ULONGLONG mLifeTotalRX; + ULONGLONG mLifeTotalTX; + + // Current and total durations + ULONGLONG mCurrentDuration; + ULONGLONG mTotalDuration; + ULONGLONG mLifeTotalDuration; + + /* Did we initiate a start data session? */ + bool mbInitiatedStartDataSession; + + /* Did we initiate a stop data session? */ + bool mbInitiatedStopDataSession; + + /* Current signal map */ + std::map mServiceSignals; + + /* Current data bearer technology */ + ULONG mDataBearerTech; + + /* Current data capabilities */ + std::list mDataCapabilities; + + /* Handle to the device detection thread */ + pthread_t mDeviceDetectionThreadID; + int mDeviceDetectionStopPipe[2]; + + // Device detection "thread" + friend void * DeviceDetectionThread( void * pData ); + + /* Handle to the UpdateNetworkInfo thread */ + pthread_t mUpdateNetworkInfoThreadID; + cEvent mUpdateNetworkInfoEvent; + + // Async Network info updater + friend void * UpdateNetworkInfoThread( void * pData ); +}; diff --git a/gobi-api/GobiAPI_2013-07-31-1347/GobiSampleCM/android/assets/qml/GobiSampleCM/Connect.png b/gobi-api/GobiAPI_2013-07-31-1347/GobiSampleCM/android/assets/qml/GobiSampleCM/Connect.png new file mode 100644 index 0000000..903d85f Binary files /dev/null and b/gobi-api/GobiAPI_2013-07-31-1347/GobiSampleCM/android/assets/qml/GobiSampleCM/Connect.png differ diff --git a/gobi-api/GobiAPI_2013-07-31-1347/GobiSampleCM/android/assets/qml/GobiSampleCM/Info.png b/gobi-api/GobiAPI_2013-07-31-1347/GobiSampleCM/android/assets/qml/GobiSampleCM/Info.png new file mode 100644 index 0000000..69d7cbb Binary files /dev/null and b/gobi-api/GobiAPI_2013-07-31-1347/GobiSampleCM/android/assets/qml/GobiSampleCM/Info.png differ diff --git a/gobi-api/GobiAPI_2013-07-31-1347/GobiSampleCM/android/assets/qml/GobiSampleCM/main.qml b/gobi-api/GobiAPI_2013-07-31-1347/GobiSampleCM/android/assets/qml/GobiSampleCM/main.qml new file mode 100644 index 0000000..904cce0 --- /dev/null +++ b/gobi-api/GobiAPI_2013-07-31-1347/GobiSampleCM/android/assets/qml/GobiSampleCM/main.qml @@ -0,0 +1,822 @@ +/*=========================================================================== +FILE: + main.qml + +DESCRIPTION: + Graphic meta description for Gobi Sample CM + +Copyright (c) 2013, The Linux Foundation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +===========================================================================*/ + +import QtQuick 1.0 + +Rectangle +{ + id: mainWindow + width: 360 + height: 360 + color: "#000000" + state: windowState + + // This window is not stretched to fullscreen + // which is what we want to demonstrate for now + Rectangle + { + width: 360 + height: 360 + color: "#ffffff" + + // The box on the left hand side of the screen + Rectangle + { + x: 15 + y: 15 + width: 80 + height: 330 + color: "#ffffff" + anchors.left: parent.left + anchors.leftMargin: 15 + anchors.verticalCenter: parent.verticalCenter + border.width: 2 + border.color: "#000000" + + // The connection stats button + Rectangle + { + id: connectIcon + width: 60 + height: 70 + color: "#ffffff" + anchors.top: parent.top + anchors.topMargin: 10 + anchors.horizontalCenter: parent.horizontalCenter + + Image + { + width: 50 + height: 50 + anchors.horizontalCenter: parent.horizontalCenter + anchors.top: parent.top + anchors.topMargin: 5 + source: "Connect.png" + } + + Text + { + text: "Connection" + anchors.horizontalCenter: parent.horizontalCenter + anchors.bottom: parent.bottom + anchors.bottomMargin: 5 + horizontalAlignment: Text.AlignHCenter + font.pixelSize: 9 + } + + MouseArea + { + id: connectionsButtonArea + anchors.fill: parent + onClicked: + { + connectionsButton.Click() + } + } + } + + // The info stats button + Rectangle + { + id: infoIcon + x: 10 + y: 90 + width: 60 + height: 70 + color: "#ffffff" + anchors.horizontalCenter: parent.horizontalCenter + + Image + { + width: 50 + height: 50 + anchors.horizontalCenter: parent.horizontalCenter + anchors.top: parent.top + anchors.topMargin: 5 + source: "Info.png" + } + + Text + { + text: "Information" + font.pixelSize: 9 + anchors.horizontalCenter: parent.horizontalCenter + anchors.bottom: parent.bottom + anchors.bottomMargin: 5 + horizontalAlignment: Text.AlignHCenter + } + + MouseArea + { + id: infosButtonArea + anchors.fill: parent + onClicked: + { + infosButton.Click() + } + } + } + } + + // The "connect" button + Rectangle + { + id: connectionButtonID + x: 240 + y: 10 + width: 100 + height: 30 + color: "#ffffff" + border.color: "#000000" + border.width: 2 + + Text + { + text: connectButtonText + font.pixelSize: 16 + anchors.fill: parent + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + } + + MouseArea + { + anchors.fill: parent + onClicked: + { + connectButton.Click() + } + } + } + } + + // Map a property ID to its human readable text + function getName( propID ) + { + if (propID == "status") + { + return "State" + } + + if (propID == "rssi") + { + return "RSSI (db)" + } + + if (propID == "tech") + { + return "Technology" + } + + if (propID == "rx") + { + return "Current RX Rate (bps)" + } + + if (propID == "tx") + { + return "Current TX Rate (bps)" + } + + if (propID == "maxRx") + { + return "Maximum RX Rate (bps)" + } + + if (propID == "maxTx") + { + return "Maximum TX Rate (bps)" + } + + if (propID == "roam") + { + return "Roaming Indicator" + } + + if (propID == "duration") + { + return "Connection Duration" + } + + if (propID == "lifeDuration") + { + return "Life Total Connection Duration" + } + + if (propID == "lifeRx") + { + return "Life Total RX Bytes" + } + + if (propID == "lifeTx") + { + return "Life Total TX Bytes" + } + + if (propID == "manufact") + { + return "Manufacturer" + } + + if (propID == "model") + { + return "Model ID" + } + + if (propID == "hardware") + { + return "Hardware Revision" + } + + if (propID == "firmware") + { + return "Firmware Revision" + } + + if (propID == "mdn") + { + return "MDN" + } + + if (propID == "min") + { + return "MIN" + } + + if (propID == "esn") + { + return "ESN" + } + + if (propID == "meid") + { + return "MEID" + } + + if (propID == "imei") + { + return "IMEI" + } + + if (propID == "imsi") + { + return "IMSI" + } + + return "Bad PropID" + } + + // Map a property ID to its variable + function getValue( propID ) + { + if (propID == "status") + { + return status + } + + if (propID == "rssi") + { + return rssi + } + + if (propID == "tech") + { + return tech + } + + if (propID == "rx") + { + return rx + } + + if (propID == "tx") + { + return tx + } + + if (propID == "maxRx") + { + return maxRx + } + + if (propID == "maxTx") + { + return maxTx + } + + if (propID == "roam") + { + return roam + } + + if (propID == "duration") + { + return duration + } + + if (propID == "lifeDuration") + { + return lifeDuration + } + + if (propID == "lifeRx") + { + return lifeRx + } + + if (propID == "lifeTx") + { + return lifeTx + } + + if (propID == "manufact") + { + return manufact + } + + if (propID == "model") + { + return model + } + + if (propID == "hardware") + { + return hardware + } + + if (propID == "firmware") + { + return firmware + } + + if (propID == "mdn") + { + return mdn + } + + if (propID == "min") + { + return min + } + + if (propID == "esn") + { + return esn + } + + if (propID == "meid") + { + return meid + } + + if (propID == "imei") + { + return imei + } + + if (propID == "imsi") + { + return imsi + } + + return "Bad PropID" + } + + // Connection statistics list + Rectangle + { + id: connectionStatistics + x: 110 + y: 50 + width: 230 + height: 180 + color: "#ffffff" + border.color: "#000000" + border.width: 2 + + ListView + { + anchors.fill: parent + delegate: Item + { + x: 5 + height: 15 + Row + { + id: connectionStatistic + spacing: 10 + + // PropID is a unique identification string + // used to generate a human readable string and + // link to variable + property string propID: "unknown" + + Text + { + text: getName( propID ) + width: 150 + font.pixelSize: 10 + horizontalAlignment: Text.AlignLeft + font.bold: true + } + + Text + { + text: getValue( propID ) + width: 80 + font.pixelSize: 10 + horizontalAlignment: Text.AlignLeft + } + } + } + + model: ListModel + { + id: connectionStats + ListElement { propID: "status" } + ListElement { propID: "rssi" } + ListElement { propID: "tech" } + ListElement { propID: "rx" } + ListElement { propID: "tx" } + ListElement { propID: "maxRx" } + ListElement { propID: "maxTx" } + ListElement { propID: "roam" } + ListElement { propID: "duration" } + ListElement { propID: "lifeDuration" } + ListElement { propID: "lifeRx" } + ListElement { propID: "lifeTx" } + } + } + } + + // Info statistics list + Rectangle + { + id: infos + x: 110 + y: 50 + width: 230 + height: 180 + color: "#ffffff" + border.color: "#000000" + border.width: 2 + visible: false + + ListView + { + anchors.fill: parent + delegate: Item + { + x: 5 + height: 15 + Row + { + id: info + spacing: 10 + + // PropID is a unique identification string + // used to generate a human readable string and + // link to variable + property string propID: "unknown" + + Text + { + text: getName( propID ) + width: 100 + font.pixelSize: 10 + horizontalAlignment: Text.AlignLeft + font.bold: true + } + + Text + { + text: getValue( propID ) + width: 120 + font.pixelSize: 10 + horizontalAlignment: Text.AlignLeft + } + } + } + + model: ListModel + { + ListElement { propID: "manufact" } + ListElement { propID: "model" } + ListElement { propID: "hardware" } + ListElement { propID: "firmware" } + ListElement { propID: "mdn" } + ListElement { propID: "min" } + ListElement { propID: "esn" } + ListElement { propID: "meid" } + ListElement { propID: "imei" } + ListElement { propID: "imsi" } + } + } + } + + // The close button + Rectangle + { + x: 280 + y: 315 + width: 60 + height: 30 + color: "#ffffff" + border.color: "#000000" + border.width: 2 + + Text + { + anchors.fill: parent + text: "Close" + verticalAlignment: Text.AlignVCenter + horizontalAlignment: Text.AlignHCenter + font.pixelSize: 16 + } + + MouseArea + { + anchors.fill: parent + onClicked: + { + Qt.quit(); + } + } + } + + Text + { + id: apnTextID + x: 110 + y: 246 + width: 73 + height: 20 + text: "APN" + verticalAlignment: Text.AlignVCenter + horizontalAlignment: Text.AlignRight + font.pixelSize: 12 + } + + Text + { + id: usernameTextID + x: 110 + y: 266 + width: 73 + height: 20 + text: "Username" + font.pixelSize: 12 + horizontalAlignment: Text.AlignRight + verticalAlignment: Text.AlignVCenter + } + + Text + { + id: passwordTextID + x: 110 + y: 286 + width: 73 + height: 20 + text: "Password" + font.pixelSize: 12 + horizontalAlignment: Text.AlignRight + verticalAlignment: Text.AlignVCenter + } + + // The APN text box + Rectangle + { + id: apnTextBoxID + x: 190 + y: 246 + width: 150 + height: 20 + color: "#ffffff" + border.width: 2 + border.color: "#000000" + + TextInput + { + anchors.fill: parent + id: apnName + font.pixelSize: 12 + } + + Binding + { + target: apnNameText + property: "text" + value: apnName.text + } + } + + // The Username text box + Rectangle + { + id: usernameTextBoxID + x: 190 + y: 266 + width: 150 + height: 20 + color: "#ffffff" + border.color: "#000000" + border.width: 2 + + TextInput + { + anchors.fill: parent + id: username + font.pixelSize: 12 + } + + Binding + { + target: usernameText + property: "text" + value: username.text + } + } + + // Password text box + Rectangle + { + id: passwordTextBoxID + x: 190 + y: 286 + width: 150 + height: 20 + color: "#ffffff" + border.color: "#000000" + border.width: 2 + + TextInput + { + anchors.fill: parent + id: password + font.pixelSize: 12 + } + + Binding + { + target: passwordText + property: "text" + value: password.text + } + } + + // Dialog window to be shown + Rectangle + { + id: connectingDialog + x: 55 + y: 105 + width: 250 + height: 150 + color: "#ffffff" + border.color: "#000000" + border.width: 2 + z: 1 + visible: false + + Text + { + id: connectingDialogText + text: dialogText + horizontalAlignment: Text.AlignHCenter + anchors.top: parent.top + anchors.topMargin: 30 + anchors.horizontalCenter: parent.horizontalCenter + font.pixelSize: 12 + } + } + + // State transitions + states: + [ + // Info state, shown when info button is clicked + State + { + name: "infos" + + PropertyChanges + { + target: connectionButtonID + visible: false + } + + PropertyChanges + { + target: apnTextID + visible: false + } + + PropertyChanges + { + target: usernameTextID + visible: false + } + + PropertyChanges + { + target: passwordTextID + visible: false + } + + PropertyChanges + { + target: apnTextBoxID + visible: false + } + + PropertyChanges + { + target: usernameTextBoxID + visible: false + } + + PropertyChanges + { + target: passwordTextBoxID + visible: false + } + + PropertyChanges + { + target: connectionStatistics + visible: false + } + + PropertyChanges + { + target: infos + visible: true + } + + PropertyChanges + { + target: connectingDialog + visible: false + } + }, + + // Connecting Dialog state, shown when connecting + State + { + name: "connectingDialog" + + PropertyChanges + { + target: connectingDialog + visible: true + } + + // Disable the "info stats" button while the connection dialog is up + PropertyChanges + { + target: infosButtonArea + visible: false + } + + // Disable the "connection stats" button while the connection + // dialog is up + PropertyChanges + { + target: connectionsButtonArea + visible: false + } + } + ] +} + + diff --git a/gobi-api/GobiAPI_2013-07-31-1347/GobiSampleCM/android/res/drawable/icon.png b/gobi-api/GobiAPI_2013-07-31-1347/GobiSampleCM/android/res/drawable/icon.png new file mode 100644 index 0000000..e709792 Binary files /dev/null and b/gobi-api/GobiAPI_2013-07-31-1347/GobiSampleCM/android/res/drawable/icon.png differ diff --git a/gobi-api/GobiAPI_2013-07-31-1347/GobiSampleCM/android/res/drawable/logo.png b/gobi-api/GobiAPI_2013-07-31-1347/GobiSampleCM/android/res/drawable/logo.png new file mode 100644 index 0000000..8366c4f Binary files /dev/null and b/gobi-api/GobiAPI_2013-07-31-1347/GobiSampleCM/android/res/drawable/logo.png differ diff --git a/gobi-api/GobiAPI_2013-07-31-1347/GobiSampleCM/main.cpp b/gobi-api/GobiAPI_2013-07-31-1347/GobiSampleCM/main.cpp new file mode 100644 index 0000000..d3501a2 --- /dev/null +++ b/gobi-api/GobiAPI_2013-07-31-1347/GobiSampleCM/main.cpp @@ -0,0 +1,44 @@ +/*=========================================================================== +FILE: + main.cpp + +DESCRIPTION: + Entry point to the Gobi Sample CM + +Copyright (c) 2013, The Linux Foundation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +===========================================================================*/ + +#include "QTSampleCM.h" + +Q_DECL_EXPORT int main( int argc, char ** argv ) +{ + cQTSampleCM cm( argc, argv ); + cm.Init(); + + // This function blocks until the app closes + return cm.Run(); +} diff --git a/gobi-api/GobiAPI_2013-07-31-1347/GobiSampleCM/qml/GobiSampleCM/Connect.png b/gobi-api/GobiAPI_2013-07-31-1347/GobiSampleCM/qml/GobiSampleCM/Connect.png new file mode 100644 index 0000000..903d85f Binary files /dev/null and b/gobi-api/GobiAPI_2013-07-31-1347/GobiSampleCM/qml/GobiSampleCM/Connect.png differ diff --git a/gobi-api/GobiAPI_2013-07-31-1347/GobiSampleCM/qml/GobiSampleCM/Info.png b/gobi-api/GobiAPI_2013-07-31-1347/GobiSampleCM/qml/GobiSampleCM/Info.png new file mode 100644 index 0000000..69d7cbb Binary files /dev/null and b/gobi-api/GobiAPI_2013-07-31-1347/GobiSampleCM/qml/GobiSampleCM/Info.png differ diff --git a/gobi-api/GobiAPI_2013-07-31-1347/GobiSampleCM/qml/GobiSampleCM/main.qml b/gobi-api/GobiAPI_2013-07-31-1347/GobiSampleCM/qml/GobiSampleCM/main.qml new file mode 100644 index 0000000..904cce0 --- /dev/null +++ b/gobi-api/GobiAPI_2013-07-31-1347/GobiSampleCM/qml/GobiSampleCM/main.qml @@ -0,0 +1,822 @@ +/*=========================================================================== +FILE: + main.qml + +DESCRIPTION: + Graphic meta description for Gobi Sample CM + +Copyright (c) 2013, The Linux Foundation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +===========================================================================*/ + +import QtQuick 1.0 + +Rectangle +{ + id: mainWindow + width: 360 + height: 360 + color: "#000000" + state: windowState + + // This window is not stretched to fullscreen + // which is what we want to demonstrate for now + Rectangle + { + width: 360 + height: 360 + color: "#ffffff" + + // The box on the left hand side of the screen + Rectangle + { + x: 15 + y: 15 + width: 80 + height: 330 + color: "#ffffff" + anchors.left: parent.left + anchors.leftMargin: 15 + anchors.verticalCenter: parent.verticalCenter + border.width: 2 + border.color: "#000000" + + // The connection stats button + Rectangle + { + id: connectIcon + width: 60 + height: 70 + color: "#ffffff" + anchors.top: parent.top + anchors.topMargin: 10 + anchors.horizontalCenter: parent.horizontalCenter + + Image + { + width: 50 + height: 50 + anchors.horizontalCenter: parent.horizontalCenter + anchors.top: parent.top + anchors.topMargin: 5 + source: "Connect.png" + } + + Text + { + text: "Connection" + anchors.horizontalCenter: parent.horizontalCenter + anchors.bottom: parent.bottom + anchors.bottomMargin: 5 + horizontalAlignment: Text.AlignHCenter + font.pixelSize: 9 + } + + MouseArea + { + id: connectionsButtonArea + anchors.fill: parent + onClicked: + { + connectionsButton.Click() + } + } + } + + // The info stats button + Rectangle + { + id: infoIcon + x: 10 + y: 90 + width: 60 + height: 70 + color: "#ffffff" + anchors.horizontalCenter: parent.horizontalCenter + + Image + { + width: 50 + height: 50 + anchors.horizontalCenter: parent.horizontalCenter + anchors.top: parent.top + anchors.topMargin: 5 + source: "Info.png" + } + + Text + { + text: "Information" + font.pixelSize: 9 + anchors.horizontalCenter: parent.horizontalCenter + anchors.bottom: parent.bottom + anchors.bottomMargin: 5 + horizontalAlignment: Text.AlignHCenter + } + + MouseArea + { + id: infosButtonArea + anchors.fill: parent + onClicked: + { + infosButton.Click() + } + } + } + } + + // The "connect" button + Rectangle + { + id: connectionButtonID + x: 240 + y: 10 + width: 100 + height: 30 + color: "#ffffff" + border.color: "#000000" + border.width: 2 + + Text + { + text: connectButtonText + font.pixelSize: 16 + anchors.fill: parent + horizontalAlignment: Text.AlignHCenter + verticalAlignment: Text.AlignVCenter + } + + MouseArea + { + anchors.fill: parent + onClicked: + { + connectButton.Click() + } + } + } + } + + // Map a property ID to its human readable text + function getName( propID ) + { + if (propID == "status") + { + return "State" + } + + if (propID == "rssi") + { + return "RSSI (db)" + } + + if (propID == "tech") + { + return "Technology" + } + + if (propID == "rx") + { + return "Current RX Rate (bps)" + } + + if (propID == "tx") + { + return "Current TX Rate (bps)" + } + + if (propID == "maxRx") + { + return "Maximum RX Rate (bps)" + } + + if (propID == "maxTx") + { + return "Maximum TX Rate (bps)" + } + + if (propID == "roam") + { + return "Roaming Indicator" + } + + if (propID == "duration") + { + return "Connection Duration" + } + + if (propID == "lifeDuration") + { + return "Life Total Connection Duration" + } + + if (propID == "lifeRx") + { + return "Life Total RX Bytes" + } + + if (propID == "lifeTx") + { + return "Life Total TX Bytes" + } + + if (propID == "manufact") + { + return "Manufacturer" + } + + if (propID == "model") + { + return "Model ID" + } + + if (propID == "hardware") + { + return "Hardware Revision" + } + + if (propID == "firmware") + { + return "Firmware Revision" + } + + if (propID == "mdn") + { + return "MDN" + } + + if (propID == "min") + { + return "MIN" + } + + if (propID == "esn") + { + return "ESN" + } + + if (propID == "meid") + { + return "MEID" + } + + if (propID == "imei") + { + return "IMEI" + } + + if (propID == "imsi") + { + return "IMSI" + } + + return "Bad PropID" + } + + // Map a property ID to its variable + function getValue( propID ) + { + if (propID == "status") + { + return status + } + + if (propID == "rssi") + { + return rssi + } + + if (propID == "tech") + { + return tech + } + + if (propID == "rx") + { + return rx + } + + if (propID == "tx") + { + return tx + } + + if (propID == "maxRx") + { + return maxRx + } + + if (propID == "maxTx") + { + return maxTx + } + + if (propID == "roam") + { + return roam + } + + if (propID == "duration") + { + return duration + } + + if (propID == "lifeDuration") + { + return lifeDuration + } + + if (propID == "lifeRx") + { + return lifeRx + } + + if (propID == "lifeTx") + { + return lifeTx + } + + if (propID == "manufact") + { + return manufact + } + + if (propID == "model") + { + return model + } + + if (propID == "hardware") + { + return hardware + } + + if (propID == "firmware") + { + return firmware + } + + if (propID == "mdn") + { + return mdn + } + + if (propID == "min") + { + return min + } + + if (propID == "esn") + { + return esn + } + + if (propID == "meid") + { + return meid + } + + if (propID == "imei") + { + return imei + } + + if (propID == "imsi") + { + return imsi + } + + return "Bad PropID" + } + + // Connection statistics list + Rectangle + { + id: connectionStatistics + x: 110 + y: 50 + width: 230 + height: 180 + color: "#ffffff" + border.color: "#000000" + border.width: 2 + + ListView + { + anchors.fill: parent + delegate: Item + { + x: 5 + height: 15 + Row + { + id: connectionStatistic + spacing: 10 + + // PropID is a unique identification string + // used to generate a human readable string and + // link to variable + property string propID: "unknown" + + Text + { + text: getName( propID ) + width: 150 + font.pixelSize: 10 + horizontalAlignment: Text.AlignLeft + font.bold: true + } + + Text + { + text: getValue( propID ) + width: 80 + font.pixelSize: 10 + horizontalAlignment: Text.AlignLeft + } + } + } + + model: ListModel + { + id: connectionStats + ListElement { propID: "status" } + ListElement { propID: "rssi" } + ListElement { propID: "tech" } + ListElement { propID: "rx" } + ListElement { propID: "tx" } + ListElement { propID: "maxRx" } + ListElement { propID: "maxTx" } + ListElement { propID: "roam" } + ListElement { propID: "duration" } + ListElement { propID: "lifeDuration" } + ListElement { propID: "lifeRx" } + ListElement { propID: "lifeTx" } + } + } + } + + // Info statistics list + Rectangle + { + id: infos + x: 110 + y: 50 + width: 230 + height: 180 + color: "#ffffff" + border.color: "#000000" + border.width: 2 + visible: false + + ListView + { + anchors.fill: parent + delegate: Item + { + x: 5 + height: 15 + Row + { + id: info + spacing: 10 + + // PropID is a unique identification string + // used to generate a human readable string and + // link to variable + property string propID: "unknown" + + Text + { + text: getName( propID ) + width: 100 + font.pixelSize: 10 + horizontalAlignment: Text.AlignLeft + font.bold: true + } + + Text + { + text: getValue( propID ) + width: 120 + font.pixelSize: 10 + horizontalAlignment: Text.AlignLeft + } + } + } + + model: ListModel + { + ListElement { propID: "manufact" } + ListElement { propID: "model" } + ListElement { propID: "hardware" } + ListElement { propID: "firmware" } + ListElement { propID: "mdn" } + ListElement { propID: "min" } + ListElement { propID: "esn" } + ListElement { propID: "meid" } + ListElement { propID: "imei" } + ListElement { propID: "imsi" } + } + } + } + + // The close button + Rectangle + { + x: 280 + y: 315 + width: 60 + height: 30 + color: "#ffffff" + border.color: "#000000" + border.width: 2 + + Text + { + anchors.fill: parent + text: "Close" + verticalAlignment: Text.AlignVCenter + horizontalAlignment: Text.AlignHCenter + font.pixelSize: 16 + } + + MouseArea + { + anchors.fill: parent + onClicked: + { + Qt.quit(); + } + } + } + + Text + { + id: apnTextID + x: 110 + y: 246 + width: 73 + height: 20 + text: "APN" + verticalAlignment: Text.AlignVCenter + horizontalAlignment: Text.AlignRight + font.pixelSize: 12 + } + + Text + { + id: usernameTextID + x: 110 + y: 266 + width: 73 + height: 20 + text: "Username" + font.pixelSize: 12 + horizontalAlignment: Text.AlignRight + verticalAlignment: Text.AlignVCenter + } + + Text + { + id: passwordTextID + x: 110 + y: 286 + width: 73 + height: 20 + text: "Password" + font.pixelSize: 12 + horizontalAlignment: Text.AlignRight + verticalAlignment: Text.AlignVCenter + } + + // The APN text box + Rectangle + { + id: apnTextBoxID + x: 190 + y: 246 + width: 150 + height: 20 + color: "#ffffff" + border.width: 2 + border.color: "#000000" + + TextInput + { + anchors.fill: parent + id: apnName + font.pixelSize: 12 + } + + Binding + { + target: apnNameText + property: "text" + value: apnName.text + } + } + + // The Username text box + Rectangle + { + id: usernameTextBoxID + x: 190 + y: 266 + width: 150 + height: 20 + color: "#ffffff" + border.color: "#000000" + border.width: 2 + + TextInput + { + anchors.fill: parent + id: username + font.pixelSize: 12 + } + + Binding + { + target: usernameText + property: "text" + value: username.text + } + } + + // Password text box + Rectangle + { + id: passwordTextBoxID + x: 190 + y: 286 + width: 150 + height: 20 + color: "#ffffff" + border.color: "#000000" + border.width: 2 + + TextInput + { + anchors.fill: parent + id: password + font.pixelSize: 12 + } + + Binding + { + target: passwordText + property: "text" + value: password.text + } + } + + // Dialog window to be shown + Rectangle + { + id: connectingDialog + x: 55 + y: 105 + width: 250 + height: 150 + color: "#ffffff" + border.color: "#000000" + border.width: 2 + z: 1 + visible: false + + Text + { + id: connectingDialogText + text: dialogText + horizontalAlignment: Text.AlignHCenter + anchors.top: parent.top + anchors.topMargin: 30 + anchors.horizontalCenter: parent.horizontalCenter + font.pixelSize: 12 + } + } + + // State transitions + states: + [ + // Info state, shown when info button is clicked + State + { + name: "infos" + + PropertyChanges + { + target: connectionButtonID + visible: false + } + + PropertyChanges + { + target: apnTextID + visible: false + } + + PropertyChanges + { + target: usernameTextID + visible: false + } + + PropertyChanges + { + target: passwordTextID + visible: false + } + + PropertyChanges + { + target: apnTextBoxID + visible: false + } + + PropertyChanges + { + target: usernameTextBoxID + visible: false + } + + PropertyChanges + { + target: passwordTextBoxID + visible: false + } + + PropertyChanges + { + target: connectionStatistics + visible: false + } + + PropertyChanges + { + target: infos + visible: true + } + + PropertyChanges + { + target: connectingDialog + visible: false + } + }, + + // Connecting Dialog state, shown when connecting + State + { + name: "connectingDialog" + + PropertyChanges + { + target: connectingDialog + visible: true + } + + // Disable the "info stats" button while the connection dialog is up + PropertyChanges + { + target: infosButtonArea + visible: false + } + + // Disable the "connection stats" button while the connection + // dialog is up + PropertyChanges + { + target: connectionsButtonArea + visible: false + } + } + ] +} + + diff --git a/gobi-api/GobiAPI_2013-07-31-1347/Readme.txt b/gobi-api/GobiAPI_2013-07-31-1347/Readme.txt new file mode 100644 index 0000000..6617dec --- /dev/null +++ b/gobi-api/GobiAPI_2013-07-31-1347/Readme.txt @@ -0,0 +1,177 @@ +Gobi Extensible API 2013-07-31-1347 + +This readme covers important information concerning +the Gobi Extensible API. + +Table of Contents + +1. What's new in this release +2. Known issues +3. Build steps + +------------------------------------------------------------------------------- + +1. WHAT'S NEW + +This Release (Gobi Extensible API 2013-07-31-1347) +a. Updated API reflect the following QMI ICDs: + AUTH ICD Rev. C (80-VB816-21) + CAT ICD Rev. P (80-VB816-11) + DMS ICD Rev. R (80-VB816-4) + LOC ICD Rev. K (80-VB816-17) + NAS ICD Rev. YL (80-VB816-6) + PBM ICD Rev. M (80-VB816-15) + PDC ICD Rev. B (80-VB816-38) + PDS ICD Rev. W (80-VB816-8) + QCMAP ICD Rev. B (80-VB816-34) + RFRPE ICD Rev. A (80-VB816-44) + UIM ICD Rev. YC (80-VB816-12) + Voice ICD Rev. U (80-VB816-10) + WDA ICD Rev. F (80-VB816-26) + WDS ICD Rev. YJ (80-VB816-5) + WMS ICD Rev. N (80-VB816-9) + Addendum ICD Rev. E (80-VK268-3) + +Prior Release (Gobi Extensible API 2013-03-16-0832) +a. Fix QMI LOC support +b. Updated API reflect the following QMI ICDs: + AUTH ICD Rev. C (80-VB816-21) + CAT ICD Rev. P (80-VB816-11) + DMS ICD Rev. R (80-VB816-4) + LOC ICD Rev. H (80-VB816-17) + NAS ICD Rev. YH (80-VB816-6) + PBM ICD Rev. K (80-VB816-15) + PDC ICD Rev. B (80-VB816-38) + PDS ICD Rev. T (80-VB816-8) + QCMAP ICD Rev. B (80-VB816-34) + UIM ICD Rev. YB (80-VB816-12) + Voice ICD Rev. T (80-VB816-10) + WDA ICD Rev. F (80-VB816-26) + WDS ICD Rev. YG (80-VB816-5) + WMS ICD Rev. M (80-VB816-9) + Addendum ICD Rev. E (80-VK268-3) + +Prior Release (Gobi Extensible API 2012-09-12-0719) +a. Updated API reflect the following QMI ICDs: + AUTH ICD Rev. C (80-VB816-21) + CAT ICD Rev. L (80-VB816-11) + DMS ICD Rev. N (80-VB816-4) + LOC ICD Rev. G (80-VB816-17) + NAS ICD Rev. YC (80-VB816-6) + PBM ICD Rev. K (80-VB816-15) + PDC ICD Rev. A (80-VB816-38) + PDS ICD Rev. N (80-VB816-8) + UIM ICD Rev. Y (80-VB816-12) + Voice ICD Rev. M (80-VB816-10) + WDS ICD Rev. YC (80-VB816-5) + WMS ICD Rev. K (80-VB816-9) + Addendum ICD Rev. C (80-VK268-3) + +Prior Release (Gobi Extensible API 2012-08-23-0740) +a. Updated reference platform to Nexus 7 tablet, kernel 3.1.10 +b. Updated icons in GobiSampleCM +c. Updated API reflect the following QMI ICDs: + AUTH ICD Rev. C (80-VB816-21) + CAT ICD Rev. L (80-VB816-11) + DMS ICD Rev. N (80-VB816-4) + LOC ICD Rev. F (80-VB816-17) + NAS ICD Rev. YC (80-VB816-6) + PBM ICD Rev. J (80-VB816-15) + PDC ICD Rev. A (80-VB816-38) + PDS ICD Rev. N (80-VB816-8) + UIM ICD Rev. Y (80-VB816-12) + Voice ICD Rev. M (80-VB816-10) + WDS ICD Rev. YB (80-VB816-5) + WMS ICD Rev. K (80-VB816-9) + Addendum ICD Rev. C (80-VK268-3) + +Prior Release (Gobi Extensible API 2012-08-08-1042) +a. Updated API reflect the following QMI ICDs: + AUTH ICD Rev. C (80-VB816-21) + CAT ICD Rev. L (80-VB816-11) + DMS ICD Rev. N (80-VB816-4) + LOC ICD Rev. F (80-VB816-17) + NAS ICD Rev. YC (80-VB816-6) + PBM ICD Rev. J (80-VB816-15) + PDS ICD Rev. N (80-VB816-8) + UIM ICD Rev. Y (80-VB816-12) + Voice ICD Rev. M (80-VB816-10) + WDS ICD Rev. YB (80-VB816-5) + WMS ICD Rev. K (80-VB816-9) + Addendum ICD Rev. C (80-VK268-3) + +Prior Release (Gobi Extensible API 2012-07-12-1036) +a. Cleanup correctly during Disconnect() to fix possible race condition + which could cause future connections to have read timeouts. +b. Add a device access qualifier for SMD connections, for example: + "QMUXD:0" for the first SMD channel. +c. Updated API reflect the following QMI ICDs: + AUTH ICD Rev. C (80-VB816-21) + CAT ICD Rev. L (80-VB816-11) + DMS ICD Rev. N (80-VB816-4) + LOC ICD Rev. F (80-VB816-17) + NAS ICD Rev. YC (80-VB816-6) + PBM ICD Rev. H (80-VB816-15) + PDS ICD Rev. N (80-VB816-8) + UIM ICD Rev. W (80-VB816-12) + Voice ICD Rev. M (80-VB816-10) + WDS ICD Rev. YB (80-VB816-5) + WMS ICD Rev. H (80-VB816-9) + Addendum ICD Rev. C (80-VK268-3) + +Prior Release (Gobi Extensible API 2012-06-18-1054) +a. Added support for SMD devices +b. Updated API reflect the following QMI ICDs: + AUTH ICD Rev. B (80-VB816-21) + CAT ICD Rev. L (80-VB816-11) + DMS ICD Rev. N (80-VB816-4) + LOC ICD Rev. F (80-VB816-17) + NAS ICD Rev. YA (80-VB816-6) + PBM ICD Rev. H (80-VB816-15) + PDS ICD Rev. N (80-VB816-8) + UIM ICD Rev. V (80-VB816-12) + Voice ICD Rev. L (80-VB816-10) + WDS ICD Rev. YA (80-VB816-5) + WMS ICD Rev. H (80-VB816-9) + Addendum ICD Rev. C (80-VK268-3) + +Prior Release (Gobi Extensible API 2012-01-12-1106) +a. Addition of Gobi Sample CM (documentation is on QDevNet - + the use of this me be subject to additional license terms) +b. Updated API reflect the following QMI ICDs: + AUTH ICD Rev. B (80-VB816-21) + CAT ICD Rev. J (80-VB816-11) + DMS ICD Rev. K (80-VB816-4) + LOC ICD Rev. D (80-VB816-17) + NAS ICD Rev. W (80-VB816-6) + PBM ICD Rev. F (80-VB816-15) + PDS 1 ICD Rev. J (80-VB816-8) + PDS 2 ICD Rev. D (80-VB816-14) + UIM ICD Rev. T (80-VB816-12) + Voice ICD Rev. J (80-VB816-10) + WDS ICD Rev. U (80-VB816-5) + WMS ICD Rev. F (80-VB816-9) + +Prior Release (Gobi Extensible API 2011-12-15-0819) +a. Initial beta code release + +------------------------------------------------------------------------------- + +2. KNOWN ISSUES + +No known issues. + +------------------------------------------------------------------------------- + +3. BUILD STEPS + +a. Start in the 'GobiConnectionMgmt' folder +b. For Android, run: + make Android ANDROID_PATH= + For x86, run: + make + +------------------------------------------------------------------------------- + + + diff --git a/gobi-api/GobiAPI_2013-07-31-1347/Shared/GobiError.h b/gobi-api/GobiAPI_2013-07-31-1347/Shared/GobiError.h new file mode 100644 index 0000000..c08e42e --- /dev/null +++ b/gobi-api/GobiAPI_2013-07-31-1347/Shared/GobiError.h @@ -0,0 +1,136 @@ +/*=========================================================================== +FILE: + GobiError.h + +DESCRIPTION: + QUALCOMM Gobi Errors + +Copyright (c) 2013, The Linux Foundation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +==========================================================================*/ + +/*=========================================================================*/ +// Pragmas +/*=========================================================================*/ +#pragma once + +//--------------------------------------------------------------------------- +// Include Files +//--------------------------------------------------------------------------- +#include "QMIEnum.h" + +//--------------------------------------------------------------------------- +// Definitions +//--------------------------------------------------------------------------- + +/*=========================================================================*/ +// eGobiError Enumeration +// Gobi API Error Enumeration +/*=========================================================================*/ +enum eGobiError +{ + eGOBI_ERR_ENUM_BEGIN = -1, + + eGOBI_ERR_NONE, // 00 Success + eGOBI_ERR_GENERAL, // 01 General error + eGOBI_ERR_INTERNAL, // 02 Internal error + eGOBI_ERR_MEMORY, // 03 Memory error + eGOBI_ERR_INVALID_ARG, // 04 Invalid argument + eGOBI_ERR_BUFFER_SZ, // 05 Buffer too small + eGOBI_ERR_NO_DEVICE, // 06 Unable to detect device + eGOBI_ERR_INVALID_DEVID, // 07 Invalid device ID + eGOBI_ERR_NO_CONNECTION, // 08 No connection to device + eGOBI_ERR_IFACE, // 09 Unable to obtain required interace + eGOBI_ERR_CONNECT, // 10 Unable to connect to interface + eGOBI_ERR_REQ_SCHEDULE, // 11 Unable to schedule request + eGOBI_ERR_REQUEST, // 12 Error sending request + eGOBI_ERR_RESPONSE, // 13 Error receiving response + eGOBI_ERR_REQUEST_TO, // 14 Timeout while sending request + eGOBI_ERR_RESPONSE_TO, // 15 Timeout while receiving response + eGOBI_ERR_MALFORMED_RSP, // 16 Malformed response received + eGOBI_ERR_INVALID_RSP, // 17 Invalid/error response received + eGOBI_ERR_INVALID_FILE, // 18 Invalid file path + eGOBI_ERR_FILE_OPEN, // 19 Unable to open file + eGOBI_ERR_FILE_COPY, // 20 Unable to copy file + eGOBI_ERR_QDL_SCM, // 21 Unable to open service control mgr + eGOBI_ERR_NO_QDL_SVC, // 22 Unable to detect QDL service + eGOBI_ERR_NO_QDL_SVC_INFO, // 23 Unable to obtain QDL service info + eGOBI_ERR_NO_QDL_SVC_PATH, // 24 Unable to locate QSL service + eGOBI_ERR_QDL_SVC_CFG, // 25 Unable to reconfigure QDL service + eGOBI_ERR_QDL_SVC_IFACE, // 26 Unable to interface to QDL service + eGOBI_ERR_OFFLINE, // 27 Unable to set device offline + eGOBI_ERR_RESET, // 28 Unable to reset device + eGOBI_ERR_NO_SIGNAL, // 29 No available signal + eGOBI_ERR_MULTIPLE_DEVICES, // 30 Multiple devices detected + eGOBI_ERR_DRIVER, // 31 Error interfacing to driver + eGOBI_ERR_NO_CANCELABLE_OP, // 32 No cancelable operation is pending + eGOBI_ERR_CANCEL_OP, // 33 Error canceling outstanding operation + eGOBI_ERR_QDL_CRC, // 34 QDL image data CRC error + eGOBI_ERR_QDL_PARSING, // 35 QDL image data parsing error + eGOBI_ERR_QDL_AUTH, // 36 QDL image authentication error + eGOBI_ERR_QDL_WRITE, // 37 QDL image write error + eGOBI_ERR_QDL_OPEN_SIZE, // 38 QDL image size error + eGOBI_ERR_QDL_OPEN_TYPE, // 39 QDL image type error + eGOBI_ERR_QDL_OPEN_PROT, // 40 QDL memory protection error + eGOBI_ERR_QDL_OPEN_SKIP, // 41 QDL image not required + eGOBI_ERR_QDL_ERR_GENERAL, // 42 QDL general error + eGOBI_ERR_QDL_BAR_MODE, // 43 QDL BAR mode error + + eGOBI_ERR_ENUM_END, + + // Offset from which mapped QMI error codes start from (see eQMIErrorCode) + eGOBI_ERR_QMI_OFFSET = 1000, +}; + +/*=========================================================================== +METHOD: + IsValid (Inline Method) + +DESCRIPTION: + eGobiError validity check + +PARAMETERS: + ec [ I ] - Enum value being verified + +RETURN VALUE: + bool +===========================================================================*/ +inline bool IsValid( eGobiError ec ) +{ + bool retVal = false; + if (ec > eGOBI_ERR_ENUM_BEGIN && ec < eGOBI_ERR_ENUM_END) + { + retVal = true; + } + + if (ec >= eGOBI_ERR_QMI_OFFSET) + { + ULONG tmp = (ULONG)ec - (ULONG)eGOBI_ERR_QMI_OFFSET; + retVal = ::IsValid( (eQMIErrorCode)tmp ); + } + + return retVal; +}; \ No newline at end of file diff --git a/gobi-api/GobiAPI_2013-07-31-1347/Shared/GobiQMICore.cpp b/gobi-api/GobiAPI_2013-07-31-1347/Shared/GobiQMICore.cpp new file mode 100644 index 0000000..14d21f9 --- /dev/null +++ b/gobi-api/GobiAPI_2013-07-31-1347/Shared/GobiQMICore.cpp @@ -0,0 +1,533 @@ +/*=========================================================================== +FILE: + GobiQMICore.cpp + +DESCRIPTION: + QUALCOMM Gobi QMI Based API Core + +PUBLIC CLASSES AND FUNCTIONS: + cGobiQMICore + +Copyright (c) 2013, The Linux Foundation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +==========================================================================*/ + +//--------------------------------------------------------------------------- +// Include Files +//--------------------------------------------------------------------------- +#include "StdAfx.h" +#include "GobiQMICore.h" + +#include "QMIBuffers.h" +#include "ProtocolNotification.h" + +/*=========================================================================*/ +// cGobiQMICore Methods +/*=========================================================================*/ + +/*=========================================================================== +METHOD: + cGobiQMICore (Public Method) + +DESCRIPTION: + Constructor + +RETURN VALUE: + None +===========================================================================*/ +cGobiQMICore::cGobiQMICore() + : mLastError( eGOBI_ERR_NONE ) +{ + mInterface[0] = 0; +} + +/*=========================================================================== +METHOD: + ~cGobiQMICore (Public Method) + +DESCRIPTION: + Destructor + +RETURN VALUE: + BOOL +===========================================================================*/ +cGobiQMICore::~cGobiQMICore() +{ + Cleanup(); +} + +/*=========================================================================== +METHOD: + Initialize (Public Method) + +DESCRIPTION: + Initialize the object + +RETURN VALUE: + bool +===========================================================================*/ +bool cGobiQMICore::Initialize() +{ + return true; +} + +/*=========================================================================== +METHOD: + Cleanup (Public Method) + +DESCRIPTION: + Cleanup the object + +RETURN VALUE: + bool +===========================================================================*/ +bool cGobiQMICore::Cleanup() +{ + Disconnect(); + return true; +} + +/*=========================================================================== +METHOD: + Connect (Public Method) + +DESCRIPTION: + Connect to the specified Gobi device + +PARAMETERS: + pQMIFile [ I ] - Gobi device interface to connect to + services [ I ] - QMI services to connect to + +RETURN VALUE: + std::set - Services successfuly configured +===========================================================================*/ +std::set cGobiQMICore::Connect( + LPCSTR pInterface, + std::set & services ) +{ + // The services we successfully connected to + std::set retServices; + + // Clear last error recorded + ClearLastError(); + + size_t ifaceLen = strnlen( pInterface, MAX_PATH ) + 1; + if (ifaceLen >= (size_t)MAX_PATH) + { + mLastError = eGOBI_ERR_INVALID_ARG; + return retServices; + } + + // Allocate configured QMI servers + std::set ::const_iterator pIter = services.begin(); + while (pIter != services.end()) + { + cQMIProtocolServer * pSvr = 0; + pSvr = new cQMIProtocolServer( *pIter, 8192, 512 ); + if (pSvr != 0) + { + // Initialize server (we don't care about the return code + // since the following Connect() call will fail if we are + // unable to initialize the server) + pSvr->Initialize(); + + bool bRC = pSvr->Connect( pInterface ); + if (bRC == true) + { + sServerInfo si( pSvr ); + std::pair entry( *pIter, si ); + mServers.insert( entry ); + + retServices.insert( *pIter ); + } + } + + pIter++; + } + + // All servers fail? + if (retServices.size() == 0) + { + // Yes, disconnect them all + Disconnect(); + + // ... and set the error code + mLastError = eGOBI_ERR_CONNECT; + } + + memcpy( mInterface, pInterface, ifaceLen ); + return retServices; +} + +/*=========================================================================== +METHOD: + Disconnect (Public Method) + +DESCRIPTION: + Disconnect from the currently connected Gobi device + +RETURN VALUE: + bool +===========================================================================*/ +bool cGobiQMICore::Disconnect() +{ + // Clear last error recorded + ClearLastError(); + + // Clear device interface + mInterface[0] = 0; + + // Assume failure + bool bRC = false; + if (mServers.size() == 0) + { + mLastError = eGOBI_ERR_NO_CONNECTION; + return bRC; + } + + // Disconnect/clean-up all configured QMI servers + std::map ::iterator pIter; + pIter = mServers.begin(); + + while (pIter != mServers.end()) + { + sServerInfo & si = pIter->second; + cQMIProtocolServer * pSvr = si.mpServer; + if (pSvr != 0) + { + pSvr->Disconnect(); + pSvr->Exit(); + + delete pSvr; + } + + si.mLogsProcessed = 0; + pIter++; + } + + mServers.clear(); + + bRC = true; + return bRC; +} + +/*=========================================================================== +METHOD: + Send (Public Method) + +DESCRIPTION: + Send a request using the specified QMI protocol server and wait for (and + then return) the response + +PARAMETERS: + svcID [ I ] - QMI service type + msgID [ I ] - QMI message ID + to [ I ] - Timeout value (in milliseconds) + inLen [ I ] - Length of input buffer + pIn [ I ] - Input buffer + pOutLen [I/O] - Upon input the maximum number of BYTEs pOut can + contain, upon output the number of BYTEs copied + to pOut + pOut [ O ] - Output buffer + +RETURN VALUE: + eGobiError - The result +===========================================================================*/ +eGobiError cGobiQMICore::Send( + ULONG svcID, + ULONG msgID, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ) +{ + // Clear last error recorded + ClearLastError(); + + if (msgID > 0xffff) + { + mLastError = eGOBI_ERR_INVALID_ARG; + return mLastError; + } + + sSharedBuffer * pRequest = 0; + pRequest = sQMIServiceBuffer::BuildBuffer( (eQMIService)svcID, + (WORD)msgID, + false, + false, + pIn, + inLen ); + + if (pRequest == 0) + { + mLastError = eGOBI_ERR_MEMORY; + return mLastError; + } + + // We use the event based notification approach + cSyncQueue evts( 12, true ); + cProtocolQueueNotification pn( &evts ); + + // Build the request object + sProtocolRequest req( pRequest, 0, to, 1, 1, &pn ); + if (to == 0) + { + mLastError = eGOBI_ERR_INTERNAL; + return mLastError; + } + + // Grab the server + std::map ::iterator pSvrIter; + pSvrIter = mServers.find( (eQMIService)svcID ); + if (pSvrIter == mServers.end()) + { + mLastError = eGOBI_ERR_NO_CONNECTION; + return mLastError; + } + + sServerInfo & si = pSvrIter->second; + cQMIProtocolServer * pSvr = si.mpServer; + if (pSvr == 0 || pSvr->IsConnected() == false) + { + mLastError = eGOBI_ERR_NO_CONNECTION; + return mLastError; + } + + // Grab the log from the server + const cProtocolLog & protocolLog = pSvr->GetLog(); + + // Schedule the request + ULONG reqID = pSvr->AddRequest( req ); + if (reqID == INVALID_REQUEST_ID) + { + mLastError = eGOBI_ERR_REQ_SCHEDULE; + return mLastError; + } + + // Store for external cancel + si.mRequestID = reqID; + + bool bReq = false; + bool bExit = false; + DWORD idx; + + // Returned response + sProtocolBuffer rsp; + + // Process up to the indicated timeout + cEvent & sigEvt = evts.GetSignalEvent(); + while (bExit == false) + { + int wc = sigEvt.Wait( to, idx ); + if (wc == ETIME) + { + if (bReq == true) + { + mLastError = eGOBI_ERR_RESPONSE_TO; + } + else + { + mLastError = eGOBI_ERR_REQUEST_TO; + } + break; + } + else if (wc != 0) + { + mLastError = eGOBI_ERR_INTERNAL; + break; + } + + sProtocolNotificationEvent evt; + bool bEvt = evts.GetElement( idx, evt ); + if (bEvt == false) + { + mLastError = eGOBI_ERR_INTERNAL; + bExit = true; + break; + } + + switch (evt.mEventType) + { + case ePROTOCOL_EVT_REQ_ERR: + mLastError = eGOBI_ERR_REQUEST; + bExit = true; + break; + + case ePROTOCOL_EVT_RSP_ERR: + mLastError = eGOBI_ERR_RESPONSE; + bExit = true; + break; + + case ePROTOCOL_EVT_REQ_SENT: + { + // Grab the as-sent request + DWORD id = evt.mParam2; + sProtocolBuffer tmpReq = protocolLog.GetBuffer( id ); + sSharedBuffer * pTmpRequest = tmpReq.GetSharedBuffer(); + if (pTmpRequest != 0) + { + // Grab the transaction ID + sQMIServiceBuffer actualReq( pTmpRequest ); + si.mRequestTXID = actualReq.GetTransactionID(); + } + + bReq = true; + } + break; + + case ePROTOCOL_EVT_RSP_RECV: + // Success! + rsp = protocolLog.GetBuffer( evt.mParam2 ); + bExit = true; + break; + + default: + break; + } + } + + if ( (mLastError == eGOBI_ERR_INTERNAL) + || (mLastError == eGOBI_ERR_REQUEST_TO) + || (mLastError == eGOBI_ERR_RESPONSE_TO) ) + { + // Remove the request as our protocol notification object is + // about to go out of scope and hence be destroyed + pSvr->RemoveRequest( reqID ); + } + + if (rsp.IsValid() == false) + { + return GetCorrectedLastError(); + } + + // Did we receive a valid QMI response? + sQMIServiceBuffer qmiRsp( rsp.GetSharedBuffer() ); + if (qmiRsp.IsValid() == false) + { + mLastError = eGOBI_ERR_MALFORMED_RSP; + return mLastError; + } + + // Caller might not be interested in actual output (beyond error code) + ULONG maxSz = 0; + if (pOutLen != 0) + { + maxSz = *pOutLen; + } + + if (maxSz > 0) + { + // TLV 2 is always present + ULONG needSz = 0; + const BYTE * pData = (const BYTE *)qmiRsp.GetRawContents( needSz ); + if (needSz == 0 || pData == 0) + { + return eGOBI_ERR_INVALID_RSP; + } + + *pOutLen = needSz; + if (needSz > maxSz) + { + return eGOBI_ERR_BUFFER_SZ; + } + + memcpy( pOut, pData, needSz ); + } + + // Check the mandatory QMI result TLV for success + ULONG rc = 0; + ULONG ec = 0; + bool bResult = qmiRsp.GetResult( rc, ec ); + if (bResult == false) + { + mLastError = eGOBI_ERR_MALFORMED_RSP; + return mLastError; + } + else if (rc != 0) + { + return GetCorrectedQMIError( ec ); + } + + // Success! + return eGOBI_ERR_NONE; +} + +/*=========================================================================== +METHOD: + CancelSend (Public Method) + +DESCRIPTION: + Cancel the most recent in-progress Send() based operation + +PARAMETERS: + svcID [ I ] - Service whose outstanding request is to be cancelled + pTXID [ O ] - QMI transaction ID of outstanding request + +RETURN VALUE: + eGobiError - The result +===========================================================================*/ +eGobiError cGobiQMICore::CancelSend( + ULONG svcID, + ULONG * pTXID ) +{ + // Grab the server + std::map ::iterator pSvrIter; + pSvrIter = mServers.find( (eQMIService)svcID ); + if (pSvrIter == mServers.end()) + { + mLastError = eGOBI_ERR_NO_CONNECTION; + return mLastError; + } + + sServerInfo & si = pSvrIter->second; + cQMIProtocolServer * pSvr = si.mpServer; + if (pSvr == 0) + { + return eGOBI_ERR_INTERNAL; + } + + if (si.mRequestID == 0xffffffff) + { + return eGOBI_ERR_NO_CANCELABLE_OP; + } + + bool bRemove = pSvr->RemoveRequest( si.mRequestID ); + if (bRemove == false) + { + return eGOBI_ERR_CANCEL_OP; + } + + if (pTXID != 0) + { + *pTXID = si.mRequestTXID; + } + + return eGOBI_ERR_NONE; +} + + + diff --git a/gobi-api/GobiAPI_2013-07-31-1347/Shared/GobiQMICore.h b/gobi-api/GobiAPI_2013-07-31-1347/Shared/GobiQMICore.h new file mode 100644 index 0000000..f9a1522 --- /dev/null +++ b/gobi-api/GobiAPI_2013-07-31-1347/Shared/GobiQMICore.h @@ -0,0 +1,191 @@ +/*=========================================================================== +FILE: + GobiQMICore.h + +DESCRIPTION: + QUALCOMM Gobi QMI Based API Core + +PUBLIC CLASSES AND FUNCTIONS: + cGobiQMICore + +Copyright (c) 2013, The Linux Foundation. All rights reserved. + +Redistribution and use in source and binary forms, with or without +modification, are permitted provided that the following conditions are met: + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above copyright + notice, this list of conditions and the following disclaimer in the + documentation and/or other materials provided with the distribution. + * Neither the name of The Linux Foundation nor the names of its + contributors may be used to endorse or promote products derived from + this software without specific prior written permission. + + +THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" +AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE +IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE +ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE +LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR +CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF +SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS +INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN +CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) +ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE +POSSIBILITY OF SUCH DAMAGE. +==========================================================================*/ + +/*=========================================================================*/ +// Pragmas +/*=========================================================================*/ +#pragma once + +//--------------------------------------------------------------------------- +// Include Files +//--------------------------------------------------------------------------- +#include "ProtocolBuffer.h" +#include "QMIProtocolServer.h" +#include "SyncQueue.h" +#include "GobiError.h" + +/*=========================================================================*/ +// Class cGobiQMICore +/*=========================================================================*/ +class cGobiQMICore +{ + public: + // Constructor + cGobiQMICore(); + + // Destructor + virtual ~cGobiQMICore(); + + // Initialize the object + virtual bool Initialize(); + + // Cleanup the object + virtual bool Cleanup(); + + // (Inline) Return the server as determined by the service type + cQMIProtocolServer * GetServer( eQMIService svc ) + { + cQMIProtocolServer * pSvr = 0; + + std::map ::const_iterator pIter; + pIter = mServers.find( svc ); + + if (pIter != mServers.end()) + { + const sServerInfo & si = pIter->second; + pSvr = si.mpServer; + } + + return pSvr; + }; + + // (Inline) Clear last error recorded + void ClearLastError() + { + mLastError = eGOBI_ERR_NONE; + }; + + // (Inline) Get last error recorded + eGobiError GetLastError() + { + return mLastError; + }; + + // (Inline) Return the last recorded error (if this happens to indicate + // that no error occurred then return eGOBI_ERR_INTERNAL) + eGobiError GetCorrectedLastError() + { + eGobiError ec = GetLastError(); + if (ec == eGOBI_ERR_NONE) + { + ec = eGOBI_ERR_INTERNAL; + } + + return ec; + }; + + // (Inline) Return the correct QMI error (if this happens to indicate + // that no error occurred then return the mapped eQMI_ERR_INTERNAL + // value) + eGobiError GetCorrectedQMIError( ULONG qmiErrorCode ) + { + ULONG ec = (ULONG)eQMI_ERR_INTERNAL + (ULONG)eGOBI_ERR_QMI_OFFSET; + if (qmiErrorCode != (ULONG)eQMI_ERR_NONE) + { + ec = qmiErrorCode + (ULONG)eGOBI_ERR_QMI_OFFSET; + } + + return (eGobiError)ec; + }; + + // Connect to the specified Gobi device interface + virtual std::set Connect( + LPCSTR pInterface, + std::set & services ); + + // Disconnect from the currently connected device interface + virtual bool Disconnect(); + + // Send a request using the specified QMI protocol server and wait + // for (and then return) the response + eGobiError Send( + ULONG svcID, + ULONG msgID, + ULONG to, + ULONG inLen, + const BYTE * pIn, + ULONG * pOutLen, + BYTE * pOut ); + + // Cancel the most recent in-progress Send() based operation + eGobiError CancelSend( + ULONG svcID, + ULONG * pTXID ); + + protected: + /* Device interface */ + CHAR mInterface[MAX_PATH]; + + /* QMI protocol server/protocol server log count */ + struct sServerInfo + { + public: + // Constructor (default) + sServerInfo() + : mpServer( 0 ), + mLogsProcessed( 0 ), + mRequestID( 0xffffffff ), + mRequestTXID( 0xffffffff ) + { }; + + // Constructor (parameterized) + sServerInfo( cQMIProtocolServer * pServer ) + : mpServer( pServer ), + mLogsProcessed( 0 ), + mRequestID( 0xffffffff ), + mRequestTXID( 0xffffffff ) + { }; + + /* Protocol server */ + cQMIProtocolServer * mpServer; + + /* Protocol server logs processed */ + ULONG mLogsProcessed; + + /* Last scheduled request ID */ + ULONG mRequestID; + + /* Last schedule request QMI transaction ID */ + ULONG mRequestTXID; + }; + + /* QMI protocol servers */ + std::map mServers; + + /* Last error recorded */ + eGobiError mLastError; +}; -- cgit v1.2.3