Exemple #1
0
        private void ConnectPorts(IPort senderPort, OutgoingCallEvent e)
        {
            var receiverPort = Ports.FirstOrDefault(x => x.PhoneNumber == e.ReceiverPhoneNumber);

            if (receiverPort == null || senderPort == null || receiverPort.PortStatus == PortStatus.SwitchedOff)
            {
                OnNotifyPortOfFailure(new FailureEvent(e.ReceiverPhoneNumber, FailureType.AbonentDoesNotExist),
                                      senderPort);

                Logger.WriteLine($"{e.ReceiverPhoneNumber} does not exist");
            }
            else if (receiverPort.PortStatus != PortStatus.Free)
            {
                OnNotifyPortOfFailure(new FailureEvent(e.ReceiverPhoneNumber, FailureType.AbonentIsBusy),
                                      senderPort);

                Logger.WriteLine($"{e.ReceiverPhoneNumber} is busy");
            }
            else
            {
                CallsWaitingToBeAnswered.Add(senderPort, receiverPort);                                  // add aour cakk information to specified list

                PortTimeout.Add(senderPort, SetTimer(senderPort, receiverPort));                         // setting timer for call waiting to be answered, wich will end call after certain ammout of time if it wasn't answered

                OnNotifyPortOfIncomingCall(new IncomingCallEvent(senderPort.PhoneNumber), receiverPort); // This method will call the event that invokes methods that changes telephones statuses and send notifications
            }
        }
Exemple #2
0
        public uSerialPort(BaudRate _baudrate)
        {
            baudrate = _baudrate;

            checkedPortNames = new List <string>();

            port_NewNMEAMessageHandler = new EventHandler <NewNMEAMessageEventArgs>(port_NewNMEAMessage);
            port_PortErrorHandler      = new EventHandler <SerialErrorReceivedEventArgs>(port_PortError);

            timer        = new PrecisionTimer();
            timer.Mode   = Mode.Periodic;
            timer.Period = timer_period_ms;
            timer.Tick  += (o, e) =>
            {
                if (timer_cnt++ > timer_cnt_max)
                {
                    timer_cnt = 0;

                    if (!_detected)
                    {
                        TryNextPort();
                    }
                    else
                    {
                        PortTimeout.Rise(this, new EventArgs());
                        detected = false;

                        if (IsTryAlways)
                        {
                            checkedPortNames.Clear();
                            TryNextPort();
                        }
                    }
                }
            };
        }
Exemple #3
0
 private void DisposeTimer(IPort port)
 {
     PortTimeout[port].Dispose();
     PortTimeout.Remove(port);
 }