Skip to content
Snippets Groups Projects
call.cpp 4.28 KiB
Newer Older
llea's avatar
llea committed
/**
 *  Copyright (C) 2004-2005 Savoir-Faire Linux inc.
yanmorin's avatar
 
yanmorin committed
 *  Author: Yan Morin <yan.morin@savoirfairelinux.com>
llea's avatar
llea committed
 *  Author: Laurielle Lea <laurielle.lea@savoirfairelinux.com>
 *                                                                              
 *  This program is free software; you can redistribute it and/or modify
 *  it under the terms of the GNU General Public License as published by
 *  the Free Software Foundation; either version 2 of the License, or
 *  (at your option) any later version.
 *                                                                              
 *  This program is distributed in the hope that it will be useful,
 *  but WITHOUT ANY WARRANTY; without even the implied warranty of
 *  MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 *  GNU General Public License for more details.
 *                                                                              
 *  You should have received a copy of the GNU General Public License
 *  along with this program; if not, write to the Free Software
 *   Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA.
 */

#include <iostream>
jpbl's avatar
jpbl committed

llea's avatar
llea committed
#include "call.h"
#include "voIPLink.h"

yanmorin's avatar
 
yanmorin committed
Call::Call (CALLID id, CallType type, VoIPLink* voiplink)
llea's avatar
llea committed
{
yanmorin's avatar
 
yanmorin committed
	_state = NotExist;
	_type = Null;
llea's avatar
llea committed
	_id = id; 
	_type = type;
	_voIPLink = voiplink;
yanmorin's avatar
 
yanmorin committed
  _flagNotAnswered = true;
llea's avatar
llea committed
	
	switch (_type) {
	case Outgoing:
		_voIPLink->newOutgoingCall(_id);
		break;
	case Incoming:
		_voIPLink->newIncomingCall(_id);
		break;
	default:
		break;
	}
}

Call::~Call (void)
{
}

yanmorin's avatar
 
yanmorin committed
CALLID
llea's avatar
llea committed
Call::getId (void)
{
	return _id;
}

void 
yanmorin's avatar
 
yanmorin committed
Call::setId (CALLID id)
llea's avatar
llea committed
{
	_id = id;
}

void 
Call::setVoIPLink (VoIPLink* voIPLink)
{
	_voIPLink = voIPLink;
}

VoIPLink*
Call::getVoIPLink (void)
{
	return _voIPLink;
}

yanmorin's avatar
 
yanmorin committed
std::string 
llea's avatar
llea committed
Call::getCallerIdName (void)
{
	return _callerIdName;
}

void 
yanmorin's avatar
 
yanmorin committed
Call::setCallerIdName (const std::string& callerId_name)
llea's avatar
llea committed
{
	_callerIdName = callerId_name;
}

yanmorin's avatar
 
yanmorin committed
std::string 
llea's avatar
llea committed
Call::getCallerIdNumber (void)
{
	return _callerIdNumber;
}

void 
yanmorin's avatar
 
yanmorin committed
Call::setCallerIdNumber (const std::string& callerId_number)
llea's avatar
llea committed
{
	_callerIdNumber = callerId_number;
}

yanmorin's avatar
 
yanmorin committed
Call::CallState
llea's avatar
llea committed
Call::getState (void)
{
llea's avatar
llea committed
	return _state;  
yanmorin's avatar
 
yanmorin committed
Call::setState (Call::CallState state) 
llea's avatar
llea committed
{
	_state = state;
}

enum CallType 
Call::getType (void)
{
	return _type;
}

void 
Call::setType (enum CallType type)
{
	_type = type;
}

bool
Call::isBusy (void)
{
llea's avatar
llea committed
	if (isAnswered() or isOffHold() or isOnMute() or isOffMute()) {
llea's avatar
llea committed
		return true;
	} else {
		return false;
	}
}
bool 
Call::isOnHold (void)
{
	return (_state == OnHold) ? true : false;
}

bool 
Call::isOffHold (void)
{
	return (_state == OffHold) ? true : false;
}

bool 
Call::isOnMute (void)
{
	return (_state == MuteOn) ? true : false;
}

llea's avatar
llea committed
bool 
Call::isOffMute (void)
{
	return (_state == MuteOff) ? true : false;
}

llea's avatar
llea committed
bool 
Call::isTransfered (void)
{
	return (_state == Transfered) ? true : false;
}

bool 
Call::isHungup (void)
{
	return (_state == Hungup) ? true : false;
}

bool 
Call::isRinging (void)
{
	return (_state == Ringing) ? true : false;
}

bool 
Call::isRefused (void)
{
	return (_state == Refused) ? true : false;
}

yanmorin's avatar
 
yanmorin committed

llea's avatar
llea committed
bool 
yanmorin's avatar
 
yanmorin committed
Call::isAnswered (void)
llea's avatar
llea committed
{
yanmorin's avatar
 
yanmorin committed
	return (_state == Answered) ? true : false;
yanmorin's avatar
 
yanmorin committed
Call::isNotAnswered (void)
llea's avatar
llea committed
{
yanmorin's avatar
 
yanmorin committed
	return (_state == Error || _state == NotExist || _state == Busy) ? true : false;
llea's avatar
llea committed
}

bool 
Call::isProgressing (void)
{
	return (_state == Progressing) ? true : false;
}

bool
Call::isOutgoingType (void)
{
	return (_type == Outgoing) ? true : false;
}

bool
Call::isIncomingType (void)
{
	return (_type == Incoming) ? true : false;
}

int 
yanmorin's avatar
 
yanmorin committed
Call::outgoingCall(const std::string& to)
llea's avatar
llea committed
{
yanmorin's avatar
 
yanmorin committed
	return _voIPLink->outgoingInvite(_id, to);
llea's avatar
llea committed
}

int 
Call::hangup  (void)
{
	int i = _voIPLink->hangup(_id);
yanmorin's avatar
 
yanmorin committed
  setState(Hungup);
llea's avatar
llea committed
	return i;
jpbl's avatar
jpbl committed
int 
Call::cancel  (void)
{
	int i = _voIPLink->cancel(_id);
yanmorin's avatar
 
yanmorin committed
  setState(Hungup);
jpbl's avatar
jpbl committed
	return i;
}

llea's avatar
llea committed
int 
Call::answer  (void)
{
yanmorin's avatar
 
yanmorin committed
  _flagNotAnswered = false;
llea's avatar
llea committed
	int i = _voIPLink->answer(_id);
yanmorin's avatar
 
yanmorin committed
  setState(Answered);
llea's avatar
llea committed
	return i;
llea's avatar
llea committed
}

int 
Call::onHold  (void)
{
	int i = _voIPLink->onhold(_id);
yanmorin's avatar
 
yanmorin committed
  setState(OnHold);
llea's avatar
llea committed
	return i;
llea's avatar
llea committed
}

int 
Call::offHold  (void)
{
	int i = _voIPLink->offhold(_id);
yanmorin's avatar
 
yanmorin committed
  setState(OffHold);
llea's avatar
llea committed
	return i;
yanmorin's avatar
 
yanmorin committed
Call::transfer  (const std::string& to)
llea's avatar
llea committed
{
	int i = _voIPLink->transfer(_id, to);
yanmorin's avatar
 
yanmorin committed
  setState(Transfered);
llea's avatar
llea committed
	return i;
llea's avatar
llea committed
}

int 
Call::refuse  (void)
{
	int i = _voIPLink->refuse(_id);
llea's avatar
llea committed
	return i;
llea's avatar
llea committed
}