From 808904dfd619f442c566f98aea4de6ce8c092f06 Mon Sep 17 00:00:00 2001 From: joshuashoemaker Date: Fri, 22 Jan 2021 21:47:56 -0600 Subject: [PATCH] refact: created abstract interfaces and factories --- src/Server/{ => Entities}/MotorMover.ts | 15 ++++---- src/Server/Interfaces/IMotorMover.ts | 8 +++++ .../Interfaces/IMotorMoverConstructor.ts | 8 +++++ src/Server/Interfaces/IServer.ts | 5 +++ src/Server/Server.ts | 11 +++--- .../UseCases/Factories/makeEventManager.ts | 7 ++++ .../UseCases/Factories/makeMotorMover.ts | 8 +++++ src/Server/UseCases/Factories/makeServer.ts | 9 +++++ src/Server/main.ts | 36 +++++++++---------- src/Server/moveMotorStepper.ts | 22 ------------ 10 files changed, 77 insertions(+), 52 deletions(-) rename src/Server/{ => Entities}/MotorMover.ts (77%) create mode 100644 src/Server/Interfaces/IMotorMover.ts create mode 100644 src/Server/Interfaces/IMotorMoverConstructor.ts create mode 100644 src/Server/Interfaces/IServer.ts create mode 100644 src/Server/UseCases/Factories/makeEventManager.ts create mode 100644 src/Server/UseCases/Factories/makeMotorMover.ts create mode 100644 src/Server/UseCases/Factories/makeServer.ts delete mode 100644 src/Server/moveMotorStepper.ts diff --git a/src/Server/MotorMover.ts b/src/Server/Entities/MotorMover.ts similarity index 77% rename from src/Server/MotorMover.ts rename to src/Server/Entities/MotorMover.ts index ecdcd7b..dc337c8 100644 --- a/src/Server/MotorMover.ts +++ b/src/Server/Entities/MotorMover.ts @@ -1,15 +1,18 @@ -import IMotor from "./Interfaces/IMotor" -import makeMotor from "./UseCases/Factories/makeMotor" +import IMotor from "../Interfaces/IMotor" +import makeMotor from "../UseCases/Factories/makeMotor" import * as childProcesses from 'child_process' +import IMotorMoverConstructor from "../Interfaces/IMotorMoverConstructor" +import IMotorMover from "../Interfaces/IMotorMover" -class MotorMover { +class MotorMover implements IMotorMover { motor: IMotor moveProcess: childProcesses.ChildProcessWithoutNullStreams | null = null - pauseIntervalTime: number = 0.05 + pauseIntervalTime: number movementState: 'CLOCKWISE' | 'COUNTERCLOCKWISE' | "IDLE" = 'IDLE' - constructor (motor: IMotor) { - this.motor = makeMotor(motor) + constructor (props: IMotorMoverConstructor) { + this.motor = makeMotor(props.motor) + this.pauseIntervalTime = props.pauseIntervalTime } public moveClockwise = () => { diff --git a/src/Server/Interfaces/IMotorMover.ts b/src/Server/Interfaces/IMotorMover.ts new file mode 100644 index 0000000..a9cbd13 --- /dev/null +++ b/src/Server/Interfaces/IMotorMover.ts @@ -0,0 +1,8 @@ +interface IMotorMover { + moveClockwise(): void, + moveCounterClockwise(): void, + stopMovement(): void, + movementState: 'CLOCKWISE' | 'COUNTERCLOCKWISE' | "IDLE" +} + +export default IMotorMover diff --git a/src/Server/Interfaces/IMotorMoverConstructor.ts b/src/Server/Interfaces/IMotorMoverConstructor.ts new file mode 100644 index 0000000..13a335b --- /dev/null +++ b/src/Server/Interfaces/IMotorMoverConstructor.ts @@ -0,0 +1,8 @@ +import IMotor from "./IMotor"; + +interface IMotorMoverConstructor { + motor: IMotor, + pauseIntervalTime: number +} + +export default IMotorMoverConstructor diff --git a/src/Server/Interfaces/IServer.ts b/src/Server/Interfaces/IServer.ts new file mode 100644 index 0000000..2b5530c --- /dev/null +++ b/src/Server/Interfaces/IServer.ts @@ -0,0 +1,5 @@ +interface IServer { + port: number +} + +export default IServer diff --git a/src/Server/Server.ts b/src/Server/Server.ts index dd00ec9..bdd6c89 100644 --- a/src/Server/Server.ts +++ b/src/Server/Server.ts @@ -50,17 +50,16 @@ class Server { } openSockets = (socketService: any) => { - socketService.on('connection', (socket: Socket) => { + socketService.on('connection', () => { console.log('client connected') - - socket.on('offsets', (offsets: any) => { - this.onReceiveOffsets(offsets) - }) }) + socketService.on('message', (message: any) => { + console.log(message) + }) } - onReceiveOffsets = (offsets: any[]) => { + public onReceiveOffsets = (offsets: any[]) => { this.eventManager.emit('onReceiveOffsets', offsets) } diff --git a/src/Server/UseCases/Factories/makeEventManager.ts b/src/Server/UseCases/Factories/makeEventManager.ts new file mode 100644 index 0000000..bc1570a --- /dev/null +++ b/src/Server/UseCases/Factories/makeEventManager.ts @@ -0,0 +1,7 @@ +import EventManager from "../../EventManager" + +function makeEventManager () { + return new EventManager() +} + +export default makeEventManager \ No newline at end of file diff --git a/src/Server/UseCases/Factories/makeMotorMover.ts b/src/Server/UseCases/Factories/makeMotorMover.ts new file mode 100644 index 0000000..c5a715d --- /dev/null +++ b/src/Server/UseCases/Factories/makeMotorMover.ts @@ -0,0 +1,8 @@ +import MotorMover from "../../Entities/MotorMover" +import IMotorMoverConstructor from "../../Interfaces/IMotorMoverConstructor" + +function makeMotorMover (props: IMotorMoverConstructor) { + return new MotorMover(props) +} + +export default makeMotorMover diff --git a/src/Server/UseCases/Factories/makeServer.ts b/src/Server/UseCases/Factories/makeServer.ts new file mode 100644 index 0000000..cde7929 --- /dev/null +++ b/src/Server/UseCases/Factories/makeServer.ts @@ -0,0 +1,9 @@ +import { Server } from "socket.io"; + +function makeServer (port: number) { + const defaultPort = 5005 + + return new Server(port || defaultPort) +} + +export default makeServer diff --git a/src/Server/main.ts b/src/Server/main.ts index d33ce74..b0863c1 100644 --- a/src/Server/main.ts +++ b/src/Server/main.ts @@ -1,32 +1,32 @@ -import Server from './Server' +import IEventManager from './Interfaces/IEventManager' +import IMotorMover from './Interfaces/IMotorMover' -import EventManager from './EventManager' -import IEventManager from './Interfaces/IEventManager'; -import MotorMover from './MotorMover'; - - -function sleep (ms: number) { - return new Promise(resolve => setTimeout(resolve, ms)); -} +import makeServer from './UseCases/Factories/makeServer' +import makeEventManager from './UseCases/Factories/makeEventManager' +import makeMotorMover from './UseCases/Factories/makeMotorMover' const main = () => { console.log('starting') - const port = 5005 - const server = new Server(port) - const eventManager: IEventManager = new EventManager() - const motorMover = new MotorMover({ pinOne: 3, pinTwo: 5, pinThree: 7, pinFour: 11 }) - // motorMover.moveClockwise() + const port = 5005 + makeServer(port) + + const eventManager: IEventManager = makeEventManager() + + const xAxisMotorMover: IMotorMover = makeMotorMover({ + motor: { pinOne: 3, pinTwo: 5, pinThree: 7, pinFour: 11 }, + pauseIntervalTime: 0.05 + }) eventManager.listen('onReceiveOffsets', (offsets: any[]) => { if (offsets[0]?.x > 50) { - motorMover.moveCounterClockwise() + xAxisMotorMover.moveCounterClockwise() } else if (offsets[0]?.x < - 50) { - motorMover.moveClockwise() + xAxisMotorMover.moveClockwise() } else { - motorMover.stopMovement() + xAxisMotorMover.stopMovement() } - console.log(`moving ${motorMover.movementState}`) + console.log(`moving ${xAxisMotorMover.movementState}`) }) } diff --git a/src/Server/moveMotorStepper.ts b/src/Server/moveMotorStepper.ts deleted file mode 100644 index baacf33..0000000 --- a/src/Server/moveMotorStepper.ts +++ /dev/null @@ -1,22 +0,0 @@ -import { spawn } from 'child_process' - -function sleep (ms: number) { - return new Promise(resolve => setTimeout(resolve, ms)); -} - -const main = async () => { - console.log('start') - - const rotateProcess = spawn('python', ['src/Server/moveStepper.py', '3', '5', '7', '11', 'clockwise', '0.01']) - console.log('running') - - await sleep(5000) - rotateProcess.kill() - - console.log('change direction') - const couterRotateProcess = spawn('python', ['src/Server/moveStepper.py', '3', '5', '7', '11', 'counterClockwise', '0.01']) - await sleep(5000) - couterRotateProcess.kill() -} - -main()