Skip to content

Commit

Permalink
Risip VoIP SDK on a seperate repository. More focus on creating a clean
Browse files Browse the repository at this point in the history
set of APIs SIP and WebRTC endpoints.

Some cleanups and fixes:
- Removed the threading issue with RisipMedia
- PjsipCall status update for the call is handled better when passed to
RisipCall thread object.
- Introduced a callExternalSIP() function for making calls to external
SIP accounts - for testing purposes.
  • Loading branch information
Petref Saraci committed Jan 9, 2017
1 parent e3cb98a commit 0194eda
Show file tree
Hide file tree
Showing 13 changed files with 63 additions and 29 deletions.
2 changes: 1 addition & 1 deletion LICENSE.GPLv3
@@ -1,6 +1,6 @@
GNU GENERAL PUBLIC LICENSE

The Risip software is Copyright (C) 2016 Petref Saraci.
The Risip software is Copyright (C) 2016 - 2017 Petref Saraci.
Contact http://risip.io

You may use, distribute and copy the Risip software under the terms of
Expand Down
2 changes: 1 addition & 1 deletion LICENSE.HEADER.GPLv3
@@ -1,5 +1,5 @@
/***********************************************************************************
** Copyright (C) 2016 Petref Saraci
** Copyright (C) 2016 - 2017 Petref Saraci
** http://risip.io
**
** This program is free software: you can redistribute it and/or modify
Expand Down
1 change: 0 additions & 1 deletion platforms/android-platform/androidplatform.pri
Expand Up @@ -20,7 +20,6 @@
DESTDIR = $$PWD/bin

QT += androidextras
INCLUDEPATH += $$PWD/pjsip/armeabi/include

ANDROID_PACKAGE_SOURCE_DIR = $$PWD/android

Expand Down
6 changes: 2 additions & 4 deletions platforms/ios/iosplatform.pri
@@ -1,5 +1,5 @@
##################################################################################
# Copyright (C) 2016 Petref Saraci
# Copyright (C) 2016 - 2017 Petref Saraci
# http://risip.io
#
# This program is free software: you can redistribute it and/or modify
Expand All @@ -19,8 +19,6 @@
###################################################################################
DESTDIR = $$PWD/bin

INCLUDEPATH += $$PWD/pjsip/ios-64/include

#QMAKE_IOS_DEPLOYMENT_TARGET = 10.1

QMAKE_CXXFLAGS = -miphoneos-version-min=9.0
Expand All @@ -34,7 +32,7 @@ OBJECTIVE_SOURCES += \
$$PWD/../../src/risipsdk/ios/risipioscontactaccessmanager.mm \
$$PWD/../../src/risipsdk/ios/risipioswifiprovider.mm

LIBS += -L$$PWD/pjsip/ios-64/lib \
LIBS += -L$$PWD/../../pjsip/ios-64/staticlibs \
-lpjsua2-arm64-apple-darwin_ios \
-lpjsua-arm64-apple-darwin_ios \
-lpjsip-ua-arm64-apple-darwin_ios \
Expand Down
8 changes: 3 additions & 5 deletions platforms/linux/linuxplatform.pri
@@ -1,5 +1,5 @@
##################################################################################
# Copyright (C) 2016 Petref Saraci
# Copyright (C) 2016 - 2017 Petref Saraci
# http://risip.io
#
# This program is free software: you can redistribute it and/or modify
Expand All @@ -19,10 +19,8 @@
###################################################################################
DESTDIR = $$PWD/bin

INCLUDEPATH += $$PWD/pjsip/include

# static linking with PJSIP
#LIBS += -L$$PWD/pjsip/lib \
#LIBS += -L$$PWD/../../pjsip/linux-64/staticlibs \
# -lpjsua2-x86_64-unknown-linux-gnu \
# -lpjsua-x86_64-unknown-linux-gnu \
# -lpjsip-ua-x86_64-unknown-linux-gnu \
Expand All @@ -43,7 +41,7 @@ INCLUDEPATH += $$PWD/pjsip/include
# -lg7221codec-x86_64-unknown-linux-gnu

# dynamic linking with PJSIP
LIBS += -L$$PWD/pjsip/lib \
LIBS += -L$$PWD/../../pjsip/linux-64/dylibs \
-lpjsua2 \
-lpjsua \
-lpjsip-ua \
Expand Down
8 changes: 3 additions & 5 deletions platforms/macos/macplatform.pri
@@ -1,5 +1,5 @@
##################################################################################
# Copyright (C) 2016 Petref Saraci
# Copyright (C) 2016 - 2017 Petref Saraci
# http://risip.io
#
# This program is free software: you can redistribute it and/or modify
Expand All @@ -20,15 +20,13 @@
DESTDIR = $$PWD/bin
CONFIG += app_bundle

INCLUDEPATH += $$PWD/pjsip/include

QMAKE_MAC_SDK = macosx10.12
QMAKE_MACOSX_DEPLOYMENT_TARGET = 10.12
QMAKE_CXXFLAGS += -mmacosx-version-min=10.12
QMAKE_LFLAGS += -mmacosx-version-min=10.12

# static linking with PJSIP
LIBS += -L$$PWD/pjsip/lib \
LIBS += -L$$PWD/../../pjsip/macos-64/staticlibs \
-lpjsua2-x86_64-apple-darwin15.6.0 \
-lpjsua-x86_64-apple-darwin15.6.0 \
-lpjsip-simple-x86_64-apple-darwin15.6.0 \
Expand All @@ -55,7 +53,7 @@ LIBS += -L$$PWD/pjsip/lib \
-framework AudioUnit

# dynamic linking with PJSIP
#LIBS += -L$$PWD/pjsip/lib \
#LIBS += -L$$PWD../../macos-64/dylibs \
# -lpjsua2 \
# -lpjsua \
# -lpjsip-ua \
Expand Down
6 changes: 4 additions & 2 deletions risip.pro → risip-voipsdk.pro
@@ -1,5 +1,5 @@
##################################################################################
# Copyright (C) 2016 Petref Saraci
# Copyright (C) 2016 - 2017 Petref Saraci
# http://risip.io
#
# This program is free software: you can redistribute it and/or modify
Expand All @@ -18,7 +18,7 @@
#
###################################################################################

TARGET = risip
TARGET = risip-voip
TEMPLATE = lib

CONFIG += exceptions c++11
Expand Down Expand Up @@ -49,6 +49,8 @@ INCLUDEPATH += $$PWD/src \
$$PWD/src/risipsdk/headers/sipprovision \
$$PWD/src/risipsdk/headers/utils

INCLUDEPATH += $$PWD/pjsip/include

macx {
include(platforms/macos/macplatform.pri)
}
Expand Down
1 change: 1 addition & 0 deletions src/risipsdk/headers/risipcall.h
Expand Up @@ -104,6 +104,7 @@ public Q_SLOTS:
void answer();
void hangup();
void call();
void callExternalSIP(const QString &uri);
void hold(bool hold);

Q_SIGNALS:
Expand Down
6 changes: 4 additions & 2 deletions src/risipsdk/headers/risipcallmanager.h
Expand Up @@ -49,15 +49,17 @@ class RISIP_SDK_EXPORT RisipCallManager : public QObject
RisipCall *activeCall();
void setActiveCall(RisipCall *call);

//history related methods
QAbstractItemModel *activeCallHistoryModel() const;
void setActiveCallHistoryModel(QAbstractItemModel *model);

QQmlListProperty<QAbstractItemModel> callHistoryModels();
Q_INVOKABLE QAbstractItemModel *historyCallModelForAccount(const QString &account) const;

Q_INVOKABLE QAbstractItemModel *callHistoryModelForAccount(const QString &account) const;
//call related methods
Q_INVOKABLE RisipCall *callSIPContact(const QString &contact);
Q_INVOKABLE RisipCall *callBuddy(RisipBuddy *buddy);
Q_INVOKABLE RisipCall *callPhone(const QString &number);
Q_INVOKABLE RisipCall *callExternalSIP(const QString &uri);

void createModelsForAccount(RisipAccount *account);
void removeModelsForAccount(const RisipAccount *account);
Expand Down
4 changes: 2 additions & 2 deletions src/risipsdk/pjsipwrapper/pjsipcall.cpp
Expand Up @@ -52,8 +52,8 @@ void PjsipCall::onCallState(OnCallStateParam &prm)
// emit a status change signal otherwise
if(!isActive())
m_risipCall->setPjsipCall(NULL);

m_risipCall->statusChanged();
else
m_risipCall->statusChanged();
}

void PjsipCall::onCallTsxState(OnCallTsxStateParam &prm)
Expand Down
2 changes: 0 additions & 2 deletions src/risipsdk/risip.cpp
Expand Up @@ -39,7 +39,6 @@
#include "utils/qqmlsortfilterproxymodel.h"

#include "location/risipgeopositionprovider.h"
#include "location/risiplocation.h"

#include "models/risipcallhistorymodel.h"
#include "models/risipcountryratesmodel.h"
Expand Down Expand Up @@ -157,7 +156,6 @@ Risip::Risip(QObject *parent)
{
m_data->m_defaultAccountAlways = true;
RisipGlobals::instance()->initializeCountries();
RisipLocation::instance();
}

Risip::~Risip()
Expand Down
25 changes: 24 additions & 1 deletion src/risipsdk/risipcall.cpp
Expand Up @@ -32,6 +32,7 @@
#include "pjsipwrapper/pjsipaccount.h"
#include "pjsipwrapper/pjsipcall.h"

#include <QTimer>
#include <QCoreApplication>

#include <QDebug>
Expand Down Expand Up @@ -64,6 +65,7 @@ RisipCall::RisipCall(QObject *parent)
RisipCall::~RisipCall()
{
setPjsipCall(NULL);
disconnect(this);
delete m_data;
m_data = NULL;
}
Expand Down Expand Up @@ -273,7 +275,7 @@ QString RisipCall::errorInfo() const
void RisipCall::initializeMediaHandler()
{
if(!m_data->risipMedia)
setMedia(new RisipMedia(this));
setMedia(new RisipMedia);

m_data->risipMedia->startCallMedia();
}
Expand Down Expand Up @@ -353,6 +355,27 @@ void RisipCall::call()
}
}

void RisipCall::callExternalSIP(const QString &uri)
{
setCallType(RisipCall::Sip);
if(!m_data->account && uri.isEmpty())
return;

if(m_data->account->status() != RisipAccount::SignedIn)
return;

setCallDirection(RisipCall::Outgoing);
createTimestamp();
setPjsipCall(new PjsipCall(*m_data->account->pjsipAccount()));
CallOpParam prm(true);

try {
m_data->pjsipCall->makeCall(uri.toStdString(), prm);
} catch (Error err) {
setError(err);
}
}

/**
* @brief RisipCall::hold
* @param hold
Expand Down
21 changes: 18 additions & 3 deletions src/risipsdk/risipcallmanager.cpp
Expand Up @@ -105,7 +105,7 @@ QQmlListProperty<QAbstractItemModel> RisipCallManager::callHistoryModels()
return QQmlListProperty<QAbstractItemModel>(this, models);
}

QAbstractItemModel *RisipCallManager::callHistoryModelForAccount(const QString &account) const
QAbstractItemModel *RisipCallManager::historyCallModelForAccount(const QString &account) const
{
if(m_data->m_callHistoryModels.contains(account))
return qobject_cast<RisipCallHistoryModel *>(m_data->m_callHistoryModels[account]);
Expand Down Expand Up @@ -149,8 +149,8 @@ void RisipCallManager::setActiveAccount(RisipAccount *account)
connect(m_data->m_activeAccount, &RisipAccount::incomingCall,
this, &RisipCallManager::accountIncomingCall, Qt::UniqueConnection);

if(callHistoryModelForAccount(m_data->m_activeAccount->configuration()->uri()))
setActiveCallHistoryModel(callHistoryModelForAccount(m_data->m_activeAccount->configuration()->uri()));
if(historyCallModelForAccount(m_data->m_activeAccount->configuration()->uri()))
setActiveCallHistoryModel(historyCallModelForAccount(m_data->m_activeAccount->configuration()->uri()));
//TODO what if call history model does not exists?

emit activeAccountChanged(m_data->m_activeAccount);
Expand Down Expand Up @@ -211,6 +211,21 @@ RisipCall *RisipCallManager::callPhone(const QString &number)
return callBuddy(buddy);
}

RisipCall *RisipCallManager::callExternalSIP(const QString &uri)
{
RisipCall * call = new RisipCall(this);
call->setAccount(m_data->m_activeAccount);
call->callExternalSIP(uri);

emit outgoingCall(call);

//adding call record for the active account.
qobject_cast<RisipCallHistoryModel *>(m_data->m_activeCallHistoryModel)->addCallRecord(call);
setActiveCall(call);

return call;
}

/**
* @brief RisipCallManager::createModelsForAccount
* @param activeAccount
Expand Down

0 comments on commit 0194eda

Please sign in to comment.