Update android makefiles to support shared libs.

This commit is contained in:
bossiel 2010-05-18 00:26:37 +00:00
parent cf8a36f806
commit d8a71a55c8
45 changed files with 582 additions and 108 deletions

View File

@ -24,6 +24,7 @@ clean:
else ##### All other libraries (tiny*)
all:
(cd ../$(PROJECT) ; $(MAKE) -f droid-makefile all; $(MAKE) -f droid-makefile install; cp --force lib$(PROJECT).$(EXT) $(OUTPUT_DIR))
test:
(cd ../$(PROJECT)/test; $(MAKE) -f droid-makefile all; $(MAKE) -f droid-makefile install; cp --force test $(OUTPUT_DIR))
clean:

View File

@ -2,9 +2,9 @@
## Root configuration file shared by all android projects.
######
export ANDROID_NDK_ROOT=/cygdrive/c/android-ndk
export ANDROID_NDK_ROOT=/cygdrive/c/android-ndk-r3
export ANDROID_SDK_ROOT=/cygdrive/c/android-sdk
export ANDROID_PLATFORM=$(ANDROID_NDK_ROOT)/build/platforms/android-4
export ANDROID_PLATFORM=$(ANDROID_NDK_ROOT)/build/platforms/android-5
# Output directory
export OUTPUT_DIR=$(shell pwd)/output
@ -18,6 +18,7 @@ export LIB_DIR=/system/lib
export AR=arm-eabi-ar
export CC=arm-eabi-gcc
export CPP=arm-eabi-g++
export CFLAGS+=$(DEBUG_FLAGS) -I$(ANDROID_PLATFORM)/arch-arm/usr/include \
-march=armv5te \
-mtune=xscale \
@ -47,9 +48,8 @@ export LDFLAGS_COMMON+=-nostdlib -lc -L$(OUTPUT_DIR)
ifeq ($(BT), static)
export EXT=a
export LDFLAGS=
export LD_O=
export LINK_LIB=$(AR) crs
export CFLAGS+=-static
else
export EXT=so
@ -57,7 +57,4 @@ else
export LDFLAGS+=-Wl,--no-undefined
export LDFLAGS+=-Wl,--no-whole-archive
export LDFLAGS+=-Wl,-soname,lib$(PROJECT).$(EXT),-Bsymbolic,-shared,--whole-archive
export LD_O=-o
export LINK_LIB = $(CC)
endif

View File

@ -40,7 +40,7 @@ namespace test
success = stack.start();
/* Set Password */
stack.setPassword(PASSWORD);
//stack.setPassword(PASSWORD);
/* Send REGISTER */
regSession = new RegistrationSession(stack);
@ -48,10 +48,10 @@ namespace test
regSession.addCaps("+g.3gpp.smsip");
regSession.addCaps("language", "\"en,fr\"");
regSession.setExpires(35);
//regSession.Register();
regSession.Register();
/* Send SUBSCRIBE(reg) */
subSession = new SubscriptionSession(stack);
/*subSession = new SubscriptionSession(stack);
subSession.addHeader("Event", "reg");
subSession.addHeader("Accept", "application/reginfo+xml");
subSession.addHeader("Allow-Events", "refer, presence, presence.winfo, xcap-diff, conference");
@ -59,7 +59,7 @@ namespace test
//String s = "H\x00\x15eg\x09\x20mamadou";
//subSession.setPayload(s, (uint)s.Length);
subSession.Subscribe();
subSession.Subscribe();*/
Console.Read();

View File

@ -0,0 +1,23 @@
/* ----------------------------------------------------------------------------
* This file was automatically generated by SWIG (http://www.swig.org).
* Version 1.3.40
*
* Do not make changes to this file unless you know what you are doing--modify
* the SWIG interface file instead.
* ----------------------------------------------------------------------------- */
public enum tsip_subscribe_event_type_t {
tsip_i_subscribe,
tsip_ai_subscribe,
tsip_o_subscribe,
tsip_ao_subscribe,
tsip_i_unsubscribe,
tsip_ai_unsubscribe,
tsip_o_unsubscribe,
tsip_ao_unsubscribe,
tsip_i_notify,
tsip_ai_notify,
tsip_o_notify,
tsip_ao_notify
}

View File

@ -1,26 +0,0 @@
/* ----------------------------------------------------------------------------
* This file was automatically generated by SWIG (http://www.swig.org).
* Version 1.3.40
*
* Do not make changes to this file unless you know what you are doing--modify
* the SWIG interface file instead.
* ----------------------------------------------------------------------------- */
package org.doubango.tinyWRAP;
public class SWIGTYPE_p_tsip_subscribe_event_type_t {
private long swigCPtr;
protected SWIGTYPE_p_tsip_subscribe_event_type_t(long cPtr, boolean futureUse) {
swigCPtr = cPtr;
}
protected SWIGTYPE_p_tsip_subscribe_event_type_t() {
swigCPtr = 0;
}
protected static long getCPtr(SWIGTYPE_p_tsip_subscribe_event_type_t obj) {
return (obj == null) ? 0 : obj.swigCPtr;
}
}

View File

@ -1,7 +1,7 @@
APP := lib$(PROJECT).so
APP := lib$(PROJECT).$(EXT)
CFLAGS := $(CFLAGS) -fno-rtti -fno-exceptions -I../_common -I../. -I../../tinySAK/src -I../../tinyNET/src -I../../tinyHTTP/include -I../../tinySIP/include
LDFLAGS := $(LDFLAGS) -Wl,-soname,lib$(PROJECT).so,-Bsymbolic,-shared,--whole-archive -lstdc++ -ltinySAK -ltinyNET -ltinySIP
LDFLAGS := $(LDFLAGS) -lstdc++ -ltinySAK -ltinyHTTP -ltinyIPSec -ltinyNET -ltinySIP
@ -19,8 +19,13 @@ OBJS = tinyWRAP_wrap.o\
../_common/SubscriptionEvent.o \
../_common/SubscriptionSession.o
$(APP): $(OBJS)
$(CPP) $(LDFLAGS) -o $@ $^
ifeq ($(EXT), a)
$(AR) rcs $@ $^
else
$(CC) $(LDFLAGS) -o $@ $^
endif
%.o: %.cxx
$(CPP) -c $(INCLUDE) $(CFLAGS) $< -o $@

View File

@ -69,7 +69,7 @@
<link>
<name>libs/armeabi/libtinyWRAP.so</name>
<type>1</type>
<location>C:/doubango/android-projects/output/libtinyWRAP.so</location>
<location>C:/Projects/Doubango/android-projects/output/libtinyWRAP.so</location>
</link>
</linkedResources>
</projectDescription>

View File

@ -1,9 +1,9 @@
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="org.doubango.tinyWRAP"
package="org.doubango.test"
android:versionCode="1"
android:versionName="1.0">
<application android:icon="@drawable/icon" android:label="@string/app_name">
<application android:icon="@drawable/icon" android:label="@string/app_name" android:debuggable="true">
<activity android:name=".Main"
android:label="@string/app_name">
<intent-filter>
@ -16,5 +16,9 @@
<uses-sdk android:minSdkVersion="3" />
<uses-permission android:name="android.permission.INTERNET"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_WIFI_STATE"></uses-permission>
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"></uses-permission>
</manifest>

View File

@ -0,0 +1,23 @@
/* AUTO-GENERATED FILE. DO NOT MODIFY.
*
* This class was automatically generated by the
* aapt tool from the resource data it found. It
* should not be modified by hand.
*/
package org.doubango.test;
public final class R {
public static final class attr {
}
public static final class drawable {
public static final int icon=0x7f020000;
}
public static final class layout {
public static final int main=0x7f030000;
}
public static final class string {
public static final int app_name=0x7f040001;
public static final int hello=0x7f040000;
}
}

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

@ -0,0 +1,12 @@
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<TextView
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="@string/hello"
/>
</LinearLayout>

View File

@ -0,0 +1,5 @@
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string name="hello">Hello World, Main!</string>
<string name="app_name">doubango</string>
</resources>

View File

@ -0,0 +1,139 @@
package org.doubango.test;
import org.doubango.tinyWRAP.RegistrationEvent;
import org.doubango.tinyWRAP.RegistrationSession;
import org.doubango.tinyWRAP.SipCallback;
import org.doubango.tinyWRAP.SipStack;
import android.app.Activity;
import android.net.DhcpInfo;
import android.net.wifi.WifiInfo;
import android.net.wifi.WifiManager;
import android.os.Bundle;
public class Main extends Activity {
final String REALM = "ericsson.com";
final String USER = "mamadou";
final String PROXY_CSCF_IP = "192.168.0.13";
//final String PASSWORD = null;
final int PROXY_CSCF_PORT = 5081;
private String getDns1()
{
WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
String[] dhcpInfos = wifiManager.getDhcpInfo().toString().split(" ");
int i = 0;
while (i++ < dhcpInfos.length) {
if (dhcpInfos[i-1].equals("dns1")) {
return dhcpInfos[i];
}
}
return null;
}
private String getLocalIP(){
WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
WifiInfo wifiInfo = wifiManager.getConnectionInfo();
int ipAddress = wifiInfo.getIpAddress(); /*what about IPv6?*/
if(ipAddress != 0){
return String.format("%d.%d.%d.%d",
(ipAddress>>0)&0xFF,
(ipAddress>>8)&0xFF,
(ipAddress>>16)&0xFF,
(ipAddress>>24)&0xFF
);
}
else{
return null;
}
}
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
@SuppressWarnings("unused")
boolean success;
/* Create call back */
callback = new MyCallback();
/* Create and configure the IMS/LTE stack */
stack = new SipStack(callback, String.format("sip:%s", REALM), String.format("%s@%s", USER, REALM), String.format("sip:%s@%s", USER, REALM));
stack.addHeader("Privacy", "INVITE, ACK, CANCEL, BYE, MESSAGE, OPTIONS, NOTIFY, PRACK, UPDATE, REFER");
stack.addHeader("P-Access-Network-Info", "ADSL;utran-cell-id-3gpp=00000000");
stack.addHeader("User-Agent", "IM-client/OMA1.0 doubango/v1.0.0");
/* Sets Proxy-CSCF */
success = stack.setProxyCSCF(PROXY_CSCF_IP, PROXY_CSCF_PORT, "tcp", "ipv4");
/* Sets Local IP if we are on the emulator */
/*if(android.provider.Settings.Secure.ANDROID_ID == null)*/{
String localIP, dns1;
if((localIP = this.getLocalIP()) == null){
localIP = "10.0.2.15";
}
dns1 = this.getDns1();
success = stack.setLocalIP(localIP);
}
/* Set Password */
//success = stack.setPassword(PASSWORD);
/* Starts the stack */
success = stack.start();
/* Send REGISTER */
regSession = new RegistrationSession(stack);
regSession.addCaps("+g.oma.sip-im");
regSession.addCaps("+g.3gpp.smsip");
regSession.addCaps("language", "\"en,fr\"");
regSession.setExpires(30);
if((success = regSession.Register())){
}
}
static RegistrationSession regSession;
static MyCallback callback;
static SipStack stack;
static {
try {
System.loadLibrary("tinyWRAP");
} catch (UnsatisfiedLinkError e) {
System.err.println("Native code library failed to load.\n" + e);
System.exit(1);
}
catch(Exception e){
e.printStackTrace();
}
}
}
class MyCallback extends SipCallback
{
public MyCallback()
{
super();
}
public int OnRegistrationChanged(RegistrationEvent e)
{
short code = e.getCode();
//tsip_event_type_t type = e.getType();
//RegistrationSession session = (RegistrationSession) e.getSession();
System.out.println("Code=" + code);
System.out.println("Phrase=" + e.getPhrase());
return 0;
}
}

View File

@ -39,8 +39,12 @@ public class RegistrationEvent extends SipEvent {
this(tinyWRAPJNI.new_RegistrationEvent(), true);
}
public RegistrationSession getSession2() {
long cPtr = tinyWRAPJNI.RegistrationEvent_getSession2(swigCPtr, this);
public tsip_register_event_type_t getType() {
return tsip_register_event_type_t.swigToEnum(tinyWRAPJNI.RegistrationEvent_getType(swigCPtr, this));
}
public RegistrationSession getSession() {
long cPtr = tinyWRAPJNI.RegistrationEvent_getSession(swigCPtr, this);
return (cPtr == 0) ? null : new RegistrationSession(cPtr, false);
}

View File

@ -39,8 +39,8 @@ public class RegistrationSession extends SipSession {
this(tinyWRAPJNI.new_RegistrationSession(SipStack.getCPtr(Stack), Stack), true);
}
public boolean Register(long expires) {
return tinyWRAPJNI.RegistrationSession_Register(swigCPtr, this, expires);
public boolean Register() {
return tinyWRAPJNI.RegistrationSession_Register(swigCPtr, this);
}
public boolean UnRegister() {

View File

@ -59,4 +59,8 @@ public class SipCallback {
return (getClass() == SipCallback.class) ? tinyWRAPJNI.SipCallback_OnRegistrationChanged(swigCPtr, this, RegistrationEvent.getCPtr(e), e) : tinyWRAPJNI.SipCallback_OnRegistrationChangedSwigExplicitSipCallback(swigCPtr, this, RegistrationEvent.getCPtr(e), e);
}
public int OnSubscriptionChanged(SubscriptionEvent e) {
return (getClass() == SipCallback.class) ? tinyWRAPJNI.SipCallback_OnSubscriptionChanged(swigCPtr, this, SubscriptionEvent.getCPtr(e), e) : tinyWRAPJNI.SipCallback_OnSubscriptionChangedSwigExplicitSipCallback(swigCPtr, this, SubscriptionEvent.getCPtr(e), e);
}
}

View File

@ -36,11 +36,7 @@ public class SipEvent {
}
public SipEvent() {
this(tinyWRAPJNI.new_SipEvent__SWIG_0(), true);
}
public SipEvent(short code, String phrase) {
this(tinyWRAPJNI.new_SipEvent__SWIG_1(code, phrase), true);
this(tinyWRAPJNI.new_SipEvent(), true);
}
public short getCode() {
@ -51,12 +47,8 @@ public class SipEvent {
return tinyWRAPJNI.SipEvent_getPhrase(swigCPtr, this);
}
public tsip_event_type_t getType() {
return tsip_event_type_t.swigToEnum(tinyWRAPJNI.SipEvent_getType(swigCPtr, this));
}
public SipSession getSession() {
long cPtr = tinyWRAPJNI.SipEvent_getSession(swigCPtr, this);
public SipSession getBaseSession() {
long cPtr = tinyWRAPJNI.SipEvent_getBaseSession(swigCPtr, this);
return (cPtr == 0) ? null : new SipSession(cPtr, false);
}

View File

@ -71,4 +71,8 @@ public class SipSession {
return tinyWRAPJNI.SipSession_setToUri(swigCPtr, this, toUri);
}
public boolean setPayload(String str, long len) {
return tinyWRAPJNI.SipSession_setPayload(swigCPtr, this, str, len);
}
}

View File

@ -39,8 +39,12 @@ public class SipStack extends SafeObject {
this(tinyWRAPJNI.new_SipStack(SipCallback.getCPtr(callback), callback, realm_uri, impi_uri, impu_uri), true);
}
public boolean Start() {
return tinyWRAPJNI.SipStack_Start(swigCPtr, this);
public boolean start() {
return tinyWRAPJNI.SipStack_start(swigCPtr, this);
}
public boolean setPassword(String password) {
return tinyWRAPJNI.SipStack_setPassword(swigCPtr, this, password);
}
public boolean setProxyCSCF(String fqdn, long port, String transport, String ipversion) {
@ -63,8 +67,8 @@ public class SipStack extends SafeObject {
return tinyWRAPJNI.SipStack_removeHeader(swigCPtr, this, name);
}
public boolean Stop() {
return tinyWRAPJNI.SipStack_Stop(swigCPtr, this);
public boolean stop() {
return tinyWRAPJNI.SipStack_stop(swigCPtr, this);
}
}

View File

@ -0,0 +1,51 @@
/* ----------------------------------------------------------------------------
* This file was automatically generated by SWIG (http://www.swig.org).
* Version 1.3.40
*
* Do not make changes to this file unless you know what you are doing--modify
* the SWIG interface file instead.
* ----------------------------------------------------------------------------- */
package org.doubango.tinyWRAP;
public class SubscriptionEvent extends SipEvent {
private long swigCPtr;
protected SubscriptionEvent(long cPtr, boolean cMemoryOwn) {
super(tinyWRAPJNI.SWIGSubscriptionEventUpcast(cPtr), cMemoryOwn);
swigCPtr = cPtr;
}
protected static long getCPtr(SubscriptionEvent obj) {
return (obj == null) ? 0 : obj.swigCPtr;
}
protected void finalize() {
delete();
}
public synchronized void delete() {
if (swigCPtr != 0) {
if (swigCMemOwn) {
swigCMemOwn = false;
tinyWRAPJNI.delete_SubscriptionEvent(swigCPtr);
}
swigCPtr = 0;
}
super.delete();
}
public SubscriptionEvent() {
this(tinyWRAPJNI.new_SubscriptionEvent(), true);
}
public tsip_subscribe_event_type_t getType() {
return tsip_subscribe_event_type_t.swigToEnum(tinyWRAPJNI.SubscriptionEvent_getType(swigCPtr, this));
}
public SubscriptionSession getSession() {
long cPtr = tinyWRAPJNI.SubscriptionEvent_getSession(swigCPtr, this);
return (cPtr == 0) ? null : new SubscriptionSession(cPtr, false);
}
}

View File

@ -0,0 +1,50 @@
/* ----------------------------------------------------------------------------
* This file was automatically generated by SWIG (http://www.swig.org).
* Version 1.3.40
*
* Do not make changes to this file unless you know what you are doing--modify
* the SWIG interface file instead.
* ----------------------------------------------------------------------------- */
package org.doubango.tinyWRAP;
public class SubscriptionSession extends SipSession {
private long swigCPtr;
protected SubscriptionSession(long cPtr, boolean cMemoryOwn) {
super(tinyWRAPJNI.SWIGSubscriptionSessionUpcast(cPtr), cMemoryOwn);
swigCPtr = cPtr;
}
protected static long getCPtr(SubscriptionSession obj) {
return (obj == null) ? 0 : obj.swigCPtr;
}
protected void finalize() {
delete();
}
public synchronized void delete() {
if (swigCPtr != 0) {
if (swigCMemOwn) {
swigCMemOwn = false;
tinyWRAPJNI.delete_SubscriptionSession(swigCPtr);
}
swigCPtr = 0;
}
super.delete();
}
public SubscriptionSession(SipStack Stack) {
this(tinyWRAPJNI.new_SubscriptionSession(SipStack.getCPtr(Stack), Stack), true);
}
public boolean Subscribe() {
return tinyWRAPJNI.SubscriptionSession_Subscribe(swigCPtr, this);
}
public boolean UnSubscribe() {
return tinyWRAPJNI.SubscriptionSession_UnSubscribe(swigCPtr, this);
}
}

View File

@ -9,13 +9,11 @@
package org.doubango.tinyWRAP;
class tinyWRAPJNI {
public final static native long new_SipEvent__SWIG_0();
public final static native long new_SipEvent__SWIG_1(short jarg1, String jarg2);
public final static native long new_SipEvent();
public final static native void delete_SipEvent(long jarg1);
public final static native short SipEvent_getCode(long jarg1, SipEvent jarg1_);
public final static native String SipEvent_getPhrase(long jarg1, SipEvent jarg1_);
public final static native int SipEvent_getType(long jarg1, SipEvent jarg1_);
public final static native long SipEvent_getSession(long jarg1, SipEvent jarg1_);
public final static native long SipEvent_getBaseSession(long jarg1, SipEvent jarg1_);
public final static native long new_SipSession(long jarg1, SipStack jarg1_);
public final static native void delete_SipSession(long jarg1);
public final static native boolean SipSession_addHeader(long jarg1, SipSession jarg1_, String jarg2, String jarg3);
@ -26,17 +24,29 @@ class tinyWRAPJNI {
public final static native boolean SipSession_setExpires(long jarg1, SipSession jarg1_, long jarg2);
public final static native boolean SipSession_setFromUri(long jarg1, SipSession jarg1_, String jarg2);
public final static native boolean SipSession_setToUri(long jarg1, SipSession jarg1_, String jarg2);
public final static native boolean SipSession_setPayload(long jarg1, SipSession jarg1_, String jarg2, long jarg3);
public final static native long new_RegistrationEvent();
public final static native void delete_RegistrationEvent(long jarg1);
public final static native long RegistrationEvent_getSession2(long jarg1, RegistrationEvent jarg1_);
public final static native int RegistrationEvent_getType(long jarg1, RegistrationEvent jarg1_);
public final static native long RegistrationEvent_getSession(long jarg1, RegistrationEvent jarg1_);
public final static native long new_RegistrationSession(long jarg1, SipStack jarg1_);
public final static native void delete_RegistrationSession(long jarg1);
public final static native boolean RegistrationSession_Register(long jarg1, RegistrationSession jarg1_, long jarg2);
public final static native boolean RegistrationSession_Register(long jarg1, RegistrationSession jarg1_);
public final static native boolean RegistrationSession_UnRegister(long jarg1, RegistrationSession jarg1_);
public final static native long new_SubscriptionEvent();
public final static native void delete_SubscriptionEvent(long jarg1);
public final static native int SubscriptionEvent_getType(long jarg1, SubscriptionEvent jarg1_);
public final static native long SubscriptionEvent_getSession(long jarg1, SubscriptionEvent jarg1_);
public final static native long new_SubscriptionSession(long jarg1, SipStack jarg1_);
public final static native void delete_SubscriptionSession(long jarg1);
public final static native boolean SubscriptionSession_Subscribe(long jarg1, SubscriptionSession jarg1_);
public final static native boolean SubscriptionSession_UnSubscribe(long jarg1, SubscriptionSession jarg1_);
public final static native long new_SipCallback();
public final static native void delete_SipCallback(long jarg1);
public final static native int SipCallback_OnRegistrationChanged(long jarg1, SipCallback jarg1_, long jarg2, RegistrationEvent jarg2_);
public final static native int SipCallback_OnRegistrationChangedSwigExplicitSipCallback(long jarg1, SipCallback jarg1_, long jarg2, RegistrationEvent jarg2_);
public final static native int SipCallback_OnSubscriptionChanged(long jarg1, SipCallback jarg1_, long jarg2, SubscriptionEvent jarg2_);
public final static native int SipCallback_OnSubscriptionChangedSwigExplicitSipCallback(long jarg1, SipCallback jarg1_, long jarg2, SubscriptionEvent jarg2_);
public final static native void SipCallback_director_connect(SipCallback obj, long cptr, boolean mem_own, boolean weak_global);
public final static native void SipCallback_change_ownership(SipCallback obj, long cptr, boolean take_or_release);
public final static native long new_SafeObject();
@ -45,20 +55,26 @@ class tinyWRAPJNI {
public final static native int SafeObject_UnLock(long jarg1, SafeObject jarg1_);
public final static native long new_SipStack(long jarg1, SipCallback jarg1_, String jarg2, String jarg3, String jarg4);
public final static native void delete_SipStack(long jarg1);
public final static native boolean SipStack_Start(long jarg1, SipStack jarg1_);
public final static native boolean SipStack_start(long jarg1, SipStack jarg1_);
public final static native boolean SipStack_setPassword(long jarg1, SipStack jarg1_, String jarg2);
public final static native boolean SipStack_setProxyCSCF(long jarg1, SipStack jarg1_, String jarg2, long jarg3, String jarg4, String jarg5);
public final static native boolean SipStack_setLocalIP(long jarg1, SipStack jarg1_, String jarg2);
public final static native boolean SipStack_setLocalPort(long jarg1, SipStack jarg1_, long jarg2);
public final static native boolean SipStack_addHeader(long jarg1, SipStack jarg1_, String jarg2, String jarg3);
public final static native boolean SipStack_removeHeader(long jarg1, SipStack jarg1_, String jarg2);
public final static native boolean SipStack_Stop(long jarg1, SipStack jarg1_);
public final static native boolean SipStack_stop(long jarg1, SipStack jarg1_);
public final static native long SWIGRegistrationEventUpcast(long jarg1);
public final static native long SWIGRegistrationSessionUpcast(long jarg1);
public final static native long SWIGSubscriptionEventUpcast(long jarg1);
public final static native long SWIGSubscriptionSessionUpcast(long jarg1);
public final static native long SWIGSipStackUpcast(long jarg1);
public static int SwigDirector_SipCallback_OnRegistrationChanged(SipCallback self, long e) {
return self.OnRegistrationChanged((e == 0) ? null : new RegistrationEvent(e, false));
}
public static int SwigDirector_SipCallback_OnSubscriptionChanged(SipCallback self, long e) {
return self.OnSubscriptionChanged((e == 0) ? null : new SubscriptionEvent(e, false));
}
private final static native void swig_module_init();
static {

View File

@ -0,0 +1,60 @@
/* ----------------------------------------------------------------------------
* This file was automatically generated by SWIG (http://www.swig.org).
* Version 1.3.40
*
* Do not make changes to this file unless you know what you are doing--modify
* the SWIG interface file instead.
* ----------------------------------------------------------------------------- */
package org.doubango.tinyWRAP;
public final class tsip_register_event_type_t {
public final static tsip_register_event_type_t tsip_i_register = new tsip_register_event_type_t("tsip_i_register");
public final static tsip_register_event_type_t tsip_ai_register = new tsip_register_event_type_t("tsip_ai_register");
public final static tsip_register_event_type_t tsip_o_register = new tsip_register_event_type_t("tsip_o_register");
public final static tsip_register_event_type_t tsip_ao_register = new tsip_register_event_type_t("tsip_ao_register");
public final static tsip_register_event_type_t tsip_i_unregister = new tsip_register_event_type_t("tsip_i_unregister");
public final static tsip_register_event_type_t tsip_ai_unregister = new tsip_register_event_type_t("tsip_ai_unregister");
public final static tsip_register_event_type_t tsip_o_unregister = new tsip_register_event_type_t("tsip_o_unregister");
public final static tsip_register_event_type_t tsip_ao_unregister = new tsip_register_event_type_t("tsip_ao_unregister");
public final int swigValue() {
return swigValue;
}
public String toString() {
return swigName;
}
public static tsip_register_event_type_t swigToEnum(int swigValue) {
if (swigValue < swigValues.length && swigValue >= 0 && swigValues[swigValue].swigValue == swigValue)
return swigValues[swigValue];
for (int i = 0; i < swigValues.length; i++)
if (swigValues[i].swigValue == swigValue)
return swigValues[i];
throw new IllegalArgumentException("No enum " + tsip_register_event_type_t.class + " with value " + swigValue);
}
private tsip_register_event_type_t(String swigName) {
this.swigName = swigName;
this.swigValue = swigNext++;
}
private tsip_register_event_type_t(String swigName, int swigValue) {
this.swigName = swigName;
this.swigValue = swigValue;
swigNext = swigValue+1;
}
private tsip_register_event_type_t(String swigName, tsip_register_event_type_t swigEnum) {
this.swigName = swigName;
this.swigValue = swigEnum.swigValue;
swigNext = this.swigValue+1;
}
private static tsip_register_event_type_t[] swigValues = { tsip_i_register, tsip_ai_register, tsip_o_register, tsip_ao_register, tsip_i_unregister, tsip_ai_unregister, tsip_o_unregister, tsip_ao_unregister };
private static int swigNext = 0;
private final int swigValue;
private final String swigName;
}

View File

@ -0,0 +1,64 @@
/* ----------------------------------------------------------------------------
* This file was automatically generated by SWIG (http://www.swig.org).
* Version 1.3.40
*
* Do not make changes to this file unless you know what you are doing--modify
* the SWIG interface file instead.
* ----------------------------------------------------------------------------- */
package org.doubango.tinyWRAP;
public final class tsip_subscribe_event_type_t {
public final static tsip_subscribe_event_type_t tsip_i_subscribe = new tsip_subscribe_event_type_t("tsip_i_subscribe");
public final static tsip_subscribe_event_type_t tsip_ai_subscribe = new tsip_subscribe_event_type_t("tsip_ai_subscribe");
public final static tsip_subscribe_event_type_t tsip_o_subscribe = new tsip_subscribe_event_type_t("tsip_o_subscribe");
public final static tsip_subscribe_event_type_t tsip_ao_subscribe = new tsip_subscribe_event_type_t("tsip_ao_subscribe");
public final static tsip_subscribe_event_type_t tsip_i_unsubscribe = new tsip_subscribe_event_type_t("tsip_i_unsubscribe");
public final static tsip_subscribe_event_type_t tsip_ai_unsubscribe = new tsip_subscribe_event_type_t("tsip_ai_unsubscribe");
public final static tsip_subscribe_event_type_t tsip_o_unsubscribe = new tsip_subscribe_event_type_t("tsip_o_unsubscribe");
public final static tsip_subscribe_event_type_t tsip_ao_unsubscribe = new tsip_subscribe_event_type_t("tsip_ao_unsubscribe");
public final static tsip_subscribe_event_type_t tsip_i_notify = new tsip_subscribe_event_type_t("tsip_i_notify");
public final static tsip_subscribe_event_type_t tsip_ai_notify = new tsip_subscribe_event_type_t("tsip_ai_notify");
public final static tsip_subscribe_event_type_t tsip_o_notify = new tsip_subscribe_event_type_t("tsip_o_notify");
public final static tsip_subscribe_event_type_t tsip_ao_notify = new tsip_subscribe_event_type_t("tsip_ao_notify");
public final int swigValue() {
return swigValue;
}
public String toString() {
return swigName;
}
public static tsip_subscribe_event_type_t swigToEnum(int swigValue) {
if (swigValue < swigValues.length && swigValue >= 0 && swigValues[swigValue].swigValue == swigValue)
return swigValues[swigValue];
for (int i = 0; i < swigValues.length; i++)
if (swigValues[i].swigValue == swigValue)
return swigValues[i];
throw new IllegalArgumentException("No enum " + tsip_subscribe_event_type_t.class + " with value " + swigValue);
}
private tsip_subscribe_event_type_t(String swigName) {
this.swigName = swigName;
this.swigValue = swigNext++;
}
private tsip_subscribe_event_type_t(String swigName, int swigValue) {
this.swigName = swigName;
this.swigValue = swigValue;
swigNext = swigValue+1;
}
private tsip_subscribe_event_type_t(String swigName, tsip_subscribe_event_type_t swigEnum) {
this.swigName = swigName;
this.swigValue = swigEnum.swigValue;
swigNext = this.swigValue+1;
}
private static tsip_subscribe_event_type_t[] swigValues = { tsip_i_subscribe, tsip_ai_subscribe, tsip_o_subscribe, tsip_ao_subscribe, tsip_i_unsubscribe, tsip_ai_unsubscribe, tsip_o_unsubscribe, tsip_ao_unsubscribe, tsip_i_notify, tsip_ai_notify, tsip_o_notify, tsip_ao_notify };
private static int swigNext = 0;
private final int swigValue;
private final String swigName;
}

View File

@ -1,7 +1,7 @@
APP := demo
CFLAGS := $(CFLAGS) -I../tinySAK/src -I../tinyNET/src -I../tinySMS/include -I../tinyHTTP/include -I../tinySIP/include
LDFLAGS := $(LDFLAGS) -Bsymbolic -lm -ltinySAK -ltinySMS -ltinySIP
LDFLAGS := $(LDFLAGS_COMMON) -Wl,-Bsymbolic,--whole-archive -Wl,--entry=main -lm -ltinySAK -ltinyNET -ltinyHTTP -ltinyIPSec -ltinySMS -ltinySIP
all: $(APP)

View File

@ -1,7 +1,7 @@
APP := lib$(PROJECT).so
APP := lib$(PROJECT).$(EXT)
CFLAGS := $(CFLAGS) -I../tinySAK/src -I../tinyNET/src -I./include
LDFLAGS := $(LDFLAGS) -Wl,-soname,lib$(PROJECT).so,-Bsymbolic,-shared,--whole-archive -ltinySAK -ltinyNET
LDFLAGS := $(LDFLAGS) -ltinySAK -ltinyNET
all: $(APP)
@ -37,7 +37,11 @@ OBJS += src/parsers/thttp_parser_header.o\
src/parsers/thttp_parser_url.o
$(APP): $(OBJS)
$(CC) $(LDFLAGS) -o $@ $^
ifeq ($(EXT), a)
$(AR) rcs $@ $^
else
$(CC) $(LDFLAGS) -o $@ $^
endif
%.o: %.c
$(CC) -c $(INCLUDE) $(CFLAGS) $< -o $@

View File

@ -486,4 +486,4 @@ int thttp_header_parse(tsk_ragel_state_t *state, thttp_message_t *message)
%%write exec;
return ( cs >= %%{ write first_final; }%% ) ? 0 : -1;
}
}

View File

@ -1,7 +1,7 @@
APP := test
CFLAGS := $(CFLAGS) -I../include -I../../tinySAK/src -I../../tinyNET/src
LDFLAGS := $(LDFLAGS) -Bsymbolic -ltinySAK -ltinyNET -l$(PROJECT)
LDFLAGS := $(LDFLAGS_COMMON) -Wl,-Bsymbolic,--whole-archive -l$(PROJECT) -ltinySAK -ltinyNET -Wl,--entry=main
all: $(APP)

View File

@ -1,7 +1,7 @@
APP := lib$(PROJECT).so
APP := lib$(PROJECT).$(EXT)
CFLAGS := $(CFLAGS) -I../tinySAK/src -I./src
LDFLAGS := $(LDFLAGS) -Wl,-soname,lib$(PROJECT).so,-Bsymbolic,-shared,--whole-archive -ltinySAK
LDFLAGS := -ltinySAK $(LDFLAGS)
all: $(APP)
@ -14,7 +14,11 @@ OBJS = \
$(APP): $(OBJS)
$(CC) $(LDFLAGS) -o $@ $^
ifeq ($(EXT), a)
$(AR) rcs $@ $^
else
$(CC) $(LDFLAGS) -o $@ $^
endif
%.o: %.c
$(CC) -c $(INCLUDE) $(CFLAGS) $< -o $@

View File

@ -1,7 +1,7 @@
APP := test
CFLAGS := $(CFLAGS) -I../src -I../../tinySAK/src
LDFLAGS := $(LDFLAGS) -Bsymbolic -ltinySAK -l$(PROJECT)
LDFLAGS := $(LDFLAGS_COMMON) -Wl,-Bsymbolic,--whole-archive -l$(PROJECT) -ltinySAK -Wl,--entry=main
all: $(APP)

View File

@ -1,7 +1,7 @@
APP := lib$(PROJECT).so
APP := lib$(PROJECT).$(EXT)
CFLAGS := $(CFLAGS) -I../tinySAK/src -I../tinyNET/src -I../tinySDP/include -I./include
LDFLAGS := $(LDFLAGS) -Wl,-soname,lib$(PROJECT).so,-Bsymbolic,-shared,--whole-archive -ltinySAK -ltinyNET -ltinySDP
LDFLAGS := $(LDFLAGS) -ltinySAK -ltinyNET -ltinySDP
all: $(APP)
@ -16,7 +16,11 @@ OBJS = \
$(APP): $(OBJS)
$(CC) $(LDFLAGS) -o $@ $^
ifeq ($(EXT), a)
$(AR) rcs $@ $^
else
$(CC) $(LDFLAGS) -o $@ $^
endif
%.o: %.c
$(CC) -c $(INCLUDE) $(CFLAGS) $< -o $@

View File

@ -1,7 +1,7 @@
APP := test
CFLAGS := $(CFLAGS) -I../include -I../../tinySAK/src -I../../tinyNET/src -I../../tinySDP/include
LDFLAGS := $(LDFLAGS) -Bsymbolic -ltinySAK -ltinyNET -ltinySDP -l$(PROJECT)
LDFLAGS := $(LDFLAGS_COMMON) -Wl,-Bsymbolic,--whole-archive -l$(PROJECT) -ltinySAK -ltinyNET -ltinySDP -Wl,--entry=main
all: $(APP)

View File

@ -1,7 +1,7 @@
APP := lib$(PROJECT).so
APP := lib$(PROJECT).$(EXT)
CFLAGS := $(CFLAGS) -I../tinySAK/src -I./src
LDFLAGS := $(LDFLAGS) -Wl,-soname,lib$(PROJECT).so,-Bsymbolic,-shared,--whole-archive -ltinySAK
LDFLAGS := $(LDFLAGS) -ltinySAK
all: $(APP)
@ -71,7 +71,11 @@ OBJS += src/turn/tnet_turn.o\
src/turn/tnet_turn_message.o
$(APP): $(OBJS)
$(CC) $(LDFLAGS) -o $@ $^
ifeq ($(EXT), a)
$(AR) rcs $@ $^
else
$(CC) $(LDFLAGS) -o $@ $^
endif
%.o: %.c
$(CC) -c $(INCLUDE) $(CFLAGS) $< -o $@

View File

@ -1,7 +1,7 @@
APP := test
CFLAGS := $(CFLAGS) -I../src -I../../tinySAK/src
LDFLAGS := $(LDFLAGS) -Bsymbolic -ltinySAK -l$(PROJECT)
LDFLAGS := $(LDFLAGS_COMMON) -Wl,-Bsymbolic,--whole-archive -l$(PROJECT) -ltinySAK -Wl,--entry=main
all: $(APP)

View File

@ -36,7 +36,11 @@ OBJS = src/tsk.o\
src/tsk_xml.o
$(APP): $(OBJS)
$(LINK_LIB) $(LDFLAGS) $(LD_O) $@ $^
ifeq ($(EXT), a)
$(AR) rcs $@ $^
else
$(CC) $(LDFLAGS) -o $@ $^
endif
%.o: %.c
$(CC) -c $(INCLUDE) $(CFLAGS) $< -o $@

View File

@ -1,7 +1,7 @@
APP := test
CFLAGS := $(CFLAGS) -I../src
LDFLAGS := $(LDFLAGS_COMMON) -l$(PROJECT) -Wl,--entry=main
LDFLAGS := $(LDFLAGS_COMMON) -Wl,-Bsymbolic,--whole-archive -l$(PROJECT) -Wl,--entry=main
all: $(APP)

View File

@ -1,7 +1,7 @@
APP := lib$(PROJECT).so
APP := lib$(PROJECT).$(EXT)
CFLAGS := $(CFLAGS) -I../tinySAK/src -I./include
LDFLAGS := $(LDFLAGS) -Wl,-soname,lib$(PROJECT).so,-Bsymbolic,-shared,--whole-archive -ltinySAK
LDFLAGS := $(LDFLAGS) -ltinySAK
all: $(APP)
@ -31,7 +31,11 @@ OBJS += src/parsers/tsdp_parser_message.o
$(APP): $(OBJS)
$(CC) $(LDFLAGS) -o $@ $^
ifeq ($(EXT), a)
$(AR) rcs $@ $^
else
$(CC) $(LDFLAGS) -o $@ $^
endif
%.o: %.c
$(CC) -c $(INCLUDE) $(CFLAGS) $< -o $@

View File

@ -1,7 +1,7 @@
APP := test
CFLAGS := $(CFLAGS) -I../include -I../../tinySAK/src
LDFLAGS := $(LDFLAGS) -Bsymbolic -ltinySAK -l$(PROJECT)
LDFLAGS := $(LDFLAGS_COMMON) -Wl,-Bsymbolic,--whole-archive -l$(PROJECT) -ltinySAK -Wl,--entry=main
all: $(APP)

View File

@ -1,7 +1,7 @@
APP := lib$(PROJECT).so
APP := lib$(PROJECT).$(EXT)
CFLAGS := $(CFLAGS) -I../tinySAK/src -I../tinyNET/src -I../tinyHTTP/include -I../tinyIPSec/src -I../tinySDP/include -I../tinyMEDIA/include -I./include
LDFLAGS := $(LDFLAGS) -Wl,-soname,lib$(PROJECT).so,-Bsymbolic,-shared,--whole-archive -ltinySAK -ltinyNET -ltinyHTTP -ltinyIPSec -ltinySDP -ltinyMEDIA
LDFLAGS := $(LDFLAGS) -ltinySAK -ltinyNET -ltinyHTTP -ltinyIPSec -ltinySDP -ltinyMEDIA
all: $(APP)
@ -162,7 +162,11 @@ OBJS += src/transports/tsip_transport.o\
$(APP): $(OBJS)
$(CC) $(LDFLAGS) -o $@ $^
ifeq ($(EXT), a)
$(AR) rcs $@ $^
else
$(CC) $(LDFLAGS) -o $@ $^
endif
%.o: %.c
$(CC) -c $(INCLUDE) $(CFLAGS) $< -o $@

View File

@ -1,7 +1,7 @@
APP := test
CFLAGS := $(CFLAGS) -I../include -I../../tinySAK/src -I../../tinyNET/src -I../../tinyHTTP/include
LDFLAGS := $(LDFLAGS) -Bsymbolic -ltinySAK -ltinyNET -l$(PROJECT)
LDFLAGS := $(LDFLAGS_COMMON) -Wl,-Bsymbolic,--whole-archive -l$(PROJECT) -ltinySAK -ltinyNET -Wl,--entry=main
all: $(APP)

View File

@ -1,7 +1,7 @@
APP := lib$(PROJECT).so
APP := lib$(PROJECT).$(EXT)
CFLAGS := $(CFLAGS) -I../tinySAK/src -I./include
LDFLAGS := $(LDFLAGS) -Wl,-soname,lib$(PROJECT).so,-Bsymbolic,-shared,--whole-archive -ltinySAK
LDFLAGS := $(LDFLAGS) -ltinySAK
all: $(APP)
@ -23,7 +23,11 @@ OBJS += src/tpdu/tsms_tpdu_command.o\
$(APP): $(OBJS)
$(CC) $(LDFLAGS) -o $@ $^
ifeq ($(EXT), a)
$(AR) rcs $@ $^
else
$(CC) $(LDFLAGS) -o $@ $^
endif
%.o: %.c
$(CC) -c $(INCLUDE) $(CFLAGS) $< -o $@

View File

@ -1,7 +1,7 @@
APP := test
CFLAGS := $(CFLAGS) -I../include -I../../tinySAK/src
LDFLAGS := $(LDFLAGS) -Bsymbolic -ltinySAK -l$(PROJECT)
LDFLAGS := $(LDFLAGS_COMMON) -Wl,-Bsymbolic,--whole-archive -l$(PROJECT) -ltinySAK -Wl,--entry=main
all: $(APP)

View File

@ -1,7 +1,7 @@
APP := lib$(PROJECT).so
APP := lib$(PROJECT).$(EXT)
CFLAGS := $(CFLAGS) -I../tinySAK/src -I../tinyNET/src -I../tinyHTTP/include -I./include
LDFLAGS := $(LDFLAGS) -Wl,-soname,lib$(PROJECT).so,-Bsymbolic,-shared,--whole-archive -ltinySAK -ltinyNET -ltinyHTTP
LDFLAGS := $(LDFLAGS) -ltinySAK -ltinyNET -ltinyHTTP
all: $(APP)
@ -15,7 +15,11 @@ OBJS = \
$(APP): $(OBJS)
$(CC) $(LDFLAGS) -o $@ $^
ifeq ($(EXT), a)
$(AR) rcs $@ $^
else
$(CC) $(LDFLAGS) -o $@ $^
endif
%.o: %.c
$(CC) -c $(INCLUDE) $(CFLAGS) $< -o $@

View File

@ -1,7 +1,7 @@
APP := test
CFLAGS := $(CFLAGS) -I../include -I../../tinySAK/src -I../../tinyNET/src -I../../tinyHTTP/include
LDFLAGS := $(LDFLAGS) -Bsymbolic -ltinySAK -ltinyNET -ltinyHTTP -l$(PROJECT)
LDFLAGS := $(LDFLAGS_COMMON) -Wl,-Bsymbolic,--whole-archive -l$(PROJECT) -ltinySAK -ltinyNET -ltinyHTTP -Wl,--entry=main
all: $(APP)

View File

@ -51,7 +51,9 @@
<ul>
<li>SIP (RFC 3261, 3GPP TS 24.229 Rel-9)</li>
<li>IMS-AKA (RFC 3310, 3GPP TS 33.203)</li>
<li>IMS-AKA (RFC 3310, 3GPP TS 33.203, 35.205, 35.206, 35.207, 35.208 and 35.909)</li>
<li>Private extension headers for 3GPP</li>
<li>IPv4/IPv6 dual stack</li>
@ -77,7 +79,7 @@
<li>The tel URI for Telephone Numbers (RFC 3966)</li>
<li>SIMPLE</li>
<li>SIP SIMPLE (Presence Subscription/Publication and Pager Mode IM)</li>
<li>MMTel (UNI)</li>
@ -87,6 +89,10 @@
<li>MSRP (RFC 4975 and 5547)</li>
<li>Audio/Video (AMR, Speex, G.711, H.264, H.263, MPEG4...)</li>
<li>...and many other features</li>
</ul>
<h2>