First

Dependents:   mbed-os-rest-api-V1-1 mbed-os-rest-api-V1-2 mbed-os-rest-api-V1-2-2

NetworkManager.h

Committer:
asaewing
Date:
2018-10-08
Revision:
0:b12dd3a065c0
Child:
1:358fcf86ddab

File content as of revision 0:b12dd3a065c0:

#ifndef NETWORKMANAGER_H
#define NETWORKMANAGER_H

#include "module_for_all.h"

#define HTTP_STATUS_LINE "HTTP/1.0 200 OK"
#define HTTP_HEADER_FIELDS "Content-Type: text/html; charset=utf-8"
#define HTTP_MESSAGE_BODY ""                                     \
"<html>" "\r\n"                                                  \
"  <body style=\"display:flex;text-align:center\">" "\r\n"       \
"    <div style=\"margin:auto\">" "\r\n"                         \
"      <h1>Hello ! mbed</h1>" "\r\n"                              \
"      <p>It works ! from mbed</p>" "\r\n"                                 \
"    </div>" "\r\n"                                              \
"  </body>" "\r\n"                                               \
"</html>"

#define HTTP_RESPONSE HTTP_STATUS_LINE "\r\n"   \
                      HTTP_HEADER_FIELDS "\r\n" \
                      "\r\n"                    \
                      HTTP_MESSAGE_BODY "\r\n"

class NetworkManager {
public:
    NetworkManager();
    NetworkManager(char*, char*, char*, int);
    
    /* Define function */
    void SetConfig(char*, char*, char*, int);
    void ServerInit();
    
    bool OpenServer();
    
    bool BindPort();
    
    bool ListenConnections();
    
    bool CheckAccept();
    
    void AcceptEvent();
    void SendResponseEvent(std::string);
    
    /* Define self function */
    std::string getHttpMethod();
    std::string getApiCommand();
    std::string makeResponse(std::string);
    
private:
    char*   _ip;
    char*   _gateway;
    char*   _mask;
    char*   _mac;
    int     _port;
    
    const char* _m_ip;
    const char* _m_mac;
    
    std::vector<std::string> _recvList;
    
    //char  *_http_method;
    //char  *_api_command;
    
    std::string _http_method;
    std::string _api_command;
    
    EthernetInterface   eth;
    TCPServer       srv;
    TCPSocket       clt_sock;
    SocketAddress   clt_addr;
};

#endif