This repository has been archived on 2025-02-01. You can view files and clone it, but cannot push or open issues or pull requests.
reprapfirmware-dc42/Webserver.h
David Crocker 1e444839e0 Improved network recovery from errors and fixed small temp cal error
Improved network error recovery so that it it possible to reconnect
after some types of network error have occurred
Corrected calculation of temperatures to give more accurate results
towards the limits of the ADC range
2014-01-07 13:42:30 +00:00

108 lines
2.7 KiB
C++

/****************************************************************************************************
RepRapFirmware - Webserver
This class serves a single-page web applications to the attached network. This page forms the user's
interface with the RepRap machine. This software interprests returned values from the page and uses it
to Generate G Codes, which it sends to the RepRap. It also collects values from the RepRap like
temperature and uses those to construct the web page.
The page itself - reprap.htm - uses Knockout.js and Jquery.js. See:
http://knockoutjs.com/
http://jquery.com/
-----------------------------------------------------------------------------------------------------
Version 0.2
10 May 2013
Adrian Bowyer
RepRap Professional Ltd
http://reprappro.com
Licence: GPL
****************************************************************************************************/
#ifndef WEBSERVER_H
#define WEBSERVER_H
#define KO_START "rr_"
#define KO_FIRST 3
#define POST_LENGTH 200
#define GCODE_LENGTH 100 // Maximum length of internally-generated G Code string
class Webserver
{
public:
Webserver(Platform* p);
bool GCodeAvailable();
byte ReadGCode();
bool WebserverIsWriting();
void Init();
void Spin();
void Exit();
void Diagnostics();
void SetPassword(char* pw);
void SetName(char* nm);
void ConnectionError();
private:
void ParseClientLine();
void SendFile(char* nameOfFileToSend);
void WriteByte();
void ParseQualifier();
void CheckPassword();
bool LoadGcodeBuffer(char* gc, bool convertWeb);
void CloseClient();
bool PrintHeadString();
bool PrintLinkTable();
void GetGCodeList();
void GetJsonResponse(char* request);
void ParseGetPost();
void CharFromClient(char c);
void BlankLineFromClient();
void InitialisePost();
bool MatchBoundary(char c);
void JsonReport(bool ok, char* request);
Platform* platform;
bool active;
float lastTime;
float longWait;
FileStore* fileBeingSent;
bool writing;
bool receivingPost;
char postBoundary[POST_LENGTH];
int boundaryCount;
char postFileName[POST_LENGTH];
FileStore* postFile;
bool postSeen;
bool getSeen;
bool clientLineIsBlank;
float clientCloseTime;
bool needToCloseClient;
char clientLine[STRING_LENGTH];
char clientRequest[STRING_LENGTH];
char clientQualifier[STRING_LENGTH];
char jsonResponse[STRING_LENGTH];
char gcodeBuffer[GCODE_LENGTH];
int jsonPointer;
bool gcodeAvailable;
int gcodePointer;
int clientLinePointer;
bool gotPassword;
char password[SHORT_STRING_LENGTH+1];
char myName[SHORT_STRING_LENGTH+1];
};
#endif