summaryrefslogtreecommitdiff
path: root/peripheral/libupm/src/ds1808lc/ds1808lc.cxx
diff options
context:
space:
mode:
Diffstat (limited to 'peripheral/libupm/src/ds1808lc/ds1808lc.cxx')
-rw-r--r--peripheral/libupm/src/ds1808lc/ds1808lc.cxx134
1 files changed, 0 insertions, 134 deletions
diff --git a/peripheral/libupm/src/ds1808lc/ds1808lc.cxx b/peripheral/libupm/src/ds1808lc/ds1808lc.cxx
deleted file mode 100644
index ff98980..0000000
--- a/peripheral/libupm/src/ds1808lc/ds1808lc.cxx
+++ /dev/null
@@ -1,134 +0,0 @@
-#include <iostream>
-#include <unistd.h>
-#include <string.h>
-#include <cmath>
-#include "ds1808lc.hpp"
-#include "mraa-utils.hpp"
-
-#define DS1808_I2C_ADDR 0x28
-#define DS1808_POT2_OFFSET 0x40
-#define DS1808_MAX_POT_VALUE 0x20
-#define DS1808_LOW_VALUE 32 // Lowest pot value that the eye can differentiate from 0
-#define DS1808_HIGH_VALUE 51 // Highest pot value that the eye can differentiate from full
-
-
-namespace upm {
-DS1808LC::DS1808LC(int gpioPower, int i2cBus)
-{
- mraa_set_log_level(7);
- pinPower = gpioPower;
- i2c = new mraa::I2c(i2cBus);
- status = i2c->address(DS1808_I2C_ADDR);
- getBrightness();
-}
-
-DS1808LC::~DS1808LC()
-{
-}
-
-
-bool DS1808LC::isPowered()
-{
- return static_cast<bool>(MraaUtils::getGpio(pinPower));
-}
-
-void DS1808LC::setPowerOn()
-{
- if (!isPowered())
- {
- MraaUtils::setGpio(pinPower, 1);
- setBrightness(0);
- }
-}
-
-void DS1808LC::setPowerOff()
-{
- MraaUtils::setGpio(pinPower, 0);
-}
-
-
-int DS1808LC::getBrightness()
-{
- uint8_t values[2];
-
- if (i2c->read(values, 2) == 2) {
- return getPercentBrightness(values[0], values[1]);
- }
- else
- UPM_THROW("i2c read error");
-}
-
-
-void DS1808LC::setBrightness(int dutyPercent)
-{
- uint8_t values[2];
- values[0] = getPot1Value(dutyPercent);
- values[1] = getPot2Value(dutyPercent);
- status = i2c->write(values, 2);
- if (status != mraa::SUCCESS)
- UPM_THROW("i2c write error");
-}
-
-//
-// Helper Function
-//
-
-uint8_t DS1808LC::getPot1Value(int dutyPercent) {
- uint8_t result = 0;
- int scaledResistance = getScaledResistance(dutyPercent);
-
- if (scaledResistance > DS1808_MAX_POT_VALUE)
- result = DS1808_MAX_POT_VALUE;
- else {
- result = scaledResistance;
- }
-
- return result;
-}
-
-uint8_t DS1808LC::getPot2Value(int dutyPercent) {
- uint8_t result = 0;
- int scaledResistance = getScaledResistance(dutyPercent);
-
- if (scaledResistance <= DS1808_MAX_POT_VALUE)
- result = 0;
- else {
- result = scaledResistance - DS1808_MAX_POT_VALUE;
- }
-
- if (result > DS1808_MAX_POT_VALUE)
- result = DS1808_MAX_POT_VALUE;
-
- return result | DS1808_POT2_OFFSET;
-}
-
-int DS1808LC::getPercentBrightness(uint8_t val1, uint8_t val2) {
- val2 = val2 & (~DS1808_POT2_OFFSET);
- int scaledResistance = val1 + val2;
- int percent;
-
- if (scaledResistance < DS1808_LOW_VALUE)
- percent = 100;
- else if (scaledResistance > DS1808_HIGH_VALUE)
- percent = 0;
- else
- percent = 100 - (((scaledResistance - DS1808_LOW_VALUE) * 100) / (DS1808_HIGH_VALUE - DS1808_LOW_VALUE));
- return percent;
-}
-
-int DS1808LC::getScaledResistance(int dutyPercent) {
- int scaledResistance;
-
- if (dutyPercent == 0)
- scaledResistance = 2 * DS1808_MAX_POT_VALUE;
- else if (dutyPercent == 100)
- scaledResistance = 0;
- else
- scaledResistance = (((100 - dutyPercent) * (DS1808_HIGH_VALUE - DS1808_LOW_VALUE)) / 100) + DS1808_LOW_VALUE;
- return scaledResistance;
-}
-
-}
-
-
-