From 59834d2afc6228f829c3f1b6209395fee19ae3ad Mon Sep 17 00:00:00 2001 From: Piv <18462828+Piv200@users.noreply.github.com> Date: Wed, 20 May 2020 19:32:01 +0930 Subject: [PATCH] Add factory to initialise vehicles --- .../Sources/SwiftyCar/VehicleFactory.swift | 27 +++++++++++++++++++ SwiftyCar/Sources/SwiftyCar/main.swift | 6 +---- 2 files changed, 28 insertions(+), 5 deletions(-) create mode 100644 SwiftyCar/Sources/SwiftyCar/VehicleFactory.swift diff --git a/SwiftyCar/Sources/SwiftyCar/VehicleFactory.swift b/SwiftyCar/Sources/SwiftyCar/VehicleFactory.swift new file mode 100644 index 0000000..d1fcf0a --- /dev/null +++ b/SwiftyCar/Sources/SwiftyCar/VehicleFactory.swift @@ -0,0 +1,27 @@ +// +// File.swift +// +// +// Created by Michael Pivato on 20/5/20. +// + +import Foundation +import SwiftyGPIO + + + +func getVehicle2D() throws -> Vehicle2D { + if let value = ProcessInfo.processInfo.environment["CAR_VEHICLE"] { + switch value{ + case "CAR_2D": + // Get car for rpi. + let pwms = SwiftyGPIO.hardwarePWMs(for:.RaspberryPi3)! + + // Read the feature database. + return try RPiVehicle2D(withThrottlePin: Servo(forPin: (pwms[0]?[.P18])!)!, withSteeringPin:Servo(forPin: (pwms[1]?[.P19])!)!) + default: + return MockVehicle() + } + } + return MockVehicle() +} diff --git a/SwiftyCar/Sources/SwiftyCar/main.swift b/SwiftyCar/Sources/SwiftyCar/main.swift index 116c98e..7afc07c 100644 --- a/SwiftyCar/Sources/SwiftyCar/main.swift +++ b/SwiftyCar/Sources/SwiftyCar/main.swift @@ -6,7 +6,6 @@ // import NIO -import SwiftyGPIO import GRPC func doServer() throws { @@ -17,12 +16,9 @@ func doServer() throws { try! group.syncShutdownGracefully() } - let pwms = SwiftyGPIO.hardwarePWMs(for:.RaspberryPi3)! - // Read the feature database. - let vehicle = try RPiVehicle2D(withThrottlePin: Servo(forPin: (pwms[0]?[.P18])!)!, withSteeringPin:Servo(forPin: (pwms[1]?[.P19])!)!) // Create a provider using the features we read. - let provider = MotorProvider(vehicle: vehicle) + let provider = try MotorProvider(vehicle: getVehicle2D()) // Start the server and print its address once it has started. let server = Server.insecure(group: group)