for u-blox
Fork of C027_Support by
Diff: MDM.h
- Revision:
- 135:cbccf4052d45
- Parent:
- 134:2fbd5723e063
- Child:
- 136:8dc8f48275fc
diff -r 2fbd5723e063 -r cbccf4052d45 MDM.h --- a/MDM.h Tue Jan 12 08:37:29 2016 +0000 +++ b/MDM.h Thu Jan 21 15:59:42 2016 +0000 @@ -274,7 +274,83 @@ \return true if successfully, false otherwise */ bool socketFree(int socket); - + + // ---------------------------------------------------------------- + // HTTP + // ---------------------------------------------------------------- + + //! Type of HTTP Operational Codes (reference to HTTP control +UHTTP) + typedef enum { HTTP_IP_ADDRESS, HTTP_SERVER_NAME, HTTP_USER_NAME, HTTP_PASSWORD, \ + HTTP_AUTH_TYPE, HTTP_PORT, HTTP_SECURE } HttpOpCode; + + //! Type of HTTP Commands (reference to HTTP command +UHTTPC) + typedef enum { HTTP_HEAD, HTTP_GET, HTTP_DELETE, HTTP_PUT, \ + HTTP_POST_FILE, HTTP_POST_DATA } HttpCmd; + + //! HTTP Profile error return codes + #define HTTP_PROF_ERROR -1 + + /** find HTTP profile + \return true if successfully, false otherwise + */ + int httpFindProfile(); + + /** get the number of bytes pending for reading for this HTTP profile + \param profile the HTTP profile handle + \param timeout_ms -1 blocking, else non blocking timeout in ms + \return 0 if successful or SOCKET_ERROR on failure + */ + bool httpSetBlocking(int profile, int timeout_ms); + + /** set the HTTP profile for commands management + \param profile the HTTP profile handle + \return true if successfully, false otherwise + */ + bool httpSetProfileForCmdMng(int profile); + + /** free the HTTP profile + \param profile the HTTP profile handle + \return true if successfully, false otherwise + */ + bool httpFreeProfile(int profile); + + /** reset HTTP profile + \param httpProfile the HTTP profile to be reset + \return true if successfully, false otherwise + */ + bool httpResetProfile(int httpProfile); + + /** set HTTP parameters + \param httpProfile the HTTP profile identifier + \param httpOpCode the HTTP operation code + \param httpInPar the HTTP input parameter + \return true if successfully, false otherwise + */ + bool httpSetPar(int httpProfile, HttpOpCode httpOpCode, const char * httpInPar); + + /** HTTP commands management + \param httpProfile the HTTP profile identifier + \param httpCmdCode the HTTP command code + \param httpPath the path of HTTP server resource + \param httpOut the filename where the HTTP server response will be stored + \param httpIn the input data (filename or string) to be sent + to the HTTP server with the command request + \param httpContentType the HTTP Content-Type identifier + \param httpCustomPar the parameter for an user defined HTTP Content-Type + \param buf the buffer to read into + \param len the size of the buffer to read into + \return true if successfully, false otherwise + */ + bool httpCommand(int httpProfile, HttpCmd httpCmdCode, const char* httpPath, \ + const char* httpOut, const char* httpIn, int httpContentType, \ + const char* httpCustomPar, char* buf, int len); + + /** get HTTP commands + \param httpCmdCode the HTTP command code (reference also the enum format) + \return HTTP command in string format + */ + const char* getHTTPcmd(int httpCmdCode); + // ---------------------------------------------------------------- // SMS Short Message Service // ---------------------------------------------------------------- @@ -340,13 +416,29 @@ */ int writeFile(const char* filename, const char* buf, int len); - /** REad a file from the local file system + /** Read a file from the local file system \param filename the name of the file \param buf a buffer to hold the data \param len the size to read \return the number of bytes read */ int readFile(const char* filename, char* buf, int len); + + /** Read a file from the local file system + (the file size is greater than MAX_SIZE bytes) + \param filename the name of the file + \param buf a buffer to hold the data + \param len the size to read + \return the number of bytes read + */ + int readFileNew(const char* filename, char* buf, int len); + + /** Retrieve information about the dimension of a file from the local FFS + \param filename the name of the file + \return the file dimension in number of bytes + */ + int infoFile(const char* filename); + // ---------------------------------------------------------------- // Cell Locate // ---------------------------------------------------------------- @@ -626,6 +718,8 @@ typedef struct { const char* filename; char* buf; int sz; int len; } URDFILEparam; static int _cbUDELFILE(int type, const char* buf, int len, void*); static int _cbURDFILE(int type, const char* buf, int len, URDFILEparam* param); + static int _cbURDBLOCK(int type, const char* buf, int len, char* out); + static int _cbULSTFILE(int type, const char* buf, int len, int* infoFile); // variables DevStatus _dev; //!< collected device information NetStatus _net; //!< collected network information @@ -637,6 +731,16 @@ // LISA-U and SARA-G have 7 sockets SockCtrl _sockets[12]; int _findSocket(int handle = SOCKET_ERROR/* = CREATE*/); + // management structure for HTTP profiles + // it's possible to have up to 4 different HTTP profiles (LISA-C200, LISA-U200 and SARA-G350) having: + // param handle the current HTTP profile is in handling state or not (default value is HTTP_ERROR) + // param timeout_ms the timeout for the current HTTP command + // param pending the status for the current HTTP command (in processing state or not) + // param cmd the code for the current HTTP command + // param result the result for the current HTTP command once processed + typedef struct { int handle; int timeout_ms; bool pending; int cmd; int result; } HttpProfCtrl; + HttpProfCtrl _httpProfiles[4]; + int _findProfile(int handle = HTTP_PROF_ERROR/* = CREATE*/); static MDMParser* inst; bool _init; #ifdef TARGET_UBLOX_C027