[Feature]add MT2731_MP2_MR2_SVN388 baseline version

Change-Id: Ief04314834b31e27effab435d3ca8ba33b499059
diff --git a/src/lynq/lib/liblynq-protcl/include/http/lynq_http.h b/src/lynq/lib/liblynq-protcl/include/http/lynq_http.h
new file mode 100644
index 0000000..455abc2
--- /dev/null
+++ b/src/lynq/lib/liblynq-protcl/include/http/lynq_http.h
@@ -0,0 +1,185 @@
+#ifndef _LYNQ_HTTP_H_
+#define _LYNQ_HTTP_H_
+
+#define HTTP_API
+
+
+#include "lynq_http_parser.h"
+#include "lynq_msgq.h"
+#include <stdlib.h>
+#include <string.h>
+#include <stdio.h>
+#include <pthread.h>
+#include <sys/socket.h>
+#include <netinet/in.h>
+#include <arpa/inet.h>
+#include <fcntl.h>
+#include <stdio.h>
+#include <stdlib.h>
+#include <unistd.h>
+#include <errno.h>
+#include <sys/types.h>
+#include <sys/select.h>
+#include <time.h> 
+#include <ctype.h>
+#include <netdb.h>
+#include <strings.h>
+#include <openssl/ssl.h>
+#include <openssl/err.h>
+
+#ifdef _cplusplus
+extern "C" {
+#endif
+
+#define HTTP_INVALID_SOCKET -1
+#define HTTP_EINTR EINTR
+#define HTTP_EINPROGRESS EINPROGRESS
+#define HTTP_EWOULDBLOCK EWOULDBLOCK
+#define HTTP_EALREADY EALREADY
+
+#define free_member(member) if((member)) { free(member); (member) = NULL; }
+#define close_socket(fd) if(fd != HTTP_INVALID_SOCKET) { socket_close(fd); fd = HTTP_INVALID_SOCKET; }
+#define close_file(pf) if(pf != NULL) { fclose(pf); pf = NULL; }
+
+#define RECV_BUF_SIZE 4 * 1024
+
+#define socket_close close
+
+
+enum parser_statue_e { PARSERD_NONE = 0, PARSERD_FIELD, PARSERD_VALUE, PARSERD_BODY };
+
+enum proto_type_e { PROTO_HTTP = 0, PROTO_HTTPS };
+	typedef enum http_request_method_e 
+	{ 
+		M_GET = 0, 
+		M_POST, 
+		M_HEAD 
+	} http_request_method_e;
+
+	typedef enum http_connent_method_e 
+	{ 
+		M_CLOSE = 0, 
+		M_KEEP,
+	} http_connent_method_e;
+
+	enum http_error_e
+	{
+		ERR_OK = 0,
+
+		ERR_INVALID_PARAM,
+		ERR_OUT_MEMORY,
+		ERR_OPEN_FILE,
+		ERR_PARSE_REP,
+		ERR_URL_INVALID,
+		ERR_URL_INVALID_PROTO,
+		ERR_URL_INVALID_HOST,
+		ERR_URL_INVALID_IP,
+		ERR_URL_RESOLVED_HOST,
+		ERR_SOCKET_CREATE = 10,
+		ERR_SOCKET_SET_OPT,
+		ERR_SOCKET_NOBLOCKING,
+		ERR_SOCKET_CONNECT,
+		ERR_SOCKET_CONNECT_TIMEOUT,
+		ERR_SOCKET_SELECT,
+		ERR_SOCKET_WRITE,
+		ERR_SOCKET_READ,
+		ERR_SOCKET_TIMEOUT,
+		ERR_SOCKET_CLOSED,
+		ERR_SOCKET_GET_OPT = 20,
+		ERR_SSL_CREATE_CTX,
+		ERR_SSL_CREATE_SSL,
+		ERR_SSL_SET_FD,
+		ERR_SSL_CONNECT,
+		ERR_SSL_WRITE,
+		ERR_SSL_READ,
+		ERR_NOCERT,
+		ERR_MSG
+	};
+
+	struct lynq_http_client_t;
+	typedef struct lynq_http_client_t lynq_http_client_t;
+	typedef int (*data_recv_cb_t)( lynq_http_client_t* http, const char* data, int size, int total, void* user);
+
+ typedef int socket_t;
+
+ 
+ struct lynq_http_client_t
+ {
+	int index;
+
+	char protocol[10];
+	int  session;
+
+	char action[10];
+	char *data;
+	char *section;
+	int request_method;
+	int connent_method;
+	int sockfd;
+	int modify_thread;
+	int add_thread;
+
+	FILE* pf;
+	char* filename;
+	char* body;
+	char* redirect_url;
+	char* header_field;
+	char* header_value;
+
+	char* post_data;
+	char* url;
+	int post_data_len;
+	struct http_parser_url u;
+	char* user_header;
+	int user_header_len;
+	
+	http_parser_settings parser_setting;
+	struct http_parser parser;
+
+
+	char* user;
+	data_recv_cb_t recv_cb;
+	
+	unsigned long body_len;
+	unsigned long content_length;
+
+	enum http_request_method_e method;
+	enum http_connent_method_e conn_method;
+	enum proto_type_e proto_type;
+
+	unsigned short field_size;
+	unsigned short value_size;
+	unsigned short cur_field_size;
+	unsigned short cur_value_size;
+	SSL_CTX *ctx;
+	SSL *ssl;
+
+	socket_t fd; 
+	int timeout;
+	
+	short status_code;
+	char parser_statue;
+	char error_code;
+	unsigned cancel   : 1;
+	unsigned exit	  : 1;
+	unsigned download : 1;
+	unsigned redirect : 1;
+};
+
+
+int lynq_http_init(void);
+lynq_http_client_t* lynq_http_new();
+void lynq_http_destroy(lynq_http_client_t* http);
+int lynq_http_get_error_code(lynq_http_client_t* http);
+const char* lynq_http_sync_request(lynq_http_client_t* http, const char* url, http_request_method_e m, http_connent_method_e c_m);
+const char* lynq_http_sync_post_request(lynq_http_client_t* http, char* url, char* post_data, http_request_method_e m, http_connent_method_e c_m);
+int lynq_http_sync_download_file(lynq_http_client_t* http, char* url, char* filepath, http_request_method_e m, http_connent_method_e c_m);
+int lynq_http_set_data_recv_cb(lynq_http_client_t* http, data_recv_cb_t cb, void* user);
+int lynq_http_exit(lynq_http_client_t* http);
+int lynq_http_data_send(char *data);
+void *lynq_http_write_head_data(lynq_http_client_t* http);
+#ifdef _cplusplus
+}
+#endif
+#endif
+