Added HangmanGame class, but does not work yet

Dependencies:   SDFileSystem app epson mbed msp430 pl tests

Revision:
0:fa7450a43b99
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/pagesensor.cpp	Mon Dec 04 09:32:20 2017 +0000
@@ -0,0 +1,122 @@
+//
+// Filename: pagesensor.cpp
+//
+// Flexbook page for page A1.
+//
+
+#include "pagesensor.h"
+#include "mcp23s17.h"
+#include "hal.h"
+
+
+#include "log.h"
+
+#include <iostream>
+
+namespace Flexbook {
+
+// Ticker sensorpoller;
+// const int POLL_PERIOD = 0.1;
+
+bool operator!=(const SensorData &lhs, const SensorData &rhs)
+{
+    return lhs.temperature != rhs.temperature || lhs.pressure != rhs.pressure;
+}
+
+PageSensor::PageSensor()
+: pageoled(),
+  sensordata()
+{
+    Log("Creating PageSensor");
+
+    //sensorpoller.attach(callback(this, &Flexbook::PageSensor::SensorPoll), POLL_PERIOD);
+}
+
+PageSensor::~PageSensor()
+{
+    Log("Deleting PageSensor");
+
+    //sensorpoller.detach();
+}
+
+void PageSensor::HandlePageActions()
+{
+    //uint8_t dicenumber = PageDice::DiceValue();
+    SensorPoll();
+    //HandleDice();
+    /*pagedice.HandlePageActions();
+
+    if(sensordata != lastsensordata)
+    {
+        //pagedice.SensorPoll(sensordata);
+        //pageoled.SensorPoll(sensordata);
+        lastsensordata = sensordata;
+    }
+    
+    pagedice.HandlePageActions();
+        //pageoled.HandlePageActions();
+    */
+
+    pageoled.SensorPoll(sensordata);
+    //pagedice.HandlePageActions();
+
+}
+
+
+
+// The BinTemp function takes the raw 16-bit AnalogIn data for the temperature sensor
+// and compares it to 7 binning values. It returns the bin number 0..6 which is the
+// number of segments of the OLED bar graph to light up
+uint8_t PageSensor::BinTemp(uint16_t TempSensorReading)
+{
+    // The 7 values in this array are the lowest values of each "bin"
+    // The values must be sorted from low to high, between 0x0000 and 0xFFFF
+    const uint16_t TempBinArray[7] = {53500, 53600, 53700, 53800, 53900, 54000, 54100};
+    uint8_t RetValue = 0;
+    for (int i=0; i<7; i++)
+    {
+        if (TempSensorReading >= TempBinArray[i])
+        {
+            RetValue = (7-i);
+        }
+    }
+    return(RetValue);
+}
+
+// The BinPres function takes the raw 16-bit AnalogIn data for the presssure sensor
+// and compares it to 7 binning values. It returns the bin number 0..6 which is the
+// number of segments of the OLED bar graph to light up
+uint8_t PageSensor::BinPres(uint16_t PresSensorReading)
+{
+    // The 7 values in this array are the lowest values of each "bin"
+    // The values must be sorted from low to high, between 0x0000 and 0xFFFF
+    const uint16_t PresBinArray[7] = {0x0800, 0x0B00, 0x1000, 0x1400, 0x1800, 0x1B00, 0x2000};
+    uint8_t RetValue = 0;
+    for (int i=0; i<7; i++)
+    {
+        if (PresSensorReading >= PresBinArray[i])
+        {
+            RetValue = (7-i);
+        }
+    }
+    return(RetValue);
+}
+    
+void PageSensor::SensorPoll()
+{
+    //sensorpoller.detach();
+    
+    AnalogIn RawTemp(p15);
+    AnalogIn RawPres(p16);
+    //printf("%i  %i  \n", RawTemp, RawPres);
+    sensordata.temperature = BinTemp(RawTemp.read_u16());
+    sensordata.pressure = BinPres(RawPres.read_u16());
+       
+    //sensorpoller.attach(callback(this, &Flexbook::PageSensor::SensorPoll), POLL_PERIOD);
+}
+
+} // End Flexbook namespace.
+
+
+
+