Update website information
Begin adding wrappers for Binary SMS Integrate STUN at Audio and Video layers Resolve bugs about memory misalignment on ARM platforms Expose SipUri parser for Java and C# applications
This commit is contained in:
parent
0229ac9b15
commit
dbd1533c3e
|
@ -0,0 +1,7 @@
|
||||||
|
%{
|
||||||
|
#include "SMSEncoder.h"
|
||||||
|
%}
|
||||||
|
|
||||||
|
%nodefaultctor;
|
||||||
|
%include "SMSEncoder.h"
|
||||||
|
%clearnodefaultctor;
|
|
@ -21,35 +21,110 @@
|
||||||
*/
|
*/
|
||||||
#include "SMSEncoder.h"
|
#include "SMSEncoder.h"
|
||||||
|
|
||||||
#include "tinysip.h" /* SIP/IMS */
|
// Short description: http://betelco.blogspot.com/2009/10/sms-over-3gpp-ims-network.html
|
||||||
#include "tinysms.h" /* Binary SMS API*/
|
|
||||||
|
|
||||||
tsk_bool_t is_valid_telnum(const tsip_uri_t* uri);
|
|
||||||
|
|
||||||
SMSData* SMSEncoder::encode(const char *smsc, const char *destination, const char *asscii)
|
RPData::RPData(twrap_rpdata_type_t _type, tsms_rpdu_data_t* _rp_data)
|
||||||
{
|
{
|
||||||
SMSData* encodedData = tsk_null;
|
this->rp_data = (tsms_rpdu_data_t*)tsk_object_ref(_rp_data);
|
||||||
|
this->type = _type;
|
||||||
|
this->tmpBuffer = tsk_null;
|
||||||
|
}
|
||||||
|
|
||||||
|
RPData::RPData() :
|
||||||
|
rp_data(tsk_null),
|
||||||
|
type(twrap_rpdata_type_sms_none),
|
||||||
|
tmpBuffer(tsk_null)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
|
||||||
return encodedData;
|
twrap_rpdata_type_t RPData::getType()
|
||||||
|
{
|
||||||
|
return this->type;
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned RPData::getPayloadLength()
|
||||||
|
{
|
||||||
|
if(!this->tmpBuffer){
|
||||||
|
if((this->tmpBuffer = tsk_buffer_create_null())){
|
||||||
|
tsms_rpdu_data_serialize(this->rp_data, this->tmpBuffer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return this->tmpBuffer ? this->tmpBuffer->size : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned RPData::getPayload(void* output, unsigned maxsize)
|
||||||
|
{
|
||||||
|
unsigned retsize = 0;
|
||||||
|
|
||||||
|
if(!this->tmpBuffer){
|
||||||
|
if((this->tmpBuffer = tsk_buffer_create_null())){
|
||||||
|
tsms_rpdu_data_serialize(this->rp_data, this->tmpBuffer);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if(output && maxsize && this->tmpBuffer && this->tmpBuffer->data){
|
||||||
|
retsize = (this->tmpBuffer->size > maxsize) ? maxsize : this->tmpBuffer->size;
|
||||||
|
memcpy(output, this->tmpBuffer->data, retsize);
|
||||||
|
}
|
||||||
|
return retsize;
|
||||||
|
}
|
||||||
|
|
||||||
|
RPData::~RPData()
|
||||||
|
{
|
||||||
|
TSK_OBJECT_SAFE_FREE(this->rp_data);
|
||||||
|
TSK_OBJECT_SAFE_FREE(this->tmpBuffer);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
tsk_bool_t is_valid_telnum(const tsip_uri_t* uri)
|
// More information about RP-DATA: http://www.doubango.org/API/tinySMS/group__tsms__rpdu__group.html#tsms_rpdu_group_DATA
|
||||||
{
|
RPData* SMSEncoder::encodeSubmit(int mr, const char *smsc, const char *destination, const char *ascii)
|
||||||
tsk_size_t i;
|
{
|
||||||
tsk_size_t len;
|
int ret;
|
||||||
|
tsk_buffer_t* buffer = tsk_null;
|
||||||
if(!uri || tsk_strnullORempty(uri->user_name)){
|
tsms_tpdu_submit_t* sms_submit = tsk_null;
|
||||||
return tsk_false;
|
tsms_rpdu_data_t* rp_data = tsk_null;
|
||||||
}
|
|
||||||
|
RPData* encodedData = tsk_null;
|
||||||
for(i = 0, len = tsk_strlen(uri->user_name); i<len; i++){
|
|
||||||
if(uri->user_name[i] != '+' && !isdigit(uri->user_name[i])){
|
if(!smsc || ! destination || !ascii){
|
||||||
return tsk_false;
|
TSK_DEBUG_ERROR("Invalid parameter");
|
||||||
}
|
return tsk_null;
|
||||||
}
|
}
|
||||||
return tsk_true;
|
|
||||||
}
|
if(mr<0 || mr>0xFF){
|
||||||
|
TSK_DEBUG_WARN("Invalid Message Reference");
|
||||||
|
mr &= 0xFF;
|
||||||
|
}
|
||||||
|
|
||||||
|
// create SMS-SUBMIT message
|
||||||
|
if(!(sms_submit = tsms_tpdu_submit_create(mr, (const uint8_t*)smsc, (const uint8_t*)destination))){
|
||||||
|
TSK_DEBUG_ERROR("Failed to create the TPDU SMS-SUBMIT message");
|
||||||
|
goto bail;
|
||||||
|
}
|
||||||
|
// Set content for SMS-SUBMIT
|
||||||
|
if((buffer = tsms_pack_to_7bit(ascii))){
|
||||||
|
ret = tsms_tpdu_submit_set_userdata(sms_submit, buffer, tsms_alpha_7bit);
|
||||||
|
TSK_OBJECT_SAFE_FREE(buffer);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
TSK_DEBUG_ERROR("Failed to encode the TPDU SMS-SUBMIT message");
|
||||||
|
goto bail;
|
||||||
|
}
|
||||||
|
|
||||||
|
// create RP-DATA(SMS-SUBMIT)
|
||||||
|
if((rp_data = tsms_rpdu_data_create_mo(mr, (const uint8_t*)smsc, TSMS_TPDU_MESSAGE(sms_submit)))){
|
||||||
|
encodedData = new RPData(twrap_rpdata_type_sms_submit, rp_data);
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
TSK_DEBUG_ERROR("Failed to create the RP-DATA(SMS-SUBMIT) message");
|
||||||
|
goto bail;
|
||||||
|
}
|
||||||
|
|
||||||
|
bail:
|
||||||
|
TSK_OBJECT_SAFE_FREE(buffer);
|
||||||
|
TSK_OBJECT_SAFE_FREE(sms_submit);
|
||||||
|
TSK_OBJECT_SAFE_FREE(rp_data);
|
||||||
|
|
||||||
|
return encodedData;
|
||||||
|
}
|
||||||
|
|
|
@ -24,16 +24,46 @@
|
||||||
|
|
||||||
#include "tinyWRAP_config.h"
|
#include "tinyWRAP_config.h"
|
||||||
|
|
||||||
class SMSData
|
#include "tinysip.h" /* SIP/IMS */
|
||||||
|
#include "tinysms.h" /* Binary SMS API*/
|
||||||
|
|
||||||
|
typedef enum twrap_rpdata_type_e
|
||||||
|
{
|
||||||
|
twrap_rpdata_type_sms_none,
|
||||||
|
twrap_rpdata_type_sms_submit,
|
||||||
|
twrap_rpdata_type_sms_deliver,
|
||||||
|
twrap_rpdata_type_sms_status_report,
|
||||||
|
twrap_rpdata_type_sms_command,
|
||||||
|
}
|
||||||
|
twrap_rpdata_type_t;
|
||||||
|
|
||||||
|
class RPData
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SMSData();
|
#if !defined(SWIG)
|
||||||
|
RPData(twrap_rpdata_type_t type, tsms_rpdu_data_t* rp_data);
|
||||||
|
#endif
|
||||||
|
RPData();
|
||||||
|
|
||||||
|
virtual ~RPData();
|
||||||
|
|
||||||
|
public:
|
||||||
|
/* Public API functions */
|
||||||
|
twrap_rpdata_type_t getType();
|
||||||
|
unsigned getPayloadLength();
|
||||||
|
unsigned getPayload(void* output, unsigned maxsize);
|
||||||
|
|
||||||
|
private:
|
||||||
|
twrap_rpdata_type_t type;
|
||||||
|
tsms_rpdu_data_t* rp_data;
|
||||||
|
|
||||||
|
tsk_buffer_t* tmpBuffer;
|
||||||
};
|
};
|
||||||
|
|
||||||
class SMSEncoder
|
class SMSEncoder
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
static SMSData* encode(const char* smsc, const char* destination, const char* asscii);
|
static RPData* encodeSubmit(int mr, const char* smsc, const char* destination, const char* ascii);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif /* TINYWRAP_SMSENCODER_H */
|
#endif /* TINYWRAP_SMSENCODER_H */
|
||||||
|
|
|
@ -81,8 +81,7 @@ SipStack::~SipStack()
|
||||||
|
|
||||||
bool SipStack::start()
|
bool SipStack::start()
|
||||||
{
|
{
|
||||||
int ret = tsip_stack_start(this->handle);
|
return (tsip_stack_start(this->handle) == 0);
|
||||||
return (ret == 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SipStack::setDebugCallback(DDebugCallback* callback)
|
bool SipStack::setDebugCallback(DDebugCallback* callback)
|
||||||
|
@ -109,89 +108,110 @@ bool SipStack::setRealm(const char* realm_uri)
|
||||||
|
|
||||||
bool SipStack::setIMPI(const char* impi)
|
bool SipStack::setIMPI(const char* impi)
|
||||||
{
|
{
|
||||||
int ret = tsip_stack_set(this->handle,
|
return (tsip_stack_set(this->handle,
|
||||||
TSIP_STACK_SET_IMPI(impi),
|
TSIP_STACK_SET_IMPI(impi),
|
||||||
TSIP_STACK_SET_NULL());
|
TSIP_STACK_SET_NULL()) == 0);
|
||||||
return (ret == 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SipStack::setIMPU(const char* impu_uri)
|
bool SipStack::setIMPU(const char* impu_uri)
|
||||||
{
|
{
|
||||||
int ret = tsip_stack_set(this->handle,
|
return (tsip_stack_set(this->handle,
|
||||||
TSIP_STACK_SET_IMPU(impu_uri),
|
TSIP_STACK_SET_IMPU(impu_uri),
|
||||||
TSIP_STACK_SET_NULL());
|
TSIP_STACK_SET_NULL()) == 0);
|
||||||
return (ret == 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SipStack::setPassword(const char* password)
|
bool SipStack::setPassword(const char* password)
|
||||||
{
|
{
|
||||||
int ret = tsip_stack_set(this->handle,
|
return (tsip_stack_set(this->handle,
|
||||||
TSIP_STACK_SET_PASSWORD(password),
|
TSIP_STACK_SET_PASSWORD(password),
|
||||||
TSIP_STACK_SET_NULL());
|
TSIP_STACK_SET_NULL()) == 0);
|
||||||
return (ret == 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SipStack::setProxyCSCF(const char* fqdn, unsigned port, const char* transport, const char* ipversion)
|
bool SipStack::setAMF(const char* amf)
|
||||||
{
|
{
|
||||||
int ret = tsip_stack_set(this->handle,
|
uint16_t _amf = (uint16_t)tsk_atox(amf);
|
||||||
TSIP_STACK_SET_PROXY_CSCF(fqdn, port, transport, ipversion),
|
return (tsip_stack_set(this->handle,
|
||||||
TSIP_STACK_SET_NULL());
|
TSIP_STACK_SET_IMS_AKA_AMF(_amf),
|
||||||
return (ret == 0);
|
TSIP_STACK_SET_NULL()) == 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool SipStack::setOperatorId(const char* opid)
|
||||||
|
{
|
||||||
|
return (tsip_stack_set(this->handle,
|
||||||
|
TSIP_STACK_SET_IMS_AKA_OPERATOR_ID(opid),
|
||||||
|
TSIP_STACK_SET_NULL()) == 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool SipStack::setProxyCSCF(const char* fqdn, unsigned short port, const char* transport, const char* ipversion)
|
||||||
|
{
|
||||||
|
unsigned _port = port;//promote
|
||||||
|
return (tsip_stack_set(this->handle,
|
||||||
|
TSIP_STACK_SET_PROXY_CSCF(fqdn, _port, transport, ipversion),
|
||||||
|
TSIP_STACK_SET_NULL()) == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SipStack::setLocalIP(const char* ip)
|
bool SipStack::setLocalIP(const char* ip)
|
||||||
{
|
{
|
||||||
int ret = tsip_stack_set(this->handle,
|
return (tsip_stack_set(this->handle,
|
||||||
TSIP_STACK_SET_LOCAL_IP(ip),
|
TSIP_STACK_SET_LOCAL_IP(ip),
|
||||||
TSIP_STACK_SET_NULL());
|
TSIP_STACK_SET_NULL()) == 0);
|
||||||
return (ret == 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SipStack::setLocalPort(unsigned port)
|
bool SipStack::setLocalPort(unsigned short port)
|
||||||
{
|
{
|
||||||
int ret = tsip_stack_set(this->handle,
|
unsigned _port = port;//promote
|
||||||
TSIP_STACK_SET_LOCAL_PORT(port),
|
return (tsip_stack_set(this->handle,
|
||||||
TSIP_STACK_SET_NULL());
|
TSIP_STACK_SET_LOCAL_PORT(_port),
|
||||||
return (ret == 0);
|
TSIP_STACK_SET_NULL()) == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SipStack::setEarlyIMS(bool enabled){
|
bool SipStack::setEarlyIMS(bool enabled){
|
||||||
int ret = tsip_stack_set(this->handle,
|
return (tsip_stack_set(this->handle,
|
||||||
TSIP_STACK_SET_EARLY_IMS(enabled? tsk_true : tsk_false),
|
TSIP_STACK_SET_EARLY_IMS(enabled? tsk_true : tsk_false),
|
||||||
TSIP_STACK_SET_NULL());
|
TSIP_STACK_SET_NULL()) == 0);
|
||||||
return (ret == 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SipStack::addHeader(const char* name, const char* value)
|
bool SipStack::addHeader(const char* name, const char* value)
|
||||||
{
|
{
|
||||||
int ret = tsip_stack_set(this->handle,
|
return (tsip_stack_set(this->handle,
|
||||||
TSIP_STACK_SET_HEADER(name, value),
|
TSIP_STACK_SET_HEADER(name, value),
|
||||||
TSIP_STACK_SET_NULL());
|
TSIP_STACK_SET_NULL()) == 0);
|
||||||
return (ret == 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SipStack::removeHeader(const char* name)
|
bool SipStack::removeHeader(const char* name)
|
||||||
{
|
{
|
||||||
int ret = tsip_stack_set(this->handle,
|
return (tsip_stack_set(this->handle,
|
||||||
TSIP_STACK_UNSET_HEADER(name),
|
TSIP_STACK_UNSET_HEADER(name),
|
||||||
TSIP_STACK_SET_NULL());
|
TSIP_STACK_SET_NULL()) == 0);
|
||||||
return (ret == 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SipStack::addDnsServer(const char* ip)
|
bool SipStack::addDnsServer(const char* ip)
|
||||||
{
|
{
|
||||||
int ret = tsip_stack_set(this->handle,
|
return (tsip_stack_set(this->handle,
|
||||||
TSIP_STACK_SET_DNS_SERVER(ip),
|
TSIP_STACK_SET_DNS_SERVER(ip),
|
||||||
TSIP_STACK_SET_NULL());
|
TSIP_STACK_SET_NULL()) == 0);
|
||||||
return (ret == 0);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
bool SipStack::setAoR(const char* ip, int port)
|
bool SipStack::setAoR(const char* ip, int port)
|
||||||
{
|
{
|
||||||
int ret = tsip_stack_set(this->handle,
|
return (tsip_stack_set(this->handle,
|
||||||
TSIP_STACK_SET_AOR(ip, port),
|
TSIP_STACK_SET_AOR(ip, port),
|
||||||
TSIP_STACK_SET_NULL());
|
TSIP_STACK_SET_NULL()) == 0);
|
||||||
return (ret == 0);
|
}
|
||||||
|
|
||||||
|
bool SipStack::setSTUNServer(const char* ip, unsigned short port)
|
||||||
|
{
|
||||||
|
unsigned _port = port;//promote
|
||||||
|
return (tsip_stack_set(this->handle,
|
||||||
|
TSIP_STACK_SET_STUN_SERVER(ip, _port),
|
||||||
|
TSIP_STACK_SET_NULL()) == 0);
|
||||||
|
}
|
||||||
|
|
||||||
|
bool SipStack::setSTUNCred(const char* login, const char* password)
|
||||||
|
{
|
||||||
|
return (tsip_stack_set(this->handle,
|
||||||
|
TSIP_STACK_SET_STUN_CRED(login, password),
|
||||||
|
TSIP_STACK_SET_NULL()) == 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
char* SipStack::dnsENUM(const char* service, const char* e164num, const char* domain)
|
char* SipStack::dnsENUM(const char* service, const char* e164num, const char* domain)
|
||||||
|
@ -212,7 +232,7 @@ char* SipStack::dnsENUM(const char* service, const char* e164num, const char* do
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
char* SipStack::dnsNaptrSrv(const char* domain, const char* service, short *OUTPUT)
|
char* SipStack::dnsNaptrSrv(const char* domain, const char* service, unsigned short *OUTPUT)
|
||||||
{
|
{
|
||||||
tnet_dns_ctx_t* dnsctx = tsip_stack_get_dnsctx(this->handle);
|
tnet_dns_ctx_t* dnsctx = tsip_stack_get_dnsctx(this->handle);
|
||||||
char* ip = tsk_null;
|
char* ip = tsk_null;
|
||||||
|
@ -233,6 +253,26 @@ char* SipStack::dnsNaptrSrv(const char* domain, const char* service, short *OUTP
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
char* SipStack::dnsSrv(const char* service, unsigned short* OUTPUT)
|
||||||
|
{
|
||||||
|
tnet_dns_ctx_t* dnsctx = tsip_stack_get_dnsctx(this->handle);
|
||||||
|
char* ip = tsk_null;
|
||||||
|
tnet_port_t port = 0;
|
||||||
|
*OUTPUT = 0;
|
||||||
|
|
||||||
|
if(dnsctx){
|
||||||
|
if(!tnet_dns_query_srv(dnsctx, service, &ip, &port)){
|
||||||
|
*OUTPUT = port;
|
||||||
|
}
|
||||||
|
tsk_object_unref(dnsctx);
|
||||||
|
return ip;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
TSK_DEBUG_ERROR("No DNS Context could be found");
|
||||||
|
return tsk_null;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
bool SipStack::isValid()
|
bool SipStack::isValid()
|
||||||
{
|
{
|
||||||
return (this->handle != tsk_null);
|
return (this->handle != tsk_null);
|
||||||
|
|
|
@ -43,17 +43,23 @@ public: /* API functions */
|
||||||
bool setIMPI(const char* impi);
|
bool setIMPI(const char* impi);
|
||||||
bool setIMPU(const char* impu_uri);
|
bool setIMPU(const char* impu_uri);
|
||||||
bool setPassword(const char* password);
|
bool setPassword(const char* password);
|
||||||
bool setProxyCSCF(const char* fqdn, unsigned port, const char* transport, const char* ipversion);
|
bool setAMF(const char* amf);
|
||||||
|
bool setOperatorId(const char* opid);
|
||||||
|
bool setProxyCSCF(const char* fqdn, unsigned short port, const char* transport, const char* ipversion);
|
||||||
bool setLocalIP(const char* ip);
|
bool setLocalIP(const char* ip);
|
||||||
bool setLocalPort(unsigned port);
|
bool setLocalPort(unsigned short port);
|
||||||
bool setEarlyIMS(bool enabled);
|
bool setEarlyIMS(bool enabled);
|
||||||
bool addHeader(const char* name, const char* value);
|
bool addHeader(const char* name, const char* value);
|
||||||
bool removeHeader(const char* name);
|
bool removeHeader(const char* name);
|
||||||
bool addDnsServer(const char* ip);
|
bool addDnsServer(const char* ip);
|
||||||
bool setAoR(const char* ip, int port);
|
bool setAoR(const char* ip, int port);
|
||||||
|
|
||||||
|
bool setSTUNServer(const char* ip, unsigned short port);
|
||||||
|
bool setSTUNCred(const char* login, const char* password);
|
||||||
|
|
||||||
char* dnsENUM(const char* service, const char* e164num, const char* domain);
|
char* dnsENUM(const char* service, const char* e164num, const char* domain);
|
||||||
char* dnsNaptrSrv(const char* domain, const char* service, short *OUTPUT);
|
char* dnsNaptrSrv(const char* domain, const char* service, unsigned short *OUTPUT);
|
||||||
|
char* dnsSrv(const char* service, unsigned short* OUTPUT);
|
||||||
|
|
||||||
bool isValid();
|
bool isValid();
|
||||||
bool stop();
|
bool stop();
|
||||||
|
|
|
@ -147,6 +147,8 @@ typedef enum tsip_invite_event_type_e
|
||||||
// Media Events
|
// Media Events
|
||||||
//
|
//
|
||||||
|
|
||||||
|
tsip_m_early_media,
|
||||||
|
|
||||||
/* 3GPP TS 24.610: Communication Hold */
|
/* 3GPP TS 24.610: Communication Hold */
|
||||||
tsip_m_local_hold_ok,
|
tsip_m_local_hold_ok,
|
||||||
tsip_m_local_hold_nok,
|
tsip_m_local_hold_nok,
|
||||||
|
|
|
@ -48,3 +48,46 @@ bool SipUri::isValid()
|
||||||
{
|
{
|
||||||
return (this->uri != tsk_null);
|
return (this->uri != tsk_null);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
const char* SipUri::getScheme()
|
||||||
|
{
|
||||||
|
if(this->uri){
|
||||||
|
return this->uri->scheme;
|
||||||
|
}
|
||||||
|
return tsk_null;
|
||||||
|
}
|
||||||
|
|
||||||
|
const char* SipUri::getHost()
|
||||||
|
{
|
||||||
|
return this->uri ? this->uri->host : tsk_null;
|
||||||
|
}
|
||||||
|
|
||||||
|
unsigned short SipUri::getPort()
|
||||||
|
{
|
||||||
|
return this->uri ? this->uri->port : 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
const char* SipUri::getUserName()
|
||||||
|
{
|
||||||
|
return this->uri ? this->uri->user_name : tsk_null;
|
||||||
|
}
|
||||||
|
|
||||||
|
const char* SipUri::getPassword()
|
||||||
|
{
|
||||||
|
return this->uri ? this->uri->password : tsk_null;
|
||||||
|
}
|
||||||
|
|
||||||
|
const char* SipUri::getDisplayName()
|
||||||
|
{
|
||||||
|
return this->uri ? this->uri->display_name : tsk_null;
|
||||||
|
}
|
||||||
|
|
||||||
|
const char* SipUri::getParamValue(const char* pname)
|
||||||
|
{
|
||||||
|
if(this->uri && this->uri->params){
|
||||||
|
const char* pvalue = tsk_params_get_param_value(this->uri->params, pname);
|
||||||
|
return pvalue;
|
||||||
|
}
|
||||||
|
return tsk_null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
|
@ -32,7 +32,15 @@ public:
|
||||||
|
|
||||||
public:
|
public:
|
||||||
static bool isValid(const char*);
|
static bool isValid(const char*);
|
||||||
|
|
||||||
bool isValid();
|
bool isValid();
|
||||||
|
const char* getScheme();
|
||||||
|
const char* getHost();
|
||||||
|
unsigned short getPort();
|
||||||
|
const char* getUserName();
|
||||||
|
const char* getPassword();
|
||||||
|
const char* getDisplayName();
|
||||||
|
const char* getParamValue(const char* pname);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
tsip_uri_t* uri;
|
tsip_uri_t* uri;
|
||||||
|
|
|
@ -19,6 +19,7 @@
|
||||||
%newobject getSipHeaderParamValue;
|
%newobject getSipHeaderParamValue;
|
||||||
%newobject SipStack::dnsENUM;
|
%newobject SipStack::dnsENUM;
|
||||||
%newobject SipStack::dnsNaptrSrv;
|
%newobject SipStack::dnsNaptrSrv;
|
||||||
|
%newobject SipStack::dnsSrv;
|
||||||
|
|
||||||
%newobject MessagingEvent::takeSessionOwnership;
|
%newobject MessagingEvent::takeSessionOwnership;
|
||||||
%newobject CallEvent::takeSessionOwnership;
|
%newobject CallEvent::takeSessionOwnership;
|
||||||
|
@ -32,4 +33,10 @@
|
||||||
%newobject getXcapHeaderValue;
|
%newobject getXcapHeaderValue;
|
||||||
%newobject getXcapHeaderParamValue;
|
%newobject getXcapHeaderParamValue;
|
||||||
|
|
||||||
%include Xcap.i
|
%include Xcap.i
|
||||||
|
|
||||||
|
|
||||||
|
/* ========== SMS ========== */
|
||||||
|
%newobject SMSEncoder::encodeSubmit;
|
||||||
|
|
||||||
|
%include SMS.i
|
|
@ -0,0 +1,59 @@
|
||||||
|
/* ----------------------------------------------------------------------------
|
||||||
|
* This file was automatically generated by SWIG (http://www.swig.org).
|
||||||
|
* Version 1.3.39
|
||||||
|
*
|
||||||
|
* Do not make changes to this file unless you know what you are doing--modify
|
||||||
|
* the SWIG interface file instead.
|
||||||
|
* ----------------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
|
public class RPData : IDisposable {
|
||||||
|
private HandleRef swigCPtr;
|
||||||
|
protected bool swigCMemOwn;
|
||||||
|
|
||||||
|
internal RPData(IntPtr cPtr, bool cMemoryOwn) {
|
||||||
|
swigCMemOwn = cMemoryOwn;
|
||||||
|
swigCPtr = new HandleRef(this, cPtr);
|
||||||
|
}
|
||||||
|
|
||||||
|
internal static HandleRef getCPtr(RPData obj) {
|
||||||
|
return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr;
|
||||||
|
}
|
||||||
|
|
||||||
|
~RPData() {
|
||||||
|
Dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
public virtual void Dispose() {
|
||||||
|
lock(this) {
|
||||||
|
if(swigCPtr.Handle != IntPtr.Zero && swigCMemOwn) {
|
||||||
|
swigCMemOwn = false;
|
||||||
|
tinyWRAPPINVOKE.delete_RPData(swigCPtr);
|
||||||
|
}
|
||||||
|
swigCPtr = new HandleRef(null, IntPtr.Zero);
|
||||||
|
GC.SuppressFinalize(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public RPData() : this(tinyWRAPPINVOKE.new_RPData(), true) {
|
||||||
|
}
|
||||||
|
|
||||||
|
public twrap_rpdata_type_t getType() {
|
||||||
|
twrap_rpdata_type_t ret = (twrap_rpdata_type_t)tinyWRAPPINVOKE.RPData_getType(swigCPtr);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
public uint getPayloadLength() {
|
||||||
|
uint ret = tinyWRAPPINVOKE.RPData_getPayloadLength(swigCPtr);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
public uint getPayload(byte[] output, uint maxsize) {
|
||||||
|
uint ret = tinyWRAPPINVOKE.RPData_getPayload(swigCPtr, output, maxsize);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,47 @@
|
||||||
|
/* ----------------------------------------------------------------------------
|
||||||
|
* This file was automatically generated by SWIG (http://www.swig.org).
|
||||||
|
* Version 1.3.39
|
||||||
|
*
|
||||||
|
* Do not make changes to this file unless you know what you are doing--modify
|
||||||
|
* the SWIG interface file instead.
|
||||||
|
* ----------------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
|
||||||
|
using System;
|
||||||
|
using System.Runtime.InteropServices;
|
||||||
|
|
||||||
|
public class SMSEncoder : IDisposable {
|
||||||
|
private HandleRef swigCPtr;
|
||||||
|
protected bool swigCMemOwn;
|
||||||
|
|
||||||
|
internal SMSEncoder(IntPtr cPtr, bool cMemoryOwn) {
|
||||||
|
swigCMemOwn = cMemoryOwn;
|
||||||
|
swigCPtr = new HandleRef(this, cPtr);
|
||||||
|
}
|
||||||
|
|
||||||
|
internal static HandleRef getCPtr(SMSEncoder obj) {
|
||||||
|
return (obj == null) ? new HandleRef(null, IntPtr.Zero) : obj.swigCPtr;
|
||||||
|
}
|
||||||
|
|
||||||
|
~SMSEncoder() {
|
||||||
|
Dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
public virtual void Dispose() {
|
||||||
|
lock(this) {
|
||||||
|
if(swigCPtr.Handle != IntPtr.Zero && swigCMemOwn) {
|
||||||
|
swigCMemOwn = false;
|
||||||
|
tinyWRAPPINVOKE.delete_SMSEncoder(swigCPtr);
|
||||||
|
}
|
||||||
|
swigCPtr = new HandleRef(null, IntPtr.Zero);
|
||||||
|
GC.SuppressFinalize(this);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
public static RPData encodeSubmit(int mr, string smsc, string destination, string ascii) {
|
||||||
|
IntPtr cPtr = tinyWRAPPINVOKE.SMSEncoder_encodeSubmit(mr, smsc, destination, ascii);
|
||||||
|
RPData ret = (cPtr == IntPtr.Zero) ? null : new RPData(cPtr, true);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -70,7 +70,17 @@ public class SipStack : SafeObject {
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool setProxyCSCF(string fqdn, uint port, string transport, string ipversion) {
|
public bool setAMF(string amf) {
|
||||||
|
bool ret = tinyWRAPPINVOKE.SipStack_setAMF(swigCPtr, amf);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool setOperatorId(string opid) {
|
||||||
|
bool ret = tinyWRAPPINVOKE.SipStack_setOperatorId(swigCPtr, opid);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool setProxyCSCF(string fqdn, ushort port, string transport, string ipversion) {
|
||||||
bool ret = tinyWRAPPINVOKE.SipStack_setProxyCSCF(swigCPtr, fqdn, port, transport, ipversion);
|
bool ret = tinyWRAPPINVOKE.SipStack_setProxyCSCF(swigCPtr, fqdn, port, transport, ipversion);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -80,7 +90,7 @@ public class SipStack : SafeObject {
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool setLocalPort(uint port) {
|
public bool setLocalPort(ushort port) {
|
||||||
bool ret = tinyWRAPPINVOKE.SipStack_setLocalPort(swigCPtr, port);
|
bool ret = tinyWRAPPINVOKE.SipStack_setLocalPort(swigCPtr, port);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -110,16 +120,31 @@ public class SipStack : SafeObject {
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public bool setSTUNServer(string ip, ushort port) {
|
||||||
|
bool ret = tinyWRAPPINVOKE.SipStack_setSTUNServer(swigCPtr, ip, port);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool setSTUNCred(string login, string password) {
|
||||||
|
bool ret = tinyWRAPPINVOKE.SipStack_setSTUNCred(swigCPtr, login, password);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
public string dnsENUM(string service, string e164num, string domain) {
|
public string dnsENUM(string service, string e164num, string domain) {
|
||||||
string ret = tinyWRAPPINVOKE.SipStack_dnsENUM(swigCPtr, service, e164num, domain);
|
string ret = tinyWRAPPINVOKE.SipStack_dnsENUM(swigCPtr, service, e164num, domain);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
public string dnsNaptrSrv(string domain, string service, out short OUTPUT) {
|
public string dnsNaptrSrv(string domain, string service, out ushort OUTPUT) {
|
||||||
string ret = tinyWRAPPINVOKE.SipStack_dnsNaptrSrv(swigCPtr, domain, service, out OUTPUT);
|
string ret = tinyWRAPPINVOKE.SipStack_dnsNaptrSrv(swigCPtr, domain, service, out OUTPUT);
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public string dnsSrv(string service, out ushort OUTPUT) {
|
||||||
|
string ret = tinyWRAPPINVOKE.SipStack_dnsSrv(swigCPtr, service, out OUTPUT);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
public bool isValid() {
|
public bool isValid() {
|
||||||
bool ret = tinyWRAPPINVOKE.SipStack_isValid(swigCPtr);
|
bool ret = tinyWRAPPINVOKE.SipStack_isValid(swigCPtr);
|
||||||
return ret;
|
return ret;
|
||||||
|
|
|
@ -51,4 +51,39 @@ public class SipUri : IDisposable {
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public string getScheme() {
|
||||||
|
string ret = tinyWRAPPINVOKE.SipUri_getScheme(swigCPtr);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
public string getHost() {
|
||||||
|
string ret = tinyWRAPPINVOKE.SipUri_getHost(swigCPtr);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
public ushort getPort() {
|
||||||
|
ushort ret = tinyWRAPPINVOKE.SipUri_getPort(swigCPtr);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
public string getUserName() {
|
||||||
|
string ret = tinyWRAPPINVOKE.SipUri_getUserName(swigCPtr);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
public string getPassword() {
|
||||||
|
string ret = tinyWRAPPINVOKE.SipUri_getPassword(swigCPtr);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
public string getDisplayName() {
|
||||||
|
string ret = tinyWRAPPINVOKE.SipUri_getDisplayName(swigCPtr);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
|
public string getParamValue(string pname) {
|
||||||
|
string ret = tinyWRAPPINVOKE.SipUri_getParamValue(swigCPtr, pname);
|
||||||
|
return ret;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -19,6 +19,9 @@ public enum tdav_codec_id_t {
|
||||||
tdav_codec_id_speex_nb = 0x00000001 << 8,
|
tdav_codec_id_speex_nb = 0x00000001 << 8,
|
||||||
tdav_codec_id_speex_wb = 0x00000001 << 9,
|
tdav_codec_id_speex_wb = 0x00000001 << 9,
|
||||||
tdav_codec_id_speex_uwb = 0x00000001 << 10,
|
tdav_codec_id_speex_uwb = 0x00000001 << 10,
|
||||||
|
tdav_codec_id_bv16 = 0x00000001 << 11,
|
||||||
|
tdav_codec_id_bv32 = 0x00000001 << 12,
|
||||||
|
tdav_codec_id_evrc = 0x00000001 << 13,
|
||||||
tdav_codec_id_h261 = 0x00010000 << 0,
|
tdav_codec_id_h261 = 0x00010000 << 0,
|
||||||
tdav_codec_id_h263 = 0x00010000 << 1,
|
tdav_codec_id_h263 = 0x00010000 << 1,
|
||||||
tdav_codec_id_h263p = 0x00010000 << 2,
|
tdav_codec_id_h263p = 0x00010000 << 2,
|
||||||
|
|
|
@ -11,7 +11,7 @@ namespace test
|
||||||
const String REALM = "micromethod.com";
|
const String REALM = "micromethod.com";
|
||||||
const String USER = "mamadou";
|
const String USER = "mamadou";
|
||||||
const String PROXY_CSCF_IP = "192.168.0.10";
|
const String PROXY_CSCF_IP = "192.168.0.10";
|
||||||
const uint PROXY_CSCF_PORT = 5060;
|
const ushort PROXY_CSCF_PORT = 5060;
|
||||||
const String PASSWORD = "";
|
const String PASSWORD = "";
|
||||||
|
|
||||||
/*
|
/*
|
||||||
|
@ -57,6 +57,9 @@ namespace test
|
||||||
|
|
||||||
/* Sets Proxy-CSCF */
|
/* Sets Proxy-CSCF */
|
||||||
success = sipStack.setProxyCSCF(PROXY_CSCF_IP, PROXY_CSCF_PORT, "udp", "ipv4");
|
success = sipStack.setProxyCSCF(PROXY_CSCF_IP, PROXY_CSCF_PORT, "udp", "ipv4");
|
||||||
|
// STUN
|
||||||
|
sipStack.setSTUNServer("numb.viagenie.ca", 3478);
|
||||||
|
sipStack.setSTUNCred("login", "password");
|
||||||
/* Starts the stack */
|
/* Starts the stack */
|
||||||
success = sipStack.start();
|
success = sipStack.start();
|
||||||
|
|
||||||
|
@ -65,14 +68,18 @@ namespace test
|
||||||
|
|
||||||
/* Early IMS */
|
/* Early IMS */
|
||||||
sipStack.setEarlyIMS(true);
|
sipStack.setEarlyIMS(true);
|
||||||
|
/* AMF and Operator Id */
|
||||||
|
sipStack.setAMF("0x00FF");
|
||||||
|
sipStack.setOperatorId("0xFF0000000000000000000000000000FF");
|
||||||
|
|
||||||
//sipStack.setAoR("127.0.0.1", 1234);
|
//sipStack.setAoR("127.0.0.1", 1234);
|
||||||
|
|
||||||
audioConsumer.setActivate(true);
|
audioConsumer.setActivate(true);
|
||||||
audioProducer.setActivate(true);
|
audioProducer.setActivate(true);
|
||||||
videoProducer.setActivate(true);
|
videoProducer.setActivate(true);
|
||||||
videoConsumer.setActivate(true);
|
videoConsumer.setActivate(true);
|
||||||
|
|
||||||
|
|
||||||
/* Send REGISTER */
|
/* Send REGISTER */
|
||||||
regSession = new RegistrationSession(sipStack);
|
regSession = new RegistrationSession(sipStack);
|
||||||
regSession.addCaps("+g.oma.sip-im");
|
regSession.addCaps("+g.oma.sip-im");
|
||||||
|
@ -83,9 +90,11 @@ namespace test
|
||||||
|
|
||||||
Console.ReadLine();
|
Console.ReadLine();
|
||||||
|
|
||||||
//String sipUri = sipStack.dnsENUM("E2U+SIP", "+1-800-555-5555", "e164.org");
|
|
||||||
// short port = 0;
|
String sipUri = sipStack.dnsENUM("E2U+SIP", "+1-800-555-5555", "e164.org");
|
||||||
|
//ushort port = 0;
|
||||||
//String ipAddress = sipStack.dnsNaptrSrv("sip2sip.info", "SIP+D2U", out port);
|
//String ipAddress = sipStack.dnsNaptrSrv("sip2sip.info", "SIP+D2U", out port);
|
||||||
|
//String ipAddress = sipStack.dnsSrv("_sip._udp.sip2sip.info", out port);
|
||||||
|
|
||||||
callSession = new CallSession(sipStack);
|
callSession = new CallSession(sipStack);
|
||||||
callSession.set100rel(true);
|
callSession.set100rel(true);
|
||||||
|
@ -114,6 +123,28 @@ namespace test
|
||||||
|
|
||||||
////Thread.Sleep(2000);
|
////Thread.Sleep(2000);
|
||||||
|
|
||||||
|
/*RPData rpdata = SMSEncoder.encodeSubmit(25, "+33160188661", "+33660188661", "salut");
|
||||||
|
if (rpdata != null)
|
||||||
|
{
|
||||||
|
uint pay_len = rpdata.getPayloadLength();
|
||||||
|
if (pay_len > 0)
|
||||||
|
{
|
||||||
|
byte[] pay = new byte[pay_len];
|
||||||
|
rpdata.getPayload(pay, (uint)pay.Length);
|
||||||
|
|
||||||
|
MessagingSession m = new MessagingSession(sipStack);
|
||||||
|
m.setToUri(String.Format("sip:+33160188661@{0}", REALM));
|
||||||
|
m.addHeader("Content-Type", "application/vnd.3gpp.sms");
|
||||||
|
m.addHeader("Transfer-Encoding", "binary");
|
||||||
|
m.send(pay, (uint)pay.Length);
|
||||||
|
|
||||||
|
m.Dispose();
|
||||||
|
}
|
||||||
|
rpdata.Dispose();
|
||||||
|
}
|
||||||
|
|
||||||
|
Console.ReadLine();*/
|
||||||
|
|
||||||
///* Send SUBSCRIBE(reg) */
|
///* Send SUBSCRIBE(reg) */
|
||||||
//subSession = new SubscriptionSession(sipStack);
|
//subSession = new SubscriptionSession(sipStack);
|
||||||
//subSession.addHeader("Event", "reg");
|
//subSession.addHeader("Event", "reg");
|
||||||
|
|
|
@ -96,6 +96,9 @@
|
||||||
<Compile Include="..\RegistrationSession.cs">
|
<Compile Include="..\RegistrationSession.cs">
|
||||||
<Link>RegistrationSession.cs</Link>
|
<Link>RegistrationSession.cs</Link>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
<Compile Include="..\RPData.cs">
|
||||||
|
<Link>RPData.cs</Link>
|
||||||
|
</Compile>
|
||||||
<Compile Include="..\SafeObject.cs">
|
<Compile Include="..\SafeObject.cs">
|
||||||
<Link>SafeObject.cs</Link>
|
<Link>SafeObject.cs</Link>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
@ -114,6 +117,12 @@
|
||||||
<Compile Include="..\SipStack.cs">
|
<Compile Include="..\SipStack.cs">
|
||||||
<Link>SipStack.cs</Link>
|
<Link>SipStack.cs</Link>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
<Compile Include="..\SipUri.cs">
|
||||||
|
<Link>SipUri.cs</Link>
|
||||||
|
</Compile>
|
||||||
|
<Compile Include="..\SMSEncoder.cs">
|
||||||
|
<Link>SMSEncoder.cs</Link>
|
||||||
|
</Compile>
|
||||||
<Compile Include="..\StackEvent.cs">
|
<Compile Include="..\StackEvent.cs">
|
||||||
<Link>StackEvent.cs</Link>
|
<Link>StackEvent.cs</Link>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
@ -165,6 +174,9 @@
|
||||||
<Compile Include="..\tsip_subscribe_event_type_t.cs">
|
<Compile Include="..\tsip_subscribe_event_type_t.cs">
|
||||||
<Link>tsip_subscribe_event_type_t.cs</Link>
|
<Link>tsip_subscribe_event_type_t.cs</Link>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
<Compile Include="..\twrap_rpdata_type_t.cs">
|
||||||
|
<Link>twrap_rpdata_type_t.cs</Link>
|
||||||
|
</Compile>
|
||||||
<Compile Include="..\XcapCallback.cs">
|
<Compile Include="..\XcapCallback.cs">
|
||||||
<Link>XcapCallback.cs</Link>
|
<Link>XcapCallback.cs</Link>
|
||||||
</Compile>
|
</Compile>
|
||||||
|
|
|
@ -31,6 +31,8 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "test_xcap", "test_xcap\test
|
||||||
EndProject
|
EndProject
|
||||||
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tinyXCAP", "..\..\tinyXCAP\tinyXCAP.vcproj", "{570CF33D-E65F-448F-8AC2-F9AE2F23152F}"
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tinyXCAP", "..\..\tinyXCAP\tinyXCAP.vcproj", "{570CF33D-E65F-448F-8AC2-F9AE2F23152F}"
|
||||||
EndProject
|
EndProject
|
||||||
|
Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "tinySMS", "..\..\tinySMS\tinySMS.vcproj", "{9A3A5AF3-2333-4477-B880-7F901F9D8972}"
|
||||||
|
EndProject
|
||||||
Global
|
Global
|
||||||
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
GlobalSection(SolutionConfigurationPlatforms) = preSolution
|
||||||
Debug|Any CPU = Debug|Any CPU
|
Debug|Any CPU = Debug|Any CPU
|
||||||
|
@ -471,6 +473,30 @@ Global
|
||||||
{570CF33D-E65F-448F-8AC2-F9AE2F23152F}.Static_Release|Win32.ActiveCfg = Release|Win32
|
{570CF33D-E65F-448F-8AC2-F9AE2F23152F}.Static_Release|Win32.ActiveCfg = Release|Win32
|
||||||
{570CF33D-E65F-448F-8AC2-F9AE2F23152F}.Static_Release|Win32.Build.0 = Release|Win32
|
{570CF33D-E65F-448F-8AC2-F9AE2F23152F}.Static_Release|Win32.Build.0 = Release|Win32
|
||||||
{570CF33D-E65F-448F-8AC2-F9AE2F23152F}.Static_Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Release|Win32
|
{570CF33D-E65F-448F-8AC2-F9AE2F23152F}.Static_Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Release|Win32
|
||||||
|
{9A3A5AF3-2333-4477-B880-7F901F9D8972}.Debug|Any CPU.ActiveCfg = Debug|Win32
|
||||||
|
{9A3A5AF3-2333-4477-B880-7F901F9D8972}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||||
|
{9A3A5AF3-2333-4477-B880-7F901F9D8972}.Debug|Mixed Platforms.Build.0 = Debug|Win32
|
||||||
|
{9A3A5AF3-2333-4477-B880-7F901F9D8972}.Debug|Win32.ActiveCfg = Debug|Win32
|
||||||
|
{9A3A5AF3-2333-4477-B880-7F901F9D8972}.Debug|Win32.Build.0 = Debug|Win32
|
||||||
|
{9A3A5AF3-2333-4477-B880-7F901F9D8972}.Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Debug|Win32
|
||||||
|
{9A3A5AF3-2333-4477-B880-7F901F9D8972}.Release|Any CPU.ActiveCfg = Release|Win32
|
||||||
|
{9A3A5AF3-2333-4477-B880-7F901F9D8972}.Release|Mixed Platforms.ActiveCfg = Release|Win32
|
||||||
|
{9A3A5AF3-2333-4477-B880-7F901F9D8972}.Release|Mixed Platforms.Build.0 = Release|Win32
|
||||||
|
{9A3A5AF3-2333-4477-B880-7F901F9D8972}.Release|Win32.ActiveCfg = Release|Win32
|
||||||
|
{9A3A5AF3-2333-4477-B880-7F901F9D8972}.Release|Win32.Build.0 = Release|Win32
|
||||||
|
{9A3A5AF3-2333-4477-B880-7F901F9D8972}.Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Release|Win32
|
||||||
|
{9A3A5AF3-2333-4477-B880-7F901F9D8972}.Static_Debug|Any CPU.ActiveCfg = Debug|Win32
|
||||||
|
{9A3A5AF3-2333-4477-B880-7F901F9D8972}.Static_Debug|Mixed Platforms.ActiveCfg = Debug|Win32
|
||||||
|
{9A3A5AF3-2333-4477-B880-7F901F9D8972}.Static_Debug|Mixed Platforms.Build.0 = Debug|Win32
|
||||||
|
{9A3A5AF3-2333-4477-B880-7F901F9D8972}.Static_Debug|Win32.ActiveCfg = Debug|Win32
|
||||||
|
{9A3A5AF3-2333-4477-B880-7F901F9D8972}.Static_Debug|Win32.Build.0 = Debug|Win32
|
||||||
|
{9A3A5AF3-2333-4477-B880-7F901F9D8972}.Static_Debug|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Debug|Win32
|
||||||
|
{9A3A5AF3-2333-4477-B880-7F901F9D8972}.Static_Release|Any CPU.ActiveCfg = Release|Win32
|
||||||
|
{9A3A5AF3-2333-4477-B880-7F901F9D8972}.Static_Release|Mixed Platforms.ActiveCfg = Release|Win32
|
||||||
|
{9A3A5AF3-2333-4477-B880-7F901F9D8972}.Static_Release|Mixed Platforms.Build.0 = Release|Win32
|
||||||
|
{9A3A5AF3-2333-4477-B880-7F901F9D8972}.Static_Release|Win32.ActiveCfg = Release|Win32
|
||||||
|
{9A3A5AF3-2333-4477-B880-7F901F9D8972}.Static_Release|Win32.Build.0 = Release|Win32
|
||||||
|
{9A3A5AF3-2333-4477-B880-7F901F9D8972}.Static_Release|Windows Mobile 5.0 Pocket PC SDK (ARMV4I).ActiveCfg = Release|Win32
|
||||||
EndGlobalSection
|
EndGlobalSection
|
||||||
GlobalSection(SolutionProperties) = preSolution
|
GlobalSection(SolutionProperties) = preSolution
|
||||||
HideSolutionNode = FALSE
|
HideSolutionNode = FALSE
|
||||||
|
|
|
@ -41,7 +41,7 @@
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
Optimization="0"
|
Optimization="0"
|
||||||
AdditionalIncludeDirectories="..\_common;..\.;..\..\thirdparties\win32\include;..\..\tinySAK\src;..\..\tinyNET\src;..\..\tinyHTTP\include;..\..\tinySIP\include;..\..\tinyDAV\include;..\..\tinySDP\include;..\..\tinyMEDIA\include;..\..\tinyXCAP\include"
|
AdditionalIncludeDirectories="..\_common;..\.;..\..\thirdparties\win32\include;..\..\tinySAK\src;..\..\tinyNET\src;..\..\tinyHTTP\include;..\..\tinySIP\include;..\..\tinyDAV\include;..\..\tinySDP\include;..\..\tinyMEDIA\include;..\..\tinyXCAP\include;..\..\tinySMS\include"
|
||||||
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;TINYWRAP_EXPORTS"
|
PreprocessorDefinitions="WIN32;_DEBUG;_WINDOWS;_USRDLL;TINYWRAP_EXPORTS"
|
||||||
MinimalRebuild="true"
|
MinimalRebuild="true"
|
||||||
BasicRuntimeChecks="3"
|
BasicRuntimeChecks="3"
|
||||||
|
@ -62,7 +62,7 @@
|
||||||
/>
|
/>
|
||||||
<Tool
|
<Tool
|
||||||
Name="VCLinkerTool"
|
Name="VCLinkerTool"
|
||||||
AdditionalDependencies="$(OutDir)\tinySAK.lib $(OutDir)\tinySIP.lib $(OutDir)\tinyNET.lib $(OutDir)\tinyDAV.lib $(OutDir)\tinyMEDIA.lib $(OutDir)\tinyHTTP.lib $(OutDir)\tinyXCAP.lib"
|
AdditionalDependencies="$(OutDir)\tinySAK.lib $(OutDir)\tinySIP.lib $(OutDir)\tinyNET.lib $(OutDir)\tinyDAV.lib $(OutDir)\tinyMEDIA.lib $(OutDir)\tinyHTTP.lib $(OutDir)\tinyXCAP.lib $(OutDir)\tinySMS.lib"
|
||||||
LinkIncremental="2"
|
LinkIncremental="2"
|
||||||
GenerateDebugInformation="true"
|
GenerateDebugInformation="true"
|
||||||
SubSystem="2"
|
SubSystem="2"
|
||||||
|
@ -213,6 +213,10 @@
|
||||||
RelativePath="..\_common\SipUri.cxx"
|
RelativePath="..\_common\SipUri.cxx"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\_common\SMSEncoder.cxx"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath=".\tinyWRAP_wrap.cxx"
|
RelativePath=".\tinyWRAP_wrap.cxx"
|
||||||
>
|
>
|
||||||
|
@ -271,6 +275,10 @@
|
||||||
RelativePath="..\_common\SipUri.h"
|
RelativePath="..\_common\SipUri.h"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\_common\SMSEncoder.h"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\_common\tinyWRAP_config.h"
|
RelativePath="..\_common\tinyWRAP_config.h"
|
||||||
>
|
>
|
||||||
|
@ -296,6 +304,10 @@
|
||||||
RelativePath="..\_common\SipStack.i"
|
RelativePath="..\_common\SipStack.i"
|
||||||
>
|
>
|
||||||
</File>
|
</File>
|
||||||
|
<File
|
||||||
|
RelativePath="..\_common\SMS.i"
|
||||||
|
>
|
||||||
|
</File>
|
||||||
<File
|
<File
|
||||||
RelativePath="..\_common\tinyWRAP.i"
|
RelativePath="..\_common\tinyWRAP.i"
|
||||||
>
|
>
|
||||||
|
|
|
@ -214,6 +214,27 @@ class tinyWRAPPINVOKE {
|
||||||
[DllImport("tinyWRAP", EntryPoint="CSharp_SipUri_isValid__SWIG_1")]
|
[DllImport("tinyWRAP", EntryPoint="CSharp_SipUri_isValid__SWIG_1")]
|
||||||
public static extern bool SipUri_isValid__SWIG_1(HandleRef jarg1);
|
public static extern bool SipUri_isValid__SWIG_1(HandleRef jarg1);
|
||||||
|
|
||||||
|
[DllImport("tinyWRAP", EntryPoint="CSharp_SipUri_getScheme")]
|
||||||
|
public static extern string SipUri_getScheme(HandleRef jarg1);
|
||||||
|
|
||||||
|
[DllImport("tinyWRAP", EntryPoint="CSharp_SipUri_getHost")]
|
||||||
|
public static extern string SipUri_getHost(HandleRef jarg1);
|
||||||
|
|
||||||
|
[DllImport("tinyWRAP", EntryPoint="CSharp_SipUri_getPort")]
|
||||||
|
public static extern ushort SipUri_getPort(HandleRef jarg1);
|
||||||
|
|
||||||
|
[DllImport("tinyWRAP", EntryPoint="CSharp_SipUri_getUserName")]
|
||||||
|
public static extern string SipUri_getUserName(HandleRef jarg1);
|
||||||
|
|
||||||
|
[DllImport("tinyWRAP", EntryPoint="CSharp_SipUri_getPassword")]
|
||||||
|
public static extern string SipUri_getPassword(HandleRef jarg1);
|
||||||
|
|
||||||
|
[DllImport("tinyWRAP", EntryPoint="CSharp_SipUri_getDisplayName")]
|
||||||
|
public static extern string SipUri_getDisplayName(HandleRef jarg1);
|
||||||
|
|
||||||
|
[DllImport("tinyWRAP", EntryPoint="CSharp_SipUri_getParamValue")]
|
||||||
|
public static extern string SipUri_getParamValue(HandleRef jarg1, string jarg2);
|
||||||
|
|
||||||
[DllImport("tinyWRAP", EntryPoint="CSharp_new_SipMessage")]
|
[DllImport("tinyWRAP", EntryPoint="CSharp_new_SipMessage")]
|
||||||
public static extern IntPtr new_SipMessage();
|
public static extern IntPtr new_SipMessage();
|
||||||
|
|
||||||
|
@ -733,14 +754,20 @@ class tinyWRAPPINVOKE {
|
||||||
[DllImport("tinyWRAP", EntryPoint="CSharp_SipStack_setPassword")]
|
[DllImport("tinyWRAP", EntryPoint="CSharp_SipStack_setPassword")]
|
||||||
public static extern bool SipStack_setPassword(HandleRef jarg1, string jarg2);
|
public static extern bool SipStack_setPassword(HandleRef jarg1, string jarg2);
|
||||||
|
|
||||||
|
[DllImport("tinyWRAP", EntryPoint="CSharp_SipStack_setAMF")]
|
||||||
|
public static extern bool SipStack_setAMF(HandleRef jarg1, string jarg2);
|
||||||
|
|
||||||
|
[DllImport("tinyWRAP", EntryPoint="CSharp_SipStack_setOperatorId")]
|
||||||
|
public static extern bool SipStack_setOperatorId(HandleRef jarg1, string jarg2);
|
||||||
|
|
||||||
[DllImport("tinyWRAP", EntryPoint="CSharp_SipStack_setProxyCSCF")]
|
[DllImport("tinyWRAP", EntryPoint="CSharp_SipStack_setProxyCSCF")]
|
||||||
public static extern bool SipStack_setProxyCSCF(HandleRef jarg1, string jarg2, uint jarg3, string jarg4, string jarg5);
|
public static extern bool SipStack_setProxyCSCF(HandleRef jarg1, string jarg2, ushort jarg3, string jarg4, string jarg5);
|
||||||
|
|
||||||
[DllImport("tinyWRAP", EntryPoint="CSharp_SipStack_setLocalIP")]
|
[DllImport("tinyWRAP", EntryPoint="CSharp_SipStack_setLocalIP")]
|
||||||
public static extern bool SipStack_setLocalIP(HandleRef jarg1, string jarg2);
|
public static extern bool SipStack_setLocalIP(HandleRef jarg1, string jarg2);
|
||||||
|
|
||||||
[DllImport("tinyWRAP", EntryPoint="CSharp_SipStack_setLocalPort")]
|
[DllImport("tinyWRAP", EntryPoint="CSharp_SipStack_setLocalPort")]
|
||||||
public static extern bool SipStack_setLocalPort(HandleRef jarg1, uint jarg2);
|
public static extern bool SipStack_setLocalPort(HandleRef jarg1, ushort jarg2);
|
||||||
|
|
||||||
[DllImport("tinyWRAP", EntryPoint="CSharp_SipStack_setEarlyIMS")]
|
[DllImport("tinyWRAP", EntryPoint="CSharp_SipStack_setEarlyIMS")]
|
||||||
public static extern bool SipStack_setEarlyIMS(HandleRef jarg1, bool jarg2);
|
public static extern bool SipStack_setEarlyIMS(HandleRef jarg1, bool jarg2);
|
||||||
|
@ -757,11 +784,20 @@ class tinyWRAPPINVOKE {
|
||||||
[DllImport("tinyWRAP", EntryPoint="CSharp_SipStack_setAoR")]
|
[DllImport("tinyWRAP", EntryPoint="CSharp_SipStack_setAoR")]
|
||||||
public static extern bool SipStack_setAoR(HandleRef jarg1, string jarg2, int jarg3);
|
public static extern bool SipStack_setAoR(HandleRef jarg1, string jarg2, int jarg3);
|
||||||
|
|
||||||
|
[DllImport("tinyWRAP", EntryPoint="CSharp_SipStack_setSTUNServer")]
|
||||||
|
public static extern bool SipStack_setSTUNServer(HandleRef jarg1, string jarg2, ushort jarg3);
|
||||||
|
|
||||||
|
[DllImport("tinyWRAP", EntryPoint="CSharp_SipStack_setSTUNCred")]
|
||||||
|
public static extern bool SipStack_setSTUNCred(HandleRef jarg1, string jarg2, string jarg3);
|
||||||
|
|
||||||
[DllImport("tinyWRAP", EntryPoint="CSharp_SipStack_dnsENUM")]
|
[DllImport("tinyWRAP", EntryPoint="CSharp_SipStack_dnsENUM")]
|
||||||
public static extern string SipStack_dnsENUM(HandleRef jarg1, string jarg2, string jarg3, string jarg4);
|
public static extern string SipStack_dnsENUM(HandleRef jarg1, string jarg2, string jarg3, string jarg4);
|
||||||
|
|
||||||
[DllImport("tinyWRAP", EntryPoint="CSharp_SipStack_dnsNaptrSrv")]
|
[DllImport("tinyWRAP", EntryPoint="CSharp_SipStack_dnsNaptrSrv")]
|
||||||
public static extern string SipStack_dnsNaptrSrv(HandleRef jarg1, string jarg2, string jarg3, out short jarg4);
|
public static extern string SipStack_dnsNaptrSrv(HandleRef jarg1, string jarg2, string jarg3, out ushort jarg4);
|
||||||
|
|
||||||
|
[DllImport("tinyWRAP", EntryPoint="CSharp_SipStack_dnsSrv")]
|
||||||
|
public static extern string SipStack_dnsSrv(HandleRef jarg1, string jarg2, out ushort jarg3);
|
||||||
|
|
||||||
[DllImport("tinyWRAP", EntryPoint="CSharp_SipStack_isValid")]
|
[DllImport("tinyWRAP", EntryPoint="CSharp_SipStack_isValid")]
|
||||||
public static extern bool SipStack_isValid(HandleRef jarg1);
|
public static extern bool SipStack_isValid(HandleRef jarg1);
|
||||||
|
@ -937,6 +973,27 @@ class tinyWRAPPINVOKE {
|
||||||
[DllImport("tinyWRAP", EntryPoint="CSharp_XcapStack_stop")]
|
[DllImport("tinyWRAP", EntryPoint="CSharp_XcapStack_stop")]
|
||||||
public static extern bool XcapStack_stop(HandleRef jarg1);
|
public static extern bool XcapStack_stop(HandleRef jarg1);
|
||||||
|
|
||||||
|
[DllImport("tinyWRAP", EntryPoint="CSharp_new_RPData")]
|
||||||
|
public static extern IntPtr new_RPData();
|
||||||
|
|
||||||
|
[DllImport("tinyWRAP", EntryPoint="CSharp_delete_RPData")]
|
||||||
|
public static extern void delete_RPData(HandleRef jarg1);
|
||||||
|
|
||||||
|
[DllImport("tinyWRAP", EntryPoint="CSharp_RPData_getType")]
|
||||||
|
public static extern int RPData_getType(HandleRef jarg1);
|
||||||
|
|
||||||
|
[DllImport("tinyWRAP", EntryPoint="CSharp_RPData_getPayloadLength")]
|
||||||
|
public static extern uint RPData_getPayloadLength(HandleRef jarg1);
|
||||||
|
|
||||||
|
[DllImport("tinyWRAP", EntryPoint="CSharp_RPData_getPayload")]
|
||||||
|
public static extern uint RPData_getPayload(HandleRef jarg1, byte[] jarg2, uint jarg3);
|
||||||
|
|
||||||
|
[DllImport("tinyWRAP", EntryPoint="CSharp_SMSEncoder_encodeSubmit")]
|
||||||
|
public static extern IntPtr SMSEncoder_encodeSubmit(int jarg1, string jarg2, string jarg3, string jarg4);
|
||||||
|
|
||||||
|
[DllImport("tinyWRAP", EntryPoint="CSharp_delete_SMSEncoder")]
|
||||||
|
public static extern void delete_SMSEncoder(HandleRef jarg1);
|
||||||
|
|
||||||
[DllImport("tinyWRAP", EntryPoint="CSharp_DialogEventUpcast")]
|
[DllImport("tinyWRAP", EntryPoint="CSharp_DialogEventUpcast")]
|
||||||
public static extern IntPtr DialogEventUpcast(IntPtr objectRef);
|
public static extern IntPtr DialogEventUpcast(IntPtr objectRef);
|
||||||
|
|
||||||
|
|
|
@ -350,6 +350,9 @@ namespace Swig {
|
||||||
#include "Xcap.h"
|
#include "Xcap.h"
|
||||||
|
|
||||||
|
|
||||||
|
#include "SMSEncoder.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* ---------------------------------------------------
|
/* ---------------------------------------------------
|
||||||
* C++ director class methods
|
* C++ director class methods
|
||||||
|
@ -1004,6 +1007,92 @@ SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SipUri_isValid__SWIG_1(void * jarg1)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SWIGEXPORT char * SWIGSTDCALL CSharp_SipUri_getScheme(void * jarg1) {
|
||||||
|
char * jresult ;
|
||||||
|
SipUri *arg1 = (SipUri *) 0 ;
|
||||||
|
char *result = 0 ;
|
||||||
|
|
||||||
|
arg1 = (SipUri *)jarg1;
|
||||||
|
result = (char *)(arg1)->getScheme();
|
||||||
|
jresult = SWIG_csharp_string_callback((const char *)result);
|
||||||
|
return jresult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SWIGEXPORT char * SWIGSTDCALL CSharp_SipUri_getHost(void * jarg1) {
|
||||||
|
char * jresult ;
|
||||||
|
SipUri *arg1 = (SipUri *) 0 ;
|
||||||
|
char *result = 0 ;
|
||||||
|
|
||||||
|
arg1 = (SipUri *)jarg1;
|
||||||
|
result = (char *)(arg1)->getHost();
|
||||||
|
jresult = SWIG_csharp_string_callback((const char *)result);
|
||||||
|
return jresult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SWIGEXPORT unsigned short SWIGSTDCALL CSharp_SipUri_getPort(void * jarg1) {
|
||||||
|
unsigned short jresult ;
|
||||||
|
SipUri *arg1 = (SipUri *) 0 ;
|
||||||
|
unsigned short result;
|
||||||
|
|
||||||
|
arg1 = (SipUri *)jarg1;
|
||||||
|
result = (unsigned short)(arg1)->getPort();
|
||||||
|
jresult = result;
|
||||||
|
return jresult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SWIGEXPORT char * SWIGSTDCALL CSharp_SipUri_getUserName(void * jarg1) {
|
||||||
|
char * jresult ;
|
||||||
|
SipUri *arg1 = (SipUri *) 0 ;
|
||||||
|
char *result = 0 ;
|
||||||
|
|
||||||
|
arg1 = (SipUri *)jarg1;
|
||||||
|
result = (char *)(arg1)->getUserName();
|
||||||
|
jresult = SWIG_csharp_string_callback((const char *)result);
|
||||||
|
return jresult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SWIGEXPORT char * SWIGSTDCALL CSharp_SipUri_getPassword(void * jarg1) {
|
||||||
|
char * jresult ;
|
||||||
|
SipUri *arg1 = (SipUri *) 0 ;
|
||||||
|
char *result = 0 ;
|
||||||
|
|
||||||
|
arg1 = (SipUri *)jarg1;
|
||||||
|
result = (char *)(arg1)->getPassword();
|
||||||
|
jresult = SWIG_csharp_string_callback((const char *)result);
|
||||||
|
return jresult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SWIGEXPORT char * SWIGSTDCALL CSharp_SipUri_getDisplayName(void * jarg1) {
|
||||||
|
char * jresult ;
|
||||||
|
SipUri *arg1 = (SipUri *) 0 ;
|
||||||
|
char *result = 0 ;
|
||||||
|
|
||||||
|
arg1 = (SipUri *)jarg1;
|
||||||
|
result = (char *)(arg1)->getDisplayName();
|
||||||
|
jresult = SWIG_csharp_string_callback((const char *)result);
|
||||||
|
return jresult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SWIGEXPORT char * SWIGSTDCALL CSharp_SipUri_getParamValue(void * jarg1, char * jarg2) {
|
||||||
|
char * jresult ;
|
||||||
|
SipUri *arg1 = (SipUri *) 0 ;
|
||||||
|
char *arg2 = (char *) 0 ;
|
||||||
|
char *result = 0 ;
|
||||||
|
|
||||||
|
arg1 = (SipUri *)jarg1;
|
||||||
|
arg2 = (char *)jarg2;
|
||||||
|
result = (char *)(arg1)->getParamValue((char const *)arg2);
|
||||||
|
jresult = SWIG_csharp_string_callback((const char *)result);
|
||||||
|
return jresult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
SWIGEXPORT void * SWIGSTDCALL CSharp_new_SipMessage() {
|
SWIGEXPORT void * SWIGSTDCALL CSharp_new_SipMessage() {
|
||||||
void * jresult ;
|
void * jresult ;
|
||||||
SipMessage *result = 0 ;
|
SipMessage *result = 0 ;
|
||||||
|
@ -3131,18 +3220,46 @@ SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SipStack_setPassword(void * jarg1, ch
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SipStack_setProxyCSCF(void * jarg1, char * jarg2, unsigned int jarg3, char * jarg4, char * jarg5) {
|
SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SipStack_setAMF(void * jarg1, char * jarg2) {
|
||||||
unsigned int jresult ;
|
unsigned int jresult ;
|
||||||
SipStack *arg1 = (SipStack *) 0 ;
|
SipStack *arg1 = (SipStack *) 0 ;
|
||||||
char *arg2 = (char *) 0 ;
|
char *arg2 = (char *) 0 ;
|
||||||
unsigned int arg3 ;
|
bool result;
|
||||||
|
|
||||||
|
arg1 = (SipStack *)jarg1;
|
||||||
|
arg2 = (char *)jarg2;
|
||||||
|
result = (bool)(arg1)->setAMF((char const *)arg2);
|
||||||
|
jresult = result;
|
||||||
|
return jresult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SipStack_setOperatorId(void * jarg1, char * jarg2) {
|
||||||
|
unsigned int jresult ;
|
||||||
|
SipStack *arg1 = (SipStack *) 0 ;
|
||||||
|
char *arg2 = (char *) 0 ;
|
||||||
|
bool result;
|
||||||
|
|
||||||
|
arg1 = (SipStack *)jarg1;
|
||||||
|
arg2 = (char *)jarg2;
|
||||||
|
result = (bool)(arg1)->setOperatorId((char const *)arg2);
|
||||||
|
jresult = result;
|
||||||
|
return jresult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SipStack_setProxyCSCF(void * jarg1, char * jarg2, unsigned short jarg3, char * jarg4, char * jarg5) {
|
||||||
|
unsigned int jresult ;
|
||||||
|
SipStack *arg1 = (SipStack *) 0 ;
|
||||||
|
char *arg2 = (char *) 0 ;
|
||||||
|
unsigned short arg3 ;
|
||||||
char *arg4 = (char *) 0 ;
|
char *arg4 = (char *) 0 ;
|
||||||
char *arg5 = (char *) 0 ;
|
char *arg5 = (char *) 0 ;
|
||||||
bool result;
|
bool result;
|
||||||
|
|
||||||
arg1 = (SipStack *)jarg1;
|
arg1 = (SipStack *)jarg1;
|
||||||
arg2 = (char *)jarg2;
|
arg2 = (char *)jarg2;
|
||||||
arg3 = (unsigned int)jarg3;
|
arg3 = (unsigned short)jarg3;
|
||||||
arg4 = (char *)jarg4;
|
arg4 = (char *)jarg4;
|
||||||
arg5 = (char *)jarg5;
|
arg5 = (char *)jarg5;
|
||||||
result = (bool)(arg1)->setProxyCSCF((char const *)arg2,arg3,(char const *)arg4,(char const *)arg5);
|
result = (bool)(arg1)->setProxyCSCF((char const *)arg2,arg3,(char const *)arg4,(char const *)arg5);
|
||||||
|
@ -3165,14 +3282,14 @@ SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SipStack_setLocalIP(void * jarg1, cha
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SipStack_setLocalPort(void * jarg1, unsigned int jarg2) {
|
SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SipStack_setLocalPort(void * jarg1, unsigned short jarg2) {
|
||||||
unsigned int jresult ;
|
unsigned int jresult ;
|
||||||
SipStack *arg1 = (SipStack *) 0 ;
|
SipStack *arg1 = (SipStack *) 0 ;
|
||||||
unsigned int arg2 ;
|
unsigned short arg2 ;
|
||||||
bool result;
|
bool result;
|
||||||
|
|
||||||
arg1 = (SipStack *)jarg1;
|
arg1 = (SipStack *)jarg1;
|
||||||
arg2 = (unsigned int)jarg2;
|
arg2 = (unsigned short)jarg2;
|
||||||
result = (bool)(arg1)->setLocalPort(arg2);
|
result = (bool)(arg1)->setLocalPort(arg2);
|
||||||
jresult = result;
|
jresult = result;
|
||||||
return jresult;
|
return jresult;
|
||||||
|
@ -3253,6 +3370,38 @@ SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SipStack_setAoR(void * jarg1, char *
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SipStack_setSTUNServer(void * jarg1, char * jarg2, unsigned short jarg3) {
|
||||||
|
unsigned int jresult ;
|
||||||
|
SipStack *arg1 = (SipStack *) 0 ;
|
||||||
|
char *arg2 = (char *) 0 ;
|
||||||
|
unsigned short arg3 ;
|
||||||
|
bool result;
|
||||||
|
|
||||||
|
arg1 = (SipStack *)jarg1;
|
||||||
|
arg2 = (char *)jarg2;
|
||||||
|
arg3 = (unsigned short)jarg3;
|
||||||
|
result = (bool)(arg1)->setSTUNServer((char const *)arg2,arg3);
|
||||||
|
jresult = result;
|
||||||
|
return jresult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SipStack_setSTUNCred(void * jarg1, char * jarg2, char * jarg3) {
|
||||||
|
unsigned int jresult ;
|
||||||
|
SipStack *arg1 = (SipStack *) 0 ;
|
||||||
|
char *arg2 = (char *) 0 ;
|
||||||
|
char *arg3 = (char *) 0 ;
|
||||||
|
bool result;
|
||||||
|
|
||||||
|
arg1 = (SipStack *)jarg1;
|
||||||
|
arg2 = (char *)jarg2;
|
||||||
|
arg3 = (char *)jarg3;
|
||||||
|
result = (bool)(arg1)->setSTUNCred((char const *)arg2,(char const *)arg3);
|
||||||
|
jresult = result;
|
||||||
|
return jresult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
SWIGEXPORT char * SWIGSTDCALL CSharp_SipStack_dnsENUM(void * jarg1, char * jarg2, char * jarg3, char * jarg4) {
|
SWIGEXPORT char * SWIGSTDCALL CSharp_SipStack_dnsENUM(void * jarg1, char * jarg2, char * jarg3, char * jarg4) {
|
||||||
char * jresult ;
|
char * jresult ;
|
||||||
SipStack *arg1 = (SipStack *) 0 ;
|
SipStack *arg1 = (SipStack *) 0 ;
|
||||||
|
@ -3272,18 +3421,18 @@ SWIGEXPORT char * SWIGSTDCALL CSharp_SipStack_dnsENUM(void * jarg1, char * jarg2
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
SWIGEXPORT char * SWIGSTDCALL CSharp_SipStack_dnsNaptrSrv(void * jarg1, char * jarg2, char * jarg3, short * jarg4) {
|
SWIGEXPORT char * SWIGSTDCALL CSharp_SipStack_dnsNaptrSrv(void * jarg1, char * jarg2, char * jarg3, unsigned short * jarg4) {
|
||||||
char * jresult ;
|
char * jresult ;
|
||||||
SipStack *arg1 = (SipStack *) 0 ;
|
SipStack *arg1 = (SipStack *) 0 ;
|
||||||
char *arg2 = (char *) 0 ;
|
char *arg2 = (char *) 0 ;
|
||||||
char *arg3 = (char *) 0 ;
|
char *arg3 = (char *) 0 ;
|
||||||
short *arg4 = (short *) 0 ;
|
unsigned short *arg4 = (unsigned short *) 0 ;
|
||||||
char *result = 0 ;
|
char *result = 0 ;
|
||||||
|
|
||||||
arg1 = (SipStack *)jarg1;
|
arg1 = (SipStack *)jarg1;
|
||||||
arg2 = (char *)jarg2;
|
arg2 = (char *)jarg2;
|
||||||
arg3 = (char *)jarg3;
|
arg3 = (char *)jarg3;
|
||||||
arg4 = (short *)jarg4;
|
arg4 = (unsigned short *)jarg4;
|
||||||
result = (char *)(arg1)->dnsNaptrSrv((char const *)arg2,(char const *)arg3,arg4);
|
result = (char *)(arg1)->dnsNaptrSrv((char const *)arg2,(char const *)arg3,arg4);
|
||||||
jresult = SWIG_csharp_string_callback((const char *)result);
|
jresult = SWIG_csharp_string_callback((const char *)result);
|
||||||
delete [] result;
|
delete [] result;
|
||||||
|
@ -3291,6 +3440,23 @@ SWIGEXPORT char * SWIGSTDCALL CSharp_SipStack_dnsNaptrSrv(void * jarg1, char * j
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SWIGEXPORT char * SWIGSTDCALL CSharp_SipStack_dnsSrv(void * jarg1, char * jarg2, unsigned short * jarg3) {
|
||||||
|
char * jresult ;
|
||||||
|
SipStack *arg1 = (SipStack *) 0 ;
|
||||||
|
char *arg2 = (char *) 0 ;
|
||||||
|
unsigned short *arg3 = (unsigned short *) 0 ;
|
||||||
|
char *result = 0 ;
|
||||||
|
|
||||||
|
arg1 = (SipStack *)jarg1;
|
||||||
|
arg2 = (char *)jarg2;
|
||||||
|
arg3 = (unsigned short *)jarg3;
|
||||||
|
result = (char *)(arg1)->dnsSrv((char const *)arg2,arg3);
|
||||||
|
jresult = SWIG_csharp_string_callback((const char *)result);
|
||||||
|
delete [] result;
|
||||||
|
return jresult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SipStack_isValid(void * jarg1) {
|
SWIGEXPORT unsigned int SWIGSTDCALL CSharp_SipStack_isValid(void * jarg1) {
|
||||||
unsigned int jresult ;
|
unsigned int jresult ;
|
||||||
SipStack *arg1 = (SipStack *) 0 ;
|
SipStack *arg1 = (SipStack *) 0 ;
|
||||||
|
@ -4001,6 +4167,90 @@ SWIGEXPORT unsigned int SWIGSTDCALL CSharp_XcapStack_stop(void * jarg1) {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SWIGEXPORT void * SWIGSTDCALL CSharp_new_RPData() {
|
||||||
|
void * jresult ;
|
||||||
|
RPData *result = 0 ;
|
||||||
|
|
||||||
|
result = (RPData *)new RPData();
|
||||||
|
jresult = (void *)result;
|
||||||
|
return jresult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SWIGEXPORT void SWIGSTDCALL CSharp_delete_RPData(void * jarg1) {
|
||||||
|
RPData *arg1 = (RPData *) 0 ;
|
||||||
|
|
||||||
|
arg1 = (RPData *)jarg1;
|
||||||
|
delete arg1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SWIGEXPORT int SWIGSTDCALL CSharp_RPData_getType(void * jarg1) {
|
||||||
|
int jresult ;
|
||||||
|
RPData *arg1 = (RPData *) 0 ;
|
||||||
|
twrap_rpdata_type_t result;
|
||||||
|
|
||||||
|
arg1 = (RPData *)jarg1;
|
||||||
|
result = (twrap_rpdata_type_t)(arg1)->getType();
|
||||||
|
jresult = result;
|
||||||
|
return jresult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SWIGEXPORT unsigned int SWIGSTDCALL CSharp_RPData_getPayloadLength(void * jarg1) {
|
||||||
|
unsigned int jresult ;
|
||||||
|
RPData *arg1 = (RPData *) 0 ;
|
||||||
|
unsigned int result;
|
||||||
|
|
||||||
|
arg1 = (RPData *)jarg1;
|
||||||
|
result = (unsigned int)(arg1)->getPayloadLength();
|
||||||
|
jresult = result;
|
||||||
|
return jresult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SWIGEXPORT unsigned int SWIGSTDCALL CSharp_RPData_getPayload(void * jarg1, void * jarg2, unsigned int jarg3) {
|
||||||
|
unsigned int jresult ;
|
||||||
|
RPData *arg1 = (RPData *) 0 ;
|
||||||
|
void *arg2 = (void *) 0 ;
|
||||||
|
unsigned int arg3 ;
|
||||||
|
unsigned int result;
|
||||||
|
|
||||||
|
arg1 = (RPData *)jarg1;
|
||||||
|
arg2 = jarg2;
|
||||||
|
arg3 = (unsigned int)jarg3;
|
||||||
|
result = (unsigned int)(arg1)->getPayload(arg2,arg3);
|
||||||
|
jresult = result;
|
||||||
|
return jresult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SWIGEXPORT void * SWIGSTDCALL CSharp_SMSEncoder_encodeSubmit(int jarg1, char * jarg2, char * jarg3, char * jarg4) {
|
||||||
|
void * jresult ;
|
||||||
|
int arg1 ;
|
||||||
|
char *arg2 = (char *) 0 ;
|
||||||
|
char *arg3 = (char *) 0 ;
|
||||||
|
char *arg4 = (char *) 0 ;
|
||||||
|
RPData *result = 0 ;
|
||||||
|
|
||||||
|
arg1 = (int)jarg1;
|
||||||
|
arg2 = (char *)jarg2;
|
||||||
|
arg3 = (char *)jarg3;
|
||||||
|
arg4 = (char *)jarg4;
|
||||||
|
result = (RPData *)SMSEncoder::encodeSubmit(arg1,(char const *)arg2,(char const *)arg3,(char const *)arg4);
|
||||||
|
jresult = (void *)result;
|
||||||
|
return jresult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SWIGEXPORT void SWIGSTDCALL CSharp_delete_SMSEncoder(void * jarg1) {
|
||||||
|
SMSEncoder *arg1 = (SMSEncoder *) 0 ;
|
||||||
|
|
||||||
|
arg1 = (SMSEncoder *)jarg1;
|
||||||
|
delete arg1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
SWIGEXPORT SipEvent * SWIGSTDCALL CSharp_DialogEventUpcast(DialogEvent *objectRef) {
|
SWIGEXPORT SipEvent * SWIGSTDCALL CSharp_DialogEventUpcast(DialogEvent *objectRef) {
|
||||||
return (SipEvent *)objectRef;
|
return (SipEvent *)objectRef;
|
||||||
}
|
}
|
||||||
|
|
|
@ -14,6 +14,7 @@ public enum tsip_invite_event_type_t {
|
||||||
tsip_o_ect_ok,
|
tsip_o_ect_ok,
|
||||||
tsip_o_ect_nok,
|
tsip_o_ect_nok,
|
||||||
tsip_i_ect,
|
tsip_i_ect,
|
||||||
|
tsip_m_early_media,
|
||||||
tsip_m_local_hold_ok,
|
tsip_m_local_hold_ok,
|
||||||
tsip_m_local_hold_nok,
|
tsip_m_local_hold_nok,
|
||||||
tsip_m_local_resume_ok,
|
tsip_m_local_resume_ok,
|
||||||
|
|
|
@ -0,0 +1,16 @@
|
||||||
|
/* ----------------------------------------------------------------------------
|
||||||
|
* This file was automatically generated by SWIG (http://www.swig.org).
|
||||||
|
* Version 1.3.39
|
||||||
|
*
|
||||||
|
* Do not make changes to this file unless you know what you are doing--modify
|
||||||
|
* the SWIG interface file instead.
|
||||||
|
* ----------------------------------------------------------------------------- */
|
||||||
|
|
||||||
|
|
||||||
|
public enum twrap_rpdata_type_t {
|
||||||
|
twrap_rpdata_type_sms_none,
|
||||||
|
twrap_rpdata_type_sms_submit,
|
||||||
|
twrap_rpdata_type_sms_deliver,
|
||||||
|
twrap_rpdata_type_sms_status_report,
|
||||||
|
twrap_rpdata_type_sms_command
|
||||||
|
}
|
|
@ -0,0 +1,52 @@
|
||||||
|
/* ----------------------------------------------------------------------------
|
||||||
|
* This file was automatically generated by SWIG (http://www.swig.org).
|
||||||
|
* Version 1.3.39
|
||||||
|
*
|
||||||
|
* 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 RPData {
|
||||||
|
private long swigCPtr;
|
||||||
|
protected boolean swigCMemOwn;
|
||||||
|
|
||||||
|
protected RPData(long cPtr, boolean cMemoryOwn) {
|
||||||
|
swigCMemOwn = cMemoryOwn;
|
||||||
|
swigCPtr = cPtr;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected static long getCPtr(RPData obj) {
|
||||||
|
return (obj == null) ? 0 : obj.swigCPtr;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void finalize() {
|
||||||
|
delete();
|
||||||
|
}
|
||||||
|
|
||||||
|
public synchronized void delete() {
|
||||||
|
if(swigCPtr != 0 && swigCMemOwn) {
|
||||||
|
swigCMemOwn = false;
|
||||||
|
tinyWRAPJNI.delete_RPData(swigCPtr);
|
||||||
|
}
|
||||||
|
swigCPtr = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public RPData() {
|
||||||
|
this(tinyWRAPJNI.new_RPData(), true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public twrap_rpdata_type_t getType() {
|
||||||
|
return twrap_rpdata_type_t.swigToEnum(tinyWRAPJNI.RPData_getType(swigCPtr, this));
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getPayloadLength() {
|
||||||
|
return tinyWRAPJNI.RPData_getPayloadLength(swigCPtr, this);
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getPayload(java.nio.ByteBuffer output, long maxsize) {
|
||||||
|
return tinyWRAPJNI.RPData_getPayload(swigCPtr, this, output, maxsize);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,41 @@
|
||||||
|
/* ----------------------------------------------------------------------------
|
||||||
|
* This file was automatically generated by SWIG (http://www.swig.org).
|
||||||
|
* Version 1.3.39
|
||||||
|
*
|
||||||
|
* 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 SMSEncoder {
|
||||||
|
private long swigCPtr;
|
||||||
|
protected boolean swigCMemOwn;
|
||||||
|
|
||||||
|
protected SMSEncoder(long cPtr, boolean cMemoryOwn) {
|
||||||
|
swigCMemOwn = cMemoryOwn;
|
||||||
|
swigCPtr = cPtr;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected static long getCPtr(SMSEncoder obj) {
|
||||||
|
return (obj == null) ? 0 : obj.swigCPtr;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void finalize() {
|
||||||
|
delete();
|
||||||
|
}
|
||||||
|
|
||||||
|
public synchronized void delete() {
|
||||||
|
if(swigCPtr != 0 && swigCMemOwn) {
|
||||||
|
swigCMemOwn = false;
|
||||||
|
tinyWRAPJNI.delete_SMSEncoder(swigCPtr);
|
||||||
|
}
|
||||||
|
swigCPtr = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static RPData encodeSubmit(int mr, String smsc, String destination, String ascii) {
|
||||||
|
long cPtr = tinyWRAPJNI.SMSEncoder_encodeSubmit(mr, smsc, destination, ascii);
|
||||||
|
return (cPtr == 0) ? null : new RPData(cPtr, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -61,7 +61,15 @@ public class SipStack extends SafeObject {
|
||||||
return tinyWRAPJNI.SipStack_setPassword(swigCPtr, this, password);
|
return tinyWRAPJNI.SipStack_setPassword(swigCPtr, this, password);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean setProxyCSCF(String fqdn, long port, String transport, String ipversion) {
|
public boolean setAMF(String amf) {
|
||||||
|
return tinyWRAPJNI.SipStack_setAMF(swigCPtr, this, amf);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean setOperatorId(String opid) {
|
||||||
|
return tinyWRAPJNI.SipStack_setOperatorId(swigCPtr, this, opid);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean setProxyCSCF(String fqdn, int port, String transport, String ipversion) {
|
||||||
return tinyWRAPJNI.SipStack_setProxyCSCF(swigCPtr, this, fqdn, port, transport, ipversion);
|
return tinyWRAPJNI.SipStack_setProxyCSCF(swigCPtr, this, fqdn, port, transport, ipversion);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -69,7 +77,7 @@ public class SipStack extends SafeObject {
|
||||||
return tinyWRAPJNI.SipStack_setLocalIP(swigCPtr, this, ip);
|
return tinyWRAPJNI.SipStack_setLocalIP(swigCPtr, this, ip);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean setLocalPort(long port) {
|
public boolean setLocalPort(int port) {
|
||||||
return tinyWRAPJNI.SipStack_setLocalPort(swigCPtr, this, port);
|
return tinyWRAPJNI.SipStack_setLocalPort(swigCPtr, this, port);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -93,14 +101,26 @@ public class SipStack extends SafeObject {
|
||||||
return tinyWRAPJNI.SipStack_setAoR(swigCPtr, this, ip, port);
|
return tinyWRAPJNI.SipStack_setAoR(swigCPtr, this, ip, port);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean setSTUNServer(String ip, int port) {
|
||||||
|
return tinyWRAPJNI.SipStack_setSTUNServer(swigCPtr, this, ip, port);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean setSTUNCred(String login, String password) {
|
||||||
|
return tinyWRAPJNI.SipStack_setSTUNCred(swigCPtr, this, login, password);
|
||||||
|
}
|
||||||
|
|
||||||
public String dnsENUM(String service, String e164num, String domain) {
|
public String dnsENUM(String service, String e164num, String domain) {
|
||||||
return tinyWRAPJNI.SipStack_dnsENUM(swigCPtr, this, service, e164num, domain);
|
return tinyWRAPJNI.SipStack_dnsENUM(swigCPtr, this, service, e164num, domain);
|
||||||
}
|
}
|
||||||
|
|
||||||
public String dnsNaptrSrv(String domain, String service, short[] OUTPUT) {
|
public String dnsNaptrSrv(String domain, String service, int[] OUTPUT) {
|
||||||
return tinyWRAPJNI.SipStack_dnsNaptrSrv(swigCPtr, this, domain, service, OUTPUT);
|
return tinyWRAPJNI.SipStack_dnsNaptrSrv(swigCPtr, this, domain, service, OUTPUT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String dnsSrv(String service, int[] OUTPUT) {
|
||||||
|
return tinyWRAPJNI.SipStack_dnsSrv(swigCPtr, this, service, OUTPUT);
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isValid() {
|
public boolean isValid() {
|
||||||
return tinyWRAPJNI.SipStack_isValid(swigCPtr, this);
|
return tinyWRAPJNI.SipStack_isValid(swigCPtr, this);
|
||||||
}
|
}
|
||||||
|
|
|
@ -45,4 +45,32 @@ public class SipUri {
|
||||||
return tinyWRAPJNI.SipUri_isValid__SWIG_1(swigCPtr, this);
|
return tinyWRAPJNI.SipUri_isValid__SWIG_1(swigCPtr, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getScheme() {
|
||||||
|
return tinyWRAPJNI.SipUri_getScheme(swigCPtr, this);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getHost() {
|
||||||
|
return tinyWRAPJNI.SipUri_getHost(swigCPtr, this);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getPort() {
|
||||||
|
return tinyWRAPJNI.SipUri_getPort(swigCPtr, this);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getUserName() {
|
||||||
|
return tinyWRAPJNI.SipUri_getUserName(swigCPtr, this);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getPassword() {
|
||||||
|
return tinyWRAPJNI.SipUri_getPassword(swigCPtr, this);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDisplayName() {
|
||||||
|
return tinyWRAPJNI.SipUri_getDisplayName(swigCPtr, this);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getParamValue(String pname) {
|
||||||
|
return tinyWRAPJNI.SipUri_getParamValue(swigCPtr, this, pname);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -0,0 +1,52 @@
|
||||||
|
/* ----------------------------------------------------------------------------
|
||||||
|
* This file was automatically generated by SWIG (http://www.swig.org).
|
||||||
|
* Version 1.3.39
|
||||||
|
*
|
||||||
|
* 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 RPData {
|
||||||
|
private long swigCPtr;
|
||||||
|
protected boolean swigCMemOwn;
|
||||||
|
|
||||||
|
protected RPData(long cPtr, boolean cMemoryOwn) {
|
||||||
|
swigCMemOwn = cMemoryOwn;
|
||||||
|
swigCPtr = cPtr;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected static long getCPtr(RPData obj) {
|
||||||
|
return (obj == null) ? 0 : obj.swigCPtr;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void finalize() {
|
||||||
|
delete();
|
||||||
|
}
|
||||||
|
|
||||||
|
public synchronized void delete() {
|
||||||
|
if(swigCPtr != 0 && swigCMemOwn) {
|
||||||
|
swigCMemOwn = false;
|
||||||
|
tinyWRAPJNI.delete_RPData(swigCPtr);
|
||||||
|
}
|
||||||
|
swigCPtr = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public RPData() {
|
||||||
|
this(tinyWRAPJNI.new_RPData(), true);
|
||||||
|
}
|
||||||
|
|
||||||
|
public twrap_rpdata_type_t getType() {
|
||||||
|
return twrap_rpdata_type_t.swigToEnum(tinyWRAPJNI.RPData_getType(swigCPtr, this));
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getPayloadLength() {
|
||||||
|
return tinyWRAPJNI.RPData_getPayloadLength(swigCPtr, this);
|
||||||
|
}
|
||||||
|
|
||||||
|
public long getPayload(java.nio.ByteBuffer output, long maxsize) {
|
||||||
|
return tinyWRAPJNI.RPData_getPayload(swigCPtr, this, output, maxsize);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -0,0 +1,41 @@
|
||||||
|
/* ----------------------------------------------------------------------------
|
||||||
|
* This file was automatically generated by SWIG (http://www.swig.org).
|
||||||
|
* Version 1.3.39
|
||||||
|
*
|
||||||
|
* 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 SMSEncoder {
|
||||||
|
private long swigCPtr;
|
||||||
|
protected boolean swigCMemOwn;
|
||||||
|
|
||||||
|
protected SMSEncoder(long cPtr, boolean cMemoryOwn) {
|
||||||
|
swigCMemOwn = cMemoryOwn;
|
||||||
|
swigCPtr = cPtr;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected static long getCPtr(SMSEncoder obj) {
|
||||||
|
return (obj == null) ? 0 : obj.swigCPtr;
|
||||||
|
}
|
||||||
|
|
||||||
|
protected void finalize() {
|
||||||
|
delete();
|
||||||
|
}
|
||||||
|
|
||||||
|
public synchronized void delete() {
|
||||||
|
if(swigCPtr != 0 && swigCMemOwn) {
|
||||||
|
swigCMemOwn = false;
|
||||||
|
tinyWRAPJNI.delete_SMSEncoder(swigCPtr);
|
||||||
|
}
|
||||||
|
swigCPtr = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static RPData encodeSubmit(int mr, String smsc, String destination, String ascii) {
|
||||||
|
long cPtr = tinyWRAPJNI.SMSEncoder_encodeSubmit(mr, smsc, destination, ascii);
|
||||||
|
return (cPtr == 0) ? null : new RPData(cPtr, true);
|
||||||
|
}
|
||||||
|
|
||||||
|
}
|
|
@ -61,7 +61,15 @@ public class SipStack extends SafeObject {
|
||||||
return tinyWRAPJNI.SipStack_setPassword(swigCPtr, this, password);
|
return tinyWRAPJNI.SipStack_setPassword(swigCPtr, this, password);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean setProxyCSCF(String fqdn, long port, String transport, String ipversion) {
|
public boolean setAMF(String amf) {
|
||||||
|
return tinyWRAPJNI.SipStack_setAMF(swigCPtr, this, amf);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean setOperatorId(String opid) {
|
||||||
|
return tinyWRAPJNI.SipStack_setOperatorId(swigCPtr, this, opid);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean setProxyCSCF(String fqdn, int port, String transport, String ipversion) {
|
||||||
return tinyWRAPJNI.SipStack_setProxyCSCF(swigCPtr, this, fqdn, port, transport, ipversion);
|
return tinyWRAPJNI.SipStack_setProxyCSCF(swigCPtr, this, fqdn, port, transport, ipversion);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -69,7 +77,7 @@ public class SipStack extends SafeObject {
|
||||||
return tinyWRAPJNI.SipStack_setLocalIP(swigCPtr, this, ip);
|
return tinyWRAPJNI.SipStack_setLocalIP(swigCPtr, this, ip);
|
||||||
}
|
}
|
||||||
|
|
||||||
public boolean setLocalPort(long port) {
|
public boolean setLocalPort(int port) {
|
||||||
return tinyWRAPJNI.SipStack_setLocalPort(swigCPtr, this, port);
|
return tinyWRAPJNI.SipStack_setLocalPort(swigCPtr, this, port);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -93,14 +101,26 @@ public class SipStack extends SafeObject {
|
||||||
return tinyWRAPJNI.SipStack_setAoR(swigCPtr, this, ip, port);
|
return tinyWRAPJNI.SipStack_setAoR(swigCPtr, this, ip, port);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public boolean setSTUNServer(String ip, int port) {
|
||||||
|
return tinyWRAPJNI.SipStack_setSTUNServer(swigCPtr, this, ip, port);
|
||||||
|
}
|
||||||
|
|
||||||
|
public boolean setSTUNCred(String login, String password) {
|
||||||
|
return tinyWRAPJNI.SipStack_setSTUNCred(swigCPtr, this, login, password);
|
||||||
|
}
|
||||||
|
|
||||||
public String dnsENUM(String service, String e164num, String domain) {
|
public String dnsENUM(String service, String e164num, String domain) {
|
||||||
return tinyWRAPJNI.SipStack_dnsENUM(swigCPtr, this, service, e164num, domain);
|
return tinyWRAPJNI.SipStack_dnsENUM(swigCPtr, this, service, e164num, domain);
|
||||||
}
|
}
|
||||||
|
|
||||||
public String dnsNaptrSrv(String domain, String service, short[] OUTPUT) {
|
public String dnsNaptrSrv(String domain, String service, int[] OUTPUT) {
|
||||||
return tinyWRAPJNI.SipStack_dnsNaptrSrv(swigCPtr, this, domain, service, OUTPUT);
|
return tinyWRAPJNI.SipStack_dnsNaptrSrv(swigCPtr, this, domain, service, OUTPUT);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String dnsSrv(String service, int[] OUTPUT) {
|
||||||
|
return tinyWRAPJNI.SipStack_dnsSrv(swigCPtr, this, service, OUTPUT);
|
||||||
|
}
|
||||||
|
|
||||||
public boolean isValid() {
|
public boolean isValid() {
|
||||||
return tinyWRAPJNI.SipStack_isValid(swigCPtr, this);
|
return tinyWRAPJNI.SipStack_isValid(swigCPtr, this);
|
||||||
}
|
}
|
||||||
|
|
|
@ -45,4 +45,32 @@ public class SipUri {
|
||||||
return tinyWRAPJNI.SipUri_isValid__SWIG_1(swigCPtr, this);
|
return tinyWRAPJNI.SipUri_isValid__SWIG_1(swigCPtr, this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public String getScheme() {
|
||||||
|
return tinyWRAPJNI.SipUri_getScheme(swigCPtr, this);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getHost() {
|
||||||
|
return tinyWRAPJNI.SipUri_getHost(swigCPtr, this);
|
||||||
|
}
|
||||||
|
|
||||||
|
public int getPort() {
|
||||||
|
return tinyWRAPJNI.SipUri_getPort(swigCPtr, this);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getUserName() {
|
||||||
|
return tinyWRAPJNI.SipUri_getUserName(swigCPtr, this);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getPassword() {
|
||||||
|
return tinyWRAPJNI.SipUri_getPassword(swigCPtr, this);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getDisplayName() {
|
||||||
|
return tinyWRAPJNI.SipUri_getDisplayName(swigCPtr, this);
|
||||||
|
}
|
||||||
|
|
||||||
|
public String getParamValue(String pname) {
|
||||||
|
return tinyWRAPJNI.SipUri_getParamValue(swigCPtr, this, pname);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1,8 +1,8 @@
|
||||||
#!/bin/bash
|
#!/bin/bash
|
||||||
# Build tinyWRAP for Google Android Systems
|
# Build tinyWRAP for Google Android Systems
|
||||||
|
|
||||||
#for project in tinySAK tinyNET tinyHTTP tinyXCAP tinyIPSec tinySMS tinySIGCOMP tinySDP tinyRTP tinyMEDIA tinyDAV tinySIP
|
for project in tinySAK tinyNET tinyHTTP tinyXCAP tinyIPSec tinySMS tinySIGCOMP tinySDP tinyRTP tinyMEDIA tinyDAV tinySIP
|
||||||
for project in tinyMEDIA tinyDAV
|
#for project in tinyNET
|
||||||
do
|
do
|
||||||
echo -e building "$project....\n"
|
echo -e building "$project....\n"
|
||||||
make PROJECT=$project clean
|
make PROJECT=$project clean
|
||||||
|
|
|
@ -1,7 +1,7 @@
|
||||||
APP := lib$(PROJECT).$(EXT)
|
APP := lib$(PROJECT).$(EXT)
|
||||||
|
|
||||||
CFLAGS := $(CFLAGS_LIB) -fno-rtti -fno-exceptions -I../../_common -I../../. -I../../../tinySAK/src -I../../../tinyNET/src -I../../../tinyHTTP/include -I../../../tinyXCAP/include \
|
CFLAGS := $(CFLAGS_LIB) -fno-rtti -fno-exceptions -I../../_common -I../../. -I../../../tinySAK/src -I../../../tinyNET/src -I../../../tinyHTTP/include -I../../../tinyXCAP/include \
|
||||||
-I../../../tinySDP/include -I../../../tinyMEDIA/include -I../../../tinyDAV/include -I../../../tinySIP/include
|
-I../../../tinySMS/include -I../../../tinySDP/include -I../../../tinyMEDIA/include -I../../../tinyDAV/include -I../../../tinySIP/include
|
||||||
|
|
||||||
# Because of the static build, you need all librarires
|
# Because of the static build, you need all librarires
|
||||||
THIRDPARTIES_LIB := ../../../thirdparties/android/lib
|
THIRDPARTIES_LIB := ../../../thirdparties/android/lib
|
||||||
|
@ -13,7 +13,7 @@ ILBC_LDFLAGS := -liLBC
|
||||||
LIBGSM_LDFLAGS := -lgsm
|
LIBGSM_LDFLAGS := -lgsm
|
||||||
|
|
||||||
LDFLAGS := $(LDFLAGS_LIB) -L$(THIRDPARTIES_LIB) $(FFMPEG_LDFLAGS) $(SPEEX_LDFLAGS) $(OPENCORE_ARM_LDFLAGS) $(ILBC_LDFLAGS) $(LIBGSM_LDFLAGS)\
|
LDFLAGS := $(LDFLAGS_LIB) -L$(THIRDPARTIES_LIB) $(FFMPEG_LDFLAGS) $(SPEEX_LDFLAGS) $(OPENCORE_ARM_LDFLAGS) $(ILBC_LDFLAGS) $(LIBGSM_LDFLAGS)\
|
||||||
-ltinySAK -ltinyHTTP -ltinyXCAP -ltinyIPSec -ltinySIGCOMP -ltinyNET -ltinySDP -ltinyRTP -ltinyMEDIA -ltinyDAV -ltinySIP \
|
-ltinySAK -ltinyHTTP -ltinyXCAP -ltinyIPSec -ltinySIGCOMP -ltinySMS -ltinyNET -ltinySDP -ltinyRTP -ltinyMEDIA -ltinyDAV -ltinySIP \
|
||||||
-lm -lstdc++ -llog -lgcc
|
-lm -lstdc++ -llog -lgcc
|
||||||
|
|
||||||
|
|
||||||
|
@ -31,6 +31,7 @@ OBJS = tinyWRAP_wrap.o\
|
||||||
../../_common/SipSession.o \
|
../../_common/SipSession.o \
|
||||||
../../_common/SipStack.o \
|
../../_common/SipStack.o \
|
||||||
../../_common/SipUri.o \
|
../../_common/SipUri.o \
|
||||||
|
../../_common/SMSEncoder.o \
|
||||||
../../_common/Xcap.o
|
../../_common/Xcap.o
|
||||||
|
|
||||||
|
|
||||||
|
|
|
@ -20,6 +20,9 @@ public enum tdav_codec_id_t {
|
||||||
tdav_codec_id_speex_nb(0x00000001 << 8),
|
tdav_codec_id_speex_nb(0x00000001 << 8),
|
||||||
tdav_codec_id_speex_wb(0x00000001 << 9),
|
tdav_codec_id_speex_wb(0x00000001 << 9),
|
||||||
tdav_codec_id_speex_uwb(0x00000001 << 10),
|
tdav_codec_id_speex_uwb(0x00000001 << 10),
|
||||||
|
tdav_codec_id_bv16(0x00000001 << 11),
|
||||||
|
tdav_codec_id_bv32(0x00000001 << 12),
|
||||||
|
tdav_codec_id_evrc(0x00000001 << 13),
|
||||||
tdav_codec_id_h261(0x00010000 << 0),
|
tdav_codec_id_h261(0x00010000 << 0),
|
||||||
tdav_codec_id_h263(0x00010000 << 1),
|
tdav_codec_id_h263(0x00010000 << 1),
|
||||||
tdav_codec_id_h263p(0x00010000 << 2),
|
tdav_codec_id_h263p(0x00010000 << 2),
|
||||||
|
|
|
@ -19,6 +19,13 @@ class tinyWRAPJNI {
|
||||||
public final static native void delete_SipUri(long jarg1);
|
public final static native void delete_SipUri(long jarg1);
|
||||||
public final static native boolean SipUri_isValid__SWIG_0(String jarg1);
|
public final static native boolean SipUri_isValid__SWIG_0(String jarg1);
|
||||||
public final static native boolean SipUri_isValid__SWIG_1(long jarg1, SipUri jarg1_);
|
public final static native boolean SipUri_isValid__SWIG_1(long jarg1, SipUri jarg1_);
|
||||||
|
public final static native String SipUri_getScheme(long jarg1, SipUri jarg1_);
|
||||||
|
public final static native String SipUri_getHost(long jarg1, SipUri jarg1_);
|
||||||
|
public final static native int SipUri_getPort(long jarg1, SipUri jarg1_);
|
||||||
|
public final static native String SipUri_getUserName(long jarg1, SipUri jarg1_);
|
||||||
|
public final static native String SipUri_getPassword(long jarg1, SipUri jarg1_);
|
||||||
|
public final static native String SipUri_getDisplayName(long jarg1, SipUri jarg1_);
|
||||||
|
public final static native String SipUri_getParamValue(long jarg1, SipUri jarg1_, String jarg2);
|
||||||
public final static native long new_SipMessage();
|
public final static native long new_SipMessage();
|
||||||
public final static native void delete_SipMessage(long jarg1);
|
public final static native void delete_SipMessage(long jarg1);
|
||||||
public final static native String SipMessage_getSipHeaderValue__SWIG_0(long jarg1, SipMessage jarg1_, String jarg2, long jarg3);
|
public final static native String SipMessage_getSipHeaderValue__SWIG_0(long jarg1, SipMessage jarg1_, String jarg2, long jarg3);
|
||||||
|
@ -197,16 +204,21 @@ class tinyWRAPJNI {
|
||||||
public final static native boolean SipStack_setIMPI(long jarg1, SipStack jarg1_, String jarg2);
|
public final static native boolean SipStack_setIMPI(long jarg1, SipStack jarg1_, String jarg2);
|
||||||
public final static native boolean SipStack_setIMPU(long jarg1, SipStack jarg1_, String jarg2);
|
public final static native boolean SipStack_setIMPU(long jarg1, SipStack jarg1_, String jarg2);
|
||||||
public final static native boolean SipStack_setPassword(long jarg1, SipStack jarg1_, String jarg2);
|
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_setAMF(long jarg1, SipStack jarg1_, String jarg2);
|
||||||
|
public final static native boolean SipStack_setOperatorId(long jarg1, SipStack jarg1_, String jarg2);
|
||||||
|
public final static native boolean SipStack_setProxyCSCF(long jarg1, SipStack jarg1_, String jarg2, int jarg3, String jarg4, String jarg5);
|
||||||
public final static native boolean SipStack_setLocalIP(long jarg1, SipStack jarg1_, String jarg2);
|
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_setLocalPort(long jarg1, SipStack jarg1_, int jarg2);
|
||||||
public final static native boolean SipStack_setEarlyIMS(long jarg1, SipStack jarg1_, boolean jarg2);
|
public final static native boolean SipStack_setEarlyIMS(long jarg1, SipStack jarg1_, boolean jarg2);
|
||||||
public final static native boolean SipStack_addHeader(long jarg1, SipStack jarg1_, String jarg2, String jarg3);
|
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_removeHeader(long jarg1, SipStack jarg1_, String jarg2);
|
||||||
public final static native boolean SipStack_addDnsServer(long jarg1, SipStack jarg1_, String jarg2);
|
public final static native boolean SipStack_addDnsServer(long jarg1, SipStack jarg1_, String jarg2);
|
||||||
public final static native boolean SipStack_setAoR(long jarg1, SipStack jarg1_, String jarg2, int jarg3);
|
public final static native boolean SipStack_setAoR(long jarg1, SipStack jarg1_, String jarg2, int jarg3);
|
||||||
|
public final static native boolean SipStack_setSTUNServer(long jarg1, SipStack jarg1_, String jarg2, int jarg3);
|
||||||
|
public final static native boolean SipStack_setSTUNCred(long jarg1, SipStack jarg1_, String jarg2, String jarg3);
|
||||||
public final static native String SipStack_dnsENUM(long jarg1, SipStack jarg1_, String jarg2, String jarg3, String jarg4);
|
public final static native String SipStack_dnsENUM(long jarg1, SipStack jarg1_, String jarg2, String jarg3, String jarg4);
|
||||||
public final static native String SipStack_dnsNaptrSrv(long jarg1, SipStack jarg1_, String jarg2, String jarg3, short[] jarg4);
|
public final static native String SipStack_dnsNaptrSrv(long jarg1, SipStack jarg1_, String jarg2, String jarg3, int[] jarg4);
|
||||||
|
public final static native String SipStack_dnsSrv(long jarg1, SipStack jarg1_, String jarg2, int[] jarg3);
|
||||||
public final static native boolean SipStack_isValid(long jarg1, SipStack jarg1_);
|
public final static native boolean SipStack_isValid(long jarg1, SipStack jarg1_);
|
||||||
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 void SipStack_setCodecs(int jarg1);
|
public final static native void SipStack_setCodecs(int jarg1);
|
||||||
|
@ -252,6 +264,13 @@ class tinyWRAPJNI {
|
||||||
public final static native boolean XcapStack_setTimeout(long jarg1, XcapStack jarg1_, long jarg2);
|
public final static native boolean XcapStack_setTimeout(long jarg1, XcapStack jarg1_, long jarg2);
|
||||||
public final static native boolean XcapStack_getDocument(long jarg1, XcapStack jarg1_, String jarg2);
|
public final static native boolean XcapStack_getDocument(long jarg1, XcapStack jarg1_, String jarg2);
|
||||||
public final static native boolean XcapStack_stop(long jarg1, XcapStack jarg1_);
|
public final static native boolean XcapStack_stop(long jarg1, XcapStack jarg1_);
|
||||||
|
public final static native long new_RPData();
|
||||||
|
public final static native void delete_RPData(long jarg1);
|
||||||
|
public final static native int RPData_getType(long jarg1, RPData jarg1_);
|
||||||
|
public final static native long RPData_getPayloadLength(long jarg1, RPData jarg1_);
|
||||||
|
public final static native long RPData_getPayload(long jarg1, RPData jarg1_, java.nio.ByteBuffer jarg2, long jarg3);
|
||||||
|
public final static native long SMSEncoder_encodeSubmit(int jarg1, String jarg2, String jarg3, String jarg4);
|
||||||
|
public final static native void delete_SMSEncoder(long jarg1);
|
||||||
public final static native long SWIGDialogEventUpcast(long jarg1);
|
public final static native long SWIGDialogEventUpcast(long jarg1);
|
||||||
public final static native long SWIGStackEventUpcast(long jarg1);
|
public final static native long SWIGStackEventUpcast(long jarg1);
|
||||||
public final static native long SWIGCallEventUpcast(long jarg1);
|
public final static native long SWIGCallEventUpcast(long jarg1);
|
||||||
|
|
|
@ -425,6 +425,9 @@ namespace Swig {
|
||||||
#include "Xcap.h"
|
#include "Xcap.h"
|
||||||
|
|
||||||
|
|
||||||
|
#include "SMSEncoder.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* ---------------------------------------------------
|
/* ---------------------------------------------------
|
||||||
* C++ director class methods
|
* C++ director class methods
|
||||||
|
@ -1550,6 +1553,118 @@ SWIGEXPORT jboolean JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_SipUri_1isVal
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SWIGEXPORT jstring JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_SipUri_1getScheme(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) {
|
||||||
|
jstring jresult = 0 ;
|
||||||
|
SipUri *arg1 = (SipUri *) 0 ;
|
||||||
|
char *result = 0 ;
|
||||||
|
|
||||||
|
(void)jenv;
|
||||||
|
(void)jcls;
|
||||||
|
(void)jarg1_;
|
||||||
|
arg1 = *(SipUri **)&jarg1;
|
||||||
|
result = (char *)(arg1)->getScheme();
|
||||||
|
if(result) jresult = jenv->NewStringUTF((const char *)result);
|
||||||
|
return jresult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SWIGEXPORT jstring JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_SipUri_1getHost(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) {
|
||||||
|
jstring jresult = 0 ;
|
||||||
|
SipUri *arg1 = (SipUri *) 0 ;
|
||||||
|
char *result = 0 ;
|
||||||
|
|
||||||
|
(void)jenv;
|
||||||
|
(void)jcls;
|
||||||
|
(void)jarg1_;
|
||||||
|
arg1 = *(SipUri **)&jarg1;
|
||||||
|
result = (char *)(arg1)->getHost();
|
||||||
|
if(result) jresult = jenv->NewStringUTF((const char *)result);
|
||||||
|
return jresult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SWIGEXPORT jint JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_SipUri_1getPort(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) {
|
||||||
|
jint jresult = 0 ;
|
||||||
|
SipUri *arg1 = (SipUri *) 0 ;
|
||||||
|
unsigned short result;
|
||||||
|
|
||||||
|
(void)jenv;
|
||||||
|
(void)jcls;
|
||||||
|
(void)jarg1_;
|
||||||
|
arg1 = *(SipUri **)&jarg1;
|
||||||
|
result = (unsigned short)(arg1)->getPort();
|
||||||
|
jresult = (jint)result;
|
||||||
|
return jresult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SWIGEXPORT jstring JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_SipUri_1getUserName(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) {
|
||||||
|
jstring jresult = 0 ;
|
||||||
|
SipUri *arg1 = (SipUri *) 0 ;
|
||||||
|
char *result = 0 ;
|
||||||
|
|
||||||
|
(void)jenv;
|
||||||
|
(void)jcls;
|
||||||
|
(void)jarg1_;
|
||||||
|
arg1 = *(SipUri **)&jarg1;
|
||||||
|
result = (char *)(arg1)->getUserName();
|
||||||
|
if(result) jresult = jenv->NewStringUTF((const char *)result);
|
||||||
|
return jresult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SWIGEXPORT jstring JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_SipUri_1getPassword(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) {
|
||||||
|
jstring jresult = 0 ;
|
||||||
|
SipUri *arg1 = (SipUri *) 0 ;
|
||||||
|
char *result = 0 ;
|
||||||
|
|
||||||
|
(void)jenv;
|
||||||
|
(void)jcls;
|
||||||
|
(void)jarg1_;
|
||||||
|
arg1 = *(SipUri **)&jarg1;
|
||||||
|
result = (char *)(arg1)->getPassword();
|
||||||
|
if(result) jresult = jenv->NewStringUTF((const char *)result);
|
||||||
|
return jresult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SWIGEXPORT jstring JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_SipUri_1getDisplayName(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) {
|
||||||
|
jstring jresult = 0 ;
|
||||||
|
SipUri *arg1 = (SipUri *) 0 ;
|
||||||
|
char *result = 0 ;
|
||||||
|
|
||||||
|
(void)jenv;
|
||||||
|
(void)jcls;
|
||||||
|
(void)jarg1_;
|
||||||
|
arg1 = *(SipUri **)&jarg1;
|
||||||
|
result = (char *)(arg1)->getDisplayName();
|
||||||
|
if(result) jresult = jenv->NewStringUTF((const char *)result);
|
||||||
|
return jresult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SWIGEXPORT jstring JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_SipUri_1getParamValue(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2) {
|
||||||
|
jstring jresult = 0 ;
|
||||||
|
SipUri *arg1 = (SipUri *) 0 ;
|
||||||
|
char *arg2 = (char *) 0 ;
|
||||||
|
char *result = 0 ;
|
||||||
|
|
||||||
|
(void)jenv;
|
||||||
|
(void)jcls;
|
||||||
|
(void)jarg1_;
|
||||||
|
arg1 = *(SipUri **)&jarg1;
|
||||||
|
arg2 = 0;
|
||||||
|
if (jarg2) {
|
||||||
|
arg2 = (char *)jenv->GetStringUTFChars(jarg2, 0);
|
||||||
|
if (!arg2) return 0;
|
||||||
|
}
|
||||||
|
result = (char *)(arg1)->getParamValue((char const *)arg2);
|
||||||
|
if(result) jresult = jenv->NewStringUTF((const char *)result);
|
||||||
|
if (arg2) jenv->ReleaseStringUTFChars(jarg2, (const char *)arg2);
|
||||||
|
return jresult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
SWIGEXPORT jlong JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_new_1SipMessage(JNIEnv *jenv, jclass jcls) {
|
SWIGEXPORT jlong JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_new_1SipMessage(JNIEnv *jenv, jclass jcls) {
|
||||||
jlong jresult = 0 ;
|
jlong jresult = 0 ;
|
||||||
SipMessage *result = 0 ;
|
SipMessage *result = 0 ;
|
||||||
|
@ -4363,11 +4478,55 @@ SWIGEXPORT jboolean JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_SipStack_1set
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
SWIGEXPORT jboolean JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_SipStack_1setProxyCSCF(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2, jlong jarg3, jstring jarg4, jstring jarg5) {
|
SWIGEXPORT jboolean JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_SipStack_1setAMF(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2) {
|
||||||
jboolean jresult = 0 ;
|
jboolean jresult = 0 ;
|
||||||
SipStack *arg1 = (SipStack *) 0 ;
|
SipStack *arg1 = (SipStack *) 0 ;
|
||||||
char *arg2 = (char *) 0 ;
|
char *arg2 = (char *) 0 ;
|
||||||
unsigned int arg3 ;
|
bool result;
|
||||||
|
|
||||||
|
(void)jenv;
|
||||||
|
(void)jcls;
|
||||||
|
(void)jarg1_;
|
||||||
|
arg1 = *(SipStack **)&jarg1;
|
||||||
|
arg2 = 0;
|
||||||
|
if (jarg2) {
|
||||||
|
arg2 = (char *)jenv->GetStringUTFChars(jarg2, 0);
|
||||||
|
if (!arg2) return 0;
|
||||||
|
}
|
||||||
|
result = (bool)(arg1)->setAMF((char const *)arg2);
|
||||||
|
jresult = (jboolean)result;
|
||||||
|
if (arg2) jenv->ReleaseStringUTFChars(jarg2, (const char *)arg2);
|
||||||
|
return jresult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SWIGEXPORT jboolean JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_SipStack_1setOperatorId(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2) {
|
||||||
|
jboolean jresult = 0 ;
|
||||||
|
SipStack *arg1 = (SipStack *) 0 ;
|
||||||
|
char *arg2 = (char *) 0 ;
|
||||||
|
bool result;
|
||||||
|
|
||||||
|
(void)jenv;
|
||||||
|
(void)jcls;
|
||||||
|
(void)jarg1_;
|
||||||
|
arg1 = *(SipStack **)&jarg1;
|
||||||
|
arg2 = 0;
|
||||||
|
if (jarg2) {
|
||||||
|
arg2 = (char *)jenv->GetStringUTFChars(jarg2, 0);
|
||||||
|
if (!arg2) return 0;
|
||||||
|
}
|
||||||
|
result = (bool)(arg1)->setOperatorId((char const *)arg2);
|
||||||
|
jresult = (jboolean)result;
|
||||||
|
if (arg2) jenv->ReleaseStringUTFChars(jarg2, (const char *)arg2);
|
||||||
|
return jresult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SWIGEXPORT jboolean JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_SipStack_1setProxyCSCF(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2, jint jarg3, jstring jarg4, jstring jarg5) {
|
||||||
|
jboolean jresult = 0 ;
|
||||||
|
SipStack *arg1 = (SipStack *) 0 ;
|
||||||
|
char *arg2 = (char *) 0 ;
|
||||||
|
unsigned short arg3 ;
|
||||||
char *arg4 = (char *) 0 ;
|
char *arg4 = (char *) 0 ;
|
||||||
char *arg5 = (char *) 0 ;
|
char *arg5 = (char *) 0 ;
|
||||||
bool result;
|
bool result;
|
||||||
|
@ -4381,7 +4540,7 @@ SWIGEXPORT jboolean JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_SipStack_1set
|
||||||
arg2 = (char *)jenv->GetStringUTFChars(jarg2, 0);
|
arg2 = (char *)jenv->GetStringUTFChars(jarg2, 0);
|
||||||
if (!arg2) return 0;
|
if (!arg2) return 0;
|
||||||
}
|
}
|
||||||
arg3 = (unsigned int)jarg3;
|
arg3 = (unsigned short)jarg3;
|
||||||
arg4 = 0;
|
arg4 = 0;
|
||||||
if (jarg4) {
|
if (jarg4) {
|
||||||
arg4 = (char *)jenv->GetStringUTFChars(jarg4, 0);
|
arg4 = (char *)jenv->GetStringUTFChars(jarg4, 0);
|
||||||
|
@ -4423,17 +4582,17 @@ SWIGEXPORT jboolean JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_SipStack_1set
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
SWIGEXPORT jboolean JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_SipStack_1setLocalPort(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) {
|
SWIGEXPORT jboolean JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_SipStack_1setLocalPort(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) {
|
||||||
jboolean jresult = 0 ;
|
jboolean jresult = 0 ;
|
||||||
SipStack *arg1 = (SipStack *) 0 ;
|
SipStack *arg1 = (SipStack *) 0 ;
|
||||||
unsigned int arg2 ;
|
unsigned short arg2 ;
|
||||||
bool result;
|
bool result;
|
||||||
|
|
||||||
(void)jenv;
|
(void)jenv;
|
||||||
(void)jcls;
|
(void)jcls;
|
||||||
(void)jarg1_;
|
(void)jarg1_;
|
||||||
arg1 = *(SipStack **)&jarg1;
|
arg1 = *(SipStack **)&jarg1;
|
||||||
arg2 = (unsigned int)jarg2;
|
arg2 = (unsigned short)jarg2;
|
||||||
result = (bool)(arg1)->setLocalPort(arg2);
|
result = (bool)(arg1)->setLocalPort(arg2);
|
||||||
jresult = (jboolean)result;
|
jresult = (jboolean)result;
|
||||||
return jresult;
|
return jresult;
|
||||||
|
@ -4554,6 +4713,59 @@ SWIGEXPORT jboolean JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_SipStack_1set
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SWIGEXPORT jboolean JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_SipStack_1setSTUNServer(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2, jint jarg3) {
|
||||||
|
jboolean jresult = 0 ;
|
||||||
|
SipStack *arg1 = (SipStack *) 0 ;
|
||||||
|
char *arg2 = (char *) 0 ;
|
||||||
|
unsigned short arg3 ;
|
||||||
|
bool result;
|
||||||
|
|
||||||
|
(void)jenv;
|
||||||
|
(void)jcls;
|
||||||
|
(void)jarg1_;
|
||||||
|
arg1 = *(SipStack **)&jarg1;
|
||||||
|
arg2 = 0;
|
||||||
|
if (jarg2) {
|
||||||
|
arg2 = (char *)jenv->GetStringUTFChars(jarg2, 0);
|
||||||
|
if (!arg2) return 0;
|
||||||
|
}
|
||||||
|
arg3 = (unsigned short)jarg3;
|
||||||
|
result = (bool)(arg1)->setSTUNServer((char const *)arg2,arg3);
|
||||||
|
jresult = (jboolean)result;
|
||||||
|
if (arg2) jenv->ReleaseStringUTFChars(jarg2, (const char *)arg2);
|
||||||
|
return jresult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SWIGEXPORT jboolean JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_SipStack_1setSTUNCred(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2, jstring jarg3) {
|
||||||
|
jboolean jresult = 0 ;
|
||||||
|
SipStack *arg1 = (SipStack *) 0 ;
|
||||||
|
char *arg2 = (char *) 0 ;
|
||||||
|
char *arg3 = (char *) 0 ;
|
||||||
|
bool result;
|
||||||
|
|
||||||
|
(void)jenv;
|
||||||
|
(void)jcls;
|
||||||
|
(void)jarg1_;
|
||||||
|
arg1 = *(SipStack **)&jarg1;
|
||||||
|
arg2 = 0;
|
||||||
|
if (jarg2) {
|
||||||
|
arg2 = (char *)jenv->GetStringUTFChars(jarg2, 0);
|
||||||
|
if (!arg2) return 0;
|
||||||
|
}
|
||||||
|
arg3 = 0;
|
||||||
|
if (jarg3) {
|
||||||
|
arg3 = (char *)jenv->GetStringUTFChars(jarg3, 0);
|
||||||
|
if (!arg3) return 0;
|
||||||
|
}
|
||||||
|
result = (bool)(arg1)->setSTUNCred((char const *)arg2,(char const *)arg3);
|
||||||
|
jresult = (jboolean)result;
|
||||||
|
if (arg2) jenv->ReleaseStringUTFChars(jarg2, (const char *)arg2);
|
||||||
|
if (arg3) jenv->ReleaseStringUTFChars(jarg3, (const char *)arg3);
|
||||||
|
return jresult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
SWIGEXPORT jstring JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_SipStack_1dnsENUM(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2, jstring jarg3, jstring jarg4) {
|
SWIGEXPORT jstring JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_SipStack_1dnsENUM(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2, jstring jarg3, jstring jarg4) {
|
||||||
jstring jresult = 0 ;
|
jstring jresult = 0 ;
|
||||||
SipStack *arg1 = (SipStack *) 0 ;
|
SipStack *arg1 = (SipStack *) 0 ;
|
||||||
|
@ -4591,13 +4803,13 @@ SWIGEXPORT jstring JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_SipStack_1dnsE
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
SWIGEXPORT jstring JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_SipStack_1dnsNaptrSrv(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2, jstring jarg3, jshortArray jarg4) {
|
SWIGEXPORT jstring JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_SipStack_1dnsNaptrSrv(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2, jstring jarg3, jintArray jarg4) {
|
||||||
jstring jresult = 0 ;
|
jstring jresult = 0 ;
|
||||||
SipStack *arg1 = (SipStack *) 0 ;
|
SipStack *arg1 = (SipStack *) 0 ;
|
||||||
char *arg2 = (char *) 0 ;
|
char *arg2 = (char *) 0 ;
|
||||||
char *arg3 = (char *) 0 ;
|
char *arg3 = (char *) 0 ;
|
||||||
short *arg4 = (short *) 0 ;
|
unsigned short *arg4 = (unsigned short *) 0 ;
|
||||||
short temp4 ;
|
unsigned short temp4 ;
|
||||||
char *result = 0 ;
|
char *result = 0 ;
|
||||||
|
|
||||||
(void)jenv;
|
(void)jenv;
|
||||||
|
@ -4628,8 +4840,8 @@ SWIGEXPORT jstring JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_SipStack_1dnsN
|
||||||
result = (char *)(arg1)->dnsNaptrSrv((char const *)arg2,(char const *)arg3,arg4);
|
result = (char *)(arg1)->dnsNaptrSrv((char const *)arg2,(char const *)arg3,arg4);
|
||||||
if(result) jresult = jenv->NewStringUTF((const char *)result);
|
if(result) jresult = jenv->NewStringUTF((const char *)result);
|
||||||
{
|
{
|
||||||
jshort jvalue = (jshort)temp4;
|
jint jvalue = (jint)temp4;
|
||||||
jenv->SetShortArrayRegion(jarg4, 0, 1, &jvalue);
|
jenv->SetIntArrayRegion(jarg4, 0, 1, &jvalue);
|
||||||
}
|
}
|
||||||
if (arg2) jenv->ReleaseStringUTFChars(jarg2, (const char *)arg2);
|
if (arg2) jenv->ReleaseStringUTFChars(jarg2, (const char *)arg2);
|
||||||
if (arg3) jenv->ReleaseStringUTFChars(jarg3, (const char *)arg3);
|
if (arg3) jenv->ReleaseStringUTFChars(jarg3, (const char *)arg3);
|
||||||
|
@ -4639,6 +4851,47 @@ SWIGEXPORT jstring JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_SipStack_1dnsN
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SWIGEXPORT jstring JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_SipStack_1dnsSrv(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2, jintArray jarg3) {
|
||||||
|
jstring jresult = 0 ;
|
||||||
|
SipStack *arg1 = (SipStack *) 0 ;
|
||||||
|
char *arg2 = (char *) 0 ;
|
||||||
|
unsigned short *arg3 = (unsigned short *) 0 ;
|
||||||
|
unsigned short temp3 ;
|
||||||
|
char *result = 0 ;
|
||||||
|
|
||||||
|
(void)jenv;
|
||||||
|
(void)jcls;
|
||||||
|
(void)jarg1_;
|
||||||
|
arg1 = *(SipStack **)&jarg1;
|
||||||
|
arg2 = 0;
|
||||||
|
if (jarg2) {
|
||||||
|
arg2 = (char *)jenv->GetStringUTFChars(jarg2, 0);
|
||||||
|
if (!arg2) return 0;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
if (!jarg3) {
|
||||||
|
SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "array null");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
if (jenv->GetArrayLength(jarg3) == 0) {
|
||||||
|
SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, "Array must contain at least 1 element");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
arg3 = &temp3;
|
||||||
|
}
|
||||||
|
result = (char *)(arg1)->dnsSrv((char const *)arg2,arg3);
|
||||||
|
if(result) jresult = jenv->NewStringUTF((const char *)result);
|
||||||
|
{
|
||||||
|
jint jvalue = (jint)temp3;
|
||||||
|
jenv->SetIntArrayRegion(jarg3, 0, 1, &jvalue);
|
||||||
|
}
|
||||||
|
if (arg2) jenv->ReleaseStringUTFChars(jarg2, (const char *)arg2);
|
||||||
|
|
||||||
|
delete [] result;
|
||||||
|
return jresult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
SWIGEXPORT jboolean JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_SipStack_1isValid(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) {
|
SWIGEXPORT jboolean JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_SipStack_1isValid(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) {
|
||||||
jboolean jresult = 0 ;
|
jboolean jresult = 0 ;
|
||||||
SipStack *arg1 = (SipStack *) 0 ;
|
SipStack *arg1 = (SipStack *) 0 ;
|
||||||
|
@ -5484,6 +5737,124 @@ SWIGEXPORT jboolean JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_XcapStack_1st
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SWIGEXPORT jlong JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_new_1RPData(JNIEnv *jenv, jclass jcls) {
|
||||||
|
jlong jresult = 0 ;
|
||||||
|
RPData *result = 0 ;
|
||||||
|
|
||||||
|
(void)jenv;
|
||||||
|
(void)jcls;
|
||||||
|
result = (RPData *)new RPData();
|
||||||
|
*(RPData **)&jresult = result;
|
||||||
|
return jresult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SWIGEXPORT void JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_delete_1RPData(JNIEnv *jenv, jclass jcls, jlong jarg1) {
|
||||||
|
RPData *arg1 = (RPData *) 0 ;
|
||||||
|
|
||||||
|
(void)jenv;
|
||||||
|
(void)jcls;
|
||||||
|
arg1 = *(RPData **)&jarg1;
|
||||||
|
delete arg1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SWIGEXPORT jint JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_RPData_1getType(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) {
|
||||||
|
jint jresult = 0 ;
|
||||||
|
RPData *arg1 = (RPData *) 0 ;
|
||||||
|
twrap_rpdata_type_t result;
|
||||||
|
|
||||||
|
(void)jenv;
|
||||||
|
(void)jcls;
|
||||||
|
(void)jarg1_;
|
||||||
|
arg1 = *(RPData **)&jarg1;
|
||||||
|
result = (twrap_rpdata_type_t)(arg1)->getType();
|
||||||
|
jresult = (jint)result;
|
||||||
|
return jresult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SWIGEXPORT jlong JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_RPData_1getPayloadLength(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) {
|
||||||
|
jlong jresult = 0 ;
|
||||||
|
RPData *arg1 = (RPData *) 0 ;
|
||||||
|
unsigned int result;
|
||||||
|
|
||||||
|
(void)jenv;
|
||||||
|
(void)jcls;
|
||||||
|
(void)jarg1_;
|
||||||
|
arg1 = *(RPData **)&jarg1;
|
||||||
|
result = (unsigned int)(arg1)->getPayloadLength();
|
||||||
|
jresult = (jlong)result;
|
||||||
|
return jresult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SWIGEXPORT jlong JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_RPData_1getPayload(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jbyteArray jarg2, jlong jarg3) {
|
||||||
|
jlong jresult = 0 ;
|
||||||
|
RPData *arg1 = (RPData *) 0 ;
|
||||||
|
void *arg2 = (void *) 0 ;
|
||||||
|
unsigned int arg3 ;
|
||||||
|
unsigned int result;
|
||||||
|
|
||||||
|
(void)jenv;
|
||||||
|
(void)jcls;
|
||||||
|
(void)jarg1_;
|
||||||
|
arg1 = *(RPData **)&jarg1;
|
||||||
|
|
||||||
|
arg2 = jenv->GetDirectBufferAddress(jarg2);
|
||||||
|
|
||||||
|
arg3 = (unsigned int)jarg3;
|
||||||
|
result = (unsigned int)(arg1)->getPayload(arg2,arg3);
|
||||||
|
jresult = (jlong)result;
|
||||||
|
return jresult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SWIGEXPORT jlong JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_SMSEncoder_1encodeSubmit(JNIEnv *jenv, jclass jcls, jint jarg1, jstring jarg2, jstring jarg3, jstring jarg4) {
|
||||||
|
jlong jresult = 0 ;
|
||||||
|
int arg1 ;
|
||||||
|
char *arg2 = (char *) 0 ;
|
||||||
|
char *arg3 = (char *) 0 ;
|
||||||
|
char *arg4 = (char *) 0 ;
|
||||||
|
RPData *result = 0 ;
|
||||||
|
|
||||||
|
(void)jenv;
|
||||||
|
(void)jcls;
|
||||||
|
arg1 = (int)jarg1;
|
||||||
|
arg2 = 0;
|
||||||
|
if (jarg2) {
|
||||||
|
arg2 = (char *)jenv->GetStringUTFChars(jarg2, 0);
|
||||||
|
if (!arg2) return 0;
|
||||||
|
}
|
||||||
|
arg3 = 0;
|
||||||
|
if (jarg3) {
|
||||||
|
arg3 = (char *)jenv->GetStringUTFChars(jarg3, 0);
|
||||||
|
if (!arg3) return 0;
|
||||||
|
}
|
||||||
|
arg4 = 0;
|
||||||
|
if (jarg4) {
|
||||||
|
arg4 = (char *)jenv->GetStringUTFChars(jarg4, 0);
|
||||||
|
if (!arg4) return 0;
|
||||||
|
}
|
||||||
|
result = (RPData *)SMSEncoder::encodeSubmit(arg1,(char const *)arg2,(char const *)arg3,(char const *)arg4);
|
||||||
|
*(RPData **)&jresult = result;
|
||||||
|
if (arg2) jenv->ReleaseStringUTFChars(jarg2, (const char *)arg2);
|
||||||
|
if (arg3) jenv->ReleaseStringUTFChars(jarg3, (const char *)arg3);
|
||||||
|
if (arg4) jenv->ReleaseStringUTFChars(jarg4, (const char *)arg4);
|
||||||
|
return jresult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SWIGEXPORT void JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_delete_1SMSEncoder(JNIEnv *jenv, jclass jcls, jlong jarg1) {
|
||||||
|
SMSEncoder *arg1 = (SMSEncoder *) 0 ;
|
||||||
|
|
||||||
|
(void)jenv;
|
||||||
|
(void)jcls;
|
||||||
|
arg1 = *(SMSEncoder **)&jarg1;
|
||||||
|
delete arg1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
SWIGEXPORT jlong JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_SWIGDialogEventUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) {
|
SWIGEXPORT jlong JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_SWIGDialogEventUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) {
|
||||||
jlong baseptr = 0;
|
jlong baseptr = 0;
|
||||||
(void)jenv;
|
(void)jenv;
|
||||||
|
|
|
@ -15,6 +15,7 @@ public enum tsip_invite_event_type_t {
|
||||||
tsip_o_ect_ok,
|
tsip_o_ect_ok,
|
||||||
tsip_o_ect_nok,
|
tsip_o_ect_nok,
|
||||||
tsip_i_ect,
|
tsip_i_ect,
|
||||||
|
tsip_m_early_media,
|
||||||
tsip_m_local_hold_ok,
|
tsip_m_local_hold_ok,
|
||||||
tsip_m_local_hold_nok,
|
tsip_m_local_hold_nok,
|
||||||
tsip_m_local_resume_ok,
|
tsip_m_local_resume_ok,
|
||||||
|
|
|
@ -0,0 +1,55 @@
|
||||||
|
/* ----------------------------------------------------------------------------
|
||||||
|
* This file was automatically generated by SWIG (http://www.swig.org).
|
||||||
|
* Version 1.3.39
|
||||||
|
*
|
||||||
|
* 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 enum twrap_rpdata_type_t {
|
||||||
|
twrap_rpdata_type_sms_none,
|
||||||
|
twrap_rpdata_type_sms_submit,
|
||||||
|
twrap_rpdata_type_sms_deliver,
|
||||||
|
twrap_rpdata_type_sms_status_report,
|
||||||
|
twrap_rpdata_type_sms_command;
|
||||||
|
|
||||||
|
public final int swigValue() {
|
||||||
|
return swigValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static twrap_rpdata_type_t swigToEnum(int swigValue) {
|
||||||
|
twrap_rpdata_type_t[] swigValues = twrap_rpdata_type_t.class.getEnumConstants();
|
||||||
|
if (swigValue < swigValues.length && swigValue >= 0 && swigValues[swigValue].swigValue == swigValue)
|
||||||
|
return swigValues[swigValue];
|
||||||
|
for (twrap_rpdata_type_t swigEnum : swigValues)
|
||||||
|
if (swigEnum.swigValue == swigValue)
|
||||||
|
return swigEnum;
|
||||||
|
throw new IllegalArgumentException("No enum " + twrap_rpdata_type_t.class + " with value " + swigValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("unused")
|
||||||
|
private twrap_rpdata_type_t() {
|
||||||
|
this.swigValue = SwigNext.next++;
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("unused")
|
||||||
|
private twrap_rpdata_type_t(int swigValue) {
|
||||||
|
this.swigValue = swigValue;
|
||||||
|
SwigNext.next = swigValue+1;
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("unused")
|
||||||
|
private twrap_rpdata_type_t(twrap_rpdata_type_t swigEnum) {
|
||||||
|
this.swigValue = swigEnum.swigValue;
|
||||||
|
SwigNext.next = this.swigValue+1;
|
||||||
|
}
|
||||||
|
|
||||||
|
private final int swigValue;
|
||||||
|
|
||||||
|
private static class SwigNext {
|
||||||
|
private static int next = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -20,6 +20,9 @@ public enum tdav_codec_id_t {
|
||||||
tdav_codec_id_speex_nb(0x00000001 << 8),
|
tdav_codec_id_speex_nb(0x00000001 << 8),
|
||||||
tdav_codec_id_speex_wb(0x00000001 << 9),
|
tdav_codec_id_speex_wb(0x00000001 << 9),
|
||||||
tdav_codec_id_speex_uwb(0x00000001 << 10),
|
tdav_codec_id_speex_uwb(0x00000001 << 10),
|
||||||
|
tdav_codec_id_bv16(0x00000001 << 11),
|
||||||
|
tdav_codec_id_bv32(0x00000001 << 12),
|
||||||
|
tdav_codec_id_evrc(0x00000001 << 13),
|
||||||
tdav_codec_id_h261(0x00010000 << 0),
|
tdav_codec_id_h261(0x00010000 << 0),
|
||||||
tdav_codec_id_h263(0x00010000 << 1),
|
tdav_codec_id_h263(0x00010000 << 1),
|
||||||
tdav_codec_id_h263p(0x00010000 << 2),
|
tdav_codec_id_h263p(0x00010000 << 2),
|
||||||
|
|
|
@ -19,6 +19,13 @@ class tinyWRAPJNI {
|
||||||
public final static native void delete_SipUri(long jarg1);
|
public final static native void delete_SipUri(long jarg1);
|
||||||
public final static native boolean SipUri_isValid__SWIG_0(String jarg1);
|
public final static native boolean SipUri_isValid__SWIG_0(String jarg1);
|
||||||
public final static native boolean SipUri_isValid__SWIG_1(long jarg1, SipUri jarg1_);
|
public final static native boolean SipUri_isValid__SWIG_1(long jarg1, SipUri jarg1_);
|
||||||
|
public final static native String SipUri_getScheme(long jarg1, SipUri jarg1_);
|
||||||
|
public final static native String SipUri_getHost(long jarg1, SipUri jarg1_);
|
||||||
|
public final static native int SipUri_getPort(long jarg1, SipUri jarg1_);
|
||||||
|
public final static native String SipUri_getUserName(long jarg1, SipUri jarg1_);
|
||||||
|
public final static native String SipUri_getPassword(long jarg1, SipUri jarg1_);
|
||||||
|
public final static native String SipUri_getDisplayName(long jarg1, SipUri jarg1_);
|
||||||
|
public final static native String SipUri_getParamValue(long jarg1, SipUri jarg1_, String jarg2);
|
||||||
public final static native long new_SipMessage();
|
public final static native long new_SipMessage();
|
||||||
public final static native void delete_SipMessage(long jarg1);
|
public final static native void delete_SipMessage(long jarg1);
|
||||||
public final static native String SipMessage_getSipHeaderValue__SWIG_0(long jarg1, SipMessage jarg1_, String jarg2, long jarg3);
|
public final static native String SipMessage_getSipHeaderValue__SWIG_0(long jarg1, SipMessage jarg1_, String jarg2, long jarg3);
|
||||||
|
@ -197,16 +204,21 @@ class tinyWRAPJNI {
|
||||||
public final static native boolean SipStack_setIMPI(long jarg1, SipStack jarg1_, String jarg2);
|
public final static native boolean SipStack_setIMPI(long jarg1, SipStack jarg1_, String jarg2);
|
||||||
public final static native boolean SipStack_setIMPU(long jarg1, SipStack jarg1_, String jarg2);
|
public final static native boolean SipStack_setIMPU(long jarg1, SipStack jarg1_, String jarg2);
|
||||||
public final static native boolean SipStack_setPassword(long jarg1, SipStack jarg1_, String jarg2);
|
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_setAMF(long jarg1, SipStack jarg1_, String jarg2);
|
||||||
|
public final static native boolean SipStack_setOperatorId(long jarg1, SipStack jarg1_, String jarg2);
|
||||||
|
public final static native boolean SipStack_setProxyCSCF(long jarg1, SipStack jarg1_, String jarg2, int jarg3, String jarg4, String jarg5);
|
||||||
public final static native boolean SipStack_setLocalIP(long jarg1, SipStack jarg1_, String jarg2);
|
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_setLocalPort(long jarg1, SipStack jarg1_, int jarg2);
|
||||||
public final static native boolean SipStack_setEarlyIMS(long jarg1, SipStack jarg1_, boolean jarg2);
|
public final static native boolean SipStack_setEarlyIMS(long jarg1, SipStack jarg1_, boolean jarg2);
|
||||||
public final static native boolean SipStack_addHeader(long jarg1, SipStack jarg1_, String jarg2, String jarg3);
|
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_removeHeader(long jarg1, SipStack jarg1_, String jarg2);
|
||||||
public final static native boolean SipStack_addDnsServer(long jarg1, SipStack jarg1_, String jarg2);
|
public final static native boolean SipStack_addDnsServer(long jarg1, SipStack jarg1_, String jarg2);
|
||||||
public final static native boolean SipStack_setAoR(long jarg1, SipStack jarg1_, String jarg2, int jarg3);
|
public final static native boolean SipStack_setAoR(long jarg1, SipStack jarg1_, String jarg2, int jarg3);
|
||||||
|
public final static native boolean SipStack_setSTUNServer(long jarg1, SipStack jarg1_, String jarg2, int jarg3);
|
||||||
|
public final static native boolean SipStack_setSTUNCred(long jarg1, SipStack jarg1_, String jarg2, String jarg3);
|
||||||
public final static native String SipStack_dnsENUM(long jarg1, SipStack jarg1_, String jarg2, String jarg3, String jarg4);
|
public final static native String SipStack_dnsENUM(long jarg1, SipStack jarg1_, String jarg2, String jarg3, String jarg4);
|
||||||
public final static native String SipStack_dnsNaptrSrv(long jarg1, SipStack jarg1_, String jarg2, String jarg3, short[] jarg4);
|
public final static native String SipStack_dnsNaptrSrv(long jarg1, SipStack jarg1_, String jarg2, String jarg3, int[] jarg4);
|
||||||
|
public final static native String SipStack_dnsSrv(long jarg1, SipStack jarg1_, String jarg2, int[] jarg3);
|
||||||
public final static native boolean SipStack_isValid(long jarg1, SipStack jarg1_);
|
public final static native boolean SipStack_isValid(long jarg1, SipStack jarg1_);
|
||||||
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 void SipStack_setCodecs(int jarg1);
|
public final static native void SipStack_setCodecs(int jarg1);
|
||||||
|
@ -252,6 +264,13 @@ class tinyWRAPJNI {
|
||||||
public final static native boolean XcapStack_setTimeout(long jarg1, XcapStack jarg1_, long jarg2);
|
public final static native boolean XcapStack_setTimeout(long jarg1, XcapStack jarg1_, long jarg2);
|
||||||
public final static native boolean XcapStack_getDocument(long jarg1, XcapStack jarg1_, String jarg2);
|
public final static native boolean XcapStack_getDocument(long jarg1, XcapStack jarg1_, String jarg2);
|
||||||
public final static native boolean XcapStack_stop(long jarg1, XcapStack jarg1_);
|
public final static native boolean XcapStack_stop(long jarg1, XcapStack jarg1_);
|
||||||
|
public final static native long new_RPData();
|
||||||
|
public final static native void delete_RPData(long jarg1);
|
||||||
|
public final static native int RPData_getType(long jarg1, RPData jarg1_);
|
||||||
|
public final static native long RPData_getPayloadLength(long jarg1, RPData jarg1_);
|
||||||
|
public final static native long RPData_getPayload(long jarg1, RPData jarg1_, java.nio.ByteBuffer jarg2, long jarg3);
|
||||||
|
public final static native long SMSEncoder_encodeSubmit(int jarg1, String jarg2, String jarg3, String jarg4);
|
||||||
|
public final static native void delete_SMSEncoder(long jarg1);
|
||||||
public final static native long SWIGDialogEventUpcast(long jarg1);
|
public final static native long SWIGDialogEventUpcast(long jarg1);
|
||||||
public final static native long SWIGStackEventUpcast(long jarg1);
|
public final static native long SWIGStackEventUpcast(long jarg1);
|
||||||
public final static native long SWIGCallEventUpcast(long jarg1);
|
public final static native long SWIGCallEventUpcast(long jarg1);
|
||||||
|
|
|
@ -425,6 +425,9 @@ namespace Swig {
|
||||||
#include "Xcap.h"
|
#include "Xcap.h"
|
||||||
|
|
||||||
|
|
||||||
|
#include "SMSEncoder.h"
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
/* ---------------------------------------------------
|
/* ---------------------------------------------------
|
||||||
* C++ director class methods
|
* C++ director class methods
|
||||||
|
@ -1550,6 +1553,118 @@ SWIGEXPORT jboolean JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_SipUri_1isVal
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SWIGEXPORT jstring JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_SipUri_1getScheme(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) {
|
||||||
|
jstring jresult = 0 ;
|
||||||
|
SipUri *arg1 = (SipUri *) 0 ;
|
||||||
|
char *result = 0 ;
|
||||||
|
|
||||||
|
(void)jenv;
|
||||||
|
(void)jcls;
|
||||||
|
(void)jarg1_;
|
||||||
|
arg1 = *(SipUri **)&jarg1;
|
||||||
|
result = (char *)(arg1)->getScheme();
|
||||||
|
if(result) jresult = jenv->NewStringUTF((const char *)result);
|
||||||
|
return jresult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SWIGEXPORT jstring JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_SipUri_1getHost(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) {
|
||||||
|
jstring jresult = 0 ;
|
||||||
|
SipUri *arg1 = (SipUri *) 0 ;
|
||||||
|
char *result = 0 ;
|
||||||
|
|
||||||
|
(void)jenv;
|
||||||
|
(void)jcls;
|
||||||
|
(void)jarg1_;
|
||||||
|
arg1 = *(SipUri **)&jarg1;
|
||||||
|
result = (char *)(arg1)->getHost();
|
||||||
|
if(result) jresult = jenv->NewStringUTF((const char *)result);
|
||||||
|
return jresult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SWIGEXPORT jint JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_SipUri_1getPort(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) {
|
||||||
|
jint jresult = 0 ;
|
||||||
|
SipUri *arg1 = (SipUri *) 0 ;
|
||||||
|
unsigned short result;
|
||||||
|
|
||||||
|
(void)jenv;
|
||||||
|
(void)jcls;
|
||||||
|
(void)jarg1_;
|
||||||
|
arg1 = *(SipUri **)&jarg1;
|
||||||
|
result = (unsigned short)(arg1)->getPort();
|
||||||
|
jresult = (jint)result;
|
||||||
|
return jresult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SWIGEXPORT jstring JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_SipUri_1getUserName(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) {
|
||||||
|
jstring jresult = 0 ;
|
||||||
|
SipUri *arg1 = (SipUri *) 0 ;
|
||||||
|
char *result = 0 ;
|
||||||
|
|
||||||
|
(void)jenv;
|
||||||
|
(void)jcls;
|
||||||
|
(void)jarg1_;
|
||||||
|
arg1 = *(SipUri **)&jarg1;
|
||||||
|
result = (char *)(arg1)->getUserName();
|
||||||
|
if(result) jresult = jenv->NewStringUTF((const char *)result);
|
||||||
|
return jresult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SWIGEXPORT jstring JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_SipUri_1getPassword(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) {
|
||||||
|
jstring jresult = 0 ;
|
||||||
|
SipUri *arg1 = (SipUri *) 0 ;
|
||||||
|
char *result = 0 ;
|
||||||
|
|
||||||
|
(void)jenv;
|
||||||
|
(void)jcls;
|
||||||
|
(void)jarg1_;
|
||||||
|
arg1 = *(SipUri **)&jarg1;
|
||||||
|
result = (char *)(arg1)->getPassword();
|
||||||
|
if(result) jresult = jenv->NewStringUTF((const char *)result);
|
||||||
|
return jresult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SWIGEXPORT jstring JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_SipUri_1getDisplayName(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) {
|
||||||
|
jstring jresult = 0 ;
|
||||||
|
SipUri *arg1 = (SipUri *) 0 ;
|
||||||
|
char *result = 0 ;
|
||||||
|
|
||||||
|
(void)jenv;
|
||||||
|
(void)jcls;
|
||||||
|
(void)jarg1_;
|
||||||
|
arg1 = *(SipUri **)&jarg1;
|
||||||
|
result = (char *)(arg1)->getDisplayName();
|
||||||
|
if(result) jresult = jenv->NewStringUTF((const char *)result);
|
||||||
|
return jresult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SWIGEXPORT jstring JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_SipUri_1getParamValue(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2) {
|
||||||
|
jstring jresult = 0 ;
|
||||||
|
SipUri *arg1 = (SipUri *) 0 ;
|
||||||
|
char *arg2 = (char *) 0 ;
|
||||||
|
char *result = 0 ;
|
||||||
|
|
||||||
|
(void)jenv;
|
||||||
|
(void)jcls;
|
||||||
|
(void)jarg1_;
|
||||||
|
arg1 = *(SipUri **)&jarg1;
|
||||||
|
arg2 = 0;
|
||||||
|
if (jarg2) {
|
||||||
|
arg2 = (char *)jenv->GetStringUTFChars(jarg2, 0);
|
||||||
|
if (!arg2) return 0;
|
||||||
|
}
|
||||||
|
result = (char *)(arg1)->getParamValue((char const *)arg2);
|
||||||
|
if(result) jresult = jenv->NewStringUTF((const char *)result);
|
||||||
|
if (arg2) jenv->ReleaseStringUTFChars(jarg2, (const char *)arg2);
|
||||||
|
return jresult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
SWIGEXPORT jlong JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_new_1SipMessage(JNIEnv *jenv, jclass jcls) {
|
SWIGEXPORT jlong JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_new_1SipMessage(JNIEnv *jenv, jclass jcls) {
|
||||||
jlong jresult = 0 ;
|
jlong jresult = 0 ;
|
||||||
SipMessage *result = 0 ;
|
SipMessage *result = 0 ;
|
||||||
|
@ -4363,11 +4478,55 @@ SWIGEXPORT jboolean JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_SipStack_1set
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
SWIGEXPORT jboolean JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_SipStack_1setProxyCSCF(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2, jlong jarg3, jstring jarg4, jstring jarg5) {
|
SWIGEXPORT jboolean JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_SipStack_1setAMF(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2) {
|
||||||
jboolean jresult = 0 ;
|
jboolean jresult = 0 ;
|
||||||
SipStack *arg1 = (SipStack *) 0 ;
|
SipStack *arg1 = (SipStack *) 0 ;
|
||||||
char *arg2 = (char *) 0 ;
|
char *arg2 = (char *) 0 ;
|
||||||
unsigned int arg3 ;
|
bool result;
|
||||||
|
|
||||||
|
(void)jenv;
|
||||||
|
(void)jcls;
|
||||||
|
(void)jarg1_;
|
||||||
|
arg1 = *(SipStack **)&jarg1;
|
||||||
|
arg2 = 0;
|
||||||
|
if (jarg2) {
|
||||||
|
arg2 = (char *)jenv->GetStringUTFChars(jarg2, 0);
|
||||||
|
if (!arg2) return 0;
|
||||||
|
}
|
||||||
|
result = (bool)(arg1)->setAMF((char const *)arg2);
|
||||||
|
jresult = (jboolean)result;
|
||||||
|
if (arg2) jenv->ReleaseStringUTFChars(jarg2, (const char *)arg2);
|
||||||
|
return jresult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SWIGEXPORT jboolean JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_SipStack_1setOperatorId(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2) {
|
||||||
|
jboolean jresult = 0 ;
|
||||||
|
SipStack *arg1 = (SipStack *) 0 ;
|
||||||
|
char *arg2 = (char *) 0 ;
|
||||||
|
bool result;
|
||||||
|
|
||||||
|
(void)jenv;
|
||||||
|
(void)jcls;
|
||||||
|
(void)jarg1_;
|
||||||
|
arg1 = *(SipStack **)&jarg1;
|
||||||
|
arg2 = 0;
|
||||||
|
if (jarg2) {
|
||||||
|
arg2 = (char *)jenv->GetStringUTFChars(jarg2, 0);
|
||||||
|
if (!arg2) return 0;
|
||||||
|
}
|
||||||
|
result = (bool)(arg1)->setOperatorId((char const *)arg2);
|
||||||
|
jresult = (jboolean)result;
|
||||||
|
if (arg2) jenv->ReleaseStringUTFChars(jarg2, (const char *)arg2);
|
||||||
|
return jresult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SWIGEXPORT jboolean JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_SipStack_1setProxyCSCF(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2, jint jarg3, jstring jarg4, jstring jarg5) {
|
||||||
|
jboolean jresult = 0 ;
|
||||||
|
SipStack *arg1 = (SipStack *) 0 ;
|
||||||
|
char *arg2 = (char *) 0 ;
|
||||||
|
unsigned short arg3 ;
|
||||||
char *arg4 = (char *) 0 ;
|
char *arg4 = (char *) 0 ;
|
||||||
char *arg5 = (char *) 0 ;
|
char *arg5 = (char *) 0 ;
|
||||||
bool result;
|
bool result;
|
||||||
|
@ -4381,7 +4540,7 @@ SWIGEXPORT jboolean JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_SipStack_1set
|
||||||
arg2 = (char *)jenv->GetStringUTFChars(jarg2, 0);
|
arg2 = (char *)jenv->GetStringUTFChars(jarg2, 0);
|
||||||
if (!arg2) return 0;
|
if (!arg2) return 0;
|
||||||
}
|
}
|
||||||
arg3 = (unsigned int)jarg3;
|
arg3 = (unsigned short)jarg3;
|
||||||
arg4 = 0;
|
arg4 = 0;
|
||||||
if (jarg4) {
|
if (jarg4) {
|
||||||
arg4 = (char *)jenv->GetStringUTFChars(jarg4, 0);
|
arg4 = (char *)jenv->GetStringUTFChars(jarg4, 0);
|
||||||
|
@ -4423,17 +4582,17 @@ SWIGEXPORT jboolean JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_SipStack_1set
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
SWIGEXPORT jboolean JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_SipStack_1setLocalPort(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jlong jarg2) {
|
SWIGEXPORT jboolean JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_SipStack_1setLocalPort(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jint jarg2) {
|
||||||
jboolean jresult = 0 ;
|
jboolean jresult = 0 ;
|
||||||
SipStack *arg1 = (SipStack *) 0 ;
|
SipStack *arg1 = (SipStack *) 0 ;
|
||||||
unsigned int arg2 ;
|
unsigned short arg2 ;
|
||||||
bool result;
|
bool result;
|
||||||
|
|
||||||
(void)jenv;
|
(void)jenv;
|
||||||
(void)jcls;
|
(void)jcls;
|
||||||
(void)jarg1_;
|
(void)jarg1_;
|
||||||
arg1 = *(SipStack **)&jarg1;
|
arg1 = *(SipStack **)&jarg1;
|
||||||
arg2 = (unsigned int)jarg2;
|
arg2 = (unsigned short)jarg2;
|
||||||
result = (bool)(arg1)->setLocalPort(arg2);
|
result = (bool)(arg1)->setLocalPort(arg2);
|
||||||
jresult = (jboolean)result;
|
jresult = (jboolean)result;
|
||||||
return jresult;
|
return jresult;
|
||||||
|
@ -4554,6 +4713,59 @@ SWIGEXPORT jboolean JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_SipStack_1set
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SWIGEXPORT jboolean JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_SipStack_1setSTUNServer(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2, jint jarg3) {
|
||||||
|
jboolean jresult = 0 ;
|
||||||
|
SipStack *arg1 = (SipStack *) 0 ;
|
||||||
|
char *arg2 = (char *) 0 ;
|
||||||
|
unsigned short arg3 ;
|
||||||
|
bool result;
|
||||||
|
|
||||||
|
(void)jenv;
|
||||||
|
(void)jcls;
|
||||||
|
(void)jarg1_;
|
||||||
|
arg1 = *(SipStack **)&jarg1;
|
||||||
|
arg2 = 0;
|
||||||
|
if (jarg2) {
|
||||||
|
arg2 = (char *)jenv->GetStringUTFChars(jarg2, 0);
|
||||||
|
if (!arg2) return 0;
|
||||||
|
}
|
||||||
|
arg3 = (unsigned short)jarg3;
|
||||||
|
result = (bool)(arg1)->setSTUNServer((char const *)arg2,arg3);
|
||||||
|
jresult = (jboolean)result;
|
||||||
|
if (arg2) jenv->ReleaseStringUTFChars(jarg2, (const char *)arg2);
|
||||||
|
return jresult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SWIGEXPORT jboolean JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_SipStack_1setSTUNCred(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2, jstring jarg3) {
|
||||||
|
jboolean jresult = 0 ;
|
||||||
|
SipStack *arg1 = (SipStack *) 0 ;
|
||||||
|
char *arg2 = (char *) 0 ;
|
||||||
|
char *arg3 = (char *) 0 ;
|
||||||
|
bool result;
|
||||||
|
|
||||||
|
(void)jenv;
|
||||||
|
(void)jcls;
|
||||||
|
(void)jarg1_;
|
||||||
|
arg1 = *(SipStack **)&jarg1;
|
||||||
|
arg2 = 0;
|
||||||
|
if (jarg2) {
|
||||||
|
arg2 = (char *)jenv->GetStringUTFChars(jarg2, 0);
|
||||||
|
if (!arg2) return 0;
|
||||||
|
}
|
||||||
|
arg3 = 0;
|
||||||
|
if (jarg3) {
|
||||||
|
arg3 = (char *)jenv->GetStringUTFChars(jarg3, 0);
|
||||||
|
if (!arg3) return 0;
|
||||||
|
}
|
||||||
|
result = (bool)(arg1)->setSTUNCred((char const *)arg2,(char const *)arg3);
|
||||||
|
jresult = (jboolean)result;
|
||||||
|
if (arg2) jenv->ReleaseStringUTFChars(jarg2, (const char *)arg2);
|
||||||
|
if (arg3) jenv->ReleaseStringUTFChars(jarg3, (const char *)arg3);
|
||||||
|
return jresult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
SWIGEXPORT jstring JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_SipStack_1dnsENUM(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2, jstring jarg3, jstring jarg4) {
|
SWIGEXPORT jstring JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_SipStack_1dnsENUM(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2, jstring jarg3, jstring jarg4) {
|
||||||
jstring jresult = 0 ;
|
jstring jresult = 0 ;
|
||||||
SipStack *arg1 = (SipStack *) 0 ;
|
SipStack *arg1 = (SipStack *) 0 ;
|
||||||
|
@ -4591,13 +4803,13 @@ SWIGEXPORT jstring JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_SipStack_1dnsE
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
SWIGEXPORT jstring JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_SipStack_1dnsNaptrSrv(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2, jstring jarg3, jshortArray jarg4) {
|
SWIGEXPORT jstring JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_SipStack_1dnsNaptrSrv(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2, jstring jarg3, jintArray jarg4) {
|
||||||
jstring jresult = 0 ;
|
jstring jresult = 0 ;
|
||||||
SipStack *arg1 = (SipStack *) 0 ;
|
SipStack *arg1 = (SipStack *) 0 ;
|
||||||
char *arg2 = (char *) 0 ;
|
char *arg2 = (char *) 0 ;
|
||||||
char *arg3 = (char *) 0 ;
|
char *arg3 = (char *) 0 ;
|
||||||
short *arg4 = (short *) 0 ;
|
unsigned short *arg4 = (unsigned short *) 0 ;
|
||||||
short temp4 ;
|
unsigned short temp4 ;
|
||||||
char *result = 0 ;
|
char *result = 0 ;
|
||||||
|
|
||||||
(void)jenv;
|
(void)jenv;
|
||||||
|
@ -4628,8 +4840,8 @@ SWIGEXPORT jstring JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_SipStack_1dnsN
|
||||||
result = (char *)(arg1)->dnsNaptrSrv((char const *)arg2,(char const *)arg3,arg4);
|
result = (char *)(arg1)->dnsNaptrSrv((char const *)arg2,(char const *)arg3,arg4);
|
||||||
if(result) jresult = jenv->NewStringUTF((const char *)result);
|
if(result) jresult = jenv->NewStringUTF((const char *)result);
|
||||||
{
|
{
|
||||||
jshort jvalue = (jshort)temp4;
|
jint jvalue = (jint)temp4;
|
||||||
jenv->SetShortArrayRegion(jarg4, 0, 1, &jvalue);
|
jenv->SetIntArrayRegion(jarg4, 0, 1, &jvalue);
|
||||||
}
|
}
|
||||||
if (arg2) jenv->ReleaseStringUTFChars(jarg2, (const char *)arg2);
|
if (arg2) jenv->ReleaseStringUTFChars(jarg2, (const char *)arg2);
|
||||||
if (arg3) jenv->ReleaseStringUTFChars(jarg3, (const char *)arg3);
|
if (arg3) jenv->ReleaseStringUTFChars(jarg3, (const char *)arg3);
|
||||||
|
@ -4639,6 +4851,47 @@ SWIGEXPORT jstring JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_SipStack_1dnsN
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SWIGEXPORT jstring JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_SipStack_1dnsSrv(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jstring jarg2, jintArray jarg3) {
|
||||||
|
jstring jresult = 0 ;
|
||||||
|
SipStack *arg1 = (SipStack *) 0 ;
|
||||||
|
char *arg2 = (char *) 0 ;
|
||||||
|
unsigned short *arg3 = (unsigned short *) 0 ;
|
||||||
|
unsigned short temp3 ;
|
||||||
|
char *result = 0 ;
|
||||||
|
|
||||||
|
(void)jenv;
|
||||||
|
(void)jcls;
|
||||||
|
(void)jarg1_;
|
||||||
|
arg1 = *(SipStack **)&jarg1;
|
||||||
|
arg2 = 0;
|
||||||
|
if (jarg2) {
|
||||||
|
arg2 = (char *)jenv->GetStringUTFChars(jarg2, 0);
|
||||||
|
if (!arg2) return 0;
|
||||||
|
}
|
||||||
|
{
|
||||||
|
if (!jarg3) {
|
||||||
|
SWIG_JavaThrowException(jenv, SWIG_JavaNullPointerException, "array null");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
if (jenv->GetArrayLength(jarg3) == 0) {
|
||||||
|
SWIG_JavaThrowException(jenv, SWIG_JavaIndexOutOfBoundsException, "Array must contain at least 1 element");
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
arg3 = &temp3;
|
||||||
|
}
|
||||||
|
result = (char *)(arg1)->dnsSrv((char const *)arg2,arg3);
|
||||||
|
if(result) jresult = jenv->NewStringUTF((const char *)result);
|
||||||
|
{
|
||||||
|
jint jvalue = (jint)temp3;
|
||||||
|
jenv->SetIntArrayRegion(jarg3, 0, 1, &jvalue);
|
||||||
|
}
|
||||||
|
if (arg2) jenv->ReleaseStringUTFChars(jarg2, (const char *)arg2);
|
||||||
|
|
||||||
|
delete [] result;
|
||||||
|
return jresult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
SWIGEXPORT jboolean JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_SipStack_1isValid(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) {
|
SWIGEXPORT jboolean JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_SipStack_1isValid(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) {
|
||||||
jboolean jresult = 0 ;
|
jboolean jresult = 0 ;
|
||||||
SipStack *arg1 = (SipStack *) 0 ;
|
SipStack *arg1 = (SipStack *) 0 ;
|
||||||
|
@ -5484,6 +5737,124 @@ SWIGEXPORT jboolean JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_XcapStack_1st
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SWIGEXPORT jlong JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_new_1RPData(JNIEnv *jenv, jclass jcls) {
|
||||||
|
jlong jresult = 0 ;
|
||||||
|
RPData *result = 0 ;
|
||||||
|
|
||||||
|
(void)jenv;
|
||||||
|
(void)jcls;
|
||||||
|
result = (RPData *)new RPData();
|
||||||
|
*(RPData **)&jresult = result;
|
||||||
|
return jresult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SWIGEXPORT void JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_delete_1RPData(JNIEnv *jenv, jclass jcls, jlong jarg1) {
|
||||||
|
RPData *arg1 = (RPData *) 0 ;
|
||||||
|
|
||||||
|
(void)jenv;
|
||||||
|
(void)jcls;
|
||||||
|
arg1 = *(RPData **)&jarg1;
|
||||||
|
delete arg1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SWIGEXPORT jint JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_RPData_1getType(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) {
|
||||||
|
jint jresult = 0 ;
|
||||||
|
RPData *arg1 = (RPData *) 0 ;
|
||||||
|
twrap_rpdata_type_t result;
|
||||||
|
|
||||||
|
(void)jenv;
|
||||||
|
(void)jcls;
|
||||||
|
(void)jarg1_;
|
||||||
|
arg1 = *(RPData **)&jarg1;
|
||||||
|
result = (twrap_rpdata_type_t)(arg1)->getType();
|
||||||
|
jresult = (jint)result;
|
||||||
|
return jresult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SWIGEXPORT jlong JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_RPData_1getPayloadLength(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_) {
|
||||||
|
jlong jresult = 0 ;
|
||||||
|
RPData *arg1 = (RPData *) 0 ;
|
||||||
|
unsigned int result;
|
||||||
|
|
||||||
|
(void)jenv;
|
||||||
|
(void)jcls;
|
||||||
|
(void)jarg1_;
|
||||||
|
arg1 = *(RPData **)&jarg1;
|
||||||
|
result = (unsigned int)(arg1)->getPayloadLength();
|
||||||
|
jresult = (jlong)result;
|
||||||
|
return jresult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SWIGEXPORT jlong JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_RPData_1getPayload(JNIEnv *jenv, jclass jcls, jlong jarg1, jobject jarg1_, jbyteArray jarg2, jlong jarg3) {
|
||||||
|
jlong jresult = 0 ;
|
||||||
|
RPData *arg1 = (RPData *) 0 ;
|
||||||
|
void *arg2 = (void *) 0 ;
|
||||||
|
unsigned int arg3 ;
|
||||||
|
unsigned int result;
|
||||||
|
|
||||||
|
(void)jenv;
|
||||||
|
(void)jcls;
|
||||||
|
(void)jarg1_;
|
||||||
|
arg1 = *(RPData **)&jarg1;
|
||||||
|
|
||||||
|
arg2 = jenv->GetDirectBufferAddress(jarg2);
|
||||||
|
|
||||||
|
arg3 = (unsigned int)jarg3;
|
||||||
|
result = (unsigned int)(arg1)->getPayload(arg2,arg3);
|
||||||
|
jresult = (jlong)result;
|
||||||
|
return jresult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SWIGEXPORT jlong JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_SMSEncoder_1encodeSubmit(JNIEnv *jenv, jclass jcls, jint jarg1, jstring jarg2, jstring jarg3, jstring jarg4) {
|
||||||
|
jlong jresult = 0 ;
|
||||||
|
int arg1 ;
|
||||||
|
char *arg2 = (char *) 0 ;
|
||||||
|
char *arg3 = (char *) 0 ;
|
||||||
|
char *arg4 = (char *) 0 ;
|
||||||
|
RPData *result = 0 ;
|
||||||
|
|
||||||
|
(void)jenv;
|
||||||
|
(void)jcls;
|
||||||
|
arg1 = (int)jarg1;
|
||||||
|
arg2 = 0;
|
||||||
|
if (jarg2) {
|
||||||
|
arg2 = (char *)jenv->GetStringUTFChars(jarg2, 0);
|
||||||
|
if (!arg2) return 0;
|
||||||
|
}
|
||||||
|
arg3 = 0;
|
||||||
|
if (jarg3) {
|
||||||
|
arg3 = (char *)jenv->GetStringUTFChars(jarg3, 0);
|
||||||
|
if (!arg3) return 0;
|
||||||
|
}
|
||||||
|
arg4 = 0;
|
||||||
|
if (jarg4) {
|
||||||
|
arg4 = (char *)jenv->GetStringUTFChars(jarg4, 0);
|
||||||
|
if (!arg4) return 0;
|
||||||
|
}
|
||||||
|
result = (RPData *)SMSEncoder::encodeSubmit(arg1,(char const *)arg2,(char const *)arg3,(char const *)arg4);
|
||||||
|
*(RPData **)&jresult = result;
|
||||||
|
if (arg2) jenv->ReleaseStringUTFChars(jarg2, (const char *)arg2);
|
||||||
|
if (arg3) jenv->ReleaseStringUTFChars(jarg3, (const char *)arg3);
|
||||||
|
if (arg4) jenv->ReleaseStringUTFChars(jarg4, (const char *)arg4);
|
||||||
|
return jresult;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
SWIGEXPORT void JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_delete_1SMSEncoder(JNIEnv *jenv, jclass jcls, jlong jarg1) {
|
||||||
|
SMSEncoder *arg1 = (SMSEncoder *) 0 ;
|
||||||
|
|
||||||
|
(void)jenv;
|
||||||
|
(void)jcls;
|
||||||
|
arg1 = *(SMSEncoder **)&jarg1;
|
||||||
|
delete arg1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
SWIGEXPORT jlong JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_SWIGDialogEventUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) {
|
SWIGEXPORT jlong JNICALL Java_org_doubango_tinyWRAP_tinyWRAPJNI_SWIGDialogEventUpcast(JNIEnv *jenv, jclass jcls, jlong jarg1) {
|
||||||
jlong baseptr = 0;
|
jlong baseptr = 0;
|
||||||
(void)jenv;
|
(void)jenv;
|
||||||
|
|
|
@ -15,6 +15,7 @@ public enum tsip_invite_event_type_t {
|
||||||
tsip_o_ect_ok,
|
tsip_o_ect_ok,
|
||||||
tsip_o_ect_nok,
|
tsip_o_ect_nok,
|
||||||
tsip_i_ect,
|
tsip_i_ect,
|
||||||
|
tsip_m_early_media,
|
||||||
tsip_m_local_hold_ok,
|
tsip_m_local_hold_ok,
|
||||||
tsip_m_local_hold_nok,
|
tsip_m_local_hold_nok,
|
||||||
tsip_m_local_resume_ok,
|
tsip_m_local_resume_ok,
|
||||||
|
|
|
@ -0,0 +1,55 @@
|
||||||
|
/* ----------------------------------------------------------------------------
|
||||||
|
* This file was automatically generated by SWIG (http://www.swig.org).
|
||||||
|
* Version 1.3.39
|
||||||
|
*
|
||||||
|
* 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 enum twrap_rpdata_type_t {
|
||||||
|
twrap_rpdata_type_sms_none,
|
||||||
|
twrap_rpdata_type_sms_submit,
|
||||||
|
twrap_rpdata_type_sms_deliver,
|
||||||
|
twrap_rpdata_type_sms_status_report,
|
||||||
|
twrap_rpdata_type_sms_command;
|
||||||
|
|
||||||
|
public final int swigValue() {
|
||||||
|
return swigValue;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static twrap_rpdata_type_t swigToEnum(int swigValue) {
|
||||||
|
twrap_rpdata_type_t[] swigValues = twrap_rpdata_type_t.class.getEnumConstants();
|
||||||
|
if (swigValue < swigValues.length && swigValue >= 0 && swigValues[swigValue].swigValue == swigValue)
|
||||||
|
return swigValues[swigValue];
|
||||||
|
for (twrap_rpdata_type_t swigEnum : swigValues)
|
||||||
|
if (swigEnum.swigValue == swigValue)
|
||||||
|
return swigEnum;
|
||||||
|
throw new IllegalArgumentException("No enum " + twrap_rpdata_type_t.class + " with value " + swigValue);
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("unused")
|
||||||
|
private twrap_rpdata_type_t() {
|
||||||
|
this.swigValue = SwigNext.next++;
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("unused")
|
||||||
|
private twrap_rpdata_type_t(int swigValue) {
|
||||||
|
this.swigValue = swigValue;
|
||||||
|
SwigNext.next = swigValue+1;
|
||||||
|
}
|
||||||
|
|
||||||
|
@SuppressWarnings("unused")
|
||||||
|
private twrap_rpdata_type_t(twrap_rpdata_type_t swigEnum) {
|
||||||
|
this.swigValue = swigEnum.swigValue;
|
||||||
|
SwigNext.next = this.swigValue+1;
|
||||||
|
}
|
||||||
|
|
||||||
|
private final int swigValue;
|
||||||
|
|
||||||
|
private static class SwigNext {
|
||||||
|
private static int next = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
|
@ -116,6 +116,13 @@ sub DESTROY {
|
||||||
}
|
}
|
||||||
|
|
||||||
*isValid = *tinyWRAPc::SipUri_isValid;
|
*isValid = *tinyWRAPc::SipUri_isValid;
|
||||||
|
*getScheme = *tinyWRAPc::SipUri_getScheme;
|
||||||
|
*getHost = *tinyWRAPc::SipUri_getHost;
|
||||||
|
*getPort = *tinyWRAPc::SipUri_getPort;
|
||||||
|
*getUserName = *tinyWRAPc::SipUri_getUserName;
|
||||||
|
*getPassword = *tinyWRAPc::SipUri_getPassword;
|
||||||
|
*getDisplayName = *tinyWRAPc::SipUri_getDisplayName;
|
||||||
|
*getParamValue = *tinyWRAPc::SipUri_getParamValue;
|
||||||
sub DISOWN {
|
sub DISOWN {
|
||||||
my $self = shift;
|
my $self = shift;
|
||||||
my $ptr = tied(%$self);
|
my $ptr = tied(%$self);
|
||||||
|
@ -1081,6 +1088,8 @@ sub DESTROY {
|
||||||
*setIMPI = *tinyWRAPc::SipStack_setIMPI;
|
*setIMPI = *tinyWRAPc::SipStack_setIMPI;
|
||||||
*setIMPU = *tinyWRAPc::SipStack_setIMPU;
|
*setIMPU = *tinyWRAPc::SipStack_setIMPU;
|
||||||
*setPassword = *tinyWRAPc::SipStack_setPassword;
|
*setPassword = *tinyWRAPc::SipStack_setPassword;
|
||||||
|
*setAMF = *tinyWRAPc::SipStack_setAMF;
|
||||||
|
*setOperatorId = *tinyWRAPc::SipStack_setOperatorId;
|
||||||
*setProxyCSCF = *tinyWRAPc::SipStack_setProxyCSCF;
|
*setProxyCSCF = *tinyWRAPc::SipStack_setProxyCSCF;
|
||||||
*setLocalIP = *tinyWRAPc::SipStack_setLocalIP;
|
*setLocalIP = *tinyWRAPc::SipStack_setLocalIP;
|
||||||
*setLocalPort = *tinyWRAPc::SipStack_setLocalPort;
|
*setLocalPort = *tinyWRAPc::SipStack_setLocalPort;
|
||||||
|
@ -1089,8 +1098,11 @@ sub DESTROY {
|
||||||
*removeHeader = *tinyWRAPc::SipStack_removeHeader;
|
*removeHeader = *tinyWRAPc::SipStack_removeHeader;
|
||||||
*addDnsServer = *tinyWRAPc::SipStack_addDnsServer;
|
*addDnsServer = *tinyWRAPc::SipStack_addDnsServer;
|
||||||
*setAoR = *tinyWRAPc::SipStack_setAoR;
|
*setAoR = *tinyWRAPc::SipStack_setAoR;
|
||||||
|
*setSTUNServer = *tinyWRAPc::SipStack_setSTUNServer;
|
||||||
|
*setSTUNCred = *tinyWRAPc::SipStack_setSTUNCred;
|
||||||
*dnsENUM = *tinyWRAPc::SipStack_dnsENUM;
|
*dnsENUM = *tinyWRAPc::SipStack_dnsENUM;
|
||||||
*dnsNaptrSrv = *tinyWRAPc::SipStack_dnsNaptrSrv;
|
*dnsNaptrSrv = *tinyWRAPc::SipStack_dnsNaptrSrv;
|
||||||
|
*dnsSrv = *tinyWRAPc::SipStack_dnsSrv;
|
||||||
*isValid = *tinyWRAPc::SipStack_isValid;
|
*isValid = *tinyWRAPc::SipStack_isValid;
|
||||||
*stop = *tinyWRAPc::SipStack_stop;
|
*stop = *tinyWRAPc::SipStack_stop;
|
||||||
*setCodecs = *tinyWRAPc::SipStack_setCodecs;
|
*setCodecs = *tinyWRAPc::SipStack_setCodecs;
|
||||||
|
@ -1314,6 +1326,78 @@ sub ACQUIRE {
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
############# Class : tinyWRAP::RPData ##############
|
||||||
|
|
||||||
|
package tinyWRAP::RPData;
|
||||||
|
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
|
||||||
|
@ISA = qw( tinyWRAP );
|
||||||
|
%OWNER = ();
|
||||||
|
%ITERATORS = ();
|
||||||
|
sub new {
|
||||||
|
my $pkg = shift;
|
||||||
|
my $self = tinyWRAPc::new_RPData(@_);
|
||||||
|
bless $self, $pkg if defined($self);
|
||||||
|
}
|
||||||
|
|
||||||
|
sub DESTROY {
|
||||||
|
return unless $_[0]->isa('HASH');
|
||||||
|
my $self = tied(%{$_[0]});
|
||||||
|
return unless defined $self;
|
||||||
|
delete $ITERATORS{$self};
|
||||||
|
if (exists $OWNER{$self}) {
|
||||||
|
tinyWRAPc::delete_RPData($self);
|
||||||
|
delete $OWNER{$self};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
*getType = *tinyWRAPc::RPData_getType;
|
||||||
|
*getPayloadLength = *tinyWRAPc::RPData_getPayloadLength;
|
||||||
|
*getPayload = *tinyWRAPc::RPData_getPayload;
|
||||||
|
sub DISOWN {
|
||||||
|
my $self = shift;
|
||||||
|
my $ptr = tied(%$self);
|
||||||
|
delete $OWNER{$ptr};
|
||||||
|
}
|
||||||
|
|
||||||
|
sub ACQUIRE {
|
||||||
|
my $self = shift;
|
||||||
|
my $ptr = tied(%$self);
|
||||||
|
$OWNER{$ptr} = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
############# Class : tinyWRAP::SMSEncoder ##############
|
||||||
|
|
||||||
|
package tinyWRAP::SMSEncoder;
|
||||||
|
use vars qw(@ISA %OWNER %ITERATORS %BLESSEDMEMBERS);
|
||||||
|
@ISA = qw( tinyWRAP );
|
||||||
|
%OWNER = ();
|
||||||
|
%ITERATORS = ();
|
||||||
|
*encodeSubmit = *tinyWRAPc::SMSEncoder_encodeSubmit;
|
||||||
|
sub DESTROY {
|
||||||
|
return unless $_[0]->isa('HASH');
|
||||||
|
my $self = tied(%{$_[0]});
|
||||||
|
return unless defined $self;
|
||||||
|
delete $ITERATORS{$self};
|
||||||
|
if (exists $OWNER{$self}) {
|
||||||
|
tinyWRAPc::delete_SMSEncoder($self);
|
||||||
|
delete $OWNER{$self};
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
sub DISOWN {
|
||||||
|
my $self = shift;
|
||||||
|
my $ptr = tied(%$self);
|
||||||
|
delete $OWNER{$ptr};
|
||||||
|
}
|
||||||
|
|
||||||
|
sub ACQUIRE {
|
||||||
|
my $self = shift;
|
||||||
|
my $ptr = tied(%$self);
|
||||||
|
$OWNER{$ptr} = 1;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
# ------- VARIABLE STUBS --------
|
# ------- VARIABLE STUBS --------
|
||||||
|
|
||||||
package tinyWRAP;
|
package tinyWRAP;
|
||||||
|
@ -1363,6 +1447,7 @@ package tinyWRAP;
|
||||||
*tsip_o_ect_ok = *tinyWRAPc::tsip_o_ect_ok;
|
*tsip_o_ect_ok = *tinyWRAPc::tsip_o_ect_ok;
|
||||||
*tsip_o_ect_nok = *tinyWRAPc::tsip_o_ect_nok;
|
*tsip_o_ect_nok = *tinyWRAPc::tsip_o_ect_nok;
|
||||||
*tsip_i_ect = *tinyWRAPc::tsip_i_ect;
|
*tsip_i_ect = *tinyWRAPc::tsip_i_ect;
|
||||||
|
*tsip_m_early_media = *tinyWRAPc::tsip_m_early_media;
|
||||||
*tsip_m_local_hold_ok = *tinyWRAPc::tsip_m_local_hold_ok;
|
*tsip_m_local_hold_ok = *tinyWRAPc::tsip_m_local_hold_ok;
|
||||||
*tsip_m_local_hold_nok = *tinyWRAPc::tsip_m_local_hold_nok;
|
*tsip_m_local_hold_nok = *tinyWRAPc::tsip_m_local_hold_nok;
|
||||||
*tsip_m_local_resume_ok = *tinyWRAPc::tsip_m_local_resume_ok;
|
*tsip_m_local_resume_ok = *tinyWRAPc::tsip_m_local_resume_ok;
|
||||||
|
@ -1393,6 +1478,9 @@ package tinyWRAP;
|
||||||
*tdav_codec_id_speex_nb = *tinyWRAPc::tdav_codec_id_speex_nb;
|
*tdav_codec_id_speex_nb = *tinyWRAPc::tdav_codec_id_speex_nb;
|
||||||
*tdav_codec_id_speex_wb = *tinyWRAPc::tdav_codec_id_speex_wb;
|
*tdav_codec_id_speex_wb = *tinyWRAPc::tdav_codec_id_speex_wb;
|
||||||
*tdav_codec_id_speex_uwb = *tinyWRAPc::tdav_codec_id_speex_uwb;
|
*tdav_codec_id_speex_uwb = *tinyWRAPc::tdav_codec_id_speex_uwb;
|
||||||
|
*tdav_codec_id_bv16 = *tinyWRAPc::tdav_codec_id_bv16;
|
||||||
|
*tdav_codec_id_bv32 = *tinyWRAPc::tdav_codec_id_bv32;
|
||||||
|
*tdav_codec_id_evrc = *tinyWRAPc::tdav_codec_id_evrc;
|
||||||
*tdav_codec_id_h261 = *tinyWRAPc::tdav_codec_id_h261;
|
*tdav_codec_id_h261 = *tinyWRAPc::tdav_codec_id_h261;
|
||||||
*tdav_codec_id_h263 = *tinyWRAPc::tdav_codec_id_h263;
|
*tdav_codec_id_h263 = *tinyWRAPc::tdav_codec_id_h263;
|
||||||
*tdav_codec_id_h263p = *tinyWRAPc::tdav_codec_id_h263p;
|
*tdav_codec_id_h263p = *tinyWRAPc::tdav_codec_id_h263p;
|
||||||
|
@ -1405,4 +1493,9 @@ package tinyWRAP;
|
||||||
*thttp_event_auth_failed = *tinyWRAPc::thttp_event_auth_failed;
|
*thttp_event_auth_failed = *tinyWRAPc::thttp_event_auth_failed;
|
||||||
*thttp_event_closed = *tinyWRAPc::thttp_event_closed;
|
*thttp_event_closed = *tinyWRAPc::thttp_event_closed;
|
||||||
*thttp_event_transport_error = *tinyWRAPc::thttp_event_transport_error;
|
*thttp_event_transport_error = *tinyWRAPc::thttp_event_transport_error;
|
||||||
|
*twrap_rpdata_type_sms_none = *tinyWRAPc::twrap_rpdata_type_sms_none;
|
||||||
|
*twrap_rpdata_type_sms_submit = *tinyWRAPc::twrap_rpdata_type_sms_submit;
|
||||||
|
*twrap_rpdata_type_sms_deliver = *tinyWRAPc::twrap_rpdata_type_sms_deliver;
|
||||||
|
*twrap_rpdata_type_sms_status_report = *tinyWRAPc::twrap_rpdata_type_sms_status_report;
|
||||||
|
*twrap_rpdata_type_sms_command = *tinyWRAPc::twrap_rpdata_type_sms_command;
|
||||||
1;
|
1;
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -99,6 +99,13 @@ class SipUri(_object):
|
||||||
__swig_destroy__ = _tinyWRAP.delete_SipUri
|
__swig_destroy__ = _tinyWRAP.delete_SipUri
|
||||||
__del__ = lambda self : None;
|
__del__ = lambda self : None;
|
||||||
def isValid(self, *args): return _tinyWRAP.SipUri_isValid(self, *args)
|
def isValid(self, *args): return _tinyWRAP.SipUri_isValid(self, *args)
|
||||||
|
def getScheme(self): return _tinyWRAP.SipUri_getScheme(self)
|
||||||
|
def getHost(self): return _tinyWRAP.SipUri_getHost(self)
|
||||||
|
def getPort(self): return _tinyWRAP.SipUri_getPort(self)
|
||||||
|
def getUserName(self): return _tinyWRAP.SipUri_getUserName(self)
|
||||||
|
def getPassword(self): return _tinyWRAP.SipUri_getPassword(self)
|
||||||
|
def getDisplayName(self): return _tinyWRAP.SipUri_getDisplayName(self)
|
||||||
|
def getParamValue(self, *args): return _tinyWRAP.SipUri_getParamValue(self, *args)
|
||||||
SipUri_swigregister = _tinyWRAP.SipUri_swigregister
|
SipUri_swigregister = _tinyWRAP.SipUri_swigregister
|
||||||
SipUri_swigregister(SipUri)
|
SipUri_swigregister(SipUri)
|
||||||
|
|
||||||
|
@ -634,6 +641,8 @@ class SipStack(SafeObject):
|
||||||
def setIMPI(self, *args): return _tinyWRAP.SipStack_setIMPI(self, *args)
|
def setIMPI(self, *args): return _tinyWRAP.SipStack_setIMPI(self, *args)
|
||||||
def setIMPU(self, *args): return _tinyWRAP.SipStack_setIMPU(self, *args)
|
def setIMPU(self, *args): return _tinyWRAP.SipStack_setIMPU(self, *args)
|
||||||
def setPassword(self, *args): return _tinyWRAP.SipStack_setPassword(self, *args)
|
def setPassword(self, *args): return _tinyWRAP.SipStack_setPassword(self, *args)
|
||||||
|
def setAMF(self, *args): return _tinyWRAP.SipStack_setAMF(self, *args)
|
||||||
|
def setOperatorId(self, *args): return _tinyWRAP.SipStack_setOperatorId(self, *args)
|
||||||
def setProxyCSCF(self, *args): return _tinyWRAP.SipStack_setProxyCSCF(self, *args)
|
def setProxyCSCF(self, *args): return _tinyWRAP.SipStack_setProxyCSCF(self, *args)
|
||||||
def setLocalIP(self, *args): return _tinyWRAP.SipStack_setLocalIP(self, *args)
|
def setLocalIP(self, *args): return _tinyWRAP.SipStack_setLocalIP(self, *args)
|
||||||
def setLocalPort(self, *args): return _tinyWRAP.SipStack_setLocalPort(self, *args)
|
def setLocalPort(self, *args): return _tinyWRAP.SipStack_setLocalPort(self, *args)
|
||||||
|
@ -642,8 +651,11 @@ class SipStack(SafeObject):
|
||||||
def removeHeader(self, *args): return _tinyWRAP.SipStack_removeHeader(self, *args)
|
def removeHeader(self, *args): return _tinyWRAP.SipStack_removeHeader(self, *args)
|
||||||
def addDnsServer(self, *args): return _tinyWRAP.SipStack_addDnsServer(self, *args)
|
def addDnsServer(self, *args): return _tinyWRAP.SipStack_addDnsServer(self, *args)
|
||||||
def setAoR(self, *args): return _tinyWRAP.SipStack_setAoR(self, *args)
|
def setAoR(self, *args): return _tinyWRAP.SipStack_setAoR(self, *args)
|
||||||
|
def setSTUNServer(self, *args): return _tinyWRAP.SipStack_setSTUNServer(self, *args)
|
||||||
|
def setSTUNCred(self, *args): return _tinyWRAP.SipStack_setSTUNCred(self, *args)
|
||||||
def dnsENUM(self, *args): return _tinyWRAP.SipStack_dnsENUM(self, *args)
|
def dnsENUM(self, *args): return _tinyWRAP.SipStack_dnsENUM(self, *args)
|
||||||
def dnsNaptrSrv(self, *args): return _tinyWRAP.SipStack_dnsNaptrSrv(self, *args)
|
def dnsNaptrSrv(self, *args): return _tinyWRAP.SipStack_dnsNaptrSrv(self, *args)
|
||||||
|
def dnsSrv(self, *args): return _tinyWRAP.SipStack_dnsSrv(self, *args)
|
||||||
def isValid(self): return _tinyWRAP.SipStack_isValid(self)
|
def isValid(self): return _tinyWRAP.SipStack_isValid(self)
|
||||||
def stop(self): return _tinyWRAP.SipStack_stop(self)
|
def stop(self): return _tinyWRAP.SipStack_stop(self)
|
||||||
__swig_getmethods__["setCodecs"] = lambda x: _tinyWRAP.SipStack_setCodecs
|
__swig_getmethods__["setCodecs"] = lambda x: _tinyWRAP.SipStack_setCodecs
|
||||||
|
@ -706,6 +718,7 @@ tsip_ao_request = _tinyWRAP.tsip_ao_request
|
||||||
tsip_o_ect_ok = _tinyWRAP.tsip_o_ect_ok
|
tsip_o_ect_ok = _tinyWRAP.tsip_o_ect_ok
|
||||||
tsip_o_ect_nok = _tinyWRAP.tsip_o_ect_nok
|
tsip_o_ect_nok = _tinyWRAP.tsip_o_ect_nok
|
||||||
tsip_i_ect = _tinyWRAP.tsip_i_ect
|
tsip_i_ect = _tinyWRAP.tsip_i_ect
|
||||||
|
tsip_m_early_media = _tinyWRAP.tsip_m_early_media
|
||||||
tsip_m_local_hold_ok = _tinyWRAP.tsip_m_local_hold_ok
|
tsip_m_local_hold_ok = _tinyWRAP.tsip_m_local_hold_ok
|
||||||
tsip_m_local_hold_nok = _tinyWRAP.tsip_m_local_hold_nok
|
tsip_m_local_hold_nok = _tinyWRAP.tsip_m_local_hold_nok
|
||||||
tsip_m_local_resume_ok = _tinyWRAP.tsip_m_local_resume_ok
|
tsip_m_local_resume_ok = _tinyWRAP.tsip_m_local_resume_ok
|
||||||
|
@ -736,6 +749,9 @@ tdav_codec_id_ilbc = _tinyWRAP.tdav_codec_id_ilbc
|
||||||
tdav_codec_id_speex_nb = _tinyWRAP.tdav_codec_id_speex_nb
|
tdav_codec_id_speex_nb = _tinyWRAP.tdav_codec_id_speex_nb
|
||||||
tdav_codec_id_speex_wb = _tinyWRAP.tdav_codec_id_speex_wb
|
tdav_codec_id_speex_wb = _tinyWRAP.tdav_codec_id_speex_wb
|
||||||
tdav_codec_id_speex_uwb = _tinyWRAP.tdav_codec_id_speex_uwb
|
tdav_codec_id_speex_uwb = _tinyWRAP.tdav_codec_id_speex_uwb
|
||||||
|
tdav_codec_id_bv16 = _tinyWRAP.tdav_codec_id_bv16
|
||||||
|
tdav_codec_id_bv32 = _tinyWRAP.tdav_codec_id_bv32
|
||||||
|
tdav_codec_id_evrc = _tinyWRAP.tdav_codec_id_evrc
|
||||||
tdav_codec_id_h261 = _tinyWRAP.tdav_codec_id_h261
|
tdav_codec_id_h261 = _tinyWRAP.tdav_codec_id_h261
|
||||||
tdav_codec_id_h263 = _tinyWRAP.tdav_codec_id_h263
|
tdav_codec_id_h263 = _tinyWRAP.tdav_codec_id_h263
|
||||||
tdav_codec_id_h263p = _tinyWRAP.tdav_codec_id_h263p
|
tdav_codec_id_h263p = _tinyWRAP.tdav_codec_id_h263p
|
||||||
|
@ -855,5 +871,46 @@ thttp_event_message = _tinyWRAP.thttp_event_message
|
||||||
thttp_event_auth_failed = _tinyWRAP.thttp_event_auth_failed
|
thttp_event_auth_failed = _tinyWRAP.thttp_event_auth_failed
|
||||||
thttp_event_closed = _tinyWRAP.thttp_event_closed
|
thttp_event_closed = _tinyWRAP.thttp_event_closed
|
||||||
thttp_event_transport_error = _tinyWRAP.thttp_event_transport_error
|
thttp_event_transport_error = _tinyWRAP.thttp_event_transport_error
|
||||||
|
twrap_rpdata_type_sms_none = _tinyWRAP.twrap_rpdata_type_sms_none
|
||||||
|
twrap_rpdata_type_sms_submit = _tinyWRAP.twrap_rpdata_type_sms_submit
|
||||||
|
twrap_rpdata_type_sms_deliver = _tinyWRAP.twrap_rpdata_type_sms_deliver
|
||||||
|
twrap_rpdata_type_sms_status_report = _tinyWRAP.twrap_rpdata_type_sms_status_report
|
||||||
|
twrap_rpdata_type_sms_command = _tinyWRAP.twrap_rpdata_type_sms_command
|
||||||
|
class RPData(_object):
|
||||||
|
__swig_setmethods__ = {}
|
||||||
|
__setattr__ = lambda self, name, value: _swig_setattr(self, RPData, name, value)
|
||||||
|
__swig_getmethods__ = {}
|
||||||
|
__getattr__ = lambda self, name: _swig_getattr(self, RPData, name)
|
||||||
|
__repr__ = _swig_repr
|
||||||
|
def __init__(self):
|
||||||
|
this = _tinyWRAP.new_RPData()
|
||||||
|
try: self.this.append(this)
|
||||||
|
except: self.this = this
|
||||||
|
__swig_destroy__ = _tinyWRAP.delete_RPData
|
||||||
|
__del__ = lambda self : None;
|
||||||
|
def getType(self): return _tinyWRAP.RPData_getType(self)
|
||||||
|
def getPayloadLength(self): return _tinyWRAP.RPData_getPayloadLength(self)
|
||||||
|
def getPayload(self, *args): return _tinyWRAP.RPData_getPayload(self, *args)
|
||||||
|
RPData_swigregister = _tinyWRAP.RPData_swigregister
|
||||||
|
RPData_swigregister(RPData)
|
||||||
|
|
||||||
|
class SMSEncoder(_object):
|
||||||
|
__swig_setmethods__ = {}
|
||||||
|
__setattr__ = lambda self, name, value: _swig_setattr(self, SMSEncoder, name, value)
|
||||||
|
__swig_getmethods__ = {}
|
||||||
|
__getattr__ = lambda self, name: _swig_getattr(self, SMSEncoder, name)
|
||||||
|
def __init__(self, *args, **kwargs): raise AttributeError("No constructor defined")
|
||||||
|
__repr__ = _swig_repr
|
||||||
|
__swig_getmethods__["encodeSubmit"] = lambda x: _tinyWRAP.SMSEncoder_encodeSubmit
|
||||||
|
if _newclass:encodeSubmit = staticmethod(_tinyWRAP.SMSEncoder_encodeSubmit)
|
||||||
|
__swig_destroy__ = _tinyWRAP.delete_SMSEncoder
|
||||||
|
__del__ = lambda self : None;
|
||||||
|
SMSEncoder_swigregister = _tinyWRAP.SMSEncoder_swigregister
|
||||||
|
SMSEncoder_swigregister(SMSEncoder)
|
||||||
|
|
||||||
|
def SMSEncoder_encodeSubmit(*args):
|
||||||
|
return _tinyWRAP.SMSEncoder_encodeSubmit(*args)
|
||||||
|
SMSEncoder_encodeSubmit = _tinyWRAP.SMSEncoder_encodeSubmit
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
|
@ -12,18 +12,19 @@ SPEEX_LDFLAGS := -lspeexdsp -lspeex
|
||||||
OPENCORE_ARM_CFLAGS := -DHAVE_OPENCORE_AMR=1
|
OPENCORE_ARM_CFLAGS := -DHAVE_OPENCORE_AMR=1
|
||||||
OPENCORE_ARM_LDFLAGS := -lopencore-amrnb
|
OPENCORE_ARM_LDFLAGS := -lopencore-amrnb
|
||||||
|
|
||||||
ILBC_CFLAGS := -DHAVE_ILBC=1
|
ILBC_CFLAGS := -DHAVE_ILBC=0
|
||||||
ILBC_LDFLAGS := -liLBC
|
ILBC_LDFLAGS := -liLBC
|
||||||
|
|
||||||
LIBGSM_CFLAGS := -DHAVE_LIBGSM=1
|
LIBGSM_CFLAGS := -DHAVE_LIBGSM=1
|
||||||
LIBGSM_LDFLAGS := -lgsm
|
LIBGSM_LDFLAGS := -lgsm
|
||||||
|
|
||||||
BV16_CFLAGS := -DHAVE_BV16=1 -I$(THIRDPARTIES_INC)/BroadVoice16/bv16 -I$(THIRDPARTIES_INC)/BroadVoice16/bvcommon
|
BV16_CFLAGS := -DHAVE_BV16=0 -I$(THIRDPARTIES_INC)/BroadVoice16/bv16 -I$(THIRDPARTIES_INC)/BroadVoice16/bvcommon
|
||||||
BV16_LDFLAGS := -lbv16
|
BV16_LDFLAGS := -lbv16
|
||||||
|
|
||||||
CFLAGS := $(CFLAGS_LIB) -I$(THIRDPARTIES_INC) $(ILBC_CFLAGS) $(LIBGSM_CFLAGS) \
|
CFLAGS := $(CFLAGS_LIB) -I$(THIRDPARTIES_INC) $(ILBC_CFLAGS) $(LIBGSM_CFLAGS) \
|
||||||
$(FFMPEG_CFLAGS) $(SPEEX_CFLAGS) $(OPENCORE_ARM_CFLAGS) $(BV16_CFLAGS) \
|
$(FFMPEG_CFLAGS) $(SPEEX_CFLAGS) $(OPENCORE_ARM_CFLAGS) $(BV16_CFLAGS) \
|
||||||
-I../tinySAK/src -I../tinyNET/src -I../tinySDP/include -I../tinyRTP/include -I../tinyMEDIA/include -I./include
|
-I../tinySAK/src -I../tinyNET/src -I../tinySDP/include -I../tinyRTP/include -I../tinyMEDIA/include -I./include \
|
||||||
|
-DJB_HISTORY_SIZE=300
|
||||||
|
|
||||||
LDFLAGS := $(LDFLAGS_LIB) -L$(THIRDPARTIES_LIB)\
|
LDFLAGS := $(LDFLAGS_LIB) -L$(THIRDPARTIES_LIB)\
|
||||||
$(FFMPEG_LDFLAGS) $(SPEEX_LDFLAGS) $(OPENCORE_ARM_LDFLAGS) $(ILBC_LDFLAGS) $(LIBGSM_LDFLAGS) $(BV16_LDFLAGS)\
|
$(FFMPEG_LDFLAGS) $(SPEEX_LDFLAGS) $(OPENCORE_ARM_LDFLAGS) $(ILBC_LDFLAGS) $(LIBGSM_LDFLAGS) $(BV16_LDFLAGS)\
|
||||||
|
|
|
@ -54,11 +54,10 @@ TDAV_BEGIN_DECLS
|
||||||
|
|
||||||
// configuration constants
|
// configuration constants
|
||||||
/* Number of historical timestamps to use in calculating jitter and jitterbuffer size */
|
/* Number of historical timestamps to use in calculating jitter and jitterbuffer size */
|
||||||
#if defined(_WIN32_WCE) || ANDROID
|
#ifndef JB_HISTORY_SIZE
|
||||||
# define JB_HISTORY_SIZE 200
|
|
||||||
#else
|
|
||||||
# define JB_HISTORY_SIZE 500
|
# define JB_HISTORY_SIZE 500
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
/* minimum jitterbuffer size, disabled if 0 */
|
/* minimum jitterbuffer size, disabled if 0 */
|
||||||
#define JB_MIN_SIZE 0
|
#define JB_MIN_SIZE 0
|
||||||
/* maximum jitterbuffer size, disabled if 0 */
|
/* maximum jitterbuffer size, disabled if 0 */
|
||||||
|
|
|
@ -69,6 +69,9 @@ typedef struct tdav_session_audio_s
|
||||||
char* local_ip;
|
char* local_ip;
|
||||||
//uint16_t local_port;
|
//uint16_t local_port;
|
||||||
|
|
||||||
|
/* NAT Traversal context */
|
||||||
|
tnet_nat_context_handle_t* natt_ctx;
|
||||||
|
|
||||||
char* remote_ip;
|
char* remote_ip;
|
||||||
uint16_t remote_port;
|
uint16_t remote_port;
|
||||||
|
|
||||||
|
|
|
@ -47,11 +47,13 @@ typedef struct tdav_codec_bv16_s
|
||||||
struct {
|
struct {
|
||||||
void *state;
|
void *state;
|
||||||
void *bs;
|
void *bs;
|
||||||
|
void *x;
|
||||||
} encoder;
|
} encoder;
|
||||||
|
|
||||||
struct {
|
struct {
|
||||||
void *state;
|
void *state;
|
||||||
void *bs;
|
void *bs;
|
||||||
|
void *x;
|
||||||
} decoder;
|
} decoder;
|
||||||
}
|
}
|
||||||
tdav_codec_bv16_t;
|
tdav_codec_bv16_t;
|
||||||
|
|
|
@ -56,6 +56,9 @@ typedef struct tdav_session_video_s
|
||||||
char* remote_ip;
|
char* remote_ip;
|
||||||
uint16_t remote_port;
|
uint16_t remote_port;
|
||||||
|
|
||||||
|
/* NAT Traversal context */
|
||||||
|
tnet_nat_context_handle_t* natt_ctx;
|
||||||
|
|
||||||
tsk_bool_t rtcp_enabled;
|
tsk_bool_t rtcp_enabled;
|
||||||
|
|
||||||
struct trtp_manager_s* rtp_manager;
|
struct trtp_manager_s* rtp_manager;
|
||||||
|
|
|
@ -211,6 +211,12 @@ int tmedia_session_audio_set(tmedia_session_t* self, const tmedia_param_t* param
|
||||||
audio->useIPv6 = tsk_striequals(param->value, "ipv6");
|
audio->useIPv6 = tsk_striequals(param->value, "ipv6");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if(param->value_type == tmedia_pvt_pobject){
|
||||||
|
if(tsk_striequals(param->key, "natt-ctx")){
|
||||||
|
TSK_OBJECT_SAFE_FREE(audio->natt_ctx);
|
||||||
|
audio->natt_ctx = tsk_object_ref(param->value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -230,6 +236,9 @@ int tdav_session_audio_prepare(tmedia_session_t* self)
|
||||||
|
|
||||||
ret = trtp_manager_set_rtp_callback(audio->rtp_manager, tdav_session_audio_rtp_cb, audio);
|
ret = trtp_manager_set_rtp_callback(audio->rtp_manager, tdav_session_audio_rtp_cb, audio);
|
||||||
ret = trtp_manager_prepare(audio->rtp_manager);
|
ret = trtp_manager_prepare(audio->rtp_manager);
|
||||||
|
if(audio->natt_ctx){
|
||||||
|
ret = trtp_manager_set_natt_ctx(audio->rtp_manager, audio->natt_ctx);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -511,7 +520,13 @@ const tsdp_header_M_t* tdav_session_audio_get_lo(tmedia_session_t* self)
|
||||||
changed = (self->ro_changed || !self->M.lo);
|
changed = (self->ro_changed || !self->M.lo);
|
||||||
|
|
||||||
if(!self->M.lo){
|
if(!self->M.lo){
|
||||||
if((self->M.lo = tsdp_header_M_create(self->plugin->media, audio->rtp_manager->transport->master->port, "RTP/AVP"))){
|
if((self->M.lo = tsdp_header_M_create(self->plugin->media, audio->rtp_manager->rtp.public_port, "RTP/AVP"))){
|
||||||
|
/* If NATT is active, do not rely on the global IP address Connection line */
|
||||||
|
if(audio->natt_ctx){
|
||||||
|
tsdp_header_M_add_headers(self->M.lo,
|
||||||
|
TSDP_HEADER_C_VA_ARGS("IN", audio->useIPv6 ? "IP6" : "IP4", audio->rtp_manager->rtp.public_ip),
|
||||||
|
tsk_null);
|
||||||
|
}
|
||||||
/* 3GPP TS 24.229 - 6.1.1 General
|
/* 3GPP TS 24.229 - 6.1.1 General
|
||||||
In order to support accurate bandwidth calculations, the UE may include the "a=ptime" attribute for all "audio" media
|
In order to support accurate bandwidth calculations, the UE may include the "a=ptime" attribute for all "audio" media
|
||||||
lines as described in RFC 4566 [39]. If a UE receives an "audio" media line with "a=ptime" specified, the UE should
|
lines as described in RFC 4566 [39]. If a UE receives an "audio" media line with "a=ptime" specified, the UE should
|
||||||
|
@ -755,6 +770,9 @@ static tsk_object_t* tdav_session_audio_dtor(tsk_object_t * self)
|
||||||
TSK_FREE(session->encoder.buffer);
|
TSK_FREE(session->encoder.buffer);
|
||||||
TSK_FREE(session->decoder.buffer);
|
TSK_FREE(session->decoder.buffer);
|
||||||
|
|
||||||
|
/* NAT Traversal context */
|
||||||
|
TSK_OBJECT_SAFE_FREE(session->natt_ctx);
|
||||||
|
|
||||||
tsk_safeobj_deinit(session);
|
tsk_safeobj_deinit(session);
|
||||||
|
|
||||||
/* deinit base */
|
/* deinit base */
|
||||||
|
|
|
@ -49,25 +49,41 @@
|
||||||
|
|
||||||
/* RFC 4298 - 3.1. BroadVoice16 Bit Stream Definition */
|
/* RFC 4298 - 3.1. BroadVoice16 Bit Stream Definition */
|
||||||
#define TDAV_BV16_FRAME_SIZE 10
|
#define TDAV_BV16_FRAME_SIZE 10
|
||||||
|
#define FRSZ_IN_U8 (FRSZ*2)
|
||||||
|
|
||||||
/* ============ BV16 Plugin interface ================= */
|
/* ============ BV16 Plugin interface ================= */
|
||||||
|
|
||||||
#define tdav_codec_bv16_fmtp_get tsk_null
|
#define tdav_codec_bv16_fmtp_get tsk_null
|
||||||
#define tdav_codec_bv16_fmtp_set tsk_null
|
#define tdav_codec_bv16_fmtp_set tsk_null
|
||||||
|
|
||||||
|
static int sizestate = sizeof(struct BV16_Encoder_State);
|
||||||
|
static int sizebitstream = sizeof(struct BV16_Bit_Stream);
|
||||||
|
|
||||||
int tdav_codec_bv16_open(tmedia_codec_t* self)
|
int tdav_codec_bv16_open(tmedia_codec_t* self)
|
||||||
{
|
{
|
||||||
tdav_codec_bv16_t* bv16 = (tdav_codec_bv16_t*)self;
|
tdav_codec_bv16_t* bv16 = (tdav_codec_bv16_t*)self;
|
||||||
|
|
||||||
if(!bv16->encoder.state){
|
if(!bv16->encoder.state){
|
||||||
bv16->encoder.state = allocWord16(0, sizeof(struct BV16_Encoder_State)/2-1);
|
bv16->encoder.state = allocWord16(0, sizestate/2-1);
|
||||||
Reset_BV16_Encoder((struct BV16_Encoder_State*)bv16->encoder.state);
|
Reset_BV16_Encoder((struct BV16_Encoder_State*)bv16->encoder.state);
|
||||||
}
|
}
|
||||||
|
if(!bv16->encoder.bs){
|
||||||
|
bv16->encoder.bs = allocWord16(0, sizebitstream/2-1);
|
||||||
|
}
|
||||||
|
if(!bv16->encoder.x){
|
||||||
|
bv16->encoder.x = allocWord16(0, FRSZ-1);
|
||||||
|
}
|
||||||
|
|
||||||
if(!bv16->decoder.state){
|
if(!bv16->decoder.state){
|
||||||
bv16->decoder.state = allocWord16(0, sizeof(struct BV16_Decoder_State)/2-1);
|
bv16->decoder.state = allocWord16(0, sizestate/2-1);
|
||||||
Reset_BV16_Decoder((struct BV16_Decoder_State*)bv16->decoder.state);
|
Reset_BV16_Decoder((struct BV16_Decoder_State*)bv16->decoder.state);
|
||||||
}
|
}
|
||||||
|
if(!bv16->decoder.bs){
|
||||||
|
bv16->decoder.bs = allocWord16(0, sizebitstream/2-1);
|
||||||
|
}
|
||||||
|
if(!bv16->decoder.x){
|
||||||
|
bv16->decoder.x = allocWord16(0, FRSZ-1);
|
||||||
|
}
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -76,6 +92,33 @@ int tdav_codec_bv16_close(tmedia_codec_t* self)
|
||||||
{
|
{
|
||||||
tdav_codec_bv16_t* bv16 = (tdav_codec_bv16_t*)self;
|
tdav_codec_bv16_t* bv16 = (tdav_codec_bv16_t*)self;
|
||||||
|
|
||||||
|
if(bv16->encoder.state){
|
||||||
|
deallocWord16(bv16->encoder.state, 0, sizestate/2-1);
|
||||||
|
bv16->encoder.state = tsk_null;
|
||||||
|
}
|
||||||
|
if(bv16->encoder.bs){
|
||||||
|
deallocWord16(bv16->encoder.bs, 0, sizebitstream/2-1);
|
||||||
|
bv16->encoder.bs = tsk_null;
|
||||||
|
}
|
||||||
|
if(bv16->encoder.x){
|
||||||
|
deallocWord16(bv16->encoder.x, 0, FRSZ-1);
|
||||||
|
bv16->encoder.x = tsk_null;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(bv16->decoder.state){
|
||||||
|
deallocWord16(bv16->decoder.state, 0, sizestate/2-1);
|
||||||
|
bv16->decoder.state = tsk_null;
|
||||||
|
}
|
||||||
|
if(bv16->encoder.bs){
|
||||||
|
deallocWord16(bv16->decoder.bs, 0, sizebitstream/2-1);
|
||||||
|
bv16->decoder.bs = tsk_null;
|
||||||
|
}
|
||||||
|
if(bv16->decoder.x){
|
||||||
|
deallocWord16(bv16->decoder.x, 0, FRSZ-1);
|
||||||
|
bv16->decoder.x = tsk_null;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -95,16 +138,36 @@ tsk_size_t tdav_codec_bv16_encode(tmedia_codec_t* self, const void* in_data, tsk
|
||||||
|
|
||||||
tsk_size_t tdav_codec_bv16_decode(tmedia_codec_t* self, const void* in_data, tsk_size_t in_size, void** out_data, tsk_size_t* out_max_size, const tsk_object_t* proto_hdr)
|
tsk_size_t tdav_codec_bv16_decode(tmedia_codec_t* self, const void* in_data, tsk_size_t in_size, void** out_data, tsk_size_t* out_max_size, const tsk_object_t* proto_hdr)
|
||||||
{
|
{
|
||||||
//tsk_size_t out_size;
|
tsk_size_t out_size = 0;
|
||||||
//int ret;
|
int i;
|
||||||
tdav_codec_bv16_t* bv16 = (tdav_codec_bv16_t*)self;
|
tdav_codec_bv16_t* bv16 = (tdav_codec_bv16_t*)self;
|
||||||
|
uint8_t mama[600];
|
||||||
|
|
||||||
if(!self || !in_data || !in_size || !out_data || (in_size % TDAV_BV16_FRAME_SIZE)){
|
if(!self || !in_data || !in_size || !out_data || (in_size % TDAV_BV16_FRAME_SIZE)){
|
||||||
TSK_DEBUG_ERROR("Invalid parameter");
|
TSK_DEBUG_ERROR("Invalid parameter");
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
return 0;
|
for(i=0; i<(int)in_size; i+=TDAV_BV16_FRAME_SIZE){
|
||||||
|
BV16_BitUnPack(mama, (struct BV16_Bit_Stream*)bv16->decoder.bs);
|
||||||
|
//BV16_BitUnPack(&((UWord8 *)in_data)[i], (struct BV16_Bit_Stream*)bv16->decoder.bs);
|
||||||
|
BV16_Decode((struct BV16_Bit_Stream*)bv16->decoder.bs, (struct BV16_Decoder_State*)bv16->decoder.state, bv16->decoder.x);
|
||||||
|
|
||||||
|
|
||||||
|
if(*out_max_size<(out_size + FRSZ_IN_U8)){
|
||||||
|
if(!(*out_data = tsk_realloc(*out_data, (out_size + FRSZ_IN_U8)))){
|
||||||
|
TSK_DEBUG_ERROR("Failed to allocate new buffer");
|
||||||
|
*out_max_size = 0;
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
*out_max_size = (out_size + FRSZ_IN_U8);
|
||||||
|
}
|
||||||
|
memcpy(&((uint8_t*)* out_data)[out_size], bv16->decoder.x, FRSZ_IN_U8);
|
||||||
|
out_size += FRSZ_IN_U8;
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
return out_size;
|
||||||
}
|
}
|
||||||
|
|
||||||
tsk_bool_t tdav_codec_bv16_fmtp_match(const tmedia_codec_t* codec, const char* fmtp)
|
tsk_bool_t tdav_codec_bv16_fmtp_match(const tmedia_codec_t* codec, const char* fmtp)
|
||||||
|
|
|
@ -854,7 +854,6 @@ last:
|
||||||
//
|
//
|
||||||
////#define START_CODE_PREFIX 16777216 /* 0x10000000 */
|
////#define START_CODE_PREFIX 16777216 /* 0x10000000 */
|
||||||
// for(i = size_of_scp; i<(size - size_of_scp); i++){
|
// for(i = size_of_scp; i<(size - size_of_scp); i++){
|
||||||
// //if( *( ((uint32_t*) &pdata[i])-0 ) == START_CODE_PREFIX ){
|
|
||||||
// if(pdata[i] == H264_START_CODE_PREFIX[0] && pdata[i+1] == H264_START_CODE_PREFIX[1] && pdata[i+2] == H264_START_CODE_PREFIX[2] && pdata[i+3] == H264_START_CODE_PREFIX[3]){ /* Found Start Code Prefix */
|
// if(pdata[i] == H264_START_CODE_PREFIX[0] && pdata[i+1] == H264_START_CODE_PREFIX[1] && pdata[i+2] == H264_START_CODE_PREFIX[2] && pdata[i+3] == H264_START_CODE_PREFIX[3]){ /* Found Start Code Prefix */
|
||||||
// prev_scp = last_scp;
|
// prev_scp = last_scp;
|
||||||
// if((i - last_scp) >= H264_RTP_PAYLOAD_SIZE || 1){
|
// if((i - last_scp) >= H264_RTP_PAYLOAD_SIZE || 1){
|
||||||
|
|
|
@ -281,10 +281,6 @@ void tdav_codec_h264_rtp_callback(struct tdav_codec_h264_s *self, const void *da
|
||||||
{
|
{
|
||||||
uint8_t* pdata = (uint8_t*)data;
|
uint8_t* pdata = (uint8_t*)data;
|
||||||
|
|
||||||
|
|
||||||
//#define START_CODE_PREFIX 16777216 /* 0x10000000 */
|
|
||||||
|
|
||||||
//while(size && *( ((uint32_t*) &pdata[0])-0 ) == START_CODE_PREFIX ){
|
|
||||||
while(pdata[0] == H264_START_CODE_PREFIX[0] && pdata[1] == H264_START_CODE_PREFIX[1] && pdata[2] == H264_START_CODE_PREFIX[2] && pdata[3] == H264_START_CODE_PREFIX[3]){
|
while(pdata[0] == H264_START_CODE_PREFIX[0] && pdata[1] == H264_START_CODE_PREFIX[1] && pdata[2] == H264_START_CODE_PREFIX[2] && pdata[3] == H264_START_CODE_PREFIX[3]){
|
||||||
pdata += 4;
|
pdata += 4;
|
||||||
size -= 4;
|
size -= 4;
|
||||||
|
|
|
@ -44,6 +44,7 @@ int tdav_codec_speex_deinit(tdav_codec_speex_t* self);
|
||||||
|
|
||||||
int tdav_codec_speex_open(tmedia_codec_t* self)
|
int tdav_codec_speex_open(tmedia_codec_t* self)
|
||||||
{
|
{
|
||||||
|
static int quality = 6;
|
||||||
tdav_codec_speex_t* speex = (tdav_codec_speex_t*)self;
|
tdav_codec_speex_t* speex = (tdav_codec_speex_t*)self;
|
||||||
tsk_size_t size = 0;
|
tsk_size_t size = 0;
|
||||||
|
|
||||||
|
@ -60,6 +61,7 @@ int tdav_codec_speex_open(tmedia_codec_t* self)
|
||||||
return -3;
|
return -3;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
speex_encoder_ctl(speex->encoder.state, SPEEX_SET_QUALITY, &quality);
|
||||||
speex_encoder_ctl(speex->encoder.state, SPEEX_GET_FRAME_SIZE, &speex->encoder.size);
|
speex_encoder_ctl(speex->encoder.state, SPEEX_GET_FRAME_SIZE, &speex->encoder.size);
|
||||||
if(!speex->encoder.size){
|
if(!speex->encoder.size){
|
||||||
speex->encoder.size = 20;
|
speex->encoder.size = 20;
|
||||||
|
|
|
@ -246,6 +246,12 @@ int tmedia_session_video_set(tmedia_session_t* self, const tmedia_param_t* param
|
||||||
video->useIPv6 = tsk_striequals(param->value, "ipv6");
|
video->useIPv6 = tsk_striequals(param->value, "ipv6");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
else if(param->value_type == tmedia_pvt_pobject){
|
||||||
|
if(tsk_striequals(param->key, "natt-ctx")){
|
||||||
|
TSK_OBJECT_SAFE_FREE(video->natt_ctx);
|
||||||
|
video->natt_ctx = tsk_object_ref(param->value);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -265,6 +271,9 @@ int tdav_session_video_prepare(tmedia_session_t* self)
|
||||||
|
|
||||||
ret = trtp_manager_set_rtp_callback(video->rtp_manager, tdav_session_video_rtp_cb, video);
|
ret = trtp_manager_set_rtp_callback(video->rtp_manager, tdav_session_video_rtp_cb, video);
|
||||||
ret = trtp_manager_prepare(video->rtp_manager);
|
ret = trtp_manager_prepare(video->rtp_manager);
|
||||||
|
if(video->natt_ctx){
|
||||||
|
ret = trtp_manager_set_natt_ctx(video->rtp_manager, video->natt_ctx);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -410,8 +419,13 @@ const tsdp_header_M_t* tdav_session_video_get_lo(tmedia_session_t* self)
|
||||||
changed = (self->ro_changed || !self->M.lo);
|
changed = (self->ro_changed || !self->M.lo);
|
||||||
|
|
||||||
if(!self->M.lo){
|
if(!self->M.lo){
|
||||||
if((self->M.lo = tsdp_header_M_create(self->plugin->media, video->rtp_manager->transport->master->port, "RTP/AVP"))){
|
if((self->M.lo = tsdp_header_M_create(self->plugin->media, video->rtp_manager->rtp.public_port, "RTP/AVP"))){
|
||||||
/* Add common attributes */
|
/* If NATT is active, do not rely on the global IP address Connection line */
|
||||||
|
if(video->natt_ctx){
|
||||||
|
tsdp_header_M_add_headers(self->M.lo,
|
||||||
|
TSDP_HEADER_C_VA_ARGS("IN", video->useIPv6 ? "IP6" : "IP4", video->rtp_manager->rtp.public_ip),
|
||||||
|
tsk_null);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
TSK_DEBUG_ERROR("Failed to create lo");
|
TSK_DEBUG_ERROR("Failed to create lo");
|
||||||
|
@ -556,6 +570,9 @@ static tsk_object_t* tdav_session_video_dtor(tsk_object_t * self)
|
||||||
TSK_FREE(session->decoder.buffer);
|
TSK_FREE(session->decoder.buffer);
|
||||||
TSK_FREE(session->decoder.conv_buffer);
|
TSK_FREE(session->decoder.conv_buffer);
|
||||||
|
|
||||||
|
/* NAT Traversal context */
|
||||||
|
TSK_OBJECT_SAFE_FREE(session->natt_ctx);
|
||||||
|
|
||||||
tsk_safeobj_deinit(session);
|
tsk_safeobj_deinit(session);
|
||||||
|
|
||||||
/* deinit base */
|
/* deinit base */
|
||||||
|
|
|
@ -42,7 +42,7 @@
|
||||||
Name="VCCLCompilerTool"
|
Name="VCCLCompilerTool"
|
||||||
Optimization="0"
|
Optimization="0"
|
||||||
AdditionalIncludeDirectories=""$(PSDK_DIR)include";"$(DXSDK_DIR)include";..\thirdparties\win32\include;include;..\tinyRTP\include;..\tinyMEDIA\include;..\tinySDP\include;..\tinyNET\src;..\tinyDSHOW\include;..\tinySAK\src;..\thirdparties\win32\include\BroadVoice16\bvcommon;..\thirdparties\win32\include\BroadVoice16\bv16"
|
AdditionalIncludeDirectories=""$(PSDK_DIR)include";"$(DXSDK_DIR)include";..\thirdparties\win32\include;include;..\tinyRTP\include;..\tinyMEDIA\include;..\tinySDP\include;..\tinyNET\src;..\tinyDSHOW\include;..\tinySAK\src;..\thirdparties\win32\include\BroadVoice16\bvcommon;..\thirdparties\win32\include\BroadVoice16\bv16"
|
||||||
PreprocessorDefinitions="HAVE_BV16=1;HAVE_OPENCORE_AMR=1;HAVE_ILBC=1;HAVE_LIBGSM=1;HAVE_TINYDSHOW=1;HAVE_DSOUND_H=1;HAVE_FFMPEG=1;HAVE_SPEEX_DSP=1;HAVE_LIB_SPEEX=1;FLIP_DECODED_PICT=1;DEBUG_LEVEL=DEBUG_LEVEL_INFO;WIN32;_DEBUG;_WINDOWS;_USRDLL;_WIN32_WINNT=0x0501;TINYDAV_EXPORTS"
|
PreprocessorDefinitions="HAVE_BV16=0;HAVE_OPENCORE_AMR=1;HAVE_ILBC=1;HAVE_LIBGSM=1;HAVE_TINYDSHOW=1;HAVE_DSOUND_H=1;HAVE_FFMPEG=1;HAVE_SPEEX_DSP=1;HAVE_LIB_SPEEX=1;FLIP_DECODED_PICT=1;G192BITSTREAM=0;DEBUG_LEVEL=DEBUG_LEVEL_INFO;WIN32;_DEBUG;_WINDOWS;_USRDLL;_WIN32_WINNT=0x0501;TINYDAV_EXPORTS"
|
||||||
MinimalRebuild="true"
|
MinimalRebuild="true"
|
||||||
BasicRuntimeChecks="3"
|
BasicRuntimeChecks="3"
|
||||||
RuntimeLibrary="3"
|
RuntimeLibrary="3"
|
||||||
|
|
|
@ -92,6 +92,10 @@ typedef enum opt_type_e
|
||||||
opt_sigcomp_id, /* --sigcomp-id urn:uuid:2e5fdc76-00be-4314-8202-1116fa82a473 */
|
opt_sigcomp_id, /* --sigcomp-id urn:uuid:2e5fdc76-00be-4314-8202-1116fa82a473 */
|
||||||
opt_silent, /* --silent */
|
opt_silent, /* --silent */
|
||||||
opt_smsc, /* --smsc +3315245856 */
|
opt_smsc, /* --smsc +3315245856 */
|
||||||
|
opt_stun_ip, /* --stun-ip numb.viagenie.ca */
|
||||||
|
opt_stun_pwd, /* --stun-pwd mysecret */
|
||||||
|
opt_stun_port, /* --stun-port 3478 */
|
||||||
|
opt_stun_usr, /* --stun-usr bob@open-ims.test */
|
||||||
opt_to, /* --to sip:alice@open-ims.test */
|
opt_to, /* --to sip:alice@open-ims.test */
|
||||||
}
|
}
|
||||||
opt_type_t;
|
opt_type_t;
|
||||||
|
|
|
@ -28,6 +28,7 @@
|
||||||
#include "register.h"
|
#include "register.h"
|
||||||
#include "subscribe.h"
|
#include "subscribe.h"
|
||||||
|
|
||||||
|
#include <stdlib.h>
|
||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
|
@ -62,7 +63,9 @@ int stack_callback(const tsip_event_t *_event)
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#if 0
|
||||||
tsk_safeobj_lock(ctx);
|
tsk_safeobj_lock(ctx);
|
||||||
|
#endif
|
||||||
|
|
||||||
switch(_event->type){
|
switch(_event->type){
|
||||||
case tsip_event_register:
|
case tsip_event_register:
|
||||||
|
@ -128,8 +131,9 @@ int stack_callback(const tsip_event_t *_event)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
#if 0
|
||||||
tsk_safeobj_unlock(ctx);
|
tsk_safeobj_unlock(ctx);
|
||||||
|
#endif
|
||||||
|
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -235,6 +239,7 @@ int stack_config(const opts_L_t* opts)
|
||||||
int ret = 0;
|
int ret = 0;
|
||||||
tsk_param_t* param;
|
tsk_param_t* param;
|
||||||
tsk_bool_t pcscf_changed = tsk_false;
|
tsk_bool_t pcscf_changed = tsk_false;
|
||||||
|
tsk_bool_t stun_done = tsk_false;
|
||||||
|
|
||||||
if(!opts){
|
if(!opts){
|
||||||
return -1;
|
return -1;
|
||||||
|
@ -364,6 +369,45 @@ int stack_config(const opts_L_t* opts)
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
case opt_stun_ip:
|
||||||
|
case opt_stun_pwd:
|
||||||
|
case opt_stun_port:
|
||||||
|
case opt_stun_usr:
|
||||||
|
{
|
||||||
|
if(!stun_done){
|
||||||
|
const opt_t* _opt;
|
||||||
|
const char* ip = tsk_null, *usr = tsk_null, *pwd = tsk_null;
|
||||||
|
unsigned port = 0;
|
||||||
|
|
||||||
|
if((_opt = opt_get_by_type(opts, opt_stun_ip))){
|
||||||
|
ip = _opt->value;
|
||||||
|
}
|
||||||
|
if((_opt = opt_get_by_type(opts, opt_stun_port))){
|
||||||
|
port = atoi(_opt->value);
|
||||||
|
}
|
||||||
|
if((_opt = opt_get_by_type(opts, opt_stun_usr))){
|
||||||
|
usr = _opt->value;
|
||||||
|
}
|
||||||
|
if((_opt = opt_get_by_type(opts, opt_stun_pwd))){
|
||||||
|
pwd = _opt->value;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(ip && port){
|
||||||
|
tsip_stack_set(ctx->stack,
|
||||||
|
TSIP_STACK_SET_STUN_SERVER(ip, port),
|
||||||
|
TSIP_STACK_SET_NULL());
|
||||||
|
}
|
||||||
|
if(usr){
|
||||||
|
tsip_stack_set(ctx->stack,
|
||||||
|
TSIP_STACK_SET_STUN_CRED(usr, pwd),
|
||||||
|
TSIP_STACK_SET_NULL());
|
||||||
|
}
|
||||||
|
|
||||||
|
stun_done = tsk_true;
|
||||||
|
}
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
}/* switch */
|
}/* switch */
|
||||||
|
|
||||||
} /* foreach */
|
} /* foreach */
|
||||||
|
@ -423,9 +467,9 @@ session_t* session_create(session_type_t type, tsip_ssession_handle_t* handle)
|
||||||
// 100rel
|
// 100rel
|
||||||
TSIP_MSESSION_SET_100rel(),
|
TSIP_MSESSION_SET_100rel(),
|
||||||
// Session timers
|
// Session timers
|
||||||
TSIP_MSESSION_SET_TIMERS(90, "uac"),
|
TSIP_MSESSION_SET_TIMERS(3600, "uac"),
|
||||||
// QoS
|
// QoS
|
||||||
TSIP_MSESSION_SET_QOS(tmedia_qos_stype_segmented, tmedia_qos_strength_optional),
|
TSIP_MSESSION_SET_QOS(tmedia_qos_stype_none, tmedia_qos_strength_none),
|
||||||
|
|
||||||
// close media params
|
// close media params
|
||||||
TSIP_MSESSION_SET_NULL()
|
TSIP_MSESSION_SET_NULL()
|
||||||
|
|
|
@ -2,11 +2,11 @@
|
||||||
|
|
||||||
# user's parameters (like ANSI-C #define)
|
# user's parameters (like ANSI-C #define)
|
||||||
%%domain micromethod.com
|
%%domain micromethod.com
|
||||||
%%user bob
|
%%user mamdou
|
||||||
%%pwd bob
|
%%pwd mamadou
|
||||||
%%proxy_ip 192.168.0.10 # IP address or FQDN
|
%%proxy_ip 192.168.0.10 # IP address or FQDN
|
||||||
%%proxy_port 5060
|
%%proxy_port 5060
|
||||||
%%proxy_trans udp # udp, tcp, tls or sctp
|
%%proxy_trans tcp # udp, tcp, tls or sctp
|
||||||
%%expires 30 # expires used by all dialogs
|
%%expires 30 # expires used by all dialogs
|
||||||
%%sleep-sec 1.0 # number of seconds to wait before sending next sip message
|
%%sleep-sec 1.0 # number of seconds to wait before sending next sip message
|
||||||
|
|
||||||
|
@ -19,6 +19,7 @@
|
||||||
# Configure the stack
|
# Configure the stack
|
||||||
# Realm, IMPI and IMPU are mandatory
|
# Realm, IMPI and IMPU are mandatory
|
||||||
++cst --realm $$(domain) --impi $$(user)@$$(domain) --impu sip:$$(user)@$$(domain) --pwd $$(pwd) \
|
++cst --realm $$(domain) --impi $$(user)@$$(domain) --impu sip:$$(user)@$$(domain) --pwd $$(pwd) \
|
||||||
|
--stun-ip numb.viagenie.ca --stun-port 3478 --stun-usr $$(user)@$$(domain) --stun-pwd $$(pwd) \
|
||||||
--pcscf-ip $$(proxy_ip) --pcscf-port $$(proxy_port) --pcscf-trans $$(proxy_trans) \
|
--pcscf-ip $$(proxy_ip) --pcscf-port $$(proxy_port) --pcscf-trans $$(proxy_trans) \
|
||||||
--header Privacy=none --header Allow=INVITE, ACK, CANCEL, BYE, MESSAGE, OPTIONS, NOTIFY, PRACK, UPDATE, REFER \
|
--header Privacy=none --header Allow=INVITE, ACK, CANCEL, BYE, MESSAGE, OPTIONS, NOTIFY, PRACK, UPDATE, REFER \
|
||||||
--header P-Access-Network-Info=ADSL;utran-cell-id-3gpp=00000000 \
|
--header P-Access-Network-Info=ADSL;utran-cell-id-3gpp=00000000 \
|
||||||
|
@ -27,7 +28,6 @@
|
||||||
# Run the engine
|
# Run the engine
|
||||||
++r
|
++r
|
||||||
|
|
||||||
|
|
||||||
# OPTIONS to hack AOR
|
# OPTIONS to hack AOR
|
||||||
#++opt
|
#++opt
|
||||||
#++sleep --sec $$(sleep-sec)
|
#++sleep --sec $$(sleep-sec)
|
||||||
|
@ -41,8 +41,8 @@
|
||||||
++sleep --sec $$(sleep-sec)
|
++sleep --sec $$(sleep-sec)
|
||||||
|
|
||||||
# SUBSCRIBE to reg event package (silent hangup)
|
# SUBSCRIBE to reg event package (silent hangup)
|
||||||
#++sub --to sip:$$(user)@$$(domain) --xp $$(expires) --silent --header Event=reg --header Accept=application/reginfo+xml \
|
++sub --to sip:$$(user)@$$(domain) --xp $$(expires) --silent --header Event=reg --header Accept=application/reginfo+xml \
|
||||||
# --header Allow-Events=refer, presence, presence.winfo, xcap-diff, conference >>(sub-reg-sid)
|
--header Allow-Events=refer, presence, presence.winfo, xcap-diff, conference >>(sub-reg-sid)
|
||||||
|
|
||||||
#SUBSCRIBE to presence event package (alice)
|
#SUBSCRIBE to presence event package (alice)
|
||||||
#++sub --to sip:alice@$$(domain) --xp $$(expires) --header Event=presence --header Supported=eventlist\
|
#++sub --to sip:alice@$$(domain) --xp $$(expires) --header Event=presence --header Supported=eventlist\
|
||||||
|
@ -68,9 +68,10 @@
|
||||||
# --pay hello world
|
# --pay hello world
|
||||||
|
|
||||||
#send INVITE
|
#send INVITE
|
||||||
#++a --to sip:bob@$$(domain) \
|
++av --to sip:bob@$$(domain) \
|
||||||
# --header Action-Header=Myheader-value @@action \
|
--header Action-Header=Myheader-value @@action \
|
||||||
# >>(inv_audio_sid)
|
>>(inv_audio_sid)
|
||||||
|
|
||||||
#++sleep --sec -1
|
#++sleep --sec -1
|
||||||
#++ho --sid $$(inv_audio_sid)
|
#++ho --sid $$(inv_audio_sid)
|
||||||
#++sleep --sec -1
|
#++sleep --sec -1
|
||||||
|
|
File diff suppressed because it is too large
Load Diff
|
@ -280,6 +280,10 @@ replace:
|
||||||
"sigcomp-id"i % { opt->type = opt_sigcomp_id; } |
|
"sigcomp-id"i % { opt->type = opt_sigcomp_id; } |
|
||||||
"silent"i % { opt->type = opt_silent; } |
|
"silent"i % { opt->type = opt_silent; } |
|
||||||
"smsc"i % { opt->type = opt_smsc; } |
|
"smsc"i % { opt->type = opt_smsc; } |
|
||||||
|
"stun-ip"i % { opt->type = opt_stun_ip; } |
|
||||||
|
"stun-pwd"i % { opt->type = opt_stun_pwd; } |
|
||||||
|
"stun-port"i % { opt->type = opt_stun_port; } |
|
||||||
|
"stun-usr"i % { opt->type = opt_stun_usr; } |
|
||||||
"to"i % { opt->type = opt_to; }
|
"to"i % { opt->type = opt_to; }
|
||||||
)** >10 |
|
)** >10 |
|
||||||
(any*) >tag >0 %option_error;
|
(any*) >tag >0 %option_error;
|
||||||
|
|
|
@ -96,6 +96,11 @@ int invite_handle_event(const tsip_event_t *_event)
|
||||||
// ============================
|
// ============================
|
||||||
// Media Events
|
// Media Events
|
||||||
//
|
//
|
||||||
|
|
||||||
|
/* Early Media started */
|
||||||
|
case tsip_m_early_media:
|
||||||
|
TSK_DEBUG_INFO("invite_handle_event(tsip_m_early_media)");
|
||||||
|
break;
|
||||||
|
|
||||||
/* 3GPP TS 24.610: Communication Hold */
|
/* 3GPP TS 24.610: Communication Hold */
|
||||||
case tsip_m_local_hold_ok:
|
case tsip_m_local_hold_ok:
|
||||||
|
|
|
@ -99,8 +99,7 @@ TMEDIA_BEGIN_DECLS
|
||||||
#define TMEDIA_CODEC_FORMAT_AMR_WB_BE "113"
|
#define TMEDIA_CODEC_FORMAT_AMR_WB_BE "113"
|
||||||
#define TMEDIA_CODEC_FORMAT_AMR_WB_OA "114"
|
#define TMEDIA_CODEC_FORMAT_AMR_WB_OA "114"
|
||||||
|
|
||||||
//#define TMEDIA_CODEC_FORMAT_BV16 "115" //FIXME
|
#define TMEDIA_CODEC_FORMAT_BV16 "115"
|
||||||
#define TMEDIA_CODEC_FORMAT_BV16 "106"
|
|
||||||
|
|
||||||
#define TMEDIA_CODEC_FORMAT_RAW "121"
|
#define TMEDIA_CODEC_FORMAT_RAW "121"
|
||||||
#define TMEDIA_CODEC_FORMAT_FFV1 "122"
|
#define TMEDIA_CODEC_FORMAT_FFV1 "122"
|
||||||
|
|
|
@ -57,15 +57,14 @@ tmedia_param_plugin_type_t;
|
||||||
|
|
||||||
typedef enum tmedia_param_value_type_e
|
typedef enum tmedia_param_value_type_e
|
||||||
{
|
{
|
||||||
// It's very important to distinguish pvoid (opaque) to pchar (can be duplicated)
|
|
||||||
tmedia_pvt_int32,
|
tmedia_pvt_int32,
|
||||||
tmedia_pvt_pvoid, /* SHOULD be removed ==> many problems */
|
tmedia_pvt_pobject,
|
||||||
tmedia_pvt_pchar,
|
tmedia_pvt_pchar,
|
||||||
tmedia_pvt_int64,
|
tmedia_pvt_int64,
|
||||||
}
|
}
|
||||||
tmedia_param_value_type_t;
|
tmedia_param_value_type_t;
|
||||||
|
|
||||||
#define TMEDIA_PARAM_VALUE_TYPE_IS_PTR(self) ((self) == tmedia_pvt_pvoid || (self) == tmedia_pvt_pchar)
|
#define TMEDIA_PARAM_VALUE_TYPE_IS_PTR(self) ((self) == tmedia_pvt_pobject || (self) == tmedia_pvt_pchar)
|
||||||
|
|
||||||
typedef struct tmedia_param_s
|
typedef struct tmedia_param_s
|
||||||
{
|
{
|
||||||
|
|
|
@ -38,6 +38,8 @@
|
||||||
|
|
||||||
#include "tinysdp/tsdp_message.h"
|
#include "tinysdp/tsdp_message.h"
|
||||||
|
|
||||||
|
#include "tinynet.h"
|
||||||
|
|
||||||
#include "tsk_list.h"
|
#include "tsk_list.h"
|
||||||
|
|
||||||
TMEDIA_BEGIN_DECLS
|
TMEDIA_BEGIN_DECLS
|
||||||
|
@ -161,6 +163,8 @@ typedef struct tmedia_session_mgr_s
|
||||||
tsk_bool_t offerer;
|
tsk_bool_t offerer;
|
||||||
//! local IP address or FQDN
|
//! local IP address or FQDN
|
||||||
char* addr;
|
char* addr;
|
||||||
|
//! public IP address or FQDN
|
||||||
|
char* public_addr;
|
||||||
//! whether the @a addr is IPv6 or not (useful when @addr is a FQDN)
|
//! whether the @a addr is IPv6 or not (useful when @addr is a FQDN)
|
||||||
tsk_bool_t ipv6;
|
tsk_bool_t ipv6;
|
||||||
|
|
||||||
|
@ -184,6 +188,9 @@ typedef struct tmedia_session_mgr_s
|
||||||
tmedia_qos_strength_t strength;
|
tmedia_qos_strength_t strength;
|
||||||
} qos;
|
} qos;
|
||||||
|
|
||||||
|
/* NAT Traversal context */
|
||||||
|
tnet_nat_context_handle_t* natt_ctx;
|
||||||
|
|
||||||
//! List of all sessions
|
//! List of all sessions
|
||||||
tmedia_sessions_L_t* sessions;
|
tmedia_sessions_L_t* sessions;
|
||||||
|
|
||||||
|
@ -209,25 +216,25 @@ tmedia_session_param_type_t;
|
||||||
// (const char*)KEY_STR, (void**)&VALUE_PTR
|
// (const char*)KEY_STR, (void**)&VALUE_PTR
|
||||||
/* Manager */
|
/* Manager */
|
||||||
#define TMEDIA_SESSION_MANAGER_SET_INT32(KEY_STR, VALUE_INT32) TMEDIA_SESSION_SET_PARAM(tmedia_none, tmedia_ppt_manager, tmedia_pvt_int32, KEY_STR, VALUE_INT32)
|
#define TMEDIA_SESSION_MANAGER_SET_INT32(KEY_STR, VALUE_INT32) TMEDIA_SESSION_SET_PARAM(tmedia_none, tmedia_ppt_manager, tmedia_pvt_int32, KEY_STR, VALUE_INT32)
|
||||||
#define TMEDIA_SESSION_MANAGER_SET_PVOID(KEY_STR, VALUE_PTR) TMEDIA_SESSION_SET_PARAM(tmedia_none, tmedia_ppt_manager, tmedia_pvt_pvoid, KEY_STR, VALUE_PTR)
|
#define TMEDIA_SESSION_MANAGER_SET_POBJECT(KEY_STR, VALUE_PTR) TMEDIA_SESSION_SET_PARAM(tmedia_none, tmedia_ppt_manager, tmedia_pvt_pobject, KEY_STR, VALUE_PTR)
|
||||||
#define TMEDIA_SESSION_MANAGER_SET_STR(KEY_STR, VALUE_STR) TMEDIA_SESSION_SET_PARAM(tmedia_none, tmedia_ppt_manager, tmedia_pvt_pchar, KEY_STR, VALUE_STR)
|
#define TMEDIA_SESSION_MANAGER_SET_STR(KEY_STR, VALUE_STR) TMEDIA_SESSION_SET_PARAM(tmedia_none, tmedia_ppt_manager, tmedia_pvt_pchar, KEY_STR, VALUE_STR)
|
||||||
#define TMEDIA_SESSION_MANAGER_SET_INT64(KEY_STR, VALUE_INT64) TMEDIA_SESSION_SET_PARAM(tmedia_none, tmedia_ppt_manager, tmedia_pvt_int64, KEY_STR, VALUE_INT64)
|
#define TMEDIA_SESSION_MANAGER_SET_INT64(KEY_STR, VALUE_INT64) TMEDIA_SESSION_SET_PARAM(tmedia_none, tmedia_ppt_manager, tmedia_pvt_int64, KEY_STR, VALUE_INT64)
|
||||||
//#define TMEDIA_SESSION_MANAGER_GET_INT32(KEY_STR, VALUE_PINT32) TMEDIA_SESSION_GET_PARAM(tmedia_none, tmedia_ppt_manager, tmedia_pvt_int32, KEY_STR, VALUE_PINT32)
|
//#define TMEDIA_SESSION_MANAGER_GET_INT32(KEY_STR, VALUE_PINT32) TMEDIA_SESSION_GET_PARAM(tmedia_none, tmedia_ppt_manager, tmedia_pvt_int32, KEY_STR, VALUE_PINT32)
|
||||||
//#define TMEDIA_SESSION_MANAGER_GET_PVOID(KEY_STR, VALUE_PPTR) TMEDIA_SESSION_GET_PARAM(tmedia_none, tmedia_ppt_manager, tmedia_pvt_pvoid, KEY_STR, VALUE_PPTR)
|
//#define TMEDIA_SESSION_MANAGER_GET_PVOID(KEY_STR, VALUE_PPTR) TMEDIA_SESSION_GET_PARAM(tmedia_none, tmedia_ppt_manager, tmedia_pvt_pobject, KEY_STR, VALUE_PPTR)
|
||||||
//#define TMEDIA_SESSION_MANAGER_GET_STR(KEY_STR, VALUE_PSTR) TMEDIA_SESSION_GET_PARAM(tmedia_none, tmedia_ppt_manager, tmedia_pvt_pchar, KEY_STR, VALUE_PSTR)
|
//#define TMEDIA_SESSION_MANAGER_GET_STR(KEY_STR, VALUE_PSTR) TMEDIA_SESSION_GET_PARAM(tmedia_none, tmedia_ppt_manager, tmedia_pvt_pchar, KEY_STR, VALUE_PSTR)
|
||||||
//#define TMEDIA_SESSION_MANAGER_GET_INT64(KEY_STR, VALUE_PINT64) TMEDIA_SESSION_GET_PARAM(tmedia_none, tmedia_ppt_manager, tmedia_pvt_int64, KEY_STR, VALUE_PINT64)
|
//#define TMEDIA_SESSION_MANAGER_GET_INT64(KEY_STR, VALUE_PINT64) TMEDIA_SESSION_GET_PARAM(tmedia_none, tmedia_ppt_manager, tmedia_pvt_int64, KEY_STR, VALUE_PINT64)
|
||||||
/* Any Session */
|
/* Any Session */
|
||||||
#define TMEDIA_SESSION_SET_INT32(MEDIA_TYPE_ENUM, KEY_STR, VALUE_INT32) TMEDIA_SESSION_SET_PARAM(MEDIA_TYPE_ENUM, tmedia_ppt_session, tmedia_pvt_int32, KEY_STR, VALUE_INT32)
|
#define TMEDIA_SESSION_SET_INT32(MEDIA_TYPE_ENUM, KEY_STR, VALUE_INT32) TMEDIA_SESSION_SET_PARAM(MEDIA_TYPE_ENUM, tmedia_ppt_session, tmedia_pvt_int32, KEY_STR, VALUE_INT32)
|
||||||
#define TMEDIA_SESSION_SET_PVOID(MEDIA_TYPE_ENUM, KEY_STR, VALUE_PTR) TMEDIA_SESSION_SET_PARAM(MEDIA_TYPE_ENUM, tmedia_ppt_session, tmedia_pvt_pvoid, KEY_STR, VALUE_PTR)
|
#define TMEDIA_SESSION_SET_POBJECT(MEDIA_TYPE_ENUM, KEY_STR, VALUE_PTR) TMEDIA_SESSION_SET_PARAM(MEDIA_TYPE_ENUM, tmedia_ppt_session, tmedia_pvt_pobject, KEY_STR, VALUE_PTR)
|
||||||
#define TMEDIA_SESSION_SET_STR(MEDIA_TYPE_ENUM, KEY_STR, VALUE_STR) TMEDIA_SESSION_SET_PARAM(MEDIA_TYPE_ENUM, tmedia_ppt_session, tmedia_pvt_pchar, KEY_STR, VALUE_STR)
|
#define TMEDIA_SESSION_SET_STR(MEDIA_TYPE_ENUM, KEY_STR, VALUE_STR) TMEDIA_SESSION_SET_PARAM(MEDIA_TYPE_ENUM, tmedia_ppt_session, tmedia_pvt_pchar, KEY_STR, VALUE_STR)
|
||||||
#define TMEDIA_SESSION_SET_INT64(MEDIA_TYPE_ENUM, KEY_STR, VALUE_INT64) TMEDIA_SESSION_SET_PARAM(MEDIA_TYPE_ENUM, tmedia_ppt_session, tmedia_pvt_int64, KEY_STR, VALUE_INT64)
|
#define TMEDIA_SESSION_SET_INT64(MEDIA_TYPE_ENUM, KEY_STR, VALUE_INT64) TMEDIA_SESSION_SET_PARAM(MEDIA_TYPE_ENUM, tmedia_ppt_session, tmedia_pvt_int64, KEY_STR, VALUE_INT64)
|
||||||
//#define TMEDIA_SESSION_GET_INT32(MEDIA_TYPE_ENUM, KEY_STR, VALUE_PINT32) TMEDIA_SESSION_GET_PARAM(MEDIA_TYPE_ENUM, tmedia_ppt_session, tmedia_pvt_int32, KEY_STR, VALUE_PINT32)
|
//#define TMEDIA_SESSION_GET_INT32(MEDIA_TYPE_ENUM, KEY_STR, VALUE_PINT32) TMEDIA_SESSION_GET_PARAM(MEDIA_TYPE_ENUM, tmedia_ppt_session, tmedia_pvt_int32, KEY_STR, VALUE_PINT32)
|
||||||
//#define TMEDIA_SESSION_GET_PVOID(MEDIA_TYPE_ENUM, KEY_STR, VALUE_PPTR) TMEDIA_SESSION_GET_PARAM(MEDIA_TYPE_ENUM, tmedia_ppt_session, tmedia_pvt_pvoid, KEY_STR, VALUE_PPTR)
|
//#define TMEDIA_SESSION_GET_PVOID(MEDIA_TYPE_ENUM, KEY_STR, VALUE_PPTR) TMEDIA_SESSION_GET_PARAM(MEDIA_TYPE_ENUM, tmedia_ppt_session, tmedia_pvt_pobject, KEY_STR, VALUE_PPTR)
|
||||||
//#define TMEDIA_SESSION_GET_STR(MEDIA_TYPE_ENUM, KEY_STR, VALUE_PSTR) TMEDIA_SESSION_GET_PARAM(MEDIA_TYPE_ENUM, tmedia_ppt_session, tmedia_pvt_pchar, KEY_STR, VALUE_PSTR)
|
//#define TMEDIA_SESSION_GET_STR(MEDIA_TYPE_ENUM, KEY_STR, VALUE_PSTR) TMEDIA_SESSION_GET_PARAM(MEDIA_TYPE_ENUM, tmedia_ppt_session, tmedia_pvt_pchar, KEY_STR, VALUE_PSTR)
|
||||||
//#define TMEDIA_SESSION_GET_INT64(MEDIA_TYPE_ENUM, KEY_STR, VALUE_PINT64) TMEDIA_SESSION_GET_PARAM(MEDIA_TYPE_ENUM, tmedia_ppt_session, tmedia_pvt_int64, KEY_STR, VALUE_PINT64)
|
//#define TMEDIA_SESSION_GET_INT64(MEDIA_TYPE_ENUM, KEY_STR, VALUE_PINT64) TMEDIA_SESSION_GET_PARAM(MEDIA_TYPE_ENUM, tmedia_ppt_session, tmedia_pvt_int64, KEY_STR, VALUE_PINT64)
|
||||||
/* Audio Session */
|
/* Audio Session */
|
||||||
#define TMEDIA_SESSION_AUDIO_SET_INT32(KEY_STR, VALUE_INT32) TMEDIA_SESSION_SET_INT32(tmedia_audio, KEY_STR, VALUE_INT32)
|
#define TMEDIA_SESSION_AUDIO_SET_INT32(KEY_STR, VALUE_INT32) TMEDIA_SESSION_SET_INT32(tmedia_audio, KEY_STR, VALUE_INT32)
|
||||||
#define TMEDIA_SESSION_AUDIO_SET_PVOID(KEY_STR, VALUE_PTR) TMEDIA_SESSION_SET_PVOID(tmedia_audio, KEY_STR, VALUE_PTR)
|
#define TMEDIA_SESSION_AUDIO_SET_POBJECT(KEY_STR, VALUE_PTR) TMEDIA_SESSION_SET_POBJECT(tmedia_audio, KEY_STR, VALUE_PTR)
|
||||||
#define TMEDIA_SESSION_AUDIO_SET_STR(KEY_STR, VALUE_STR) TMEDIA_SESSION_SET_STR(tmedia_audio, KEY_STR, VALUE_STR)
|
#define TMEDIA_SESSION_AUDIO_SET_STR(KEY_STR, VALUE_STR) TMEDIA_SESSION_SET_STR(tmedia_audio, KEY_STR, VALUE_STR)
|
||||||
#define TMEDIA_SESSION_AUDIO_SET_INT64(KEY_STR, VALUE_INT64) TMEDIA_SESSION_SET_INT64(tmedia_audio, KEY_STR, VALUE_INT64)
|
#define TMEDIA_SESSION_AUDIO_SET_INT64(KEY_STR, VALUE_INT64) TMEDIA_SESSION_SET_INT64(tmedia_audio, KEY_STR, VALUE_INT64)
|
||||||
//#define TMEDIA_SESSION_AUDIO_GET_INT32(KEY_STR, VALUE_PINT32) TMEDIA_SESSION_GET_INT32(tmedia_audio, KEY_STR, VALUE_PINT32)
|
//#define TMEDIA_SESSION_AUDIO_GET_INT32(KEY_STR, VALUE_PINT32) TMEDIA_SESSION_GET_INT32(tmedia_audio, KEY_STR, VALUE_PINT32)
|
||||||
|
@ -236,7 +243,7 @@ tmedia_session_param_type_t;
|
||||||
//#define TMEDIA_SESSION_AUDIO_GET_INT64(KEY_STR, VALUE_PINT64) TMEDIA_SESSION_GET_INT64(tmedia_audio, KEY_STR, VALUE_PINT64)
|
//#define TMEDIA_SESSION_AUDIO_GET_INT64(KEY_STR, VALUE_PINT64) TMEDIA_SESSION_GET_INT64(tmedia_audio, KEY_STR, VALUE_PINT64)
|
||||||
/* Video Session */
|
/* Video Session */
|
||||||
#define TMEDIA_SESSION_VIDEO_SET_INT32(KEY_STR, VALUE_INT32) TMEDIA_SESSION_SET_INT32(tmedia_video, KEY_STR, VALUE_INT32)
|
#define TMEDIA_SESSION_VIDEO_SET_INT32(KEY_STR, VALUE_INT32) TMEDIA_SESSION_SET_INT32(tmedia_video, KEY_STR, VALUE_INT32)
|
||||||
#define TMEDIA_SESSION_VIDEO_SET_PVOID(KEY_STR, VALUE_PTR) TMEDIA_SESSION_SET_PVOID(tmedia_video, KEY_STR, VALUE_PTR)
|
#define TMEDIA_SESSION_VIDEO_SET_POBJECT(KEY_STR, VALUE_PTR) TMEDIA_SESSION_SET_POBJECT(tmedia_video, KEY_STR, VALUE_PTR)
|
||||||
#define TMEDIA_SESSION_VIDEO_SET_STR(KEY_STR, VALUE_STR) TMEDIA_SESSION_SET_STR(tmedia_video, KEY_STR, VALUE_STR)
|
#define TMEDIA_SESSION_VIDEO_SET_STR(KEY_STR, VALUE_STR) TMEDIA_SESSION_SET_STR(tmedia_video, KEY_STR, VALUE_STR)
|
||||||
#define TMEDIA_SESSION_VIDEO_SET_INT64(KEY_STR, VALUE_INT64) TMEDIA_SESSION_SET_INT64(tmedia_video, KEY_STR, VALUE_INT64)
|
#define TMEDIA_SESSION_VIDEO_SET_INT64(KEY_STR, VALUE_INT64) TMEDIA_SESSION_SET_INT64(tmedia_video, KEY_STR, VALUE_INT64)
|
||||||
//#define TMEDIA_SESSION_VIDEO_GET_INT32(KEY_STR, VALUE_PINT32) TMEDIA_SESSION_GET_INT32(tmedia_video, KEY_STR, VALUE_PINT32)
|
//#define TMEDIA_SESSION_VIDEO_GET_INT32(KEY_STR, VALUE_PINT32) TMEDIA_SESSION_GET_INT32(tmedia_video, KEY_STR, VALUE_PINT32)
|
||||||
|
@ -245,7 +252,7 @@ tmedia_session_param_type_t;
|
||||||
//#define TMEDIA_SESSION_VIDEO_GET_INT64(KEY_STR, VALUE_PINT64) TMEDIA_SESSION_GET_INT64(tmedia_video, KEY_STR, VALUE_PINT64)
|
//#define TMEDIA_SESSION_VIDEO_GET_INT64(KEY_STR, VALUE_PINT64) TMEDIA_SESSION_GET_INT64(tmedia_video, KEY_STR, VALUE_PINT64)
|
||||||
/* Msrp Session */
|
/* Msrp Session */
|
||||||
#define TMEDIA_SESSION_MSRP_SET_INT32(KEY_STR, VALUE_INT32) TMEDIA_SESSION_SET_INT32(tmedia_msrp, KEY_STR, VALUE_INT32)
|
#define TMEDIA_SESSION_MSRP_SET_INT32(KEY_STR, VALUE_INT32) TMEDIA_SESSION_SET_INT32(tmedia_msrp, KEY_STR, VALUE_INT32)
|
||||||
#define TMEDIA_SESSION_MSRP_SET_PVOID(KEY_STR, VALUE_PTR) TMEDIA_SESSION_SET_PVOID(tmedia_msrp, KEY_STR, VALUE_PTR)
|
#define TMEDIA_SESSION_MSRP_SET_POBJECT(KEY_STR, VALUE_PTR) TMEDIA_SESSION_SET_POBJECT(tmedia_msrp, KEY_STR, VALUE_PTR)
|
||||||
#define TMEDIA_SESSION_MSRP_SET_STR(KEY_STR, VALUE_STR) TMEDIA_SESSION_SET_STR(tmedia_msrp, KEY_STR, VALUE_STR)
|
#define TMEDIA_SESSION_MSRP_SET_STR(KEY_STR, VALUE_STR) TMEDIA_SESSION_SET_STR(tmedia_msrp, KEY_STR, VALUE_STR)
|
||||||
#define TMEDIA_SESSION_MSRP_SET_INT64(KEY_STR, VALUE_INT64) TMEDIA_SESSION_SET_INT64(tmedia_msrp, KEY_STR, VALUE_INT64)
|
#define TMEDIA_SESSION_MSRP_SET_INT64(KEY_STR, VALUE_INT64) TMEDIA_SESSION_SET_INT64(tmedia_msrp, KEY_STR, VALUE_INT64)
|
||||||
//#define TMEDIA_SESSION_MSRP_GET_INT32(KEY_STR, VALUE_PINT32) TMEDIA_SESSION_GET_INT32(tmedia_msrp, KEY_STR, VALUE_PINT32)
|
//#define TMEDIA_SESSION_MSRP_GET_INT32(KEY_STR, VALUE_PINT32) TMEDIA_SESSION_GET_INT32(tmedia_msrp, KEY_STR, VALUE_PINT32)
|
||||||
|
@ -254,16 +261,16 @@ tmedia_session_param_type_t;
|
||||||
//#define TMEDIA_SESSION_MSRP_GET_INT64(KEY_STR, VALUE_PINT64) TMEDIA_SESSION_GET_INT64(tmedia_msrp, KEY_STR, VALUE_PINT64)
|
//#define TMEDIA_SESSION_MSRP_GET_INT64(KEY_STR, VALUE_PINT64) TMEDIA_SESSION_GET_INT64(tmedia_msrp, KEY_STR, VALUE_PINT64)
|
||||||
/* Any Consumer */
|
/* Any Consumer */
|
||||||
#define TMEDIA_SESSION_CONSUMER_SET_INT32(MEDIA_TYPE_ENUM, KEY_STR, VALUE_INT32) TMEDIA_SESSION_SET_PARAM(MEDIA_TYPE_ENUM, tmedia_ppt_consumer, tmedia_pvt_int32, KEY_STR, VALUE_INT32)
|
#define TMEDIA_SESSION_CONSUMER_SET_INT32(MEDIA_TYPE_ENUM, KEY_STR, VALUE_INT32) TMEDIA_SESSION_SET_PARAM(MEDIA_TYPE_ENUM, tmedia_ppt_consumer, tmedia_pvt_int32, KEY_STR, VALUE_INT32)
|
||||||
#define TMEDIA_SESSION_CONSUMER_SET_PVOID(MEDIA_TYPE_ENUM, KEY_STR, VALUE_PTR) TMEDIA_SESSION_SET_PARAM(MEDIA_TYPE_ENUM, tmedia_ppt_consumer, tmedia_pvt_pvoid, KEY_STR, VALUE_PTR)
|
#define TMEDIA_SESSION_CONSUMER_SET_POBJECT(MEDIA_TYPE_ENUM, KEY_STR, VALUE_PTR) TMEDIA_SESSION_SET_PARAM(MEDIA_TYPE_ENUM, tmedia_ppt_consumer, tmedia_pvt_pobject, KEY_STR, VALUE_PTR)
|
||||||
#define TMEDIA_SESSION_CONSUMER_SET_STR(MEDIA_TYPE_ENUM, KEY_STR, VALUE_STR) TMEDIA_SESSION_SET_PARAM(MEDIA_TYPE_ENUM, tmedia_ppt_consumer, tmedia_pvt_pchar, KEY_STR, VALUE_STR)
|
#define TMEDIA_SESSION_CONSUMER_SET_STR(MEDIA_TYPE_ENUM, KEY_STR, VALUE_STR) TMEDIA_SESSION_SET_PARAM(MEDIA_TYPE_ENUM, tmedia_ppt_consumer, tmedia_pvt_pchar, KEY_STR, VALUE_STR)
|
||||||
#define TMEDIA_SESSION_CONSUMER_SET_INT64(MEDIA_TYPE_ENUM, KEY_STR, VALUE_INT64) TMEDIA_SESSION_SET_PARAM(MEDIA_TYPE_ENUM, tmedia_ppt_consumer, tmedia_pvt_int64, KEY_STR, VALUE_INT64)
|
#define TMEDIA_SESSION_CONSUMER_SET_INT64(MEDIA_TYPE_ENUM, KEY_STR, VALUE_INT64) TMEDIA_SESSION_SET_PARAM(MEDIA_TYPE_ENUM, tmedia_ppt_consumer, tmedia_pvt_int64, KEY_STR, VALUE_INT64)
|
||||||
//#define TMEDIA_SESSION_CONSUMER_GET_INT32(MEDIA_TYPE_ENUM, KEY_STR, VALUE_PINT32) TMEDIA_SESSION_GET_PARAM(MEDIA_TYPE_ENUM, tmedia_ppt_consumer, tmedia_pvt_int32, KEY_STR, VALUE_PINT32)
|
//#define TMEDIA_SESSION_CONSUMER_GET_INT32(MEDIA_TYPE_ENUM, KEY_STR, VALUE_PINT32) TMEDIA_SESSION_GET_PARAM(MEDIA_TYPE_ENUM, tmedia_ppt_consumer, tmedia_pvt_int32, KEY_STR, VALUE_PINT32)
|
||||||
//#define TMEDIA_SESSION_CONSUMER_GET_PVOID(MEDIA_TYPE_ENUM, KEY_STR, VALUE_PPTR) TMEDIA_SESSION_GET_PARAM(MEDIA_TYPE_ENUM, tmedia_ppt_consumer, tmedia_pvt_pvoid, KEY_STR, VALUE_PPTR)
|
//#define TMEDIA_SESSION_CONSUMER_GET_PVOID(MEDIA_TYPE_ENUM, KEY_STR, VALUE_PPTR) TMEDIA_SESSION_GET_PARAM(MEDIA_TYPE_ENUM, tmedia_ppt_consumer, tmedia_pvt_pobject, KEY_STR, VALUE_PPTR)
|
||||||
//#define TMEDIA_SESSION_CONSUMER_GET_STR(MEDIA_TYPE_ENUM, KEY_STR, VALUE_PSTR) TMEDIA_SESSION_GET_PARAM(MEDIA_TYPE_ENUM, tmedia_ppt_consumer, tmedia_pvt_pchar, KEY_STR, VALUE_PSTR)
|
//#define TMEDIA_SESSION_CONSUMER_GET_STR(MEDIA_TYPE_ENUM, KEY_STR, VALUE_PSTR) TMEDIA_SESSION_GET_PARAM(MEDIA_TYPE_ENUM, tmedia_ppt_consumer, tmedia_pvt_pchar, KEY_STR, VALUE_PSTR)
|
||||||
//#define TMEDIA_SESSION_CONSUMER_GET_INT64(MEDIA_TYPE_ENUM, KEY_STR, VALUE_PINT64) TMEDIA_SESSION_GET_PARAM(MEDIA_TYPE_ENUM, tmedia_ppt_consumer, tmedia_pvt_int64, KEY_STR, VALUE_PINT64)
|
//#define TMEDIA_SESSION_CONSUMER_GET_INT64(MEDIA_TYPE_ENUM, KEY_STR, VALUE_PINT64) TMEDIA_SESSION_GET_PARAM(MEDIA_TYPE_ENUM, tmedia_ppt_consumer, tmedia_pvt_int64, KEY_STR, VALUE_PINT64)
|
||||||
/* Audio Consumer */
|
/* Audio Consumer */
|
||||||
#define TMEDIA_SESSION_AUDIO_CONSUMER_SET_INT32(KEY_STR, VALUE_INT32) TMEDIA_SESSION_CONSUMER_SET_INT32(tmedia_audio, KEY_STR, VALUE_INT32)
|
#define TMEDIA_SESSION_AUDIO_CONSUMER_SET_INT32(KEY_STR, VALUE_INT32) TMEDIA_SESSION_CONSUMER_SET_INT32(tmedia_audio, KEY_STR, VALUE_INT32)
|
||||||
#define TMEDIA_SESSION_AUDIO_CONSUMER_SET_PVOID(KEY_STR, VALUE_PTR) TMEDIA_SESSION_CONSUMER_SET_PVOID(tmedia_audio, KEY_STR, VALUE_PTR)
|
#define TMEDIA_SESSION_AUDIO_CONSUMER_SET_POBJECT(KEY_STR, VALUE_PTR) TMEDIA_SESSION_CONSUMER_SET_POBJECT(tmedia_audio, KEY_STR, VALUE_PTR)
|
||||||
#define TMEDIA_SESSION_AUDIO_CONSUMER_SET_STR(KEY_STR, VALUE_STR) TMEDIA_SESSION_CONSUMER_SET_STR(tmedia_audio, KEY_STR, VALUE_STR)
|
#define TMEDIA_SESSION_AUDIO_CONSUMER_SET_STR(KEY_STR, VALUE_STR) TMEDIA_SESSION_CONSUMER_SET_STR(tmedia_audio, KEY_STR, VALUE_STR)
|
||||||
#define TMEDIA_SESSION_AUDIO_CONSUMER_SET_INT64(KEY_STR, VALUE_INT64) TMEDIA_SESSION_CONSUMER_SET_INT64(tmedia_audio, KEY_STR, VALUE_INT64)
|
#define TMEDIA_SESSION_AUDIO_CONSUMER_SET_INT64(KEY_STR, VALUE_INT64) TMEDIA_SESSION_CONSUMER_SET_INT64(tmedia_audio, KEY_STR, VALUE_INT64)
|
||||||
//#define TMEDIA_SESSION_AUDIO_CONSUMER_GET_INT32(KEY_STR, VALUE_PINT32) TMEDIA_SESSION_CONSUMER_GET_INT32(tmedia_audio, KEY_STR, VALUE_PINT32)
|
//#define TMEDIA_SESSION_AUDIO_CONSUMER_GET_INT32(KEY_STR, VALUE_PINT32) TMEDIA_SESSION_CONSUMER_GET_INT32(tmedia_audio, KEY_STR, VALUE_PINT32)
|
||||||
|
@ -272,7 +279,7 @@ tmedia_session_param_type_t;
|
||||||
//#define TMEDIA_SESSION_AUDIO_CONSUMER_GET_INT64(KEY_STR, VALUE_PINT64) TMEDIA_SESSION_CONSUMER_GET_INT64(tmedia_audio, KEY_STR, VALUE_PINT64)
|
//#define TMEDIA_SESSION_AUDIO_CONSUMER_GET_INT64(KEY_STR, VALUE_PINT64) TMEDIA_SESSION_CONSUMER_GET_INT64(tmedia_audio, KEY_STR, VALUE_PINT64)
|
||||||
/* Video Consumer */
|
/* Video Consumer */
|
||||||
#define TMEDIA_SESSION_VIDEO_CONSUMER_SET_INT32(KEY_STR, VALUE_INT32) TMEDIA_SESSION_CONSUMER_SET_INT32(tmedia_video, KEY_STR, VALUE_INT32)
|
#define TMEDIA_SESSION_VIDEO_CONSUMER_SET_INT32(KEY_STR, VALUE_INT32) TMEDIA_SESSION_CONSUMER_SET_INT32(tmedia_video, KEY_STR, VALUE_INT32)
|
||||||
#define TMEDIA_SESSION_VIDEO_CONSUMER_SET_PVOID(KEY_STR, VALUE_PTR) TMEDIA_SESSION_CONSUMER_SET_PVOID(tmedia_video, KEY_STR, VALUE_PTR)
|
#define TMEDIA_SESSION_VIDEO_CONSUMER_SET_POBJECT(KEY_STR, VALUE_PTR) TMEDIA_SESSION_CONSUMER_SET_POBJECT(tmedia_video, KEY_STR, VALUE_PTR)
|
||||||
#define TMEDIA_SESSION_VIDEO_CONSUMER_SET_STR(KEY_STR, VALUE_STR) TMEDIA_SESSION_CONSUMER_SET_STR(tmedia_video, KEY_STR, VALUE_STR)
|
#define TMEDIA_SESSION_VIDEO_CONSUMER_SET_STR(KEY_STR, VALUE_STR) TMEDIA_SESSION_CONSUMER_SET_STR(tmedia_video, KEY_STR, VALUE_STR)
|
||||||
#define TMEDIA_SESSION_VIDEO_CONSUMER_SET_INT64(KEY_STR, VALUE_INT64) TMEDIA_SESSION_CONSUMER_SET_INT64(tmedia_video, KEY_STR, VALUE_INT64)
|
#define TMEDIA_SESSION_VIDEO_CONSUMER_SET_INT64(KEY_STR, VALUE_INT64) TMEDIA_SESSION_CONSUMER_SET_INT64(tmedia_video, KEY_STR, VALUE_INT64)
|
||||||
//#define TMEDIA_SESSION_VIDEO_CONSUMER_GET_INT32(KEY_STR, VALUE_PINT32) TMEDIA_SESSION_CONSUMER_GET_INT32(tmedia_video, KEY_STR, VALUE_PINT32)
|
//#define TMEDIA_SESSION_VIDEO_CONSUMER_GET_INT32(KEY_STR, VALUE_PINT32) TMEDIA_SESSION_CONSUMER_GET_INT32(tmedia_video, KEY_STR, VALUE_PINT32)
|
||||||
|
@ -281,7 +288,7 @@ tmedia_session_param_type_t;
|
||||||
//#define TMEDIA_SESSION_VIDEO_CONSUMER_GET_INT64(KEY_STR, VALUE_PINT64) TMEDIA_SESSION_CONSUMER_GET_INT64(tmedia_video, KEY_STR, VALUE_PINT64)
|
//#define TMEDIA_SESSION_VIDEO_CONSUMER_GET_INT64(KEY_STR, VALUE_PINT64) TMEDIA_SESSION_CONSUMER_GET_INT64(tmedia_video, KEY_STR, VALUE_PINT64)
|
||||||
/* Msrp Consumer */
|
/* Msrp Consumer */
|
||||||
#define TMEDIA_SESSION_MSRP_CONSUMER_SET_INT32(KEY_STR, VALUE_INT32) TMEDIA_SESSION_CONSUMER_SET_INT32(tmedia_msrp, KEY_STR, VALUE_INT32)
|
#define TMEDIA_SESSION_MSRP_CONSUMER_SET_INT32(KEY_STR, VALUE_INT32) TMEDIA_SESSION_CONSUMER_SET_INT32(tmedia_msrp, KEY_STR, VALUE_INT32)
|
||||||
#define TMEDIA_SESSION_MSRP_CONSUMER_SET_PVOID(KEY_STR, VALUE_PTR) TMEDIA_SESSION_CONSUMER_SET_PVOID(tmedia_msrp, KEY_STR, VALUE_PTR)
|
#define TMEDIA_SESSION_MSRP_CONSUMER_SET_POBJECT(KEY_STR, VALUE_PTR) TMEDIA_SESSION_CONSUMER_SET_POBJECT(tmedia_msrp, KEY_STR, VALUE_PTR)
|
||||||
#define TMEDIA_SESSION_MSRP_CONSUMER_SET_STR(KEY_STR, VALUE_STR) TMEDIA_SESSION_CONSUMER_SET_STR(tmedia_msrp, KEY_STR, VALUE_STR)
|
#define TMEDIA_SESSION_MSRP_CONSUMER_SET_STR(KEY_STR, VALUE_STR) TMEDIA_SESSION_CONSUMER_SET_STR(tmedia_msrp, KEY_STR, VALUE_STR)
|
||||||
#define TMEDIA_SESSION_MSRP_CONSUMER_SET_INT64(KEY_STR, VALUE_INT64) TMEDIA_SESSION_CONSUMER_SET_INT64(tmedia_msrp, KEY_STR, VALUE_INT64)
|
#define TMEDIA_SESSION_MSRP_CONSUMER_SET_INT64(KEY_STR, VALUE_INT64) TMEDIA_SESSION_CONSUMER_SET_INT64(tmedia_msrp, KEY_STR, VALUE_INT64)
|
||||||
//#define TMEDIA_SESSION_MSRP_CONSUMER_GET_INT32(KEY_STR, VALUE_PINT32) TMEDIA_SESSION_CONSUMER_GET_INT32(tmedia_msrp, KEY_STR, VALUE_PINT32)
|
//#define TMEDIA_SESSION_MSRP_CONSUMER_GET_INT32(KEY_STR, VALUE_PINT32) TMEDIA_SESSION_CONSUMER_GET_INT32(tmedia_msrp, KEY_STR, VALUE_PINT32)
|
||||||
|
@ -290,16 +297,16 @@ tmedia_session_param_type_t;
|
||||||
//#define TMEDIA_SESSION_MSRP_CONSUMER_GET_INT64(KEY_STR, VALUE_PINT64) TMEDIA_SESSION_CONSUMER_GET_INT64(tmedia_msrp, KEY_STR, VALUE_PINT64)
|
//#define TMEDIA_SESSION_MSRP_CONSUMER_GET_INT64(KEY_STR, VALUE_PINT64) TMEDIA_SESSION_CONSUMER_GET_INT64(tmedia_msrp, KEY_STR, VALUE_PINT64)
|
||||||
/* Any Producer */
|
/* Any Producer */
|
||||||
#define TMEDIA_SESSION_PRODUCER_SET_INT32(MEDIA_TYPE_ENUM, KEY_STR, VALUE_INT32) TMEDIA_SESSION_SET_PARAM(MEDIA_TYPE_ENUM, tmedia_ppt_producer, tmedia_pvt_int32, KEY_STR, VALUE_INT32)
|
#define TMEDIA_SESSION_PRODUCER_SET_INT32(MEDIA_TYPE_ENUM, KEY_STR, VALUE_INT32) TMEDIA_SESSION_SET_PARAM(MEDIA_TYPE_ENUM, tmedia_ppt_producer, tmedia_pvt_int32, KEY_STR, VALUE_INT32)
|
||||||
#define TMEDIA_SESSION_PRODUCER_SET_PVOID(MEDIA_TYPE_ENUM, KEY_STR, VALUE_PTR) TMEDIA_SESSION_SET_PARAM(MEDIA_TYPE_ENUM, tmedia_ppt_producer, tmedia_pvt_pvoid, KEY_STR, VALUE_PTR)
|
#define TMEDIA_SESSION_PRODUCER_SET_POBJECT(MEDIA_TYPE_ENUM, KEY_STR, VALUE_PTR) TMEDIA_SESSION_SET_PARAM(MEDIA_TYPE_ENUM, tmedia_ppt_producer, tmedia_pvt_pobject, KEY_STR, VALUE_PTR)
|
||||||
#define TMEDIA_SESSION_PRODUCER_SET_STR(MEDIA_TYPE_ENUM, KEY_STR, VALUE_STR) TMEDIA_SESSION_SET_PARAM(MEDIA_TYPE_ENUM, tmedia_ppt_producer, tmedia_pvt_pchar, KEY_STR, VALUE_STR)
|
#define TMEDIA_SESSION_PRODUCER_SET_STR(MEDIA_TYPE_ENUM, KEY_STR, VALUE_STR) TMEDIA_SESSION_SET_PARAM(MEDIA_TYPE_ENUM, tmedia_ppt_producer, tmedia_pvt_pchar, KEY_STR, VALUE_STR)
|
||||||
#define TMEDIA_SESSION_PRODUCER_SET_INT64(MEDIA_TYPE_ENUM, KEY_STR, VALUE_INT64) TMEDIA_SESSION_SET_PARAM(MEDIA_TYPE_ENUM, tmedia_ppt_producer, tmedia_pvt_int64, KEY_STR, VALUE_INT64)
|
#define TMEDIA_SESSION_PRODUCER_SET_INT64(MEDIA_TYPE_ENUM, KEY_STR, VALUE_INT64) TMEDIA_SESSION_SET_PARAM(MEDIA_TYPE_ENUM, tmedia_ppt_producer, tmedia_pvt_int64, KEY_STR, VALUE_INT64)
|
||||||
//#define TMEDIA_SESSION_PRODUCER_GET_INT32(MEDIA_TYPE_ENUM, KEY_STR, VALUE_PINT32) TMEDIA_SESSION_GET_PARAM(MEDIA_TYPE_ENUM, tmedia_ppt_producer, tmedia_pvt_int32, KEY_STR, VALUE_PINT32)
|
//#define TMEDIA_SESSION_PRODUCER_GET_INT32(MEDIA_TYPE_ENUM, KEY_STR, VALUE_PINT32) TMEDIA_SESSION_GET_PARAM(MEDIA_TYPE_ENUM, tmedia_ppt_producer, tmedia_pvt_int32, KEY_STR, VALUE_PINT32)
|
||||||
//#define TMEDIA_SESSION_PRODUCER_GET_PVOID(MEDIA_TYPE_ENUM, KEY_STR, VALUE_PPTR) TMEDIA_SESSION_GET_PARAM(MEDIA_TYPE_ENUM, tmedia_ppt_producer, tmedia_pvt_pvoid, KEY_STR, VALUE_PPTR)
|
//#define TMEDIA_SESSION_PRODUCER_GET_PVOID(MEDIA_TYPE_ENUM, KEY_STR, VALUE_PPTR) TMEDIA_SESSION_GET_PARAM(MEDIA_TYPE_ENUM, tmedia_ppt_producer, tmedia_pvt_pobject, KEY_STR, VALUE_PPTR)
|
||||||
//#define TMEDIA_SESSION_PRODUCER_GET_STR(MEDIA_TYPE_ENUM, KEY_STR, VALUE_PSTR) TMEDIA_SESSION_GET_PARAM(MEDIA_TYPE_ENUM, tmedia_ppt_producer, tmedia_pvt_pchar, KEY_STR, VALUE_PSTR)
|
//#define TMEDIA_SESSION_PRODUCER_GET_STR(MEDIA_TYPE_ENUM, KEY_STR, VALUE_PSTR) TMEDIA_SESSION_GET_PARAM(MEDIA_TYPE_ENUM, tmedia_ppt_producer, tmedia_pvt_pchar, KEY_STR, VALUE_PSTR)
|
||||||
//#define TMEDIA_SESSION_PRODUCER_GET_INT64(MEDIA_TYPE_ENUM, KEY_STR, VALUE_PINT64) TMEDIA_SESSION_GET_PARAM(MEDIA_TYPE_ENUM, tmedia_ppt_producer, tmedia_pvt_int64, KEY_STR, VALUE_PINT64)
|
//#define TMEDIA_SESSION_PRODUCER_GET_INT64(MEDIA_TYPE_ENUM, KEY_STR, VALUE_PINT64) TMEDIA_SESSION_GET_PARAM(MEDIA_TYPE_ENUM, tmedia_ppt_producer, tmedia_pvt_int64, KEY_STR, VALUE_PINT64)
|
||||||
/* Audio Producer */
|
/* Audio Producer */
|
||||||
#define TMEDIA_SESSION_AUDIO_PRODUCER_SET_INT32(KEY_STR, VALUE_INT32) TMEDIA_SESSION_PRODUCER_SET_INT32(tmedia_audio, KEY_STR, VALUE_INT32)
|
#define TMEDIA_SESSION_AUDIO_PRODUCER_SET_INT32(KEY_STR, VALUE_INT32) TMEDIA_SESSION_PRODUCER_SET_INT32(tmedia_audio, KEY_STR, VALUE_INT32)
|
||||||
#define TMEDIA_SESSION_AUDIO_PRODUCER_SET_PVOID(KEY_STR, VALUE_PTR) TMEDIA_SESSION_PRODUCER_SET_PVOID(tmedia_audio, KEY_STR, VALUE_PTR)
|
#define TMEDIA_SESSION_AUDIO_PRODUCER_SET_POBJECT(KEY_STR, VALUE_PTR) TMEDIA_SESSION_PRODUCER_SET_POBJECT(tmedia_audio, KEY_STR, VALUE_PTR)
|
||||||
#define TMEDIA_SESSION_AUDIO_PRODUCER_SET_STR(KEY_STR, VALUE_STR) TMEDIA_SESSION_AUDIO_PRODUCER_SET_STR(tmedia_audio, KEY_STR, VALUE_STR)
|
#define TMEDIA_SESSION_AUDIO_PRODUCER_SET_STR(KEY_STR, VALUE_STR) TMEDIA_SESSION_AUDIO_PRODUCER_SET_STR(tmedia_audio, KEY_STR, VALUE_STR)
|
||||||
#define TMEDIA_SESSION_AUDIO_PRODUCER_SET_INT64(KEY_STR, VALUE_INT64) TMEDIA_SESSION_PRODUCER_SET_INT64(tmedia_audio, KEY_STR, VALUE_INT64)
|
#define TMEDIA_SESSION_AUDIO_PRODUCER_SET_INT64(KEY_STR, VALUE_INT64) TMEDIA_SESSION_PRODUCER_SET_INT64(tmedia_audio, KEY_STR, VALUE_INT64)
|
||||||
//#define TMEDIA_SESSION_AUDIO_PRODUCER_GET_INT32(KEY_STR, VALUE_PINT32) TMEDIA_SESSION_PRODUCER_GET_INT32(tmedia_audio, KEY_STR, VALUE_PINT32)
|
//#define TMEDIA_SESSION_AUDIO_PRODUCER_GET_INT32(KEY_STR, VALUE_PINT32) TMEDIA_SESSION_PRODUCER_GET_INT32(tmedia_audio, KEY_STR, VALUE_PINT32)
|
||||||
|
@ -308,7 +315,7 @@ tmedia_session_param_type_t;
|
||||||
//#define TMEDIA_SESSION_AUDIO_PRODUCER_GET_INT64(KEY_STR, VALUE_PINT64) TMEDIA_SESSION_PRODUCER_GET_INT64(tmedia_audio, KEY_STR, VALUE_PINT64)
|
//#define TMEDIA_SESSION_AUDIO_PRODUCER_GET_INT64(KEY_STR, VALUE_PINT64) TMEDIA_SESSION_PRODUCER_GET_INT64(tmedia_audio, KEY_STR, VALUE_PINT64)
|
||||||
/* Video Producer */
|
/* Video Producer */
|
||||||
#define TMEDIA_SESSION_VIDEO_PRODUCER_SET_INT32(KEY_STR, VALUE_INT32) TMEDIA_SESSION_PRODUCER_SET_INT32(tmedia_video, KEY_STR, VALUE_INT32)
|
#define TMEDIA_SESSION_VIDEO_PRODUCER_SET_INT32(KEY_STR, VALUE_INT32) TMEDIA_SESSION_PRODUCER_SET_INT32(tmedia_video, KEY_STR, VALUE_INT32)
|
||||||
#define TMEDIA_SESSION_VIDEO_PRODUCER_SET_PVOID(KEY_STR, VALUE_PTR) TMEDIA_SESSION_PRODUCER_SET_PVOID(tmedia_video, KEY_STR, VALUE_PTR)
|
#define TMEDIA_SESSION_VIDEO_PRODUCER_SET_POBJECT(KEY_STR, VALUE_PTR) TMEDIA_SESSION_PRODUCER_SET_POBJECT(tmedia_video, KEY_STR, VALUE_PTR)
|
||||||
#define TMEDIA_SESSION_VIDEO_PRODUCER_SET_STR(KEY_STR, VALUE_STR) TMEDIA_SESSION_AUDIO_PRODUCER_SET_STR(tmedia_video, KEY_STR, VALUE_STR)
|
#define TMEDIA_SESSION_VIDEO_PRODUCER_SET_STR(KEY_STR, VALUE_STR) TMEDIA_SESSION_AUDIO_PRODUCER_SET_STR(tmedia_video, KEY_STR, VALUE_STR)
|
||||||
#define TMEDIA_SESSION_VIDEO_PRODUCER_SET_INT64(KEY_STR, VALUE_INT64) TMEDIA_SESSION_PRODUCER_SET_INT64(tmedia_video, KEY_STR, VALUE_INT64)
|
#define TMEDIA_SESSION_VIDEO_PRODUCER_SET_INT64(KEY_STR, VALUE_INT64) TMEDIA_SESSION_PRODUCER_SET_INT64(tmedia_video, KEY_STR, VALUE_INT64)
|
||||||
//#define TMEDIA_SESSION_VIDEO_PRODUCER_GET_INT32(KEY_STR, VALUE_PINT32) TMEDIA_SESSION_PRODUCER_GET_INT32(tmedia_video, KEY_STR, VALUE_PINT32)
|
//#define TMEDIA_SESSION_VIDEO_PRODUCER_GET_INT32(KEY_STR, VALUE_PINT32) TMEDIA_SESSION_PRODUCER_GET_INT32(tmedia_video, KEY_STR, VALUE_PINT32)
|
||||||
|
@ -317,7 +324,7 @@ tmedia_session_param_type_t;
|
||||||
//#define TMEDIA_SESSION_VIDEO_PRODUCER_GET_INT64(KEY_STR, VALUE_PINT64) TMEDIA_SESSION_PRODUCER_GET_INT64(tmedia_video, KEY_STR, VALUE_PINT64)
|
//#define TMEDIA_SESSION_VIDEO_PRODUCER_GET_INT64(KEY_STR, VALUE_PINT64) TMEDIA_SESSION_PRODUCER_GET_INT64(tmedia_video, KEY_STR, VALUE_PINT64)
|
||||||
/* Msrp Producer */
|
/* Msrp Producer */
|
||||||
#define TMEDIA_SESSION_MSRP_PRODUCER_SET_INT32(KEY_STR, VALUE_INT32) TMEDIA_SESSION_PRODUCER_SET_INT32(tmedia_msrp, KEY_STR, VALUE_INT32)
|
#define TMEDIA_SESSION_MSRP_PRODUCER_SET_INT32(KEY_STR, VALUE_INT32) TMEDIA_SESSION_PRODUCER_SET_INT32(tmedia_msrp, KEY_STR, VALUE_INT32)
|
||||||
#define TMEDIA_SESSION_MSRP_PRODUCER_SET_PVOID(KEY_STR, VALUE_PTR) TMEDIA_SESSION_PRODUCER_SET_PVOID(tmedia_msrp, KEY_STR, VALUE_PTR)
|
#define TMEDIA_SESSION_MSRP_PRODUCER_SET_POBJECT(KEY_STR, VALUE_PTR) TMEDIA_SESSION_PRODUCER_SET_POBJECT(tmedia_msrp, KEY_STR, VALUE_PTR)
|
||||||
#define TMEDIA_SESSION_MSRP_PRODUCER_SET_STR(KEY_STR, VALUE_STR) TMEDIA_SESSION_AUDIO_PRODUCER_SET_STR(tmedia_msrp, KEY_STR, VALUE_STR)
|
#define TMEDIA_SESSION_MSRP_PRODUCER_SET_STR(KEY_STR, VALUE_STR) TMEDIA_SESSION_AUDIO_PRODUCER_SET_STR(tmedia_msrp, KEY_STR, VALUE_STR)
|
||||||
#define TMEDIA_SESSION_MSRP_PRODUCER_SET_INT64(KEY_STR, VALUE_INT64) TMEDIA_SESSION_PRODUCER_SET_INT64(tmedia_msrp, KEY_STR, VALUE_INT64)
|
#define TMEDIA_SESSION_MSRP_PRODUCER_SET_INT64(KEY_STR, VALUE_INT64) TMEDIA_SESSION_PRODUCER_SET_INT64(tmedia_msrp, KEY_STR, VALUE_INT64)
|
||||||
//#define TMEDIA_SESSION_MSRP_PRODUCER_GET_INT32(KEY_STR, VALUE_PINT32) TMEDIA_SESSION_PRODUCER_GET_INT32(tmedia_msrp, KEY_STR, VALUE_PINT32)
|
//#define TMEDIA_SESSION_MSRP_PRODUCER_GET_INT32(KEY_STR, VALUE_PINT32) TMEDIA_SESSION_PRODUCER_GET_INT32(tmedia_msrp, KEY_STR, VALUE_PINT32)
|
||||||
|
@ -336,6 +343,7 @@ tmedia_session_param_type_t;
|
||||||
|
|
||||||
|
|
||||||
TINYMEDIA_API tmedia_session_mgr_t* tmedia_session_mgr_create(tmedia_type_t type, const char* addr, tsk_bool_t ipv6, tsk_bool_t offerer);
|
TINYMEDIA_API tmedia_session_mgr_t* tmedia_session_mgr_create(tmedia_type_t type, const char* addr, tsk_bool_t ipv6, tsk_bool_t offerer);
|
||||||
|
TINYMEDIA_API int tmedia_session_mgr_set_natt_ctx(tmedia_session_mgr_t* self, tnet_nat_context_handle_t* natt_ctx, const char* public_addr);
|
||||||
TINYMEDIA_API int tmedia_session_mgr_start(tmedia_session_mgr_t* self);
|
TINYMEDIA_API int tmedia_session_mgr_start(tmedia_session_mgr_t* self);
|
||||||
TINYMEDIA_API int tmedia_session_mgr_set(tmedia_session_mgr_t* self, ...);
|
TINYMEDIA_API int tmedia_session_mgr_set(tmedia_session_mgr_t* self, ...);
|
||||||
TINYMEDIA_API int tmedia_session_mgr_set_2(tmedia_session_mgr_t* self, va_list *app);
|
TINYMEDIA_API int tmedia_session_mgr_set_2(tmedia_session_mgr_t* self, va_list *app);
|
||||||
|
|
|
@ -55,19 +55,20 @@ tmedia_param_t* tmedia_param_create(tmedia_param_access_type_t access_type,
|
||||||
switch(value_type){
|
switch(value_type){
|
||||||
case tmedia_pvt_int32:
|
case tmedia_pvt_int32:
|
||||||
if(param->value = tsk_calloc(1, sizeof(int32_t))){
|
if(param->value = tsk_calloc(1, sizeof(int32_t))){
|
||||||
*((int32_t*)param->value) = *((int32_t*)value);
|
memcpy(param->value, value, sizeof(int32_t));
|
||||||
|
//*((int32_t*)param->value) = *((int32_t*)value);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case tmedia_pvt_pvoid:
|
case tmedia_pvt_pobject:
|
||||||
/* FIXME */
|
param->value = tsk_object_ref(value);
|
||||||
param->value = value;
|
|
||||||
break;
|
break;
|
||||||
case tmedia_pvt_pchar:
|
case tmedia_pvt_pchar:
|
||||||
param->value = tsk_strdup(value);
|
param->value = tsk_strdup(value);
|
||||||
break;
|
break;
|
||||||
case tmedia_pvt_int64:
|
case tmedia_pvt_int64:
|
||||||
if(param->value = tsk_calloc(1, sizeof(int64_t))){
|
if(param->value = tsk_calloc(1, sizeof(int64_t))){
|
||||||
*((int64_t*)param->value) = *((int64_t*)value);
|
memcpy(param->value, value, sizeof(int64_t));
|
||||||
|
//*((int64_t*)param->value) = *((int64_t*)value);
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -123,10 +124,9 @@ static tsk_object_t* tmedia_param_dtor(tsk_object_t* self)
|
||||||
tmedia_param_t *param = self;
|
tmedia_param_t *param = self;
|
||||||
if(param){
|
if(param){
|
||||||
TSK_FREE(param->key);
|
TSK_FREE(param->key);
|
||||||
switch(param->access_type){
|
switch(param->value_type){
|
||||||
case tmedia_pvt_pvoid:
|
case tmedia_pvt_pobject:
|
||||||
/* FIXME */
|
TSK_OBJECT_SAFE_FREE(param->value);
|
||||||
param->value = tsk_null;
|
|
||||||
break;
|
break;
|
||||||
case tmedia_pvt_pchar:
|
case tmedia_pvt_pchar:
|
||||||
case tmedia_pvt_int64:
|
case tmedia_pvt_int64:
|
||||||
|
|
|
@ -485,6 +485,24 @@ tmedia_session_mgr_t* tmedia_session_mgr_create(tmedia_type_t type, const char*
|
||||||
return mgr;
|
return mgr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**@ingroup tmedia_session_group
|
||||||
|
*/
|
||||||
|
int tmedia_session_mgr_set_natt_ctx(tmedia_session_mgr_t* self, tnet_nat_context_handle_t* natt_ctx, const char* public_addr)
|
||||||
|
{
|
||||||
|
if(!self || !natt_ctx){
|
||||||
|
TSK_DEBUG_ERROR("Invalid parameter");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
TSK_OBJECT_SAFE_FREE(self->natt_ctx);
|
||||||
|
self->natt_ctx = tsk_object_ref(natt_ctx);
|
||||||
|
tsk_strupdate(&self->public_addr, public_addr);
|
||||||
|
|
||||||
|
tmedia_session_mgr_set(self,
|
||||||
|
TMEDIA_SESSION_SET_POBJECT(self->type, "natt-ctx", self->natt_ctx),
|
||||||
|
TMEDIA_SESSION_SET_NULL());
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/**@ingroup tmedia_session_group
|
/**@ingroup tmedia_session_group
|
||||||
* Starts the session manager by starting all underlying sessions.
|
* Starts the session manager by starting all underlying sessions.
|
||||||
* You should set both remote and local offers before calling this function.
|
* You should set both remote and local offers before calling this function.
|
||||||
|
@ -695,10 +713,10 @@ const tsdp_message_t* tmedia_session_mgr_get_lo(tmedia_session_mgr_t* self)
|
||||||
if(self->sdp.lo){
|
if(self->sdp.lo){
|
||||||
return self->sdp.lo;
|
return self->sdp.lo;
|
||||||
}
|
}
|
||||||
else if((self->sdp.lo = tsdp_message_create_empty(self->addr, self->ipv6, self->sdp.lo_ver++))){
|
else if((self->sdp.lo = tsdp_message_create_empty(self->public_addr ? self->public_addr : self->addr, self->ipv6, self->sdp.lo_ver++))){
|
||||||
/* Set connection "c=" */
|
/* Set connection "c=" */
|
||||||
tsdp_message_add_headers(self->sdp.lo,
|
tsdp_message_add_headers(self->sdp.lo,
|
||||||
TSDP_HEADER_C_VA_ARGS("IN", self->ipv6 ? "IP6" : "IP4", self->addr),
|
TSDP_HEADER_C_VA_ARGS("IN", self->ipv6 ? "IP6" : "IP4", self->public_addr ? self->public_addr : self->addr),
|
||||||
tsk_null);
|
tsk_null);
|
||||||
}else{
|
}else{
|
||||||
self->sdp.lo_ver--;
|
self->sdp.lo_ver--;
|
||||||
|
@ -1090,11 +1108,11 @@ int _tmedia_session_mgr_load_sessions(tmedia_session_mgr_t* self)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
/* set ldefault values */
|
/* set default values */
|
||||||
tmedia_session_mgr_set(self,
|
tmedia_session_mgr_set(self,
|
||||||
TMEDIA_SESSION_SET_STR(self->type, "local-ip", self->addr),
|
TMEDIA_SESSION_SET_STR(self->type, "local-ip", self->addr),
|
||||||
TMEDIA_SESSION_SET_STR(self->type, "local-ipver", self->ipv6 ? "ipv6" : "ipv4"),
|
TMEDIA_SESSION_SET_STR(self->type, "local-ipver", self->ipv6 ? "ipv6" : "ipv4"),
|
||||||
TMEDIA_SESSION_SET_NULL());
|
TMEDIA_SESSION_SET_NULL());
|
||||||
|
|
||||||
/* load params */
|
/* load params */
|
||||||
_tmedia_session_mgr_apply_params(self);
|
_tmedia_session_mgr_apply_params(self);
|
||||||
|
@ -1175,6 +1193,9 @@ static tsk_object_t* tmedia_session_mgr_dtor(tsk_object_t * self)
|
||||||
|
|
||||||
TSK_OBJECT_SAFE_FREE(mgr->params);
|
TSK_OBJECT_SAFE_FREE(mgr->params);
|
||||||
|
|
||||||
|
TSK_OBJECT_SAFE_FREE(mgr->natt_ctx);
|
||||||
|
TSK_FREE(mgr->public_addr);
|
||||||
|
|
||||||
TSK_FREE(mgr->addr);
|
TSK_FREE(mgr->addr);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
|
@ -136,7 +136,7 @@ tnet_dhcp_reply_t* tnet_dhcp_send_request(tnet_dhcp_ctx_t* ctx, tnet_dhcp_reques
|
||||||
if(request->type == dhcp_type_inform){
|
if(request->type == dhcp_type_inform){
|
||||||
struct sockaddr_storage ss;
|
struct sockaddr_storage ss;
|
||||||
if(!tnet_get_sockaddr(localsocket4->fd, &ss)){
|
if(!tnet_get_sockaddr(localsocket4->fd, &ss)){
|
||||||
uint32_t addr = tnet_htonl((*((uint32_t*)&((struct sockaddr_in*)&ss)->sin_addr)));
|
uint32_t addr = tnet_htonl_2(&((struct sockaddr_in*)&ss)->sin_addr);
|
||||||
memcpy(&request->ciaddr, &addr, 4);
|
memcpy(&request->ciaddr, &addr, 4);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -211,25 +211,25 @@ tnet_dhcp_message_t* tnet_dhcp_message_deserialize(const struct tnet_dhcp_ctx_s
|
||||||
/*== htype (1) */
|
/*== htype (1) */
|
||||||
message->hops = *(dataPtr++);
|
message->hops = *(dataPtr++);
|
||||||
/*== xid (4) */
|
/*== xid (4) */
|
||||||
message->xid= tnet_ntohl(*((uint32_t*)dataPtr));
|
message->xid= tnet_htonl_2(dataPtr);
|
||||||
dataPtr += 4;
|
dataPtr += 4;
|
||||||
/*== secs (2) */
|
/*== secs (2) */
|
||||||
message->secs = tnet_ntohs(*((uint16_t*)dataPtr));
|
message->secs = tnet_ntohs_2(dataPtr);
|
||||||
dataPtr += 2;
|
dataPtr += 2;
|
||||||
/*== flags (2) */
|
/*== flags (2) */
|
||||||
message->flags = tnet_ntohs(*((uint16_t*)dataPtr));
|
message->flags = tnet_ntohs_2(dataPtr);
|
||||||
dataPtr += 2;
|
dataPtr += 2;
|
||||||
/*== ciaddr (4) */
|
/*== ciaddr (4) */
|
||||||
message->ciaddr= tnet_ntohl(*((uint32_t*)dataPtr));
|
message->ciaddr= tnet_htonl_2(dataPtr);
|
||||||
dataPtr += 4;
|
dataPtr += 4;
|
||||||
/*== yiaddr (4) */
|
/*== yiaddr (4) */
|
||||||
message->yiaddr= tnet_ntohl(*((uint32_t*)dataPtr));
|
message->yiaddr= tnet_htonl_2(dataPtr);
|
||||||
dataPtr += 4;
|
dataPtr += 4;
|
||||||
/*== siaddr (4) */
|
/*== siaddr (4) */
|
||||||
message->siaddr= tnet_ntohl(*((uint32_t*)dataPtr));
|
message->siaddr= tnet_htonl_2(dataPtr);
|
||||||
dataPtr += 4;
|
dataPtr += 4;
|
||||||
/*== giaddr (4) */
|
/*== giaddr (4) */
|
||||||
message->giaddr= tnet_ntohl(*((uint32_t*)dataPtr));
|
message->giaddr= tnet_htonl_2(dataPtr);
|
||||||
dataPtr += 4;
|
dataPtr += 4;
|
||||||
/*== chaddr (16[max]) */
|
/*== chaddr (16[max]) */
|
||||||
memcpy(message->chaddr, dataPtr, message->hlen>16 ? 16 : message->hlen);
|
memcpy(message->chaddr, dataPtr, message->hlen>16 ? 16 : message->hlen);
|
||||||
|
@ -241,7 +241,7 @@ tnet_dhcp_message_t* tnet_dhcp_message_deserialize(const struct tnet_dhcp_ctx_s
|
||||||
memcpy(message->file, dataPtr, 128);
|
memcpy(message->file, dataPtr, 128);
|
||||||
dataPtr += 128;
|
dataPtr += 128;
|
||||||
/*== Magic Cookie (4) */
|
/*== Magic Cookie (4) */
|
||||||
if(tnet_ntohl(*((uint32_t*)dataPtr)) != TNET_DHCP_MAGIC_COOKIE){
|
if(tnet_htonl_2(dataPtr) != TNET_DHCP_MAGIC_COOKIE){
|
||||||
TSK_DEBUG_ERROR("Invalid DHCP magic cookie.");
|
TSK_DEBUG_ERROR("Invalid DHCP magic cookie.");
|
||||||
// Do not exit ==> continue parsing.
|
// Do not exit ==> continue parsing.
|
||||||
}
|
}
|
||||||
|
|
|
@ -290,7 +290,7 @@ static tsk_object_t* tnet_dhcp_option_dns_ctor(tsk_object_t * self, va_list * ap
|
||||||
| 6 | n | a1 | a2 | a3 | a4 | a1 | a2 | ...
|
| 6 | n | a1 | a2 | a3 | a4 | a1 | a2 | ...
|
||||||
+-----+-----+-----+-----+-----+-----+-----+-----+--
|
+-----+-----+-----+-----+-----+-----+-----+-----+--
|
||||||
*/
|
*/
|
||||||
address = tnet_ntohl(*((uint32_t*)payloadPtr));
|
address = tnet_htonl_2(payloadPtr);
|
||||||
tsk_sprintf(&ip4, "%u.%u.%u.%u", (address>>24)&0xFF, (address>>16)&0xFF, (address>>8)&0xFF, (address>>0)&0xFF);
|
tsk_sprintf(&ip4, "%u.%u.%u.%u", (address>>24)&0xFF, (address>>16)&0xFF, (address>>8)&0xFF, (address>>0)&0xFF);
|
||||||
|
|
||||||
addrstring = tsk_string_create(ip4);
|
addrstring = tsk_string_create(ip4);
|
||||||
|
|
|
@ -92,7 +92,8 @@ static tsk_object_t* tnet_dhcp_option_sip_ctor(tsk_object_t * self, va_list * ap
|
||||||
char* ip4 = 0;
|
char* ip4 = 0;
|
||||||
|
|
||||||
while(payloadPtr < payloadEnd){
|
while(payloadPtr < payloadEnd){
|
||||||
address = tnet_ntohl(*((uint32_t*)++payloadPtr));
|
++payloadPtr;
|
||||||
|
address = tnet_htonl_2(payloadPtr);
|
||||||
|
|
||||||
tsk_sprintf(&ip4, "%u.%u.%u.%u", (address>>24)&0xFF, (address>>16)&0xFF, (address>>8)&0xFF, (address>>0)&0xFF);
|
tsk_sprintf(&ip4, "%u.%u.%u.%u", (address>>24)&0xFF, (address>>16)&0xFF, (address>>8)&0xFF, (address>>0)&0xFF);
|
||||||
|
|
||||||
|
|
|
@ -107,7 +107,7 @@ tnet_dhcp6_reply_t* tnet_dhcp6_send_request(const tnet_dhcp6_ctx_t* ctx, tnet_dh
|
||||||
//if(request->type == dhcp_type_inform){
|
//if(request->type == dhcp_type_inform){
|
||||||
// struct sockaddr_storage ss;
|
// struct sockaddr_storage ss;
|
||||||
// if(!tnet_get_sockaddr(localsocket4->fd, &ss)){
|
// if(!tnet_get_sockaddr(localsocket4->fd, &ss)){
|
||||||
// uint32_t addr = tnet_htonl((*((uint32_t*)&((struct sockaddr_in*)&ss)->sin_addr)));
|
// uint32_t addr = tnet_htonl_2(&((struct sockaddr_in*)&ss)->sin_addr);
|
||||||
// memcpy(&request->ciaddr, &addr, 4);
|
// memcpy(&request->ciaddr, &addr, 4);
|
||||||
// }
|
// }
|
||||||
//}
|
//}
|
||||||
|
|
|
@ -90,7 +90,7 @@ tnet_dhcp6_duid_t* tnet_dhcp6_duid_deserialize(const void* data, tsk_size_t size
|
||||||
goto bail;
|
goto bail;
|
||||||
}
|
}
|
||||||
|
|
||||||
type = (tnet_dhcp6_duid_type_t) tnet_ntohs(*((uint16_t*)dataPtr));
|
type = (tnet_dhcp6_duid_type_t) tnet_ntohs_2(dataPtr);
|
||||||
dataPtr += 2;
|
dataPtr += 2;
|
||||||
|
|
||||||
bail:
|
bail:
|
||||||
|
|
|
@ -89,10 +89,10 @@ tnet_dhcp6_option_t* tnet_dhcp6_option_deserialize(const void* data, tsk_size_t
|
||||||
goto bail;
|
goto bail;
|
||||||
}
|
}
|
||||||
|
|
||||||
code = (tnet_dhcp6_option_code_t) tnet_ntohs(*((uint16_t*)dataPtr));
|
code = (tnet_dhcp6_option_code_t) tnet_ntohs_2(dataPtr);
|
||||||
dataPtr += 2;
|
dataPtr += 2;
|
||||||
|
|
||||||
len = tnet_ntohs(*((uint16_t*)dataPtr));
|
len = tnet_ntohs_2(dataPtr);
|
||||||
dataPtr += 2;
|
dataPtr += 2;
|
||||||
|
|
||||||
switch(code){
|
switch(code){
|
||||||
|
|
|
@ -669,7 +669,7 @@ int tnet_dns_query_srv(tnet_dns_ctx_t *ctx, const char* service, char** hostname
|
||||||
|
|
||||||
TSK_OBJECT_SAFE_FREE(response);
|
TSK_OBJECT_SAFE_FREE(response);
|
||||||
|
|
||||||
return (hostname && !tsk_strempty(*hostname)) ? 0 : -2;
|
return (hostname && !tsk_strnullORempty(*hostname)) ? 0 : -2;
|
||||||
}
|
}
|
||||||
|
|
||||||
/**@ingroup tnet_dns_group
|
/**@ingroup tnet_dns_group
|
||||||
|
|
|
@ -73,7 +73,7 @@ static tsk_object_t* tnet_dns_a_ctor(tsk_object_t * self, va_list * app)
|
||||||
if(rddata && rdlength && (rdlength == 4/* 32bits */)){
|
if(rddata && rdlength && (rdlength == 4/* 32bits */)){
|
||||||
// ==> DESERIALIZATION
|
// ==> DESERIALIZATION
|
||||||
/* ADDRESS */
|
/* ADDRESS */
|
||||||
uint32_t address = tnet_ntohl(*((uint32_t*)rddata));
|
uint32_t address = tnet_htonl_2(rddata);
|
||||||
tsk_sprintf(&(a->address), "%u.%u.%u.%u", (address>>24)&0xFF, (address>>16)&0xFF, (address>>8)&0xFF, (address>>0)&0xFF);
|
tsk_sprintf(&(a->address), "%u.%u.%u.%u", (address>>24)&0xFF, (address>>16)&0xFF, (address>>8)&0xFF, (address>>0)&0xFF);
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
|
|
|
@ -75,8 +75,8 @@ static tsk_object_t* tnet_dns_aaaa_ctor(tsk_object_t * self, va_list * app)
|
||||||
// ==> DESERIALIZATION
|
// ==> DESERIALIZATION
|
||||||
/* ADDRESS */
|
/* ADDRESS */
|
||||||
tsk_sprintf(&(aaaa->address), "%x:%x:%x:%x:%x:%x:%x:%x",
|
tsk_sprintf(&(aaaa->address), "%x:%x:%x:%x:%x:%x:%x:%x",
|
||||||
tnet_ntohs(*((uint16_t*)&rddata[0])), tnet_ntohs(*((uint16_t*)&rddata[2])), tnet_ntohs(*((uint16_t*)&rddata[4])), tnet_ntohs(*((uint16_t*)&rddata[6])),
|
tnet_ntohs_2(&rddata[0]), tnet_ntohs_2(&rddata[2]), tnet_ntohs_2(&rddata[4]), tnet_ntohs_2(&rddata[6]),
|
||||||
tnet_ntohs(*((uint16_t*)&rddata[8])), tnet_ntohs(*((uint16_t*)&rddata[10])), tnet_ntohs(*((uint16_t*)&rddata[12])), tnet_ntohs(*((uint16_t*)&rddata[14])));
|
tnet_ntohs_2(&rddata[8]), tnet_ntohs_2(&rddata[10]), tnet_ntohs_2(&rddata[12]), tnet_ntohs_2(&rddata[14]));
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
TSK_DEBUG_ERROR("Invalid IPv6 address.");
|
TSK_DEBUG_ERROR("Invalid IPv6 address.");
|
||||||
|
|
|
@ -216,11 +216,11 @@ tnet_dns_message_t* tnet_dns_message_deserialize(const uint8_t *data, tsk_size_t
|
||||||
|
|
||||||
/* === HEADER ===*/
|
/* === HEADER ===*/
|
||||||
/* ID */
|
/* ID */
|
||||||
message->Header.ID = tnet_ntohs(*((uint16_t*)dataPtr));
|
message->Header.ID = tnet_ntohs_2(dataPtr);
|
||||||
dataPtr += 2;
|
dataPtr += 2;
|
||||||
/* |QR| Opcode |AA|TC|RD|RA| Z | RCODE | */
|
/* |QR| Opcode |AA|TC|RD|RA| Z | RCODE | */
|
||||||
{
|
{
|
||||||
uint16_t flags = tnet_ntohs(*((uint16_t*)dataPtr));
|
uint16_t flags = tnet_ntohs_2(dataPtr);
|
||||||
|
|
||||||
message->Header.QR = (flags >> 15);
|
message->Header.QR = (flags >> 15);
|
||||||
message->Header.OPCODE = ((flags >> 11) & 0x000F);
|
message->Header.OPCODE = ((flags >> 11) & 0x000F);
|
||||||
|
@ -234,16 +234,16 @@ tnet_dns_message_t* tnet_dns_message_deserialize(const uint8_t *data, tsk_size_t
|
||||||
dataPtr += 2;
|
dataPtr += 2;
|
||||||
}
|
}
|
||||||
/* QDCOUNT */
|
/* QDCOUNT */
|
||||||
message->Header.QDCOUNT = tnet_ntohs(*((uint16_t*)dataPtr));
|
message->Header.QDCOUNT = tnet_ntohs_2(dataPtr);
|
||||||
dataPtr += 2;
|
dataPtr += 2;
|
||||||
/* ANCOUNT */
|
/* ANCOUNT */
|
||||||
message->Header.ANCOUNT = tnet_ntohs(*((uint16_t*)dataPtr));
|
message->Header.ANCOUNT = tnet_ntohs_2(dataPtr);
|
||||||
dataPtr += 2;
|
dataPtr += 2;
|
||||||
/* NSCOUNT */
|
/* NSCOUNT */
|
||||||
message->Header.NSCOUNT = tnet_ntohs(*((uint16_t*)dataPtr));
|
message->Header.NSCOUNT = tnet_ntohs_2(dataPtr);
|
||||||
dataPtr += 2;
|
dataPtr += 2;
|
||||||
/* ARCOUNT */
|
/* ARCOUNT */
|
||||||
message->Header.ARCOUNT = tnet_ntohs(*((uint16_t*)dataPtr));
|
message->Header.ARCOUNT = tnet_ntohs_2(dataPtr);
|
||||||
dataPtr += 2;
|
dataPtr += 2;
|
||||||
|
|
||||||
/* === Queries ===*/
|
/* === Queries ===*/
|
||||||
|
|
|
@ -68,7 +68,7 @@ static tsk_object_t* tnet_dns_mx_ctor(tsk_object_t * self, va_list * app)
|
||||||
if(rdlength){
|
if(rdlength){
|
||||||
// ==> DESERIALIZATION
|
// ==> DESERIALIZATION
|
||||||
/* PREFERENCE */
|
/* PREFERENCE */
|
||||||
mx->preference = tnet_ntohs(*((uint16_t*)(((uint8_t*)data) + offset)));
|
mx->preference = tnet_ntohs_2(((uint8_t*)data) + offset);
|
||||||
offset += 2;
|
offset += 2;
|
||||||
/* EXCHANGE */
|
/* EXCHANGE */
|
||||||
tnet_dns_rr_qname_deserialize(data, &(mx->exchange), &offset);
|
tnet_dns_rr_qname_deserialize(data, &(mx->exchange), &offset);
|
||||||
|
|
|
@ -71,10 +71,10 @@ static tsk_object_t* tnet_dns_naptr_ctor(tsk_object_t * self, va_list * app)
|
||||||
if(rdlength){
|
if(rdlength){
|
||||||
// ==> DESERIALIZATION
|
// ==> DESERIALIZATION
|
||||||
/* ORDER */
|
/* ORDER */
|
||||||
naptr->order = tnet_ntohs(*((uint16_t*)(((uint8_t*)data) + offset)));
|
naptr->order = tnet_ntohs_2(((uint8_t*)data) + offset);
|
||||||
offset += 2;
|
offset += 2;
|
||||||
/* PREFERENCE */
|
/* PREFERENCE */
|
||||||
naptr->preference = tnet_ntohs(*((uint16_t*)(((uint8_t*)data) + offset)));
|
naptr->preference = tnet_ntohs_2(((uint8_t*)data) + offset);
|
||||||
offset += 2;
|
offset += 2;
|
||||||
/* FLAGS */
|
/* FLAGS */
|
||||||
tnet_dns_rr_charstring_deserialize(data, &(naptr->flags), &offset);
|
tnet_dns_rr_charstring_deserialize(data, &(naptr->flags), &offset);
|
||||||
|
|
|
@ -260,16 +260,16 @@ tnet_dns_rr_t* tnet_dns_rr_deserialize(const void* data, tsk_size_t size, tsk_si
|
||||||
tnet_dns_rr_qname_deserialize(dataStart, &qname, offset);
|
tnet_dns_rr_qname_deserialize(dataStart, &qname, offset);
|
||||||
dataPtr = (dataStart + *offset);
|
dataPtr = (dataStart + *offset);
|
||||||
/* == Parse QTYPE == */
|
/* == Parse QTYPE == */
|
||||||
qtype = (tnet_dns_qtype_t)tnet_ntohs(*((uint16_t*)dataPtr));
|
qtype = (tnet_dns_qtype_t)tnet_ntohs_2(dataPtr);
|
||||||
dataPtr += 2, *offset += 2;
|
dataPtr += 2, *offset += 2;
|
||||||
/* == Parse QCLASS == */
|
/* == Parse QCLASS == */
|
||||||
qclass = (tnet_dns_qclass_t)tnet_ntohs(*((uint16_t*)dataPtr));
|
qclass = (tnet_dns_qclass_t)tnet_ntohs_2(dataPtr);
|
||||||
dataPtr += 2, *offset += 2;
|
dataPtr += 2, *offset += 2;
|
||||||
/* == Parse TTL == */
|
/* == Parse TTL == */
|
||||||
ttl = tnet_ntohl(*((uint32_t*)dataPtr));
|
ttl = tnet_htonl_2(dataPtr);
|
||||||
dataPtr += 4, *offset += 4;
|
dataPtr += 4, *offset += 4;
|
||||||
/* == Parse RDLENGTH == */
|
/* == Parse RDLENGTH == */
|
||||||
rdlength = tnet_ntohs(*((uint16_t*)dataPtr));
|
rdlength = tnet_ntohs_2(dataPtr);
|
||||||
dataPtr += 2, *offset += 2;
|
dataPtr += 2, *offset += 2;
|
||||||
|
|
||||||
switch(qtype){
|
switch(qtype){
|
||||||
|
|
|
@ -70,19 +70,19 @@ static tsk_object_t* tnet_dns_soa_ctor(tsk_object_t * self, va_list * app)
|
||||||
/* RNAME */
|
/* RNAME */
|
||||||
tnet_dns_rr_qname_deserialize(data, &(soa->rname), &offset);
|
tnet_dns_rr_qname_deserialize(data, &(soa->rname), &offset);
|
||||||
/* SERIAL */
|
/* SERIAL */
|
||||||
soa->serial = tnet_ntohl(*((uint32_t*)(((uint8_t*)data) + offset))),
|
soa->serial = tnet_htonl_2(((uint8_t*)data) + offset),
|
||||||
offset += 2;
|
offset += 2;
|
||||||
/* REFRESH */
|
/* REFRESH */
|
||||||
soa->refresh = tnet_ntohl(*((uint32_t*)(((uint8_t*)data) + offset))),
|
soa->refresh = tnet_htonl_2(((uint8_t*)data) + offset),
|
||||||
offset += 2;
|
offset += 2;
|
||||||
/* RETRY */
|
/* RETRY */
|
||||||
soa->retry = tnet_ntohl(*((uint32_t*)(((uint8_t*)data) + offset))),
|
soa->retry = tnet_htonl_2(((uint8_t*)data) + offset),
|
||||||
offset += 2;
|
offset += 2;
|
||||||
/* EXPIRE */
|
/* EXPIRE */
|
||||||
soa->expire = tnet_ntohl(*((uint32_t*)(((uint8_t*)data) + offset))),
|
soa->expire = tnet_htonl_2(((uint8_t*)data) + offset),
|
||||||
offset += 2;
|
offset += 2;
|
||||||
/* MINIMUM */
|
/* MINIMUM */
|
||||||
soa->minimum = tnet_ntohl(*((uint32_t*)(((uint8_t*)data) + offset))),
|
soa->minimum = tnet_htonl_2(((uint8_t*)data) + offset),
|
||||||
offset += 2;
|
offset += 2;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -68,13 +68,13 @@ static tsk_object_t* tnet_dns_srv_ctor(tsk_object_t * self, va_list * app)
|
||||||
if(rdlength){
|
if(rdlength){
|
||||||
// ==> DESERIALIZATION
|
// ==> DESERIALIZATION
|
||||||
/* Priority */
|
/* Priority */
|
||||||
srv->priority = tnet_ntohs(*((uint16_t*)(((uint8_t*)data) + offset))),
|
srv->priority = tnet_ntohs_2(((uint8_t*)data) + offset),
|
||||||
offset += 2;
|
offset += 2;
|
||||||
/* Weight */
|
/* Weight */
|
||||||
srv->weight = tnet_ntohs(*((uint16_t*)(((uint8_t*)data) + offset))),
|
srv->weight = tnet_ntohs_2(((uint8_t*)data) + offset),
|
||||||
offset += 2;
|
offset += 2;
|
||||||
/* Port */
|
/* Port */
|
||||||
srv->port = tnet_ntohs(*((uint16_t*)(((uint8_t*)data) + offset))),
|
srv->port = tnet_ntohs_2(((uint8_t*)data) + offset),
|
||||||
offset += 2;
|
offset += 2;
|
||||||
/* Target */
|
/* Target */
|
||||||
tnet_dns_rr_qname_deserialize(data, &(srv->target), &offset);
|
tnet_dns_rr_qname_deserialize(data, &(srv->target), &offset);
|
||||||
|
|
|
@ -164,17 +164,17 @@ tnet_stun_response_t* tnet_stun_send_unreliably(tnet_fd_t localFD, uint16_t RTO,
|
||||||
tv.tv_sec += rto/1000;
|
tv.tv_sec += rto/1000;
|
||||||
tv.tv_usec += (rto% 1000) * 1000;
|
tv.tv_usec += (rto% 1000) * 1000;
|
||||||
|
|
||||||
ret = tnet_sockfd_sendto(localFD, server, buffer->data, buffer->size);
|
|
||||||
|
|
||||||
FD_ZERO(&set);
|
FD_ZERO(&set);
|
||||||
FD_SET(localFD, &set);
|
FD_SET(localFD, &set);
|
||||||
|
|
||||||
|
ret = tnet_sockfd_sendto(localFD, server, buffer->data, buffer->size);
|
||||||
|
|
||||||
if((ret = select(localFD+1, &set, NULL, NULL, &tv))<0){
|
if((ret = select(localFD+1, &set, NULL, NULL, &tv))<0){
|
||||||
goto bail;
|
goto bail;
|
||||||
}
|
}
|
||||||
else if(ret == 0){
|
else if(ret == 0){
|
||||||
/* timeout */
|
/* timeout */
|
||||||
|
TSK_DEBUG_INFO("STUN request timedout at %d", i);
|
||||||
rto *= 2;
|
rto *= 2;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
@ -184,11 +184,18 @@ tnet_stun_response_t* tnet_stun_send_unreliably(tnet_fd_t localFD, uint16_t RTO,
|
||||||
tsk_size_t len = 0;
|
tsk_size_t len = 0;
|
||||||
void* data = 0;
|
void* data = 0;
|
||||||
|
|
||||||
|
TSK_DEBUG_INFO("STUN request got response");
|
||||||
|
|
||||||
/* Check how how many bytes are pending */
|
/* Check how how many bytes are pending */
|
||||||
if((ret = tnet_ioctlt(localFD, FIONREAD, &len))<0){
|
if((ret = tnet_ioctlt(localFD, FIONREAD, &len))<0){
|
||||||
goto bail;
|
goto bail;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if(len==0){
|
||||||
|
TSK_DEBUG_INFO("tnet_ioctlt() returent zero bytes");
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
/* Receive pending data */
|
/* Receive pending data */
|
||||||
data = tsk_calloc(len, sizeof(uint8_t));
|
data = tsk_calloc(len, sizeof(uint8_t));
|
||||||
if((ret = tnet_sockfd_recvfrom(localFD, data, len, 0, server))<0){
|
if((ret = tnet_sockfd_recvfrom(localFD, data, len, 0, server))<0){
|
||||||
|
|
|
@ -162,8 +162,8 @@ tnet_stun_attribute_t* tnet_stun_attribute_deserialize(const void* data, tsk_siz
|
||||||
tnet_stun_attribute_t *attribute = 0;
|
tnet_stun_attribute_t *attribute = 0;
|
||||||
const uint8_t* dataPtr = data;
|
const uint8_t* dataPtr = data;
|
||||||
|
|
||||||
tnet_stun_attribute_type_t type = (tnet_stun_attribute_type_t)tnet_ntohs(*((uint16_t*)dataPtr));
|
tnet_stun_attribute_type_t type = (tnet_stun_attribute_type_t)tnet_ntohs_2(dataPtr);
|
||||||
uint16_t length = tnet_ntohs(*(((uint16_t*)dataPtr)+1));
|
uint16_t length = tnet_ntohs_2(&dataPtr[2]);
|
||||||
|
|
||||||
/* Check validity */
|
/* Check validity */
|
||||||
if(!data || size<=4/* Type(2-bytes) plus Length (2-bytes) */)
|
if(!data || size<=4/* Type(2-bytes) plus Length (2-bytes) */)
|
||||||
|
@ -212,7 +212,7 @@ tnet_stun_attribute_t* tnet_stun_attribute_deserialize(const void* data, tsk_siz
|
||||||
/* RFC 5389 - 15.5. FINGERPRINT*/
|
/* RFC 5389 - 15.5. FINGERPRINT*/
|
||||||
case stun_fingerprint:
|
case stun_fingerprint:
|
||||||
{
|
{
|
||||||
uint32_t fingerprint = tnet_ntohl(*((uint32_t*)dataPtr));
|
uint32_t fingerprint = tnet_htonl_2(dataPtr);
|
||||||
attribute = (tnet_stun_attribute_t *)tnet_stun_attribute_fingerprint_create(fingerprint);
|
attribute = (tnet_stun_attribute_t *)tnet_stun_attribute_fingerprint_create(fingerprint);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
@ -278,7 +278,7 @@ tnet_stun_attribute_t* tnet_stun_attribute_deserialize(const void* data, tsk_siz
|
||||||
}
|
}
|
||||||
|
|
||||||
default:
|
default:
|
||||||
TSK_DEBUG_ERROR("==> NOT IMPLEMENTED");
|
//TSK_DEBUG_WARN("==> NOT IMPLEMENTED");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -491,11 +491,11 @@ static tsk_object_t* tnet_stun_attribute_mapped_addr_ctor(tsk_object_t * self, v
|
||||||
TNET_STUN_ATTRIBUTE(attribute)->length = payload_size;
|
TNET_STUN_ATTRIBUTE(attribute)->length = payload_size;
|
||||||
|
|
||||||
attribute->family = (tnet_stun_addr_family_t) (*(payloadPtr++));
|
attribute->family = (tnet_stun_addr_family_t) (*(payloadPtr++));
|
||||||
attribute->port = tnet_ntohs(*((uint16_t*)payloadPtr));
|
attribute->port = tnet_ntohs_2(payloadPtr);
|
||||||
payloadPtr+=2;
|
payloadPtr+=2;
|
||||||
|
|
||||||
if(attribute->family == stun_ipv4){
|
if(attribute->family == stun_ipv4){
|
||||||
uint32_t addr = tnet_ntohl(*((uint32_t*)payloadPtr));
|
uint32_t addr = tnet_htonl_2(payloadPtr);
|
||||||
memcpy(attribute->address, &addr, 4);
|
memcpy(attribute->address, &addr, 4);
|
||||||
payloadPtr+=4;
|
payloadPtr+=4;
|
||||||
}
|
}
|
||||||
|
@ -507,7 +507,7 @@ static tsk_object_t* tnet_stun_attribute_mapped_addr_ctor(tsk_object_t * self, v
|
||||||
uint32_t addr;
|
uint32_t addr;
|
||||||
|
|
||||||
for(i=0; i<addr_size; i+=4){
|
for(i=0; i<addr_size; i+=4){
|
||||||
addr = tnet_ntohl(*((uint32_t*)payloadPtr));
|
addr = tnet_htonl_2(payloadPtr);
|
||||||
memcpy(&attribute->address[i], &addr, 4);
|
memcpy(&attribute->address[i], &addr, 4);
|
||||||
payloadPtr+=4;
|
payloadPtr+=4;
|
||||||
}
|
}
|
||||||
|
@ -562,7 +562,7 @@ static tsk_object_t* tnet_stun_attribute_xmapped_addr_ctor(tsk_object_t * self,
|
||||||
XOR'ing it with the most significant 16 bits of the magic cookie, and
|
XOR'ing it with the most significant 16 bits of the magic cookie, and
|
||||||
then the converting the result to network byte order.
|
then the converting the result to network byte order.
|
||||||
*/
|
*/
|
||||||
attribute->xport = tnet_ntohs(*((uint16_t*)payloadPtr));
|
attribute->xport = tnet_ntohs_2(payloadPtr);
|
||||||
attribute->xport ^= 0x2112;
|
attribute->xport ^= 0x2112;
|
||||||
payloadPtr+=2;
|
payloadPtr+=2;
|
||||||
|
|
||||||
|
@ -580,8 +580,7 @@ static tsk_object_t* tnet_stun_attribute_xmapped_addr_ctor(tsk_object_t * self,
|
||||||
uint32_t addr;
|
uint32_t addr;
|
||||||
|
|
||||||
for(i=0; i<addr_size; i+=4){
|
for(i=0; i<addr_size; i+=4){
|
||||||
addr = tnet_ntohl(*((uint32_t*)payloadPtr));
|
addr = tnet_ntohl(tnet_ntohl_2(payloadPtr) ^ TNET_STUN_MAGIC_COOKIE);
|
||||||
addr ^= TNET_STUN_MAGIC_COOKIE;
|
|
||||||
memcpy(&attribute->xaddress[i], &addr, 4);
|
memcpy(&attribute->xaddress[i], &addr, 4);
|
||||||
payloadPtr+=4;
|
payloadPtr+=4;
|
||||||
}
|
}
|
||||||
|
@ -734,7 +733,7 @@ static tsk_object_t* tnet_stun_attribute_errorcode_ctor(tsk_object_t * self, va_
|
||||||
tsk_size_t payload_size = va_arg(*app, tsk_size_t);
|
tsk_size_t payload_size = va_arg(*app, tsk_size_t);
|
||||||
|
|
||||||
if(payload_size >4){
|
if(payload_size >4){
|
||||||
uint32_t code = tnet_ntohl(*((uint32_t*)payload));
|
uint32_t code = tnet_htonl_2(payload);
|
||||||
payload += 4;
|
payload += 4;
|
||||||
|
|
||||||
attribute->_class = code >>8;
|
attribute->_class = code >>8;
|
||||||
|
@ -928,11 +927,11 @@ static tsk_object_t* tnet_stun_attribute_altserver_ctor(tsk_object_t * self, va_
|
||||||
TNET_STUN_ATTRIBUTE(attribute)->length = payload_size;
|
TNET_STUN_ATTRIBUTE(attribute)->length = payload_size;
|
||||||
|
|
||||||
attribute->family = (tnet_stun_addr_family_t) (*(payloadPtr++));
|
attribute->family = (tnet_stun_addr_family_t) (*(payloadPtr++));
|
||||||
attribute->port = tnet_ntohs(*((uint16_t*)payloadPtr));
|
attribute->port = tnet_ntohs_2(payloadPtr);
|
||||||
payloadPtr+=2;
|
payloadPtr+=2;
|
||||||
|
|
||||||
if(attribute->family == stun_ipv4){
|
if(attribute->family == stun_ipv4){
|
||||||
uint32_t addr = tnet_ntohl(*((uint32_t*)payloadPtr));
|
uint32_t addr = tnet_htonl_2(payloadPtr);
|
||||||
memcpy(attribute->server, &addr, 4);
|
memcpy(attribute->server, &addr, 4);
|
||||||
payloadPtr+=4;
|
payloadPtr+=4;
|
||||||
}
|
}
|
||||||
|
|
|
@ -241,12 +241,12 @@ tnet_stun_message_t* tnet_stun_message_deserialize(const uint8_t *data, tsk_size
|
||||||
|
|
||||||
/* Message Type
|
/* Message Type
|
||||||
*/
|
*/
|
||||||
message->type = (tnet_stun_message_type_t)tnet_ntohs(*((uint16_t*)dataPtr));
|
message->type = (tnet_stun_message_type_t)tnet_ntohs_2(dataPtr);
|
||||||
dataPtr += 2;
|
dataPtr += 2;
|
||||||
|
|
||||||
/* Message Length
|
/* Message Length
|
||||||
*/
|
*/
|
||||||
message->length = tnet_ntohs(*((uint16_t*)dataPtr));
|
message->length = tnet_ntohs_2(dataPtr);
|
||||||
dataPtr += 2;
|
dataPtr += 2;
|
||||||
|
|
||||||
/* Check message validity
|
/* Check message validity
|
||||||
|
|
|
@ -48,6 +48,13 @@ unsigned short tnet_htons(unsigned short x)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Memory alignment hack */
|
||||||
|
unsigned short tnet_htons_2(const void* px)
|
||||||
|
{
|
||||||
|
unsigned short y = TSK_TO_UINT16((const uint8_t*)px);
|
||||||
|
return tnet_htons(y);
|
||||||
|
}
|
||||||
|
|
||||||
/** Converts a 32-bit value from host to TCP/IP network byte order (big-endian).
|
/** Converts a 32-bit value from host to TCP/IP network byte order (big-endian).
|
||||||
* @param x The 32-bit (in host byte order) value to convert.
|
* @param x The 32-bit (in host byte order) value to convert.
|
||||||
* @retval @a x in TCP/IP network byte order.
|
* @retval @a x in TCP/IP network byte order.
|
||||||
|
@ -65,6 +72,13 @@ unsigned long tnet_htonl(unsigned long x)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/* Memory alignment hack */
|
||||||
|
unsigned long tnet_htonl_2(const void* px)
|
||||||
|
{
|
||||||
|
unsigned long y = TSK_TO_UINT32((const uint8_t*)px);
|
||||||
|
return tnet_htonl(y);
|
||||||
|
}
|
||||||
|
|
||||||
/** Indicates whether we are on a Big Endian host or not.<br>
|
/** Indicates whether we are on a Big Endian host or not.<br>
|
||||||
* <b>IMPORTANT</b>: Before calling this function, you should initialize the network stack by using
|
* <b>IMPORTANT</b>: Before calling this function, you should initialize the network stack by using
|
||||||
* @ref tnet_startup().
|
* @ref tnet_startup().
|
||||||
|
|
|
@ -37,11 +37,15 @@
|
||||||
TNET_BEGIN_DECLS
|
TNET_BEGIN_DECLS
|
||||||
|
|
||||||
TINYNET_API TNET_INLINE unsigned short tnet_htons(unsigned short x);
|
TINYNET_API TNET_INLINE unsigned short tnet_htons(unsigned short x);
|
||||||
|
TINYNET_API TNET_INLINE unsigned short tnet_htons_2(const void* px);
|
||||||
TINYNET_API TNET_INLINE unsigned long tnet_htonl(unsigned long x);
|
TINYNET_API TNET_INLINE unsigned long tnet_htonl(unsigned long x);
|
||||||
|
TINYNET_API TNET_INLINE unsigned long tnet_htonl_2(const void* px);
|
||||||
TINYNET_API TNET_INLINE tsk_bool_t tnet_is_BE();
|
TINYNET_API TNET_INLINE tsk_bool_t tnet_is_BE();
|
||||||
|
|
||||||
#define tnet_ntohs(x) tnet_htons(x)
|
#define tnet_ntohs(x) tnet_htons(x)
|
||||||
|
#define tnet_ntohs_2(px) tnet_htons_2(px)
|
||||||
#define tnet_ntohl(x) tnet_htonl(x)
|
#define tnet_ntohl(x) tnet_htonl(x)
|
||||||
|
#define tnet_ntohl_2(px) tnet_htonl_2(px)
|
||||||
|
|
||||||
TNET_BEGIN_DECLS
|
TNET_BEGIN_DECLS
|
||||||
|
|
||||||
|
|
|
@ -115,7 +115,7 @@ int __pred_find_turn_channel_binding(const tsk_list_item_t* item, const void* id
|
||||||
/**
|
/**
|
||||||
* Formats binary IP address as string.
|
* Formats binary IP address as string.
|
||||||
*
|
*
|
||||||
* @param in_ip The binary IP address to format.
|
* @param in_ip The binary IP address to format (in Host byte order).
|
||||||
* @param family The address family.
|
* @param family The address family.
|
||||||
* @param [in,out] out_ip The output string
|
* @param [in,out] out_ip The output string
|
||||||
*
|
*
|
||||||
|
@ -123,18 +123,29 @@ int __pred_find_turn_channel_binding(const tsk_list_item_t* item, const void* id
|
||||||
**/
|
**/
|
||||||
int tnet_stun_address_tostring(const uint8_t in_ip[16], tnet_stun_addr_family_t family, char** out_ip)
|
int tnet_stun_address_tostring(const uint8_t in_ip[16], tnet_stun_addr_family_t family, char** out_ip)
|
||||||
{
|
{
|
||||||
if(family == stun_ipv6){
|
/*if(family == stun_ipv6){
|
||||||
tsk_sprintf(out_ip, "%x:%x:%x:%x:%x:%x:%x:%x",
|
tsk_sprintf(out_ip, "%x:%x:%x:%x:%x:%x:%x:%x",
|
||||||
tnet_ntohs(*((uint16_t*)&in_ip[0])), tnet_ntohs(*((uint16_t*)&in_ip[2])), tnet_ntohs(*((uint16_t*)&in_ip[4])), tnet_ntohs(*((uint16_t*)&in_ip[6])),
|
tnet_ntohs_2(&in_ip[0]), tnet_ntohs_2(&in_ip[2]), tnet_ntohs_2(&in_ip[4]), tnet_ntohs_2(&in_ip[6]),
|
||||||
tnet_ntohs(*((uint16_t*)&in_ip[8])), tnet_ntohs(*((uint16_t*)&in_ip[10])), tnet_ntohs(*((uint16_t*)&in_ip[12])), tnet_ntohs(*((uint16_t*)&in_ip[14])));
|
tnet_ntohs_2(&in_ip[8]), tnet_ntohs_2(&in_ip[10]), tnet_ntohs_2(&in_ip[12]), tnet_ntohs_2(&in_ip[14]));
|
||||||
}
|
}
|
||||||
else if(family == stun_ipv4){
|
else if(family == stun_ipv4){
|
||||||
uint32_t address = *((uint32_t*)in_ip);
|
|
||||||
address = /*tnet_ntohl*/(address);
|
|
||||||
tsk_sprintf(out_ip, "%u.%u.%u.%u", (address>>24)&0xFF, (address>>16)&0xFF, (address>>8)&0xFF, (address>>0)&0xFF);
|
tsk_sprintf(out_ip, "%u.%u.%u.%u", (address>>24)&0xFF, (address>>16)&0xFF, (address>>8)&0xFF, (address>>0)&0xFF);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
else{
|
||||||
|
TSK_DEBUG_ERROR("Unsupported address family: %u.", family);
|
||||||
|
}*/
|
||||||
|
if(family == stun_ipv6){
|
||||||
|
tsk_sprintf(out_ip, "%x:%x:%x:%x:%x:%x:%x:%x",
|
||||||
|
TSK_TO_UINT16(&in_ip[0]), TSK_TO_UINT16(&in_ip[2]), TSK_TO_UINT16(&in_ip[4]), TSK_TO_UINT16(&in_ip[6]),
|
||||||
|
TSK_TO_UINT16(&in_ip[8]), TSK_TO_UINT16(&in_ip[10]), TSK_TO_UINT16(&in_ip[12]), TSK_TO_UINT16(&in_ip[14]));
|
||||||
|
}
|
||||||
|
else if(family == stun_ipv4){
|
||||||
|
tsk_sprintf(out_ip, "%u.%u.%u.%u", in_ip[0], in_ip[1], in_ip[2], in_ip[3]);
|
||||||
|
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
else{
|
else{
|
||||||
TSK_DEBUG_ERROR("Unsupported address family: %u.", family);
|
TSK_DEBUG_ERROR("Unsupported address family: %u.", family);
|
||||||
}
|
}
|
||||||
|
@ -228,15 +239,25 @@ int tnet_nat_stun_get_reflexive_address(const tnet_nat_context_handle_t* self, t
|
||||||
tnet_stun_binding_t *binding = item->data;
|
tnet_stun_binding_t *binding = item->data;
|
||||||
/*STUN2: XOR-MAPPED-ADDRESS */
|
/*STUN2: XOR-MAPPED-ADDRESS */
|
||||||
if(binding->xmaddr){
|
if(binding->xmaddr){
|
||||||
int ret = tnet_stun_address_tostring(binding->xmaddr->xaddress, binding->xmaddr->family, ipaddress);
|
int ret = 0;
|
||||||
*port = /*tnet_ntohs*/(binding->xmaddr->xport);
|
if(ipaddress){
|
||||||
|
ret = tnet_stun_address_tostring(binding->xmaddr->xaddress, binding->xmaddr->family, ipaddress);
|
||||||
|
}
|
||||||
|
if(port){
|
||||||
|
*port = /*tnet_ntohs*/(binding->xmaddr->xport);
|
||||||
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
|
||||||
/*STUN1: MAPPED-ADDRESS*/
|
/*STUN1: MAPPED-ADDRESS*/
|
||||||
if(binding->maddr){
|
if(binding->maddr){
|
||||||
int ret = tnet_stun_address_tostring(binding->maddr->address, binding->maddr->family, ipaddress);
|
int ret = 0;
|
||||||
*port = /*tnet_ntohs*/(binding->maddr->port);
|
if(ipaddress){
|
||||||
|
ret = tnet_stun_address_tostring(binding->maddr->address, binding->maddr->family, ipaddress);
|
||||||
|
}
|
||||||
|
if(port){
|
||||||
|
*port = /*tnet_ntohs*/(binding->maddr->port);
|
||||||
|
}
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
|
@ -49,8 +49,10 @@ TNET_BEGIN_DECLS
|
||||||
#define TNET_NAT_DEFAULT_RTO 500
|
#define TNET_NAT_DEFAULT_RTO 500
|
||||||
/**@ingroup tnet_nat_group
|
/**@ingroup tnet_nat_group
|
||||||
* Number of retransmission for UDP retransmission in millisecond.
|
* Number of retransmission for UDP retransmission in millisecond.
|
||||||
|
/* 7.2.1. Sending over UDP
|
||||||
|
Rc SHOULD be configurable and SHOULD have a default of 7.
|
||||||
*/
|
*/
|
||||||
#define TNET_NAT_DEFAULT_RC 7
|
#define TNET_NAT_DEFAULT_RC /*7*/3/* 7 is too hight */
|
||||||
/**@ingroup tnet_nat_group
|
/**@ingroup tnet_nat_group
|
||||||
*/
|
*/
|
||||||
#define TNET_NAT_TCP_UDP_DEFAULT_PORT 3478
|
#define TNET_NAT_TCP_UDP_DEFAULT_PORT 3478
|
||||||
|
|
|
@ -109,7 +109,7 @@ const char* tnet_transport_get_description(const tnet_transport_handle_t *handle
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
TSK_DEBUG_ERROR("NULL transport object.");
|
TSK_DEBUG_ERROR("NULL transport object.");
|
||||||
return 0;
|
return tsk_null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -128,18 +128,85 @@ int tnet_transport_get_ip_n_port_2(const tnet_transport_handle_t *handle, tnet_i
|
||||||
{
|
{
|
||||||
const tnet_transport_t *transport = handle;
|
const tnet_transport_t *transport = handle;
|
||||||
if(transport){
|
if(transport){
|
||||||
// do not check the master, let the apllication die if "null"
|
// do not check the master, let the application die if "null"
|
||||||
if(ip){
|
if(ip){
|
||||||
memcpy(*ip, transport->master->ip, sizeof(transport->master->ip));
|
memcpy(*ip, transport->master->ip, sizeof(transport->master->ip));
|
||||||
}
|
}
|
||||||
if(port){
|
if(port){
|
||||||
*port = transport->master->port;
|
*port = transport->master->port;
|
||||||
}
|
}
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
TSK_DEBUG_ERROR("NULL transport object.");
|
TSK_DEBUG_ERROR("NULL transport object.");
|
||||||
|
return -1;
|
||||||
}
|
}
|
||||||
return -1;
|
}
|
||||||
|
|
||||||
|
int tnet_transport_set_natt_ctx(tnet_transport_handle_t *handle, tnet_nat_context_handle_t* natt_ctx)
|
||||||
|
{
|
||||||
|
tnet_transport_t *transport = handle;
|
||||||
|
|
||||||
|
if(transport && natt_ctx){
|
||||||
|
TSK_OBJECT_SAFE_FREE(transport->natt_ctx); // delete old
|
||||||
|
transport->natt_ctx = tsk_object_ref(natt_ctx);
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
TSK_DEBUG_ERROR("Invalid parameter");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
int tnet_transport_get_public_ip_n_port(const tnet_transport_handle_t *handle, tnet_fd_t fd, tnet_ip_t *ip, tnet_port_t *port)
|
||||||
|
{
|
||||||
|
tsk_bool_t stun_ok = tsk_false;
|
||||||
|
tnet_nat_context_handle_t* natt_ctx;
|
||||||
|
const tnet_transport_t *transport = handle;
|
||||||
|
if(!transport){
|
||||||
|
TSK_DEBUG_ERROR("Invalid parameter");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(TNET_SOCKET_TYPE_IS_DGRAM(transport->type) && (natt_ctx = tsk_object_ref(transport->natt_ctx))){
|
||||||
|
tnet_stun_binding_id_t bind_id = TNET_STUN_INVALID_BINDING_ID;
|
||||||
|
// if the socket is already monitored by the transport we should pause beacuse both the transport and
|
||||||
|
// NAT binder will try to read from it
|
||||||
|
tsk_bool_t pause_socket = (TSK_RUNNABLE(transport)->running || TSK_RUNNABLE(transport)->started);
|
||||||
|
|
||||||
|
// FIXME: change when ICE will be fully implemented
|
||||||
|
TSK_DEBUG_INFO("Getting public address");
|
||||||
|
// Pause the soket
|
||||||
|
if(pause_socket){
|
||||||
|
tnet_transport_pause_socket(transport, fd, tsk_true);
|
||||||
|
}
|
||||||
|
// Performs STUN binding
|
||||||
|
bind_id = tnet_nat_stun_bind(transport->natt_ctx, fd);
|
||||||
|
// Resume the socket
|
||||||
|
if(pause_socket){
|
||||||
|
tnet_transport_pause_socket(transport, fd, tsk_false);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(TNET_STUN_IS_VALID_BINDING_ID(bind_id)){
|
||||||
|
char* public_ip = tsk_null;
|
||||||
|
if(tnet_nat_stun_get_reflexive_address(transport->natt_ctx, bind_id, &public_ip, port) == 0){
|
||||||
|
if(ip && public_ip){
|
||||||
|
tsk_size_t ip_len = tsk_strlen(public_ip);
|
||||||
|
memcpy(ip, public_ip, ip_len> sizeof(*ip)?sizeof(*ip):ip_len);
|
||||||
|
}
|
||||||
|
stun_ok = tsk_true;
|
||||||
|
}
|
||||||
|
TSK_FREE(public_ip);
|
||||||
|
tnet_nat_stun_unbind(transport->natt_ctx, bind_id);
|
||||||
|
}
|
||||||
|
tsk_object_unref(natt_ctx);
|
||||||
|
}
|
||||||
|
|
||||||
|
if(!stun_ok){
|
||||||
|
return tnet_transport_get_ip_n_port(handle, fd, ip, port);
|
||||||
|
}
|
||||||
|
|
||||||
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
tnet_socket_type_t tnet_transport_get_type(const tnet_transport_handle_t *handle)
|
tnet_socket_type_t tnet_transport_get_type(const tnet_transport_handle_t *handle)
|
||||||
|
@ -154,6 +221,18 @@ tnet_socket_type_t tnet_transport_get_type(const tnet_transport_handle_t *handle
|
||||||
return tnet_socket_type_invalid;
|
return tnet_socket_type_invalid;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
tnet_fd_t tnet_transport_get_master_fd(const tnet_transport_handle_t *handle)
|
||||||
|
{
|
||||||
|
if(handle){
|
||||||
|
const tnet_transport_t *transport = handle;
|
||||||
|
return transport->master->fd;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
TSK_DEBUG_ERROR("NULL transport object.");
|
||||||
|
}
|
||||||
|
return TNET_INVALID_FD;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Connects a socket.
|
* Connects a socket.
|
||||||
* @param handle The transport to use to connect() the socket. The new socket will be managed by this transport.
|
* @param handle The transport to use to connect() the socket. The new socket will be managed by this transport.
|
||||||
|
@ -282,7 +361,7 @@ static void *run(void* self)
|
||||||
tsk_list_item_t *curr;
|
tsk_list_item_t *curr;
|
||||||
tnet_transport_t *transport = self;
|
tnet_transport_t *transport = self;
|
||||||
|
|
||||||
TSK_RUNNABLE(transport)->running = tsk_true; // VERY IMPORTANT --> needed by the main thread
|
TSK_DEBUG_INFO("Transport::run() - enter");
|
||||||
|
|
||||||
/* create main thread */
|
/* create main thread */
|
||||||
if((ret = tsk_thread_create(transport->mainThreadId, tnet_transport_mainthread, transport))){ /* More important than "tsk_runnable_start" ==> start it first. */
|
if((ret = tsk_thread_create(transport->mainThreadId, tnet_transport_mainthread, transport))){ /* More important than "tsk_runnable_start" ==> start it first. */
|
||||||
|
@ -293,8 +372,7 @@ static void *run(void* self)
|
||||||
|
|
||||||
TSK_RUNNABLE_RUN_BEGIN(transport);
|
TSK_RUNNABLE_RUN_BEGIN(transport);
|
||||||
|
|
||||||
if((curr = TSK_RUNNABLE_POP_FIRST(transport)))
|
if((curr = TSK_RUNNABLE_POP_FIRST(transport))){
|
||||||
{
|
|
||||||
const tnet_transport_event_t *e = (const tnet_transport_event_t*)curr->data;
|
const tnet_transport_event_t *e = (const tnet_transport_event_t*)curr->data;
|
||||||
|
|
||||||
if(transport->callback){
|
if(transport->callback){
|
||||||
|
@ -305,6 +383,8 @@ static void *run(void* self)
|
||||||
|
|
||||||
TSK_RUNNABLE_RUN_END(transport);
|
TSK_RUNNABLE_RUN_END(transport);
|
||||||
|
|
||||||
|
TSK_DEBUG_INFO("Transport::run() - exit");
|
||||||
|
|
||||||
return tsk_null;
|
return tsk_null;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -355,6 +435,7 @@ static tsk_object_t* tnet_transport_dtor(tsk_object_t * self)
|
||||||
tnet_transport_shutdown(transport);
|
tnet_transport_shutdown(transport);
|
||||||
TSK_OBJECT_SAFE_FREE(transport->master);
|
TSK_OBJECT_SAFE_FREE(transport->master);
|
||||||
TSK_OBJECT_SAFE_FREE(transport->context);
|
TSK_OBJECT_SAFE_FREE(transport->context);
|
||||||
|
TSK_OBJECT_SAFE_FREE(transport->natt_ctx);
|
||||||
TSK_FREE(transport->description);
|
TSK_FREE(transport->description);
|
||||||
TSK_FREE(transport->local_ip);
|
TSK_FREE(transport->local_ip);
|
||||||
|
|
||||||
|
|
|
@ -34,6 +34,8 @@
|
||||||
|
|
||||||
#include "tnet_socket.h"
|
#include "tnet_socket.h"
|
||||||
#include "tnet_utils.h"
|
#include "tnet_utils.h"
|
||||||
|
#include "tnet_nat.h"
|
||||||
|
|
||||||
#include "tsk_runnable.h"
|
#include "tsk_runnable.h"
|
||||||
|
|
||||||
TNET_BEGIN_DECLS
|
TNET_BEGIN_DECLS
|
||||||
|
@ -75,11 +77,14 @@ TINYNET_API int tnet_transport_issecure(const tnet_transport_handle_t *handle);
|
||||||
TINYNET_API const char* tnet_transport_get_description(const tnet_transport_handle_t *handle);
|
TINYNET_API const char* tnet_transport_get_description(const tnet_transport_handle_t *handle);
|
||||||
TINYNET_API int tnet_transport_get_ip_n_port(const tnet_transport_handle_t *handle, tnet_fd_t fd, tnet_ip_t *ip, tnet_port_t *port);
|
TINYNET_API int tnet_transport_get_ip_n_port(const tnet_transport_handle_t *handle, tnet_fd_t fd, tnet_ip_t *ip, tnet_port_t *port);
|
||||||
TINYNET_API int tnet_transport_get_ip_n_port_2(const tnet_transport_handle_t *handle, tnet_ip_t *ip, tnet_port_t *port);
|
TINYNET_API int tnet_transport_get_ip_n_port_2(const tnet_transport_handle_t *handle, tnet_ip_t *ip, tnet_port_t *port);
|
||||||
|
TINYNET_API int tnet_transport_set_natt_ctx(tnet_transport_handle_t *handle, tnet_nat_context_handle_t* natt_ctx);
|
||||||
|
TINYNET_API int tnet_transport_get_public_ip_n_port(const tnet_transport_handle_t *handle, tnet_fd_t fd, tnet_ip_t *ip, tnet_port_t *port);
|
||||||
|
|
||||||
TINYNET_API int tnet_transport_isconnected(const tnet_transport_handle_t *handle, tnet_fd_t fd);
|
TINYNET_API int tnet_transport_isconnected(const tnet_transport_handle_t *handle, tnet_fd_t fd);
|
||||||
TINYNET_API int tnet_transport_have_socket(const tnet_transport_handle_t *handle, tnet_fd_t fd);
|
TINYNET_API int tnet_transport_have_socket(const tnet_transport_handle_t *handle, tnet_fd_t fd);
|
||||||
TINYNET_API const tnet_tls_socket_handle_t* tnet_transport_get_tlshandle(const tnet_transport_handle_t *handle, tnet_fd_t fd);
|
TINYNET_API const tnet_tls_socket_handle_t* tnet_transport_get_tlshandle(const tnet_transport_handle_t *handle, tnet_fd_t fd);
|
||||||
TINYNET_API int tnet_transport_add_socket(const tnet_transport_handle_t *handle, tnet_fd_t fd, tnet_socket_type_t type, tsk_bool_t take_ownership, tsk_bool_t isClient);
|
TINYNET_API int tnet_transport_add_socket(const tnet_transport_handle_t *handle, tnet_fd_t fd, tnet_socket_type_t type, tsk_bool_t take_ownership, tsk_bool_t isClient);
|
||||||
|
TINYNET_API int tnet_transport_pause_socket(const tnet_transport_handle_t *handle, tnet_fd_t fd, tsk_bool_t pause);
|
||||||
TINYNET_API int tnet_transport_remove_socket(const tnet_transport_handle_t *handle, tnet_fd_t* fd);
|
TINYNET_API int tnet_transport_remove_socket(const tnet_transport_handle_t *handle, tnet_fd_t* fd);
|
||||||
TINYNET_API tnet_fd_t tnet_transport_connectto(const tnet_transport_handle_t *handle, const char* host, tnet_port_t port, tnet_socket_type_t type);
|
TINYNET_API tnet_fd_t tnet_transport_connectto(const tnet_transport_handle_t *handle, const char* host, tnet_port_t port, tnet_socket_type_t type);
|
||||||
#define tnet_transport_connectto_2(handle, host, port) tnet_transport_connectto(handle, host, port, tnet_transport_get_type(handle))
|
#define tnet_transport_connectto_2(handle, host, port) tnet_transport_connectto(handle, host, port, tnet_transport_get_type(handle))
|
||||||
|
@ -89,6 +94,7 @@ TINYNET_API tsk_size_t tnet_transport_sendto(const tnet_transport_handle_t *hand
|
||||||
TINYNET_API int tnet_transport_set_callback(const tnet_transport_handle_t *handle, tnet_transport_cb_f callback, const void* callback_data);
|
TINYNET_API int tnet_transport_set_callback(const tnet_transport_handle_t *handle, tnet_transport_cb_f callback, const void* callback_data);
|
||||||
|
|
||||||
TINYNET_API tnet_socket_type_t tnet_transport_get_type(const tnet_transport_handle_t *handle);
|
TINYNET_API tnet_socket_type_t tnet_transport_get_type(const tnet_transport_handle_t *handle);
|
||||||
|
TINYNET_API tnet_fd_t tnet_transport_get_master_fd(const tnet_transport_handle_t *handle);
|
||||||
TINYNET_API int tnet_transport_shutdown(tnet_transport_handle_t* handle);
|
TINYNET_API int tnet_transport_shutdown(tnet_transport_handle_t* handle);
|
||||||
|
|
||||||
typedef struct tnet_transport_s
|
typedef struct tnet_transport_s
|
||||||
|
@ -97,6 +103,7 @@ typedef struct tnet_transport_s
|
||||||
|
|
||||||
tnet_socket_type_t type;
|
tnet_socket_type_t type;
|
||||||
char* local_ip;
|
char* local_ip;
|
||||||
|
tnet_nat_context_handle_t* natt_ctx;
|
||||||
tnet_socket_t *master;
|
tnet_socket_t *master;
|
||||||
|
|
||||||
tsk_object_t *context;
|
tsk_object_t *context;
|
||||||
|
|
|
@ -47,6 +47,7 @@ typedef struct transport_socket_s
|
||||||
tnet_fd_t fd;
|
tnet_fd_t fd;
|
||||||
tsk_bool_t owner;
|
tsk_bool_t owner;
|
||||||
tsk_bool_t connected;
|
tsk_bool_t connected;
|
||||||
|
tsk_bool_t paused;
|
||||||
|
|
||||||
tnet_socket_type_t type;
|
tnet_socket_type_t type;
|
||||||
tnet_tls_socket_handle_t* tlshandle;
|
tnet_tls_socket_handle_t* tlshandle;
|
||||||
|
@ -103,7 +104,7 @@ int tnet_transport_add_socket(const tnet_transport_handle_t *handle, tnet_fd_t f
|
||||||
// signal
|
// signal
|
||||||
if(context->pipeW){
|
if(context->pipeW){
|
||||||
if((ret = write(context->pipeW, &c, 1)) > 0){
|
if((ret = write(context->pipeW, &c, 1)) > 0){
|
||||||
TSK_DEBUG_INFO("Socket added.");
|
TSK_DEBUG_INFO("Socket added (external call) %d", fd);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
else{
|
else{
|
||||||
|
@ -116,8 +117,27 @@ int tnet_transport_add_socket(const tnet_transport_handle_t *handle, tnet_fd_t f
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Remove socket
|
int tnet_transport_pause_socket(const tnet_transport_handle_t *handle, tnet_fd_t fd, tsk_bool_t pause)
|
||||||
*/
|
{
|
||||||
|
tnet_transport_t *transport = (tnet_transport_t*)handle;
|
||||||
|
transport_context_t *context;
|
||||||
|
transport_socket_t* socket;
|
||||||
|
|
||||||
|
if(!transport || !(context = (transport_context_t*)transport->context)){
|
||||||
|
TSK_DEBUG_ERROR("Invalid parameter");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if((socket = getSocket(context, fd))){
|
||||||
|
socket->paused = pause;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
TSK_DEBUG_WARN("Socket does not exist in this context");
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
/* Remove socket */
|
||||||
int tnet_transport_remove_socket(const tnet_transport_handle_t *handle, tnet_fd_t *fd)
|
int tnet_transport_remove_socket(const tnet_transport_handle_t *handle, tnet_fd_t *fd)
|
||||||
{
|
{
|
||||||
tnet_transport_t *transport = (tnet_transport_t*)handle;
|
tnet_transport_t *transport = (tnet_transport_t*)handle;
|
||||||
|
@ -126,6 +146,8 @@ int tnet_transport_remove_socket(const tnet_transport_handle_t *handle, tnet_fd_
|
||||||
tsk_size_t i;
|
tsk_size_t i;
|
||||||
tsk_bool_t found = tsk_false;
|
tsk_bool_t found = tsk_false;
|
||||||
|
|
||||||
|
TSK_DEBUG_INFO("Removing socket %d", *fd);
|
||||||
|
|
||||||
if(!transport){
|
if(!transport){
|
||||||
TSK_DEBUG_ERROR("Invalid server handle.");
|
TSK_DEBUG_ERROR("Invalid server handle.");
|
||||||
return ret;
|
return ret;
|
||||||
|
@ -226,6 +248,7 @@ int tnet_transport_have_socket(const tnet_transport_handle_t *handle, tnet_fd_t
|
||||||
|
|
||||||
return (getSocket((transport_context_t*)transport->context, fd) != 0);
|
return (getSocket((transport_context_t*)transport->context, fd) != 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
const tnet_tls_socket_handle_t* tnet_transport_get_tlshandle(const tnet_transport_handle_t *handle, tnet_fd_t fd)
|
const tnet_tls_socket_handle_t* tnet_transport_get_tlshandle(const tnet_transport_handle_t *handle, tnet_fd_t fd)
|
||||||
{
|
{
|
||||||
tnet_transport_t *transport = (tnet_transport_t*)handle;
|
tnet_transport_t *transport = (tnet_transport_t*)handle;
|
||||||
|
@ -280,7 +303,7 @@ int addSocket(tnet_fd_t fd, tnet_socket_type_t type, tnet_transport_t *transport
|
||||||
tsk_safeobj_lock(context);
|
tsk_safeobj_lock(context);
|
||||||
|
|
||||||
context->ufds[context->count].fd = fd;
|
context->ufds[context->count].fd = fd;
|
||||||
context->ufds[context->count].events = context->events;
|
context->ufds[context->count].events = (fd == context->pipeR) ? TNET_POLLIN : context->events;
|
||||||
context->ufds[context->count].revents = 0;
|
context->ufds[context->count].revents = 0;
|
||||||
context->sockets[context->count] = sock;
|
context->sockets[context->count] = sock;
|
||||||
|
|
||||||
|
@ -288,7 +311,7 @@ int addSocket(tnet_fd_t fd, tnet_socket_type_t type, tnet_transport_t *transport
|
||||||
|
|
||||||
tsk_safeobj_unlock(context);
|
tsk_safeobj_unlock(context);
|
||||||
|
|
||||||
TSK_DEBUG_INFO("Socket added");
|
TSK_DEBUG_INFO("Socket added %d", fd);
|
||||||
|
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
@ -362,7 +385,7 @@ int tnet_transport_stop(tnet_transport_t *transport)
|
||||||
}
|
}
|
||||||
|
|
||||||
context = transport->context;
|
context = transport->context;
|
||||||
|
|
||||||
if((ret = tsk_runnable_stop(TSK_RUNNABLE(transport)))){
|
if((ret = tsk_runnable_stop(TSK_RUNNABLE(transport)))){
|
||||||
return ret;
|
return ret;
|
||||||
}
|
}
|
||||||
|
@ -371,7 +394,9 @@ int tnet_transport_stop(tnet_transport_t *transport)
|
||||||
static char c = '\0';
|
static char c = '\0';
|
||||||
|
|
||||||
// signal
|
// signal
|
||||||
|
tsk_safeobj_lock(context); // =>MUST
|
||||||
write(context->pipeW, &c, 1);
|
write(context->pipeW, &c, 1);
|
||||||
|
tsk_safeobj_unlock(context);
|
||||||
}
|
}
|
||||||
|
|
||||||
if(transport->mainThreadId[0]){
|
if(transport->mainThreadId[0]){
|
||||||
|
@ -405,11 +430,11 @@ int tnet_transport_prepare(tnet_transport_t *transport)
|
||||||
/* set events */
|
/* set events */
|
||||||
context->events = TNET_POLLIN | TNET_POLLNVAL | TNET_POLLERR;
|
context->events = TNET_POLLIN | TNET_POLLNVAL | TNET_POLLERR;
|
||||||
if(TNET_SOCKET_TYPE_IS_STREAM(transport->master->type)){
|
if(TNET_SOCKET_TYPE_IS_STREAM(transport->master->type)){
|
||||||
context->events |= TNET_POLLPRI
|
// context->events |= TNET_POLLPRI
|
||||||
#if !defined(ANDROID)
|
//#if !defined(ANDROID)
|
||||||
| TNET_POLLHUP
|
// | TNET_POLLHUP /* FIXME: always present */
|
||||||
#endif
|
//#endif
|
||||||
;
|
// ;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Start listening */
|
/* Start listening */
|
||||||
|
@ -431,11 +456,13 @@ int tnet_transport_prepare(tnet_transport_t *transport)
|
||||||
context->pipeW = pipes[1];
|
context->pipeW = pipes[1];
|
||||||
|
|
||||||
/* add R side */
|
/* add R side */
|
||||||
|
TSK_DEBUG_INFO("pipeR fd=%d", context->pipeR);
|
||||||
if((ret = addSocket(context->pipeR, transport->master->type, transport, tsk_true, tsk_false))){
|
if((ret = addSocket(context->pipeR, transport->master->type, transport, tsk_true, tsk_false))){
|
||||||
goto bail;
|
goto bail;
|
||||||
}
|
}
|
||||||
|
|
||||||
/* Add the master socket to the context. */
|
/* Add the master socket to the context. */
|
||||||
|
TSK_DEBUG_INFO("master fd=%d", transport->master->fd);
|
||||||
if((ret = addSocket(transport->master->fd, transport->master->type, transport, tsk_true, tsk_false))){
|
if((ret = addSocket(transport->master->fd, transport->master->type, transport, tsk_true, tsk_false))){
|
||||||
TSK_DEBUG_ERROR("Failed to add master socket");
|
TSK_DEBUG_ERROR("Failed to add master socket");
|
||||||
goto bail;
|
goto bail;
|
||||||
|
@ -461,8 +488,7 @@ int tnet_transport_unprepare(tnet_transport_t *transport)
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!transport->prepared){
|
if(!transport->prepared){
|
||||||
TSK_DEBUG_ERROR("Transport not prepared.");
|
return 0;
|
||||||
return -2;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
transport->prepared = tsk_false;
|
transport->prepared = tsk_false;
|
||||||
|
@ -492,14 +518,13 @@ void *tnet_transport_mainthread(void *param)
|
||||||
|
|
||||||
TSK_DEBUG_INFO("Starting [%s] server with IP {%s} on port {%d}...", transport->description, transport->master->ip, transport->master->port);
|
TSK_DEBUG_INFO("Starting [%s] server with IP {%s} on port {%d}...", transport->description, transport->master->ip, transport->master->port);
|
||||||
|
|
||||||
while(TSK_RUNNABLE(transport)->running)
|
while(TSK_RUNNABLE(transport)->running || TSK_RUNNABLE(transport)->started){
|
||||||
{
|
|
||||||
if((ret = tnet_poll(context->ufds, context->count, -1)) < 0){
|
if((ret = tnet_poll(context->ufds, context->count, -1)) < 0){
|
||||||
TNET_PRINT_LAST_ERROR("poll have failed.");
|
TNET_PRINT_LAST_ERROR("poll have failed.");
|
||||||
goto bail;
|
goto bail;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!TSK_RUNNABLE(transport)->running){
|
if(!TSK_RUNNABLE(transport)->running && !TSK_RUNNABLE(transport)->started){
|
||||||
goto bail;
|
goto bail;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -509,7 +534,19 @@ void *tnet_transport_mainthread(void *param)
|
||||||
/* == == */
|
/* == == */
|
||||||
for(i=0; i<context->count; i++)
|
for(i=0; i<context->count; i++)
|
||||||
{
|
{
|
||||||
if(!context->ufds[i].revents || context->ufds[i].fd == context->pipeR){
|
if(!context->ufds[i].revents){
|
||||||
|
continue;
|
||||||
|
}
|
||||||
|
|
||||||
|
if(context->ufds[i].fd == context->pipeR){
|
||||||
|
if(context->ufds[i].revents & TNET_POLLIN){
|
||||||
|
static char __buffer[64];
|
||||||
|
if(read(context->pipeR, __buffer, sizeof(__buffer))<0){
|
||||||
|
TNET_PRINT_LAST_ERROR("Failed to read from the Pipe");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
TSK_DEBUG_INFO("PipeR event %d", context->ufds[i].revents);
|
||||||
|
context->ufds[i].revents = 0;
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -520,11 +557,22 @@ void *tnet_transport_mainthread(void *param)
|
||||||
if(context->ufds[i].revents & TNET_POLLIN)
|
if(context->ufds[i].revents & TNET_POLLIN)
|
||||||
{
|
{
|
||||||
tsk_size_t len = 0;
|
tsk_size_t len = 0;
|
||||||
void* buffer = 0;
|
void* buffer = tsk_null;
|
||||||
tnet_transport_event_t* e;
|
tnet_transport_event_t* e;
|
||||||
|
|
||||||
/* TSK_DEBUG_INFO("NETWORK EVENT FOR SERVER [%s] -- TNET_POLLIN", transport->description); */
|
/* TSK_DEBUG_INFO("NETWORK EVENT FOR SERVER [%s] -- TNET_POLLIN", transport->description); */
|
||||||
|
|
||||||
|
//
|
||||||
|
// FIXME: check if accept() is needed or not
|
||||||
|
//
|
||||||
|
|
||||||
|
|
||||||
|
/* check whether the socket is paused or not */
|
||||||
|
if(active_socket->paused){
|
||||||
|
TSK_DEBUG_INFO("Socket is paused");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
/* Retrieve the amount of pending data.
|
/* Retrieve the amount of pending data.
|
||||||
* IMPORTANT: If you are using Symbian please update your SDK to the latest build (August 2009) to have 'FIONREAD'.
|
* IMPORTANT: If you are using Symbian please update your SDK to the latest build (August 2009) to have 'FIONREAD'.
|
||||||
* This apply whatever you are using the 3rd or 5th edition.
|
* This apply whatever you are using the 3rd or 5th edition.
|
||||||
|
|
|
@ -43,6 +43,7 @@ typedef struct transport_socket_s
|
||||||
tnet_fd_t fd;
|
tnet_fd_t fd;
|
||||||
unsigned owner:1;
|
unsigned owner:1;
|
||||||
unsigned connected:1;
|
unsigned connected:1;
|
||||||
|
unsigned paused:1;
|
||||||
|
|
||||||
tnet_socket_type_t type;
|
tnet_socket_type_t type;
|
||||||
tnet_tls_socket_handle_t* tlshandle;
|
tnet_tls_socket_handle_t* tlshandle;
|
||||||
|
@ -160,6 +161,26 @@ int tnet_transport_add_socket(const tnet_transport_handle_t *handle, tnet_fd_t f
|
||||||
return -1;
|
return -1;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
int tnet_transport_pause_socket(const tnet_transport_handle_t *handle, tnet_fd_t fd, tsk_bool_t pause)
|
||||||
|
{
|
||||||
|
tnet_transport_t *transport = (tnet_transport_t*)handle;
|
||||||
|
transport_context_t *context;
|
||||||
|
transport_socket_t* socket;
|
||||||
|
|
||||||
|
if(!transport || !(context = (transport_context_t*)transport->context)){
|
||||||
|
TSK_DEBUG_ERROR("Invalid parameter");
|
||||||
|
return -1;
|
||||||
|
}
|
||||||
|
|
||||||
|
if((socket = getSocket(context, fd))){
|
||||||
|
socket->paused = pause;
|
||||||
|
}
|
||||||
|
else{
|
||||||
|
TSK_DEBUG_WARN("Socket does not exist in this context");
|
||||||
|
}
|
||||||
|
return 0;
|
||||||
|
}
|
||||||
|
|
||||||
/* Remove socket
|
/* Remove socket
|
||||||
*/
|
*/
|
||||||
int tnet_transport_remove_socket(const tnet_transport_handle_t *handle, tnet_fd_t* fd)
|
int tnet_transport_remove_socket(const tnet_transport_handle_t *handle, tnet_fd_t* fd)
|
||||||
|
@ -170,14 +191,9 @@ int tnet_transport_remove_socket(const tnet_transport_handle_t *handle, tnet_fd_
|
||||||
tsk_size_t i;
|
tsk_size_t i;
|
||||||
tsk_bool_t found = tsk_false;
|
tsk_bool_t found = tsk_false;
|
||||||
|
|
||||||
if(!transport){
|
if(!transport || !(context = (transport_context_t*)transport->context)){
|
||||||
TSK_DEBUG_ERROR("Invalid server handle.");
|
TSK_DEBUG_ERROR("Invalid parameter");
|
||||||
return ret;
|
return -1;
|
||||||
}
|
|
||||||
|
|
||||||
if(!(context = (transport_context_t*)transport->context)){
|
|
||||||
TSK_DEBUG_ERROR("Invalid context.");
|
|
||||||
return -2;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
for(i=0; i<context->count; i++){
|
for(i=0; i<context->count; i++){
|
||||||
|
@ -362,8 +378,7 @@ static int removeSocket(int index, transport_context_t *context)
|
||||||
|
|
||||||
tsk_safeobj_lock(context);
|
tsk_safeobj_lock(context);
|
||||||
|
|
||||||
if(index < (int)context->count)
|
if(index < (int)context->count){
|
||||||
{
|
|
||||||
|
|
||||||
/* Close the socket if we are the owner. */
|
/* Close the socket if we are the owner. */
|
||||||
if(context->sockets[index]->owner){
|
if(context->sockets[index]->owner){
|
||||||
|
@ -474,8 +489,7 @@ int tnet_transport_unprepare(tnet_transport_t *transport)
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!transport->prepared){
|
if(!transport->prepared){
|
||||||
TSK_DEBUG_ERROR("Transport not prepared.");
|
return 0;
|
||||||
return -2;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
transport->prepared = tsk_false;
|
transport->prepared = tsk_false;
|
||||||
|
@ -503,7 +517,7 @@ void *tnet_transport_mainthread(void *param)
|
||||||
|
|
||||||
TSK_DEBUG_INFO("Starting [%s] server with IP {%s} on port {%d}...", transport->description, transport->master->ip, transport->master->port);
|
TSK_DEBUG_INFO("Starting [%s] server with IP {%s} on port {%d}...", transport->description, transport->master->ip, transport->master->port);
|
||||||
|
|
||||||
while(TSK_RUNNABLE(transport)->running)
|
while(TSK_RUNNABLE(transport)->running || TSK_RUNNABLE(transport)->started)
|
||||||
{
|
{
|
||||||
/* Wait for multiple events */
|
/* Wait for multiple events */
|
||||||
if((evt = WSAWaitForMultipleEvents(context->count, context->events, FALSE, WSA_INFINITE, FALSE)) == WSA_WAIT_FAILED){
|
if((evt = WSAWaitForMultipleEvents(context->count, context->events, FALSE, WSA_INFINITE, FALSE)) == WSA_WAIT_FAILED){
|
||||||
|
@ -511,7 +525,7 @@ void *tnet_transport_mainthread(void *param)
|
||||||
goto bail;
|
goto bail;
|
||||||
}
|
}
|
||||||
|
|
||||||
if(!TSK_RUNNABLE(transport)->running){
|
if(!TSK_RUNNABLE(transport)->running && !TSK_RUNNABLE(transport)->started){
|
||||||
goto bail;
|
goto bail;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -594,6 +608,12 @@ void *tnet_transport_mainthread(void *param)
|
||||||
|
|
||||||
/* TSK_DEBUG_INFO("NETWORK EVENT FOR SERVER [%s] -- FD_READ", transport->description); */
|
/* TSK_DEBUG_INFO("NETWORK EVENT FOR SERVER [%s] -- FD_READ", transport->description); */
|
||||||
|
|
||||||
|
/* check whether the socket is paused or not */
|
||||||
|
if(active_socket->paused){
|
||||||
|
TSK_DEBUG_INFO("Socket is paused");
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
|
||||||
if(networkEvents.iErrorCode[FD_READ_BIT]){
|
if(networkEvents.iErrorCode[FD_READ_BIT]){
|
||||||
TSK_RUNNABLE_ENQUEUE(transport, event_error, transport->callback_data, active_socket->fd);
|
TSK_RUNNABLE_ENQUEUE(transport, event_error, transport->callback_data, active_socket->fd);
|
||||||
TNET_PRINT_LAST_ERROR("READ FAILED.");
|
TNET_PRINT_LAST_ERROR("READ FAILED.");
|
||||||
|
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue