public IAXClient(IAXAudioType AudioType, int NumCalls) { IAXUnmanaged.iaxc_initialize((int)AudioType, NumCalls); CallbackDelegate = new IAXUnmanaged.iaxc_event_callback_t(IAXCallback); IAXUnmanaged.iaxc_set_event_callback(CallbackDelegate); IAXUnmanaged.iaxc_start_processing_thread(); }
internal unsafe IAXNetStatsEventArgs(IAXUnmanaged.iaxc_event e) : base(e) { CallNo = e.netstats.callNo; RoundTripTime = e.netstats.rtt; Local = new IAXNetStats(e.netstats.local); Remote = new IAXNetStats(e.netstats.remote); }
internal IAXNetStats(IAXUnmanaged.iaxc_netstat n) { Jitter = n.jitter; LossPercent = n.losspct; LossCount = n.losscnt; Packets = n.packets; Delay = n.delay; Dropped = n.dropped; OutOfOrder = n.ooo; }
internal unsafe int IAXCallback(IAXUnmanaged.iaxc_event e) { IAXUnmanaged.iaxc_event ev = e; while (true) { switch (ev.type) { case IAXUnmanaged.IAXC_EVENT_LEVELS: if (LevelsEvent != null) LevelsEvent(this, new IAXLevelsEventArgs(ev)); break; case IAXUnmanaged.IAXC_EVENT_NETSTAT: if (NetStatsEvent != null) NetStatsEvent(this, new IAXNetStatsEventArgs(ev)); break; case IAXUnmanaged.IAXC_EVENT_REGISTRATION: if (RegistrationEvent != null) RegistrationEvent(this, new IAXRegistrationEventArgs(ev)); break; case IAXUnmanaged.IAXC_EVENT_STATE: if (StateEvent != null) StateEvent(this, new IAXStateEventArgs(ev)); break; case IAXUnmanaged.IAXC_EVENT_TEXT: if (TextEvent != null) TextEvent(this, new IAXTextEventArgs(ev)); break; case IAXUnmanaged.IAXC_EVENT_URL: if (UrlEvent != null) UrlEvent(this, new IAXUrlEventArgs(ev)); break; case IAXUnmanaged.IAXC_EVENT_VIDEO: if (VideoEvent != null) VideoEvent(this, new IAXVideoEventArgs(ev)); break; } // see if there is a "next" event if (ev.next == null) return 0; else ev = *ev.next; } }
internal IAXLevelsEventArgs(IAXUnmanaged.iaxc_event e) : base(e) { Input = e.levels.input; Output = e.levels.output; }
internal unsafe IAXVideoEventArgs(IAXUnmanaged.iaxc_event e) : base(e) { CallNo = e.video.callNo; Format = e.video.format; Width = e.video.width; Height = e.video.height; Data = null; // TODO: how to interpret data? }
internal unsafe IAXUrlEventArgs(IAXUnmanaged.iaxc_event e) : base(e) { CallNo = e.url.callNo; Type = (IAXUrlEventType)e.url.type; Url = BytesToString(e.url.url); }
internal unsafe IAXTextEventArgs(IAXUnmanaged.iaxc_event e) : base(e) { Type = (IAXTTextEventType)e.text.type; CallNo = e.text.callNo; Message = BytesToString(e.text.message); }
public int Unregister(int ID) { return(IAXUnmanaged.iaxc_unregister(ID)); }
internal unsafe IAXRegistrationEventArgs(IAXUnmanaged.iaxc_event e) : base(e) { ID = e.reg.id; Reply = (IAXRegistrationReply)e.reg.reply; MessageCount = e.reg.msgcount; }
public void Answer() { IAXUnmanaged.iaxc_answer_call(0); }
public void SetFormats(IAXFormat preferred, IAXFormat allowed) { IAXUnmanaged.iaxc_set_formats((int)preferred, (int)allowed); }
public void Hangup() { IAXUnmanaged.iaxc_dump_call(); }
public void Transfer(string number) { IAXUnmanaged.iaxc_blind_transfer_call(IAXUnmanaged.iaxc_selected_call(), number); }
public void Call(string IAX) { IAXUnmanaged.iaxc_call(IAX); }
internal IAXEventArgs(IAXUnmanaged.iaxc_event ev) { }
protected override void Dispose(bool disposing) { base.Dispose(disposing); IAXUnmanaged.iaxc_stop_processing_thread(); IAXUnmanaged.iaxc_shutdown(); }
internal unsafe IAXStateEventArgs(IAXUnmanaged.iaxc_event e) : base(e) { CallNo = e.call.callNo; State = (IAXCallState)e.call.state; Format = (IAXFormat)e.call.format; Remote = BytesToString(e.call.remote); RemoteName = BytesToString(e.call.remote_name); Local = BytesToString(e.call.local); LocalContext = BytesToString(e.call.local_context); }
public int Register(string User, string Password, string Server) { return(IAXUnmanaged.iaxc_register(User, Password, Server)); }