Commit b4b1b5c42c271e26f9bbdceab6d61fbf80414409
1 parent
bf3c8796
--no commit message
Showing
2 changed files
with
22 additions
and
110 deletions
Project/applications/smartcities/include/globals.h
Project/applications/smartcities/main2.c
... | ... | @@ -8,6 +8,7 @@ |
8 | 8 | #include "buffer.h" |
9 | 9 | #include "i2c.h" |
10 | 10 | #include "configServer.h" |
11 | +#include "timer-loop.h" | |
11 | 12 | |
12 | 13 | #define WIFI_MODE WIFI_MODE_CLIENT |
13 | 14 | #define NETWORK_SSID_AP "modularsens" |
... | ... | @@ -15,7 +16,6 @@ |
15 | 16 | #define NETWORK_CHANNEL_AP 1 |
16 | 17 | |
17 | 18 | #define HARD_LIMIT_WAIT_TIME 10*1000 //5*60*1000 |
18 | -#define NUMSENSORS 4 | |
19 | 19 | |
20 | 20 | wismart_registryKey_t geo; |
21 | 21 | |
... | ... | @@ -29,6 +29,7 @@ void initLibwismart(void) |
29 | 29 | uint8_t connected=0; |
30 | 30 | uint8_t timeout=0; |
31 | 31 | uint8_t retries=0; |
32 | +uint8_t total_sensors=0; | |
32 | 33 | |
33 | 34 | void init_registry(void) |
34 | 35 | { |
... | ... | @@ -88,7 +89,7 @@ void init_registry(void) |
88 | 89 | void send_data(char** buffers[j], uint32_t ind[], uint32_t sizes[j], uint8_t sensors[]); |
89 | 90 | { |
90 | 91 | int j; |
91 | - for(j=0;j<TOTAL_SENSORS;j++) | |
92 | + for(j=0;j<total_sensors;j++) | |
92 | 93 | { |
93 | 94 | printf(" enviant buffer %d\r\n",j); |
94 | 95 | |
... | ... | @@ -110,7 +111,7 @@ void send_data(char** buffers[j], uint32_t ind[], uint32_t sizes[j], uint8_t sen |
110 | 111 | |
111 | 112 | void put_buffers(char** buffers,uint32_t ind[],uint32_t sizes[],char** cooked){ |
112 | 113 | int i; |
113 | - for(i=0;i<TOTAL_SENSORS;i++){ | |
114 | + for(i=0;i<total_sensors;i++){ | |
114 | 115 | put_message(cooked[i], buffers[i] ,&ind[i],&sizes[i]); |
115 | 116 | chHeapFree(cooked[i]); |
116 | 117 | } |
... | ... | @@ -121,13 +122,22 @@ char** timestamp_datas(char* value[],unsigned long timestamp){ |
121 | 122 | char** cooked_data; |
122 | 123 | Date t=getDate(timestamp); |
123 | 124 | int i; |
124 | - for(i=0;i<TOTAL_SENSORS;i++){ | |
125 | + for(i=0;i<total_sensors;i++){ | |
125 | 126 | cooked_data[i]=timestamp_data(value[i], t); |
126 | 127 | chHeapFree(value[i]); |
127 | 128 | } |
128 | 129 | return cooked_data; |
129 | 130 | } |
130 | 131 | |
132 | +void sensor_scan(){ | |
133 | + I2C_scan(sensors); | |
134 | + int i; | |
135 | + for(i=0;i<TOTAL_SENSORS;i++){ | |
136 | + if(sensors[i]!=0){ | |
137 | + total_sensors++; | |
138 | + } | |
139 | + } | |
140 | +} | |
131 | 141 | |
132 | 142 | int main(void) |
133 | 143 | { |
... | ... | @@ -141,12 +151,14 @@ int main(void) |
141 | 151 | |
142 | 152 | //Escanea los sensores -> retorna un vector con las direcciones en cada posición del vector, si la posición del vector retorna un cero -> no existe el sensor |
143 | 153 | uint8_t sensors[TOTAL_SENSORS]; |
144 | - char* valueSensors[TOTAL_SENSORS]; | |
154 | + sensor_scan(); | |
155 | + char* valueSensors[total_sensors]; | |
145 | 156 | I2C_scan(sensors); |
146 | 157 | |
147 | - | |
158 | + //conectar wifi | |
148 | 159 | //unsigned int time = getNTPTime(); |
149 | 160 | unsigned int time = getSecsSince1900(); |
161 | + //desconectarwifi | |
150 | 162 | |
151 | 163 | unsigned long timestamp = 0; |
152 | 164 | unsigned long delay = getSystemTime(); |
... | ... | @@ -156,7 +168,7 @@ int main(void) |
156 | 168 | uint32_t ind[4]={0}; |
157 | 169 | char** buffers[4]; |
158 | 170 | uint32_t sizes[4]={0}; |
159 | - char* cooked_data[TOTAL_SENSORS]; | |
171 | + char* cooked_data[total_sensors]; | |
160 | 172 | |
161 | 173 | init_registry(); |
162 | 174 | |
... | ... | @@ -194,6 +206,7 @@ int main(void) |
194 | 206 | send_data(); |
195 | 207 | //time = getNTPTime(); |
196 | 208 | time = getSecsSince1900(); |
209 | + //desconectar wifi | |
197 | 210 | printf("time (absolute):\t%d\r\ntime mod LONG_PERIOD:\t%d\r\ntime mod SHORT_PERIOD:\t%d\r\n",time,time%LONG_PERIOD,time%SHORT_PERIOD); |
198 | 211 | i = 0; |
199 | 212 | } |
... | ... | @@ -228,7 +241,7 @@ int main(void) |
228 | 241 | chThdSleepMilliseconds(HARD_LIMIT_WAIT_TIME); |
229 | 242 | } |
230 | 243 | int j; |
231 | - for(j=1;j<TOTAL_SENSORS;j++) | |
244 | + for(j=1;j<total_sensors;j++) | |
232 | 245 | { |
233 | 246 | printf(" enviant buffer %d\r\n",j); |
234 | 247 | |
... | ... | @@ -252,105 +265,5 @@ int main(void) |
252 | 265 | delay = getSystemTime(); |
253 | 266 | sleep_thread(SHORT_PERIOD - time%SHORT_PERIOD); |
254 | 267 | i++; |
255 | - } | |
256 | - | |
257 | - | |
258 | - | |
259 | - | |
260 | - | |
261 | - | |
262 | -//A partir de aquí se debe integrar arriba, preferiblemente con funciones María | |
263 | - uint32_t ind[4]={0}; | |
264 | - char** buffers[4]; | |
265 | - uint32_t sizes[4]={0}; | |
266 | - char* sensor_id[4]; | |
267 | - int i; | |
268 | - | |
269 | - | |
270 | - init_registry(); | |
271 | - | |
272 | - if(timeout==1) | |
273 | - { | |
274 | - printf("Creating AP\r\n"); | |
275 | - //corroborar los parametros del AP | |
276 | - configServer_start(1); | |
277 | - libwismart_WiFi_SoftAP_Start(NETWORK_SSID_AP,NETWORK_CHANNEL_AP,NULL,softapMode_apStartedCb, softapMode_clientIndicationCb); | |
278 | - for(;;) | |
279 | - { | |
280 | - chThdSleepMilliseconds(1000); | |
281 | - } | |
282 | - } | |
283 | - for(;;) | |
284 | - { | |
285 | - // i2c gets the data and combines it with the time stamp | |
286 | - char* data="message,0"; | |
287 | - char* data2="message,1"; | |
288 | - char* data3="message,2"; | |
289 | - for(i=0;i<NUMSENSORS;i++){ | |
290 | - | |
291 | - printf("------------------BUFFER %d ----------------------\r\n",i); | |
292 | - printf("index=%d\r\n",ind[i]); | |
293 | - | |
294 | - // 3 missatges de prova a cada buffer | |
295 | - buffers[i]=put_message(data, buffers[i] ,&ind[i],&sizes[i]); | |
296 | - buffers[i]=put_message(data2, buffers[i] ,&ind[i],&sizes[i]); | |
297 | - buffers[i]=put_message(data3, buffers[i] ,&ind[i],&sizes[i]); | |
298 | - printf("mirant memoria\r\n"); | |
299 | - int res=check_memory(); | |
300 | - /*if(res==SOFT_REACHED){ | |
301 | - printf("--------------soft limit-------------\r\n"); | |
302 | - int j; | |
303 | - for(j=0;j<NUMSENSORS;j++) | |
304 | - { | |
305 | - printf(" enviant buffer %d\r\n",j); | |
306 | - | |
307 | - // fem servir 085 de prova, però haurem de fer servir sensor_id[j] | |
308 | - int ok=send(buffers[j],&ind[j],&sizes[j], "bmp", "085"); | |
309 | - if(ok==JSON_COMM_ERROR) | |
310 | - { | |
311 | - printf("wismart is not connected\r\n"); | |
312 | - } | |
313 | - else if( ok==JSON_OTHER_ERROR){ | |
314 | - printf("some error ocurred\r\n"); | |
315 | - } | |
316 | - else if(ok ==JSON_POST_OK){ | |
317 | - printf(" send OK \r\n"); | |
318 | - } | |
319 | - } | |
320 | - } | |
321 | - else if(res==HARD_REACHED){ | |
322 | - printf("--------------hard limit-------------\r\n"); | |
323 | - | |
324 | - // fem servir 085 de prova, però haurem de fer servir sensor_id[0] | |
325 | - while( send(buffers[0],&ind[0],&sizes[0], "bmp", "085") != JSON_POST_OK ) | |
326 | - { | |
327 | - // El servidor no ens sap dir si tenim permisos o no sense registrar una mostra. | |
328 | - // Intentem enviar un buffer sencer, a veure si ja podem buidar. | |
329 | - // No podem enviar només una mostra perquè json és rígid en aquest sentit. | |
330 | - | |
331 | - printf("hard_reached and unable to sentd.\r\nLa biblia en vers: i Jesús digué: Aixeca't, Llàtzer!!\r\n"); | |
332 | - chThdSleepMilliseconds(HARD_LIMIT_WAIT_TIME); | |
333 | - } | |
334 | - int j; | |
335 | - for(j=1;j<NUMSENSORS;j++) | |
336 | - { | |
337 | - printf(" enviant buffer %d\r\n",j); | |
338 | - | |
339 | - // fem servir 085 de prova, però haurem de fer servir sensor_id[j] | |
340 | - int ok=send(buffers[j],&ind[j],&sizes[j], "bmp", "085"); | |
341 | - if(ok==JSON_COMM_ERROR) | |
342 | - { | |
343 | - printf("wismart is not connected\r\n"); | |
344 | - } | |
345 | - else if( ok==JSON_OTHER_ERROR){ | |
346 | - printf("some error ocurred\r\n"); | |
347 | - } | |
348 | - else if(ok ==JSON_POST_OK){ | |
349 | - printf(" send OK \r\n"); | |
350 | - } | |
351 | - } | |
352 | - }*/ | |
353 | - } | |
354 | - //chThdSleepMilliseconds(100); | |
355 | - } | |
268 | + } | |
356 | 269 | } | ... | ... |