📄 ptphoneextspeaker.cpp
字号:
//// Copyright (C) 2004, 2005 Pingtel Corp.// //// $$//////////////////////////////////////////////////////////////////////////////// SYSTEM INCLUDES#include <assert.h>#ifdef __pingtel_on_posix__#include <stdlib.h>#endif// APPLICATION INCLUDES#include "ptapi/PtComponent.h"#include "ptapi/PtPhoneExtSpeaker.h"#include "ptapi/PtPhoneExtSpeaker.h"#include "ps/PsButtonTask.h"#include "tao/TaoClientTask.h"#include "tao/TaoEvent.h"#include "tao/TaoString.h"// EXTERNAL FUNCTIONS// EXTERNAL VARIABLES// CONSTANTS// STATIC VARIABLE INITIALIZATIONS/* //////////////////////////// PUBLIC //////////////////////////////////// *//* ============================ CREATORS ================================== */// ConstructorPtPhoneExtSpeaker::PtPhoneExtSpeaker(): PtComponent(PtComponent::EXTERNAL_SPEAKER){ mpClient = 0; mTimeOut = OsTime(PT_CONST_EVENT_WAIT_TIMEOUT, 0); mpEventMgr = OsProtectEventMgr::getEventMgr();}// Copy constructorPtPhoneExtSpeaker::PtPhoneExtSpeaker(const PtPhoneExtSpeaker& rPtPhoneExtSpeaker): PtComponent(rPtPhoneExtSpeaker){ mpClient = rPtPhoneExtSpeaker.mpClient; if (mpClient && !(mpClient->isStarted())) { mpClient->start(); } mTimeOut = OsTime(PT_CONST_EVENT_WAIT_TIMEOUT, 0); mpEventMgr = OsProtectEventMgr::getEventMgr();}PtPhoneExtSpeaker::PtPhoneExtSpeaker(TaoClientTask *pClient): PtComponent(PtComponent::EXTERNAL_SPEAKER){ mpClient = pClient; if (mpClient && !(mpClient->isStarted())) { mpClient->start(); } mTimeOut = OsTime(PT_CONST_EVENT_WAIT_TIMEOUT, 0); mpEventMgr = OsProtectEventMgr::getEventMgr();}// DestructorPtPhoneExtSpeaker::~PtPhoneExtSpeaker(){}/* ============================ MANIPULATORS ============================== */// Assignment operatorPtPhoneExtSpeaker&PtPhoneExtSpeaker::operator=(const PtPhoneExtSpeaker& rhs){ if (this == &rhs) // handle the assignment to self case return *this; mpClient = rhs.mpClient; if (mpClient && !(mpClient->isStarted())) { mpClient->start(); } mTimeOut = rhs.mTimeOut; return *this;}PtStatus PtPhoneExtSpeaker::setVolume(int volume){ if (volume < 0) volume = 0; if (volume > 10) volume = 10; char buf[MAXIMUM_INTEGER_STRING_LENGTH]; sprintf(buf, "%d", volume); UtlString arg; arg.append(buf); sprintf(buf, "%d", mGroupType); arg += TAOMESSAGE_DELIMITER + buf; OsProtectedEvent *pe = mpEventMgr->alloc(); TaoMessage msg(TaoMessage::REQUEST_PHONECOMPONENT, TaoMessage::EXTSPEAKER_SET_VOLUME, 0, (TaoObjHandle)0, (TaoObjHandle)pe, 2, arg); mpClient->sendRequest(msg); int rc; if (OS_SUCCESS != pe->wait(msg.getCmd(), mTimeOut)) { mpClient->resetConnectionSocket(msg.getMsgID()); // If the event has already been signalled, clean up if(OS_ALREADY_SIGNALED == pe->signal(0)) { mpEventMgr->release(pe); } return PT_BUSY; } pe->getEventData((int &)rc);#ifdef PTAPI_TEST int cmd; pe->getIntData2(cmd); assert(cmd == TaoMessage::EXTSPEAKER_SET_VOLUME);#endif mpEventMgr->release(pe); return PT_SUCCESS;}/* ============================ ACCESSORS ================================= */PtStatus PtPhoneExtSpeaker::getVolume(int& rVolume){ char buf[MAXIMUM_INTEGER_STRING_LENGTH]; sprintf(buf, "%d", mGroupType); OsProtectedEvent *pe = mpEventMgr->alloc(); TaoMessage msg(TaoMessage::REQUEST_PHONECOMPONENT, TaoMessage::EXTSPEAKER_GET_VOLUME, 0, (TaoObjHandle)0, (TaoObjHandle)pe, 1, buf); mpClient->sendRequest(msg); int rc; UtlString arg; if (OS_SUCCESS != pe->wait(msg.getCmd(), mTimeOut)) { mpClient->resetConnectionSocket(msg.getMsgID()); // If the event has already been signalled, clean up if(OS_ALREADY_SIGNALED == pe->signal(0)) { mpEventMgr->release(pe); } return PT_BUSY; } pe->getEventData((int &)rc); pe->getStringData((UtlString &)arg);#ifdef PTAPI_TEST int cmd; pe->getIntData2(cmd); assert(cmd == TaoMessage::EXTSPEAKER_GET_VOLUME);#endif mpEventMgr->release(pe); rVolume = atoi(arg); return PT_SUCCESS;}PtStatus PtPhoneExtSpeaker::getNominalVolume(int& rVolume){ char buf[MAXIMUM_INTEGER_STRING_LENGTH]; sprintf(buf, "%d", mGroupType); OsProtectedEvent *pe = mpEventMgr->alloc(); TaoMessage msg(TaoMessage::REQUEST_PHONECOMPONENT, TaoMessage::EXTSPEAKER_GET_NOMINAL_VOLUME, 0, (TaoObjHandle)0, (TaoObjHandle)pe, 1, buf); mpClient->sendRequest(msg); int rc; UtlString arg; if (OS_SUCCESS != pe->wait(msg.getCmd(), mTimeOut)) { mpClient->resetConnectionSocket(msg.getMsgID()); // If the event has already been signalled, clean up if(OS_ALREADY_SIGNALED == pe->signal(0)) { mpEventMgr->release(pe); } return PT_BUSY; } pe->getEventData((int &)rc); pe->getStringData((UtlString &)arg);#ifdef PTAPI_TEST int cmd; pe->getIntData2(cmd); assert(cmd == TaoMessage::EXTSPEAKER_GET_NOMINAL_VOLUME);#endif mpEventMgr->release(pe); rVolume = atoi(arg); return PT_SUCCESS;}/* ============================ INQUIRY =================================== *//* //////////////////////////// PROTECTED ///////////////////////////////// *//* //////////////////////////// PRIVATE /////////////////////////////////// *//* ============================ FUNCTIONS ================================= */
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -