예제 #1
0
        private HeartbeatEvent CreateHeartbeatEvent()
        {
            var process = Process.GetCurrentProcess();

            PerformanceCounterDto[] performanceCounterHistory;
            lock (_mutex)
            {
                performanceCounterHistory = _performanceCounterHistory.ToArray();
                _performanceCounterHistory.Clear();
            }

            var heartbeatEvent = new HeartbeatEvent
            {
                Timestamp           = _clock.UtcNow,
                ProcessId           = process.Id,
                ProcessName         = process.ProcessName,
                MachineName         = Environment.MachineName,
                OSVersion           = Environment.OSVersion.VersionString,
                ProcessorCount      = Environment.ProcessorCount,
                StartTime           = new DateTimeOffset(process.StartTime),
                UserProcessorTime   = process.UserProcessorTime,
                TotalProcessorTime  = process.TotalProcessorTime,
                WorkingSet64        = process.WorkingSet64,
                PeakWorkingSet64    = process.PeakWorkingSet64,
                VirtualMemorySize64 = process.VirtualMemorySize64,
                PerformanceCounters = performanceCounterHistory,
            };

            return(heartbeatEvent);
        }
예제 #2
0
        private void OnMavLinkPacketReceived(object sender, MavLinkPacket packet)
        {
            switch (packet.MessageId)
            {
            case (byte)MavlinkMessageID.HEARTBEAT:
            {
                HeartbeatEvent?.Invoke(packet.Message as UasHeartbeat);
                break;
            }

            case (byte)MavlinkMessageID.SYS_STATUS:
            {
                SysStatusEvent?.Invoke(packet.Message as UasSysStatus);
                break;
            }

            case (byte)MavlinkMessageID.GPS_RAW_INT:
            {
                GpsRawIntEvent?.Invoke(packet.Message as UasGpsRawInt);
                break;
            }

            case (byte)MavlinkMessageID.ATTITUDE:
            {
                AttitudeEvent?.Invoke(packet.Message as UasAttitude);
                break;
            }

            case (byte)MavlinkMessageID.LOCAL_POSITION_NED:
            {
                LocalPositionNedEvent?.Invoke(packet.Message as UasLocalPositionNed);
                break;
            }

            case (byte)MavlinkMessageID.SERVO_OUTPUT_RAW:
            {
                ServoOutputRawEvent?.Invoke(packet.Message as UasServoOutputRaw);
                break;
            }

            case (byte)MavlinkMessageID.VFR_HUD:
            {
                VfrHudEvent?.Invoke(packet.Message as UasVfrHud);
                break;
            }

            case (byte)MavlinkMessageID.POSITION_TARGET_GLOBAL_INT:
            {
                PositionTargetGlobalIntEvent?.Invoke(packet.Message as UasPositionTargetGlobalInt);
                break;
            }

            case (byte)MavlinkMessageID.HIGHRES_IMU:
            {
                HighresImuEvent?.Invoke(packet.Message as UasHighresImu);
                break;
            }

            case (byte)MavlinkMessageID.ALTITUDE:
            {
                AltitudeEvent?.Invoke(packet.Message as UasAltitude);
                break;
            }

            case (byte)MavlinkMessageID.BATTERY_STATUS:
            {
                BatteryStatusEvent?.Invoke(packet.Message as UasBatteryStatus);
                break;
            }

            default:
                Debug.WriteLine(packet.MessageId);
                break;
            }

            MavlinkReceivedEvent?.Invoke(packet.Message);
        }