Beispiel #1
0
        public Kiiroo([NotNull] IButtplugLogManager aLogManager,
                      [NotNull] IBluetoothDeviceInterface aInterface,
                      [NotNull] IBluetoothDeviceInfo aInfo)
            : base(aLogManager,
                   $"Kiiroo {aInterface.Name}",
                   aInterface,
                   aInfo)
        {
            AddMessageHandler <KiirooCmd>(HandleKiirooRawCmd);
            AddMessageHandler <StopDeviceCmd>(HandleStopDeviceCmd);

            // ReSharper disable once ConvertIfStatementToSwitchStatement
            if (aInterface.Name == "PEARL")
            {
                AddMessageHandler <VibrateCmd>(HandleVibrateCmd, new MessageAttributes()
                {
                    FeatureCount = 1
                });
                AddMessageHandler <SingleMotorVibrateCmd>(HandleSingleMotorVibrateCmd);
            }
            else if (aInterface.Name == "ONYX")
            {
                AddMessageHandler <LinearCmd>(HandleLinearCmd, new MessageAttributes()
                {
                    FeatureCount = 1
                });
                AddMessageHandler <FleshlightLaunchFW12Cmd>(HandleFleshlightLaunchFW12Cmd);
            }
        }
Beispiel #2
0
        public Lovense(IButtplugLogManager aLogManager,
                       IBluetoothDeviceInterface aInterface,
                       IBluetoothDeviceInfo aInfo)
            : base(aLogManager,
                   $"Lovense Device ({FriendlyNames[aInterface.Name]})",
                   aInterface,
                   aInfo)
        {
            if (FriendlyNames[aInterface.Name] == "Edge")
            {
                _vibratorCount++;
            }

            MsgFuncs.Add(typeof(SingleMotorVibrateCmd), new ButtplugDeviceWrapper(HandleSingleMotorVibrateCmd));
            MsgFuncs.Add(typeof(VibrateCmd), new ButtplugDeviceWrapper(HandleVibrateCmd, new MessageAttributes()
            {
                FeatureCount = _vibratorCount
            }));
            MsgFuncs.Add(typeof(StopDeviceCmd), new ButtplugDeviceWrapper(HandleStopDeviceCmd));

            if (FriendlyNames[aInterface.Name] == "Nora")
            {
                MsgFuncs.Add(typeof(RotateCmd), new ButtplugDeviceWrapper(HandleRotateCmd, new MessageAttributes()
                {
                    FeatureCount = 1
                }));
            }
        }
 public IButtplugDevice CreateDevice(
     IButtplugLogManager aLogManager,
     IBluetoothDeviceInterface aInterface)
 {
     return(new FleshlightLaunch(aLogManager,
                                 aInterface));
 }
Beispiel #4
0
        public KiirooGen2Vibe([NotNull] IButtplugLogManager aLogManager,
                              [NotNull] IBluetoothDeviceInterface aInterface,
                              [NotNull] IBluetoothDeviceInfo aInfo)
            : base(aLogManager,
                   "Kiiroo Unknown",
                   aInterface,
                   aInfo)
        {
            if (DevInfos.ContainsKey(aInterface.Name))
            {
                Name     = $"{DevInfos[aInterface.Name].Brand} {aInterface.Name}";
                _devInfo = DevInfos[aInterface.Name];
            }
            else
            {
                BpLogger.Warn($"Cannot identify device {Name}, defaulting to Pearl2 settings.");
                _devInfo = DevInfos["Unknown"];
            }

            AddMessageHandler <StopDeviceCmd>(HandleStopDeviceCmd);
            AddMessageHandler <VibrateCmd>(HandleVibrateCmd, new MessageAttributes {
                FeatureCount = _devInfo.VibeCount
            });
            AddMessageHandler <SingleMotorVibrateCmd>(HandleSingleMotorVibrateCmd);
        }
Beispiel #5
0
        public MagicMotion(IButtplugLogManager aLogManager,
                           IBluetoothDeviceInterface aInterface,
                           IBluetoothDeviceInfo aInfo)
            : base(aLogManager,
                   $"Unknown MagicMotion Device ({aInterface.Name})",
                   aInterface,
                   aInfo)
        {
            if (DevInfos.ContainsKey(aInterface.Name))
            {
                Name     = $"MagicMotion {DevInfos[aInterface.Name].Name}";
                _devInfo = DevInfos[aInterface.Name];
            }
            else
            {
                BpLogger.Warn($"Cannot identify device {Name}, defaulting to Smart Mini Vibe settings.");
                _devInfo = DevInfos["Smart Mini Vibe"];
            }

            AddMessageHandler <SingleMotorVibrateCmd>(HandleSingleMotorVibrateCmd);
            AddMessageHandler <VibrateCmd>(HandleVibrateCmd, new MessageAttributes {
                FeatureCount = _devInfo.VibeCount
            });
            AddMessageHandler <StopDeviceCmd>(HandleStopDeviceCmd);
        }
Beispiel #6
0
        public VorzeSA(IButtplugLogManager aLogManager,
                       IBluetoothDeviceInterface aInterface,
                       IBluetoothDeviceInfo aInfo)
            : base(aLogManager,
                   "Vorze SA Unknown",
                   aInterface,
                   aInfo)
        {
            if (aInterface.Name == "CycSA")
            {
                _deviceType = DeviceType.CycloneOrUnknown;
                Name        = "Vorze A10 Cyclone SA";
            }
            else if (aInterface.Name == "UFOSA")
            {
                _deviceType = DeviceType.UFO;
                Name        = "Vorze UFO SA";
            }
            else
            {
                // If the device doesn't identify, warn and try sending it Cyclone packets.
                BpLogger.Warn($"Vorze product with unrecognized name ({Name}) found. This product may not work with B******g. Contact the developers for more info.");
            }

            MsgFuncs.Add(typeof(VorzeA10CycloneCmd), new ButtplugDeviceWrapper(HandleVorzeA10CycloneCmd));
            MsgFuncs.Add(typeof(RotateCmd), new ButtplugDeviceWrapper(HandleRotateCmd, new MessageAttributes()
            {
                FeatureCount = 1
            }));
            MsgFuncs.Add(typeof(StopDeviceCmd), new ButtplugDeviceWrapper(HandleStopDeviceCmd));
        }
Beispiel #7
0
        public VorzeSA(IButtplugLogManager aLogManager,
                       IBluetoothDeviceInterface aInterface,
                       IBluetoothDeviceInfo aInfo)
            : base(aLogManager,
                   "Vorze SA Unknown",
                   aInterface,
                   aInfo)
        {
            switch (aInterface.Name)
            {
            case "CycSA":
                _deviceType  = DeviceType.CycloneOrUnknown;
                _commandType = CommandType.Rotate;
                Name         = "Vorze A10 Cyclone SA";
                break;

            case "UFOSA":
                _deviceType  = DeviceType.UFO;
                _commandType = CommandType.Rotate;
                Name         = "Vorze UFO SA";
                break;

            case "Bach smart":
                _deviceType  = DeviceType.Bach;
                _commandType = CommandType.Vibrate;
                Name         = "Vorze Bach";
                break;

            default:
                // If the device doesn't identify, warn and try sending it Cyclone packets.
                BpLogger.Warn($"Vorze product with unrecognized name ({Name}) found. This product may not work with B******g. Contact the developers for more info.");
                break;
            }

            switch (_commandType)
            {
            case CommandType.Rotate:
                AddMessageHandler <VorzeA10CycloneCmd>(HandleVorzeA10CycloneCmd);
                AddMessageHandler <RotateCmd>(HandleRotateCmd, new MessageAttributes()
                {
                    FeatureCount = 1
                });
                break;

            case CommandType.Vibrate:
                AddMessageHandler <SingleMotorVibrateCmd>(HandleSingleMotorVibrateCmd);
                AddMessageHandler <VibrateCmd>(HandleVibrateCmd, new MessageAttributes()
                {
                    FeatureCount = 1
                });
                break;

            default:
                BpLogger.Error("Unhandled command type.");
                break;
            }

            AddMessageHandler <StopDeviceCmd>(HandleStopDeviceCmd);
        }
Beispiel #8
0
 public VorzeA10Cyclone(IButtplugLogManager aLogManager,
                        IBluetoothDeviceInterface aInterface)
     : base(aLogManager,
            "Vorze A10 Cyclone",
            aInterface)
 {
     MsgFuncs.Add(typeof(VorzeA10CycloneCmd), HandleVorzeA10CycloneCmd);
     MsgFuncs.Add(typeof(StopDeviceCmd), HandleStopDeviceCmd);
 }
Beispiel #9
0
 public Kiiroo([NotNull] IButtplugLogManager aLogManager,
               [NotNull] IBluetoothDeviceInterface aInterface)
     : base(aLogManager,
            $"Kiiroo {aInterface.Name}",
            aInterface)
 {
     MsgFuncs.Add(typeof(KiirooCmd), HandleKiirooRawCmd);
     MsgFuncs.Add(typeof(StopDeviceCmd), HandleStopDeviceCmd);
 }
Beispiel #10
0
 public Lovense(IButtplugLogManager aLogManager,
                IBluetoothDeviceInterface aInterface)
     : base(aLogManager,
            $"Lovense Device ({aInterface.Name})",
            aInterface)
 {
     MsgFuncs.Add(typeof(SingleMotorVibrateCmd), HandleSingleMotorVibrateCmd);
     MsgFuncs.Add(typeof(StopDeviceCmd), HandleStopDeviceCmd);
 }
 public FleshlightLaunch([NotNull] IButtplugLogManager aLogManager,
                         [NotNull] IBluetoothDeviceInterface aInterface)
     : base(aLogManager,
            "Fleshlight Launch",
            aInterface)
 {
     // Setup message function array
     MsgFuncs.Add(typeof(FleshlightLaunchFW12Cmd), HandleFleshlightLaunchRawCmd);
     MsgFuncs.Add(typeof(StopDeviceCmd), HandleStopDeviceCmd);
 }
 protected ButtplugBluetoothDevice([NotNull] IButtplugLogManager aLogManager,
                                   [NotNull] string aName,
                                   [NotNull] IBluetoothDeviceInterface aInterface)
     : base(aLogManager,
            aName,
            aInterface.GetAddress().ToString())
 {
     Interface = aInterface;
     Interface.DeviceRemoved += DeviceRemovedHandler;
 }
Beispiel #13
0
 public Lovense(IButtplugLogManager aLogManager,
                IBluetoothDeviceInterface aInterface,
                IBluetoothDeviceInfo aInfo)
     : base(aLogManager,
            "Lovense Unknown Device",
            aInterface,
            aInfo)
 {
     AddMessageHandler <StopDeviceCmd>(HandleStopDeviceCmd);
 }
Beispiel #14
0
 public Youcups(IButtplugLogManager aLogManager,
                IBluetoothDeviceInterface aInterface,
                IBluetoothDeviceInfo aInfo)
     : base(aLogManager,
            $"Youcups Device ({friendlyNames[aInterface.Name]})",
            aInterface,
            aInfo)
 {
     MsgFuncs.Add(typeof(SingleMotorVibrateCmd), HandleSingleMotorVibrateCmd);
     MsgFuncs.Add(typeof(StopDeviceCmd), HandleStopDeviceCmd);
 }
Beispiel #15
0
 public MagicMotion(IButtplugLogManager aLogManager,
                    IBluetoothDeviceInterface aInterface,
                    IBluetoothDeviceInfo aInfo)
     : base(aLogManager,
            $"MagicMotion Device ({aInterface.Name})",
            aInterface,
            aInfo)
 {
     MsgFuncs.Add(typeof(SingleMotorVibrateCmd), HandleSingleMotorVibrateCmd);
     MsgFuncs.Add(typeof(StopDeviceCmd), HandleStopDeviceCmd);
 }
Beispiel #16
0
 public Vibratissimo(IButtplugLogManager aLogManager,
                     IBluetoothDeviceInterface aInterface,
                     IBluetoothDeviceInfo aInfo)
     : base(aLogManager,
            $"Vibratissimo Device ({aInterface.Name})",
            aInterface,
            aInfo)
 {
     AddMessageHandler <SingleMotorVibrateCmd>(HandleSingleMotorVibrateCmd);
     AddMessageHandler <VibrateCmd>(HandleVibrateCmd, new MessageAttributes {
         FeatureCount = 1
     });
     AddMessageHandler <StopDeviceCmd>(HandleStopDeviceCmd);
 }
 public KiirooGen2Vibe([NotNull] IButtplugLogManager aLogManager,
                       [NotNull] IBluetoothDeviceInterface aInterface,
                       [NotNull] IBluetoothDeviceInfo aInfo)
     : base(aLogManager,
            $"{DevInfos[aInterface.Name].Brand} {aInterface.Name}",
            aInterface,
            aInfo)
 {
     _devInfo = DevInfos[aInterface.Name];
     MsgFuncs.Add(typeof(StopDeviceCmd), new ButtplugDeviceWrapper(HandleStopDeviceCmd));
     MsgFuncs.Add(typeof(VibrateCmd), new ButtplugDeviceWrapper(HandleVibrateCmd, new MessageAttributes {
         FeatureCount = _devInfo.VibeCount
     }));
     MsgFuncs.Add(typeof(SingleMotorVibrateCmd), new ButtplugDeviceWrapper(HandleSingleMotorVibrateCmd));
 }
Beispiel #18
0
 public OhMiBodFuse([NotNull] IButtplugLogManager aLogManager,
                    [NotNull] IBluetoothDeviceInterface aInterface,
                    [NotNull] IBluetoothDeviceInfo aInfo)
     : base(aLogManager,
            $"OhMiBod {aInterface.Name}",
            aInterface,
            aInfo)
 {
     MsgFuncs.Add(typeof(StopDeviceCmd), new ButtplugDeviceWrapper(HandleStopDeviceCmd));
     MsgFuncs.Add(typeof(VibrateCmd), new ButtplugDeviceWrapper(HandleVibrateCmd, new MessageAttributes()
     {
         FeatureCount = 2
     }));
     MsgFuncs.Add(typeof(SingleMotorVibrateCmd), new ButtplugDeviceWrapper(HandleSingleMotorVibrateCmd));
 }
Beispiel #19
0
 public Lovense(IButtplugLogManager aLogManager,
                IBluetoothDeviceInterface aInterface,
                IBluetoothDeviceInfo aInfo)
     : base(aLogManager,
            "Lovense Unknown Device",
            aInterface,
            aInfo)
 {
     MsgFuncs.Add(typeof(SingleMotorVibrateCmd), new ButtplugDeviceWrapper(HandleSingleMotorVibrateCmd));
     MsgFuncs.Add(typeof(VibrateCmd), new ButtplugDeviceWrapper(HandleVibrateCmd, new MessageAttributes()
     {
         FeatureCount = _vibratorCount
     }));
     MsgFuncs.Add(typeof(StopDeviceCmd), new ButtplugDeviceWrapper(HandleStopDeviceCmd));
 }
Beispiel #20
0
 public WeVibe(IButtplugLogManager aLogManager,
               IBluetoothDeviceInterface aInterface,
               IBluetoothDeviceInfo aInfo)
     : base(aLogManager,
            $"WeVibe Device ({aInterface.Name})",
            aInterface,
            aInfo)
 {
     MsgFuncs.Add(typeof(SingleMotorVibrateCmd), new ButtplugDeviceWrapper(HandleSingleMotorVibrateCmd));
     MsgFuncs.Add(typeof(VibrateCmd), new ButtplugDeviceWrapper(HandleVibrateCmd, new MessageAttributes()
     {
         FeatureCount = 1
     }));
     MsgFuncs.Add(typeof(StopDeviceCmd), new ButtplugDeviceWrapper(HandleStopDeviceCmd));
 }
Beispiel #21
0
 public VorzeA10Cyclone(IButtplugLogManager aLogManager,
                        IBluetoothDeviceInterface aInterface,
                        IBluetoothDeviceInfo aInfo)
     : base(aLogManager,
            "Vorze A10 Cyclone",
            aInterface,
            aInfo)
 {
     MsgFuncs.Add(typeof(VorzeA10CycloneCmd), new ButtplugDeviceWrapper(HandleVorzeA10CycloneCmd));
     MsgFuncs.Add(typeof(RotateCmd), new ButtplugDeviceWrapper(HandleRotateCmd, new MessageAttributes()
     {
         FeatureCount = 1
     }));
     MsgFuncs.Add(typeof(StopDeviceCmd), new ButtplugDeviceWrapper(HandleStopDeviceCmd));
 }
 public FleshlightLaunch([NotNull] IButtplugLogManager aLogManager,
                         [NotNull] IBluetoothDeviceInterface aInterface,
                         [NotNull] IBluetoothDeviceInfo aInfo)
     : base(aLogManager,
            "Fleshlight Launch",
            aInterface,
            aInfo)
 {
     // Setup message function array
     MsgFuncs.Add(typeof(FleshlightLaunchFW12Cmd), new ButtplugDeviceWrapper(HandleFleshlightLaunchRawCmd));
     MsgFuncs.Add(typeof(LinearCmd), new ButtplugDeviceWrapper(HandleLinearCmd, new MessageAttributes()
     {
         FeatureCount = 1
     }));
     MsgFuncs.Add(typeof(StopDeviceCmd), new ButtplugDeviceWrapper(HandleStopDeviceCmd));
 }
Beispiel #23
0
        public LiBo(IButtplugLogManager aLogManager,
                    IBluetoothDeviceInterface aInterface,
                    IBluetoothDeviceInfo aInfo)
            : base(aLogManager,
                   $"LiBo ({aInterface.Name})",
                   aInterface,
                   aInfo)
        {
            AddMessageHandler <SingleMotorVibrateCmd>(HandleSingleMotorVibrateCmd);
            AddMessageHandler <VibrateCmd>(HandleVibrateCmd, new MessageAttributes()
            {
                FeatureCount = _vibratorCount
            });
            AddMessageHandler <StopDeviceCmd>(HandleStopDeviceCmd);

            // TODO Add a handler for Estim shocking, add a battery handler.
        }
Beispiel #24
0
        public LiBo(IButtplugLogManager aLogManager,
                    IBluetoothDeviceInterface aInterface,
                    IBluetoothDeviceInfo aInfo)
            : base(aLogManager,
                   $"LiBo ({aInterface.Name})",
                   aInterface,
                   aInfo)
        {
            MsgFuncs.Add(typeof(SingleMotorVibrateCmd), new ButtplugDeviceWrapper(HandleSingleMotorVibrateCmd));
            MsgFuncs.Add(typeof(VibrateCmd), new ButtplugDeviceWrapper(HandleVibrateCmd, new MessageAttributes()
            {
                FeatureCount = _vibratorCount
            }));

            // TODO Add a handler for Estim shocking, add a battery handler.
            MsgFuncs.Add(typeof(StopDeviceCmd), new ButtplugDeviceWrapper(HandleStopDeviceCmd));
        }
Beispiel #25
0
 public Youcups(IButtplugLogManager aLogManager,
                IBluetoothDeviceInterface aInterface,
                IBluetoothDeviceInfo aInfo)
     : base(aLogManager,
            $"Youcups Unknown",
            aInterface,
            aInfo)
 {
     if (FriendlyNames.ContainsKey(aInterface.Name))
     {
         Name = $"Youcups {FriendlyNames[aInterface.Name]}";
     }
     MsgFuncs.Add(typeof(SingleMotorVibrateCmd), new ButtplugDeviceWrapper(HandleSingleMotorVibrateCmd));
     MsgFuncs.Add(typeof(VibrateCmd), new ButtplugDeviceWrapper(HandleVibrateCmd, new MessageAttributes()
     {
         FeatureCount = 1
     }));
     MsgFuncs.Add(typeof(StopDeviceCmd), new ButtplugDeviceWrapper(HandleStopDeviceCmd));
 }
Beispiel #26
0
        public WeVibe(IButtplugLogManager aLogManager,
                      IBluetoothDeviceInterface aInterface,
                      IBluetoothDeviceInfo aInfo)
            : base(aLogManager,
                   $"WeVibe {aInterface.Name}",
                   aInterface,
                   aInfo)
        {
            if (DualVibes.Contains(aInterface.Name))
            {
                _vibratorCount = 2;
            }

            MsgFuncs.Add(typeof(SingleMotorVibrateCmd), new ButtplugDeviceWrapper(HandleSingleMotorVibrateCmd));
            MsgFuncs.Add(typeof(VibrateCmd), new ButtplugDeviceWrapper(HandleVibrateCmd, new MessageAttributes()
            {
                FeatureCount = _vibratorCount
            }));
            MsgFuncs.Add(typeof(StopDeviceCmd), new ButtplugDeviceWrapper(HandleStopDeviceCmd));
        }
Beispiel #27
0
        public Youcups(IButtplugLogManager aLogManager,
                       IBluetoothDeviceInterface aInterface,
                       IBluetoothDeviceInfo aInfo)
            : base(aLogManager,
                   "Youcups Unknown",
                   aInterface,
                   aInfo)
        {
            if (FriendlyNames.ContainsKey(aInterface.Name))
            {
                Name = $"Youcups {FriendlyNames[aInterface.Name]}";
            }

            AddMessageHandler <SingleMotorVibrateCmd>(HandleSingleMotorVibrateCmd);
            AddMessageHandler <VibrateCmd>(HandleVibrateCmd, new MessageAttributes()
            {
                FeatureCount = 1
            });
            AddMessageHandler <StopDeviceCmd>(HandleStopDeviceCmd);
        }
Beispiel #28
0
        public WeVibe(IButtplugLogManager aLogManager,
                      IBluetoothDeviceInterface aInterface,
                      IBluetoothDeviceInfo aInfo)
            : base(aLogManager,
                   $"WeVibe {aInterface.Name}",
                   aInterface,
                   aInfo)
        {
            if (DualVibes.Contains(aInterface.Name))
            {
                _vibratorCount = 2;
            }

            AddMessageHandler <SingleMotorVibrateCmd>(HandleSingleMotorVibrateCmd);
            AddMessageHandler <VibrateCmd>(HandleVibrateCmd, new MessageAttributes()
            {
                FeatureCount = _vibratorCount
            });
            AddMessageHandler <StopDeviceCmd>(HandleStopDeviceCmd);
        }
Beispiel #29
0
        public MysteryVibe(IButtplugLogManager aLogManager,
                           IBluetoothDeviceInterface aInterface,
                           IBluetoothDeviceInfo aInfo)
            : base(aLogManager,
                   "MysteryVibe Crescendo",
                   aInterface,
                   aInfo)
        {
            // Create a new timer that wont fire any events just yet
            _updateValueTimer.Interval = DelayTimeMS;
            _updateValueTimer.Elapsed += MysteryVibeUpdateHandler;
            _updateValueTimer.Enabled  = false;
            aInterface.DeviceRemoved  += OnDeviceRemoved;

            AddMessageHandler <SingleMotorVibrateCmd>(HandleSingleMotorVibrateCmd);
            AddMessageHandler <VibrateCmd>(HandleVibrateCmd, new MessageAttributes {
                FeatureCount = 6
            });
            AddMessageHandler <StopDeviceCmd>(HandleStopDeviceCmd);
        }
Beispiel #30
0
        public Kiiroo([NotNull] IButtplugLogManager aLogManager,
                      [NotNull] IBluetoothDeviceInterface aInterface,
                      [NotNull] IBluetoothDeviceInfo aInfo)
            : base(aLogManager,
                   $"Kiiroo {aInterface.Name}",
                   aInterface,
                   aInfo)
        {
            MsgFuncs.Add(typeof(KiirooCmd), new ButtplugDeviceWrapper(HandleKiirooRawCmd));
            MsgFuncs.Add(typeof(StopDeviceCmd), new ButtplugDeviceWrapper(HandleStopDeviceCmd));

            if (aInterface.Name == "PEARL")
            {
                MsgFuncs.Add(typeof(VibrateCmd), new ButtplugDeviceWrapper(HandleVibrateCmd, new MessageAttributes()
                {
                    FeatureCount = 1
                }));
                MsgFuncs.Add(typeof(SingleMotorVibrateCmd), new ButtplugDeviceWrapper(HandleSingleMotorVibrateCmd));
            }
        }