From 9c7858961bd956f632d6256a7581fc40e3f7909f Mon Sep 17 00:00:00 2001 From: hg Date: Wed, 18 Jun 2014 01:39:16 +0200 Subject: [PATCH] Improved IO16-Bricklet. --- src/devices/TfIO16Bricklet.cpp | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/src/devices/TfIO16Bricklet.cpp b/src/devices/TfIO16Bricklet.cpp index 5068077..144ec01 100644 --- a/src/devices/TfIO16Bricklet.cpp +++ b/src/devices/TfIO16Bricklet.cpp @@ -197,7 +197,17 @@ void TfIO16Bricklet::setPort(char port, uint8_t value_mask) { } void TfIO16Bricklet::setPort(char port, uint8_t pin_mask, bool value) { - throw TfError("Not implemented", TfErrorCode::E_UNKNOWN_ERROR_CODE); + uint8_t mask; + if (port == 'a') { + mask = outMapA = (outMapA & ~pin_mask) | ((value ? 0xFF : 0x00) & pin_mask); + } else if (port == 'b') { + mask = outMapB = (outMapB & ~pin_mask) | ((value ? 0xFF : 0x00) & pin_mask); + } else { + std::ostringstream ss; + ss << "Unknown Port: " << port << "."; + throw TfError(ss.str(), TfErrorCode::E_INVALID_PARAMETER); + } + setPort(port, mask); }