summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDan Williams <dcbw@redhat.com>2012-11-12 14:13:15 -0600
committerDan Williams <dcbw@redhat.com>2012-11-12 14:13:15 -0600
commitaeddf3ef8a55de892e06a0e2c4b61e73eaced3e3 (patch)
tree03348302c7d5d58bf67fe8911cba0a3f85626246
parentabab11c2917c974653e6daf9add08bb5e1f3342b (diff)
gobi-api: add GobiAPI_2012-09-12-0719
-rwxr-xr-xgobi-api/GobiAPI_2012-09-12-0719/Core/Comm.cpp647
-rwxr-xr-xgobi-api/GobiAPI_2012-09-12-0719/Core/Comm.h139
-rwxr-xr-xgobi-api/GobiAPI_2012-09-12-0719/Core/Connection.h149
-rwxr-xr-xgobi-api/GobiAPI_2012-09-12-0719/Core/Event.cpp437
-rwxr-xr-xgobi-api/GobiAPI_2012-09-12-0719/Core/Event.h117
-rwxr-xr-xgobi-api/GobiAPI_2012-09-12-0719/Core/ProtocolBuffer.cpp222
-rwxr-xr-xgobi-api/GobiAPI_2012-09-12-0719/Core/ProtocolBuffer.h162
-rwxr-xr-xgobi-api/GobiAPI_2012-09-12-0719/Core/ProtocolEnum.h244
-rwxr-xr-xgobi-api/GobiAPI_2012-09-12-0719/Core/ProtocolLog.cpp190
-rwxr-xr-xgobi-api/GobiAPI_2012-09-12-0719/Core/ProtocolLog.h91
-rwxr-xr-xgobi-api/GobiAPI_2012-09-12-0719/Core/ProtocolNotification.cpp171
-rwxr-xr-xgobi-api/GobiAPI_2012-09-12-0719/Core/ProtocolNotification.h237
-rwxr-xr-xgobi-api/GobiAPI_2012-09-12-0719/Core/ProtocolRequest.cpp254
-rwxr-xr-xgobi-api/GobiAPI_2012-09-12-0719/Core/ProtocolRequest.h193
-rwxr-xr-xgobi-api/GobiAPI_2012-09-12-0719/Core/ProtocolServer.cpp1750
-rwxr-xr-xgobi-api/GobiAPI_2012-09-12-0719/Core/ProtocolServer.h363
-rwxr-xr-xgobi-api/GobiAPI_2012-09-12-0719/Core/QMIBuffers.cpp366
-rwxr-xr-xgobi-api/GobiAPI_2012-09-12-0719/Core/QMIBuffers.h391
-rwxr-xr-xgobi-api/GobiAPI_2012-09-12-0719/Core/QMIEnum.h1722
-rwxr-xr-xgobi-api/GobiAPI_2012-09-12-0719/Core/QMIProtocolServer.cpp422
-rwxr-xr-xgobi-api/GobiAPI_2012-09-12-0719/Core/QMIProtocolServer.h116
-rwxr-xr-xgobi-api/GobiAPI_2012-09-12-0719/Core/SharedBuffer.cpp375
-rwxr-xr-xgobi-api/GobiAPI_2012-09-12-0719/Core/SharedBuffer.h166
-rwxr-xr-xgobi-api/GobiAPI_2012-09-12-0719/Core/Socket.cpp812
-rwxr-xr-xgobi-api/GobiAPI_2012-09-12-0719/Core/Socket.h164
-rwxr-xr-xgobi-api/GobiAPI_2012-09-12-0719/Core/StdAfx.h200
-rwxr-xr-xgobi-api/GobiAPI_2012-09-12-0719/Core/SyncQueue.h419
-rwxr-xr-xgobi-api/GobiAPI_2012-09-12-0719/Gobi3000Translation/Gobi3000Translation.cpp101
-rwxr-xr-xgobi-api/GobiAPI_2012-09-12-0719/Gobi3000Translation/Gobi3000Translation.h1028
-rwxr-xr-xgobi-api/GobiAPI_2012-09-12-0719/Gobi3000Translation/Gobi3000TranslationCAT.cpp177
-rwxr-xr-xgobi-api/GobiAPI_2012-09-12-0719/Gobi3000Translation/Gobi3000TranslationDMS.cpp1483
-rwxr-xr-xgobi-api/GobiAPI_2012-09-12-0719/Gobi3000Translation/Gobi3000TranslationNAS.cpp2022
-rwxr-xr-xgobi-api/GobiAPI_2012-09-12-0719/Gobi3000Translation/Gobi3000TranslationOMA.cpp481
-rwxr-xr-xgobi-api/GobiAPI_2012-09-12-0719/Gobi3000Translation/Gobi3000TranslationPDS.cpp1207
-rwxr-xr-xgobi-api/GobiAPI_2012-09-12-0719/Gobi3000Translation/Gobi3000TranslationRMS.cpp188
-rwxr-xr-xgobi-api/GobiAPI_2012-09-12-0719/Gobi3000Translation/Gobi3000TranslationUIM.cpp1170
-rwxr-xr-xgobi-api/GobiAPI_2012-09-12-0719/Gobi3000Translation/Gobi3000TranslationVoice.cpp174
-rwxr-xr-xgobi-api/GobiAPI_2012-09-12-0719/Gobi3000Translation/Gobi3000TranslationWDS.cpp3486
-rwxr-xr-xgobi-api/GobiAPI_2012-09-12-0719/Gobi3000Translation/Gobi3000TranslationWMS.cpp1121
-rwxr-xr-xgobi-api/GobiAPI_2012-09-12-0719/GobiConnectionMgmt/GobiConnectionMgmt.cpp606
-rwxr-xr-xgobi-api/GobiAPI_2012-09-12-0719/GobiConnectionMgmt/GobiConnectionMgmt.h270
-rwxr-xr-xgobi-api/GobiAPI_2012-09-12-0719/GobiConnectionMgmt/GobiConnectionMgmtAPI.h14793
-rwxr-xr-xgobi-api/GobiAPI_2012-09-12-0719/GobiConnectionMgmt/GobiConnectionMgmtAPIEnums.h6289
-rwxr-xr-xgobi-api/GobiAPI_2012-09-12-0719/GobiConnectionMgmt/GobiConnectionMgmtAPIStructs.h28009
-rwxr-xr-xgobi-api/GobiAPI_2012-09-12-0719/GobiConnectionMgmt/GobiConnectionMgmtExports.cpp20395
-rwxr-xr-xgobi-api/GobiAPI_2012-09-12-0719/GobiSampleCM/GobiCMCallback.cpp309
-rwxr-xr-xgobi-api/GobiAPI_2012-09-12-0719/GobiSampleCM/GobiCMCallback.h83
-rwxr-xr-xgobi-api/GobiAPI_2012-09-12-0719/GobiSampleCM/GobiCMDLL.cpp1239
-rwxr-xr-xgobi-api/GobiAPI_2012-09-12-0719/GobiSampleCM/GobiCMDLL.h266
-rwxr-xr-xgobi-api/GobiAPI_2012-09-12-0719/GobiSampleCM/QTSampleCM.cpp316
-rwxr-xr-xgobi-api/GobiAPI_2012-09-12-0719/GobiSampleCM/QTSampleCM.h459
-rwxr-xr-xgobi-api/GobiAPI_2012-09-12-0719/GobiSampleCM/SampleCM.cpp1735
-rwxr-xr-xgobi-api/GobiAPI_2012-09-12-0719/GobiSampleCM/SampleCM.h398
-rwxr-xr-xgobi-api/GobiAPI_2012-09-12-0719/GobiSampleCM/android/assets/qml/GobiSampleCM/Connect.pngbin0 -> 5581 bytes
-rwxr-xr-xgobi-api/GobiAPI_2012-09-12-0719/GobiSampleCM/android/assets/qml/GobiSampleCM/Info.pngbin0 -> 5300 bytes
-rwxr-xr-xgobi-api/GobiAPI_2012-09-12-0719/GobiSampleCM/android/assets/qml/GobiSampleCM/main.qml823
-rwxr-xr-xgobi-api/GobiAPI_2012-09-12-0719/GobiSampleCM/android/res/drawable/icon.pngbin0 -> 7361 bytes
-rwxr-xr-xgobi-api/GobiAPI_2012-09-12-0719/GobiSampleCM/android/res/drawable/logo.pngbin0 -> 427576 bytes
-rwxr-xr-xgobi-api/GobiAPI_2012-09-12-0719/GobiSampleCM/main.cpp45
-rwxr-xr-xgobi-api/GobiAPI_2012-09-12-0719/GobiSampleCM/qml/GobiSampleCM/Connect.pngbin0 -> 5581 bytes
-rwxr-xr-xgobi-api/GobiAPI_2012-09-12-0719/GobiSampleCM/qml/GobiSampleCM/Info.pngbin0 -> 5300 bytes
-rwxr-xr-xgobi-api/GobiAPI_2012-09-12-0719/GobiSampleCM/qml/GobiSampleCM/main.qml823
-rwxr-xr-xgobi-api/GobiAPI_2012-09-12-0719/Readme.txt136
-rwxr-xr-xgobi-api/GobiAPI_2012-09-12-0719/Shared/GobiError.h137
-rwxr-xr-xgobi-api/GobiAPI_2012-09-12-0719/Shared/GobiQMICore.cpp531
-rwxr-xr-xgobi-api/GobiAPI_2012-09-12-0719/Shared/GobiQMICore.h192
66 files changed, 101011 insertions, 0 deletions
diff --git a/gobi-api/GobiAPI_2012-09-12-0719/Core/Comm.cpp b/gobi-api/GobiAPI_2012-09-12-0719/Core/Comm.cpp
new file mode 100755
index 0000000..ec5663c
--- /dev/null
+++ b/gobi-api/GobiAPI_2012-09-12-0719/Core/Comm.cpp
@@ -0,0 +1,647 @@
+/*===========================================================================
+FILE:
+ Comm.cpp
+
+DESCRIPTION:
+ Implementation of cComm class
+
+PUBLIC CLASSES AND METHODS:
+ cComm
+ This class wraps low level port communications
+
+Copyright (c) 2012, Code Aurora Forum. 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 Code Aurora Forum 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;
+ 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;
+ }
+
+ int nRet = write( mPort, pBuf, bufSz );
+ if (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 miliseconds\n", bufSz, GetTickCount() - nStart );
+#endif
+
+ return true;
+}
diff --git a/gobi-api/GobiAPI_2012-09-12-0719/Core/Comm.h b/gobi-api/GobiAPI_2012-09-12-0719/Core/Comm.h
new file mode 100755
index 0000000..14ffe47
--- /dev/null
+++ b/gobi-api/GobiAPI_2012-09-12-0719/Core/Comm.h
@@ -0,0 +1,139 @@
+/*===========================================================================
+FILE:
+ Comm.h
+
+DESCRIPTION:
+ Declaration of cComm class
+
+PUBLIC CLASSES AND METHODS:
+ cComm
+ This class wraps low level port communications
+
+Copyright (c) 2012, Code Aurora Forum. 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 Code Aurora Forum 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_2012-09-12-0719/Core/Connection.h b/gobi-api/GobiAPI_2012-09-12-0719/Core/Connection.h
new file mode 100755
index 0000000..8a2a763
--- /dev/null
+++ b/gobi-api/GobiAPI_2012-09-12-0719/Core/Connection.h
@@ -0,0 +1,149 @@
+/*===========================================================================
+FILE:
+ Connection.h
+
+DESCRIPTION:
+ Declaration of cConnection class
+
+PUBLIC CLASSES AND METHODS:
+ cComm
+ This class defines a prototype for low level communications
+
+Copyright (c) 2012, Code Aurora Forum. 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 Code Aurora Forum 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_2012-09-12-0719/Core/Event.cpp b/gobi-api/GobiAPI_2012-09-12-0719/Core/Event.cpp
new file mode 100755
index 0000000..f653ea8
--- /dev/null
+++ b/gobi-api/GobiAPI_2012-09-12-0719/Core/Event.cpp
@@ -0,0 +1,437 @@
+/*===========================================================================
+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) 2012, Code Aurora Forum. 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 Code Aurora Forum 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 <cEvent *> 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_2012-09-12-0719/Core/Event.h b/gobi-api/GobiAPI_2012-09-12-0719/Core/Event.h
new file mode 100755
index 0000000..8bbbc4f
--- /dev/null
+++ b/gobi-api/GobiAPI_2012-09-12-0719/Core/Event.h
@@ -0,0 +1,117 @@
+/*===========================================================================
+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) 2012, Code Aurora Forum. 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 Code Aurora Forum 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 <vector>
+
+//---------------------------------------------------------------------------
+// Prototype
+//---------------------------------------------------------------------------
+
+class cEvent;
+
+/*=========================================================================*/
+// Free methods
+/*=========================================================================*/
+
+// Wait for any of the events to be set and return the value
+int WaitOnMultipleEvents(
+ std::vector <cEvent *> 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 <cEvent *> events,
+ DWORD timeoutMS,
+ DWORD & val,
+ DWORD & eventIndex );
+};
+
diff --git a/gobi-api/GobiAPI_2012-09-12-0719/Core/ProtocolBuffer.cpp b/gobi-api/GobiAPI_2012-09-12-0719/Core/ProtocolBuffer.cpp
new file mode 100755
index 0000000..756e568
--- /dev/null
+++ b/gobi-api/GobiAPI_2012-09-12-0719/Core/ProtocolBuffer.cpp
@@ -0,0 +1,222 @@
+/*===========================================================================
+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) 2012, Code Aurora Forum. 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 Code Aurora Forum 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_2012-09-12-0719/Core/ProtocolBuffer.h b/gobi-api/GobiAPI_2012-09-12-0719/Core/ProtocolBuffer.h
new file mode 100755
index 0000000..c23ecbc
--- /dev/null
+++ b/gobi-api/GobiAPI_2012-09-12-0719/Core/ProtocolBuffer.h
@@ -0,0 +1,162 @@
+/*===========================================================================
+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) 2012, Code Aurora Forum. 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 Code Aurora Forum 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_2012-09-12-0719/Core/ProtocolEnum.h b/gobi-api/GobiAPI_2012-09-12-0719/Core/ProtocolEnum.h
new file mode 100755
index 0000000..3a88050
--- /dev/null
+++ b/gobi-api/GobiAPI_2012-09-12-0719/Core/ProtocolEnum.h
@@ -0,0 +1,244 @@
+/*===========================================================================
+FILE:
+ ProtocolEnum.h
+
+DESCRIPTION:
+ Generic protocol enumerations and related methods
+
+PUBLIC ENUMERATIONS AND METHODS:
+ eProtocolType
+
+Copyright (c) 2012, Code Aurora Forum. 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 Code Aurora Forum 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_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_13_RX, // 086 QMI service ID 13 protocol (incoming)
+ ePROTOCOL_QMI_13_TX, // 087 QMI service ID 13 protocol (outgoing)
+ ePROTOCOL_QMI_RMTFS_RX, // 088 QMI RMTFS protocol (incoming)
+ ePROTOCOL_QMI_RMTFS_TX, // 089 QMI RMTFS protocol (outgoing)
+ ePROTOCOL_QMI_15_RX, // 090 QMI service ID 15 protocol (incoming)
+ ePROTOCOL_QMI_15_TX, // 091 QMI service ID 15 protocol (outgoing)
+ ePROTOCOL_QMI_LOC_RX, // 092 QMI UIM protocol (incoming)
+ ePROTOCOL_QMI_LOC_TX, // 093 QMI UIM protocol (outgoing)
+ ePROTOCOL_QMI_SAR_RX, // 094 QMI PBM protocol (incoming)
+ ePROTOCOL_QMI_SAR_TX, // 095 QMI PBM protocol (outgoing)
+ ePROTOCOL_QMI_18_RX, // 096 QMI service ID 18 protocol (incoming)
+ ePROTOCOL_QMI_18_TX, // 097 QMI service ID 18 protocol (outgoing)
+ ePROTOCOL_QMI_19_RX, // 098 QMI service ID 19 protocol (incoming)
+ ePROTOCOL_QMI_19_TX, // 099 QMI service ID 19 protocol (outgoing)
+ ePROTOCOL_QMI_CSD_RX, // 100 QMI CSD protocol (incoming)
+ ePROTOCOL_QMI_CSD_TX, // 101 QMI CSD protocol (outgoing)
+ ePROTOCOL_QMI_EFS_RX, // 102 QMI EFS protocol (incoming)
+ ePROTOCOL_QMI_EFS_TX, // 103 QMI EFS protocol (outgoing)
+ ePROTOCOL_QMI_22_RX, // 104 QMI service ID 22 protocol (incoming)
+ ePROTOCOL_QMI_22_TX, // 105 QMI service ID 22 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_25_RX, // 110 QMI service ID 25 protocol (incoming)
+ ePROTOCOL_QMI_25_TX, // 111 QMI service ID 25 protocol (outgoing)
+ ePROTOCOL_QMI_26_RX, // 112 QMI service ID 26 protocol (incoming)
+ ePROTOCOL_QMI_26_TX, // 113 QMI service ID 26 protocol (outgoing)
+ ePROTOCOL_QMI_27_RX, // 114 QMI service ID 27 protocol (incoming)
+ ePROTOCOL_QMI_27_TX, // 115 QMI service ID 27 protocol (outgoing)
+ ePROTOCOL_QMI_28_RX, // 116 QMI service ID 28 protocol (incoming)
+ ePROTOCOL_QMI_28_TX, // 117 QMI service ID 28 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_QMI_CTL_RX && pt <= ePROTOCOL_QMI_28_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_28_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;
+};
diff --git a/gobi-api/GobiAPI_2012-09-12-0719/Core/ProtocolLog.cpp b/gobi-api/GobiAPI_2012-09-12-0719/Core/ProtocolLog.cpp
new file mode 100755
index 0000000..165daf0
--- /dev/null
+++ b/gobi-api/GobiAPI_2012-09-12-0719/Core/ProtocolLog.cpp
@@ -0,0 +1,190 @@
+/*===========================================================================
+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) 2012, Code Aurora Forum. 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 Code Aurora Forum 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_2012-09-12-0719/Core/ProtocolLog.h b/gobi-api/GobiAPI_2012-09-12-0719/Core/ProtocolLog.h
new file mode 100755
index 0000000..683fd83
--- /dev/null
+++ b/gobi-api/GobiAPI_2012-09-12-0719/Core/ProtocolLog.h
@@ -0,0 +1,91 @@
+/*===========================================================================
+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) 2012, Code Aurora Forum. 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 Code Aurora Forum 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 <climits>
+
+//---------------------------------------------------------------------------
+// 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 <sProtocolBuffer> mLog;
+};
diff --git a/gobi-api/GobiAPI_2012-09-12-0719/Core/ProtocolNotification.cpp b/gobi-api/GobiAPI_2012-09-12-0719/Core/ProtocolNotification.cpp
new file mode 100755
index 0000000..6c7d725
--- /dev/null
+++ b/gobi-api/GobiAPI_2012-09-12-0719/Core/ProtocolNotification.cpp
@@ -0,0 +1,171 @@
+/*===========================================================================
+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) 2012, Code Aurora Forum. 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 Code Aurora Forum 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 <sProtocolNotificationEvent> * 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_2012-09-12-0719/Core/ProtocolNotification.h b/gobi-api/GobiAPI_2012-09-12-0719/Core/ProtocolNotification.h
new file mode 100755
index 0000000..c31d1e5
--- /dev/null
+++ b/gobi-api/GobiAPI_2012-09-12-0719/Core/ProtocolNotification.h
@@ -0,0 +1,237 @@
+/*===========================================================================
+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) 2012, Code Aurora Forum. 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 Code Aurora Forum 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 <sProtocolNotificationEvent> * 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 <sProtocolNotificationEvent> * mpSQ;
+};
diff --git a/gobi-api/GobiAPI_2012-09-12-0719/Core/ProtocolRequest.cpp b/gobi-api/GobiAPI_2012-09-12-0719/Core/ProtocolRequest.cpp
new file mode 100755
index 0000000..21235e0
--- /dev/null
+++ b/gobi-api/GobiAPI_2012-09-12-0719/Core/ProtocolRequest.cpp
@@ -0,0 +1,254 @@
+/*===========================================================================
+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) 2012, Code Aurora Forum. 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 Code Aurora Forum 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_2012-09-12-0719/Core/ProtocolRequest.h b/gobi-api/GobiAPI_2012-09-12-0719/Core/ProtocolRequest.h
new file mode 100755
index 0000000..0b9b295
--- /dev/null
+++ b/gobi-api/GobiAPI_2012-09-12-0719/Core/ProtocolRequest.h
@@ -0,0 +1,193 @@
+/*===========================================================================
+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) 2012, Code Aurora Forum. 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 Code Aurora Forum 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_2012-09-12-0719/Core/ProtocolServer.cpp b/gobi-api/GobiAPI_2012-09-12-0719/Core/ProtocolServer.cpp
new file mode 100755
index 0000000..66bd3b2
--- /dev/null
+++ b/gobi-api/GobiAPI_2012-09-12-0719/Core/ProtocolServer.cpp
@@ -0,0 +1,1750 @@
+/*===========================================================================
+FILE:
+ ProtocolServer.cpp
+
+DESCRIPTION:
+ Generic protocol packet server
+
+PUBLIC CLASSES AND METHODS:
+ cProtocolServer
+ Abstract base class for protocol servers
+
+Copyright (c) 2012, Code Aurora Forum. 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 Code Aurora Forum 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 <climits>
+
+//---------------------------------------------------------------------------
+// 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 <ULONG, sProtocolReqRsp *>::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 <tSchedule>::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 <tSchedule>::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 <ULONG, sProtocolReqRsp *>::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 <tSchedule> > tempSchedule;
+
+ std::set <tSchedule>::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 <ULONG, sProtocolReqRsp *>::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_2012-09-12-0719/Core/ProtocolServer.h b/gobi-api/GobiAPI_2012-09-12-0719/Core/ProtocolServer.h
new file mode 100755
index 0000000..4db0d5c
--- /dev/null
+++ b/gobi-api/GobiAPI_2012-09-12-0719/Core/ProtocolServer.h
@@ -0,0 +1,363 @@
+/*===========================================================================
+FILE:
+ ProtocolServer.h
+
+DESCRIPTION:
+ Generic protocol packet server
+
+PUBLIC CLASSES AND METHODS:
+ cProtocolServer
+ Abstract base class for protocol servers
+
+Copyright (c) 2012, Code Aurora Forum. 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 Code Aurora Forum 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 <map>
+#include <set>
+
+//---------------------------------------------------------------------------
+// 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;
+ };
+
+ /* 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;
+
+ /* Underlying protocol request */
+ sProtocolRequest mRequest;
+ };
+
+ // 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 <tSchedule>::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 <timespec, ULONG> tSchedule;
+ std::set < tSchedule, std::less <tSchedule> > 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 <ULONG, sProtocolReqRsp *> 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_2012-09-12-0719/Core/QMIBuffers.cpp b/gobi-api/GobiAPI_2012-09-12-0719/Core/QMIBuffers.cpp
new file mode 100755
index 0000000..79c647a
--- /dev/null
+++ b/gobi-api/GobiAPI_2012-09-12-0719/Core/QMIBuffers.cpp
@@ -0,0 +1,366 @@
+/*===========================================================================
+FILE:
+ QMIBuffers.cpp
+
+DESCRIPTION:
+ QMI service protocol related structures and affliated methods
+
+PUBLIC CLASSES AND METHODS:
+ sQMIControlRawTransactionHeader
+ sQMIServiceRawTransactionHeader
+ sQMIRawMessageHeader
+ sQMIRawContentHeader
+
+ sQMIServiceBuffer
+
+Copyright (c) 2012, Code Aurora Forum. 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 Code Aurora Forum 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 <ULONG, const sQMIRawContentHeader *>::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_2012-09-12-0719/Core/QMIBuffers.h b/gobi-api/GobiAPI_2012-09-12-0719/Core/QMIBuffers.h
new file mode 100755
index 0000000..267da36
--- /dev/null
+++ b/gobi-api/GobiAPI_2012-09-12-0719/Core/QMIBuffers.h
@@ -0,0 +1,391 @@
+/*===========================================================================
+FILE:
+ QMIBuffers.h
+
+DESCRIPTION:
+ QMI service protocol related structures and affliated methods
+
+PUBLIC CLASSES AND METHODS:
+ sQMUXHeader
+ sQMIControlRawTransactionHeader
+ sQMIServiceRawTransactionHeader
+ sQMIRawMessageHeader
+ sQMIRawContentHeader
+
+ sQMIServiceBuffer
+
+Copyright (c) 2012, Code Aurora Forum. 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 Code Aurora Forum 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 <map>
+#include <vector>
+
+//---------------------------------------------------------------------------
+// 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 <ULONG, const sQMIRawContentHeader *> 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 <ULONG, const sQMIRawContentHeader *> mContents;
+
+ private:
+ // Prevent 'upcopying'
+ sQMIServiceBuffer( const sProtocolBuffer & );
+ sQMIServiceBuffer & operator = ( const sProtocolBuffer & );
+};
+
diff --git a/gobi-api/GobiAPI_2012-09-12-0719/Core/QMIEnum.h b/gobi-api/GobiAPI_2012-09-12-0719/Core/QMIEnum.h
new file mode 100755
index 0000000..dd6dd4b
--- /dev/null
+++ b/gobi-api/GobiAPI_2012-09-12-0719/Core/QMIEnum.h
@@ -0,0 +1,1722 @@
+/*===========================================================================
+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
+ eQMIMessageCAT
+ eQMIMessageRMS
+ eQMIMessageOMA
+ eQMIResultCode
+ eQMIErrorCode
+ eQMICallEndReason
+ eIPAddressType
+ eSMSMessageMode
+
+Copyright (c) 2012, Code Aurora Forum. 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 Code Aurora Forum 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
+//---------------------------------------------------------------------------
+
+// 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_RESERVED_13, // 013 Reserved
+ eQMI_SVC_RMTFS, // 014 Remote file system service
+ eQMI_SVC_RESERVED_15, // 015 Reserved
+ eQMI_SVC_LOC, // 016 Location service
+ eQMI_SVC_SAR, // 017 Specific absorption rate service
+ eQMI_SVC_RESERVED_18, // 018 Reserved
+ eQMI_SVC_RESERVED_19, // 019 Reserved
+ eQMI_SVC_CSD, // 020 Core sound driver service
+ eQMI_SVC_EFS, // 021 Embedded file system service
+ eQMI_SVC_RESERVED_22, // 022 Reserved
+ eQMI_SVC_TS, // 023 Thermal sensors service
+ eQMI_SVC_TMD, // 024 Thermal mitigation device service
+ eQMI_SVC_RESERVED_25, // 025 Reserved
+ eQMI_SVC_RESERVED_26, // 026 Reserved
+ eQMI_SVC_RESERVED_27, // 027 Reserved
+ eQMI_SVC_RESERVED_28, // 028 Reserved
+
+ 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_RESERVED_28)
+ || (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_START_NET = 32, // 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_AUTOCONNECT = 81, // 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_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_START_NET && 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_SET_IP_FAMILY)
+ || (msgID >= eQMI_WDS_SET_AUTOCONNECT && 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_CAPS = 32, // 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_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_CAPS && 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_RSSI = 32, // 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_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_RSSI && 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_RAW_SEND = 32, // 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_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_RAW_SEND && 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, // 00 Reset PDS service state variables
+ eQMI_PDS_SET_EVENT, // 01 Set PDS report conditions
+ eQMI_PDS_EVENT_IND = 1, // 01 PDS report indication
+
+ eQMI_PDS_GET_STATE = 32, // 32 Return PDS service state
+ eQMI_PDS_STATE_IND = 32, // 32 PDS service state indication
+ eQMI_PDS_SET_STATE, // 33 Set PDS service state
+ eQMI_PDS_START_SESSION, // 34 Start a PDS tracking session
+ eQMI_PDS_GET_SESSION_INFO, // 35 Get PDS tracking session info
+ eQMI_PDS_FIX_POSITION, // 36 Manual tracking session position
+ eQMI_PDS_END_SESSION, // 37 End a PDS tracking session
+ eQMI_PDS_GET_NMEA_CFG, // 38 Get NMEA sentence config
+ eQMI_PDS_SET_NMEA_CFG, // 39 Set NMEA sentence config
+ eQMI_PDS_INJECT_TIME, // 40 Inject a time reference
+ eQMI_PDS_GET_DEFAULTS, // 41 Get default tracking session config
+ eQMI_PDS_SET_DEFAULTS, // 42 Set default tracking session config
+ eQMI_PDS_GET_XTRA_PARAMS, // 43 Get the GPS XTRA parameters
+ eQMI_PDS_SET_XTRA_PARAMS, // 44 Set the GPS XTRA parameters
+ eQMI_PDS_FORCE_XTRA_DL, // 45 Force a GPS XTRA database download
+ eQMI_PDS_GET_AGPS_CONFIG, // 46 Get the AGPS mode configuration
+ eQMI_PDS_SET_AGPS_CONFIG, // 47 Set the AGPS mode configuration
+ eQMI_PDS_GET_SVC_AUTOTRACK, // 48 Get the service auto-tracking state
+ eQMI_PDS_SET_SVC_AUTOTRACK, // 49 Set the service auto-tracking state
+ eQMI_PDS_GET_COM_AUTOTRACK, // 50 Get COM port auto-tracking config
+ eQMI_PDS_SET_COM_AUTOTRACK, // 51 Set COM port auto-tracking config
+ eQMI_PDS_RESET_DATA, // 52 Reset PDS service data
+ eQMI_PDS_SINGLE_FIX, // 53 Request single position fix
+ eQMI_PDS_GET_VERSION, // 54 Get PDS service version
+ eQMI_PDS_INJECT_XTRA, // 55 Inject XTRA data
+ eQMI_PDS_INJECT_POSITION, // 56 Inject position data
+ eQMI_PDS_INJECT_WIFI, // 57 Inject Wi-Fi obtained data
+ eQMI_PDS_GET_SBAS_CONFIG, // 58 Get SBAS config
+ eQMI_PDS_SET_SBAS_CONFIG, // 59 Set SBAS config
+ eQMI_PDS_SEND_NI_RESPONSE, // 60 Send network initiated response
+ eQMI_PDS_INJECT_ABS_TIME, // 61 Inject absolute time
+ eQMI_PDS_INJECT_EFS, // 62 Inject EFS data
+ eQMI_PDS_GET_DPO_CONFIG, // 63 Get DPO config
+ eQMI_PDS_SET_DPO_CONFIG, // 64 Set DPO config
+ eQMI_PDS_GET_ODP_CONFIG, // 65 Get ODP config
+ eQMI_PDS_SET_ODP_CONFIG, // 66 Set ODP config
+ eQMI_PDS_CANCEL_SINGLE_FIX, // 67 Cancel single position fix
+ eQMI_PDS_GET_GPS_STATE, // 68 Get GPS state
+ eQMI_PDS_SET_PPM_EVT_REPORT, // 69 Set PPM event report
+ eQMI_PDS_SET_SPI_REPORT, // 70 Set SPI streaming reporting
+ eQMI_PDS_SET_SPI_RPT_IND = 70, // 70 Set SPI streaming indication
+ eQMI_PDS_SET_SPI_STATUS, // 71 Set SPI status
+ eQMI_PDS_SET_PPM_REPORT, // 72 Set PPM reporting state
+ eQMI_PDS_SET_PPM_RPT_IND = 72, // 72 Set PPM reporting state indication
+ eQMI_PDS_FORCE_RECEIVER_OFF, // 73 Force receiver off
+
+ eQMI_PDS_GET_METHODS = 80, // 80 Get GPS position methods state
+ eQMI_PDS_SET_METHODS, // 81 Set GPS position methods state
+ eQMI_PDS_INJECT_SENSOR, // 82 Inject sensor data
+ eQMI_PDS_INJECT_TIME_SYNC, // 83 Inject time sync data
+ eQMI_PDS_GET_SENSOR_CFG, // 84 Get sensor config
+ eQMI_PDS_SET_SENSOR_CFG, // 85 Set sensor config
+ eQMI_PDS_GET_NAV_CFG, // 86 Get navigation config
+ eQMI_PDS_SET_NAV_CFG, // 87 Set navigation config
+
+ eQMI_PDS_SET_WLAN_BLANK = 90, // 90 Set WLAN blanking
+ eQMI_PDS_SET_LBS_SC_RPT, // 91 Set LBS security challenge reporting
+ eQMI_PDS_LBS_SC_IND = 91, // 91 LBS security challenge indication
+ eQMI_PDS_SET_LBS_SC, // 92 Set LBS security challenge
+ eQMI_PDS_GET_LBS_ENCRYPT_CFG, // 93 Get LBS security encryption config
+ eQMI_PDS_SET_LBS_UPDATE_RATE, // 94 Set LBS security update rate
+ eQMI_PDS_SET_CELLDB_CONTROL, // 95 Set cell database control
+ eQMI_PDS_READY_IND, // 96 Ready indication
+
+ 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_CALL_ORIGINATE = 32, // 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_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_CALL_ORIGINATE && 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_READ_TRANSPARENT = 32, // 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_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_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_READ_TRANSPARENT && 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_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_CLIENT_REVISION = 32, // 32 Send client revision to service
+ eQMI_LOC_REGISTER_EVENTS, // 33 Register for events/indications
+ eQMI_LOC_START, // 34 Start GPS session
+ eQMI_LOC_STOP, // 35 Start GPS session
+ eQMI_LOC_POSITION_REPORT_IND, // 36 Position report indication
+ eQMI_LOC_GNSS_SAT_INFO_IND, // 37 GNSS satellite info indication
+ eQMI_LOC_NMEA_IND, // 38 NMEA sentence indication
+ eQMI_LOC_NETWORK_REQ_IND, // 39 Network initiated request indication
+ eQMI_LOC_INJECT_TIME_REQ_IND, // 40 Inject time request indication
+ eQMI_LOC_INJECT_ORBITS_REQ_IND, // 41 Inject predicted orbits req ind
+ eQMI_LOC_INJECT_POS_REQ_IND, // 42 Inject position request indication
+ eQMI_LOC_ENGINE_STATE_IND, // 43 Engine state indication
+ eQMI_LOC_FIX_SESSION_STATE_IND, // 44 Fi session state indication
+ eQMI_LOC_WIFI_REQ_IND, // 45 Wi-Fi request indication
+ eQMI_LOC_SENSOR_DATA_IND, // 46 Sensor streaming ready status ind
+ eQMI_LOC_INJECT_TIME_SYNC_IND, // 47 Inject time sync data indication
+ eQMI_LOC_SPI_STREAM_REQ_IND, // 48 SPI streaming reports req indication
+ eQMI_LOC_SVR_CONNECTION_REQ_IND, // 49 Server connection req indication
+ eQMI_LOC_GET_REV_REQ, // 50 Get service revision
+ eQMI_LOC_GET_REV_REQ_IND = 50, // 50 Get service revision indication
+ eQMI_LOC_GET_FIX_CRIT, // 51 Get fix criteria
+ eQMI_LOC_GET_FIX_CRIT_IND = 51, // 51 Get fix criteria indication
+ eQMI_LOC_NI_USER_RSP, // 52 Network initiated user response
+ eQMI_LOC_NI_USER_RSP_IND = 52, // 52 Network initiated user response ind
+ eQMI_LOC_INJECT_ORBITS, // 53 Inject predicted orbits data
+ eQMI_LOC_INJECT_ORBITS_IND = 53, // 53 Inject predicted orbits indication
+ eQMI_LOC_GET_ORBIT_SRC, // 54 Get predicted orbits data source
+ eQMI_LOC_GET_ORBIT_SRC_IND = 54, // 54 Get predicted orbits data source ind
+ eQMI_LOC_GET_ORBIT_VLD, // 55 Get predicted orbits data validity
+ eQMI_LOC_GET_ORBIT_VLD_IND = 55, // 55 Get predicted orbits validity ind
+ eQMI_LOC_INJECT_UTC, // 56 Inject UTC time
+ eQMI_LOC_INJECT_UTC_IND = 56, // 56 Inject UTC time indication
+ eQMI_LOC_INJECT_POS, // 57 Inject position
+ eQMI_LOC_INJECT_POS_IND = 57, // 57 Inject position indication
+ eQMI_LOC_SET_ENG_LOCK, // 58 Set engine lock
+ eQMI_LOC_SET_ENG_LOCK_IND = 58, // 58 Set engine lock indication
+ eQMI_LOC_GET_ENG_LOCK, // 59 Get engine lock
+ eQMI_LOC_GET_ENG_LOCK_IND = 59, // 59 Get engine lock indication
+ eQMI_LOC_SET_SBAS_CFG, // 60 Set SBAS config
+ eQMI_LOC_SET_SBAS_CFG_IND = 60, // 60 Set SBAS config indication
+ eQMI_LOC_GET_SBAS_CFG, // 61 Get SBAS config
+ eQMI_LOC_GET_SBAS_CFG_IND = 61, // 61 Get SBAS config indication
+ eQMI_LOC_SET_NMEA_TYPS, // 62 Set NMEA sentence types
+ eQMI_LOC_SET_NMEA_TYPS_IND = 62, // 62 Set NMEA sentence types indication
+ eQMI_LOC_GET_NMEA_TYPS, // 63 Get NMEA sentence types
+ eQMI_LOC_GET_NMEA_TYPS_IND = 63, // 63 Get NMEA sentence types indication
+ eQMI_LOC_SET_LPM_CFG, // 64 Set low power mode config
+ eQMI_LOC_SET_LPM_CFG_IND = 64, // 64 Set low power mode config indication
+ eQMI_LOC_GET_LPM_CFG, // 65 Get low power mode config
+ eQMI_LOC_GET_LPM_CFG_IND = 65, // 65 Get low power mode config indication
+ eQMI_LOC_SET_SERVER, // 66 Set A-GPS server
+ eQMI_LOC_SET_SERVER_IND = 66, // 66 Set A-GPS server indication
+ eQMI_LOC_GET_SERVER, // 67 Set A-GPS server
+ eQMI_LOC_GET_SERVER_IND = 67, // 67 Set A-GPS server indication
+ eQMI_LOC_DEL_ASST_DATA, // 68 Delete assistance data
+ eQMI_LOC_DEL_ASST_DATA_IND = 68, // 68 Delete assistance data indication
+ eQMI_LOC_SET_XTRA_T, // 69 Set XTRA_T session control
+ eQMI_LOC_SET_XTRA_T_IND = 69, // 69 Set XTRA_T session control indication
+ eQMI_LOC_GET_XTRA_T, // 70 Get XTRA_T session control
+ eQMI_LOC_GET_XTRA_T_IND = 70, // 70 Get XTRA_T session control indication
+ eQMI_LOC_INJECT_WIFI, // 71 Inject Wi-Fi info
+ eQMI_LOC_INJECT_WIFI_IND = 71, // 71 Inject Wi-Fi info indication
+ eQMI_LOC_NOTIFY_WIFI, // 72 Notify server of Wi-Fi status
+ eQMI_LOC_NOTIFY_WIFI_IND = 72, // 72 Notify server of Wi-Fi status ind
+ eQMI_LOC_GET_REG_EVENTS, // 73 Get registered event status
+ eQMI_LOC_GET_REG_EVENTS_IND = 73,// 73 Get registered event status ind
+ eQMI_LOC_SET_OP_MODE, // 74 Set operation mode
+ eQMI_LOC_SET_OP_MODE_IND = 74, // 74 Set operation mode indication
+ eQMI_LOC_GET_OP_MODE, // 75 Get operation mode
+ eQMI_LOC_GET_OP_MODE_IND = 75, // 75 Get operation mode indication
+ eQMI_LOC_SET_SPI_STATUS, // 76 Set SPI status
+ eQMI_LOC_SET_SPI_STATUS_IND = 76,// 76 Set SPI status indication
+ eQMI_LOC_INJECT_SENSOR, // 77 Inject sensor data
+ eQMI_LOC_INJECT_SENSOR_IND = 77, // 77 Inject sensor data indication
+ eQMI_LOC_INJ_TIME_SYNC, // 78 Inject time sync data
+ eQMI_LOC_INJ_TIME_SYNC_IND = 78, // 78 Inject time sync data indication
+ eQMI_LOC_SET_CRADLE, // 79 Set cradle mount config
+ eQMI_LOC_SET_CRADLE_IND = 79, // 79 Set cradle mount config indication
+ eQMI_LOC_GET_CRADLE, // 80 Get cradle mount config
+ eQMI_LOC_GET_CRADLE_IND = 80, // 80 Get cradle mount config indication
+ eQMI_LOC_SET_EXT_POWER, // 81 Set external power config
+ eQMI_LOC_SET_EXT_POWER_IND = 81, // 81 Set external power config indication
+ eQMI_LOC_GET_EXT_POWER, // 82 Get external power config
+ eQMI_LOC_GET_EXT_POWER_IND = 82, // 82 Get external power config indication
+ eQMI_LOC_INFORM_CONN, // 83 Inform service of connection status
+ eQMI_LOC_INFORM_CONN_IND = 83, // 83 Inform connection status indication
+ eQMI_LOC_SET_PROTO_CFG, // 84 Set protocol config
+ eQMI_LOC_SET_PROTO_CFG_IND = 84, // 84 Set protocol config indication
+ eQMI_LOC_GET_PROTO_CFG, // 85 Get protocol config
+ eQMI_LOC_GET_PROTO_CFG_IND = 85, // 85 Get protocol config indication
+ eQMI_LOC_SET_SENSOR_CFG, // 86 Set sensor control config
+ eQMI_LOC_SET_SENSOR_CFG_IND = 86,// 86 Set sensor control config indication
+ eQMI_LOC_GET_SENSOR_CFG, // 87 Get sensor control config
+ eQMI_LOC_GET_SENSOR_CFG_IND = 87,// 87 Get sensor control config indication
+ eQMI_LOC_SET_SENSOR_PRP, // 88 Set sensor properties
+ eQMI_LOC_SET_SENSOR_PRP_IND = 88,// 88 Set sensor properties indication
+ eQMI_LOC_GET_SENSOR_PRP, // 89 Get sensor properties
+ eQMI_LOC_GET_SENSOR_PRP_IND = 89,// 89 Get sensor properties indication
+ eQMI_LOC_SET_SENSOR_PRF, // 90 Set sensor performance control
+ eQMI_LOC_SET_SENSOR_PRF_IND = 90,// 90 Set sensor performance control ind
+ eQMI_LOC_GET_SENSOR_PRF, // 91 Get sensor performance control
+ eQMI_LOC_GET_SENSOR_PRF_IND = 91,// 91 Get sensor performance control ind
+ eQMI_LOC_INJ_SUPL_CERT, // 92 Inject SUPL certificate
+ eQMI_LOC_INJ_SUPL_CERT_IND = 92, // 92 Inject SUPL certificate indication
+ eQMI_LOC_DEL_SUPL_CERT, // 93 Delete SUPL certificate
+ eQMI_LOC_DEL_SUPL_CERT_IND = 93, // 93 Delete SUPL certificate indication
+ eQMI_LOC_SET_ENGINE_CFG, // 94 Set position engine config
+ eQMI_LOC_SET_ENGINE_CFG_IND = 94,// 94 Set position engine config ind
+ eQMI_LOC_GET_ENGINE_CFG, // 95 Get position engine config
+ eQMI_LOC_GET_ENGINE_CFG_IND = 95,// 95 Get position engine config ind
+
+ 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_CLIENT_REVISION && 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;
+};
+
+/*=========================================================================*/
+// 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_STATE = 32, // 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_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_STATE && 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;
+};
+
diff --git a/gobi-api/GobiAPI_2012-09-12-0719/Core/QMIProtocolServer.cpp b/gobi-api/GobiAPI_2012-09-12-0719/Core/QMIProtocolServer.cpp
new file mode 100755
index 0000000..57f5ea3
--- /dev/null
+++ b/gobi-api/GobiAPI_2012-09-12-0719/Core/QMIProtocolServer.cpp
@@ -0,0 +1,422 @@
+/*===========================================================================
+FILE:
+ QMIProtocolServer.cpp
+
+DESCRIPTION:
+ QMI protocol server
+
+PUBLIC CLASSES AND METHODS:
+ cQMIProtocolServer
+
+Copyright (c) 2012, Code Aurora Forum. 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 Code Aurora Forum 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
+
+ if (name.find( "QMUXD:" ) == 0)
+ {
+ // Remove qualifier
+ name = name.substr( 6 );
+ }
+
+ 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_2012-09-12-0719/Core/QMIProtocolServer.h b/gobi-api/GobiAPI_2012-09-12-0719/Core/QMIProtocolServer.h
new file mode 100755
index 0000000..7dba8d8
--- /dev/null
+++ b/gobi-api/GobiAPI_2012-09-12-0719/Core/QMIProtocolServer.h
@@ -0,0 +1,116 @@
+/*===========================================================================
+FILE:
+ QMIProtocolServer.h
+
+DESCRIPTION:
+ QMI protocol server
+
+PUBLIC CLASSES AND METHODS:
+ cQMIProtocolServer
+
+Copyright (c) 2012, Code Aurora Forum. 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 Code Aurora Forum 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_2012-09-12-0719/Core/SharedBuffer.cpp b/gobi-api/GobiAPI_2012-09-12-0719/Core/SharedBuffer.cpp
new file mode 100755
index 0000000..6f0566d
--- /dev/null
+++ b/gobi-api/GobiAPI_2012-09-12-0719/Core/SharedBuffer.cpp
@@ -0,0 +1,375 @@
+/*===========================================================================
+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) 2012, Code Aurora Forum. 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 Code Aurora Forum 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_2012-09-12-0719/Core/SharedBuffer.h b/gobi-api/GobiAPI_2012-09-12-0719/Core/SharedBuffer.h
new file mode 100755
index 0000000..c4201e0
--- /dev/null
+++ b/gobi-api/GobiAPI_2012-09-12-0719/Core/SharedBuffer.h
@@ -0,0 +1,166 @@
+/*===========================================================================
+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) 2012, Code Aurora Forum. 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 Code Aurora Forum 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_2012-09-12-0719/Core/Socket.cpp b/gobi-api/GobiAPI_2012-09-12-0719/Core/Socket.cpp
new file mode 100755
index 0000000..0a26007
--- /dev/null
+++ b/gobi-api/GobiAPI_2012-09-12-0719/Core/Socket.cpp
@@ -0,0 +1,812 @@
+/*===========================================================================
+FILE:
+ Socket.cpp
+
+DESCRIPTION:
+ Implementation of cSocket class
+
+PUBLIC CLASSES AND METHODS:
+ cSocket
+ This class wraps low level communication to qmuxd
+
+Copyright (c) 2012, Code Aurora Forum. 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 Code Aurora Forum 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 <sys/socket.h>
+#include <sys/un.h>
+
+//---------------------------------------------------------------------------
+// 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 664
+
+/*=========================================================================*/
+// 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 mQMUXDConectionType;
+
+ /* 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
+ int remainder = recvHdr.mTotalSize - sizeof( recvHdr );
+ if (remainder > pSocket->mBuffSz)
+ {
+ TRACE( "read too large for buffer\n" );
+ break;
+ }
+
+ status = recv( pSocket->mSocket,
+ pSocket->mpBuffer,
+ remainder,
+ 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:
+ pChannel [ I ] - Channel number (IE: "0" = SMD_DATA_5 )
+
+RETURN VALUE:
+ bool
+===========================================================================*/
+bool cSocket::Connect( LPCSTR pChannel )
+{
+ if (IsValid() == false || pChannel == 0 || pChannel[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;
+ }
+
+ 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 ),
+ "/var/qmux_client_socket%7lu",
+ (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 ),
+ "/var/qmux_connect_socket" );
+
+ // 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 ))
+ {
+ printf( "bad client ID %d\n", errno );
+
+ Disconnect();
+ return false;
+ }
+
+ // Save QMUXD Client ID
+ mQMUXDClientID = clientID;
+
+ // Save SMD channel
+ mChannelID = strtol( pChannel, 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;
+
+ // 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;
+ }
+
+ 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 miliseconds\n",
+ totalSz,
+ GetTickCount() - nStart );
+#endif
+
+ return true;
+}
diff --git a/gobi-api/GobiAPI_2012-09-12-0719/Core/Socket.h b/gobi-api/GobiAPI_2012-09-12-0719/Core/Socket.h
new file mode 100755
index 0000000..9a3e0c4
--- /dev/null
+++ b/gobi-api/GobiAPI_2012-09-12-0719/Core/Socket.h
@@ -0,0 +1,164 @@
+/*===========================================================================
+FILE:
+ Socket.h
+
+DESCRIPTION:
+ Declaration of cSocket class
+
+PUBLIC CLASSES AND METHODS:
+ cSocket
+ This class wraps low level communication to qmuxd
+
+Copyright (c) 2012, Code Aurora Forum. 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 Code Aurora Forum 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 channel
+ bool Connect( LPCSTR pChannel );
+
+ // 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_2012-09-12-0719/Core/StdAfx.h b/gobi-api/GobiAPI_2012-09-12-0719/Core/StdAfx.h
new file mode 100755
index 0000000..5b6077b
--- /dev/null
+++ b/gobi-api/GobiAPI_2012-09-12-0719/Core/StdAfx.h
@@ -0,0 +1,200 @@
+/*===========================================================================
+FILE:
+ StdAfx.h
+
+DESCRIPTION:
+ Application Framework eXtenstions for Linux
+
+PUBLIC CLASSES AND FUNCTIONS:
+
+Copyright (c) 2012, Code Aurora Forum. 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 Code Aurora Forum 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 <fstream>
+#include <assert.h>
+#include <termios.h>
+#include <string.h>
+#include <errno.h>
+#include <algorithm>
+#include <limits.h>
+#include <dirent.h>
+#include <sstream>
+#include <stdarg.h>
+#include <time.h>
+#include <sys/time.h>
+#include <sys/ioctl.h>
+#include <sys/stat.h>
+#include <fcntl.h>
+
+//---------------------------------------------------------------------------
+// Macro defination
+//---------------------------------------------------------------------------
+
+#define ASSERT( x ) assert( x )
+
+#ifdef DEBUG
+
+ #ifdef ANDROID
+
+ #include <android/log.h>
+
+ // 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_2012-09-12-0719/Core/SyncQueue.h b/gobi-api/GobiAPI_2012-09-12-0719/Core/SyncQueue.h
new file mode 100755
index 0000000..d6f6132
--- /dev/null
+++ b/gobi-api/GobiAPI_2012-09-12-0719/Core/SyncQueue.h
@@ -0,0 +1,419 @@
+/*===========================================================================
+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) 2012, Code Aurora Forum. 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 Code Aurora Forum 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 <deque>
+#include "Event.h"
+
+//---------------------------------------------------------------------------
+// Definitions
+//---------------------------------------------------------------------------
+
+/*=========================================================================*/
+// Class cSyncQueue
+/*=========================================================================*/
+template <class tElementType> 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 <tElementType> mElementDeque;
+};
diff --git a/gobi-api/GobiAPI_2012-09-12-0719/Gobi3000Translation/Gobi3000Translation.cpp b/gobi-api/GobiAPI_2012-09-12-0719/Gobi3000Translation/Gobi3000Translation.cpp
new file mode 100755
index 0000000..9bb704c
--- /dev/null
+++ b/gobi-api/GobiAPI_2012-09-12-0719/Gobi3000Translation/Gobi3000Translation.cpp
@@ -0,0 +1,101 @@
+/*===========================================================================
+FILE:
+ Gobi3000Translation.cpp
+
+DESCRIPTION:
+ QUALCOMM Translation for Gobi 3000
+
+Copyright (c) 2012, Code Aurora Forum. 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 Code Aurora Forum 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_2012-09-12-0719/Gobi3000Translation/Gobi3000Translation.h b/gobi-api/GobiAPI_2012-09-12-0719/Gobi3000Translation/Gobi3000Translation.h
new file mode 100755
index 0000000..18bc89c
--- /dev/null
+++ b/gobi-api/GobiAPI_2012-09-12-0719/Gobi3000Translation/Gobi3000Translation.h
@@ -0,0 +1,1028 @@
+/*===========================================================================
+FILE:
+ Gobi3000Translation.h
+
+DESCRIPTION:
+ QUALCOMM Tanslation for Gobi 3000
+
+Copyright (c) 2012, Code Aurora Forum. 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 Code Aurora Forum 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 <map>
+#include <string.h>
+#include <string>
+#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_2012-09-12-0719/Gobi3000Translation/Gobi3000TranslationCAT.cpp b/gobi-api/GobiAPI_2012-09-12-0719/Gobi3000Translation/Gobi3000TranslationCAT.cpp
new file mode 100755
index 0000000..c990a87
--- /dev/null
+++ b/gobi-api/GobiAPI_2012-09-12-0719/Gobi3000Translation/Gobi3000TranslationCAT.cpp
@@ -0,0 +1,177 @@
+/*===========================================================================
+FILE:
+ Gobi3000TranslationCAT.cpp
+
+DESCRIPTION:
+ QUALCOMM Translation for Gobi 3000 (Card Application Toolkit Service)
+
+Copyright (c) 2012, Code Aurora Forum. 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 Code Aurora Forum 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_2012-09-12-0719/Gobi3000Translation/Gobi3000TranslationDMS.cpp b/gobi-api/GobiAPI_2012-09-12-0719/Gobi3000Translation/Gobi3000TranslationDMS.cpp
new file mode 100755
index 0000000..d30dfed
--- /dev/null
+++ b/gobi-api/GobiAPI_2012-09-12-0719/Gobi3000Translation/Gobi3000TranslationDMS.cpp
@@ -0,0 +1,1483 @@
+/*===========================================================================
+FILE:
+ Gobi3000TranslationDMS.cpp
+
+DESCRIPTION:
+ QUALCOMM Translation for Gobi 3000 (DMS Service)
+
+Copyright (c) 2012, Code Aurora Forum. 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 Code Aurora Forum 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_2012-09-12-0719/Gobi3000Translation/Gobi3000TranslationNAS.cpp b/gobi-api/GobiAPI_2012-09-12-0719/Gobi3000Translation/Gobi3000TranslationNAS.cpp
new file mode 100755
index 0000000..bda91f1
--- /dev/null
+++ b/gobi-api/GobiAPI_2012-09-12-0719/Gobi3000Translation/Gobi3000TranslationNAS.cpp
@@ -0,0 +1,2022 @@
+/*===========================================================================
+FILE:
+ Gobi3000TranslationNAS.cpp
+
+DESCRIPTION:
+ QUALCOMM Translation for Gobi 3000 (NAS Service)
+
+Copyright (c) 2012, Code Aurora Forum. 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 Code Aurora Forum 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 <ULONG, INT8> sigMap;
+ for (ULONG s = 0; s < sigSz; s++)
+ {
+ sigMap[radios[s]] = sigs[s];
+ }
+
+ std::map <ULONG, INT8>::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 <ULONG, INT8> 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 <ULONG, INT8>::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_2012-09-12-0719/Gobi3000Translation/Gobi3000TranslationOMA.cpp b/gobi-api/GobiAPI_2012-09-12-0719/Gobi3000Translation/Gobi3000TranslationOMA.cpp
new file mode 100755
index 0000000..f75192f
--- /dev/null
+++ b/gobi-api/GobiAPI_2012-09-12-0719/Gobi3000Translation/Gobi3000TranslationOMA.cpp
@@ -0,0 +1,481 @@
+/*===========================================================================
+FILE:
+ Gobi3000TranslationOMA.cpp
+
+DESCRIPTION:
+ QUALCOMM Translation for Gobi 3000 (OMADM Service)
+
+Copyright (c) 2012, Code Aurora Forum. 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 Code Aurora Forum 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_2012-09-12-0719/Gobi3000Translation/Gobi3000TranslationPDS.cpp b/gobi-api/GobiAPI_2012-09-12-0719/Gobi3000Translation/Gobi3000TranslationPDS.cpp
new file mode 100755
index 0000000..da52e64
--- /dev/null
+++ b/gobi-api/GobiAPI_2012-09-12-0719/Gobi3000Translation/Gobi3000TranslationPDS.cpp
@@ -0,0 +1,1207 @@
+/*===========================================================================
+FILE:
+ Gobi3000TranslationPDS.cpp
+
+DESCRIPTION:
+ QUALCOMM Translation for Gobi 3000 (Position Determination Service)
+
+Copyright (c) 2012, Code Aurora Forum. 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 Code Aurora Forum 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_2012-09-12-0719/Gobi3000Translation/Gobi3000TranslationRMS.cpp b/gobi-api/GobiAPI_2012-09-12-0719/Gobi3000Translation/Gobi3000TranslationRMS.cpp
new file mode 100755
index 0000000..433dcd9
--- /dev/null
+++ b/gobi-api/GobiAPI_2012-09-12-0719/Gobi3000Translation/Gobi3000TranslationRMS.cpp
@@ -0,0 +1,188 @@
+/*===========================================================================
+FILE:
+ Gobi3000TranslationRMS.cpp
+
+DESCRIPTION:
+ QUALCOMM Translation for Gobi 3000 (Remote Management Service)
+
+Copyright (c) 2012, Code Aurora Forum. 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 Code Aurora Forum 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_2012-09-12-0719/Gobi3000Translation/Gobi3000TranslationUIM.cpp b/gobi-api/GobiAPI_2012-09-12-0719/Gobi3000Translation/Gobi3000TranslationUIM.cpp
new file mode 100755
index 0000000..ef50831
--- /dev/null
+++ b/gobi-api/GobiAPI_2012-09-12-0719/Gobi3000Translation/Gobi3000TranslationUIM.cpp
@@ -0,0 +1,1170 @@
+/*===========================================================================
+FILE:
+ Gobi3000TranslationUIM.cpp
+
+DESCRIPTION:
+ QUALCOMM Translation for Gobi 3000 (DMS_UIM Service)
+
+Copyright (c) 2012, Code Aurora Forum. 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 Code Aurora Forum 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_2012-09-12-0719/Gobi3000Translation/Gobi3000TranslationVoice.cpp b/gobi-api/GobiAPI_2012-09-12-0719/Gobi3000Translation/Gobi3000TranslationVoice.cpp
new file mode 100755
index 0000000..5260f29
--- /dev/null
+++ b/gobi-api/GobiAPI_2012-09-12-0719/Gobi3000Translation/Gobi3000TranslationVoice.cpp
@@ -0,0 +1,174 @@
+/*===========================================================================
+FILE:
+ Gobi3000TranslationVoice.cpp
+
+DESCRIPTION:
+ QUALCOMM Translation for Gobi 3000 (Voice Service for USSD)
+
+Copyright (c) 2012, Code Aurora Forum. 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 Code Aurora Forum 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_2012-09-12-0719/Gobi3000Translation/Gobi3000TranslationWDS.cpp b/gobi-api/GobiAPI_2012-09-12-0719/Gobi3000Translation/Gobi3000TranslationWDS.cpp
new file mode 100755
index 0000000..c202fd9
--- /dev/null
+++ b/gobi-api/GobiAPI_2012-09-12-0719/Gobi3000Translation/Gobi3000TranslationWDS.cpp
@@ -0,0 +1,3486 @@
+/*===========================================================================
+FILE:
+ Gobi3000TranslationWDS.cpp
+
+DESCRIPTION:
+ QUALCOMM Translation for Gobi 3000 (WDS Service)
+
+Copyright (c) 2012, Code Aurora Forum. 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 Code Aurora Forum 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_2012-09-12-0719/Gobi3000Translation/Gobi3000TranslationWMS.cpp b/gobi-api/GobiAPI_2012-09-12-0719/Gobi3000Translation/Gobi3000TranslationWMS.cpp
new file mode 100755
index 0000000..6bc2c37
--- /dev/null
+++ b/gobi-api/GobiAPI_2012-09-12-0719/Gobi3000Translation/Gobi3000TranslationWMS.cpp
@@ -0,0 +1,1121 @@
+/*===========================================================================
+FILE:
+ Gobi3000TranslationWMS.cpp
+
+DESCRIPTION:
+ QUALCOMM Translation for Gobi 3000 (WMS Service)
+
+Copyright (c) 2012, Code Aurora Forum. 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 Code Aurora Forum 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_2012-09-12-0719/GobiConnectionMgmt/GobiConnectionMgmt.cpp b/gobi-api/GobiAPI_2012-09-12-0719/GobiConnectionMgmt/GobiConnectionMgmt.cpp
new file mode 100755
index 0000000..b6775c0
--- /dev/null
+++ b/gobi-api/GobiAPI_2012-09-12-0719/GobiConnectionMgmt/GobiConnectionMgmt.cpp
@@ -0,0 +1,606 @@
+/*===========================================================================
+FILE:
+ GobiConnectionMgmt.cpp
+
+DESCRIPTION:
+ QUALCOMM Connection Management API for Gobi
+
+PUBLIC CLASSES AND FUNCTIONS:
+ CGobiConnectionMgmtDLL
+ cGobiConnectionMgmt
+
+Copyright (c) 2012, Code Aurora Forum. 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 Code Aurora Forum 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 <cEvent *> events;
+
+ // Store the index to service type for use later
+ std::map <DWORD, eQMIService> 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 <eQMIService, cGobiQMICore::sServerInfo>::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 <GOBIHANDLE, cGobiConnectionMgmt *> tmpAPI = mAPI;
+ std::map <GOBIHANDLE, cGobiConnectionMgmt *>::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 <GOBIHANDLE, cGobiConnectionMgmt *>::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 <GOBIHANDLE, cGobiConnectionMgmt *>::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 <eQMIService, sServerInfo>::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 <tCallbackKey, tCallbackValue>::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 <eQMIService> - Services successfuly configured
+===========================================================================*/
+std::set <eQMIService> cGobiConnectionMgmt::Connect(
+ LPCSTR pQMIFile,
+ std::set <eQMIService> & services )
+{
+ std::set <eQMIService> 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 <tCallbackKey, tCallbackValue>::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_2012-09-12-0719/GobiConnectionMgmt/GobiConnectionMgmt.h b/gobi-api/GobiAPI_2012-09-12-0719/GobiConnectionMgmt/GobiConnectionMgmt.h
new file mode 100755
index 0000000..3e84908
--- /dev/null
+++ b/gobi-api/GobiAPI_2012-09-12-0719/GobiConnectionMgmt/GobiConnectionMgmt.h
@@ -0,0 +1,270 @@
+/*===========================================================================
+FILE:
+ GobiConnectionMgmt.h
+
+DESCRIPTION:
+ QUALCOMM Connection Management API for Gobi
+
+PUBLIC CLASSES AND FUNCTIONS:
+ CGobiConnectionMgmtDLL
+ cGobiConnectionMgmt
+
+Copyright (c) 2012, Code Aurora Forum. 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 Code Aurora Forum 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 <eQMIService> Connect(
+ LPCSTR pInterface,
+ std::set <eQMIService> & 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 <ULONG, ULONG> tCallbackKey;
+ typedef std::pair <tFNGenericCallback, ULONG_PTR> tCallbackValue;
+
+ /* Callback functions */
+ std::map <tCallbackKey, tCallbackValue> 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 <GOBIHANDLE, cGobiConnectionMgmt *> mAPI;
+
+ /* Synchronization object */
+ mutable pthread_mutex_t mSyncSection;
+};
+
+extern CGobiConnectionMgmtDLL gDLL;
diff --git a/gobi-api/GobiAPI_2012-09-12-0719/GobiConnectionMgmt/GobiConnectionMgmtAPI.h b/gobi-api/GobiAPI_2012-09-12-0719/GobiConnectionMgmt/GobiConnectionMgmtAPI.h
new file mode 100755
index 0000000..a7f8c61
--- /dev/null
+++ b/gobi-api/GobiAPI_2012-09-12-0719/GobiConnectionMgmt/GobiConnectionMgmtAPI.h
@@ -0,0 +1,14793 @@
+/*===========================================================================
+FILE:
+ GobiConnectionMgmtAPI.h
+
+DESCRIPTION:
+ QUALCOMM Connection Management API for Gobi
+
+Copyright (c) 2012, Code Aurora Forum. 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 Code Aurora Forum 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.
+==========================================================================*/
+
+#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
+
+/*=========================================================================*/
+// Definitions
+/*=========================================================================*/
+
+// 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
+
+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:
+ 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:
+ 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:
+ 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:
+ 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:
+ 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:
+ 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:
+ 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:
+ 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:
+ 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:
+ 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:
+ 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:
+ 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 ] - Reserved for future use (set to 0)
+ pIn [ I ] - Reserved for future use (set to 0)
+ pOutLen [I/O] - Upon input the maximum number 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:
+ 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:
+ 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:
+ 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:
+ 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:
+ 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_2012-09-12-0719/GobiConnectionMgmt/GobiConnectionMgmtAPIEnums.h b/gobi-api/GobiAPI_2012-09-12-0719/GobiConnectionMgmt/GobiConnectionMgmtAPIEnums.h
new file mode 100755
index 0000000..6d8db7d
--- /dev/null
+++ b/gobi-api/GobiAPI_2012-09-12-0719/GobiConnectionMgmt/GobiConnectionMgmtAPIEnums.h
@@ -0,0 +1,6289 @@
+/*===========================================================================
+FILE:
+ GobiConnectionMgmtAPIEnums.h
+
+DESCRIPTION:
+ Declaration of the Gobi API enumerations
+
+Copyright (c) 2012, Code Aurora Forum. 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 Code Aurora Forum 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.
+==========================================================================*/
+
+#pragma once
+
+// 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 = 0, // 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_RESERVED_28, // 028 Reserved
+ 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_RESERVED_34, // 034 Reserved
+ eQMI_SVC_RESERVED_35, // 035 Reserved
+ eQMI_SVC_PDC, // 036 Persistent device configuration service
+ eQMI_SVC_RESERVED_37, // 037 Reserved
+ eQMI_SVC_RESERVED_38, // 038 Reserved
+ eQMI_SVC_RESERVED_39, // 039 Reserved
+ eQMI_SVC_RESERVED_40, // 040 Reserved
+
+ 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 = 0, // 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_START_NET = 32, // 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
+};
+
+// Enum to describe QMI DMS Message types
+enum eQMIMessageDMS:WORD
+{
+ eQMI_DMS_RESET = 0, // 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_CAPS = 32, // 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
+};
+
+// Enum to describe QMI NAS Message types
+enum eQMIMessageNAS:WORD
+{
+ eQMI_NAS_RESET = 0, // 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_RSSI = 32, // 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
+};
+
+// Enum to describe QMI WMS Message types
+enum eQMIMessageWMS:WORD
+{
+ eQMI_WMS_RESET = 0, // 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_RAW_SEND = 32, // 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
+};
+
+// Enum to describe QMI PDS Message types
+enum eQMIMessagePDS:WORD
+{
+ eQMI_PDS_RESET = 0, // 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
+};
+
+// 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_CALL_ORIGINATE = 32, // 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
+};
+
+// Enum to describe QMI UIM Message types
+enum eQMIMessageUIM:WORD
+{
+ eQMI_UIM_RESET = 0, // 00 Reset
+
+ eQMI_UIM_READ_TRANSPARENT = 32, // 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
+};
+
+// 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
+};
+
+// Enum to describe QMI LOC Message types
+enum eQMIMessageLOC:WORD
+{
+ eQMI_LOC_CLIENT_REVISION = 32, // 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
+};
+
+// Enum to describe QMI CAT Message types
+enum eQMIMessageCAT:WORD
+{
+ eQMI_CAT_RESET = 0, // 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_STATE = 32, // 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
+};
+
+/*=========================================================================*/
+// eQMIMessagePDC Enumeration
+// QMI PDC Service Type Message ID Enumeration
+/*=========================================================================*/
+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
+};
+
+// 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 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 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,
+};
+
+// 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,
+};
+
+// 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,
+};
+
+// 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 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,
+};
+
+// 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 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,
+};
+
+// 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 Driver Data Formats
+enum eQMICTLDriverDataFormats
+{
+ eQMICTLDriverDataFormats_QoSFlowHeaderAbsent = 0,
+ eQMICTLDriverDataFormats_QoSFlowHeaderPresent = 1,
+};
+
+// Enum to describe QMI CTL Power Save States
+enum eQMICTLPowerSaveStates
+{
+ eQMICTLPowerSaveStates_Normal = 0,
+ eQMICTLPowerSaveStates_Suspend = 1,
+ eQMICTLPowerSaveStates_Powerdown = 2,
+};
+
+// Enum to describe QMI CTL Service Types
+enum eQMICTLServiceTypes
+{
+ 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_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 Activation Types
+enum eQMIDMSActivationTypes
+{
+ eQMIDMSActivationTypes_OTASP = 0,
+};
+
+// 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 Image Types
+enum eQMIDMSImageTypes
+{
+ eQMIDMSImageTypes_Modem = 0,
+ eQMIDMSImageTypes_PRI = 1,
+};
+
+// 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 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_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_QoSUnavailable = 42,
+ eQMIErrors_FlowSuspended = 43,
+ 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_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_SIMFileNotFound = 80,
+ eQMIErrors_AccessDenied = 82,
+ eQMIErrors_HardwareRestricted = 83,
+ 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
+{
+ 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 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
+{
+ 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
+{
+ 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 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,
+};
+
+// 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 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 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 Stationary Status
+enum eQMILOCStationaryStatus
+{
+ eQMILOCStationaryStatus_DeviceIsNotStationary = 0,
+ eQMILOCStationaryStatus_DeviceIsStationary = 1,
+};
+
+// Enum to describe QMI LOC Status
+enum eQMILOCStatus
+{
+ 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,
+};
+
+// Enum to describe QMI LOC Trigger Type
+enum eQMILOCTriggerType
+{
+ eQMILOCTriggerType_SingleShot = -1,
+ 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,
+};
+
+// 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 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 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 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 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 LTE Voice Domains
+enum eQMINASLTEVoiceDomains:UINT32
+{
+ eQMINASLTEVoiceDomains_NoVoiceSupport = 0,
+ eQMINASLTEVoiceDomains_VoiceSupportedOverIMS = 1,
+ eQMINASLTEVoiceDomains_VoiceSupportedOver1X = 2,
+ eQMINASLTEVoiceDomains_VoiceSupportedOver3GPP = 3,
+};
+
+// 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 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 Service Domain Prefs
+enum eQMINASServiceDomainPrefs:UINT32
+{
+ eQMINASServiceDomainPrefs_CircuitSwitched = 0,
+ eQMINASServiceDomainPrefs_PacketSwitched = 1,
+ eQMINASServiceDomainPrefs_CircuitPacketSwitched = 2,
+ eQMINASServiceDomainPrefs_PacketSwitchedAttach = 3,
+ eQMINASServiceDomainPrefs_PacketSwitchedDetach = 4,
+};
+
+// 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,
+};
+
+// Enum to describe QMI NAS Subscription Type
+enum eQMINASSubscriptionType:UINT8
+{
+ eQMINASSubscriptionType_PrimarySubscription = 0,
+ eQMINASSubscriptionType_SecondarySubscription = 1,
+};
+
+// 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 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 Emergency Categories
+enum eQMIPBMEmergencyCategories
+{
+ eQMIPBMEmergencyCategories_Police = 1,
+ eQMIPBMEmergencyCategories_Ambulance = 2,
+ eQMIPBMEmergencyCategories_FireBrigade = 4,
+ eQMIPBMEmergencyCategories_MarineGuard = 8,
+ eQMIPBMEmergencyCategories_MountainRescue = 16,
+ eQMIPBMEmergencyCategories_ManualECall = 32,
+ eQMIPBMEmergencyCategories_AutomaticECall = 64,
+ eQMIPBMEmergencyCategories_Spare = 128,
+};
+
+// 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,
+};
+
+// 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,
+};
+
+// 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,
+};
+
+// 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 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 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 Encryption Algorithm
+enum eQMIPDSEncryptionAlgorithm:UINT8
+{
+ eQMIPDSEncryptionAlgorithm_PDSMPDHashAlgorithmSHA1 = 0,
+ eQMIPDSEncryptionAlgorithm_PDSMPDHashAlgorithmMax = 1,
+ eQMIPDSEncryptionAlgorithm_PDSMPDHashAlgorithmNone = 255,
+};
+
+// 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 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 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,
+};
+
+// 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 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 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 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 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 SAR RF States
+enum eQMISARRFStates
+{
+ eQMISARRFStates_DefaultState = 0,
+ eQMISARRFStates_State1 = 1,
+ eQMISARRFStates_State2 = 2,
+ eQMISARRFStates_State3 = 3,
+ eQMISARRFStates_State4 = 4,
+ eQMISARRFStates_State5 = 5,
+ eQMISARRFStates_State6 = 6,
+ eQMISARRFStates_State7 = 7,
+ eQMISARRFStates_State8 = 8,
+};
+
+// 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 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
+{
+ 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,
+};
+
+// 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 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
+{
+ eQMIUIMPINIDs_PIN1 = 1,
+ eQMIUIMPINIDs_PIN2 = 2,
+ eQMIUIMPINIDs_UniversalPIN = 3,
+ eQMIUIMPINIDs_HiddenKey = 4,
+};
+
+// Enum to describe QMI UIM PIN Operations
+enum eQMIUIMPINOperations
+{
+ 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
+{
+ eQMIUIMRegisterFlags_Deregister = 0,
+ eQMIUIMRegisterFlags_Register = 1,
+};
+
+// 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,
+};
+
+// Enum to describe QMI UIM Slots
+enum eQMIUIMSlots:UINT8
+{
+ eQMIUIMSlots_Slot1 = 1,
+ eQMIUIMSlots_Slot2 = 2,
+};
+
+// 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 Result Types
+enum eQMIVoiceCallControlResultTypes:UINT8
+{
+ eQMIVoiceCallControlResultTypes_Voice = 0,
+ eQMIVoiceCallControlResultTypes_SupplementaryService = 1,
+ eQMIVoiceCallControlResultTypes_USSD = 2,
+};
+
+// 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,
+};
+
+// 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_TestCall = 5,
+ eQMIVoiceCallTypes_OTAPA = 6,
+ eQMIVoiceCallTypes_StandardOTASP = 7,
+ eQMIVoiceCallTypes_NonStandardOTASP = 8,
+ eQMIVoiceCallTypes_Emergency = 9,
+ eQMIVoiceCallTypes_SupplementaryService = 10,
+};
+
+// 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 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_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,
+};
+
+// 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,
+};
+
+// 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 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,
+};
+
+// 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,
+};
+
+// 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,
+};
+
+// 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 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 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 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_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 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 IP Families
+enum eQMIWDSIPFamilies:UINT8
+{
+ eQMIWDSIPFamilies_IPv4 = 4,
+ eQMIWDSIPFamilies_IPv6 = 6,
+ eQMIWDSIPFamilies_Unspecified = 8,
+};
+
+// Enum to describe QMI WDS IP Version
+enum eQMIWDSIPVersion:UINT8
+{
+ eQMIWDSIPVersion_IPv4 = 4,
+ eQMIWDSIPVersion_IPv6 = 6,
+};
+
+// 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 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 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 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 Cause Codes
+enum eQMIWMSCauseCodes
+{
+ 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
+{
+ 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
+{
+ 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,
+};
+
+// Enum to describe QMI WMS TP Cause Codes
+enum eQMIWMSTPCauseCodes
+{
+ 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_2012-09-12-0719/GobiConnectionMgmt/GobiConnectionMgmtAPIStructs.h b/gobi-api/GobiAPI_2012-09-12-0719/GobiConnectionMgmt/GobiConnectionMgmtAPIStructs.h
new file mode 100755
index 0000000..52f6877
--- /dev/null
+++ b/gobi-api/GobiAPI_2012-09-12-0719/GobiConnectionMgmt/GobiConnectionMgmtAPIStructs.h
@@ -0,0 +1,28009 @@
+/*===========================================================================
+FILE:
+ GobiConnectionMgmtAPIStructs.h
+
+DESCRIPTION:
+ Declaration of the Gobi API structures
+
+Copyright (c) 2012, Code Aurora Forum. 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 Code Aurora Forum 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.
+==========================================================================*/
+
+#pragma once
+
+// Include the enumerations
+#include "GobiConnectionMgmtAPIEnums.h"
+
+#pragma pack( push, 1 )
+
+// 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 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 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 request TLV 0x01 for WDSAbort()
+struct sWDSAbortRequest_TransactionID
+{
+ UINT16 mTransactionID;
+};
+
+// Structure to describe request TLV 0x10 for WDSSetIndication()
+struct sWDSSetIndicationRequest_TMGIList
+{
+ INT8 mReportEMBMSTMGIList;
+};
+
+// 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 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 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 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 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 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 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 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 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 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;
+
+ // Padding out 14 bits
+ UINT8 mReserved1:6;
+ 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 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 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 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 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 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 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 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 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 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 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 NASAbort()
+struct sNASAbortRequest_TransactionID
+{
+ UINT16 mTransactionID;
+};
+
+// 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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
+{
+ eQMINASLTEVoiceDomains 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 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
+{
+ eQMINASLTEVoiceDomains 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 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 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 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 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 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 request TLV 0x01 for NASConfigureEMBMS()
+struct sNASConfigureEMBMSRequest_Config
+{
+ INT8 mEMBMSEnabled;
+};
+
+// Structure to describe response TLV 0x10 for NASGetEMBMSStatus()
+struct sNASGetEMBMSStatusResponse_Status
+{
+ INT8 mEMBMSEnabled;
+};
+
+// Structure to describe indication TLV 0x01 for NAS EMBMSStatusIndication
+struct sNASEMBMSStatusIndication_Status
+{
+ INT8 mEMBMSEnabled;
+};
+
+// 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 0x03 for NAS NetworkRejectIndication
+struct sNASNetworkRejectIndication_RejectCause
+{
+ UINT8 mRejectCause;
+};
+
+// 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 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 0x10 for WMSSetEventReport()
+struct sWMSSetEventReportRequest_NewMTMessageIndicator
+{
+ INT8 mReportNewMTMessages;
+};
+
+// 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 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 response TLV 0x01 for WMSRawSend()
+struct sWMSRawSendResponse_MessageID
+{
+ UINT16 mMessageID;
+};
+
+// Structure to describe response TLV 0x10 for WMSRawSend()
+struct sWMSRawSendResponse_CauseCode
+{
+ UINT16 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
+{
+ UINT16 mGSMWCDMARPCause;
+ UINT8 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
+{
+ UINT8 mGSMWCDMARPCause;
+ UINT8 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
+ {
+ UINT16 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
+ {
+ UINT16 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
+{
+ UINT16 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
+{
+ UINT16 mGSMWCDMARPCause;
+ UINT8 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 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
+{
+ UINT16 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
+{
+ UINT16 mGSMWCDMARPCause;
+ UINT8 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
+{
+ UINT8 mGSMWCDMARPCause;
+ UINT8 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
+{
+ UINT16 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
+{
+ UINT16 mGSMWCDMARPCause;
+ UINT8 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
+ {
+ UINT16 mServiceCategory;
+ eQMIWMSLanguage mLanguage;
+ INT8 mSelected;
+ };
+
+ // This array must be the size specified by mNumberOfInstances
+ // sInstance mInstances[1];
+};
+
+// 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 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 response TLV 0x01 for PDSGetServiceState()
+struct sPDSGetServiceStateResponse_State
+{
+ INT8 mServiceEnabled;
+ eQMIPDSTrackingSessionStates mTrackingSessionState;
+};
+
+// Structure to describe indication TLV 0x01 for PDS ServiceStateIndication
+struct sPDSServiceStateIndication_State
+{
+ INT8 mServiceEnabled;
+ eQMIPDSTrackingSessionStates mTrackingSessionState;
+};
+
+// Structure to describe request TLV 0x01 for PDSSetServiceState()
+struct sPDSSetServiceStateRequest_State
+{
+ INT8 mServiceEnabled;
+};
+
+// 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 0x01 for Voice HandoverIndication
+struct sVoiceHandoverIndication_State
+{
+ eQMIVoiceHandoverStates mHandoverState;
+};
+
+// 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;
+ bool mActivate:1;
+
+ // Padding out 1 bits
+ UINT8 mReserved1: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;
+
+ // Padding out 2 bits
+ UINT8 mReserved2:2;
+
+ bool mSCWSEvent:1;
+ bool mActivate:1;
+ bool mSetupEventHCIConnectivity:1;
+
+ // Padding out 6 bits
+ UINT8 mReserved3:6;
+};
+
+// Structure to describe request TLV 0x12 for CAT2SetEventReport()
+struct sCAT2SetEventReportRequest_Slot
+{
+ bool mSlot1:1;
+ bool mSlot2:1;
+
+ // Padding out 6 bits
+ UINT8 mReserved1:6;
+};
+
+// 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;
+ bool mActivate:1;
+
+ // Padding out 1 bits
+ UINT8 mReserved1: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;
+
+ // Padding out 2 bits
+ UINT8 mReserved2:2;
+
+ bool mSCWSEvent:1;
+ bool mActivate:1;
+ bool mSetupEventHCIConnectivity:1;
+
+ // Padding out 6 bits
+ UINT8 mReserved3:6;
+};
+
+// 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 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;
+ bool mCommonActivate:1;
+
+ // Padding out 1 bits
+ UINT8 mReserved1: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;
+ bool mControlActivate:1;
+
+ // Padding out 1 bits
+ UINT8 mReserved3: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;
+
+ // Padding out 2 bits
+ UINT8 mReserved2:2;
+
+ bool mCommonSCWSEvent:1;
+ bool mCommonActivate:1;
+ bool mCommonSetupEventHCIConnectivity:1;
+
+ // Padding out 6 bits
+ UINT8 mReserved3: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;
+
+ // 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;
+
+ // Padding out 2 bits
+ UINT8 mReserved5:2;
+
+ bool mControlSCWSEvent:1;
+ bool mControlActivate:1;
+ bool mControlSetupEventHCIConnectivity:1;
+
+ // Padding out 6 bits
+ UINT8 mReserved6:6;
+};
+
+// 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 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 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 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 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 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 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 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 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 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 0x10 for UIMGetFileAttributes()
+struct sUIMGetFileAttributesRequest_ResponseInIndication
+{
+ UINT32 mIndicationToken;
+};
+
+// 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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 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;
+
+ // Padding out 30 bits
+ UINT8 mReserved1:6;
+ UINT8 mReserved2[3];
+};
+
+// Structure to describe response TLV 0x10 for UIMEventRegistration()
+struct sUIMEventRegistrationResponse_Mask
+{
+ bool mCardStatus:1;
+ bool mSAPConnection:1;
+
+ // Padding out 30 bits
+ UINT8 mReserved1:6;
+ UINT8 mReserved2[3];
+};
+
+// 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 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 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 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 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 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 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 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 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 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 0x10 for UIMRefreshRegisterAll()
+struct sUIMRefreshRegisterAllRequest_VoteForInit
+{
+ INT8 mVoteForInitialization;
+};
+
+// 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 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 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 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;
+
+ // Padding out 47 bits
+ UINT8 mReserved1:7;
+ 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 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;
+
+ // Padding out 26 bits
+ UINT8 mReserved1:2;
+ UINT8 mReserved2[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 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 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 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 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 0x03 for LOCLocationServerConnection()
+struct sLOCLocationServerConnectionRequestIndication_WWANType
+{
+ eQMILOCWWANType mWWANType;
+};
+
+// 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 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 0x01 for LOCInjectPredictedOrbitsData()
+struct sLOCInjectPredictedOrbitsDataRequest_TotalSize
+{
+ UINT32 mTotalSize;
+};
+
+// 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 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 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;
+
+ // Padding out 47 bits
+ UINT8 mReserved1:7;
+ 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 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 request TLV 0x01 for LOCInjectTimeSyncData()
+struct sLOCInjectTimeSyncDataRequest_ReferenceCounter
+{
+ UINT32 mReferenceCounter;
+};
+
+// 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 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;
+
+ // Padding out 30 bits
+ UINT8 mReserved1:6;
+ UINT8 mReserved2[3];
+};
+
+// 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;
+
+ // Padding out 59 bits
+ UINT8 mReserved1:3;
+ UINT8 mReserved2[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;
+
+ // Padding out 59 bits
+ UINT8 mReserved1:3;
+ UINT8 mReserved2[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;
+
+ // Padding out 30 bits
+ UINT8 mReserved1:6;
+ UINT8 mReserved2[3];
+};
+
+// 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 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;
+
+ // Padding out 29 bits
+ UINT8 mReserved1:5;
+ UINT8 mReserved2[3];
+};
+
+// Structure to describe request TLV 0x01 for LOCGetPositionEngineConfig()
+struct sLOCGetPositionEngineConfigRequest_Parameters
+{
+ bool mInjectedPosition:1;
+ bool mFilterSVUsage:1;
+ bool mStoreAssistData:1;
+
+ // Padding out 29 bits
+ UINT8 mReserved1:5;
+ 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 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 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 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 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 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 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;
+
+ // Padding out 26 bits
+ UINT8 mReserved1:2;
+ UINT8 mReserved2[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 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 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 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 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 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 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 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 0x01 for QCMAPAddStaticNATEntry()
+struct sQCMAPAddStaticNATEntryRequest_Handle
+{
+ UINT32 mMAPHandle;
+};
+
+// Structure to describe request TLV 0x01 for QCMAPDeleteStaticNATEntry()
+struct sQCMAPDeleteStaticNATEntryRequest_Handle
+{
+ UINT32 mMAPHandle;
+};
+
+// 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 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 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 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 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 0x01 for QCMAPWWANStatusIndicationRegister()
+struct sQCMAPWWANStatusIndicationRegisterRequest_Handle
+{
+ UINT32 mMAPHandle;
+};
+
+// 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 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 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 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 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 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 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;
+ bool mActivate:1;
+
+ // Padding out 1 bits
+ UINT8 mReserved1: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;
+
+ // Padding out 2 bits
+ UINT8 mReserved2:2;
+
+ bool mSCWSEvent:1;
+ bool mActivate:1;
+ bool mSetupEventHCIConnectivity:1;
+
+ // Padding out 6 bits
+ UINT8 mReserved3:6;
+};
+
+// Structure to describe request TLV 0x12 for CATSetEventReport()
+struct sCATSetEventReportRequest_Slot
+{
+ bool mSlot1:1;
+ bool mSlot2:1;
+
+ // Padding out 6 bits
+ UINT8 mReserved1:6;
+};
+
+// 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;
+ bool mActivate:1;
+
+ // Padding out 1 bits
+ UINT8 mReserved1: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;
+
+ // Padding out 2 bits
+ UINT8 mReserved2:2;
+
+ bool mSCWSEvent:1;
+ bool mActivate:1;
+ bool mSetupEventHCIConnectivity:1;
+
+ // Padding out 6 bits
+ UINT8 mReserved3:6;
+};
+
+// 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 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;
+ bool mCommonActivate:1;
+
+ // Padding out 1 bits
+ UINT8 mReserved1: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;
+ bool mControlActivate:1;
+
+ // Padding out 1 bits
+ UINT8 mReserved3: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;
+
+ // Padding out 2 bits
+ UINT8 mReserved2:2;
+
+ bool mCommonSCWSEvent:1;
+ bool mCommonActivate:1;
+ bool mCommonSetupEventHCIConnectivity:1;
+
+ // Padding out 6 bits
+ UINT8 mReserved3: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;
+
+ // 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;
+
+ // Padding out 2 bits
+ UINT8 mReserved5:2;
+
+ bool mControlSCWSEvent:1;
+ bool mControlActivate:1;
+ bool mControlSetupEventHCIConnectivity:1;
+
+ // Padding out 6 bits
+ UINT8 mReserved6:6;
+};
+
+// 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 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 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 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 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 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_2012-09-12-0719/GobiConnectionMgmt/GobiConnectionMgmtExports.cpp b/gobi-api/GobiAPI_2012-09-12-0719/GobiConnectionMgmt/GobiConnectionMgmtExports.cpp
new file mode 100755
index 0000000..34610de
--- /dev/null
+++ b/gobi-api/GobiAPI_2012-09-12-0719/GobiConnectionMgmt/GobiConnectionMgmtExports.cpp
@@ -0,0 +1,20395 @@
+/*===========================================================================
+FILE:
+ GobiConnectionMgmtExports.cpp
+
+DESCRIPTION:
+ QUALCOMM Gobi Connection Management API exports
+
+Copyright (c) 2012, Code Aurora Forum. 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 Code Aurora Forum 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"
+
+/*=========================================================================*/
+// 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 <eQMIService> inSvcs;
+ std::set <eQMIService> 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 <eQMIService>::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:
+ 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:
+ 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:
+ 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:
+ 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:
+ 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:
+ 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:
+ 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:
+ 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:
+ 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:
+ 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:
+ 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:
+ 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 ] - Reserved for future use (set to 0)
+ pIn [ I ] - Reserved for future use (set to 0)
+ pOutLen [I/O] - Upon input the maximum number 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:
+ 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:
+ 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 = 18;
+ 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 = 18;
+ 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 = 18;
+ 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 = 18;
+ 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 = 18;
+ 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 = 18;
+ 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 = 18;
+ 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 = 18;
+ 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 = 18;
+ 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 = 18;
+ 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 = 18;
+ 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 = 18;
+ 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 = 18;
+ 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 = 18;
+ 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 = 18;
+ 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 = 18;
+ 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 = 18;
+ 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 = 18;
+ 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 = 18;
+ 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 = 18;
+ 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 = 18;
+ 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 = 18;
+ 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 = 18;
+ 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 = 18;
+ 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 = 18;
+ 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 = 18;
+ 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 = 18;
+ 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 = 18;
+ 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 = 18;
+ 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 = 18;
+ 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 = 18;
+ 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 = 18;
+ 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 = 18;
+ 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 = 18;
+ 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 = 18;
+ 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 = 18;
+ 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 = 18;
+ 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 = 18;
+ 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 = 18;
+ 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 = 18;
+ 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 = 18;
+ 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 = 18;
+ 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 = 18;
+ 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 = 18;
+ 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 = 18;
+ 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 = 18;
+ 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 = 18;
+ 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 = 18;
+ 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 = 18;
+ 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 = 18;
+ 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 = 18;
+ 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 = 18;
+ 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 = 18;
+ 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 = 18;
+ 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 = 18;
+ 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 = 18;
+ 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 = 18;
+ ULONG msgID = 105;
+ 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:
+ 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:
+ 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_2012-09-12-0719/GobiSampleCM/GobiCMCallback.cpp b/gobi-api/GobiAPI_2012-09-12-0719/GobiSampleCM/GobiCMCallback.cpp
new file mode 100755
index 0000000..a2173f7
--- /dev/null
+++ b/gobi-api/GobiAPI_2012-09-12-0719/GobiSampleCM/GobiCMCallback.cpp
@@ -0,0 +1,309 @@
+/*===========================================================================
+FILE:
+ GobiCMCallback.cpp
+
+DESCRIPTION:
+ Contains the implementation of each Gobi CM callback function.
+
+Copyright (c) 2012, Code Aurora Forum. 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 Code Aurora Forum 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 <sstream>
+
+/*=========================================================================*/
+// 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 <UINT8, const sQMIRawContentHeader *> tlvs = GetTLVs( &pOut[0], outLen );
+ std::map <UINT8, const sQMIRawContentHeader *>::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 <UINT8, const sQMIRawContentHeader *> tlvs = GetTLVs( &pOut[0], outLen );
+ std::map <UINT8, const sQMIRawContentHeader *>::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 <UINT8, const sQMIRawContentHeader *> tlvs = GetTLVs( &pOut[0], outLen );
+ std::map <UINT8, const sQMIRawContentHeader *>::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 <UINT8, const sQMIRawContentHeader *> tlvs = GetTLVs( &pOut[0], outLen );
+ std::map <UINT8, const sQMIRawContentHeader *>::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_2012-09-12-0719/GobiSampleCM/GobiCMCallback.h b/gobi-api/GobiAPI_2012-09-12-0719/GobiSampleCM/GobiCMCallback.h
new file mode 100755
index 0000000..02ecd76
--- /dev/null
+++ b/gobi-api/GobiAPI_2012-09-12-0719/GobiSampleCM/GobiCMCallback.h
@@ -0,0 +1,83 @@
+/*===========================================================================
+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) 2012, Code Aurora Forum. 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 Code Aurora Forum 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_2012-09-12-0719/GobiSampleCM/GobiCMDLL.cpp b/gobi-api/GobiAPI_2012-09-12-0719/GobiSampleCM/GobiCMDLL.cpp
new file mode 100755
index 0000000..19ab254
--- /dev/null
+++ b/gobi-api/GobiAPI_2012-09-12-0719/GobiSampleCM/GobiCMDLL.cpp
@@ -0,0 +1,1239 @@
+/*===========================================================================
+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) 2012, Code Aurora Forum. 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 Code Aurora Forum 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 <string.h>
+
+/*=========================================================================*/
+// 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 <UINT8, const sQMIRawContentHeader *> tlvs = GetTLVs( &rsp[0], lo );
+ std::map <UINT8, const sQMIRawContentHeader *>::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( sWDSAbortRequest_TransactionID );
+ pData += sizeof( sQMIRawContentHeader );
+
+ sWDSAbortRequest_TransactionID * pID =
+ (sWDSAbortRequest_TransactionID *)pData;
+ pID->mTransactionID = (UINT16)txID;
+ pData += sizeof( sWDSAbortRequest_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 <UINT8, const sQMIRawContentHeader *> tlvs = GetTLVs( &rsp[0], lo );
+ std::map <UINT8, const sQMIRawContentHeader *>::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_2012-09-12-0719/GobiSampleCM/GobiCMDLL.h b/gobi-api/GobiAPI_2012-09-12-0719/GobiSampleCM/GobiCMDLL.h
new file mode 100755
index 0000000..8641061
--- /dev/null
+++ b/gobi-api/GobiAPI_2012-09-12-0719/GobiSampleCM/GobiCMDLL.h
@@ -0,0 +1,266 @@
+/*===========================================================================
+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) 2012, Code Aurora Forum. 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 Code Aurora Forum 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 <map>
+
+//---------------------------------------------------------------------------
+// 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 <UINT8, const sQMIRawContentHeader *>
+===========================================================================*/
+inline std::map <UINT8, const sQMIRawContentHeader *> GetTLVs(
+ const UINT8 * pRsp,
+ ULONG rspSz )
+{
+ std::map <UINT8, const sQMIRawContentHeader *> 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_2012-09-12-0719/GobiSampleCM/QTSampleCM.cpp b/gobi-api/GobiAPI_2012-09-12-0719/GobiSampleCM/QTSampleCM.cpp
new file mode 100755
index 0000000..076a0cf
--- /dev/null
+++ b/gobi-api/GobiAPI_2012-09-12-0719/GobiSampleCM/QTSampleCM.cpp
@@ -0,0 +1,316 @@
+/*===========================================================================
+FILE:
+ QTSampleCM.cpp
+
+DESCRIPTION:
+ QT implementation of the Sample CM
+
+PUBLIC CLASSES AND METHODS:
+ cQTSampleCM
+ QT implementation of the Sample CM
+
+Copyright (c) 2012, Code Aurora Forum. 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 Code Aurora Forum 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_2012-09-12-0719/GobiSampleCM/QTSampleCM.h b/gobi-api/GobiAPI_2012-09-12-0719/GobiSampleCM/QTSampleCM.h
new file mode 100755
index 0000000..935cf4f
--- /dev/null
+++ b/gobi-api/GobiAPI_2012-09-12-0719/GobiSampleCM/QTSampleCM.h
@@ -0,0 +1,459 @@
+/*===========================================================================
+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) 2012, Code Aurora Forum. 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 Code Aurora Forum 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 <QtGui/QApplication>
+#include "qmlapplicationviewer.h"
+#include <qvariant.h>
+#include <qdeclarativecontext.h>
+
+#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_2012-09-12-0719/GobiSampleCM/SampleCM.cpp b/gobi-api/GobiAPI_2012-09-12-0719/GobiSampleCM/SampleCM.cpp
new file mode 100755
index 0000000..95597bd
--- /dev/null
+++ b/gobi-api/GobiAPI_2012-09-12-0719/GobiSampleCM/SampleCM.cpp
@@ -0,0 +1,1735 @@
+/*===========================================================================
+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) 2012, Code Aurora Forum. 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 Code Aurora Forum 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 <sys/inotify.h>
+#include <unistd.h>
+#include <string>
+#include <dirent.h>
+#include <iomanip>
+
+// 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 <ULONG>::const_iterator pIter;
+ std::list <ULONG>::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_2012-09-12-0719/GobiSampleCM/SampleCM.h b/gobi-api/GobiAPI_2012-09-12-0719/GobiSampleCM/SampleCM.h
new file mode 100755
index 0000000..87ec14a
--- /dev/null
+++ b/gobi-api/GobiAPI_2012-09-12-0719/GobiSampleCM/SampleCM.h
@@ -0,0 +1,398 @@
+/*===========================================================================
+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) 2012, Code Aurora Forum. 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 Code Aurora Forum 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 <string>
+#include <sstream>
+#include <list>
+
+// 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 <ULONG> 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 <ULONG, INT8> mServiceSignals;
+
+ /* Current data bearer technology */
+ ULONG mDataBearerTech;
+
+ /* Current data capabilities */
+ std::list <ULONG> 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_2012-09-12-0719/GobiSampleCM/android/assets/qml/GobiSampleCM/Connect.png b/gobi-api/GobiAPI_2012-09-12-0719/GobiSampleCM/android/assets/qml/GobiSampleCM/Connect.png
new file mode 100755
index 0000000..903d85f
--- /dev/null
+++ b/gobi-api/GobiAPI_2012-09-12-0719/GobiSampleCM/android/assets/qml/GobiSampleCM/Connect.png
Binary files differ
diff --git a/gobi-api/GobiAPI_2012-09-12-0719/GobiSampleCM/android/assets/qml/GobiSampleCM/Info.png b/gobi-api/GobiAPI_2012-09-12-0719/GobiSampleCM/android/assets/qml/GobiSampleCM/Info.png
new file mode 100755
index 0000000..69d7cbb
--- /dev/null
+++ b/gobi-api/GobiAPI_2012-09-12-0719/GobiSampleCM/android/assets/qml/GobiSampleCM/Info.png
Binary files differ
diff --git a/gobi-api/GobiAPI_2012-09-12-0719/GobiSampleCM/android/assets/qml/GobiSampleCM/main.qml b/gobi-api/GobiAPI_2012-09-12-0719/GobiSampleCM/android/assets/qml/GobiSampleCM/main.qml
new file mode 100755
index 0000000..70308ba
--- /dev/null
+++ b/gobi-api/GobiAPI_2012-09-12-0719/GobiSampleCM/android/assets/qml/GobiSampleCM/main.qml
@@ -0,0 +1,823 @@
+/*===========================================================================
+FILE:
+ main.qml
+
+DESCRIPTION:
+ Graphic meta description for Gobi Sample CM
+
+Copyright (c) 2012, Code Aurora Forum. 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 Code Aurora Forum 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_2012-09-12-0719/GobiSampleCM/android/res/drawable/icon.png b/gobi-api/GobiAPI_2012-09-12-0719/GobiSampleCM/android/res/drawable/icon.png
new file mode 100755
index 0000000..e709792
--- /dev/null
+++ b/gobi-api/GobiAPI_2012-09-12-0719/GobiSampleCM/android/res/drawable/icon.png
Binary files differ
diff --git a/gobi-api/GobiAPI_2012-09-12-0719/GobiSampleCM/android/res/drawable/logo.png b/gobi-api/GobiAPI_2012-09-12-0719/GobiSampleCM/android/res/drawable/logo.png
new file mode 100755
index 0000000..8366c4f
--- /dev/null
+++ b/gobi-api/GobiAPI_2012-09-12-0719/GobiSampleCM/android/res/drawable/logo.png
Binary files differ
diff --git a/gobi-api/GobiAPI_2012-09-12-0719/GobiSampleCM/main.cpp b/gobi-api/GobiAPI_2012-09-12-0719/GobiSampleCM/main.cpp
new file mode 100755
index 0000000..893dedd
--- /dev/null
+++ b/gobi-api/GobiAPI_2012-09-12-0719/GobiSampleCM/main.cpp
@@ -0,0 +1,45 @@
+/*===========================================================================
+FILE:
+ main.cpp
+
+DESCRIPTION:
+ Entry point to the Gobi Sample CM
+
+Copyright (c) 2012, Code Aurora Forum. 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 Code Aurora Forum 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_2012-09-12-0719/GobiSampleCM/qml/GobiSampleCM/Connect.png b/gobi-api/GobiAPI_2012-09-12-0719/GobiSampleCM/qml/GobiSampleCM/Connect.png
new file mode 100755
index 0000000..903d85f
--- /dev/null
+++ b/gobi-api/GobiAPI_2012-09-12-0719/GobiSampleCM/qml/GobiSampleCM/Connect.png
Binary files differ
diff --git a/gobi-api/GobiAPI_2012-09-12-0719/GobiSampleCM/qml/GobiSampleCM/Info.png b/gobi-api/GobiAPI_2012-09-12-0719/GobiSampleCM/qml/GobiSampleCM/Info.png
new file mode 100755
index 0000000..69d7cbb
--- /dev/null
+++ b/gobi-api/GobiAPI_2012-09-12-0719/GobiSampleCM/qml/GobiSampleCM/Info.png
Binary files differ
diff --git a/gobi-api/GobiAPI_2012-09-12-0719/GobiSampleCM/qml/GobiSampleCM/main.qml b/gobi-api/GobiAPI_2012-09-12-0719/GobiSampleCM/qml/GobiSampleCM/main.qml
new file mode 100755
index 0000000..70308ba
--- /dev/null
+++ b/gobi-api/GobiAPI_2012-09-12-0719/GobiSampleCM/qml/GobiSampleCM/main.qml
@@ -0,0 +1,823 @@
+/*===========================================================================
+FILE:
+ main.qml
+
+DESCRIPTION:
+ Graphic meta description for Gobi Sample CM
+
+Copyright (c) 2012, Code Aurora Forum. 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 Code Aurora Forum 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_2012-09-12-0719/Readme.txt b/gobi-api/GobiAPI_2012-09-12-0719/Readme.txt
new file mode 100755
index 0000000..9ccdb98
--- /dev/null
+++ b/gobi-api/GobiAPI_2012-09-12-0719/Readme.txt
@@ -0,0 +1,136 @@
+Gobi Extensible API 2012-09-12-0719
+
+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 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=<path to android toolchain>
+ For x86, run:
+ make
+
+-------------------------------------------------------------------------------
diff --git a/gobi-api/GobiAPI_2012-09-12-0719/Shared/GobiError.h b/gobi-api/GobiAPI_2012-09-12-0719/Shared/GobiError.h
new file mode 100755
index 0000000..53d5602
--- /dev/null
+++ b/gobi-api/GobiAPI_2012-09-12-0719/Shared/GobiError.h
@@ -0,0 +1,137 @@
+/*===========================================================================
+FILE:
+ GobiError.h
+
+DESCRIPTION:
+ QUALCOMM Gobi Errors
+
+Copyright (c) 2012, Code Aurora Forum. 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 Code Aurora Forum 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_2012-09-12-0719/Shared/GobiQMICore.cpp b/gobi-api/GobiAPI_2012-09-12-0719/Shared/GobiQMICore.cpp
new file mode 100755
index 0000000..136976f
--- /dev/null
+++ b/gobi-api/GobiAPI_2012-09-12-0719/Shared/GobiQMICore.cpp
@@ -0,0 +1,531 @@
+/*===========================================================================
+FILE:
+ GobiQMICore.cpp
+
+DESCRIPTION:
+ QUALCOMM Gobi QMI Based API Core
+
+PUBLIC CLASSES AND FUNCTIONS:
+ cGobiQMICore
+
+Copyright (c) 2012, Code Aurora Forum. 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 Code Aurora Forum 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 <eQMIService> - Services successfuly configured
+===========================================================================*/
+std::set <eQMIService> cGobiQMICore::Connect(
+ LPCSTR pInterface,
+ std::set <eQMIService> & services )
+{
+ // The services we successfully connected to
+ std::set <eQMIService> 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 <eQMIService>::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 <eQMIService, sServerInfo> 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 <eQMIService, sServerInfo>::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 <sProtocolNotificationEvent> 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 <eQMIService, cGobiQMICore::sServerInfo>::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;
+ }
+ }
+
+ 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 <eQMIService, cGobiQMICore::sServerInfo>::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_2012-09-12-0719/Shared/GobiQMICore.h b/gobi-api/GobiAPI_2012-09-12-0719/Shared/GobiQMICore.h
new file mode 100755
index 0000000..5a20c0e
--- /dev/null
+++ b/gobi-api/GobiAPI_2012-09-12-0719/Shared/GobiQMICore.h
@@ -0,0 +1,192 @@
+/*===========================================================================
+FILE:
+ GobiQMICore.h
+
+DESCRIPTION:
+ QUALCOMM Gobi QMI Based API Core
+
+PUBLIC CLASSES AND FUNCTIONS:
+ cGobiQMICore
+
+Copyright (c) 2012, Code Aurora Forum. 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 Code Aurora Forum 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 <eQMIService, sServerInfo>::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 <eQMIService> Connect(
+ LPCSTR pInterface,
+ std::set <eQMIService> & 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 <eQMIService, sServerInfo> mServers;
+
+ /* Last error recorded */
+ eGobiError mLastError;
+};