A stack which works with or without an Mbed os library. Provides IPv4 or IPv6 with a full 1500 byte buffer.

Dependents:   oldheating gps motorhome heating

tcp/http/http.c

Committer:
andrewboyson
Date:
2019-05-08
Revision:
142:a8c0890a58d1
Parent:
131:774f7f367031
Child:
144:6bd5c54efc7d

File content as of revision 142:a8c0890a58d1:

#include <stdbool.h>

#include   "http.h"
#include "tcpbuf.h"
#include "action.h"
#include    "net.h"
#include    "log.h"
#include    "led.h"
#include "restart.h"

bool HttpTrace = false;

//Plumb into these from your html server
void (*HttpRequestFunction)(int size, char* pRequestStream, uint32_t positionInRequestStream, int* pToDo, bool* pPostComplete, uint32_t* pDelayUntil);
void (*HttpReplyFunction  )(int todo);

void HttpHandleRequest(int size, char* pRequestStream, uint32_t positionInRequestStream, int* pToDo, bool* pPostComplete, uint32_t* pDelayUntil)
{
    int lastRestartPoint = RestartPoint;
    RestartPoint = FAULT_POINT_HttpHandleRequest;
    
    if (HttpTrace)
    {
        LogF("HTTP  <<< %d (%u)\r\n", size, positionInRequestStream);
    }
    
    HttpRequestFunction(size, pRequestStream, positionInRequestStream, pToDo, pPostComplete, pDelayUntil);
    
    RestartPoint = lastRestartPoint;
}
void HttpSendReply(int* pSize, char* pReplyStream, uint32_t positionInReplyStream, uint16_t mss, int todo)
{
    TcpBufStart(positionInReplyStream, mss, pReplyStream);
    HttpReplyFunction(todo);
    *pSize = TcpBufLength();

    if (HttpTrace)
    {
        LogF("HTTP  >>> %d (%d)\r\n", *pSize, positionInReplyStream);
    }
}