164064216a8433360745f69edddce19a606659163The Android Open Source Project/******************************************************************************* 264064216a8433360745f69edddce19a606659163The Android Open Source Project**+--------------------------------------------------------------------------+** 364064216a8433360745f69edddce19a606659163The Android Open Source Project**| |** 464064216a8433360745f69edddce19a606659163The Android Open Source Project**| Copyright 1998-2008 Texas Instruments, Inc. - http://www.ti.com/ |** 564064216a8433360745f69edddce19a606659163The Android Open Source Project**| |** 664064216a8433360745f69edddce19a606659163The Android Open Source Project**| Licensed under the Apache License, Version 2.0 (the "License"); |** 764064216a8433360745f69edddce19a606659163The Android Open Source Project**| you may not use this file except in compliance with the License. |** 864064216a8433360745f69edddce19a606659163The Android Open Source Project**| You may obtain a copy of the License at |** 964064216a8433360745f69edddce19a606659163The Android Open Source Project**| |** 1064064216a8433360745f69edddce19a606659163The Android Open Source Project**| http://www.apache.org/licenses/LICENSE-2.0 |** 1164064216a8433360745f69edddce19a606659163The Android Open Source Project**| |** 1264064216a8433360745f69edddce19a606659163The Android Open Source Project**| Unless required by applicable law or agreed to in writing, software |** 1364064216a8433360745f69edddce19a606659163The Android Open Source Project**| distributed under the License is distributed on an "AS IS" BASIS, |** 1464064216a8433360745f69edddce19a606659163The Android Open Source Project**| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |** 1564064216a8433360745f69edddce19a606659163The Android Open Source Project**| See the License for the specific language governing permissions and |** 1664064216a8433360745f69edddce19a606659163The Android Open Source Project**| limitations under the License. |** 1764064216a8433360745f69edddce19a606659163The Android Open Source Project**| |** 1864064216a8433360745f69edddce19a606659163The Android Open Source Project**+--------------------------------------------------------------------------+** 1964064216a8433360745f69edddce19a606659163The Android Open Source Project*******************************************************************************/ 2064064216a8433360745f69edddce19a606659163The Android Open Source Project 2164064216a8433360745f69edddce19a606659163The Android Open Source Project/*--------------------------------------------------------------------------*/ 2264064216a8433360745f69edddce19a606659163The Android Open Source Project/* Module: TI_OAL.h*/ 2364064216a8433360745f69edddce19a606659163The Android Open Source Project/**/ 2464064216a8433360745f69edddce19a606659163The Android Open Source Project/* Purpose: This file contains a interface for the TI_OAL class.*/ 2564064216a8433360745f69edddce19a606659163The Android Open Source Project/**/ 2664064216a8433360745f69edddce19a606659163The Android Open Source Project/*////////////////////////////////////////////////////////////////////*/ 2764064216a8433360745f69edddce19a606659163The Android Open Source Project 2864064216a8433360745f69edddce19a606659163The Android Open Source Project#if !defined(AFX_TIUNILIB_H__F79CA4B8_8596_4F36_B541_2B2FCCF70197__INCLUDED_) 2964064216a8433360745f69edddce19a606659163The Android Open Source Project#define AFX_TIUNILIB_H__F79CA4B8_8596_4F36_B541_2B2FCCF70197__INCLUDED_ 3064064216a8433360745f69edddce19a606659163The Android Open Source Project 3164064216a8433360745f69edddce19a606659163The Android Open Source Project#if _MSC_VER > 1000 3264064216a8433360745f69edddce19a606659163The Android Open Source Project#pragma once 3364064216a8433360745f69edddce19a606659163The Android Open Source Project#endif /* _MSC_VER > 1000*/ 3464064216a8433360745f69edddce19a606659163The Android Open Source Project 3564064216a8433360745f69edddce19a606659163The Android Open Source Project#include "osTIType.h" 3664064216a8433360745f69edddce19a606659163The Android Open Source Project#include "TI_Results.h" 3764064216a8433360745f69edddce19a606659163The Android Open Source Project 3864064216a8433360745f69edddce19a606659163The Android Open Source Project#ifdef _UNICODE 3964064216a8433360745f69edddce19a606659163The Android Open Source Project #define tisprintf swprintf 4064064216a8433360745f69edddce19a606659163The Android Open Source Project #define tistrncpy wcsncpy 4164064216a8433360745f69edddce19a606659163The Android Open Source Project#else 4264064216a8433360745f69edddce19a606659163The Android Open Source Project #define tisprintf sprintf 4364064216a8433360745f69edddce19a606659163The Android Open Source Project #define tistrncpy strncpy 4464064216a8433360745f69edddce19a606659163The Android Open Source Project#endif 4564064216a8433360745f69edddce19a606659163The Android Open Source Project 4664064216a8433360745f69edddce19a606659163The Android Open Source Project 4764064216a8433360745f69edddce19a606659163The Android Open Source Projectclass TI_OSWrapCriticalSection 4864064216a8433360745f69edddce19a606659163The Android Open Source Project{ 4964064216a8433360745f69edddce19a606659163The Android Open Source Project protected: 5064064216a8433360745f69edddce19a606659163The Android Open Source Project tiVOID* m_pCS; 5164064216a8433360745f69edddce19a606659163The Android Open Source Project public: 5264064216a8433360745f69edddce19a606659163The Android Open Source Project static TI_OSWrapCriticalSection* CreateObject(); 5364064216a8433360745f69edddce19a606659163The Android Open Source Project static tiVOID DeleteObject(TI_OSWrapCriticalSection* pObj); 5464064216a8433360745f69edddce19a606659163The Android Open Source Project 5564064216a8433360745f69edddce19a606659163The Android Open Source Project TI_OSWrapCriticalSection() {} 5664064216a8433360745f69edddce19a606659163The Android Open Source Project virtual ~TI_OSWrapCriticalSection() {} 5764064216a8433360745f69edddce19a606659163The Android Open Source Project virtual tiVOID Enter () = 0; 5864064216a8433360745f69edddce19a606659163The Android Open Source Project virtual tiVOID Leave () = 0; 5964064216a8433360745f69edddce19a606659163The Android Open Source Project}; 6064064216a8433360745f69edddce19a606659163The Android Open Source Project 6164064216a8433360745f69edddce19a606659163The Android Open Source Projectclass TI_OSCriticalSection 6264064216a8433360745f69edddce19a606659163The Android Open Source Project{ 6364064216a8433360745f69edddce19a606659163The Android Open Source Project TI_OSWrapCriticalSection* m_pWrapCS; 6464064216a8433360745f69edddce19a606659163The Android Open Source Project 6564064216a8433360745f69edddce19a606659163The Android Open Source Project public: 6664064216a8433360745f69edddce19a606659163The Android Open Source Project TI_OSCriticalSection(); 6764064216a8433360745f69edddce19a606659163The Android Open Source Project ~TI_OSCriticalSection(); 6864064216a8433360745f69edddce19a606659163The Android Open Source Project tiVOID Enter (); 6964064216a8433360745f69edddce19a606659163The Android Open Source Project tiVOID Leave (); 7064064216a8433360745f69edddce19a606659163The Android Open Source Project}; 7164064216a8433360745f69edddce19a606659163The Android Open Source Project/* 7264064216a8433360745f69edddce19a606659163The Android Open Source Projectclass TI_OSWrapEvent 7364064216a8433360745f69edddce19a606659163The Android Open Source Project{ 7464064216a8433360745f69edddce19a606659163The Android Open Source Project protected: 7564064216a8433360745f69edddce19a606659163The Android Open Source Project tiVOID* m_pEvent; 7664064216a8433360745f69edddce19a606659163The Android Open Source Project public: 7764064216a8433360745f69edddce19a606659163The Android Open Source Project static TI_OSWrapEvent* CreateObject(); 7864064216a8433360745f69edddce19a606659163The Android Open Source Project 7964064216a8433360745f69edddce19a606659163The Android Open Source Project TI_OSWrapEvent() {} 8064064216a8433360745f69edddce19a606659163The Android Open Source Project ~TI_OSWrapEvent() {} 8164064216a8433360745f69edddce19a606659163The Android Open Source Project virtual tiUINT32 Wait ( tiUINT32 uTime ) = 0; 8264064216a8433360745f69edddce19a606659163The Android Open Source Project virtual tiVOID Set () = 0; 8364064216a8433360745f69edddce19a606659163The Android Open Source Project virtual tiVOID Reset () = 0; 8464064216a8433360745f69edddce19a606659163The Android Open Source Project}; 8564064216a8433360745f69edddce19a606659163The Android Open Source Project 8664064216a8433360745f69edddce19a606659163The Android Open Source Projectclass TI_OSEvent 8764064216a8433360745f69edddce19a606659163The Android Open Source Project{ 8864064216a8433360745f69edddce19a606659163The Android Open Source Project TI_OSWrapEvent* m_pWrapEvent; 8964064216a8433360745f69edddce19a606659163The Android Open Source Project 9064064216a8433360745f69edddce19a606659163The Android Open Source Project public: 9164064216a8433360745f69edddce19a606659163The Android Open Source Project TI_OSEvent(); 9264064216a8433360745f69edddce19a606659163The Android Open Source Project ~TI_OSEvent(); 9364064216a8433360745f69edddce19a606659163The Android Open Source Project tiUINT32 Wait ( tiUINT32 uTime ); 9464064216a8433360745f69edddce19a606659163The Android Open Source Project tiVOID Set (); 9564064216a8433360745f69edddce19a606659163The Android Open Source Project tiVOID Reset (); 9664064216a8433360745f69edddce19a606659163The Android Open Source Project}; 9764064216a8433360745f69edddce19a606659163The Android Open Source Project*/ 9864064216a8433360745f69edddce19a606659163The Android Open Source Projecttypedef tiUINT32 (* tiPTHREAD_START_ROUTINE)( tiVOID* pThreadParameter ); 9964064216a8433360745f69edddce19a606659163The Android Open Source Project 10064064216a8433360745f69edddce19a606659163The Android Open Source Projectclass TI_OAL 10164064216a8433360745f69edddce19a606659163The Android Open Source Project{ 10264064216a8433360745f69edddce19a606659163The Android Open Source Project protected: 10364064216a8433360745f69edddce19a606659163The Android Open Source Project 10464064216a8433360745f69edddce19a606659163The Android Open Source Project TI_OAL (); 10564064216a8433360745f69edddce19a606659163The Android Open Source Project virtual ~TI_OAL (); 10664064216a8433360745f69edddce19a606659163The Android Open Source Project 10764064216a8433360745f69edddce19a606659163The Android Open Source Project static TI_OAL* _instance; 10864064216a8433360745f69edddce19a606659163The Android Open Source Project static tiUINT32 m_uReferenceCount; 10964064216a8433360745f69edddce19a606659163The Android Open Source Project 11064064216a8433360745f69edddce19a606659163The Android Open Source Project public: 11164064216a8433360745f69edddce19a606659163The Android Open Source Project static TI_OAL* GetInstance (); /* static function for create TI_OSlib object*/ 11264064216a8433360745f69edddce19a606659163The Android Open Source Project static tiVOID FreeInstance (); /* static function for release TI_OAL object*/ 11364064216a8433360745f69edddce19a606659163The Android Open Source Project 11464064216a8433360745f69edddce19a606659163The Android Open Source Project /* list of functions that will call from Utility Adapter and Utility GUI modules */ 11564064216a8433360745f69edddce19a606659163The Android Open Source Project virtual tiVOID TIOutputDebugString (tiCHAR* lpOutputString) = 0; 11664064216a8433360745f69edddce19a606659163The Android Open Source Project virtual tiBOOL TIIsBadWritePtr (tiVOID* lp, tiUINT32 ucb ) = 0; 11764064216a8433360745f69edddce19a606659163The Android Open Source Project 11864064216a8433360745f69edddce19a606659163The Android Open Source Project /* list of functions that will call from Windows Utility module */ 11964064216a8433360745f69edddce19a606659163The Android Open Source Project virtual tiUINT32 TILoadLibrary (tiCHAR* pLibFileName) = 0; 12064064216a8433360745f69edddce19a606659163The Android Open Source Project virtual tiBOOL TIFreeLibrary (tiUINT32 hLibModule) = 0; 12164064216a8433360745f69edddce19a606659163The Android Open Source Project virtual tiUINT32 TIGetProcAddress (tiUINT32 hModule, tiCHAR* lpProcName ) = 0; 12264064216a8433360745f69edddce19a606659163The Android Open Source Project virtual tiUINT32 TIRegisterWindowMessage (tiCHAR* pszMsgName ) = 0; 12364064216a8433360745f69edddce19a606659163The Android Open Source Project virtual tiBOOL TIPostMessage (tiUINT32 hWnd, tiUINT32 Msg, tiUINT32 wParam, tiUINT32 lParam) = 0; 12464064216a8433360745f69edddce19a606659163The Android Open Source Project virtual tiVOID TIPrintLastError (tiCHAR* psz) = 0; 12564064216a8433360745f69edddce19a606659163The Android Open Source Project virtual tiUINT32 TIGetCurrentThreadId () = 0; 12664064216a8433360745f69edddce19a606659163The Android Open Source Project virtual tiUINT32 TICreateThread (tiPTHREAD_START_ROUTINE pStartAddress, tiVOID* pParameter ) = 0; 12764064216a8433360745f69edddce19a606659163The Android Open Source Project virtual tiVOID TISleep (tiUINT32 msec) = 0; 12864064216a8433360745f69edddce19a606659163The Android Open Source Project}; 12964064216a8433360745f69edddce19a606659163The Android Open Source Project 13064064216a8433360745f69edddce19a606659163The Android Open Source Project#define TIOALib_OBJECT_CREATOR_IMP( ClassApi, ClassBase ) \ 13164064216a8433360745f69edddce19a606659163The Android Open Source ProjectClassBase* ClassBase::CreateObject(){ return (ClassBase*) new ClassApi;} \ 13264064216a8433360745f69edddce19a606659163The Android Open Source ProjecttiVOID ClassBase::DeleteObject(ClassBase* pObj){ClassApi* pRealObj = (ClassApi*)pObj; \ 13364064216a8433360745f69edddce19a606659163The Android Open Source Projectif(pRealObj)delete pRealObj; } 13464064216a8433360745f69edddce19a606659163The Android Open Source Project 13564064216a8433360745f69edddce19a606659163The Android Open Source Project 13664064216a8433360745f69edddce19a606659163The Android Open Source Project#define TIOALib_SINGLETON_CLASS_IMP( ClassApi ) \ 13764064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_OAL* TI_OAL::GetInstance() \ 13864064216a8433360745f69edddce19a606659163The Android Open Source Project{ return (TI_OAL*) ClassApi::GetInstance(); } \ 13964064216a8433360745f69edddce19a606659163The Android Open Source ProjectTI_OAL* ClassApi::GetInstance() \ 14064064216a8433360745f69edddce19a606659163The Android Open Source Project{if( _instance == 0){_instance = new ClassApi();} \ 14164064216a8433360745f69edddce19a606659163The Android Open Source Projectm_uReferenceCount++; return _instance;} \ 14264064216a8433360745f69edddce19a606659163The Android Open Source ProjecttiVOID TI_OAL::FreeInstance() \ 14364064216a8433360745f69edddce19a606659163The Android Open Source Project{ ClassApi::FreeInstance(); } \ 14464064216a8433360745f69edddce19a606659163The Android Open Source ProjecttiVOID ClassApi::FreeInstance() \ 14564064216a8433360745f69edddce19a606659163The Android Open Source Project{ m_uReferenceCount--;if(!m_uReferenceCount && _instance ) \ 14664064216a8433360745f69edddce19a606659163The Android Open Source Project{delete (ClassApi*)_instance;_instance = NULL;}} 14764064216a8433360745f69edddce19a606659163The Android Open Source Project 14864064216a8433360745f69edddce19a606659163The Android Open Source Project#endif /* !defined(AFX_TIUNILIB_H__F79CA4B8_8596_4F36_B541_2B2FCCF70197__INCLUDED_)*/ 14964064216a8433360745f69edddce19a606659163The Android Open Source Project 150