public void IncomingCallFromPort(CallEventArgs arg) { if (Port != null && arg != null) { OnIncomingCall(this, arg); } }
private void RegAnsweredCall(CallEventArgs args) { var call = calls.FirstOrDefault(x => x.Source == args.SourceNumber && x.Target == args.TargetNumber); if (call == null) { return; } call.CallDate = DateTime.Now; call.CallState = args.State; }
public void RegUnprocessedCall(CallEventArgs arg) { calls.Add(new CallInfo { Source = arg.SourceNumber, Target = arg.TargetNumber, CallDate = DateTime.Now, Duration = TimeSpan.Zero, CallState = arg.State }); }
private void RegDroppedCall(CallEventArgs arg) { var call = calls.FirstOrDefault(x => x.Source == arg.SourceNumber && x.Target == arg.TargetNumber); if (call == null) { return; } calls.Remove(call); call.Duration = DateTime.Now - call.CallDate; CallEvent?.Invoke(this, call); }
public void Call(string to) { if (Port != null && Port.State == PortState.Free) { CallEventArgs = new CallEventArgs { TargetNumber = to, SourceNumber = PhoneNumber, State = CallState.None }; OnOutgoingCall(this, CallEventArgs); } }
private void OnOutgoingCall(object sender, CallEventArgs arg) { var receiverPort = GetPort(arg.TargetNumber); if (receiverPort != null) { if (receiverPort.State == PortState.Free) { receiverPort.GetCall(arg); arg.State = CallState.Unprocessed; RegUnprocessedCall(arg); } else { Console.WriteLine("Receiver port is " + receiverPort.State); } } }
private void OnCallDrop(object sender, CallEventArgs arg) { if (arg.State != CallState.Processed) { return; } var fromPort = GetPort(arg.SourceNumber); var toPort = GetPort(arg.TargetNumber); if (fromPort != null && fromPort.State == PortState.Busy) { fromPort.State = PortState.Free; } if (toPort != null && toPort.State == PortState.Busy) { toPort.State = PortState.Free; } RegDroppedCall(arg); arg.SourceNumber = string.Empty; arg.TargetNumber = string.Empty; }
public void GetCall(CallEventArgs arg) { OnCalling(this, arg); }
protected void OnCalling(object sender, CallEventArgs arg) { IncomingCall?.Invoke(sender, arg); }
private void OnIncomingCallAnswer(object sender, CallEventArgs arg) { arg.State = CallState.Processed; RegAnsweredCall(arg); }
protected virtual void OnDropCall(object sender, CallEventArgs arg) { Drop?.Invoke(sender, arg); }
protected virtual void OnAnswerCall(object sender, CallEventArgs arg) { Answer?.Invoke(sender, arg); }
protected virtual void OnIncomingCall(object sender, CallEventArgs arg) { IncomingCall?.Invoke(sender, arg); }
protected virtual void OnOutgoingCall(object sender, CallEventArgs arg) { OutgoingCall?.Invoke(sender, arg); }