From b1756816d74ec50d3d6063c7ff778b42b7bd2b74 Mon Sep 17 00:00:00 2001 From: Julien Maulny Date: Sat, 7 Apr 2018 14:45:49 +0200 Subject: [PATCH 1/4] Move robot script into bin/, expose scripts through composer --- README.md | 6 +++-- bin/autoload.php | 22 +++++++++++++++++ bin/backward.php | 18 ++++++++++++++ bin/forward.php | 18 ++++++++++++++ bin/left.php | 18 ++++++++++++++ bin/right.php | 18 ++++++++++++++ composer.json | 9 ++++++- src/Api.php | 64 ++++++++++++++++++++++++++++++++++++++++++++++++ src/Motor.php | 2 ++ src/Robot.php | 2 ++ src/backward.php | 13 ---------- src/config.php | 33 ------------------------- src/forward.php | 13 ---------- src/left.php | 13 ---------- src/right.php | 13 ---------- 15 files changed, 174 insertions(+), 88 deletions(-) create mode 100644 bin/autoload.php create mode 100755 bin/backward.php create mode 100755 bin/forward.php create mode 100755 bin/left.php create mode 100755 bin/right.php create mode 100644 src/Api.php delete mode 100644 src/backward.php delete mode 100644 src/config.php delete mode 100644 src/forward.php delete mode 100644 src/left.php delete mode 100644 src/right.php diff --git a/README.md b/README.md index 270e795..0e4a96d 100644 --- a/README.md +++ b/README.md @@ -32,7 +32,9 @@ Just call the script you want among: Example: ``` bash -php src/forward.php +./bin/forward.php +# or +php bin/forward.php ``` Or using docker: @@ -40,7 +42,7 @@ Or using docker: ``` bash make bash -php src/forward.php +./bin/forward.php ``` diff --git a/bin/autoload.php b/bin/autoload.php new file mode 100644 index 0000000..4f13666 --- /dev/null +++ b/bin/autoload.php @@ -0,0 +1,22 @@ +backward(); + +$api->sleepMoveTime(); + +$api->stop(); + +echo 'Ok, Im now stopped.', PHP_EOL; diff --git a/bin/forward.php b/bin/forward.php new file mode 100755 index 0000000..44fe527 --- /dev/null +++ b/bin/forward.php @@ -0,0 +1,18 @@ +#!/usr/bin/php +forward(); + +$api->sleepMoveTime(); + +$api->stop(); + +echo 'Ok, Im now stopped.', PHP_EOL; diff --git a/bin/left.php b/bin/left.php new file mode 100755 index 0000000..4f37dd4 --- /dev/null +++ b/bin/left.php @@ -0,0 +1,18 @@ +#!/usr/bin/php +left(); + +$api->sleepRotateTime(); + +$api->stop(); + +echo 'Ok, Im now stopped.', PHP_EOL; diff --git a/bin/right.php b/bin/right.php new file mode 100755 index 0000000..7265a0f --- /dev/null +++ b/bin/right.php @@ -0,0 +1,18 @@ +#!/usr/bin/php +right(); + +$api->sleepRotateTime(); + +$api->stop(); + +echo 'Ok, Im now stopped.', PHP_EOL; diff --git a/composer.json b/composer.json index 7abc966..7d6478a 100644 --- a/composer.json +++ b/composer.json @@ -1,11 +1,18 @@ { + "name": "alcalyn/drop-robotapi", + "bin": [ + "bin/forward.php", + "bin/backward.php", + "bin/left.php", + "bin/right.php" + ], "require": { "calcinai/phpi": "^0.3.0", "vlucas/phpdotenv": "^2.4" }, "autoload": { "psr-4": { - "": "src/" + "Drop\\RobotApi\\": "src/" } } } diff --git a/src/Api.php b/src/Api.php new file mode 100644 index 0000000..162d9b9 --- /dev/null +++ b/src/Api.php @@ -0,0 +1,64 @@ +load(); + +class Api +{ + public function __construct() + { + $board = BoardFactory::create(); + + $motorLeft = new Motor( + $board->getPin(intval(getenv('PIN_MOTOR_LEFT_EN')))->setFunction(PinFunction::OUTPUT), + $board->getPin(intval(getenv('PIN_MOTOR_LEFT_A')))->setFunction(PinFunction::OUTPUT), + $board->getPin(intval(getenv('PIN_MOTOR_LEFT_B')))->setFunction(PinFunction::OUTPUT) + ); + + $motorRight = new Motor( + $board->getPin(intval(getenv('PIN_MOTOR_RIGHT_EN')))->setFunction(PinFunction::OUTPUT), + $board->getPin(intval(getenv('PIN_MOTOR_RIGHT_A')))->setFunction(PinFunction::OUTPUT), + $board->getPin(intval(getenv('PIN_MOTOR_RIGHT_B')))->setFunction(PinFunction::OUTPUT) + ); + + $this->robot = new Robot($motorLeft, $motorRight); + } + + public function forward() + { + $this->robot->forward(); + } + + public function backward() + { + $this->robot->backward(); + } + + public function left() + { + $this->robot->left(); + } + + public function right() + { + $this->robot->right(); + } + + public function stop() + { + $this->robot->stop(); + } + + public function sleepMoveTime() { + usleep(1E6 * floatval(getenv('MOVE_TIME'))); + } + + public function sleepRotateTime() { + usleep(1E6 * floatval(getenv('ROTATE_TIME'))); + } +} diff --git a/src/Motor.php b/src/Motor.php index f842198..a98f203 100644 --- a/src/Motor.php +++ b/src/Motor.php @@ -1,5 +1,7 @@ backward(); - -sleepMoveTime(); - -$robot->stop(); - -echo 'Ok, Im now stopped.', PHP_EOL; diff --git a/src/config.php b/src/config.php deleted file mode 100644 index 152fc7e..0000000 --- a/src/config.php +++ /dev/null @@ -1,33 +0,0 @@ -load(); - -$board = BoardFactory::create(); - -$motorLeft = new Motor( - $board->getPin(intval(getenv('PIN_MOTOR_LEFT_EN')))->setFunction(PinFunction::OUTPUT), - $board->getPin(intval(getenv('PIN_MOTOR_LEFT_A')))->setFunction(PinFunction::OUTPUT), - $board->getPin(intval(getenv('PIN_MOTOR_LEFT_B')))->setFunction(PinFunction::OUTPUT) -); - -$motorRight = new Motor( - $board->getPin(intval(getenv('PIN_MOTOR_RIGHT_EN')))->setFunction(PinFunction::OUTPUT), - $board->getPin(intval(getenv('PIN_MOTOR_RIGHT_A')))->setFunction(PinFunction::OUTPUT), - $board->getPin(intval(getenv('PIN_MOTOR_RIGHT_B')))->setFunction(PinFunction::OUTPUT) -); - -$robot = new Robot($motorLeft, $motorRight); - -function sleepMoveTime() { - usleep(1E6 * floatval(getenv('MOVE_TIME'))); -} - -function sleepRotateTime() { - usleep(1E6 * floatval(getenv('ROTATE_TIME'))); -} diff --git a/src/forward.php b/src/forward.php deleted file mode 100644 index c157536..0000000 --- a/src/forward.php +++ /dev/null @@ -1,13 +0,0 @@ -forward(); - -sleepMoveTime(); - -$robot->stop(); - -echo 'Ok, Im now stopped.', PHP_EOL; diff --git a/src/left.php b/src/left.php deleted file mode 100644 index d67b38e..0000000 --- a/src/left.php +++ /dev/null @@ -1,13 +0,0 @@ -left(); - -sleepRotateTime(); - -$robot->stop(); - -echo 'Ok, Im now stopped.', PHP_EOL; diff --git a/src/right.php b/src/right.php deleted file mode 100644 index 35b33dd..0000000 --- a/src/right.php +++ /dev/null @@ -1,13 +0,0 @@ -right(); - -sleepRotateTime(); - -$robot->stop(); - -echo 'Ok, Im now stopped.', PHP_EOL; From e0a530d5b9ed45b7667e61d91be98d6e85f292e9 Mon Sep 17 00:00:00 2001 From: Julien Maulny Date: Sat, 7 Apr 2018 15:26:59 +0200 Subject: [PATCH 2/4] fix .env loading --- bin/autoload.php | 13 +++++++++++++ src/Api.php | 3 --- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/bin/autoload.php b/bin/autoload.php index 4f13666..f264007 100644 --- a/bin/autoload.php +++ b/bin/autoload.php @@ -20,3 +20,16 @@ if (!$found) { throw new Exception('Impossible to autoload dependencies. Are composer dependencies installed ?'); } + +$envFile = __DIR__.'/../.env'; + +foreach ($argv as $arg) { + if (preg_match('/^--env=(.*)$/', $arg, $matches)) { + $envFile = realpath($matches[1]); + } +} + +if (file_exists($envFile)) { + $dotenv = new \Dotenv\Dotenv(dirname($envFile), basename($envFile)); + $dotenv->load(); +} diff --git a/src/Api.php b/src/Api.php index 162d9b9..c497a7d 100644 --- a/src/Api.php +++ b/src/Api.php @@ -5,9 +5,6 @@ use Calcinai\PHPi\Factory as BoardFactory; use Calcinai\PHPi\Pin\PinFunction; -$dotenv = new \Dotenv\Dotenv(__DIR__.'/..'); -$dotenv->load(); - class Api { public function __construct() From 5c00a3ed00054197c6d4cb1ad380ec051068a067 Mon Sep 17 00:00:00 2001 From: Julien Maulny Date: Sat, 7 Apr 2018 15:37:48 +0200 Subject: [PATCH 3/4] display warning on .env loading fail --- bin/autoload.php | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/bin/autoload.php b/bin/autoload.php index f264007..317dca9 100644 --- a/bin/autoload.php +++ b/bin/autoload.php @@ -32,4 +32,12 @@ if (file_exists($envFile)) { $dotenv = new \Dotenv\Dotenv(dirname($envFile), basename($envFile)); $dotenv->load(); +} else { + if (!getenv('PIN_MOTOR_LEFT_EN')) { + trigger_error( + 'Environment variables seems to not be loaded. ' + .'Be sure to provide .env file with --env=path/to/.env', + E_USER_WARNING + ); + } } From f687791b0fecf21a7989ec8ff2fc319251f816d7 Mon Sep 17 00:00:00 2001 From: Julien Maulny Date: Sat, 7 Apr 2018 15:46:53 +0200 Subject: [PATCH 4/4] Update composer.json --- composer.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/composer.json b/composer.json index 7d6478a..b1937f6 100644 --- a/composer.json +++ b/composer.json @@ -1,5 +1,5 @@ { - "name": "alcalyn/drop-robotapi", + "name": "darkmira/drop-robotapi", "bin": [ "bin/forward.php", "bin/backward.php",