v 0.4

Dependents:   MCP23S17Test MCP23S17_Basic_IO_Demo HelloWorld Lab3-SnakeGame ... more

Files at this revision

API Documentation at this revision

Comitter:
romilly
Date:
Mon Aug 23 10:57:59 2010 +0000
Parent:
7:53498e24592c
Child:
9:068b1e8909bb
Commit message:

Changed in this revision

MCP23S17.cpp Show annotated file Show diff for this revision Revisions of this file
MCP23S17.h Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show diff for this revision Revisions of this file
--- a/MCP23S17.cpp	Sun Aug 22 15:37:25 2010 +0000
+++ b/MCP23S17.cpp	Mon Aug 23 10:57:59 2010 +0000
@@ -2,7 +2,7 @@
 * Copyright (c) 2010 Romilly Cocking
 * Released under the MIT License: http://mbed.org/license/mit
 *
-* version 0.2
+* version 0.3
 */
 
 #include "mbed.h"
@@ -23,6 +23,10 @@
     return result;
 }
 
+char MCP23S17::_read(Port port, char address) {
+    return _read(address + (char) port);
+}
+
 void MCP23S17::_write(char address, char data) {
     _ncs = 0;
     _spi.write(_writeOpcode);
@@ -31,24 +35,21 @@
     _ncs = 1;
 }
 
+void  MCP23S17::_write(Port port, char address, char data) {
+    _write(address + (char) port, data);
+}
+
 void MCP23S17::_init() {
     _write(IOCON, (IOCON_BYTE_MODE | IOCON_HAEN )); // Hardware addressing on, operations toggle between A and B registers
 }
 
-void MCP23S17::directionA(char direction) {
-    _write(IODIRA, direction);
+void MCP23S17::direction(Port port, char direction) {
+    _write(port, IODIRA, direction);
 }
 
-void MCP23S17::directionB(char direction) {
-    _write(IODIRB, direction);
-}
 
-void MCP23S17::interruptEnableA(char interruptsEnabledMask) {
-    _write(GPINTENA, interruptsEnabledMask);
-}
-
-void MCP23S17::interruptEnableB(char interruptsEnabledMask) {
-    _write(GPINTENB, interruptsEnabledMask);
+void MCP23S17::interruptEnable(Port port, char interruptsEnabledMask) {
+    _write(port, GPINTENA, interruptsEnabledMask);
 }
 
 void MCP23S17::mirrorInterrupts(bool mirror) {
@@ -72,26 +73,19 @@
     _write(IOCON, iocon);
 }
 
-void MCP23S17::defaultValueA(char valuesToCompare) {
-    _write(DEFVALA, valuesToCompare);
+void MCP23S17::defaultValue(Port port, char valuesToCompare) {
+    _write(port, DEFVALA, valuesToCompare);
 }
 
-void MCP23S17::interruptControlA(char interruptContolBits) {
-    _write(INTCONA, interruptContolBits);
-}
-
-void MCP23S17::outputA(char byte) {
-    _write(OLATA, byte);
+void MCP23S17::interruptControl(Port port, char interruptContolBits) {
+    _write(port, INTCONA, interruptContolBits);
 }
 
-void MCP23S17::outputB(char byte) {
-    _write(OLATB, byte);
+void MCP23S17::write(Port port, char byte) {
+    _write(port, OLATA, byte);
 }
 
-char MCP23S17::inputA() {
-    return _read(GPIOA);
+char MCP23S17::read(Port port) {
+    return _read(port, GPIOA);
 }
 
-char MCP23S17::inputB() {
-    return _read(GPIOB);
-}
--- a/MCP23S17.h	Sun Aug 22 15:37:25 2010 +0000
+++ b/MCP23S17.h	Mon Aug 23 10:57:59 2010 +0000
@@ -2,7 +2,7 @@
 * Copyright (c) 2010 Romilly Cocking
 * Released under the MIT License: http://mbed.org/license/mit
 *
-* version 0.2
+* version 0.3
 */
 #include "mbed.h"
 
@@ -33,27 +33,26 @@
 #define IOCON_HAEN  0x08 // Hardware address enable
 
 enum Polarity { ACTIVE_LOW , ACTIVE_HIGH };
+enum Port { PORT_A, PORT_B };
 
 class MCP23S17 {
 public:
     MCP23S17(SPI& spi, PinName ncs, char writeOpcode);
-    void directionA(char direction);
-    void directionB(char direction);
-    void interruptEnableA(char interruptsEnabledMask);
-    void interruptEnableB(char interruptsEnabledMask);
+    void direction(Port port, char direction);
+    void interruptEnable(Port port, char interruptsEnabledMask);
     void interruptPolarity(Polarity polarity);
     void mirrorInterrupts(bool mirror);
-    void defaultValueA(char valuesToCompare);
-    void interruptControlA(char interruptContolBits);
-    char inputA();
-    char inputB();
-    void outputA(char byte);
-    void outputB(char byte);
+    void defaultValue(Port port, char valuesToCompare);
+    void interruptControl(Port port, char interruptContolBits);
+    char read(Port port);
+    void write(Port port, char byte);
 protected:
     SPI& _spi;
     DigitalOut _ncs;
     void _init();
+    void _write(Port port, char address, char data);
     void _write(char address, char data);
+    char _read(Port port, char address);
     char _read(char address);
     char _readOpcode;
     char _writeOpcode;
--- a/mbed.bld	Sun Aug 22 15:37:25 2010 +0000
+++ /dev/null	Thu Jan 01 00:00:00 1970 +0000
@@ -1,1 +0,0 @@
-http://mbed.org/users/mbed_official/code/mbed/builds/9114680c05da