summaryrefslogtreecommitdiff
path: root/pjsip-apps/src/symsndtest/main_symbian.cpp
diff options
context:
space:
mode:
authorBenny Prijono <bennylp@teluu.com>2007-08-31 15:04:52 +0000
committerBenny Prijono <bennylp@teluu.com>2007-08-31 15:04:52 +0000
commitb2ce067a55ee3eab4b80e48b3e83eefc02b8ade6 (patch)
treeaa428fefd97ce7bd17f5ecc0078809d1750c77aa /pjsip-apps/src/symsndtest/main_symbian.cpp
parent73fb6a5d604c925429aff2a618b8acc74f0cf702 (diff)
Continuing ticket #2: initial test with Symbian sound device implementation. Callback works, but not in full duplex
git-svn-id: http://svn.pjsip.org/repos/pjproject/trunk@1428 74dad513-b988-da41-8d7b-12977e46ad98
Diffstat (limited to 'pjsip-apps/src/symsndtest/main_symbian.cpp')
-rw-r--r--pjsip-apps/src/symsndtest/main_symbian.cpp153
1 files changed, 153 insertions, 0 deletions
diff --git a/pjsip-apps/src/symsndtest/main_symbian.cpp b/pjsip-apps/src/symsndtest/main_symbian.cpp
new file mode 100644
index 00000000..8c4d8026
--- /dev/null
+++ b/pjsip-apps/src/symsndtest/main_symbian.cpp
@@ -0,0 +1,153 @@
+/* $Id$ */
+/*
+ * Copyright (C) 2003-2007 Benny Prijono <benny@prijono.org>
+ *
+ * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ */
+
+#include <e32std.h>
+#include <e32base.h>
+#include <e32std.h>
+#include <e32cons.h>
+#include <stdlib.h>
+
+
+// Global Variables
+CConsoleBase* console;
+
+int app_main();
+
+
+////////////////////////////////////////////////////////////////////////////
+class MyTask : public CActive
+{
+public:
+ static MyTask *NewL(CActiveSchedulerWait *asw);
+ ~MyTask();
+ void Start();
+
+protected:
+ MyTask(CActiveSchedulerWait *asw);
+ void ConstructL();
+ virtual void RunL();
+ virtual void DoCancel();
+
+private:
+ RTimer timer_;
+ CActiveSchedulerWait *asw_;
+};
+
+MyTask::MyTask(CActiveSchedulerWait *asw)
+: CActive(EPriorityNormal), asw_(asw)
+{
+}
+
+MyTask::~MyTask()
+{
+ timer_.Close();
+}
+
+void MyTask::ConstructL()
+{
+ timer_.CreateLocal();
+ CActiveScheduler::Add(this);
+}
+
+MyTask *MyTask::NewL(CActiveSchedulerWait *asw)
+{
+ MyTask *self = new (ELeave) MyTask(asw);
+ CleanupStack::PushL(self);
+
+ self->ConstructL();
+
+ CleanupStack::Pop(self);
+ return self;
+}
+
+void MyTask::Start()
+{
+ timer_.After(iStatus, 0);
+ SetActive();
+}
+
+void MyTask::RunL()
+{
+ int rc = app_main();
+ asw_->AsyncStop();
+}
+
+void MyTask::DoCancel()
+{
+
+}
+
+////////////////////////////////////////////////////////////////////////////
+
+LOCAL_C void DoStartL()
+{
+ CActiveScheduler *scheduler = new (ELeave) CActiveScheduler;
+ CleanupStack::PushL(scheduler);
+ CActiveScheduler::Install(scheduler);
+
+ CActiveSchedulerWait *asw = new CActiveSchedulerWait;
+ CleanupStack::PushL(asw);
+
+ MyTask *task = MyTask::NewL(asw);
+ task->Start();
+
+ asw->Start();
+
+ delete task;
+
+ CleanupStack::Pop(asw);
+ delete asw;
+
+ CActiveScheduler::Install(NULL);
+ CleanupStack::Pop(scheduler);
+ delete scheduler;
+}
+
+
+////////////////////////////////////////////////////////////////////////////
+
+// E32Main()
+GLDEF_C TInt E32Main()
+{
+ // Mark heap usage
+ __UHEAP_MARK;
+
+ // Create cleanup stack
+ CTrapCleanup* cleanup = CTrapCleanup::New();
+
+ // Create output console
+ TRAPD(createError, console = Console::NewL(_L("Console"), TSize(KConsFullScreen,KConsFullScreen)));
+ if (createError)
+ return createError;
+
+ TRAPD(startError, DoStartL());
+
+ console->Printf(_L("[press any key to close]\n"));
+ console->Getch();
+
+ delete console;
+ delete cleanup;
+
+ CloseSTDLIB();
+
+ // Mark end of heap usage, detect memory leaks
+ __UHEAP_MARKEND;
+ return KErrNone;
+}
+