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