示例#1
0
        public WhiteBalance[] GetAvailableWhiteBalance()
        {
            List <WhiteBalance> result  = new List <WhiteBalance>();
            CameraSetting       setting = GetSetting(SettingIds.WhiteBalance);

            foreach (int value in setting.AcceptedValues)
            {
                result.Add((WhiteBalance)value);
            }
            return(result.ToArray());
        }
示例#2
0
        public FocusAreaIds[] GetAvailableFocusAreas()
        {
            List <FocusAreaIds> result  = new List <FocusAreaIds>();
            CameraSetting       setting = GetSetting(SettingIds.FocusArea);

            foreach (int value in setting.AcceptedValues)
            {
                result.Add((FocusAreaIds)value);
            }
            return(result.ToArray());
        }
示例#3
0
        public MeteringMode[] GetAvailableMeteringModes()
        {
            List <MeteringMode> result  = new List <MeteringMode>();
            CameraSetting       setting = GetSetting(SettingIds.MeteringMode);

            foreach (int value in setting.AcceptedValues)
            {
                result.Add((MeteringMode)value);
            }
            return(result.ToArray());
        }
示例#4
0
        public PictureEffect[] GetAvailablePictureEffects()
        {
            List <PictureEffect> result  = new List <PictureEffect>();
            CameraSetting        setting = GetSetting(SettingIds.PictureEffect);

            foreach (int value in setting.AcceptedValues)
            {
                result.Add((PictureEffect)value);
            }
            return(result.ToArray());
        }
示例#5
0
        public AspectRatio[] GetAvailableAspectRatios()
        {
            List <AspectRatio> result  = new List <AspectRatio>();
            CameraSetting      setting = GetSetting(SettingIds.AspectRatio);

            foreach (int value in setting.AcceptedValues)
            {
                result.Add((AspectRatio)value);
            }
            return(result.ToArray());
        }
示例#6
0
        public DroHdr[] GetAvailableDroHdr()
        {
            List <DroHdr> result  = new List <DroHdr>();
            CameraSetting setting = GetSetting(SettingIds.DroHdr);

            foreach (int value in setting.AcceptedValues)
            {
                result.Add((DroHdr)value);
            }
            return(result.ToArray());
        }
示例#7
0
        public ShutterSpeedInfo GetShutterSpeed()
        {
            CameraSetting setting = GetSetting(SettingIds.ShutterSpeed);

            if (setting != null)
            {
                return(new ShutterSpeedInfo(
                           setting.SubValue == 1 ? setting.Value : (float)setting.SubValue / 10,
                           setting.SubValue == 1));
            }
            else
            {
                return(default(ShutterSpeedInfo));
            }
        }
示例#8
0
        public float GetFocusMagnifier()
        {
            CameraSetting setting = GetSetting(SettingIds.MeteringMode);

            return(setting != null && setting.Value != 0 ? (float)setting.Value / 10 : 1);
        }
示例#9
0
        public MeteringMode GetMeteringMode()
        {
            CameraSetting setting = GetSetting(SettingIds.MeteringMode);

            return(setting != null ? (MeteringMode)setting.Value : default(MeteringMode));
        }
示例#10
0
        public float GetFlash()
        {
            CameraSetting setting = GetSetting(SettingIds.Flash);

            return(setting != null ? (float)setting.Value / 1000 : 0);
        }
示例#11
0
        public FocusAreaIds GetFocusArea()
        {
            CameraSetting setting = GetSetting(SettingIds.FocusArea);

            return(setting != null ? (FocusAreaIds)setting.Value : default(FocusAreaIds));
        }
示例#12
0
        public bool GetFEL()
        {
            CameraSetting setting = GetSetting(SettingIds.FEL_State);

            return(setting != null ? setting.Value == 2 : false);
        }
示例#13
0
        public int GetFNumber()
        {
            CameraSetting setting = GetSetting(SettingIds.LiveViewState);

            return(setting != null ? setting.Value : 0);
        }
示例#14
0
        public ShootingMode GetShootingMode()
        {
            CameraSetting setting = GetSetting(SettingIds.ShootingMode);

            return(setting != null ? (ShootingMode)setting.Value : default(ShootingMode));
        }
示例#15
0
        public AspectRatio GetAspectRatio()
        {
            CameraSetting setting = GetSetting(SettingIds.AspectRatio);

            return(setting != null ? (AspectRatio)setting.Value : default(AspectRatio));
        }
示例#16
0
        public DroHdr GetDroHdr()
        {
            CameraSetting setting = GetSetting(SettingIds.DroHdr);

            return(setting != null ? (DroHdr)setting.Value : default(DroHdr));
        }
示例#17
0
        public PictureEffect GetPictureEffect()
        {
            CameraSetting setting = GetSetting(SettingIds.PictureEffect);

            return(setting != null ? (PictureEffect)setting.Value : default(PictureEffect));
        }
示例#18
0
        public FocusMagnifierPhase GetFocusMagnifierPhase()
        {
            CameraSetting setting = GetSetting(SettingIds.MeteringMode);

            return(setting != null ? (FocusMagnifierPhase)setting.Value : default(FocusMagnifierPhase));
        }
示例#19
0
        public bool Update(bool imageData)
        {
            using (Packet request = new Packet(OpCodes.Settings))
            {
                request.WriteHexString("00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 00 03 00 00 00");
                byte[] buffer = SendCommand(request.GetBuffer());
                using (Packet response = Packet.Reader(buffer))
                {
                    if (!IsValidResponse(response))
                    {
                        return(false);
                    }

                    response.Index = 30;
                    int numSettings = response.ReadInt32();
                    int unk         = response.ReadInt32();
                    Debug.Assert(unk == 0);//always 0?

                    for (int i = 0; i < numSettings; i++)
                    {
                        ushort settingId             = response.ReadUInt16();
                        int    currentDataStartIndex = response.Index;
                        bool   knownSetting          = false;

                        CameraSetting setting;
                        if (!cameraSettings.TryGetValue((SettingIds)settingId, out setting))
                        {
                            setting = new CameraSetting((SettingIds)settingId);
                            cameraSettings.Add((SettingIds)settingId, setting);
                        }

                        if (AvailableMainSettingIds.Contains(settingId) ||
                            AvailableSubSettingIds.Contains(settingId))
                        {
                            knownSetting = true;

                            ushort dataType = response.ReadUInt16();
                            switch (dataType)
                            {
                            case 1:
                            {
                                response.Skip(3);
                                setting.Value = response.ReadByte();
                                byte subDataType = response.ReadByte();
                                switch (subDataType)
                                {
                                case 1:
                                    response.Skip(3);
                                    break;

                                default:
                                    knownSetting = false;
                                    break;
                                }
                            }
                            break;

                            case 2:
                            {
                                response.Skip(3);
                                setting.Value = response.ReadByte();
                                byte subDataType = response.ReadByte();
                                switch (subDataType)
                                {
                                case 1:
                                    response.Skip(3);
                                    break;

                                case 2:
                                    int num = response.ReadUInt16();
                                    setting.AcceptedValues.Clear();
                                    for (int j = 0; j < num; j++)
                                    {
                                        setting.AcceptedValues.Add(response.ReadByte());
                                    }
                                    break;

                                default:
                                    knownSetting = false;
                                    break;
                                }
                            }
                            break;

                            case 3:
                            {
                                response.Skip(4);
                                setting.Value = response.ReadInt16();
                                byte subDataType = response.ReadByte();
                                switch (subDataType)
                                {
                                case 1:
                                    response.Skip(6);
                                    break;

                                case 2:
                                    int num = response.ReadUInt16();
                                    setting.AcceptedValues.Clear();
                                    for (int j = 0; j < num; j++)
                                    {
                                        setting.AcceptedValues.Add(response.ReadInt16());
                                    }
                                    break;

                                default:
                                    knownSetting = false;
                                    break;
                                }
                            }
                            break;

                            case 4:
                            {
                                response.Skip(4);
                                setting.Value = response.ReadUInt16();
                                byte subDataType = response.ReadByte();
                                switch (subDataType)
                                {
                                case 1:
                                    response.Skip(2);
                                    response.ReadInt16();            // Decrement value?
                                    response.ReadInt16();            // Iecrement value?
                                    break;

                                case 2:
                                    int num = response.ReadUInt16();
                                    setting.AcceptedValues.Clear();
                                    for (int j = 0; j < num; j++)
                                    {
                                        setting.AcceptedValues.Add(response.ReadUInt16());
                                    }
                                    break;

                                default:
                                    knownSetting = false;
                                    break;
                                }
                            }
                            break;

                            case 6:
                            {
                                response.Skip(6);
                                if (setting.HasSubValue)
                                {
                                    setting.Value    = response.ReadUInt16();
                                    setting.SubValue = response.ReadUInt16();
                                }
                                else
                                {
                                    setting.Value = response.ReadInt32();
                                }
                                byte subDataType = response.ReadByte();
                                switch (subDataType)
                                {
                                case 1:
                                    response.Skip(12);
                                    break;

                                case 2:
                                    int num = response.ReadUInt16();
                                    setting.AcceptedValues.Clear();
                                    for (int j = 0; j < num; j++)
                                    {
                                        setting.AcceptedValues.Add(response.ReadInt32());
                                    }
                                    break;

                                default:
                                    knownSetting = false;
                                    break;
                                }
                            }
                            break;

                            default:
                                knownSetting = false;
                                break;
                            }

                            if (setting.Value != setting.PrevValue ||
                                setting.SubValue != setting.PrevSubValue)
                            {
                                setting.OnChanged();
                                if (SettingChanged != null)
                                {
                                    SettingChanged(setting);
                                }
                                setting.PrevValue    = setting.Value;
                                setting.PrevSubValue = setting.SubValue;
                            }
                        }

                        Debug.Assert(knownSetting);
                    }
                }
            }

            if (imageData)
            {
                if (IsLiveViewEnabled)
                {
                    LiveViewImage = GetImage(true);
                }

                CameraSetting photoQueue = GetSetting(SettingIds.PhotoTransferQueue);
                if (photoQueue != null)
                {
                    // NOTE: The camera is capped at 127 (0x75) images in the queue at any given time
                    int  numPhotos = photoQueue.Value & 0xFF;
                    bool photoAvailableForTransfer = ((photoQueue.Value >> 8) & 0xFF) == 0x80;
                    if (photoAvailableForTransfer)
                    {
                        byte[] img = GetImage(false);
                    }
                }
            }

            return(true);
        }
示例#20
0
        public ImageFileFormat GetFileFormat()
        {
            CameraSetting setting = GetSetting(SettingIds.FileFormat);

            return(setting != null ? (ImageFileFormat)setting.Value : default(ImageFileFormat));
        }
示例#21
0
        public int GetISO()
        {
            CameraSetting setting = GetSetting(SettingIds.ISO);

            return(setting != null ? setting.Value : 0);
        }
示例#22
0
        public ushort GetWhiteBalanceColorTemp()
        {
            CameraSetting setting = GetSetting(SettingIds.WhiteBalanceColorTemp);

            return(setting != null ? (ushort)setting.Value : (ushort)0);
        }
示例#23
0
        public int GetBatteryChargePercent()
        {
            CameraSetting setting = GetSetting(SettingIds.BatteryInfo);

            return(setting != null ? setting.Value : 0);
        }
示例#24
0
        public WhiteBalanceGM GetWhiteBalanceGM()
        {
            CameraSetting setting = GetSetting(SettingIds.WhiteBalanceGM);

            return(setting != null ? (WhiteBalanceGM)setting.Value : default(WhiteBalanceGM));
        }
示例#25
0
        public DriveMode GetDriveMode()
        {
            CameraSetting setting = GetSetting(SettingIds.DriveMode);

            return(setting != null ? (DriveMode)setting.Value : default(DriveMode));
        }
示例#26
0
        public FlashMode GetFlashMode()
        {
            CameraSetting setting = GetSetting(SettingIds.FlashMode);

            return(setting != null ? (FlashMode)setting.Value : default(FlashMode));
        }
示例#27
0
        public Position GetFocusAreaSpot()
        {
            CameraSetting setting = GetSetting(SettingIds.FocusAreaSpot);

            return(setting != null ? new Position(setting.SubValue, setting.Value) : default(Position));
        }
示例#28
0
        public AutoFocusState GetAutoFocusState()
        {
            CameraSetting setting = GetSetting(SettingIds.AutoFocusState);

            return(setting != null ? (AutoFocusState)setting.Value : default(AutoFocusState));
        }