• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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 
47 class  TI_OSWrapCriticalSection
48 {
49     protected:
50                 tiVOID*     m_pCS;
51     public:
52         static  TI_OSWrapCriticalSection*   CreateObject();
53         static  tiVOID          DeleteObject(TI_OSWrapCriticalSection* pObj);
54 
TI_OSWrapCriticalSection()55                     TI_OSWrapCriticalSection() {}
~TI_OSWrapCriticalSection()56         virtual    ~TI_OSWrapCriticalSection() {}
57         virtual tiVOID    Enter               ()  = 0;
58         virtual tiVOID    Leave               ()  = 0;
59 };
60 
61 class  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 /*
72 class  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 
86 class  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 */
98 typedef tiUINT32 (* tiPTHREAD_START_ROUTINE)( tiVOID* pThreadParameter );
99 
100 class  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 )   \
131 ClassBase* ClassBase::CreateObject(){ return (ClassBase*) new ClassApi;} \
132 tiVOID  ClassBase::DeleteObject(ClassBase* pObj){ClassApi* pRealObj = (ClassApi*)pObj; \
133 if(pRealObj)delete pRealObj; }
134 
135 
136 #define TIOALib_SINGLETON_CLASS_IMP( ClassApi )             \
137 TI_OAL* TI_OAL::GetInstance()                               \
138 { return (TI_OAL*) ClassApi::GetInstance(); }               \
139 TI_OAL* ClassApi::GetInstance()                             \
140 {if( _instance == 0){_instance = new ClassApi();}           \
141 m_uReferenceCount++; return _instance;}                     \
142 tiVOID TI_OAL::FreeInstance()                               \
143 { ClassApi::FreeInstance(); }                               \
144 tiVOID 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