summaryrefslogtreecommitdiff
path: root/gobi-api/GobiAPI_1.0.40/GobiImageMgmt/GobiImageMgmt.h
diff options
context:
space:
mode:
Diffstat (limited to 'gobi-api/GobiAPI_1.0.40/GobiImageMgmt/GobiImageMgmt.h')
-rwxr-xr-xgobi-api/GobiAPI_1.0.40/GobiImageMgmt/GobiImageMgmt.h186
1 files changed, 186 insertions, 0 deletions
diff --git a/gobi-api/GobiAPI_1.0.40/GobiImageMgmt/GobiImageMgmt.h b/gobi-api/GobiAPI_1.0.40/GobiImageMgmt/GobiImageMgmt.h
new file mode 100755
index 0000000..a14132e
--- /dev/null
+++ b/gobi-api/GobiAPI_1.0.40/GobiImageMgmt/GobiImageMgmt.h
@@ -0,0 +1,186 @@
+/*===========================================================================
+FILE:
+ GobiImageMgmt.h
+
+DESCRIPTION:
+ QUALCOMM Image Management API for Gobi 3000
+
+PUBLIC CLASSES AND FUNCTIONS:
+ cGobiImageMgmtDLL
+ cGobiImageMgmt
+
+Copyright (c) 2011, 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 "GobiQDLCore.h"
+
+//---------------------------------------------------------------------------
+// Definitions
+//---------------------------------------------------------------------------
+
+/*=========================================================================*/
+// Class cGobiImageMgmt
+/*=========================================================================*/
+class cGobiImageMgmt : public cGobiQMICore
+{
+ public:
+ // Constructor
+ cGobiImageMgmt();
+
+ // Destructor
+ virtual ~cGobiImageMgmt();
+
+ // Initialize the object
+ virtual bool Initialize();
+
+ // Cleanup the object
+ virtual bool Cleanup();
+
+ // Get the ID of the device to target
+ void GetDeviceID(
+ std::string & deviceID,
+ std::string & deviceKey );
+
+ // Set the ID of the device to target
+ bool SetDeviceID(
+ LPCSTR pDeviceID = 0,
+ LPCSTR pDeviceKey = 0 );
+
+ // This function resets the device
+ eGobiError ResetDevice();
+
+ // (Inline) Return the set of available Gobi QDL ports
+ std::vector <std::string> GetAvailableQDLPorts()
+ {
+ return mQDL.GetAvailableQDLPorts();
+ };
+
+ // (Inline) Set the timeout for QDL transactions
+ eGobiError SetQDLTimeout( ULONG to )
+ {
+ return mQDL.SetQDLTimeout( to );
+ };
+
+ // (Inline) Open the specified QDL port of the device
+ eGobiError OpenQDLPort(
+ std::string & portID,
+ ULONG bBARMode,
+ ULONG * pMajorVersion,
+ ULONG * pMinorVersion )
+ {
+ return mQDL.OpenQDLPort( portID,
+ bBARMode,
+ pMajorVersion,
+ pMinorVersion );
+ };
+
+ // (Inline) Close the specified QDL port of the device
+ eGobiError CloseQDLPort( bool bInformDevice )
+ {
+ return mQDL.CloseQDLPort( bInformDevice );
+ };
+
+ // (Inline) Get the images preference as from the device boot downloader
+ eGobiError GetQDLImagesPreference(
+ ULONG * pImageListSize,
+ BYTE * pImageList )
+ {
+ return mQDL.GetQDLImagesPreference( pImageListSize, pImageList );
+ };
+
+ // (Inline) Prepare the device boot downloader for an image write
+ eGobiError PrepareQDLImageWrite(
+ BYTE imageType,
+ ULONG imageSize,
+ ULONG * pBlockSize )
+ {
+ return mQDL.PrepareQDLImageWrite( imageType, imageSize, pBlockSize );
+ };
+
+ // (Inline) Write the specified image block to the device
+ eGobiError WriteQDLImageBlock(
+ USHORT sequenceNumber,
+ ULONG chunkSize,
+ BYTE * pImageBlock )
+ {
+ return mQDL.WriteQDLImageBlock( sequenceNumber,
+ chunkSize,
+ pImageBlock );
+ };
+
+ // (Inline) Request the device validate the written images
+ eGobiError ValidateQDLImages( BYTE * pImageType )
+ {
+ return mQDL.ValidateQDLImages( pImageType );
+ };
+
+ protected:
+ /* Device node/key of the device to target */
+ std::string mTargetDeviceNode;
+ std::string mTargetDeviceKey;
+
+ /* QDL protocol server */
+ cGobiQDLCore mQDL;
+};
+
+/*=========================================================================*/
+// Class cGobiImageMgmtDLL
+/*=========================================================================*/
+class cGobiImageMgmtDLL
+{
+ public:
+ // Constructor
+ cGobiImageMgmtDLL();
+
+ // Destructor
+ virtual ~cGobiImageMgmtDLL();
+
+ // Return the GobiImageMgmt object
+ cGobiImageMgmt * GetAPI();
+
+ protected:
+ /* API interface object */
+ cGobiImageMgmt * mpAPI;
+
+ /* Above object allocation attempted? */
+ bool mbAllocated;
+
+ /* Synchronization object */
+ mutable pthread_mutex_t mSyncSection;
+};
+
+extern cGobiImageMgmtDLL gImageDLL;