* #27232: jni: added pjproject checkout as regular git content

We will remove it once the next release of pjsip (with Android support)
comes out and is merged into SFLphone.
diff --git a/jni/pjproject-android/.svn/pristine/50/502c7f4c9857cf559329af365f14cbca838c0f8a.svn-base b/jni/pjproject-android/.svn/pristine/50/502c7f4c9857cf559329af365f14cbca838c0f8a.svn-base
new file mode 100644
index 0000000..74b8c42
--- /dev/null
+++ b/jni/pjproject-android/.svn/pristine/50/502c7f4c9857cf559329af365f14cbca838c0f8a.svn-base
@@ -0,0 +1,370 @@
+/*
+========================================================================
+ Name        : pjsuaAppUi.cpp
+ Author      : nanang
+ Copyright   : Copyright (C) 2013 Teluu Inc. (http://www.teluu.com)
+ Description : 
+========================================================================
+*/
+// [[[ begin generated region: do not modify [Generated System Includes]
+#include <eikmenub.h>
+#include <akncontext.h>
+#include <akntitle.h>
+#include <pjsua.rsg>
+// ]]] end generated region [Generated System Includes]
+
+// [[[ begin generated region: do not modify [Generated User Includes]
+#include "pjsuaAppUi.h"
+#include "pjsua.hrh"
+#include "pjsuaContainerView.h"
+// ]]] end generated region [Generated User Includes]
+
+// [[[ begin generated region: do not modify [Generated Constants]
+// ]]] end generated region [Generated Constants]
+
+#include "../../pjsua_app.h"
+#include "../../pjsua_app_config.h"
+
+/* Global vars */
+static CpjsuaAppUi *appui = NULL;
+static pj_ioqueue_t *app_ioqueue = NULL;
+static int start_argc = 0;
+static char **start_argv = NULL;
+
+static pj_status_t InitSymbSocket();
+static void DestroySymbSocket();
+
+/* Helper funtions to init/restart/destroy the pjsua */
+static void PjsuaInitL();
+static void PjsuaDestroyL();
+
+/* pjsua app callbacks */
+static void PjsuaOnStarted(pj_status_t status, const char* title);
+static void PjsuaOnStopped(pj_bool_t restart, int argc, char** argv);
+static void PjsuaOnConfig(pjsua_app_config *cfg);
+
+/* Helper class to schedule function execution */
+class MyTimer : public CActive 
+{
+public:
+    typedef void (*timer_func)();
+    
+public:
+    static MyTimer* NewL(int ms, timer_func f) {
+	MyTimer *self = new MyTimer(f);
+	CleanupStack::PushL(self);
+	self->ConstructL(ms);
+	CleanupStack::Pop(self);
+	return self;
+    }
+    
+    MyTimer(timer_func f) : CActive(EPriorityStandard), func(f) {}
+    ~MyTimer() {
+	Cancel();
+	rtimer.Close();
+    }
+    
+    virtual void RunL() { (*func)(); delete this; }
+    virtual void DoCancel() { rtimer.Cancel(); }
+
+private:	
+    RTimer rtimer;
+    timer_func func;
+    
+    void ConstructL(int ms) {
+	rtimer.CreateLocal();
+	CActiveScheduler::Add(this);
+	rtimer.After(iStatus, ms * 1000);
+	SetActive();
+    }
+};
+
+/**
+ * Construct the CpjsuaAppUi instance
+ */ 
+CpjsuaAppUi::CpjsuaAppUi()
+	{
+	// [[[ begin generated region: do not modify [Generated Contents]
+	// ]]] end generated region [Generated Contents]
+	
+	}
+
+/** 
+ * The appui's destructor removes the container from the control
+ * stack and destroys it.
+ */
+CpjsuaAppUi::~CpjsuaAppUi()
+	{
+	// [[[ begin generated region: do not modify [Generated Contents]
+	// ]]] end generated region [Generated Contents]
+	
+	}
+
+// [[[ begin generated function: do not modify
+void CpjsuaAppUi::InitializeContainersL()
+	{
+	iPjsuaContainerView = CpjsuaContainerView::NewL();
+	AddViewL( iPjsuaContainerView );
+	SetDefaultViewL( *iPjsuaContainerView );
+	}
+// ]]] end generated function
+
+/**
+ * Handle a command for this appui (override)
+ * @param aCommand command id to be handled
+ */
+void CpjsuaAppUi::HandleCommandL( TInt aCommand )
+	{
+	// [[[ begin generated region: do not modify [Generated Code]
+	TBool commandHandled = EFalse;
+	switch ( aCommand )
+		{ // code to dispatch to the AppUi's menu and CBA commands is generated here
+		default:
+			break;
+		}
+	
+		
+	if ( !commandHandled ) 
+		{
+		if ( aCommand == EAknSoftkeyExit || aCommand == EEikCmdExit )
+			{
+			Exit();
+			}
+		}
+	// ]]] end generated region [Generated Code]
+	
+	}
+
+/** 
+ * Override of the HandleResourceChangeL virtual function
+ */
+void CpjsuaAppUi::HandleResourceChangeL( TInt aType )
+	{
+	CAknViewAppUi::HandleResourceChangeL( aType );
+	// [[[ begin generated region: do not modify [Generated Code]
+	// ]]] end generated region [Generated Code]
+	
+	}
+				
+/** 
+ * Override of the HandleKeyEventL virtual function
+ * @return EKeyWasConsumed if event was handled, EKeyWasNotConsumed if not
+ * @param aKeyEvent 
+ * @param aType 
+ */
+TKeyResponse CpjsuaAppUi::HandleKeyEventL(
+		const TKeyEvent& aKeyEvent,
+		TEventCode aType )
+	{
+	// The inherited HandleKeyEventL is private and cannot be called
+	// [[[ begin generated region: do not modify [Generated Contents]
+	// ]]] end generated region [Generated Contents]
+
+	// Left or right softkey pressed
+	if (aType==EEventKeyDown && 
+	    (aKeyEvent.iScanCode == EStdKeyDevice0 || 
+	     aKeyEvent.iScanCode == EStdKeyDevice1))    
+	{
+	    Cba()->MakeVisible(ETrue);
+	} else {
+	    Cba()->MakeVisible(EFalse);   
+	}
+
+	return EKeyWasNotConsumed;
+	}
+
+/** 
+ * Override of the HandleViewDeactivation virtual function
+ *
+ * @param aViewIdToBeDeactivated 
+ * @param aNewlyActivatedViewId 
+ */
+void CpjsuaAppUi::HandleViewDeactivation( 
+		const TVwsViewId& aViewIdToBeDeactivated, 
+		const TVwsViewId& aNewlyActivatedViewId )
+	{
+	CAknViewAppUi::HandleViewDeactivation( 
+			aViewIdToBeDeactivated, 
+			aNewlyActivatedViewId );
+	// [[[ begin generated region: do not modify [Generated Contents]
+	// ]]] end generated region [Generated Contents]
+	
+	}
+
+/**
+ * @brief Completes the second phase of Symbian object construction. 
+ * Put initialization code that could leave here. 
+ */ 
+void CpjsuaAppUi::ConstructL()
+	{
+	// [[[ begin generated region: do not modify [Generated Contents]
+	
+	BaseConstructL( EAknEnableSkin  | 
+					 EAknEnableMSK ); 
+	InitializeContainersL();
+	// ]]] end generated region [Generated Contents]
+	
+	// Save pointer to this AppUi
+	appui = this;
+	
+	// Full screen
+	StatusPane()->MakeVisible(EFalse);
+	Cba()->MakeVisible(EFalse);
+
+	if (InitSymbSocket() != PJ_SUCCESS) {
+	    PutMsg("Failed to initialize Symbian network param.");
+	} else {	
+	    start_argc = pjsua_app_def_argc;
+	    start_argv = (char**)pjsua_app_def_argv;
+
+	    // Schedule Lib Init
+	    MyTimer::NewL(100, &PjsuaInitL);
+	}
+	
+	}
+
+/* Called by Symbian GUI framework when app is about to exit */
+void CpjsuaAppUi::PrepareToExit()
+{
+    TRAPD(result, PjsuaDestroyL());
+    DestroySymbSocket();
+    CloseSTDLIB();
+    CAknViewAppUi::PrepareToExit();
+}
+
+/* Print message on screen */
+void CpjsuaAppUi::PutMsg(const char *msg)
+{
+    iPjsuaContainerView->PutMessage(msg);
+}
+
+#include <es_sock.h>
+
+static RSocketServ aSocketServer;
+static RConnection aConn;
+
+/* Called when pjsua is started */
+void PjsuaOnStarted(pj_status_t status, const char* title)
+{
+    char err_msg[128];
+
+    if (status != PJ_SUCCESS || title == NULL) {
+	char err_str[PJ_ERR_MSG_SIZE];
+	pj_strerror(status, err_str, sizeof(err_str));
+	pj_ansi_snprintf(err_msg, sizeof(err_msg), "%s: %s",
+			 (title?title:"App start error"), err_str);
+	title = err_msg;
+    }
+
+    appui->PutMsg(title);
+}
+
+/* Called when pjsua is stopped */
+void PjsuaOnStopped(pj_bool_t restart, int argc, char** argv)
+{
+    if (restart) {
+	start_argc = argc;
+	start_argv = argv;
+
+	// Schedule Lib Init
+	MyTimer::NewL(100, &PjsuaInitL);
+    } else {
+	/* Destroy & quit GUI, e.g: clean up window, resources  */
+	appui->Exit();
+    }
+}
+
+/* Called before pjsua initializing config.
+ * We need to override some settings here.
+ */
+void PjsuaOnConfig(pjsua_app_config *cfg)
+{
+    /* Disable threading */
+    cfg->cfg.thread_cnt = 0;
+    cfg->cfg.thread_cnt = 0;
+    cfg->media_cfg.thread_cnt = 0;
+    cfg->media_cfg.has_ioqueue = PJ_FALSE;
+
+    /* Create ioqueue for telnet CLI */
+    if (app_ioqueue ==  NULL) {
+	pj_ioqueue_create(cfg->pool, 0, &app_ioqueue);
+    }
+    cfg->cli_cfg.telnet_cfg.ioqueue = app_ioqueue; 
+}
+
+// Set Symbian OS parameters in pjlib.
+// This must be done before pj_init() is called.
+pj_status_t InitSymbSocket()
+{
+    pj_symbianos_params sym_params;
+    TInt err;
+    
+    // Initialize RSocketServ
+    if ((err=aSocketServer.Connect(32)) != KErrNone) {
+	return PJ_STATUS_FROM_OS(err);
+    }
+    
+    // Open up a connection
+    if ((err=aConn.Open(aSocketServer)) != KErrNone) {
+	aSocketServer.Close();
+	return PJ_STATUS_FROM_OS(err);
+    }
+    if ((err=aConn.Start()) != KErrNone) {
+	aConn.Close();
+	aSocketServer.Close();
+	return PJ_STATUS_FROM_OS(err);
+    }
+    
+    pj_bzero(&sym_params, sizeof(sym_params));
+    sym_params.rsocketserv = &aSocketServer;
+    sym_params.rconnection = &aConn;
+    pj_symbianos_set_params(&sym_params);
+    
+    return PJ_SUCCESS;
+}
+
+
+void DestroySymbSocket()
+{
+    aConn.Close();
+    aSocketServer.Close();
+}
+
+
+void PjsuaInitL()
+{
+    pjsua_app_cfg_t app_cfg;
+    pj_status_t status;
+    
+    PjsuaDestroyL();
+    
+    pj_bzero(&app_cfg, sizeof(app_cfg));
+    app_cfg.argc = start_argc;
+    app_cfg.argv = start_argv;
+    app_cfg.on_started = &PjsuaOnStarted;
+    app_cfg.on_stopped = &PjsuaOnStopped;
+    app_cfg.on_config_init = &PjsuaOnConfig;
+
+    appui->PutMsg("Initializing..");
+    status = pjsua_app_init(&app_cfg);
+    if (status != PJ_SUCCESS)
+	goto on_return;
+    
+    appui->PutMsg("Starting..");
+    status = pjsua_app_run(PJ_FALSE);
+    if (status != PJ_SUCCESS)
+	goto on_return;
+
+on_return:
+    if (status != PJ_SUCCESS)
+	appui->PutMsg("Initialization failed");
+}
+
+void PjsuaDestroyL()
+{
+    if (app_ioqueue) {
+	pj_ioqueue_destroy(app_ioqueue);
+	app_ioqueue = NULL;
+    }
+    pjsua_app_destroy();
+}