Пример #1
0
 public void IncomingCallFromPort(CallEventArgs arg)
 {
     if (Port != null && arg != null)
     {
         OnIncomingCall(this, arg);
     }
 }
Пример #2
0
        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;
        }
Пример #3
0
 public void RegUnprocessedCall(CallEventArgs arg)
 {
     calls.Add(new CallInfo
     {
         Source    = arg.SourceNumber,
         Target    = arg.TargetNumber,
         CallDate  = DateTime.Now,
         Duration  = TimeSpan.Zero,
         CallState = arg.State
     });
 }
Пример #4
0
        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);
        }
Пример #5
0
 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);
     }
 }
Пример #6
0
        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);
                }
            }
        }
Пример #7
0
        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;
        }
Пример #8
0
 public void GetCall(CallEventArgs arg)
 {
     OnCalling(this, arg);
 }
Пример #9
0
 protected void OnCalling(object sender, CallEventArgs arg)
 {
     IncomingCall?.Invoke(sender, arg);
 }
Пример #10
0
 private void OnIncomingCallAnswer(object sender, CallEventArgs arg)
 {
     arg.State = CallState.Processed;
     RegAnsweredCall(arg);
 }
Пример #11
0
 protected virtual void OnDropCall(object sender, CallEventArgs arg)
 {
     Drop?.Invoke(sender, arg);
 }
Пример #12
0
 protected virtual void OnAnswerCall(object sender, CallEventArgs arg)
 {
     Answer?.Invoke(sender, arg);
 }
Пример #13
0
 protected virtual void OnIncomingCall(object sender, CallEventArgs arg)
 {
     IncomingCall?.Invoke(sender, arg);
 }
Пример #14
0
 protected virtual void OnOutgoingCall(object sender, CallEventArgs arg)
 {
     OutgoingCall?.Invoke(sender, arg);
 }