1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
/*******************************************************************************
 * File Name         : HTTPClient.h
 * Description       :
 * Created on        : 2020��7��1��
 * Author            : �ż�
 *******************************************************************************/
#ifndef _HTTP_CLIENT_H_
#define _HTTP_CLIENT_H_
/*******************************************************************************
 *                              Include Files                                  *
 *******************************************************************************/
#include "HIDO_TypeDef.h"
#include "HIDO_VLQueue.h"
#include "HIDO_ArraryQueue.h"
 
/*******************************************************************************
 *                                  Macro                                      *
 *******************************************************************************/
 
 
/*******************************************************************************
 *                             Type Definition                                 *
 *******************************************************************************/
typedef struct
{
    HIDO_UINT32 m_u32RangeBegin;
    HIDO_UINT32 m_u32RangeEnd;
    HIDO_CHAR m_acIfRange[64];
} ST_HTTPGetFileOpt;
 
typedef struct
{
    HIDO_UINT32 m_u32RangeBegin;
    HIDO_UINT32 m_u32RangeEnd;
    HIDO_UINT32 m_u32RangeTotal;
    HIDO_CHAR m_acETag[64];
} ST_HTTPGetFileResponse;
 
typedef HIDO_INT32 (*FN_HTTPResponseCallback)(HIDO_UINT32 _u32RespCode, HIDO_UINT8 *_pu8Data, HIDO_UINT32 _u32Len, HIDO_VOID *_pArg);
typedef HIDO_INT32 (*FN_HTTPGetFileCallback)(HIDO_UINT32 _u32RespCode, ST_HTTPGetFileResponse *_pstResponse, HIDO_UINT8 *_pu8Data, HIDO_UINT32 _u32Len, HIDO_VOID *_pArg);
typedef HIDO_INT32 (*FN_HTTPPostDataCallback)(HIDO_UINT32 _u32Offset, HIDO_VOID *_pBuff, HIDO_UINT32 _u32BuffSize,
        HIDO_UINT32 *_pu32Len, HIDO_VOID *_pArg);
 
/*******************************************************************************
 *                             Global Function                                 *
 *******************************************************************************/
 
/*******************************************************************************
 * Function Name     : HTTPClient_Post
 * Description       :
 * Input             :
 * Output            :
 * Return            :
 * Author            : �ż�
 * Modified Date:    : 2020��7��1��
 *******************************************************************************/
HIDO_INT32 HTTPClient_Post(HIDO_CHAR *_pcUrl, HIDO_CHAR *_pcBody, HIDO_UINT32 _u32BodyLen, FN_HTTPResponseCallback _fnResponseCallback, HIDO_VOID *_pArg);
 
/*******************************************************************************
 * Function Name     : HTTPClientRequestFile
 * Description       :
 * Input             :
 * Output            :
 * Return            :
 * Author            : �ż�
 * Modified Date:    : 2020��7��1��
 *******************************************************************************/
HIDO_INT32 HTTPClient_Get(HIDO_CHAR *_pcUrl, FN_HTTPResponseCallback _fnResponseCallback, HIDO_VOID *_pArg);
 
/*******************************************************************************
 * Function Name     : HTTPClient_GetFile
 * Description       :
 * Input             :
 * Output            :
 * Return            :
 * Author            : �ż�
 * Modified Date:    : 2020��7��1��
 *******************************************************************************/
HIDO_INT32 HTTPClient_GetFile(HIDO_CHAR *_pcUrl, FN_HTTPGetFileCallback _fnGetFileCallback, ST_HTTPGetFileOpt *_pstOpt, HIDO_VOID *_pArg);
 
/*******************************************************************************
 * Function Name     : HTTPClient_GetState
 * Description       : 获取HTTPClient当前状态
 * Return            : 0=IDLE, 1=CONNECTING, 2=CONNECTED
 *******************************************************************************/
HIDO_INT32 HTTPClient_GetState(HIDO_VOID);
 
/*******************************************************************************
 * Function Name     : HTTPClient_Reset
 * Description       : 强制重置HTTPClient状态
 *******************************************************************************/
HIDO_VOID HTTPClient_Reset(HIDO_VOID);
 
/*******************************************************************************
 * Function Name     : HTTPClient_PostFile
 * Description       : HTTP �ϴ��ļ�
 * Input             : _pcUrl              HTTP·��
 *                   : _pcFileName         �ļ�����
 *                   : _fnResponseCallback HTTP��Ӧ�ص�����
 *                   : _pArg               ����
 * Output            : Mone
 * Return            : HIDO_OK �ɹ�,HIDO_ERR ʧ��
 * Author            : �ż�
 * Modified Date:    : 2021��5��3��
 *******************************************************************************/
HIDO_INT32 HTTPClient_PostFile(HIDO_CHAR *_pcUrl, FN_HTTPPostDataCallback _fnPostDataCallback, FN_HTTPResponseCallback _fnResponseCallback,
        HIDO_VOID *_pArg);
 
/*******************************************************************************
 * Function Name     : HTTPClient_Get
 * Description       :
 * Input             :
 * Output            :
 * Return            :
 * Author            : �ż�
 * Modified Date:    : 2020��7��1��
 *******************************************************************************/
HIDO_INT32 HTTPClient_Poll(HIDO_VOID);
 
/*******************************************************************************
 * Function Name     : HTTPClientRequestFile
 * Description       :
 * Input             :
 * Output            :
 * Return            :
 * Author            : �ż�
 * Modified Date:    : 2020��7��1��
 *******************************************************************************/
HIDO_INT32 HTTPClient_Init(HIDO_VOID);
 
#endif /* _HTTP_CLIENT_H_ */