示例#1
0
        void UpdateStatus()
        {
            try
            {
                BatteryStates oldBatteryStates = BatteryStates.NotCharging;
                if (this.status != null)
                {
                    oldBatteryStates = this.status.charging;
                }

                RovioStatusReport report = api.Movement.GetReport();
                if (report == null)
                {
                    return;
                }

                if (oldBatteryStates != BatteryStates.Normal && report.charging == BatteryStates.Normal)
                {//如果开始在充电位置,现在活动
                    this.settings.SetBlueLight(this.settings.BlueLights, true);
                }
                //!!!注意,这里的status引用有可能本来就是report。因为report实例不重新初始化。
                this.status = report;

                if (this.StatusChanged != null)
                {
                    this.StatusChanged(this, new StatusChangedEventArgs(report));
                }
            }
            catch (Exception)
            { }
            finally
            {
                timerRefreshStatus.Start();
            }
        }
示例#2
0
        internal static RovioStatusReport Parse(RovioStatusReport report, RovioResponse dic)
        {
            report.str = dic.ToString();

            report.Location = new RovioLocation(
                short.Parse(dic["x"]),
                short.Parse(dic["y"]),
                double.Parse(dic["theta"]));

            report.parseRoomId(dic["room"]);
            report.parseNavStrength(dic["ss"]);
            //如果信号太弱,将RoomId置为-1。
            if (!report.HasNavSignal)
            {
                report.RoomID = -1;
            }

            report.BeaconSignalStrength = UInt16.Parse(dic["beacon"]);
            report.BeaconPoitionX       = Int16.Parse(dic["beacon_x"]);
            report.NextRoomID           = int.Parse(dic["next_room"]);
            report.NextRoomSS           = UInt16.Parse(dic["next_room_ss"]);

            report.parseNavState(dic["state"]);
            report.ui_status     = int.Parse(dic["ui_status"]);
            report.resistance    = int.Parse(dic["resistance"]);
            report.sm            = int.Parse(dic["sm"]);
            report.WayPointIndex = int.Parse(dic["pp"]);
            report.parseFlags(dic["flags"]);

            report.brightness = byte.Parse(dic["brightness"]);

            report.ResolutionId           = int.Parse(dic["resolution"]);
            report.VideoCompression       = (VideoCompression)int.Parse(dic["video_compression"]);
            report.frame_rate             = int.Parse(dic["frame_rate"]);
            report.Privilege              = (UserPrivilege)int.Parse(dic["privilege"]);
            report.AuthenticationRequired = (int.Parse(dic["user_check"]) == 1);// ???? == 0

            //0 (lowest) – 31 (highest)
            report.speaker_volume = double.Parse(dic["speaker_volume"]) / 31.0;
            //0 (lowest) – 31 (highest)
            report.mic_volume = double.Parse(dic["mic_volume"]) / 31.0;
            report.parseWifiStrength(dic["wifi_ss"]);
            // 0 = Not showing the time. 1 = Showing time.
            report.show_time   = (int.Parse(dic["show_time"]) == 1);
            report.ddns_state  = (DdnsStates)int.Parse(dic["ddns_state"]);
            report.email_state = int.Parse(dic["email_state"]);
            report.parseBatteryStrength(dic["battery"]);
            report.parseCharging(dic["charging"]);
            report.HeadPositionTickCount = int.Parse(dic["head_position"]);
            report.ACFrequency           = (ACFrequency)int.Parse(dic["ac_freq"]);

            return(report);
        }
示例#3
0
            internal override void Load(Dictionary <FlashParameters, Int32> flashParameters, RovioStatusReport report, RovioMcuReport mcuReport)
            {
                RovioAPI api = owner.rovio.API;

                this.brightness       = report.brightness;
                this.resolutionId     = report.ResolutionId;
                this.videoCompression = report.VideoCompression;
                this.frameRate        = report.frame_rate;
                this.acFrequency      = report.ACFrequency;

                this.modified = false;
            }
示例#4
0
            internal override void Load(Dictionary <FlashParameters, Int32> flashParameters, RovioStatusReport report, RovioMcuReport mcuReport)
            {
                MailSettings settings = owner.rovio.API.GetMail();

                this.enabled      = settings.Enabled;
                this.mailServer   = settings.MailServer;
                this.port         = settings.Port;
                this.sender       = settings.Sender;
                this.receiver     = settings.Receiver;
                this.subject      = settings.Subject;
                this.body         = settings.Body;
                this.userName     = settings.UserName;
                this.password     = settings.Password;
                this.authRequired = settings.AuthRequired;
                this.interval     = settings.Interval;

                this.modified = false;
            }
            internal override void Load(Dictionary<FlashParameters, Int32> flashParameters, RovioStatusReport report, RovioMcuReport mcuReport)
            {
                //此处跟Rovio Web设置保持一致,范围是1-10, 1为最慢
                this.movementSpeed = RovioAPI.GetDouble(
                    flashParameters[FlashParameters.MovementSpeed], 1, 10, 0.5);
                this.turnSpeed = RovioAPI.GetDouble(
                    flashParameters[FlashParameters.TurnSpeed], 1, 10, 0.5);
                this.rotSpeed = RovioAPI.GetDouble(
                    flashParameters[FlashParameters.RotSpeed], 1, 10, 0.8);

                this.modified = false;
            }
示例#6
0
        public void Open(string host, int port, int rtspPort, NetworkCredential credentials, BackgroundWorker bw = null)
        {
            try
            {
                this.api = new RovioAPI(host, port, credentials);
                this.api.CommandTimeout = this.commandTimeout;
                this.RtspUrl            = string.Format("rtsp://{0}:{1}@{2}{3}/webcam",
                                                        credentials.UserName,
                                                        credentials.Password,
                                                        host,
                                                        (rtspPort == 554) ? "" : ":" + rtspPort);
                this.MJpegUrl = string.Format("http://{0}{1}/GetData.cgi",
                                              host, ((port == 80) ? "" : ":" + port));

                if (bw != null)
                {
                    bw.ReportProgress(0, string.Format("登录到 {0}{1} ...",
                                                       host, (port == 80) ? "" : ":" + port));
                }

                //检查是否登录
                this.userInfo = api.GetMyself(true);

                FirmwareVersion firmware     = api.GetVer();
                string          libNSVersion = api.Movement.GetLibNSVersion();
                this.Version = new RovioVersionInfo(firmware, libNSVersion);


                if (bw != null)
                {
                    bw.ReportProgress(0, "登录成功,载入Rovio配置...");
                }
                this.settings.Load();


                this.networkConfig = api.GetNetworkConfig();

                //resetMovementSettings
                this.movement_speed = DEFAULT_SPEED;
                this.turn_speed     = DEFAULT_TURN_SPEED;
                this.rot_speed      = DEFAULT_ROT_SPEED;

                // upnp settings need to be called as soon as possible for RTSP feeds
                //loadUPnPFields
                this.upnp_info = api.GetUPnP();
                //updateOnlineStatus();
                //updateUPnPFields();
                //initial_upnp_load = false;

                // need to know web port for ActiveX
                //loadWebPort
                this.net_web_port = api.GetHttp();

                // need to know the manual external ip

                //refreshPathList
                this.listWays.Clear();
                string[] list = api.Movement.GetPathList();
                this.listWays.AddRange(list);


                //loadForceMJPEGFromURL();

                //var force_reboot = getQueryVariable("reboot");
                //if(force_reboot != null && parseInt(force_reboot)){
                //    $('settings_dialog').style.display = 'none';
                //    selectTab($('sidetab_1'));
                //    initReboot();
                //    return;
                //}


                //access_settings_panel = 1;
                //$('move_ir').checked = IR_val;

                if (userInfo.Group == UserGroups.Administrator)
                {//管理员账号
                 // need to know if we are using a domain for checking external access
                 //loadDynDNSSettings();

                    ////loadSettingsPanels();
                    //setServerTime();
                    //getEvoVersion();
                    //getWBVersion();
                    //loadSMTPSettings();

                    //setTimeout('getLatestVersion()',5000);
                }

                //if(!user_guest){
                //setTimeout("access_settings_panel = 1",1000);
                //}

                RovioStatusReport report = api.Movement.GetReport();
                this.status = report;
                timerRefreshStatus.Start();
                timerMovement.Start();

                StartWorkerThread();
                isOpen = true;
            }
            catch (Exception ex)
            {
                this.api = null;
                isOpen   = false;

                throw ex;
            }
        }
示例#7
0
 internal abstract void Load(Dictionary<FlashParameters, Int32> flashParameters, RovioStatusReport report, RovioMcuReport mcuReport);
示例#8
0
            internal override void Load(Dictionary<FlashParameters, Int32> flashParameters, RovioStatusReport report, RovioMcuReport mcuReport)
            {
                MailSettings settings = owner.rovio.API.GetMail();
                this.enabled = settings.Enabled;
                this.mailServer = settings.MailServer;
                this.port = settings.Port;
                this.sender = settings.Sender;
                this.receiver = settings.Receiver;
                this.subject = settings.Subject;
                this.body = settings.Body;
                this.userName = settings.UserName;
                this.password = settings.Password;
                this.authRequired = settings.AuthRequired;
                this.interval = settings.Interval;

                this.modified = false;
            }
示例#9
0
 internal abstract void Load(Dictionary <FlashParameters, Int32> flashParameters, RovioStatusReport report, RovioMcuReport mcuReport);
示例#10
0
        public void Load()
        {
            RovioAPI           api       = rovio.API;
            MovementController movement  = api.Movement;
            CameraController   camera    = api.Camera;
            RovioStatusReport  report    = movement.GetReport();
            RovioMcuReport     mcuReport = movement.GetMCUReport();
            Dictionary <FlashParameters, Int32> flashParameters = movement.ReadAllParameters();


            this.Name     = api.GetName();
            this.DateTime = api.GetTime();

            this.MaintainAspectRatio = RovioAPI.GetBoolean(flashParameters[FlashParameters.MaintainAspectRatio]);

            ///// <summary>
            ///// i_LR
            ///// </summary>
            //latency = 4,

            this.PlayerType = (VideoPlayers)flashParameters[FlashParameters.video_player];
            ///// <summary>
            ///// i_UPnP  upnp just enabled
            ///// </summary>
            //upnp_just_enabled = 6,
            ///// <summary>
            ///// i_SS    show status
            ///// </summary>
            //show_online_status = 7,
            ///// <summary>
            ///// i_MIIP1  manual ip
            ///// </summary>
            //manual_internetip = 8,
            ///// <summary>
            ///// i_MIIP2   manual ip
            ///// </summary>
            //manual_internetip2 = 9,
            ///// <summary>
            ///// i_VIA    verify internet access
            ///// </summary>
            //net_verify_access = 10,
            this.FirmwareAlert = RovioAPI.GetBoolean(
                flashParameters[FlashParameters.firmware_alert]);
            ///// <summary>
            ///// i_AVF    auto set video frequency
            ///// </summary>
            //video_freq = 12,

            this.IrDetectEnabled = ((report.Flags & RovioFlags.IRDetectorActivated) == RovioFlags.IRDetectorActivated);

            this.HeadLight  = mcuReport.HeadLight;
            this.BlueLights = (BlueLightState)RovioAPI.GetByte(flashParameters[FlashParameters.BlueLights], (byte)BlueLightState.All);
            this.NightMode  = (NightMode)RovioAPI.GetByte(flashParameters[FlashParameters.NightMode], (byte)NightMode.Normal);

            this.SpeakerVolume    = report.speaker_volume;
            this.MicrophoneVolume = report.mic_volume;

            groupVideo.Load(flashParameters, report, mcuReport);
            groupMovement.Load(flashParameters, report, mcuReport);
            groupMail.Load(flashParameters, report, mcuReport);
        }
示例#11
0
            internal override void Load(Dictionary<FlashParameters, Int32> flashParameters, RovioStatusReport report, RovioMcuReport mcuReport)
            {
                RovioAPI api = owner.rovio.API;

                this.brightness = report.brightness;
                this.resolutionId = report.ResolutionId;
                this.videoCompression = report.VideoCompression;
                this.frameRate = report.frame_rate;
                this.acFrequency = report.ACFrequency;

                this.modified = false;
            }
            internal override void Load(Dictionary <FlashParameters, Int32> flashParameters, RovioStatusReport report, RovioMcuReport mcuReport)
            {
                //此处跟Rovio Web设置保持一致,范围是1-10, 1为最慢
                this.movementSpeed = RovioAPI.GetDouble(
                    flashParameters[FlashParameters.MovementSpeed], 1, 10, 0.5);
                this.turnSpeed = RovioAPI.GetDouble(
                    flashParameters[FlashParameters.TurnSpeed], 1, 10, 0.5);
                this.rotSpeed = RovioAPI.GetDouble(
                    flashParameters[FlashParameters.RotSpeed], 1, 10, 0.8);

                this.modified = false;
            }
 public StatusChangedEventArgs(RovioStatusReport report)
 {
     this.Data = report;
 }
示例#14
0
 public StatusChangedEventArgs(RovioStatusReport report)
 {
     this.Data = report;
 }
示例#15
0
        internal static RovioStatusReport Parse(RovioStatusReport report, RovioResponse dic)
        {
            report.str = dic.ToString();

            report.Location = new RovioLocation(
                short.Parse(dic["x"]),
                short.Parse(dic["y"]),
                double.Parse(dic["theta"]));

            report.parseRoomId(dic["room"]);
            report.parseNavStrength(dic["ss"]);
            //如果信号太弱,将RoomId置为-1。
            if (!report.HasNavSignal)
                report.RoomID = -1;

            report.BeaconSignalStrength = UInt16.Parse(dic["beacon"]);
            report.BeaconPoitionX = Int16.Parse(dic["beacon_x"]);
            report.NextRoomID = int.Parse(dic["next_room"]);
            report.NextRoomSS = UInt16.Parse(dic["next_room_ss"]);

            report.parseNavState(dic["state"]);
            report.ui_status = int.Parse(dic["ui_status"]);
            report.resistance = int.Parse(dic["resistance"]);
            report.sm = int.Parse(dic["sm"]);
            report.WayPointIndex = int.Parse(dic["pp"]);
            report.parseFlags(dic["flags"]);

            report.brightness = byte.Parse(dic["brightness"]);

            report.ResolutionId = int.Parse(dic["resolution"]);
            report.VideoCompression = (VideoCompression)int.Parse(dic["video_compression"]);
            report.frame_rate = int.Parse(dic["frame_rate"]);
            report.Privilege = (UserPrivilege)int.Parse(dic["privilege"]);
            report.AuthenticationRequired = (int.Parse(dic["user_check"]) == 1);// ???? == 0

            //0 (lowest) – 31 (highest)
            report.speaker_volume = double.Parse(dic["speaker_volume"]) / 31.0;
            //0 (lowest) – 31 (highest)
            report.mic_volume = double.Parse(dic["mic_volume"]) / 31.0;
            report.parseWifiStrength(dic["wifi_ss"]);
            // 0 = Not showing the time. 1 = Showing time.
            report.show_time = (int.Parse(dic["show_time"]) == 1);
            report.ddns_state = (DdnsStates)int.Parse(dic["ddns_state"]);
            report.email_state = int.Parse(dic["email_state"]);
            report.parseBatteryStrength(dic["battery"]);
            report.parseCharging(dic["charging"]);
            report.HeadPositionTickCount = int.Parse(dic["head_position"]);
            report.ACFrequency = (ACFrequency)int.Parse(dic["ac_freq"]);

            return report;
        }