Extracted lcdbridge and added first signs of RPI B+ to pi mapper
This commit is contained in:
parent
1449ec643f
commit
ec4e5bd6ab
44
README.md
44
README.md
@ -109,48 +109,4 @@ be portable/supported/efficient/a good idea):
|
||||
echo $lcd->getCols(); // 19
|
||||
|
||||
|
||||
### LCD Bridge
|
||||
|
||||
The LCD bridge will be able to bridge any device class implementing `LcdDeviceInterface`
|
||||
to stdin or a named pipe. This basically creates a user-space daemon to interface with
|
||||
the display without having to fiddle with bits.
|
||||
|
||||
$ lcdbridge -t pcd8544 --stdin
|
||||
CLR
|
||||
LOC 0 0
|
||||
FONT 0
|
||||
MODE +BR
|
||||
OUT "Hello World"
|
||||
^C
|
||||
$
|
||||
|
||||
Commands should include:
|
||||
|
||||
* `CLR` - clears the display (`LcdDeviceInterface#clear()`)
|
||||
* `LOC n m` - moves the cursor to line n column m (0-indexed) (`LcdDeviceInterface#setCursorPos(n,m)`)
|
||||
* `FONT n` - loads the default font (0) or a custom font file (`LcdDeviceInterface#setFont()`)
|
||||
* `OUT s` - Write text to the display (`LcdDeviceInterface#write()`)
|
||||
* `MODE s` - Set text modes (`LcdDeviceInterface#setTextMode()`)
|
||||
|
||||
|
||||
#### Modes
|
||||
|
||||
As supported:
|
||||
|
||||
* `+R`/`-R` - Set/clear inverse
|
||||
* `+B`/`-B` - Set/clear bold
|
||||
|
||||
|
||||
#### Fonts
|
||||
|
||||
|
||||
|
||||
#### Location and write
|
||||
|
||||
Location is maintained and incremented after writes.
|
||||
|
||||
LOC 0 0
|
||||
OUT "12345"
|
||||
OUT "67890" <-- continued at 0 5
|
||||
|
||||
|
||||
|
@ -1,10 +0,0 @@
|
||||
#!/usr/bin/env php
|
||||
<?php
|
||||
|
||||
require_once __DIR__."/../vendor/autoload.php";
|
||||
|
||||
NoccyLabs\LcdBridge\LcdBridgeApplication::main();
|
||||
|
||||
|
||||
|
||||
|
@ -1,23 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace NoccyLabs\LcdBridge;
|
||||
|
||||
use Symfony\Component\Console\Command\Command;
|
||||
use Symfony\Component\Console\Input\InputInterface;
|
||||
use Symfony\Component\Console\Output\OutputInterface;
|
||||
|
||||
class DaemonCommand extends Command
|
||||
{
|
||||
protected function configure()
|
||||
{
|
||||
$this
|
||||
->setName("daemon")
|
||||
->setDescription("Spawn a new daemon")
|
||||
;
|
||||
}
|
||||
|
||||
protected function execute(InputInterface $input, OutputInterface $output)
|
||||
{
|
||||
|
||||
}
|
||||
}
|
@ -1,17 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace NoccyLabs\LcdBridge;
|
||||
|
||||
use Symfony\Component\Console\Application as ConsoleApplication;
|
||||
|
||||
class LcdBridgeApplication extends ConsoleApplication
|
||||
{
|
||||
public static function main()
|
||||
{
|
||||
$app = new self("lcdbridge", "0.1");
|
||||
|
||||
$app->add( new DaemonCommand );
|
||||
|
||||
$app->run();
|
||||
}
|
||||
}
|
@ -24,11 +24,15 @@ use NoccyLabs\Gpio\Exception\GpioException;
|
||||
|
||||
class WiringPiMapper implements GpioMapperInterface
|
||||
{
|
||||
const REV_A = 1;
|
||||
const REV_B = 2;
|
||||
const REV_BPLUS = 3;
|
||||
|
||||
protected $version;
|
||||
|
||||
public function __construct($version=1)
|
||||
{
|
||||
$this->version = (int)$version;
|
||||
$this->version = $version;
|
||||
}
|
||||
|
||||
/** {@inheritdoc} */
|
||||
@ -54,13 +58,19 @@ class WiringPiMapper implements GpioMapperInterface
|
||||
case 30: return 19;
|
||||
case 31: return 20;
|
||||
}
|
||||
if ($this->version == 2) {
|
||||
if ($this->version == self::REV_B) {
|
||||
switch ($gpio) {
|
||||
case 27: return 2;
|
||||
case 2: return 8;
|
||||
case 3: return 9;
|
||||
}
|
||||
} elseif ($this->version == 1) {
|
||||
} elseif ($this->version == self::REV_BPLUS) {
|
||||
switch ($gpio) {
|
||||
case 27: return 2;
|
||||
case 2: return 8;
|
||||
case 3: return 9;
|
||||
}
|
||||
} elseif ($this->version == self::REV_A) {
|
||||
switch ($gpio) {
|
||||
case 21: return 2;
|
||||
case 9: return 8;
|
||||
@ -77,7 +87,8 @@ class WiringPiMapper implements GpioMapperInterface
|
||||
case 0: return 17;
|
||||
case 1: return 18;
|
||||
case 2:
|
||||
if ($this->version == 2) {
|
||||
if (($this->version == self::REV_B)
|
||||
||($this->version == self::REV_BPLUS)) {
|
||||
return 27;
|
||||
}
|
||||
return 21;
|
||||
@ -87,12 +98,14 @@ class WiringPiMapper implements GpioMapperInterface
|
||||
case 6: return 25;
|
||||
case 7: return 11;
|
||||
case 8:
|
||||
if ($this->version == 2) {
|
||||
if (($this->version == self::REV_B)
|
||||
||($this->version == self::REV_BPLUS)) {
|
||||
return 2;
|
||||
}
|
||||
return 0;
|
||||
case 9:
|
||||
if ($this->version == 2) {
|
||||
if (($this->version == self::REV_B)
|
||||
||($this->version == self::REV_BPLUS)) {
|
||||
return 3;
|
||||
}
|
||||
return 1;
|
||||
|
12
lib/InterruptHandler.php
Normal file
12
lib/InterruptHandler.php
Normal file
@ -0,0 +1,12 @@
|
||||
<?php
|
||||
|
||||
namespace NoccyLabs\LinuxGpio;
|
||||
|
||||
class InterruptHandler
|
||||
{
|
||||
public function setInterrupt(Gpio $pin, $edge = null, callable $handler = null)
|
||||
{
|
||||
}
|
||||
|
||||
}
|
||||
|
7
phpunit.xml
Normal file
7
phpunit.xml
Normal file
@ -0,0 +1,7 @@
|
||||
<phpunit bootstrap="tests/bootstrap.php">
|
||||
<testsuites>
|
||||
<testsuite name="linux-gpio">
|
||||
<directory suffix="Test.php">tests/src/</directory>
|
||||
</testsuite>
|
||||
</testsuites>
|
||||
</phpunit>
|
3
tests/bootstrap.php
Normal file
3
tests/bootstrap.php
Normal file
@ -0,0 +1,3 @@
|
||||
<?php
|
||||
|
||||
require_once __DIR__."/../vendor/autoload.php";
|
34
tests/src/GpioTest.php
Normal file
34
tests/src/GpioTest.php
Normal file
@ -0,0 +1,34 @@
|
||||
<?php
|
||||
|
||||
namespace NoccyLabs\Gpio;
|
||||
|
||||
class GpioTest extends \PhpUnit_Framework_TestCase
|
||||
{
|
||||
protected $gpio;
|
||||
|
||||
public function setup()
|
||||
{
|
||||
// dummy gpio
|
||||
$this->gpio = new Gpio(true);
|
||||
}
|
||||
|
||||
public function testAccessingGpioPins()
|
||||
{
|
||||
$pin0 = $this->gpio[0];
|
||||
$this->assertInstanceOf('NoccyLabs\Gpio\GpioPin', $pin0);
|
||||
$pin1 = $this->gpio[1];
|
||||
$this->assertInstanceOf('NoccyLabs\Gpio\GpioPin', $pin1);
|
||||
$this->assertNotEquals($pin0, $pin1);
|
||||
}
|
||||
|
||||
public function testAccessingGpioPinsViaMapper()
|
||||
{
|
||||
$this->gpio->setMapper( new GpioMapper\WiringPiMapper );
|
||||
$pin0 = $this->gpio[0];
|
||||
$this->assertInstanceOf('NoccyLabs\Gpio\GpioPin', $pin0);
|
||||
$pin1 = $this->gpio[1];
|
||||
$this->assertInstanceOf('NoccyLabs\Gpio\GpioPin', $pin1);
|
||||
$this->assertNotEquals($pin0, $pin1);
|
||||
}
|
||||
}
|
||||
|
Loading…
Reference in New Issue
Block a user