This repository was archived by the owner on Nov 29, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathhttpServer.h
More file actions
176 lines (154 loc) · 4.76 KB
/
httpServer.h
File metadata and controls
176 lines (154 loc) · 4.76 KB
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
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
/**
* \file
*
* @author Rafael B. Januzi (rjanuzi@gmail.com)
* @date 07/11/2016
*
*/
#ifndef HTTPSERVER_H_
#define HTTPSERVER_H_
#include <stdio.h>
#include <stdbool.h>
#include <string.h>
#include <sys/socket.h>
#include <sys/types.h>
#include <netinet/in.h>
#include <arpa/inet.h>
#include <unistd.h>
#include <ctype.h>
#include <strings.h>
#include <string.h>
#include <sys/stat.h>
#include <pthread.h>
#include <sys/wait.h>
#include <stdlib.h>
#include <droneTMs.h>
#include <droneTCs.h>
#define HTTP_SERVER_PORT 5001
#define HTTP_PAGE_FILE_MAX_LEN 4096
#define HTTP_SERVER_TM_URL "/ardroneMiddleware/tm"
#define HTTP_SERVER_PHOTO_URL "/ardroneMiddleware/photo"
#define HTTP_SERVER_CMD_URL "/ardroneMiddleware/cmd"
#define HTTP_SERVER_CMD_PARAM "cmd="
#define HTTP_SERVER_CMD_TAKEOFF "takeoff"
#define HTTP_SERVER_CMD_LAND "land"
#define HTTP_SERVER_TM_JSON_TEMPLATE "{\"alt\":%f,\"lat\":%f,\"lon\":%f,\"vel_x\":%f,\"vel_y\":%f,\"vel_z\":%f,\"pitch\":%f,\"roll\":%f,\"yaw\":%f,\"temp\":%f,\"bat\":%f,\"press\":%f}"
#define HTTP_SERVER_TM_JSON_CREATE(tmData, jsonOut) { sprintf(jsonOut, HTTP_SERVER_TM_JSON_TEMPLATE, tmData.alt, tmData.lat, tmData.lon, tmData.vel_x, tmData.vel_y, tmData.vel_z, tmData.pitch, tmData.roll, tmData.yaw, tmData.temp, tmData.bat, tmData.press); };
/**
* @date 07/11/2016
* @autho Rafael B. Januzi (rjanuzi@gmail.com)
*
* Envia uma String para um client HTTP.
*
* @param client: Codigo do cliente aberto para enviar a String.
* @param strToSend: String para enviar via HTTP.
*/
void sendString(int client, const char* strToSend);
/**
* @date 07/11/2016
* @autho Rafael B. Januzi (rjanuzi@gmail.com)
*
* Inicializa o server HTTP.
*
* @return true caso a inicializacao ocorra com sucesso e false caso contrario.
*/
bool httpServer_init(void);
/**
* @date 09/11/2016
* @autho Rafael B. Januzi (rjanuzi@gmail.com)
*
* Envia as telemetrias disponibilizadas pelo modulo droneTMs para o client.
*
* @param client: Codigo do cliente aberto para enviar a String.
*/
void httpServer_sendTms(int client);
/**
* @date 14/11/2016
* @autho Rafael B. Januzi (rjanuzi@gmail.com)
*
* Envia a imagem disponibilizada pelo modulo droneTMs para o client.
*
* @param client: Codigo do cliente aberto para enviar a String.
*/
void httpServer_sendPhotoData(int client);
/**
* @date 14/11/2016
* @autho Rafael B. Januzi (rjanuzi@gmail.com)
*
* Envia o header de uma imagem JPG para o client HTTP.
*
* @param client: Codigo do cliente aberto para enviar a String.
* @param imgLenBytes: Numero de bytes da imagem que sera envia em seguida.
*/
void httpServer_headersJPG(int client, uint32_t imgLenBytes);
/**
* @date 16/11/2016
* @autho Rafael B. Januzi (rjanuzi@gmail.com)
*
* Envia a pagina de teste de telecomandos para o client HTTP.
*
* @param client: Codigo do cliente aberto para enviar a String.
* @param pageFile: Caminho do arquivo no HD para enviar.
*/
void httpServer_sendCmdTestPage(int client, const char* pageFile);
/**
* @date 16/11/2016
* @autho Rafael B. Januzi (rjanuzi@gmail.com)
*
* Envia uma pagina HTML para o client HTTP.
*
* @param client: Codigo do cliente aberto para enviar a String.
* @param pageFile: Caminho do arquivo no HD para enviar.
*/
void httpServer_sendPage(int client, const char* pageFile);
/**
* @date 16/11/2016
* @autho Rafael B. Januzi (rjanuzi@gmail.com)
*
* Envia o cabecalho HTTP para uma pagina HTML.
*
* @param client: Codigo do cliente aberto para enviar a String.
* @param size: Tamanho da pagina HTML a ser enviada em seguida.
*/
void httpServer_headersHtml(int client, uint16_t size);
/**
* @date 16/11/2016
* @autho Rafael B. Januzi (rjanuzi@gmail.com)
*
* Funcao utilitaria para verificacao se uma String comeca uma outra String.
*
* @param pre: Prefixo a ser buscado na outra String.
* @param str: String para buscar o prefixo.
*
* @return true se o prefixo foi encontrado na String e false caso contrario.
*/
bool httpServer_strStartsWith(const char* pre, const char* str);
/**
* @date 16/11/2016
* @autho Rafael B. Januzi (rjanuzi@gmail.com)
*
* Descobre o parametro do cmd envia no POST da pagina de teste de telecomandos.
*
* @param [out] valOut: Valor do parametro obtido.
* @param cmdParam: String com o parametro envio no POST.
*/
void httpServer_getCmdParamVal(char* valOut, const char* cmdParam);
/**
* @date 16/11/2016
* @autho Rafael B. Januzi (rjanuzi@gmail.com)
*
* Executa um comando enviado por POST para o servidor.
*
* @param cmd: Comando enviado como parametro no POST.
*/
void httpServer_execDroneCmd(const char* cmd);
/**
* @date 19/11/2016
* @autho Rafael B. Januzi (rjanuzi@gmail.com)
*
* Funcao para verificar se o Server estah ON e sem erros.
*
* @return true se o server estah ONLINE e false caso contrario.
*/
bool httpServer_isServerOk();
#endif /* HTTPSERVER_H_ */