📄 nullhardware.cxx
字号:
/* ==================================================================== * The Vovida Software License, Version 1.0 * * Copyright (c) 2000 Vovida Networks, Inc. All rights reserved. * * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions * are met: * * 1. Redistributions of source code must retain the above copyright * notice, this list of conditions and the following disclaimer. * * 2. Redistributions in binary form must reproduce the above copyright * notice, this list of conditions and the following disclaimer in * the documentation and/or other materials provided with the * distribution. * * 3. The names "VOCAL", "Vovida Open Communication Application Library", * and "Vovida Open Communication Application Library (VOCAL)" must * not be used to endorse or promote products derived from this * software without prior written permission. For written * permission, please contact vocal@vovida.org. * * 4. Products derived from this software may not be called "VOCAL", nor * may "VOCAL" appear in their name, without prior written * permission of Vovida Networks, Inc. * * THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED * WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE, TITLE AND * NON-INFRINGEMENT ARE DISCLAIMED. IN NO EVENT SHALL VOVIDA * NETWORKS, INC. OR ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT DAMAGES * IN EXCESS OF $1,000, NOR FOR ANY INDIRECT, INCIDENTAL, SPECIAL, * EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, * PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR * PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY * OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE * USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH * DAMAGE. * * ==================================================================== * * This software consists of voluntary contributions made by Vovida * Networks, Inc. and many individuals on behalf of Vovida Networks, * Inc. For more information on Vovida Networks, Inc., please see * <http://www.vovida.org/>. * */static const char* const NullHardware_cxx_Version = "$Id: NullHardware.cxx,v 1.14 2000/12/18 23:42:36 bko Exp $";#include <iostream>#include "VTime.hxx"#include <sys/types.h>#include <unistd.h>#include "NullHardware.h"NullHardware::NullHardware (char* device){ // read and write from standard in and standard out // cout << "entering nullhw constructor\n"; myFD = 0; system("stty -icanon");}NullHardware::~NullHardware (void){ // read and write from standard in and standard out system("stty icanon");}int NullHardware::process (fd_set* fd){ int retval = 0; if (FD_ISSET(myFD, fd)) { char keystroke; cin >> keystroke; switch (keystroke) { case 'q': // quit exit(0); break; case 'a': // offhook outgoingEvents.push(EventOffHook); retval++; break; case 'z': // onhook outgoingEvents.push(EventOnHook); retval++; break; case '1': outgoingEvents.push(EventDigit1); retval++; break; case '2': outgoingEvents.push(EventDigit2); retval++; break; case '3': outgoingEvents.push(EventDigit3); retval++; break; case '4': outgoingEvents.push(EventDigit4); retval++; break; case '5': outgoingEvents.push(EventDigit5); retval++; break; case '6': outgoingEvents.push(EventDigit6); retval++; break; case '7': outgoingEvents.push(EventDigit7); retval++; break; case '8': outgoingEvents.push(EventDigit8); retval++; break; case '9': outgoingEvents.push(EventDigit9); retval++; break; case '0': outgoingEvents.push(EventDigit0); retval++; break; default: // no events break; } // end switch } return retval;}int NullHardware::addToFdSet (fd_set* fd){ // cout << "entering nullhw addToFdSet\n"; FD_SET(myFD, fd); return 0;}HardwareEvent NullHardware::getEvent (void){ HardwareEvent ev; if (!outgoingEvents.empty()) { ev = outgoingEvents.front(); outgoingEvents.pop(); } else { ev = EventNULL; } return ev;}int NullHardware::sendSignal (HardwareSignal signal){ int retval = 0; switch (signal) { case SignalRingStart: cout << "%%% Start ringing %%%\n"; break; case SignalRingStop: cout << "%%% Stop ringing %%%\n"; break; case SignalRemoteRingbackStart: cout << "%%% Start remote ringback %%%\n"; break; case SignalRemoteRingbackStop: cout << "%%% Stop remote ringback %%%\n"; break; case SignalLocalRingbackStart: cout << "%%% Start local ringback %%%\n"; break; case SignalLocalRingbackStop: cout << "%%% Stop local ringback %%%\n"; break; case SignalBusyStart: cout << "%%% Start busy start %%%\n"; break; case SignalBusyStop: cout << "%%% Stop busy stop %%%\n"; break; case SignalAudioStop: cout << "%%% Stopping audio %%%\n"; break; default: retval = -1; // signal not supported by hardware break; } return retval;}int NullHardware::audioStart (int in_port, const char* out_host, int out_port){ cout << "%%% Establishing audio %%%\n"; cout << "Listening on port: " << in_port << "\n"; cout << "Sending to host: " << out_host << "\n"; cout << "Sending to port: " << out_port << "\n"; return 0;}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -