Forked from romilly. Changed the way SPI handler is injected in constructor
Fork of MCP23S17 by
Revision 8:841b19734955, committed 2010-08-23
- Comitter:
- romilly
- Date:
- Mon Aug 23 10:57:59 2010 +0000
- Parent:
- 7:53498e24592c
- Child:
- 9:068b1e8909bb
- Commit message:
Changed in this revision
--- 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
