pshookswdev.cpp
来自「基于sipfoundy 公司开发的sipx协议API」· C++ 代码 · 共 120 行
CPP
120 行
//// Copyright (C) 2004, 2005 Pingtel Corp.// //// $$//////////////////////////////////////////////////////////////////////////////// SYSTEM INCLUDES#include <assert.h>// APPLICATION INCLUDES#include "os/OsUtil.h"#include "ps/PsHookswDev.h"#ifdef _VXWORKS#include "ps/vxw/PsHookswDevVxw.h"#elif defined(_WIN32)#include "ps/wnt/PsHookswDevWnt.h"#elif defined(__pingtel_on_posix__)#include "ps/linux/PsHookswDevLinux.h"#else#error Unsupported target platform.#endif// EXTERNAL FUNCTIONS// EXTERNAL VARIABLES// CONSTANTS// STATIC VARIABLE INITIALIZATIONSPsHookswDev* PsHookswDev::spInstance = 0;OsBSem PsHookswDev::sLock(OsBSem::Q_PRIORITY, OsBSem::FULL);/* //////////////////////////// PUBLIC //////////////////////////////////// *//* ============================ CREATORS ================================== */// Return a pointer to the Hookswitch device, creating it if necessaryPsHookswDev* PsHookswDev::getHookswDev(PsHookswTask* pHookswTask){ // If the object already exists, then just return it if (spInstance != NULL) return spInstance; // If the object does not yet exist, then acquire the lock to ensure that // only one instance of the object is created sLock.acquire(); if (spInstance == NULL) { // we must have a valid hookswitch task pointer before calling the // constructor for the hookswitch device assert(pHookswTask != NULL); switch (OsUtil::getPlatformType()) {#ifdef _VXWORKS case OsUtil::PLATFORM_BRUTUS: // GPIO pin 0, interrupt level 0, on hook state = 1 spInstance = new PsHookswDevVxw(pHookswTask, 0, 0, 1); break; case OsUtil::PLATFORM_TCAS1: // GPIO pin 19, interrupt level 11, on hook state = 0 spInstance = new PsHookswDevVxw(pHookswTask, 19, 11, 0); break; case OsUtil::PLATFORM_TCAS2: case OsUtil::PLATFORM_TCAS3: case OsUtil::PLATFORM_TCAS4: case OsUtil::PLATFORM_TCAS5: case OsUtil::PLATFORM_TCAS6: case OsUtil::PLATFORM_TCAS7: // GPIO pin 1, interrupt level 1, on hook state = 0 spInstance = new PsHookswDevVxw(pHookswTask, 1, 1, 0); break;#elif defined(_WIN32) case OsUtil::PLATFORM_WIN32: spInstance = new PsHookswDevWnt(pHookswTask); break;#elif defined(__pingtel_on_posix__) case OsUtil::PLATFORM_LINUX: case OsUtil::PLATFORM_SOLARIS: spInstance = new PsHookswDevLinux(pHookswTask); break;#else#error Unsupported target platform.#endif default: assert(FALSE); } } sLock.release(); return spInstance;}// DestructorPsHookswDev::~PsHookswDev(){ spInstance = NULL;}/* ============================ MANIPULATORS ============================== *//* ============================ ACCESSORS ================================= *//* ============================ INQUIRY =================================== *//* //////////////////////////// PROTECTED ///////////////////////////////// */// Default constructor (called only indirectly via getHookswDev())PsHookswDev::PsHookswDev(PsHookswTask* pHookswTask): mpHookswTask(pHookswTask){ // no further initialization is required}/* //////////////////////////// PRIVATE /////////////////////////////////// *//* ============================ FUNCTIONS ================================= */
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?