1
0
mirror of https://github.com/DCC-EX/CommandStation-EX.git synced 2025-02-19 23:46:02 +01:00
CommandStation-EX/CVReader.cpp
2020-10-22 19:25:20 +02:00

73 lines
2.5 KiB
C++

/*
* © 2020, Gregor Baues, Chris Harlow. All rights reserved.
*
* This is a basic, no frills CVreader example of a DCC++ compatible setup.
* There are more advanced examples in the examples folder i
*/
#include <Arduino.h>
// #include "DCCEX.h"
#include "MemoryFree.h"
#include "DIAG.h"
#include "NetworkInterface.h"
// DCCEXParser serialParser;
/**
* @brief User define callback for HTTP requests. The Network interface will provide for each http request a parsed request object
* and the client who send the request are provided. Its up to the user to use the req as he sees fits. Below is just a scaffold to
* demonstrate the workings.
*
* @param req Parsed request object
* @param client Originator of the request to reply to
*/
void httpRequestHandler(ParsedRequest *req, Client* client) {
DIAG(F("\nParsed Request:"));
DIAG(F("\nMethod: [%s]"), req->method);
DIAG(F("\nURI: [%s]"), req->uri);
DIAG(F("\nHTTP version: [%s]"), req->version);
DIAG(F("\nParameter count:[%d]\n"), *req->paramCount);
// result = doSomething(); // obtain result to be send back; fully prepare the serialized HTTP response!
// client->write(result);
}
void setup()
{
Serial.begin(115200);
while (!Serial)
{
; // wait for serial port to connect. just in case
}
// DCC::begin(STANDARD_MOTOR_SHIELD);
DIAG(F("\nFree RAM before network init: [%d]\n"),freeMemory());
DIAG(F("\nNetwork Setup In Progress ...\n"));
NetworkInterface::setup(WIFI, TCP, 8888); // specify WIFI or ETHERNET depending on if you have Wifi or an EthernetShield; Wifi has to be on Serial1 UDP or TCP for the protocol
NetworkInterface::setHttpCallback(httpRequestHandler); // The network interface will provide and HTTP request object which can be used as well to send the reply. cf. example above
// NetworkInterface::setup(WIFI, MQTT, 8888); // sending over MQTT.
// NetworkInterface::setup(WIFI, UDP, 8888); // Setup without port will use the by default port 2560 :: DOES NOT WORK
// NetworkInterface::setup(WIFI); // setup without port and protocol will use by default TCP on port 2560
// NetworkInterface::setup(); // all defaults ETHERNET, TCP on port 2560
DIAG(F("\nNetwork Setup done ..."));
DIAG(F("\nFree RAM after network init: [%d]\n"),freeMemory());
DIAG(F("\nReady for DCC Commands ..."));
}
void loop()
{
// DCC::loop();
NetworkInterface::loop();
// serialParser.loop(Serial);
}