1/******************************************************************************* 2**+--------------------------------------------------------------------------+** 3**| |** 4**| Copyright 1998-2008 Texas Instruments, Inc. - http://www.ti.com/ |** 5**| |** 6**| Licensed under the Apache License, Version 2.0 (the "License"); |** 7**| you may not use this file except in compliance with the License. |** 8**| You may obtain a copy of the License at |** 9**| |** 10**| http://www.apache.org/licenses/LICENSE-2.0 |** 11**| |** 12**| Unless required by applicable law or agreed to in writing, software |** 13**| distributed under the License is distributed on an "AS IS" BASIS, |** 14**| WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. |** 15**| See the License for the specific language governing permissions and |** 16**| limitations under the License. |** 17**| |** 18**+--------------------------------------------------------------------------+** 19*******************************************************************************/ 20 21/*--------------------------------------------------------------------------*/ 22/* Module: TI_OAL.h*/ 23/**/ 24/* Purpose: This file contains a interface for the TI_OAL class.*/ 25/**/ 26/*////////////////////////////////////////////////////////////////////*/ 27 28#if !defined(AFX_TIUNILIB_H__F79CA4B8_8596_4F36_B541_2B2FCCF70197__INCLUDED_) 29#define AFX_TIUNILIB_H__F79CA4B8_8596_4F36_B541_2B2FCCF70197__INCLUDED_ 30 31#if _MSC_VER > 1000 32#pragma once 33#endif /* _MSC_VER > 1000*/ 34 35#include "osTIType.h" 36#include "TI_Results.h" 37 38#ifdef _UNICODE 39 #define tisprintf swprintf 40 #define tistrncpy wcsncpy 41#else 42 #define tisprintf sprintf 43 #define tistrncpy strncpy 44#endif 45 46 47class TI_OSWrapCriticalSection 48{ 49 protected: 50 tiVOID* m_pCS; 51 public: 52 static TI_OSWrapCriticalSection* CreateObject(); 53 static tiVOID DeleteObject(TI_OSWrapCriticalSection* pObj); 54 55 TI_OSWrapCriticalSection() {} 56 virtual ~TI_OSWrapCriticalSection() {} 57 virtual tiVOID Enter () = 0; 58 virtual tiVOID Leave () = 0; 59}; 60 61class TI_OSCriticalSection 62{ 63 TI_OSWrapCriticalSection* m_pWrapCS; 64 65 public: 66 TI_OSCriticalSection(); 67 ~TI_OSCriticalSection(); 68 tiVOID Enter (); 69 tiVOID Leave (); 70}; 71/* 72class TI_OSWrapEvent 73{ 74 protected: 75 tiVOID* m_pEvent; 76 public: 77 static TI_OSWrapEvent* CreateObject(); 78 79 TI_OSWrapEvent() {} 80 ~TI_OSWrapEvent() {} 81 virtual tiUINT32 Wait ( tiUINT32 uTime ) = 0; 82 virtual tiVOID Set () = 0; 83 virtual tiVOID Reset () = 0; 84}; 85 86class TI_OSEvent 87{ 88 TI_OSWrapEvent* m_pWrapEvent; 89 90 public: 91 TI_OSEvent(); 92 ~TI_OSEvent(); 93 tiUINT32 Wait ( tiUINT32 uTime ); 94 tiVOID Set (); 95 tiVOID Reset (); 96}; 97*/ 98typedef tiUINT32 (* tiPTHREAD_START_ROUTINE)( tiVOID* pThreadParameter ); 99 100class TI_OAL 101{ 102 protected: 103 104 TI_OAL (); 105 virtual ~TI_OAL (); 106 107 static TI_OAL* _instance; 108 static tiUINT32 m_uReferenceCount; 109 110 public: 111 static TI_OAL* GetInstance (); /* static function for create TI_OSlib object*/ 112 static tiVOID FreeInstance (); /* static function for release TI_OAL object*/ 113 114 /* list of functions that will call from Utility Adapter and Utility GUI modules */ 115 virtual tiVOID TIOutputDebugString (tiCHAR* lpOutputString) = 0; 116 virtual tiBOOL TIIsBadWritePtr (tiVOID* lp, tiUINT32 ucb ) = 0; 117 118 /* list of functions that will call from Windows Utility module */ 119 virtual tiUINT32 TILoadLibrary (tiCHAR* pLibFileName) = 0; 120 virtual tiBOOL TIFreeLibrary (tiUINT32 hLibModule) = 0; 121 virtual tiUINT32 TIGetProcAddress (tiUINT32 hModule, tiCHAR* lpProcName ) = 0; 122 virtual tiUINT32 TIRegisterWindowMessage (tiCHAR* pszMsgName ) = 0; 123 virtual tiBOOL TIPostMessage (tiUINT32 hWnd, tiUINT32 Msg, tiUINT32 wParam, tiUINT32 lParam) = 0; 124 virtual tiVOID TIPrintLastError (tiCHAR* psz) = 0; 125 virtual tiUINT32 TIGetCurrentThreadId () = 0; 126 virtual tiUINT32 TICreateThread (tiPTHREAD_START_ROUTINE pStartAddress, tiVOID* pParameter ) = 0; 127 virtual tiVOID TISleep (tiUINT32 msec) = 0; 128}; 129 130#define TIOALib_OBJECT_CREATOR_IMP( ClassApi, ClassBase ) \ 131ClassBase* ClassBase::CreateObject(){ return (ClassBase*) new ClassApi;} \ 132tiVOID ClassBase::DeleteObject(ClassBase* pObj){ClassApi* pRealObj = (ClassApi*)pObj; \ 133if(pRealObj)delete pRealObj; } 134 135 136#define TIOALib_SINGLETON_CLASS_IMP( ClassApi ) \ 137TI_OAL* TI_OAL::GetInstance() \ 138{ return (TI_OAL*) ClassApi::GetInstance(); } \ 139TI_OAL* ClassApi::GetInstance() \ 140{if( _instance == 0){_instance = new ClassApi();} \ 141m_uReferenceCount++; return _instance;} \ 142tiVOID TI_OAL::FreeInstance() \ 143{ ClassApi::FreeInstance(); } \ 144tiVOID ClassApi::FreeInstance() \ 145{ m_uReferenceCount--;if(!m_uReferenceCount && _instance ) \ 146{delete (ClassApi*)_instance;_instance = NULL;}} 147 148#endif /* !defined(AFX_TIUNILIB_H__F79CA4B8_8596_4F36_B541_2B2FCCF70197__INCLUDED_)*/ 149 150