Beispiel #1
0
 public void OnAlarmEvent() // Event handler
 {
     if (AlarmEvent != null)
     {
         AlarmEvent.Invoke();
     }
 }
Beispiel #2
0
        public async Task <ActionResult <AlarmEvent> > CreateEvent(int alarmFeedId, AlarmEvent @event)
        {
            var feed = await _db.AlarmFeeds.FirstOrDefaultAsync(x => x.Id == alarmFeedId);

            if (feed == null)
            {
                return(NotFound());
            }

            @event.AlarmFeedId = feed.Id;
            @event.Created     = LocalClock.Now;

            _db.AlarmEvents.Add(@event);
            await _db.SaveChangesAsync();

            @event = await _db.AlarmEvents
                     .Include(x => x.AlarmFeed)
                     .Include(x => x.Terminal)
                     .Include(x => x.PointOfSale)
                     .FirstOrDefaultAsync(x => x.Id == @event.Id);

            //feed.SubscriberEmails

            await _hub.Clients.All.SendAsync("EventCreated", @event);

            return(@event);
        }
Beispiel #3
0
 public AndroidAlarmService()
 {
     MessagingCenter.Subscribe <ScheduledAlarmHandler>(this, "OnAlarm", (args) =>
     {
         AlarmEvent.Invoke(this, null);
     });
 }
 public void ClearAlarm()
 {
     _alarming = false;
     if (_acknowledged)
     {
         AlarmEvent?.Invoke(this, new AlarmEventArgs(AlarmEventType.Cleared, _name));
     }
 }
 public void AcknowledgeAlarm()
 {
     _acknowledged = true;
     AlarmEvent?.Invoke(this, new AlarmEventArgs(AlarmEventType.Acknowledged, _name));
     if (_clearOnAck || !_alarming)
     {
         ClearAlarm();
     }
 }
 public void PostAlarm()
 {
     if (!_alarming)
     {
         _alarming     = true;
         _acknowledged = false;
         _postTime     = DateTime.Now;
         AlarmEvent?.Invoke(this, new AlarmEventArgs(AlarmEventType.Posted, _name));
     }
 }
        public void then_remove_alarmEvent_fail_if_not_have_permission()
        {
            var alarmEvent = new AlarmEvent()
            {
                AlarmID = 2, StartTime = DateTime.Now, EndTime = DateTime.MaxValue, MinUserLevelToRemove = 10
            };

            manager.AlarmEvents.Add(alarmEvent);
            manager.RemoveEvent(alarmEvent);
        }
        public void then_can_remove_alarmEvent_with_security()
        {
            var alarmEvent = new AlarmEvent()
            {
                AlarmID = 2, StartTime = DateTime.Now, EndTime = DateTime.MaxValue, MinUserLevelToRemove = 10
            };

            manager.AlarmEvents.Add(alarmEvent);
            int level = 20;

            manager.RemoveEvent(alarmEvent, level);
            manager.AlarmEvents.Count.ShouldEqual(0);
        }
Beispiel #9
0
 public async Task SendAlarmToServerAsync(AlarmEvent alarmEvent)
 {
     try
     {
         await flurlClient.Request("/api/alarms")
         .PutJsonAsync(alarmEvent);
     }
     catch (Exception e)
     {
         logger.LogError("Error while sending alarm to server: {0}", e.Message);
         throw e;
     }
 }
Beispiel #10
0
        public void FromSnsEventReturnsRequest()
        {
            var targetGroupArn = "arn:aws:elb:us-east-1:1:targetgroup/test/test";
            var dnsName        = "http://example.com";
            var alarm          = new AlarmEvent
            {
                Trigger = new Trigger
                {
                    Metrics = new List <MetricDataQuery> {
                        new MetricDataQuery {
                            Id = "healthy",
                        },
                        new MetricDataQuery {
                            Id         = "customdata",
                            MetricStat = new MetricStat {
                                Metric = new Metric {
                                    Dimensions = new List <Dimension> {
                                        new Dimension {
                                            Name  = "TargetGroupArn",
                                            Value = targetGroupArn
                                        },
                                        new Dimension {
                                            Name  = "TargetDnsName",
                                            Value = dnsName
                                        }
                                    }
                                }
                            }
                        }
                    }
                }
            };

            var evnt = new SNSEvent
            {
                Records = new List <SNSRecord> {
                    new SNSRecord {
                        Sns = new SNSMessage {
                            Message = Serialize(alarm)
                        }
                    }
                }
            };

            var factory = new UpdateTargetsRequestFactory();
            var request = factory.CreateFromSnsEvent(evnt);

            Assert.That(request.TargetGroupArn, Is.EqualTo(targetGroupArn));
            Assert.That(request.TargetDnsName, Is.EqualTo(dnsName));
        }
Beispiel #11
0
    public void detectPlayer()
    {
        if (!onDetection)
        {
            enemyAnimator.SetBool(animatorIsDetecting, true);
            showString = detectedString;
            receiveAlarm();
            AlarmEvent.OnAlarmMethod();
            eventSound.clip = spottedSound;
            eventSound.Play();
            AlarmHandler.addEnemyOnAlarm(this);
            print("Detected!!! ");
        }

        chasingTime = 0.0f;
    }
Beispiel #12
0
        public void HandleAlarmEvent(AlarmEvent e)
        {
            if (!this.IsHandleCreated)
            {
                return;
            }

            if (e.Info.Level < AlarmLevel.Warn)
            {
                return;
            }

            //this.BeginInvoke(new Action(() =>
            //{
            //    this.ProgramNav.BtnAlarm.ShowAlarms();
            //}));
        }
        //hay que proteger las variables por una zona critica

        private void CheckAlarmEvent(AlarmEvent alarmEvent, int id, int start, int end)
        {
            alarmEvent.AlarmID.ShouldEqual(id);
            if (start != int.MaxValue)
            {
                alarmEvent.StartTime.Day.ShouldEqual(start);
            }
            else
            {
                alarmEvent.StartTime.ShouldEqual(DateTime.MaxValue);
            }
            if (end != int.MaxValue)
            {
                alarmEvent.EndTime.Day.ShouldEqual(end);
            }
            else
            {
                alarmEvent.EndTime.ShouldEqual(DateTime.MaxValue);
            }
        }
Beispiel #14
0
 public void AcknowledgeAlarms(List <int> p_AlarmSources)
 {
     if (TestConnection() == true)
     {
         List <long> l_iAlarmIDS = new List <long>();
         List <long> l_iTimeIn   = new List <long>();
         for (int iter = 0; iter < AlarmEvents.Count; iter++)
         {
             AlarmEvent l_AlarmEvent = AlarmEvents[iter];
             if (l_AlarmEvent.Acknowledged == false && p_AlarmSources.Contains(l_AlarmEvent.AlarmSource))
             {
                 l_iAlarmIDS.Add(l_AlarmEvent.ID);
                 l_iTimeIn.Add(l_AlarmEvent.TimeIn);
             }
         }
         if (l_iAlarmIDS.Count > 0)
         {
             ProcessConnectionServer.AcknowledgeAlarms(l_iAlarmIDS.ToArray(), l_iTimeIn.ToArray());
         }
     }
 }
        public void se_necesita_un_cierto_nivel_para_ver_cada_evento()
        {
            var alarmEvent = new AlarmEvent()
            {
                AlarmID = 2, StartTime = DateTime.Now, EndTime = DateTime.MaxValue, MinUserLevelToRemove = 30
            };
            var alarmEvent1 = new AlarmEvent()
            {
                AlarmID = 1, StartTime = DateTime.Now, EndTime = DateTime.MaxValue, MinUserLevelToRemove = 30
            };
            var alarmEvent2 = new AlarmEvent()
            {
                AlarmID = 3, StartTime = DateTime.Now, EndTime = DateTime.MaxValue, MinUserLevelToRemove = 10
            };

            manager.AlarmEvents.Add(alarmEvent);
            manager.AlarmEvents.Add(alarmEvent1);
            manager.AlarmEvents.Add(alarmEvent2);
            int level       = 20;
            var alarmEvents = manager.ViewEvents(level);

            alarmEvents.Count.ShouldEqual(1);
        }
Beispiel #16
0
        void manager_UnhandledEvent(object sender, ManagerEvent e)
        {
            log.Debug("New unhandled event received: " + e.GetType().Name);
            LineControl lc = null;

            //StateServer
            switch (e.GetType().Name)
            {
            case "AGIExecEvent":
                AGIExecEvent agievent = e as AGIExecEvent;
                break;

            case "AlarmClearEvent":
                AlarmClearEvent alarmclear = e as AlarmClearEvent;
                break;

            case "AlarmEvent":
                AlarmEvent alarmevent = e as AlarmEvent;
                break;

            case "AsyncAGIEvent":
                AsyncAGIEvent asyncagievent = e as AsyncAGIEvent;
                break;

            case "BridgeEvent":
                BridgeEvent bridgeevent = e as BridgeEvent;
                break;

            case "CdrEvent":
                CdrEvent cdrevent = e as CdrEvent;
                break;

            case "ChannelReloadEvent":
                ChannelReloadEvent channelreload = e as ChannelReloadEvent;
                break;

            case "ChannelUpdateEvent":
                ChannelUpdateEvent channelupdate = e as ChannelUpdateEvent;
                break;

            case "ConnectEvent":
                ConnectEvent connectevent = e as ConnectEvent;
                break;

            case "ConnectionStateEvent":
                ConnectionStateEvent connectionstate = e as ConnectionStateEvent;
                break;

            case "DBGetResponseEvent":
                DBGetResponseEvent dbget = e as DBGetResponseEvent;
                log.Debug("DBGet response: " + dbget.ToString());
                switch (dbget.Family)
                {
                case "DND":
                    ss.SetLineControl(setLineControlDND(dbget.Key, true));
                    break;

                case "CF":
                    ss.SetLineControl(setLineControlForward(dbget.Key, dbget.Val));
                    break;
                }
                break;

            case "DialEvent":
                DialEvent dial = e as DialEvent;
                log.Debug("Dial event: " + dial.ToString());
                break;

            case "DisconnectEvent":
                DisconnectEvent disconnect = e as DisconnectEvent;
                log.Debug("Disconnect event: " + disconnect.ToString());
                break;

            case "DNDStateEvent":
                DNDStateEvent dndstate = e as DNDStateEvent;
                log.Debug("DND state event: " + dndstate.ToString());
                break;

            case "ExtensionStatusEvent":
                ExtensionStatusEvent extensionstatus = e as ExtensionStatusEvent;
                log.Debug("Extension status event: " + extensionstatus.ToString() + ", status: " + extensionstatus.Status + ", hint: " + extensionstatus.Hint);
                ss.SetLineControl(getLineControlFromExtensionStatusEvent(extensionstatus));
                break;

            case "FaxReceivedEvent":
                FaxReceivedEvent faxreceived = e as FaxReceivedEvent;
                break;

            case "HangupEvent":
                HangupEvent hangup = e as HangupEvent;
                log.Debug("Hangup event: " + hangup.ToString() + " callerid: " + hangup.CallerId + " calleridnum: " + hangup.CallerIdNum);
                //line control
                if (channels.Contains(hangup.Channel))
                {
                    lc = getLineControl((string)channels[hangup.Channel]);
                    int hi = 0;
                    LineControlConnection[] newLCC = null;
                    if (lc.lineControlConnection.Length > 1)
                    {
                        newLCC = new LineControlConnection[lc.lineControlConnection.Length - 1];
                        foreach (LineControlConnection hlcc in lc.lineControlConnection)
                        {
                            if (hlcc.callid != hangup.Channel)
                            {
                                newLCC[hi] = hlcc;
                                hi++;
                            }
                        }
                    }
                    lc.lineControlConnection = newLCC;
                    ss.SetLineControl(lc);
                    channels.Remove(hangup.Channel);
                }

                //missed calls
                callToFind = hangup.UniqueId.Substring(0, 6) + "," + hangup.UniqueId.Substring(6);
                Call mCall = missedCalls.Find(FindCall);
                if (mCall != null)
                {
                    log.Debug("Missed call finded for callid: " + hangup.UniqueId);
                    AddCallLogs(mCall.callee, mCall);
                    if (missedCalls.Remove(mCall))
                    {
                        log.Debug("Call " + mCall.callId + " successfully removed from missedcall cache");
                    }
                    else
                    {
                        log.Debug("Call " + mCall.callId + " cannot be removed from missedcall cache");
                    }
                }
                break;

            case "HoldedCallEvent":
                HoldedCallEvent holdedcall = e as HoldedCallEvent;
                break;

            case "HoldEvent":
                HoldEvent holdevent = e as HoldEvent;
                break;

            case "JabberEvent":
                JabberEvent jabberevent = e as JabberEvent;
                break;

            case "JitterBufStatsEvent":
                JitterBufStatsEvent jitter = e as JitterBufStatsEvent;
                break;

            case "JoinEvent":
                JoinEvent join = e as JoinEvent;
                break;

            case "LeaveEvent":
                LeaveEvent leave = e as LeaveEvent;
                break;

            case "LinkEvent":
                LinkEvent link = e as LinkEvent;
                log.Debug("Link event: " + link.ToString());
                lc = getLineControl(link.CallerId1);
                if (lc != null)
                {
                    foreach (LineControlConnection linklcc in lc.lineControlConnection)
                    {
                        if (linklcc.callid == link.Channel1)
                        {
                            linklcc.contact = link.CallerId2;
                            ss.SetLineControl(lc);
                            break;
                        }
                    }
                }
                lc = getLineControl(link.CallerId2);
                if (lc != null)
                {
                    foreach (LineControlConnection linklcc in lc.lineControlConnection)
                    {
                        if (linklcc.callid == link.Channel2)
                        {
                            linklcc.contact = link.CallerId1;
                            ss.SetLineControl(lc);
                            break;
                        }
                    }
                }
                break;

            case "LogChannelEvent":
                LogChannelEvent logchannel = e as LogChannelEvent;
                break;

            case "ManagerEvent":
                ManagerEvent managerevent = e;
                break;

            case "MeetmeEndEvent":
                MeetmeEndEvent meetmeend = e as MeetmeEndEvent;
                break;

            case "MeetmeJoinEvent":
                MeetmeJoinEvent meetmejoin = e as MeetmeJoinEvent;
                break;

            case "MeetmeLeaveEvent":
                MeetmeLeaveEvent meetmeleave = e as MeetmeLeaveEvent;
                break;

            case "MeetmeMuteEvent":
                MeetmeMuteEvent meetmemute = e as MeetmeMuteEvent;
                break;

            case "MeetmeStopTalkingEvent":
                MeetmeStopTalkingEvent meetmestoptalking = e as MeetmeStopTalkingEvent;
                break;

            case "MeetmeTalkingEvent":
                MeetmeTalkingEvent meetmetalking = e as MeetmeTalkingEvent;
                break;

            case "MeetmeTalkRequestEvent":
                MeetmeTalkRequestEvent meetmetalkrequest = e as MeetmeTalkRequestEvent;
                break;

            case "MessageWaitingEvent":
                MessageWaitingEvent messagewaiting = e as MessageWaitingEvent;
                log.Debug("Message waiting event: " + messagewaiting.ToString());
                lc = getLineControl(messagewaiting.Mailbox.Substring(0, messagewaiting.Mailbox.IndexOf("@")));
                if (lc != null)
                {
                    if (messagewaiting.Waiting > 0)
                    {
                        lc.mwiOn = true;
                    }
                    else
                    {
                        lc.mwiOn = false;
                    }
                    ss.SetLineControl(lc);
                }
                break;

            case "MobileStatusEvent":
                MobileStatusEvent mobilestatus = e as MobileStatusEvent;
                break;

            case "ModuleLoadReportEvent":
                ModuleLoadReportEvent moduleload = e as ModuleLoadReportEvent;
                break;

            case "MonitorStartEvent":
                MonitorStartEvent monitorstart = e as MonitorStartEvent;
                break;

            case "MonitorStopEvent":
                MonitorStopEvent monitorstop = e as MonitorStopEvent;
                break;

            case "NewAccountCodeEvent":
                NewAccountCodeEvent newaccountcode = e as NewAccountCodeEvent;
                break;

            case "NewCallerIdEvent":
                NewCallerIdEvent newcallerid = e as NewCallerIdEvent;
                log.Debug("New caller id envent: " + newcallerid.ToString());
                break;

            case "NewChannelEvent":
                NewChannelEvent newchannel = e as NewChannelEvent;
                log.Debug("New Channel event: " + newchannel.ToString());
                CommandAction   ca = new CommandAction("core show channel " + newchannel.Channel);
                CommandResponse cr = (CommandResponse)manager.SendAction(ca, 10000);
                log.Debug("Channel info: " + cr.ToString());
                string dn = newchannel.CallerIdNum;
                log.Debug("Retreive call information...");
                bool callerIdUnknown = true;
                if (newchannel.CallerIdNum != "<unknown>")
                {
                    callerIdUnknown = false;
                }
                else
                {
                    foreach (string s in cr.Result)
                    {
                        if (s.Contains("Caller ID:"))
                        {
                            dn = s.Substring(s.LastIndexOf(" "));
                            break;
                        }
                    }
                }
                Call newOutboundCall = getOutboundCallFromChannelInfo(cr.Result, callerIdUnknown);
                if (newOutboundCall != null)
                {
                    Call missedCall = newOutboundCall;
                    AddCallLogs(dn, newOutboundCall);
                    dnToFind = newOutboundCall.callee;
                    if (linecontrols.Find(FindLineControl) != null)
                    {
                        log.Debug("This call will be put in missedcall cache: " + missedCall.callId);
                        missedCall.type = CallType.missed;
                        missedCalls.Add(missedCall);
                    }
                }
                break;

            case "NewExtenEvent":
                NewExtenEvent newexten = e as NewExtenEvent;
                log.Debug("New exten event: " + newexten.ToString());
                string   channel      = "";
                char[]   splitter     = { '/' };
                string[] splitchannel = newexten.Channel.Split(splitter);
                splitter[0]  = '-';
                splitchannel = splitchannel[1].Split(splitter);
                channel      = splitchannel[0];
                //DND?
                if (newexten.Extension == Properties.Settings.Default.FeatureCodeDNDToggle && newexten.Application == "Playback")
                {
                    switch (newexten.AppData)
                    {
                    case "do-not-disturb&activated":
                        log.Debug("Successfully activate dnd for channel: " + channel);
                        ss.SetLineControl(setLineControlDND(channel, true));
                        break;

                    case "do-not-disturb&de-activated":
                        log.Debug("Successfully deactivate dnd for channel: " + channel);
                        ss.SetLineControl(setLineControlDND(channel, false));
                        break;
                    }
                }
                //Forward all?
                else if (newexten.Extension.Contains(Properties.Settings.Default.FeatureCodeCallForwardAllActivate) && newexten.Application == "Playback" && newexten.AppData == "call-fwd-unconditional&for&extension")
                {
                    string forward = newexten.Extension.Substring(Properties.Settings.Default.FeatureCodeCallForwardAllActivate.Length);
                    log.Debug("Call forward all from channel: " + channel + " to " + forward);
                    ss.SetLineControl(setLineControlForward(channel, forward));
                }
                // UnForwardAll
                else if (newexten.Extension == Properties.Settings.Default.FeatureCodeCallForwardAllDeactivate && newexten.Application == "Playback" && newexten.AppData == "call-fwd-unconditional&de-activated")
                {
                    log.Debug("Call unforward all from channel: " + channel);
                    ss.SetLineControl(setLineControlForward(channel, ""));
                }
                break;

            case "NewStateEvent":
                NewStateEvent newstate = e as NewStateEvent;
                log.Debug("New State event: " + newstate.ToString());
                LineControl             newstateLc   = getLineControl(newstate.CallerId);
                LineControlConnection[] newStateLccs = null;
                int i = 0;
                if (newstateLc.lineControlConnection != null)
                {
                    bool isContained = false;
                    foreach (LineControlConnection elcc in newstateLc.lineControlConnection)
                    {
                        if (elcc.callid == newstate.Channel)
                        {
                            isContained  = true;
                            newStateLccs = newstateLc.lineControlConnection;
                            break;
                        }
                        i++;
                    }
                    if (!isContained)
                    {
                        i            = 0;
                        newStateLccs = new LineControlConnection[newstateLc.lineControlConnection.Length + 1];
                        foreach (LineControlConnection newstateLcc in newstateLc.lineControlConnection)
                        {
                            newStateLccs[i] = newstateLcc;
                            i++;
                        }
                    }
                }
                else
                {
                    newStateLccs    = new LineControlConnection[1];
                    newStateLccs[0] = new LineControlConnection();
                }
                try
                {
                    switch (newstate.State)
                    {
                    case "Up":
                        //received call?
                        callToFind = newstate.UniqueId;
                        Call rCall = missedCalls.Find(FindCall);
                        if (rCall != null)
                        {
                            log.Debug("Missed call finded: " + callToFind + ", this call will be received");
                            rCall.type = CallType.received;
                            AddCallLogs(rCall.callee, rCall);
                            missedCalls.Remove(rCall);
                        }
                        if (newStateLccs != null)
                        {
                            if (!channels.Contains(newstate.Channel))
                            {
                                channels.Add(newstate.Channel, newstate.CallerId);
                            }
                            newStateLccs[i].callid        = newstate.Channel;
                            newStateLccs[i].remoteState   = Wybecom.TalkPortal.CTI.Proxy.ConnectionState.established;
                            newStateLccs[i].state         = Wybecom.TalkPortal.CTI.Proxy.ConnectionState.established;
                            newStateLccs[i].terminalState = TerminalState.talking;
                        }
                        break;

                    case "Ringing":
                        if (newStateLccs != null)
                        {
                            if (!channels.Contains(newstate.Channel))
                            {
                                channels.Add(newstate.Channel, newstate.CallerId);
                            }
                            newStateLccs[i].callid        = newstate.Channel;
                            newStateLccs[i].remoteState   = Wybecom.TalkPortal.CTI.Proxy.ConnectionState.established;
                            newStateLccs[i].state         = Wybecom.TalkPortal.CTI.Proxy.ConnectionState.alerting;
                            newStateLccs[i].terminalState = TerminalState.ringing;
                        }
                        break;

                    case "Ring":
                        if (newStateLccs != null)
                        {
                            if (!channels.Contains(newstate.Channel))
                            {
                                channels.Add(newstate.Channel, newstate.CallerId);
                            }
                            newStateLccs[i].callid        = newstate.Channel;
                            newStateLccs[i].remoteState   = Wybecom.TalkPortal.CTI.Proxy.ConnectionState.alerting;
                            newStateLccs[i].state         = Wybecom.TalkPortal.CTI.Proxy.ConnectionState.dialing;
                            newStateLccs[i].terminalState = TerminalState.inuse;
                        }
                        break;
                    }
                }
                catch (Exception stateException)
                {
                    log.Debug("NewState exception: " + stateException.Message);
                }
                if (newstateLc != null)
                {
                    newstateLc.lineControlConnection = newStateLccs;
                    ss.SetLineControl(newstateLc);
                }
                break;

            case "OriginateResponseEvent":
                OriginateResponseEvent originateresponse = e as OriginateResponseEvent;
                break;

            case "ParkedCallEvent":
                ParkedCallEvent parkedcall = e as ParkedCallEvent;
                break;

            case "ParkedCallGiveUpEvent":
                ParkedCallGiveUpEvent parkedcallgiveup = e as ParkedCallGiveUpEvent;
                break;

            case "ParkedCallsCompleteEvent":
                ParkedCallsCompleteEvent parkedcallscomplete = e as ParkedCallsCompleteEvent;
                break;

            case "ParkedCallTimeOutEvent":
                ParkedCallTimeOutEvent parkedcalltimeout = e as ParkedCallTimeOutEvent;
                break;

            case "PeerEntryEvent":
                log.Debug("SipAction: one peer entry event received, " + e.ToString());
                PeerEntryEvent peerentry = e as PeerEntryEvent;
                peers.Add(peerentry);
                ss.SetLineControl(getLineControlFromPeerEntry(peerentry));
                break;

            case "PeerlistCompleteEvent":
                log.Debug("SipAction: peer list completed " + e.ToString());
                PeerlistCompleteEvent peerlistcomplete = e as PeerlistCompleteEvent;
                acs.setPeers(peers);
                break;

            case "PeerStatusEvent":
                PeerStatusEvent peerstatus = e as PeerStatusEvent;
                log.Debug("Peer status: " + peerstatus.ToString());
                break;

            case "PRIEvent":
                PRIEvent pri = e as PRIEvent;
                break;

            case "RegistryEvent":
                RegistryEvent registry = e as RegistryEvent;
                break;

            case "ReloadEvent":
                ReloadEvent reload = e as ReloadEvent;
                break;

            case "RenameEvent":
                RenameEvent rename = e as RenameEvent;
                break;

            case "ResponseEvent":
                ResponseEvent response = e as ResponseEvent;
                break;

            case "RTCPReceivedEvent":
                RTCPReceivedEvent rtcpreceived = e as RTCPReceivedEvent;
                break;

            case "RTCPSentEvent":
                RTCPSentEvent rtcpsent = e as RTCPSentEvent;
                break;

            case "RTPReceiverStatEvent":
                RTPReceiverStatEvent rtpreceiver = e as RTPReceiverStatEvent;
                break;

            case "RTPSenderStatEvent":
                RTPSenderStatEvent rtpsender = e as RTPSenderStatEvent;
                break;

            case "ShowDialPlanCompleteEvent":
                ShowDialPlanCompleteEvent showdialplan = e as ShowDialPlanCompleteEvent;
                break;

            case "ShutdownEvent":
                ShutdownEvent shutdown = e as ShutdownEvent;
                break;

            case "StatusCompleteEvent":
                StatusCompleteEvent statuscomplete = e as StatusCompleteEvent;
                break;

            case "StatusEvent":
                StatusEvent status = e as StatusEvent;
                break;

            case "TransferEvent":
                TransferEvent transfer = e as TransferEvent;
                break;

            case "UnholdEvent":
                UnholdEvent unhold = e as UnholdEvent;
                break;

            case "UnknownEvent":
                UnknownEvent unknown = e as UnknownEvent;
                break;

            case "UnlinkEvent":
                UnlinkEvent unlink = e as UnlinkEvent;
                log.Debug("Unlink event : " + unlink.ToString());
                LineControlConnection[] lccs = null;
                i  = 0;
                lc = getLineControl(unlink.CallerId1);
                if (lc != null)
                {
                    if (lc.lineControlConnection.Length > 1)
                    {
                        lccs = new LineControlConnection[lc.lineControlConnection.Length - 1];
                        foreach (LineControlConnection linklcc in lc.lineControlConnection)
                        {
                            if (linklcc.callid != unlink.Channel1)
                            {
                                lccs[i] = linklcc;
                                i++;
                                break;
                            }
                        }
                    }
                    else
                    {
                        lc.lineControlConnection = null;
                    }
                    ss.SetLineControl(lc);
                }
                i  = 0;
                lc = getLineControl(unlink.CallerId2);
                if (lc != null)
                {
                    if (lc.lineControlConnection.Length > 1)
                    {
                        lccs = new LineControlConnection[lc.lineControlConnection.Length - 1];
                        foreach (LineControlConnection linklcc in lc.lineControlConnection)
                        {
                            if (linklcc.callid != unlink.Channel2)
                            {
                                lccs[i] = linklcc;
                                i++;
                                break;
                            }
                        }
                    }
                    else
                    {
                        lc.lineControlConnection = null;
                    }
                    ss.SetLineControl(lc);
                }
                break;

            case "UnparkedCallEvent":
                UnparkedCallEvent unparked = e as UnparkedCallEvent;
                break;

            case "UserEvent":
                UserEvent user = e as UserEvent;
                break;

            case "VarSetEvent":
                VarSetEvent varset = e as VarSetEvent;
                break;

            case "ZapShowChannelsCompleteEvent":
                ZapShowChannelsCompleteEvent zapshowchannelscomplete = e as ZapShowChannelsCompleteEvent;
                break;

            case "ZapShowChannelsEvent":
                ZapShowChannelsEvent zapshowchannels = e as ZapShowChannelsEvent;
                break;
            }
            //ACDConnector
            switch (e.GetType().Name)
            {
            case "AgentCallbackLoginEvent":
                AgentCallbackLoginEvent agentcallbacklogin = e as AgentCallbackLoginEvent;
                break;

            case "AgentCallbackLogoffEvent":
                AgentCallbackLogoffEvent agentcallbacklogoff = e as AgentCallbackLogoffEvent;
                break;

            case "AgentCalledEvent":
                AgentCalledEvent agentcalled = e as AgentCalledEvent;
                break;

            case "AgentCompleteEvent":
                AgentCompleteEvent agentcomplete = e as AgentCompleteEvent;
                break;

            case "AgentConnectEvent":
                AgentConnectEvent agentconnect = e as AgentConnectEvent;
                break;

            case "AgentDumpEvent":
                AgentDumpEvent agentdump = e as AgentDumpEvent;
                break;

            case "AgentLoginEvent":
                AgentLoginEvent agentlogin = e as AgentLoginEvent;
                break;

            case "AgentLogoffEvent":
                AgentLogoffEvent agentlogoff = e as AgentLogoffEvent;
                break;

            case "AgentsCompleteEvent":
                AgentsCompleteEvent agentscomplete = e as AgentsCompleteEvent;
                break;

            case "AgentsEvent":
                AgentsEvent agentevent = e as AgentsEvent;
                break;

            case "QueueCallerAbandonEvent":
                QueueCallerAbandonEvent queuecallerabandon = e as QueueCallerAbandonEvent;
                break;

            case "QueueEntryEvent":
                QueueEntryEvent queueentry = e as QueueEntryEvent;
                break;

            case "QueueEvent":
                QueueEvent queue = e as QueueEvent;
                break;

            case "QueueMemberEvent":
                QueueMemberEvent queuemember = e as QueueMemberEvent;
                break;

            case "QueueMemberPausedEvent":
                QueueMemberPausedEvent queuememberpaused = e as QueueMemberPausedEvent;
                break;

            case "QueueMemberPenaltyEvent":
                QueueMemberPenaltyEvent queuememberpenalty = e as QueueMemberPenaltyEvent;
                break;

            case "QueueMemberRemovedEvent":
                QueueMemberRemovedEvent queuememberremoved = e as QueueMemberRemovedEvent;
                break;

            case "QueueMemberStatusEvent":
                QueueMemberStatusEvent queuememberstatus = e as QueueMemberStatusEvent;
                break;

            case "QueueParamsEvent":
                QueueParamsEvent queueparams = e as QueueParamsEvent;
                break;

            case "QueueStatusCompleteEvent":
                QueueStatusCompleteEvent queuestatuscomplete = e as QueueStatusCompleteEvent;
                break;
            }
        }
Beispiel #17
0
        /// <summary>
        /// 解析报警数据
        /// </summary>
        /// <param name="deviceIp">设备ip</param>
        /// <param name="msg">结构数据</param>
        public static void AnalysisAlarmData(string deviceIp, HYAlarmData.MsgStrut msg)
        {
            try
            {
                if (msg.XmlData == "" || msg.XmlData == "null")
                {
                    return;
                }
                switch (msg.AlarmType)
                {
                case HYAlarmData.XmlType.AlarmEventMsg:
                    AlarmEvent?.Invoke(deviceIp, SuperFramework.SuperConfig.Xml.XmlSerialization.XmlDeserialize <AlarmEventMsg>(msg.XmlData));
                    break;

                case HYAlarmData.XmlType.XMLLayoutMessage:
                    TrackEvent?.Invoke(deviceIp, SuperFramework.SuperConfig.Xml.XmlSerialization.XmlDeserialize <XMLLayoutMessage>(msg.XmlData));
                    break;

                case HYAlarmData.XmlType.CountingEventMsg:
                    PersonEvent?.Invoke(deviceIp, SuperFramework.SuperConfig.Xml.XmlSerialization.XmlDeserialize <CountingEventMsg>(msg.XmlData));
                    break;
                }
            }
            catch (Exception) { }

            //string str;
            //int offset = 0;

            //GetObjectData(buffer);
            //if (GetSync())
            //{
            //    offset = 0;
            //    if (GetMsgLength() > 0)
            //    {
            //        goto Label_00B7;
            //    }
            //}
            //return ;
            //Label_0095:
            ////offset += Sock.Receive(buffer, offset, header.GetMsgLength() - 12 - offset, SocketFlags.None);

            //if (offset >= GetMsgLength() - 12)
            //    goto Label_00C9;
            //else
            //    goto Label_00B7;
            //Label_00B7:
            //if (offset < GetMsgLength())
            //    goto Label_0095;
            //Label_00C9:
            //str = Encoding.ASCII.GetString(buffer, 0, GetMsgLength() - 12);
            ////return .SuperConfig.Xml.XmlSerialization.XmlDeserialize<AlarmData>(str);
            //XmlDocument document = new XmlDocument();
            //document.LoadXml(str);
            //string localName = document.DocumentElement.LocalName;
            //object[] args = new object[2];
            //args[0] = str;
            //args[1] = localName;

            ////    base.Invoke(new dlgt_RefreshGui(this.RefreshGui), args);
            ////}
        }
Beispiel #18
0
        private static void RunClient(string clientId, string server)
        {
            /* create the client instance */
            client = new MqttClient(server);

            /* register handler for connectio closed event */
            client.ConnectionClosed += ConnectionClosed;

            client.MqttMsgPublishReceived += (sender, eventArgs) =>
            {
                ApplicationMessageReceived(sender, eventArgs);
            };
            /* connect to the server */
            var connectClient = new Task(() => Connect(false));

            connectClient.Start();

            while (!cancel.IsCancellationRequested)
            {
                try
                {
                    Console.WriteLine("1 = Send time series messages");
                    Console.WriteLine("2 = send alarm {0} message", alarmOnOff ? "off" : "on");
                    Console.WriteLine("3 = send a state changed message");
                    Console.WriteLine("4 = send a sample set message");
                    Console.WriteLine("5 = send a compressed container");
                    Console.WriteLine("6 = send available sensors");
                    Console.WriteLine("7 = Subscribe Transmit lists");
                    Console.WriteLine("Q = quit");
                    var pressedKey = Console.ReadKey(true);
                    if (pressedKey.Key == ConsoleKey.Q)
                    {
                        cancel.Cancel();
                        if (client.IsConnected)
                        {
                            Console.WriteLine("### Disconnecting from server ###");
                            client.Disconnect();
                        }
                        Console.WriteLine("### Done, press any key to continue ###");
                        Console.ReadKey(true);
                        continue;
                    }

                    if (!client.IsConnected)
                    {
                        Console.WriteLine("### Not Connected to the server, try again later ### ");
                        continue;
                    }

                    /* send timeseries doubles messages (a sinus periode) */
                    if (pressedKey.Key == ConsoleKey.D1)
                    {
                        double i;
                        for (i = 0.0; i < 360.0; i++)
                        {
                            DateTimeOffset time = DateTimeOffset.Now.AddYears(0);

                            TimeseriesDoublesReplicationMessage tds = new TimeseriesDoublesReplicationMessage("TimeSeries01", "source1", time, Math.Sin(Math.PI / 180 * i));
                            var messageWrpper = tds.ToMessageWrapper();
                            client.Publish(Topics.CloudBound, messageWrpper.ToByteArray(), GetQualityOfService(ConfigurationManager.AppSettings["qualityofservice"]), false);
                            var delay = Delay(800);
                            delay.Wait();
                        }
                        Console.WriteLine("Sent time series messages");
                    }

                    /* send alarm event messages, toggles the alarm on/off */
                    if (pressedKey.Key == ConsoleKey.D2)
                    {
                        AlarmStateType alarmState;
                        alarmOnOff = !alarmOnOff;

                        if (alarmOnOff)
                        {
                            alarmState = AlarmStateType.AlarmState;
                        }
                        else
                        {
                            alarmState = AlarmStateType.NormalState;
                        }

                        var alarm = new AlarmReplicationMessage
                        {
                            SensorId = "Alarm01"
                        };
                        AlarmEvent aEv = new AlarmEvent(
                            DateTime.UtcNow,
                            AlarmLevelType.EmergencyLevel,
                            alarmState,
                            "Info level, Normal state");
                        alarm.AlarmEvents.Add(aEv);
                        var messageWrapper = alarm.ToMessageWrapper();
                        client.Publish(Topics.CloudBound, messageWrapper.ToByteArray(), GetQualityOfService(ConfigurationManager.AppSettings["qualityofservice"]), false);
                        var delay = Delay(10);
                        delay.Wait();
                        Console.WriteLine("Sent alarm message");
                    }

                    /* send state change event messages */
                    if (pressedKey.Key == ConsoleKey.D3)
                    {
                        state %= 5;
                        var stateChanged = new StateChangeReplicationMessage()
                        {
                            SensorId = "StateChangeEvent01",
                        };
                        var sEv = new StateChange(
                            DateTime.UtcNow,
                            "Donald Duck",
                            true,
                            state);
                        stateChanged.StateChanges.Add(sEv);
                        var messageWrapper = stateChanged.ToMessageWrapper();
                        client.Publish(Topics.CloudBound, messageWrapper.ToByteArray(), GetQualityOfService(ConfigurationManager.AppSettings["qualityofservice"]), false);
                        state++;
                        Console.WriteLine("Sent state change message");
                    }

                    /* send sample set messages, alternates between a sinus/cosinus periode */
                    if (pressedKey.Key == ConsoleKey.D4)
                    {
                        toggleCosSin = !toggleCosSin;
                        /* create a sample set */
                        List <double> samples = new List <double>();
                        double        i;
                        for (i = 0.0; i < 360.0; i++)
                        {
                            int    count = 0;
                            double value;
                            if (toggleCosSin)
                            {
                                value = Math.Sin(Math.PI / 180 * i);
                            }
                            else
                            {
                                value = Math.Cos(Math.PI / 180 * i);
                            }

                            samples.Add(value);
                            count++;
                        }

                        DataframeColumn dataframeColumn = new DataframeColumn(samples);
                        DataframeEvent  dataFrame       = new DataframeEvent(DateTimeOffset.UtcNow, dataframeColumn);

                        DataframeReplicationMessage samplesetReplicationMessage = new DataframeReplicationMessage("SampleSet01", "SampleSet01", dataFrame);
                        var messageWrapper = samplesetReplicationMessage.ToMessageWrapper();
                        client.Publish(Topics.CloudBound, messageWrapper.ToByteArray(), GetQualityOfService(ConfigurationManager.AppSettings["qualityofservice"]), false);
                        Console.WriteLine("Sent sample set message");
                    }

                    /* send a compressed container consisting of time series,
                     * alarm, state changes and sample set
                     */
                    if (pressedKey.Key == ConsoleKey.D5)
                    {
                        int          i;
                        MessageArray array = new MessageArray();

                        /* add some timeseries messages */
                        for (i = 0; i < 10; i++)
                        {
                            DateTimeOffset time = DateTimeOffset.UtcNow;

                            TimeseriesDoublesReplicationMessage tds = new TimeseriesDoublesReplicationMessage("TimeSeries01", "TimeSeries01", time, i + 1);
                            array.Messages.Add(tds.ToMessageWrapper());
                            var delay = Delay(10);
                            delay.Wait();
                        }

                        /* add some state change event messages */
                        bool manOverride  = true;
                        var  stateChanged = new StateChangeReplicationMessage
                        {
                            SensorId = "StateChangeEvent01",
                        };
                        for (i = 0; i < 10; i++)
                        {
                            manOverride = !manOverride;
                            var sEv = new StateChange(
                                DateTime.UtcNow,
                                "Donald Duck",
                                manOverride,
                                (uint)i + 1);
                            stateChanged.StateChanges.Add(sEv);
                            var delay = Delay(10);
                            delay.Wait();
                        }
                        array.Messages.Add(stateChanged.ToMessageWrapper());

                        /* add some sample set messages */
                        for (i = 0; i < 10; i++)
                        {
                            List <double> samples = new List <double>();
                            for (int j = 0; j < 10; j++)
                            {
                                samples.Add(j);
                            }
                            DataframeColumn             dataframeColumn             = new DataframeColumn(samples);
                            DataframeEvent              dataFrame                   = new DataframeEvent(DateTimeOffset.UtcNow, dataframeColumn);
                            DataframeReplicationMessage samplesetReplicationMessage = new DataframeReplicationMessage("SampleSet01", "SampleSet01", dataFrame);
                            array.Messages.Add(samplesetReplicationMessage.ToMessageWrapper());
                            var delay = Delay(10);
                            delay.Wait();
                        }

                        /* add some alarm event messages */
                        alarmOnOff = false;
                        for (i = 0; i < 10; i++)
                        {
                            Kognifai.Serialization.AlarmStateType alarmState;
                            alarmOnOff = !alarmOnOff;
                            alarmState = alarmOnOff ? AlarmStateType.AlarmState : AlarmStateType.NormalState;

                            var alarm = new AlarmReplicationMessage
                            {
                                SensorId = "Alarm01",
                            };
                            AlarmEvent aEv = new AlarmEvent(
                                DateTime.UtcNow,
                                AlarmLevelType.EmergencyLevel,
                                alarmState,
                                "Info level, Normal state");
                            alarm.AlarmEvents.Add(aEv);
                            array.Messages.Add(alarm.ToMessageWrapper());
                            var delay = Delay(10);
                            delay.Wait();
                        }
                        MessageArrayContainer container = new MessageArrayContainer("", array, true);
                        client.Publish(Topics.CloudBoundContainer, container.ToByteArray(), GetQualityOfService(ConfigurationManager.AppSettings["qualityofservice"]), false);

                        Console.WriteLine("Sent cloudBoundContainer messages");
                    }


                    /*send available sensors
                     * Place your avaialablesensor.csv file under GatewayConfigurationFiles folder
                     */
                    if (pressedKey.Key == ConsoleKey.D6)
                    {
                        var    applicationPath = AppDomain.CurrentDomain.BaseDirectory;
                        string filePath        = Path.Combine(applicationPath, "GatewayConfigurationFiles", "availablesensorlist.csv");

                        RemoteSourceAvailableSensors availableSensors = new RemoteSourceAvailableSensors()
                        {
                            EventType = EventType.SensorDataEventType,
                            SourceId  = "source1"
                        };

#if NET_FRAMEWORK40
                        var            availableSensorsList = AvailableSensor.GetAvailableSensors(availableSensors.SourceId, EventType.SensorDataEventType, filePath);
                        MessageWrapper messageWrapper       = new MessageWrapper();
                        messageWrapper.SubprotocolNumber      = (int)KnownSubprotocols.EdgeGatewayProtocol;
                        messageWrapper.SubprotocolMessageType = (int)EdgeGatewayMessageType.RemoteSourceAvailableSensorsMessageType;
                        availableSensors.Sensors.AddRange(availableSensorsList.Sensors);
                        using (MemoryStream ms = new MemoryStream())
                        {
                            Serializer.Serialize(ms, availableSensors);
                            messageWrapper.MessageBytes = ms.ToArray();
                        }
#else
                        MessageWrapper messageWrapper = AvailableSensor.GetAvailableSensors(availableSensors.SourceId, EventType.SensorDataEventType, filePath);
#endif

                        client.Publish(Topics.AvailableSensorList, messageWrapper.ToByteArray(), GetQualityOfService(ConfigurationManager.AppSettings["qualityofservice"]), false);
                        Console.WriteLine("Published available sensor list");
                    }

                    if (pressedKey.Key == ConsoleKey.D7)
                    {
                        var    applicationPath = AppDomain.CurrentDomain.BaseDirectory;
                        string filePath        = Path.Combine(applicationPath, "GatewayConfigurationFiles", "availablesensorlist.csv");

                        RemoteSourceRequestConfiguredSensors message = new RemoteSourceRequestConfiguredSensors()
                        {
                            EventType = EventType.SensorDataEventType,
                            SourceId  = "source1"
                        };

                        client.Subscribe(new[] { Topics.TransmitLists }, new[] { GetQualityOfService(ConfigurationManager.AppSettings["qualityofservice"]) });

#if NET_FRAMEWORK40
                        MessageWrapper messageWrapper = new MessageWrapper();
                        messageWrapper.SubprotocolNumber      = (int)KnownSubprotocols.EdgeGatewayProtocol;
                        messageWrapper.SubprotocolMessageType = (int)EdgeGatewayMessageType.RemoteSourceRequestConfiguredSensorsMessageType;
                        using (MemoryStream ms = new MemoryStream())
                        {
                            Serializer.Serialize(ms, message);
                            messageWrapper.MessageBytes = ms.ToArray();
                        }
#else
                        var messageWrapper = message.ToMessageWrapper();
#endif
                        client.Publish(Topics.SensorDataTransmitList, messageWrapper.ToByteArray(), GetQualityOfService(ConfigurationManager.AppSettings["qualityofservice"]), false);
                        Console.WriteLine("Published sensor transmit list");
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine("Error: " + e.Message);
                }
            }
            cancel.Dispose();
        }
Beispiel #19
0
 public static void SendAlarm()
 {
     AlarmEvent?.Invoke("ALARM");
 }
Beispiel #20
0
        private static void RunClient(string clientId, string server)
        {
            /* create the client instance */
            client = new MqttClient(server);

            /* register handler for connectio closed event */
            client.ConnectionClosed += ConnectionClosed;

            /* connect to the server */
            var connectClient = new Task(() => Connect(false));

            connectClient.Start();

            while (!cancel.IsCancellationRequested)
            {
                try
                {
                    Console.WriteLine("1 = Send time series messages");
                    Console.WriteLine("2 = send alarm {0} message", alarmOnOff ? "off" : "on");
                    Console.WriteLine("3 = send a state changed message");
                    Console.WriteLine("4 = send a sample set message");
                    Console.WriteLine("5 = send a compressed container");
                    Console.WriteLine("6 = send available sensors");
                    Console.WriteLine("Q = quit");
                    var pressedKey = Console.ReadKey(true);
                    if (pressedKey.Key == ConsoleKey.Q)
                    {
                        cancel.Cancel();
                        if (client.IsConnected)
                        {
                            Console.WriteLine("### Disconnecting from server ###");
                            client.Disconnect();
                        }
                        Console.WriteLine("### Done, press any key to continue ###");
                        Console.ReadKey(true);
                        continue;
                    }

                    if (!client.IsConnected)
                    {
                        Console.WriteLine("### Not Connected to the server, try again later ### ");
                        continue;
                    }

                    /* send timeseries doubles messages (a sinus periode) */
                    if (pressedKey.Key == ConsoleKey.D1)
                    {
                        double i;
                        for (i = 0.0; i < 360.0; i++)
                        {
                            DateTimeOffset time = DateTimeOffset.Now.AddYears(0);

                            TimeseriesDoublesReplicationMessage tds = new TimeseriesDoublesReplicationMessage("TimeSeries01", time, Math.Sin(Math.PI / 180 * i));
                            var messageWrpper = tds.ToMessageWrapper();
                            client.Publish(Topics.CloudBound, messageWrpper.ToByteArray(), MqttMsgBase.QOS_LEVEL_AT_LEAST_ONCE, false);
                            var delay = Delay(1);
                            delay.Wait();
                        }
                    }

                    /* send alarm event messages, toggles the alarm on/off */
                    if (pressedKey.Key == ConsoleKey.D2)
                    {
                        AlarmStateType alarmState;
                        alarmOnOff = !alarmOnOff;

                        if (alarmOnOff)
                        {
                            alarmState = AlarmStateType.AlarmState;
                        }
                        else
                        {
                            alarmState = AlarmStateType.NormalState;
                        }

                        var alarm = new AlarmReplicationMessage
                        {
                            ExternalId = "Alarm01"
                        };
                        AlarmEvent aEv = new AlarmEvent(
                            DateTime.UtcNow,
                            AlarmLevelType.EmergencyLevel,
                            alarmState,
                            "Info level, Normal state");
                        alarm.AlarmEvents.Add(aEv);
                        var messageWrapper = alarm.ToMessageWrapper();
                        client.Publish(Topics.CloudBound, messageWrapper.ToByteArray(), MqttMsgBase.QOS_LEVEL_AT_LEAST_ONCE, false);
                        var delay = Delay(10);
                        delay.Wait();
                    }

                    /* send state change event messages */
                    if (pressedKey.Key == ConsoleKey.D3)
                    {
                        state %= 5;
                        var stateChanged = new StateChangeReplicationMessage()
                        {
                            ExternalId = "StateChangeEvent01",
                        };
                        var sEv = new StateChange(
                            DateTime.UtcNow,
                            "Donald Duck",
                            true,
                            state);
                        stateChanged.StateChanges.Add(sEv);
                        var messageWrapper = stateChanged.ToMessageWrapper();
                        client.Publish(Topics.CloudBound, messageWrapper.ToByteArray(), MqttMsgBase.QOS_LEVEL_AT_LEAST_ONCE, false);
                        state++;
                    }

                    /* send sample set messages, alternates between a sinus/cosinus periode */
                    if (pressedKey.Key == ConsoleKey.D4)
                    {
                        toggleCosSin = !toggleCosSin;
                        /* create a sample set */
                        List <double> samples = new List <double>();
                        double        i;
                        for (i = 0.0; i < 360.0; i++)
                        {
                            int    count = 0;
                            double value;
                            if (toggleCosSin)
                            {
                                value = Math.Sin(Math.PI / 180 * i);
                            }
                            else
                            {
                                value = Math.Cos(Math.PI / 180 * i);
                            }
                            samples.Add(value);
                            count++;
                        }

                        DataframeColumn dataframeColumn = new DataframeColumn(samples);
                        DataframeEvent  dataFrame       = new DataframeEvent(DateTimeOffset.UtcNow, dataframeColumn);

                        DataframeReplicationMessage samplesetReplicationMessage = new DataframeReplicationMessage("SampleSet01", dataFrame);
                        var messageWrapper = samplesetReplicationMessage.ToMessageWrapper();
                        client.Publish(Topics.CloudBound, messageWrapper.ToByteArray(), MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE, false);
                    }

                    /* send a compressed container consisting of time series,
                     * alarm, state changes and sample set
                     */
                    if (pressedKey.Key == ConsoleKey.D5)
                    {
                        int          i;
                        MessageArray array = new MessageArray();

                        /* add some timeseries messages */
                        for (i = 0; i < 10; i++)
                        {
                            DateTimeOffset time = DateTimeOffset.UtcNow;

                            TimeseriesDoublesReplicationMessage tds = new TimeseriesDoublesReplicationMessage("TimeSeries01", time, i + 1);
                            array.Messages.Add(tds.ToMessageWrapper());
                            var delay = Delay(10);
                            delay.Wait();
                        }

                        /* add some state change event messages */
                        bool manOverride  = true;
                        var  stateChanged = new StateChangeReplicationMessage
                        {
                            ExternalId = "StateChangeEvent01",
                        };
                        for (i = 0; i < 10; i++)
                        {
                            manOverride = !manOverride;
                            var sEv = new StateChange(
                                DateTime.UtcNow,
                                "Donald Duck",
                                manOverride,
                                (uint)i + 1);
                            stateChanged.StateChanges.Add(sEv);
                            var delay = Delay(10);
                            delay.Wait();
                        }
                        array.Messages.Add(stateChanged.ToMessageWrapper());

                        /* add some sample set messages */
                        for (i = 0; i < 10; i++)
                        {
                            List <double> samples = new List <double>();
                            for (int j = 0; j < 10; j++)
                            {
                                samples.Add(j);
                            }
                            DataframeColumn             dataframeColumn             = new DataframeColumn(samples);
                            DataframeEvent              dataFrame                   = new DataframeEvent(DateTimeOffset.UtcNow, dataframeColumn);
                            DataframeReplicationMessage samplesetReplicationMessage = new DataframeReplicationMessage("SampleSet01", dataFrame);
                            array.Messages.Add(samplesetReplicationMessage.ToMessageWrapper());
                            var delay = Delay(10);
                            delay.Wait();
                        }

                        /* add some alarm event messages */
                        alarmOnOff = false;
                        for (i = 0; i < 10; i++)
                        {
                            Kognifai.Serialization.AlarmStateType alarmState;
                            alarmOnOff = !alarmOnOff;
                            alarmState = alarmOnOff ? AlarmStateType.AlarmState : AlarmStateType.NormalState;

                            var alarm = new AlarmReplicationMessage
                            {
                                ExternalId = "Alarm01",
                            };
                            AlarmEvent aEv = new AlarmEvent(
                                DateTime.UtcNow,
                                AlarmLevelType.EmergencyLevel,
                                alarmState,
                                "Info level, Normal state");
                            alarm.AlarmEvents.Add(aEv);
                            array.Messages.Add(alarm.ToMessageWrapper());
                            var delay = Delay(10);
                            delay.Wait();
                        }
                        MessageArrayContainer container = new MessageArrayContainer("", array, true);
                        client.Publish(Topics.CloudBoundContainer, container.ToByteArray(), MqttMsgBase.QOS_LEVEL_AT_LEAST_ONCE, false);
                    }


                    /*send available sensors
                     * Place your avaialablesensor.csv file under GatewayConfigurationFiles folder
                     */
                    if (pressedKey.Key == ConsoleKey.D6)
                    {
                        var sensors = CsvFileReader.ReadDataFromCsvFile("..\\GatewayConfigurationFiles\\availablesensorlist.csv");
                        AvailableSensorListReplicationMessage availableSensors = new AvailableSensorListReplicationMessage();
                        availableSensors.ConnectorType = "Mqtt";
                        availableSensors.SourceName    = "source1";
                        availableSensors.Sensors.AddRange(sensors);
                        var messageWrapper = availableSensors.ToMessageWrapper();
                        client.Publish(Topics.AvaialableSensorList, messageWrapper.ToByteArray(), MqttMsgBase.QOS_LEVEL_EXACTLY_ONCE, false);
                        Console.WriteLine("Published available sensor list");
                    }
                }
                catch (Exception e)
                {
                    Console.WriteLine("Error: " + e.Message);
                }
            }
            cancel.Dispose();
        }
Beispiel #21
0
        public static string Update(TAcceptEvent entity)
        {
            using (MainDataContext dbContext = new MainDataContext(AppConfig.ConnectionStringDispatch))
            {
                try
                {
                    TAcceptEvent model = dbContext.TAcceptEvent.FirstOrDefault(t => t.事件编码 == entity.事件编码 && t.受理序号 == entity.受理序号);


                    if (m_ModifyAcceptTypeDic == null)
                    {
                        m_ModifyAcceptTypeDic = new Dictionary <string, int>();

                        //后台根据设置是否可以更改

                        List <Anchor.FA.Model.TParameterAcceptInfo> tpaLs = AlarmEvent.LoadParameterAcceptInfo().Where(t => t.是否可见 == true).ToList();

                        //对应表 TModifyRecord 要在TModifyRecord有 MPDS备注

                        if (IfAllowUpdate("label_AlarmReason", tpaLs))
                        {
                            m_ModifyAcceptTypeDic.Add("主诉", 19);//主诉(呼救原因)
                        }
                        if (IfAllowUpdate("label_PatientName", tpaLs))
                        {
                            m_ModifyAcceptTypeDic.Add("患者姓名", 14);//患者姓名
                        }
                        if (IfAllowUpdate("label_Sex", tpaLs))
                        {
                            m_ModifyAcceptTypeDic.Add("性别", 15);//性别
                        }
                        if (IfAllowUpdate("label_Age", tpaLs))
                        {
                            m_ModifyAcceptTypeDic.Add("年龄", 16);//年龄
                        }
                        if (IfAllowUpdate("label_National", tpaLs))
                        {
                            m_ModifyAcceptTypeDic.Add("国籍", 18);//国籍
                        }
                        if (IfAllowUpdate("label_Folk", tpaLs))
                        {
                            m_ModifyAcceptTypeDic.Add("民族", 17);//民族
                        }
                        if (IfAllowUpdate("label_Judge", tpaLs))
                        {
                            m_ModifyAcceptTypeDic.Add("病种判断", 20);//病种判断
                        }
                        if (IfAllowUpdate("label_LinkMan", tpaLs))
                        {
                            m_ModifyAcceptTypeDic.Add("联系人", 11);//联系人
                        }
                        if (IfAllowUpdate("label_LinkTel", tpaLs))
                        {
                            m_ModifyAcceptTypeDic.Add("联系电话", 12);//联系电话
                        }
                        if (IfAllowUpdate("label_Extension", tpaLs))
                        {
                            m_ModifyAcceptTypeDic.Add("分机", 13);//分机
                        }
                        if (IfAllowUpdate("label_LocalAddr", tpaLs))
                        {
                            m_ModifyAcceptTypeDic.Add("现场地址", 6);//现场地址
                        }
                        if (IfAllowUpdate("label_WaitAddr", tpaLs))
                        {
                            m_ModifyAcceptTypeDic.Add("等车地址", 7);//等车地址
                        }
                        if (IfAllowUpdate("label_SendAddr", tpaLs))
                        {
                            m_ModifyAcceptTypeDic.Add("送往地点", 8);//送往地点
                        }
                        if (IfAllowUpdate("label_Remark", tpaLs))
                        {
                            m_ModifyAcceptTypeDic.Add("备注", 27);//备注
                        }
                        if (IfAllowUpdate("label_IllState", tpaLs))
                        {
                            m_ModifyAcceptTypeDic.Add("病情编码", 21);//
                        }
                        if (IfAllowUpdate("label_LocalAddrType", tpaLs))
                        {
                            m_ModifyAcceptTypeDic.Add("往救地点类型编码", 9);//
                        }
                        if (IfAllowUpdate("label_SendAddrType", tpaLs))
                        {
                            m_ModifyAcceptTypeDic.Add("送往地点类型编码", 10);//
                        }
                        if (IfAllowUpdate("label_PatientCount", tpaLs))
                        {
                            m_ModifyAcceptTypeDic.Add("患者人数", 23);//
                        }
                        if (IfAllowUpdate("label_SpecialNeed", tpaLs))
                        {
                            m_ModifyAcceptTypeDic.Add("特殊要求", 24);//
                        }
                        if (IfAllowUpdate("label_Reserve1", tpaLs))
                        {
                            m_ModifyAcceptTypeDic.Add("保留字段1", 25);//
                        }
                        if (IfAllowUpdate("label_Reserve2", tpaLs))
                        {
                            m_ModifyAcceptTypeDic.Add("保留字段2", 26);//
                        }
                        if (IfAllowUpdate("label_Mpds", tpaLs))
                        {
                            m_ModifyAcceptTypeDic.Add("MPDS备注", 30); //MPDS备注
                        }
                        m_ModifyAcceptTypeDic.Add("是否需要担架", 22);     //是否需要担架


                        //m_ModifyAcceptTypeDic.Add("LocalAddr", 6);//现场地址
                        //m_ModifyAcceptTypeDic.Add("WaitAddr", 7);//等车地址
                        //m_ModifyAcceptTypeDic.Add("SendAddr", 8);//送往地点
                        //m_ModifyAcceptTypeDic.Add("LocalAddrTypeId", 9);//
                        //m_ModifyAcceptTypeDic.Add("SendAddrTypeId", 10);//
                        //m_ModifyAcceptTypeDic.Add("LinkMan", 11);//联系人
                        //m_ModifyAcceptTypeDic.Add("LinkTel", 12);//联系电话
                        //m_ModifyAcceptTypeDic.Add("Extension", 13);//分机
                        //m_ModifyAcceptTypeDic.Add("PatientName", 14);//患者姓名
                        //m_ModifyAcceptTypeDic.Add("Sex", 15);//性别
                        //m_ModifyAcceptTypeDic.Add("Age", 16);//年龄
                        //m_ModifyAcceptTypeDic.Add("Folk", 17);//民族
                        //m_ModifyAcceptTypeDic.Add("National", 18);//国籍
                        //m_ModifyAcceptTypeDic.Add("AlarmReason", 19);//主诉(呼救原因)
                        //m_ModifyAcceptTypeDic.Add("Judge", 20);//病种判断
                        //m_ModifyAcceptTypeDic.Add("IllStateId", 21);//
                        //m_ModifyAcceptTypeDic.Add("IsNeedLitter", 22);//是否需要担架
                        //m_ModifyAcceptTypeDic.Add("PatientCount", 23);//
                        //m_ModifyAcceptTypeDic.Add("SpecialNeed", 24);//
                        //m_ModifyAcceptTypeDic.Add("BackUpOne", 25);//
                        //m_ModifyAcceptTypeDic.Add("BackUpTwo", 26);//
                        //m_ModifyAcceptTypeDic.Add("Remark", 27);//备注
                    }
                    //List<TModifyRecord> mriList = new List<TModifyRecord>();
                    //获得所有property的信息
                    PropertyInfo[] properties        = model.GetType().GetProperties();
                    C_WorkerDetail CWD               = Anchor.FA.DAL.Organize.Worker.GetWorkerDetailById(Convert.ToInt32(entity.责任受理人编码));//使用 责任受理人编码 来存储操作员编码
                    string         OperatePersonCode = CWD.PersonCode.FirstOrDefault();
                    //string OperatePersonCode = Task.LoadWorkerRole(Convert.ToInt32(entity.责任受理人编码)).EmpNo;
                    //string OperatePersonCode = entity.责任受理人编码;



                    foreach (PropertyInfo p in properties)
                    {
                        int typeId = -1;
                        if (m_ModifyAcceptTypeDic.TryGetValue(p.Name, out typeId)) //如果需要修改
                        {
                            object oldObj = p.GetValue(model, null);
                            object newObj = p.GetValue(entity, null);
                            if (!object.Equals(oldObj, newObj))
                            {
                                p.SetValue(model, newObj, null);
                                TModifyRecord mri = new TModifyRecord();
                                mri.编码     = Guid.NewGuid();
                                mri.修改后内容  = newObj == null ? "" : newObj.ToString(); //
                                mri.修改前内容  = oldObj == null ? "" : oldObj.ToString(); //
                                mri.产生时刻   = DateTime.Now;
                                mri.操作员编码  = OperatePersonCode;
                                mri.修改类型编码 = typeId;
                                mri.事件编码   = entity.事件编码;
                                mri.受理序号   = entity.受理序号;
                                //ModifyRecordInfo mri = new ModifyRecordInfo();
                                //mri.Code = Guid.NewGuid();
                                //mri.NewContent = newObj == null ? "" : newObj.ToString();//2011-02-14 如果是null就费了。
                                //mri.OriginContent = oldObj == null ? "" : oldObj.ToString();//2011-02-14 如果是null就费了。
                                //mri.OperateTime = DateTime.Now;
                                //mri.OperatorCode = operatorCode;
                                //mri.TypeId = typeId;
                                //mri.EventCode = originInfo.EventCode;
                                //mriList.Add(mri);

                                dbContext.TModifyRecord.InsertOnSubmit(mri);
                            }
                        }
                    }



                    //model.主诉 = entity.主诉;
                    //model.患者姓名    =  entity.患者姓名    ;
                    //model.性别        =  entity.性别        ;
                    //model.年龄        =  entity.年龄        ;
                    //model.国籍        =  entity.国籍        ;
                    //model.民族        =  entity.民族        ;
                    //model.病种判断    =  entity.病种判断    ;
                    //model.联系人      =  entity.联系人      ;
                    //model.联系电话    =  entity.联系电话    ;
                    //model.分机        =  entity.分机        ;
                    //model.现场地址    =  entity.现场地址    ;
                    //model.等车地址    =  entity.等车地址    ;
                    //model.送往地点    =  entity.送往地点    ;
                    //model.是否需要担架=  entity.是否需要担架;
                    //model.备注        =  entity.备注        ;
                    //ReflectionUtility.CopyObjectProperty<TAcceptEvent>(entity, model);
                    dbContext.SubmitChanges();
                    return("");
                }
                catch (Exception ex)
                {
                    //Log4Net.LogError("", ex.ToString());
                    return(ex.ToString());
                }
            }
        }