diff --git a/software/Basic_Blink/.cproject b/software/Basic_Blink/.cproject
new file mode 100644
index 0000000..67c056d
--- /dev/null
+++ b/software/Basic_Blink/.cproject
@@ -0,0 +1,151 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ make
+ -f ${ProjDirPath}/Makefile
+ all
+ true
+ true
+ true
+
+
+ make
+ -f ${ProjDirPath}/Makefile
+ clean
+ true
+ true
+ true
+
+
+ make
+ -f ${ProjDirPath}/Makefile
+ flash
+ true
+ true
+ true
+
+
+ make
+ -f ${ProjDirPath}/Makefile
+ flashonefile
+ true
+ true
+ true
+
+
+ make
+ -f ${ProjDirPath}/Makefile
+ flashinit
+ true
+ true
+ true
+
+
+ make
+ -f ${ProjDirPath}/Makefile
+ flashboot
+ true
+ true
+ true
+
+
+ make
+ -f ${ProjDirPath}/Makefile
+ rebuild
+ true
+ true
+ true
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/software/Basic_Blink/.project b/software/Basic_Blink/.project
new file mode 100644
index 0000000..045ddec
--- /dev/null
+++ b/software/Basic_Blink/.project
@@ -0,0 +1,28 @@
+
+
+ Basic_Blink
+
+
+ SmingFramework
+
+
+
+ org.eclipse.cdt.managedbuilder.core.genmakebuilder
+ clean,full,incremental,
+
+
+
+
+ org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder
+ full,incremental,
+
+
+
+
+
+ org.eclipse.cdt.core.cnature
+ org.eclipse.cdt.core.ccnature
+ org.eclipse.cdt.managedbuilder.core.managedBuildNature
+ org.eclipse.cdt.managedbuilder.core.ScannerConfigNature
+
+
diff --git a/software/Basic_Blink/.settings/language.settings.xml b/software/Basic_Blink/.settings/language.settings.xml
new file mode 100644
index 0000000..f80ea40
--- /dev/null
+++ b/software/Basic_Blink/.settings/language.settings.xml
@@ -0,0 +1,15 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/software/Basic_Blink/Makefile b/software/Basic_Blink/Makefile
new file mode 100644
index 0000000..16d76cd
--- /dev/null
+++ b/software/Basic_Blink/Makefile
@@ -0,0 +1,24 @@
+#####################################################################
+#### Please don't change this file. Use Makefile-user.mk instead ####
+#####################################################################
+# Including user Makefile.
+# Should be used to set project-specific parameters
+include ./Makefile-user.mk
+
+# Important parameters check.
+# We need to make sure SMING_HOME and ESP_HOME variables are set.
+# You can use Makefile-user.mk in each project or use enviromental variables to set it globally.
+
+ifndef SMING_HOME
+$(error SMING_HOME is not set. Please configure it in Makefile-user.mk)
+endif
+ifndef ESP_HOME
+$(error ESP_HOME is not set. Please configure it in Makefile-user.mk)
+endif
+
+# Include main Sming Makefile
+ifeq ($(RBOOT_ENABLED), 1)
+include $(SMING_HOME)/Makefile-rboot.mk
+else
+include $(SMING_HOME)/Makefile-project.mk
+endif
diff --git a/software/Basic_Blink/Makefile-user.mk b/software/Basic_Blink/Makefile-user.mk
new file mode 100644
index 0000000..07057cf
--- /dev/null
+++ b/software/Basic_Blink/Makefile-user.mk
@@ -0,0 +1,39 @@
+## Local build configuration
+## Parameters configured here will override default and ENV values.
+## Uncomment and change examples:
+
+## Add your source directories here separated by space
+# MODULES = app
+# EXTRA_INCDIR = include
+
+## ESP_HOME sets the path where ESP tools and SDK are located.
+## Windows:
+# ESP_HOME = c:/Espressif
+
+## MacOS / Linux:
+# ESP_HOME = /opt/esp-open-sdk
+
+## SMING_HOME sets the path where Sming framework is located.
+## Windows:
+# SMING_HOME = c:/tools/sming/Sming
+
+## MacOS / Linux
+# SMING_HOME = /opt/sming/Sming
+
+## COM port parameter is reqruied to flash firmware correctly.
+## Windows:
+ COM_PORT = COM13
+
+## MacOS / Linux:
+# COM_PORT = /dev/tty.usbserial
+
+## Com port speed
+COM_SPEED = 460800
+
+## Configure flash parameters (for ESP12-E and other new boards):
+# SPI_MODE = dio
+
+## SPIFFS options
+DISABLE_SPIFFS = 1
+# SPIFF_FILES = files
+
diff --git a/software/Basic_Blink/app/adc.h b/software/Basic_Blink/app/adc.h
new file mode 100644
index 0000000..85628c1
--- /dev/null
+++ b/software/Basic_Blink/app/adc.h
@@ -0,0 +1,27 @@
+/*
+ * adc.h
+ *
+ * Created on: Jul 20, 2017
+ * Author: Elmar
+ */
+
+#ifndef APP_ADC_H_
+#define APP_ADC_H_
+
+#include "sensor.h"
+
+namespace rijnfel {
+
+template
+class cADC: public cSensor {
+public:
+ cADC() {
+
+ }
+ virtual Voltage ConvertSample(Sample & sample) = 0;
+ virtual ~cADC() {
+
+ }
+};
+}
+#endif /* APP_ADC_H_ */
diff --git a/software/Basic_Blink/app/ads101x.cpp b/software/Basic_Blink/app/ads101x.cpp
new file mode 100644
index 0000000..9b2d88a
--- /dev/null
+++ b/software/Basic_Blink/app/ads101x.cpp
@@ -0,0 +1,167 @@
+/*
+ * ADS101x.cpp
+ *
+ * Created on: Jul 20, 2017
+ * Author: Elmar
+ */
+
+#include "ads101x.h"
+#include
+
+namespace rijnfel {
+
+namespace ads {
+
+static const uint16_t OS_POS = 15;
+static const uint16_t OS_MASK = 1 << OS_POS;
+static const uint16_t MUX_POS = 12;
+static const uint16_t MUX_MASK = 7 << MUX_POS;
+static const uint16_t PGA_POS = 9;
+static const uint16_t PGA_MASK = 7 << PGA_POS;
+static const uint16_t MODE_POS = 8;
+static const uint16_t MODE_MASK = 1 << MODE_POS;
+static const uint16_t DR_POS = 5;
+static const uint16_t DR_MASK = 7 << DR_POS;
+
+#define OS_BIT(val) ((val << OS_POS) & OS_MASK)
+#define MUX_BIT(val) ((val << MUX_POS) & MUX_MASK)
+#define PGA_BIT(val) ((val << PGA_POS) & PGA_MASK)
+#define MODE_BIT(val) ((val << MODE_POS) & MODE_MASK)
+#define DR_BIT(val) ((val << DR_POS) & DR_MASK)
+
+static const uint8_t REGISTER_CONVERSION = 0;
+static const uint8_t REGISTER_CONFIG = 1;
+static const uint8_t REGISTER_LOW_TRESHOLD = 2;
+static const uint8_t REGISTER_HIGH_TRESHOLD = 2;
+
+cADS101x::cADS101x(uint8_t i_address) :
+ m_address(i_address), m_readyPin(0) {
+ SetDefaults();
+}
+cADS101x::cADS101x(uint8_t i_readyPin, uint8_t i_address) :
+ m_address(i_address), m_readyPin(i_readyPin) {
+ SetDefaults();
+}
+
+void cADS101x::SetOneShot(bool i_oneShot) {
+ m_oneShot = i_oneShot;
+ WriteSettings(CreateSettings(0));
+}
+
+void cADS101x::SetGain(enum eGainAmplifier i_gain) {
+ m_gain = i_gain;
+ WriteSettings(CreateSettings(0));
+}
+
+void cADS101x::SetMux(enum eInputMux i_mux) {
+ m_mux = i_mux;
+ WriteSettings(CreateSettings(0));
+}
+
+void cADS101x::SetSampleSpeed(enum eSampleSpeed i_sampleSpeed) {
+ m_sampleSpeed = i_sampleSpeed;
+ WriteSettings(CreateSettings(0));
+}
+
+void cADS101x::WaitSample(void) {
+ OneShot();
+ uint16 readSettings = 0;
+ do {
+ readSettings = GetSettings();
+ } while (readSettings & OS_MASK != 1);
+}
+
+bool cADS101x::IsReady(void) {
+ return (GetSettings() & OS_MASK);
+}
+
+uint16_t cADS101x::CreateSettings(uint8_t start) {
+ return OS_BIT(start) | MUX_BIT(m_mux) | PGA_BIT(m_gain)
+ | MODE_BIT(m_oneShot) | DR_BIT(m_sampleSpeed);
+}
+
+void cADS101x::WriteSettings(uint16_t i_settings) {
+ Wire.beginTransmission(m_address);
+ Wire.write(REGISTER_CONFIG);
+ Wire.write((uint8_t) (i_settings >> 8));
+ Wire.write((uint8_t) (i_settings & 0xFF));
+ Wire.endTransmission();
+
+}
+
+void cADS101x::OneShot(void) {
+ if (m_oneShot) {
+ uint16_t settings = CreateSettings(1);
+ WriteSettings(settings);
+ }
+}
+
+uint16_t cADS101x::GetSettings(void) {
+ uint16_t settings;
+ Wire.beginTransmission(m_address);
+ Wire.write(REGISTER_CONFIG);
+ Wire.endTransmission();
+ Wire.beginTransmission(m_address);
+ Wire.requestFrom((int) m_address, 2); //16 bits
+ settings = Wire.read() << 8;
+ settings |= Wire.read();
+ return settings;
+}
+ads_voltage_t cADS101x::ConvertSample(ads_sample_t & sample) {
+ //Raw sample is in (parts of) millivolts, go to micro to remove fractions
+ ads_voltage_t returnType = (sample.rawSample >> 4) * 1000; //Multiply for extra precision
+ switch (sample.gain) {
+ case eGainAmplifier::FSR_0_256:
+ //one lsb is 0.256 mv = 256 uv
+ returnType *= 256;
+ break;
+ case eGainAmplifier::FSR_0_512:
+ //one lsb is 0.512 mv = 512 uv
+ returnType *= 512;
+ break;
+ case eGainAmplifier::FSR_1_024:
+ //one lsb is 1.024 mv = 1024 uv
+ returnType *= 1024;
+ break;
+ case eGainAmplifier::FSR_2_048:
+ //one lsb is 2.048 mv = 2048 uv
+ returnType *= 2048;
+ break;
+ case eGainAmplifier::FSR_4_096:
+ //one lsb is 4.096 mv = 4096 uv
+ returnType *= 4096;
+ break;
+ case eGainAmplifier::FSR_6_144:
+ //one lsb is 6.144 mv = 6144 uv
+ returnType *= 6144;
+ break;
+ }
+ return returnType;
+}
+
+ads_sample_t cADS101x::RawSample(void) {
+ OneShot();
+ ads_sample_t sample;
+ Wire.beginTransmission(m_address);
+ Wire.write(REGISTER_CONVERSION);
+ Wire.endTransmission();
+ Wire.beginTransmission(m_address);
+ Wire.requestFrom((int) m_address, 2); //16 bits
+ sample.rawSample = Wire.read() << 8;
+ sample.rawSample |= Wire.read();
+ sample.gain = m_gain;
+ sample.mux = m_mux;
+ m_latestSample = sample;
+ return sample;
+}
+
+void cADS101x::SetDefaults(void) {
+ m_mux = eInputMux::AIN_0_1;
+ m_gain = eGainAmplifier::FSR_2_048;
+ m_sampleSpeed = eSampleSpeed::SPS_1600;
+ m_oneShot = true;
+}
+
+}
+
+}
diff --git a/software/Basic_Blink/app/ads101x.h b/software/Basic_Blink/app/ads101x.h
new file mode 100644
index 0000000..0e2d738
--- /dev/null
+++ b/software/Basic_Blink/app/ads101x.h
@@ -0,0 +1,70 @@
+/*
+ * ADS101x.h
+ *
+ * Created on: Jul 20, 2017
+ * Author: Elmar
+ */
+
+#ifndef APP_ADS101X_H_
+#define APP_ADS101X_H_
+
+#include
+#include "adc.h"
+
+namespace rijnfel {
+
+namespace ads {
+
+//Voltage in uV
+typedef int32_t ads_voltage_t;
+
+enum eInputMux {
+ AIN_0_1, AIN_0_3, AIN_1_3, AIN_2_3, AIN_0, AIN_1, AIN_2, AIN_3
+};
+enum eGainAmplifier {
+ FSR_6_144, FSR_4_096, FSR_2_048, FSR_1_024, FSR_0_512, FSR_0_256
+};
+enum eSampleSpeed {
+ SPS_128, SPS_250, SPS_490, SPS_920, SPS_1600, SPS_2400, SPS_3300
+};
+
+struct ads_sample_t {
+ int16_t rawSample;
+ enum eInputMux mux;
+ enum eGainAmplifier gain;
+};
+
+class cADS101x: cADC {
+public:
+
+ cADS101x(uint8_t i_address = 0x48);
+ cADS101x(uint8_t i_readyPin, uint8_t i_address = 0x48);
+
+ void SetOneShot(bool i_oneShot = true);
+ void SetGain(enum eGainAmplifier i_gain);
+ void SetMux(enum eInputMux i_mux);
+ void SetSampleSpeed(enum eSampleSpeed i_speed);
+ virtual void WaitSample(void);
+ virtual bool IsReady(void);
+ uint16_t GetSettings(void);
+
+ virtual ads_sample_t RawSample(void);
+ virtual ads_voltage_t ConvertSample(ads_sample_t & sample);
+ virtual ~cADS101x() {
+
+ }
+private:
+ uint16_t CreateSettings(uint8_t i_startSample);
+ void WriteSettings(uint16_t i_settings);
+ void SetDefaults(void);
+ void OneShot(void);
+private:
+ uint8_t m_address, m_readyPin;
+ bool m_oneShot;
+ enum eInputMux m_mux;
+ enum eGainAmplifier m_gain;
+ enum eSampleSpeed m_sampleSpeed;
+};
+}
+}
+#endif /* APP_ADS101X_H_ */
diff --git a/software/Basic_Blink/app/application.cpp b/software/Basic_Blink/app/application.cpp
new file mode 100644
index 0000000..6413cc8
--- /dev/null
+++ b/software/Basic_Blink/app/application.cpp
@@ -0,0 +1,66 @@
+#include
+#include
+#include
+#include "ads101x.h"
+
+#define LED_PIN 2 // GPIO2
+
+using namespace rijnfel;
+Timer procTimer;
+ads::cADS101x adc;
+bool state = true;
+uint16_t sampless = 1;
+uint8_t channel = 0;
+unsigned int average[4];
+
+void readAdc() {
+ //while (adc.IsReady()) {
+ adc.SetMux(static_cast(ads::eInputMux::AIN_0 + channel));
+ channel++;
+ if (channel > 3) {
+ channel = 0;
+ }
+ uint16_t settings = adc.GetSettings();
+ Serial.printf("Settings = %d;\n\r", settings);
+
+ if (false) {
+ adc.SetMux(
+ static_cast(ads::eInputMux::AIN_0 + channel));
+ ads::ads_sample_t sample = adc.RawSample();
+ average[channel] += adc.ConvertSample(sample) / 1000; //want it in mv
+ channel++;
+ if (channel > 3) {
+ channel = 0;
+ sampless++;
+ if (sampless > 3300) {
+ for (uint8_t i = 0; i < 4; i++) {
+ Serial.printf("C[%d] = %d; ", i, average[i] / sampless);
+ average[i] = 0;
+ }
+ Serial.printf("\n\r");
+ sampless = 0;
+ }
+ }
+ }
+ WDT.alive();
+ //}
+ //Serial.printf("Not ready anymore\n\r");
+}
+
+void blink() {
+ readAdc();
+}
+
+void init() {
+ Serial.begin(460800);
+ Wire.pins(5, 4);
+
+ Wire.begin();
+ //SET higher CPU freq & disable wifi sleep
+ system_update_cpu_freq(SYS_CPU_160MHZ);
+ WDT.enable(false);
+ pinMode(LED_PIN, OUTPUT);
+ adc.SetMux(ads::eInputMux::AIN_0);
+ adc.SetSampleSpeed(ads::eSampleSpeed::SPS_3300);
+ procTimer.initializeMs(500, readAdc).start();
+}
diff --git a/software/Basic_Blink/app/double_buffer.h b/software/Basic_Blink/app/double_buffer.h
new file mode 100644
index 0000000..ffa1d06
--- /dev/null
+++ b/software/Basic_Blink/app/double_buffer.h
@@ -0,0 +1,60 @@
+/*
+ * double_buffer.h
+ *
+ * Created on: Aug 1, 2017
+ * Author: Elmar
+ */
+
+#ifndef APP_DOUBLE_BUFFER_H_
+#define APP_DOUBLE_BUFFER_H_
+
+#include
+
+namespace rijnfel {
+
+template
+class cDoubleBuffer {
+public:
+ cDoubleBuffer(int i_size) :
+ m_size(i_size) {
+ m_writeIndex = 0;
+ m_bufferIndex = 0;
+ m_buf = new BufferType*[2];
+ m_buf[0] = new BufferType[m_size];
+ m_buf[1] = new BufferType[m_size];
+ }
+
+ void Resize(int i_newSize) {
+
+ }
+
+ bool AddValue(BufferType i_val) {
+ m_buf[m_bufferIndex][m_writeIndex] = i_val;
+ m_writeIndex++;
+ if (m_writeIndex >= m_size) {
+ m_bufferIndex = !m_bufferIndex;
+ m_writeIndex = 0;
+ return true;
+ }
+ return false;
+ }
+
+ BufferType * GetBuffer(int i_index) {
+ return m_buf[i_index];
+ }
+
+ virtual ~cDoubleBuffer() {
+ delete m_buf[0];
+ delete m_buf[1];
+ delete m_buf;
+ }
+private:
+ int m_size;
+ int m_writeIndex;
+ int m_bufferIndex;
+ BufferType ** m_buf;
+};
+
+} /* namespace rijnfel */
+
+#endif /* APP_DOUBLE_BUFFER_H_ */
diff --git a/software/Basic_Blink/app/sensor.h b/software/Basic_Blink/app/sensor.h
new file mode 100644
index 0000000..09defb7
--- /dev/null
+++ b/software/Basic_Blink/app/sensor.h
@@ -0,0 +1,38 @@
+/*
+ * sensor.h
+ *
+ * Created on: Aug 1, 2017
+ * Author: Elmar
+ */
+
+#ifndef APP_SENSOR_H_
+#define APP_SENSOR_H_
+
+#include
+
+namespace rijnfel {
+template
+class cSensor {
+public:
+ cSensor() {
+ m_callback = NULL;
+ }
+ Sample GetLatestSample(void) {
+ return m_latestSample;
+ }
+ void SetOnSampleCallBack(void (*i_callback)(Sample & o_sample)) {
+ m_callback = i_callback;
+ }
+ virtual void WaitSample(void) = 0;
+ virtual bool IsReady(void) = 0;
+ virtual Sample RawSample(void) = 0;
+ virtual ~cSensor() {
+
+ }
+protected:
+ Sample m_latestSample;
+ void (*m_callback)(Sample & o_sample);
+};
+}
+
+#endif /* APP_SENSOR_H_ */
diff --git a/software/Basic_Blink/app/sensor_hub.cpp b/software/Basic_Blink/app/sensor_hub.cpp
new file mode 100644
index 0000000..9adce3d
--- /dev/null
+++ b/software/Basic_Blink/app/sensor_hub.cpp
@@ -0,0 +1,47 @@
+/*
+ * sensor_hub.cpp
+ *
+ * Created on: Aug 1, 2017
+ * Author: Elmar
+ */
+
+#include "sensor_hub.h"
+#include
+
+namespace rijnfel {
+
+cSensorHub::cSensorHub(uint32_t i_updatePeriod) :
+ m_updatePeriod(i_updatePeriod) {
+ m_adc = new ads::cADS101x();
+ m_adcSettings = NULL;
+ m_tempSettings = NULL;
+}
+
+void cSensorHub::Update() {
+ if (m_adcSettings) {
+ if (m_adcSettings->ShouldSample(m_updatePeriod)) {
+ if (m_adcSettings->m_buffer.AddValue(m_adc->RawSample())) {
+ m_adcSettings->m_callback(m_adcSettings->m_buffer);
+ }
+ }
+ }
+}
+
+void cSensorHub::SetAdcSettings(
+ cSensorSettings * i_adcSettings) {
+ m_adcSettings = i_adcSettings;
+}
+
+void cSensorHub::SetTempSettings(cSensorSettings * i_tempSettings) {
+ m_tempSettings = i_tempSettings;
+}
+
+cSensorHub::~cSensorHub() {
+ if (m_adcSettings)
+ delete m_adcSettings;
+ if (m_tempSettings)
+ delete m_tempSettings;
+ delete m_adc;
+}
+
+} /* namespace rijnfel */
diff --git a/software/Basic_Blink/app/sensor_hub.h b/software/Basic_Blink/app/sensor_hub.h
new file mode 100644
index 0000000..be91fc4
--- /dev/null
+++ b/software/Basic_Blink/app/sensor_hub.h
@@ -0,0 +1,33 @@
+/*
+ * sensor_hub.h
+ *
+ * Created on: Aug 1, 2017
+ * Author: Elmar
+ */
+
+#ifndef APP_SENSOR_HUB_H_
+#define APP_SENSOR_HUB_H_
+
+#include "ads101x.h"
+#include "sensor_settings.h"
+
+namespace rijnfel {
+
+class cSensorHub {
+public:
+ //in milliseconds
+ cSensorHub(uint32_t i_updatePeriod);
+ void SetAdcSettings(cSensorSettings * i_adcSettings);
+ void SetTempSettings(cSensorSettings * i_tempSettings);
+ void Update();
+ virtual ~cSensorHub();
+private:
+ uint32_t m_updatePeriod;
+ cSensorSettings * m_adcSettings;
+ cSensorSettings * m_tempSettings;
+ ads::cADS101x * m_adc;
+};
+
+} /* namespace rijnfel */
+
+#endif /* APP_SENSOR_HUB_H_ */
diff --git a/software/Basic_Blink/app/sensor_settings.h b/software/Basic_Blink/app/sensor_settings.h
new file mode 100644
index 0000000..5abc6e0
--- /dev/null
+++ b/software/Basic_Blink/app/sensor_settings.h
@@ -0,0 +1,41 @@
+/*
+ * sensor_settings.h
+ *
+ * Created on: Aug 1, 2017
+ * Author: Elmar
+ */
+
+#ifndef APP_SENSOR_SETTINGS_H_
+#define APP_SENSOR_SETTINGS_H_
+
+#include "double_buffer.h"
+
+namespace rijnfel {
+
+template
+class cSensorSettings {
+public:
+ cSensorSettings(void (*i_callback)(cDoubleBuffer & buffer),
+ uint32_t i_periodTimer, uint32_t i_period) :
+ m_callback(i_callback), m_periodTimer(i_periodTimer), m_period(
+ i_period) {
+ m_buffer(1000 / m_period);
+ }
+ bool ShouldSample(uint32_t i_updatePeriod) {
+ m_periodTimer += i_updatePeriod;
+ if (m_periodTimer >= m_period) {
+ m_periodTimer -= m_period;
+ return true;
+ }
+ return false;
+ }
+ cDoubleBuffer m_buffer;
+ void (*m_callback)(cDoubleBuffer & buffer);
+private:
+ uint32_t m_periodTimer;
+ uint32_t m_period;
+};
+
+}
+
+#endif /* APP_SENSOR_SETTINGS_H_ */
diff --git a/software/Basic_Blink/app/temperature.h b/software/Basic_Blink/app/temperature.h
new file mode 100644
index 0000000..1d354e9
--- /dev/null
+++ b/software/Basic_Blink/app/temperature.h
@@ -0,0 +1,28 @@
+/*
+ * temperature.h
+ *
+ * Created on: Aug 1, 2017
+ * Author: Elmar
+ */
+
+#ifndef APP_TEMPERATURE_H_
+#define APP_TEMPERATURE_H_
+
+#include "sensor.h"
+
+namespace rijnfel {
+template
+class cTemperatureSensor: cSensor {
+public:
+ cTemperatureSensor() {
+
+ }
+ virtual Temperature ConvertSample(Sample sample) = 0;
+ virtual ~cTemperatureSensor() {
+
+ }
+};
+
+}
+
+#endif /* APP_TEMPERATURE_H_ */
diff --git a/software/Basic_Blink/include/user_config.h b/software/Basic_Blink/include/user_config.h
new file mode 100644
index 0000000..09825be
--- /dev/null
+++ b/software/Basic_Blink/include/user_config.h
@@ -0,0 +1,45 @@
+#ifndef __USER_CONFIG_H__
+#define __USER_CONFIG_H__
+
+#ifdef __cplusplus
+extern "C" {
+#endif
+
+ // UART config
+ #define SERIAL_BAUD_RATE COM_SPEED_SERIAL
+
+ // ESP SDK config
+ #define LWIP_OPEN_SRC
+ #define USE_US_TIMER
+
+ // Default types
+ #define __CORRECT_ISO_CPP_STDLIB_H_PROTO
+ #include
+ #include
+
+ // Override c_types.h include and remove buggy espconn
+ #define _C_TYPES_H_
+ #define _NO_ESPCON_
+
+ // Updated, compatible version of c_types.h
+ // Just removed types declared in
+ #include
+
+ // System API declarations
+ #include
+
+ // C++ Support
+ #include
+ // Extended string conversion for compatibility
+ #include
+ // Network base API
+ #include
+
+ // Beta boards
+ #define BOARD_ESP01
+
+#ifdef __cplusplus
+}
+#endif
+
+#endif