protected virtual void Dispose(bool disposing) { if (disposing) { KeyboardDriver?.Dispose(); GamepadDriver?.Dispose(); MouseDriver?.Dispose(); } }
public static IServiceCollection AddControlLayer(this IServiceCollection services) { // Configure the Remote Control Controller services.AddHostedService <RemoteControlController>(s => { var gamepadDriver = new GamepadDriver(s.GetService <ILogger <GamepadDriver> >()); return(new RemoteControlController( gamepadDriver, s.GetService <IMessageBroker>(), s.GetService <IOptions <RemoteControlOptions> >(), s.GetService <ILogger <RemoteControlController> >())); }); services.AddHostedService <ServoController>((s) => { var busId = 1; var selectedI2cAddress = 0b000000; // A5 A4 A3 A2 A1 A0 var deviceAddress = Pca9685.I2cAddressBase + selectedI2cAddress; var settings = new I2cConnectionSettings(busId, deviceAddress); var device = I2cDevice.Create(settings); var pca9685 = new Pca9685(device); pca9685.PwmFrequency = 50; return(new ServoController(new List <IServo> { new ServoDriver(pca9685, 0), new ServoDriver(pca9685, 1), new ServoDriver(pca9685, 2), new ServoDriver(pca9685, 3), new ServoDriver(pca9685, 4), new ServoDriver(pca9685, 5), new ServoDriver(pca9685, 6), new ServoDriver(pca9685, 7), new ServoDriver(pca9685, 8), new ServoDriver(pca9685, 9), new ServoDriver(pca9685, 10), new ServoDriver(pca9685, 11) }, s.GetService <IMessageBroker>(), s.GetService <ILogger <ServoController> >())); }); return(services); }
public static IServiceCollection AddControlLayer(this IServiceCollection services) { // Configure the Differencial Drive Controller services.AddHostedService <DifferentialDriveVelocityController>(s => { // Create the motor Hat, and the drivers for left and right motors var motorHat = new MotorHat(); var leftMotorDriver = new DCMotorDriver(motorHat.CreateDCMotor(1), s.GetService <ILogger <DCMotorDriver> >()); var rightMotorDriver = new DCMotorDriver(motorHat.CreateDCMotor(3), s.GetService <ILogger <DCMotorDriver> >()); // Create the SpeedController that controls left and right motors return(new DifferentialDriveVelocityController( leftMotorDriver, rightMotorDriver, s.GetService <IMessageBroker>(), s.GetService <ILogger <DifferentialDriveVelocityController> >())); }); services.Configure <RemoteControlOptions>(options => { options.GamepadKeyThrottle = 1; options.GamepadKeyYaw = 0; }); // Configure the Remote Control Controller services.AddHostedService <RemoteControlController>(s => { var gamepadDriver = new GamepadDriver(s.GetService <ILogger <GamepadDriver> >()); return(new RemoteControlController( gamepadDriver, s.GetService <IMessageBroker>(), s.GetService <IOptions <RemoteControlOptions> >(), s.GetService <ILogger <RemoteControlController> >())); }); return(services); }