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)