You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
116 lines
2.7 KiB
116 lines
2.7 KiB
7 years ago
|
/*
|
||
|
* web_interface.cpp
|
||
|
*
|
||
|
* Created on: Aug 6, 2017
|
||
|
* Author: Elmar
|
||
|
*/
|
||
|
|
||
|
#include "web_interface.h"
|
||
|
#include <SmingCore/SmingCore.h>
|
||
|
|
||
|
//TODO remove this
|
||
|
#include "ads101x.h"
|
||
|
|
||
|
namespace rijnfel {
|
||
|
|
||
|
cWebInterface *cWebInterface::s_instance = 0;
|
||
|
|
||
|
static void onIndex(HttpRequest &request, HttpResponse &response) {
|
||
|
cWebInterface::GetInstance()->OnIndex(request, response);
|
||
|
}
|
||
|
|
||
|
static void onRefresh(HttpRequest &request, HttpResponse &response) {
|
||
|
cWebInterface::GetInstance()->OnRefresh(request, response);
|
||
|
}
|
||
|
|
||
|
cWebInterface::cWebInterface() :
|
||
|
m_serverStarted(false) {
|
||
|
for (int i = 0; i < 4; i++) {
|
||
|
m_adc_value[i] = 0;
|
||
|
}
|
||
|
// TODO Auto-generated constructor stub
|
||
|
|
||
|
}
|
||
|
|
||
|
void onFile(HttpRequest &request, HttpResponse &response) {
|
||
|
String file = request.getPath();
|
||
|
if (file[0] == '/')
|
||
|
file = file.substring(1);
|
||
|
|
||
|
if (file[0] == '.')
|
||
|
response.forbidden();
|
||
|
else {
|
||
|
response.setCache(86400, true); // It's important to use cache for better performance.
|
||
|
response.sendFile(file);
|
||
|
}
|
||
|
}
|
||
|
|
||
|
void cWebInterface::Start() {
|
||
|
if (m_serverStarted)
|
||
|
return;
|
||
|
server.addPath("/", onIndex);
|
||
|
server.addPath("/state", onRefresh);
|
||
|
server.setDefaultHandler(onFile);
|
||
|
server.listen(80);
|
||
|
}
|
||
|
|
||
|
void cWebInterface::Stop() {
|
||
|
if (!m_serverStarted)
|
||
|
return;
|
||
|
m_serverStarted = false;
|
||
|
}
|
||
|
|
||
|
void cWebInterface::OnIndex(HttpRequest &request, HttpResponse &response) {
|
||
|
response.setCache(86400, true); // It's important to use cache for better performance.
|
||
|
response.sendFile("index.html");
|
||
|
}
|
||
|
|
||
|
void cWebInterface::OnRefresh(HttpRequest &request, HttpResponse &response) {
|
||
|
JsonObjectStream* stream = new JsonObjectStream();
|
||
|
JsonObject& json = stream->getRoot();
|
||
|
|
||
|
json["adc_0"] = m_adc_value[0];
|
||
|
json["adc_1"] = m_adc_value[1];
|
||
|
json["adc_2"] = m_adc_value[2];
|
||
|
json["adc_3"] = m_adc_value[3];
|
||
|
|
||
|
response.sendJsonObject(stream);
|
||
|
}
|
||
|
|
||
|
void cWebInterface::UpdateAdc(cADC<ads::ads_sample_t, int32_t> & adc,
|
||
|
cDoubleBuffer<ads::ads_sample_t>& adcBuffer) {
|
||
|
ads::ads_sample_t * buf = &adcBuffer.GetReadyBuffer()[0];
|
||
|
if (buf != NULL) {
|
||
|
ads::ads_sample_t averageSample;
|
||
|
averageSample.gain = buf->gain;
|
||
|
averageSample.mux = buf->mux;
|
||
|
int64_t average = 0;
|
||
|
|
||
|
int size = adcBuffer.GetSize();
|
||
|
for (int i = 0; i < size; i++) {
|
||
|
average += buf[i].rawSample;
|
||
|
}
|
||
|
if (size != 0) {
|
||
|
average /= size;
|
||
|
}
|
||
|
|
||
|
averageSample.rawSample = static_cast<int16_t>(average);
|
||
|
int pos = averageSample.mux - ads::eInputMux::AIN_0;
|
||
|
m_adc_value[pos] = adc.ConvertSample(averageSample);
|
||
|
}
|
||
|
}
|
||
7 years ago
|
void cWebInterface::PrintValues() {
|
||
|
Serial.printf("%d %d %d %d\n\r", m_adc_value[0], m_adc_value[1],
|
||
|
m_adc_value[2], m_adc_value[3]);
|
||
|
}
|
||
7 years ago
|
|
||
|
void cWebInterface::UpdateTemp(cDoubleBuffer<uint32_t>& adcBuffer) {
|
||
|
}
|
||
|
|
||
|
cWebInterface::~cWebInterface() {
|
||
|
// TODO Auto-generated destructor stub
|
||
|
}
|
||
|
|
||
|
} /* namespace rijnfel */
|
||
7 years ago
|
|